diff options
author | Alexey Shchepin <alexey@process-one.net> | 2005-07-14 22:28:21 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2005-07-14 22:28:21 +0000 |
commit | a9e3b76bedf43a66a1a6f69f95afe77fbf2752b6 (patch) | |
tree | b207d626af30ad513c7afd763cf3c38e64cfe7e6 /src | |
parent | * src/mod_register.erl: Bugfix (diff) |
* src/ejabberd_c2s.erl: Processing of jabber:iq:register totally
moved to mod_register.erl (thanks to Sergei Golovan)
* src/mod_register.erl: Likewise
* src/win32/ejabberd.nsi: Added two pictures in installer (thanks
to Maxim Ryazanov)
* src/win32/ejabberd_header.bmp: Likewise
* src/win32/ejabberd_intro.bmp: Likewise
* src/web/ejabberd_web_admin.erl: Fixed spelling of word
"authentication"
* src/ejabberd_c2s.erl: Likewise
SVN Revision: 375
Diffstat (limited to 'src')
-rw-r--r-- | src/ejabberd_c2s.erl | 99 | ||||
-rw-r--r-- | src/mod_register.erl | 27 | ||||
-rw-r--r-- | src/web/ejabberd_web_admin.erl | 4 | ||||
-rw-r--r-- | src/win32/ejabberd.nsi | 12 | ||||
-rw-r--r-- | src/win32/ejabberd_header.bmp | bin | 0 -> 34254 bytes | |||
-rw-r--r-- | src/win32/ejabberd_intro.bmp | bin | 0 -> 26494 bytes |
6 files changed, 83 insertions, 59 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index fd4107a1d..72c121336 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -49,7 +49,7 @@ tls_required = false, tls_enabled = false, tls_options = [], - authentificated = false, + authenticated = false, jid, user = "", server = ?MYNAME, resource = "", pres_t = ?SETS:new(), @@ -178,7 +178,7 @@ wait_for_stream({xmlstreamstart, _Name, Attrs}, StateData) -> " version='1.0'", DefaultLang]), send_text(StateData, Header), - case StateData#state.authentificated of + case StateData#state.authenticated of false -> SASLState = cyrsasl:server_new( @@ -223,10 +223,11 @@ wait_for_stream({xmlstreamstart, _Name, Attrs}, StateData) -> TLSFeature ++ [{xmlelement, "mechanisms", [{"xmlns", ?NS_SASL}], - Mechs}, - {xmlelement, "register", - [{"xmlns", ?NS_FEATURE_IQREGISTER}], - []}]}), + Mechs}] ++ + ejabberd_hooks:run_fold( + c2s_stream_features, + Server, + [], [])}), {next_state, wait_for_feature_request, StateData#state{server = Server, sasl_state = SASLState, @@ -411,21 +412,8 @@ wait_for_auth({xmlstreamelement, El}, StateData) -> end end; _ -> - case jlib:iq_query_info(El) of - #iq{xmlns = ?NS_REGISTER} = IQ -> - ResIQ = mod_register:process_iq( - {"", "", ""}, - jlib:make_jid("", StateData#state.server, ""), - IQ), - Res1 = jlib:replace_from_to({"", StateData#state.server, ""}, - {"", "", ""}, - jlib:iq_to_xml(ResIQ)), - Res = jlib:remove_attr("to", Res1), - send_element(StateData, Res), - {next_state, wait_for_auth, StateData}; - _ -> - {next_state, wait_for_auth, StateData} - end + process_unauthenticated_stanza(StateData, El), + {next_state, wait_for_auth, StateData} end; wait_for_auth({xmlstreamend, _Name}, StateData) -> @@ -463,7 +451,7 @@ wait_for_feature_request({xmlstreamelement, El}, StateData) -> [StateData#state.socket, U]), {next_state, wait_for_stream, StateData#state{streamid = new_id(), - authentificated = true, + authenticated = true, user = U }}; {continue, ServerOut, NewSASLState} -> @@ -506,21 +494,8 @@ wait_for_feature_request({xmlstreamelement, El}, StateData) -> ?STREAM_TRAILER), {stop, normal, StateData}; true -> - case jlib:iq_query_info(El) of - #iq{xmlns = ?NS_REGISTER} = IQ -> - ResIQ = mod_register:process_iq( - {"", "", ""}, - jlib:make_jid("", StateData#state.server, ""), - IQ), - Res1 = jlib:replace_from_to({"", StateData#state.server, ""}, - {"", "", ""}, - jlib:iq_to_xml(ResIQ)), - Res = jlib:remove_attr("to", Res1), - send_element(StateData, Res), - {next_state, wait_for_feature_request, StateData}; - _ -> - {next_state, wait_for_feature_request, StateData} - end + process_unauthenticated_stanza(StateData, El), + {next_state, wait_for_feature_request, StateData} end end; @@ -553,7 +528,7 @@ wait_for_sasl_response({xmlstreamelement, El}, StateData) -> [StateData#state.socket, U]), {next_state, wait_for_stream, StateData#state{streamid = new_id(), - authentificated = true, + authenticated = true, user = U }}; {continue, ServerOut, NewSASLState} -> @@ -572,21 +547,8 @@ wait_for_sasl_response({xmlstreamelement, El}, StateData) -> {next_state, wait_for_feature_request, StateData} end; _ -> - case jlib:iq_query_info(El) of - #iq{xmlns = ?NS_REGISTER} = IQ -> - ResIQ = mod_register:process_iq( - {"", "", ""}, - jlib:make_jid("", StateData#state.server, ""), - IQ), - Res1 = jlib:replace_from_to({"", StateData#state.server, ""}, - {"", "", ""}, - jlib:iq_to_xml(ResIQ)), - Res = jlib:remove_attr("to", Res1), - send_element(StateData, Res), - {next_state, wait_for_feature_request, StateData}; - _ -> - {next_state, wait_for_feature_request, StateData} - end + process_unauthenticated_stanza(StateData, El), + {next_state, wait_for_feature_request, StateData} end; wait_for_sasl_response({xmlstreamend, _Name}, StateData) -> @@ -863,7 +825,7 @@ handle_info({send_text, Text}, StateName, StateData) -> handle_info(replaced, _StateName, StateData) -> % TODO %send_text(StateData#state.sender, Text), - {stop, normal, StateData#state{authentificated = replaced}}; + {stop, normal, StateData#state{authenticated = replaced}}; handle_info({route, From, To, Packet}, StateName, StateData) -> {xmlelement, Name, Attrs, Els} = Packet, {Pass, NewAttrs, NewState} = @@ -1005,7 +967,7 @@ handle_info({route, From, To, Packet}, StateName, StateData) -> terminate(_Reason, StateName, StateData) -> case StateName of session_established -> - case StateData#state.authentificated of + case StateData#state.authenticated of replaced -> ?INFO_MSG("(~w) Replaced session for ~s", [StateData#state.socket, @@ -1568,3 +1530,30 @@ get_statustag(Presence) -> case xml:get_path_s(Presence, [{elem, "status"}, cdata]) of ShowTag -> ShowTag end. + +process_unauthenticated_stanza(StateData, El) -> + case jlib:iq_query_info(El) of + #iq{} = IQ -> + Res = ejabberd_hooks:run_fold(c2s_unauthenticated_iq, + StateData#state.server, + empty, + [StateData#state.server, IQ]), + case Res of + empty -> + % The only reasonable IQ's here are auth and register IQ's + % They contain secrets, so don't include subelements to response + ResIQ = IQ#iq{type = error, + sub_el = [?ERR_FEATURE_NOT_IMPLEMENTED]}, + Res1 = jlib:replace_from_to( + jlib:make_jid("", StateData#state.server, ""), + jlib:make_jid("", "", ""), + jlib:iq_to_xml(ResIQ)), + send_element(StateData, jlib:remove_attr("to", Res1)); + _ -> + send_element(StateData, Res) + end; + _ -> + % Drop any stanza, which isn't IQ stanza + ok + end. + diff --git a/src/mod_register.erl b/src/mod_register.erl index b5f709b97..4d1da09b1 100644 --- a/src/mod_register.erl +++ b/src/mod_register.erl @@ -14,6 +14,8 @@ -export([start/2, stop/1, + stream_feature_register/1, + unauthenticated_iq_register/3, process_iq/3]). -include("ejabberd.hrl"). @@ -25,12 +27,37 @@ start(Host, Opts) -> ?MODULE, process_iq, IQDisc), gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_REGISTER, ?MODULE, process_iq, IQDisc), + ejabberd_hooks:add(c2s_stream_features, Host, + ?MODULE, stream_feature_register, 50), + ejabberd_hooks:add(c2s_unauthenticated_iq, Host, + ?MODULE, unauthenticated_iq_register, 50), ok. stop(Host) -> + ejabberd_hooks:delete(c2s_stream_features, Host, + ?MODULE, stream_feature_register, 50), + ejabberd_hooks:delete(c2s_unauthenticated_iq, Host, + ?MODULE, unauthenticated_iq_register, 50), gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_REGISTER), gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_REGISTER). + +stream_feature_register(Acc) -> + [{xmlelement, "register", + [{"xmlns", ?NS_FEATURE_IQREGISTER}], []} | Acc]. + +unauthenticated_iq_register(_Acc, Server, #iq{xmlns = ?NS_REGISTER} = IQ) -> + ResIQ = process_iq(jlib:make_jid("", "", ""), + jlib:make_jid("", Server, ""), + IQ), + Res1 = jlib:replace_from_to(jlib:make_jid("", Server, ""), + jlib:make_jid("", "", ""), + jlib:iq_to_xml(ResIQ)), + jlib:remove_attr("to", Res1); + +unauthenticated_iq_register(Acc, _Server, _IQ) -> + Acc. + process_iq(From, To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ) -> case Type of diff --git a/src/web/ejabberd_web_admin.erl b/src/web/ejabberd_web_admin.erl index 8da73fd5c..cac24c773 100644 --- a/src/web/ejabberd_web_admin.erl +++ b/src/web/ejabberd_web_admin.erl @@ -1332,7 +1332,7 @@ get_stats(global, Lang) -> [?XE("tbody", [?XE("tr", [?XCT("td", "Registered users"), ?XC("td", integer_to_list(RegisteredUsers))]), - ?XE("tr", [?XCT("td", "Authentificated users"), + ?XE("tr", [?XCT("td", "Authenticated users"), ?XC("td", integer_to_list(AuthUsers))]), ?XE("tr", [?XCT("td", "Online users"), ?XC("td", integer_to_list(OnlineUsers))]), @@ -1985,7 +1985,7 @@ get_node(global, Node, ["stats"], Query, Lang) -> ?XE("tr", [?XCT("td", "CPU Time"), ?XAC("td", [{"class", "alignright"}], CPUTimeS)]), - ?XE("tr", [?XCT("td", "Authentificated users"), + ?XE("tr", [?XCT("td", "Authenticated users"), ?XAC("td", [{"class", "alignright"}], integer_to_list(Users))]), ?XE("tr", [?XCT("td", "Transactions commited"), diff --git a/src/win32/ejabberd.nsi b/src/win32/ejabberd.nsi index 63a803cc4..984d4be2e 100644 --- a/src/win32/ejabberd.nsi +++ b/src/win32/ejabberd.nsi @@ -19,6 +19,10 @@ !define MUI_ICON "ejabberd.ico" !define MUI_UNICON "ejabberd.ico" + !define MUI_HEADERIMAGE + !define MUI_HEADERIMAGE_BITMAP "ejabberd_header.bmp" + !define MUI_WELCOMEFINISHPAGE_BITMAP "ejabberd_intro.bmp" + ;-------------------------------- ;Configuration @@ -28,6 +32,10 @@ ;-------------------------------- ;Reserve Files + ReserveFile "ejabberd.ico" + ReserveFile "ejabberd.ico" + ReserveFile "ejabberd_header.bmp" + ReserveFile "ejabberd_intro.bmp" !ifdef HACKED_INSTALLOPTIONS ReserveFile "CheckUserH.ini" ReserveFile "CheckReqs1H.ini" @@ -111,12 +119,12 @@ FunctionEnd !define MUI_ABORTWARNING ;-------------------------------- -;Pages +;Installer/Uninstaller pages !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_LICENSE "..\..\COPYING" Page custom CheckUser LeaveCheckUser Page custom CheckService LeaveCheckService - !insertmacro MUI_PAGE_LICENSE "..\..\COPYING" Page custom CheckReqs LeaveCheckReqs Page custom CheckReqs1 LeaveCheckReqs1 ;!insertmacro MUI_PAGE_COMPONENTS diff --git a/src/win32/ejabberd_header.bmp b/src/win32/ejabberd_header.bmp Binary files differnew file mode 100644 index 000000000..14d70ddee --- /dev/null +++ b/src/win32/ejabberd_header.bmp diff --git a/src/win32/ejabberd_intro.bmp b/src/win32/ejabberd_intro.bmp Binary files differnew file mode 100644 index 000000000..7b37b0780 --- /dev/null +++ b/src/win32/ejabberd_intro.bmp |