]> granicus.if.org Git - ejabberd/commitdiff
Support more captcha_host value formats (EJAB-1418)
authorBadlop <badlop@process-one.net>
Mon, 11 Apr 2011 17:58:25 +0000 (19:58 +0200)
committerBadlop <badlop@process-one.net>
Mon, 11 Apr 2011 17:58:37 +0000 (19:58 +0200)
doc/guide.tex
src/ejabberd_captcha.erl

index c4967aac809028c5444a9d7d064a516c7d917c49..97796eef0c4fbc19764967f59e622e4f47c419c8 100644 (file)
@@ -1710,13 +1710,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.
@@ -1729,6 +1729,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,
  [
index 0c939b58fa2a24e63fd0ffcdb37ff57be7617ded..1f0e55ff58c8425b99623d82256f7fecb3ed597f 100644 (file)
@@ -627,13 +627,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) ->