summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2011-04-11 19:58:25 +0200
committerBadlop <badlop@process-one.net>2011-04-11 19:59:26 +0200
commit7d7621c67c5b599c8a2b0b01f2719816db539d82 (patch)
tree8fc9d13f4b9ca4ef79e455ff23118701a05a124e
parentSend jid attribute when occupant is banned (EJAB-1432) (diff)
Support more captcha_host value formats (EJAB-1418)
-rw-r--r--doc/guide.tex13
-rw-r--r--src/ejabberd_captcha.erl10
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) ->