diff options
author | Badlop <badlop@process-one.net> | 2011-04-11 19:58:25 +0200 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2011-04-11 19:59:26 +0200 |
commit | 7d7621c67c5b599c8a2b0b01f2719816db539d82 (patch) | |
tree | 8fc9d13f4b9ca4ef79e455ff23118701a05a124e | |
parent | Send jid attribute when occupant is banned (EJAB-1432) (diff) |
Support more captcha_host value formats (EJAB-1418)
-rw-r--r-- | doc/guide.tex | 13 | ||||
-rw-r--r-- | src/ejabberd_captcha.erl | 10 |
2 files changed, 14 insertions, 9 deletions
diff --git a/doc/guide.tex b/doc/guide.tex index dee622da..5c157aa3 100644 --- a/doc/guide.tex +++ b/doc/guide.tex @@ -1634,13 +1634,13 @@ The configurable options are: Full path to a script that generates the image. The default value is an empty string: \term{""} \titem{\{captcha\_host, ProtocolHostPort\}} - Host part of the URL sent to the user, - and the port number where ejabberd listens for CAPTCHA requests. - The URL sent to the user is formed by: \term{http://Host:Port/captcha/} - The default value is: the first hostname configured, and port 5280. - If the port number you specify does not match exactly an ejabberd listener + ProtocolHostPort is a string with the host, and optionally the Protocol and Port number. + It must identify where ejabberd listens for CAPTCHA requests. + The URL sent to the user is formed by: \term{Protocol://Host:Port/captcha/} + The default value is: protocol \term{http}, the first hostname configured, and port \term{80}. + If you specify a port number that does not match exactly an ejabberd listener (because you are using a reverse proxy or other port-forwarding tool), - then specify also the transfer protocol, as seen in the example below. + then you must specify the transfer protocol, as seen in the example below. \end{description} Additionally, an \term{ejabberd\_http} listener must be enabled with the \term{captcha} option. @@ -1653,6 +1653,7 @@ Example configuration: {captcha_cmd, "/lib/ejabberd/priv/bin/captcha.sh"}. {captcha_host, "example.org:5280"}. %% {captcha_host, "https://example.org:443"}. +%% {captcha_host, "http://example.com"}. {listen, [ diff --git a/src/ejabberd_captcha.erl b/src/ejabberd_captcha.erl index 797a6152..91e14c73 100644 --- a/src/ejabberd_captcha.erl +++ b/src/ejabberd_captcha.erl @@ -407,13 +407,17 @@ get_prog_name() -> get_url(Str) -> CaptchaHost = ejabberd_config:get_local_option(captcha_host), case string:tokens(CaptchaHost, ":") of - [TransferProt, Host, PortString] -> - TransferProt ++ ":" ++ Host ++ ":" ++ PortString ++ "/captcha/" ++ Str; + [Host] -> + "http://" ++ Host ++ "/captcha/" ++ Str; + ["http"++_ = TransferProt, Host] -> + TransferProt ++ ":" ++ Host ++ "/captcha/" ++ Str; [Host, PortString] -> TransferProt = atom_to_list(get_transfer_protocol(PortString)), TransferProt ++ "://" ++ Host ++ ":" ++ PortString ++ "/captcha/" ++ Str; + [TransferProt, Host, PortString] -> + TransferProt ++ ":" ++ Host ++ ":" ++ PortString ++ "/captcha/" ++ Str; _ -> - "http://" ++ ?MYNAME ++ ":5280/captcha/" ++ Str + "http://" ++ ?MYNAME ++ "/captcha/" ++ Str end. get_transfer_protocol(PortString) -> |