mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-20 16:15:59 +01:00
*** empty log message ***
SVN Revision: 28
This commit is contained in:
parent
5755092b92
commit
083e2b75d0
@ -16,5 +16,5 @@
|
||||
-endif.
|
||||
|
||||
|
||||
-define(MYNAME,"127.0.0.1").
|
||||
-define(MYNAME,"e.localhost").
|
||||
|
||||
|
@ -11,7 +11,9 @@
|
||||
-vsn('$Revision$ ').
|
||||
|
||||
-export([route/3, register_route/1, register_local_route/1,
|
||||
dirty_get_all_routes/0]).
|
||||
dirty_get_all_routes/0,
|
||||
dirty_get_all_domains/0
|
||||
]).
|
||||
|
||||
-export([start/0, init/0]).
|
||||
|
||||
@ -132,3 +134,7 @@ dirty_get_all_routes() ->
|
||||
lists:umerge(lists:sort(mnesia:dirty_all_keys(route)),
|
||||
lists:sort(mnesia:dirty_all_keys(local_route)))).
|
||||
|
||||
dirty_get_all_domains() ->
|
||||
lists:umerge(lists:sort(mnesia:dirty_all_keys(route)),
|
||||
lists:sort(mnesia:dirty_all_keys(local_route))).
|
||||
|
||||
|
@ -137,6 +137,7 @@ try_register(Server) ->
|
||||
do_route(From, To, Packet) ->
|
||||
?DEBUG("s2s manager~n\tfrom ~p~n\tto ~p~n\tpacket ~P~n",
|
||||
[From, To, Packet, 8]),
|
||||
{_, MyServer, _} = From,
|
||||
{User, Server, Resource} = To,
|
||||
Key = randoms:get_string(),
|
||||
F = fun() ->
|
||||
@ -172,7 +173,7 @@ do_route(From, To, Packet) ->
|
||||
ok;
|
||||
{atomic, new} ->
|
||||
?DEBUG("starting new s2s connection~n", []),
|
||||
Pid = ejabberd_s2s_out:start(Server, {new, Key}),
|
||||
Pid = ejabberd_s2s_out:start(MyServer, Server, {new, Key}),
|
||||
mnesia:transaction(fun() -> mnesia:write(#mys2s{server = Server,
|
||||
pid = Pid}) end),
|
||||
{xmlelement, Name, Attrs, Els} = Packet,
|
||||
|
@ -27,7 +27,7 @@
|
||||
-include("ejabberd.hrl").
|
||||
|
||||
-record(state, {socket, receiver, streamid,
|
||||
myself = ?MYNAME, server, queue}).
|
||||
myname, server, queue}).
|
||||
|
||||
-define(DBGFSM, true).
|
||||
|
||||
@ -53,6 +53,12 @@
|
||||
"</stream:stream>"
|
||||
).
|
||||
|
||||
-define(INVALID_DOMAIN_ERR,
|
||||
"<stream:stream>"
|
||||
"<stream:error>Invalid Destination</stream:error>"
|
||||
"</stream:stream>"
|
||||
).
|
||||
|
||||
%%%----------------------------------------------------------------------
|
||||
%%% API
|
||||
%%%----------------------------------------------------------------------
|
||||
@ -90,8 +96,19 @@ wait_for_stream({xmlstreamstart, Name, Attrs}, StateData) ->
|
||||
% TODO
|
||||
case {xml:get_attr_s("xmlns", Attrs), xml:get_attr_s("xmlns:db", Attrs)} of
|
||||
{"jabber:server", "jabber:server:dialback"} ->
|
||||
Me = case xml:get_attr_s("to", Attrs) of
|
||||
"" -> ?MYNAME;
|
||||
Dom -> Dom
|
||||
end,
|
||||
case lists:member(Me, ejabberd_router:dirty_get_all_domains()) of
|
||||
true ->
|
||||
send_text(StateData#state.socket, ?STREAM_HEADER),
|
||||
{next_state, wait_for_key, StateData};
|
||||
{next_state, wait_for_key, StateData#state{myname = Me}};
|
||||
_ ->
|
||||
send_text(StateData#state.socket, ?INVALID_DOMAIN_ERR),
|
||||
{stop, normal, StateData}
|
||||
end;
|
||||
|
||||
_ ->
|
||||
send_text(StateData#state.socket, ?INVALID_HEADER_ERR),
|
||||
{stop, normal, StateData}
|
||||
@ -105,7 +122,8 @@ wait_for_key({xmlstreamelement, El}, StateData) ->
|
||||
case is_key_packet(El) of
|
||||
{key, To, From, Id, Key} ->
|
||||
io:format("GET KEY: ~p~n", [{To, From, Id, Key}]),
|
||||
ejabberd_s2s_out:start(From, {verify, self(), Key}),
|
||||
ejabberd_s2s_out:start(StateData#state.myname, From,
|
||||
{verify, self(), Key}),
|
||||
{next_state,
|
||||
wait_for_verification,
|
||||
StateData#state{server = From}};
|
||||
@ -118,7 +136,7 @@ wait_for_key({xmlstreamelement, El}, StateData) ->
|
||||
send_element(StateData#state.socket,
|
||||
{xmlelement,
|
||||
"db:verify",
|
||||
[{"from", ?MYNAME},
|
||||
[{"from", StateData#state.myname},
|
||||
{"to", From},
|
||||
{"id", Id},
|
||||
{"type", Type}],
|
||||
@ -139,7 +157,7 @@ wait_for_verification(valid, StateData) ->
|
||||
send_element(StateData#state.socket,
|
||||
{xmlelement,
|
||||
"db:result",
|
||||
[{"from", ?MYNAME},
|
||||
[{"from", StateData#state.myname},
|
||||
{"to", StateData#state.server},
|
||||
{"type", "valid"}],
|
||||
[]}),
|
||||
@ -150,7 +168,7 @@ wait_for_verification(invalid, StateData) ->
|
||||
send_element(StateData#state.socket,
|
||||
{xmlelement,
|
||||
"db:result",
|
||||
[{"from", ?MYNAME},
|
||||
[{"from", StateData#state.myname},
|
||||
{"to", StateData#state.server},
|
||||
{"type", "invalid"}],
|
||||
[]}),
|
||||
@ -167,7 +185,7 @@ wait_for_verification({xmlstreamelement, El}, StateData) ->
|
||||
send_element(StateData#state.socket,
|
||||
{xmlelement,
|
||||
"db:verify",
|
||||
[{"from", ?MYNAME},
|
||||
[{"from", StateData#state.myname},
|
||||
{"to", From},
|
||||
{"id", Id},
|
||||
{"type", Type}],
|
||||
@ -198,7 +216,7 @@ stream_established({xmlstreamelement, El}, StateData) ->
|
||||
send_element(StateData#state.socket,
|
||||
{xmlelement,
|
||||
"db:verify",
|
||||
[{"from", ?MYNAME},
|
||||
[{"from", StateData#state.myname},
|
||||
{"to", From},
|
||||
{"id", Id},
|
||||
{"type", Type}],
|
||||
|
@ -13,7 +13,7 @@
|
||||
-behaviour(gen_fsm).
|
||||
|
||||
%% External exports
|
||||
-export([start/2, receiver/2, send_text/2, send_element/2]).
|
||||
-export([start/3, receiver/2, send_text/2, send_element/2]).
|
||||
|
||||
%% gen_fsm callbacks
|
||||
-export([init/1,
|
||||
@ -27,7 +27,7 @@
|
||||
-include("ejabberd.hrl").
|
||||
|
||||
-record(state, {socket, receiver, streamid,
|
||||
myself = ?MYNAME, server, xmlpid, queue,
|
||||
myname, server, xmlpid, queue,
|
||||
new = false, verify = false}).
|
||||
|
||||
-define(DBGFSM, true).
|
||||
@ -43,7 +43,8 @@
|
||||
"<stream:stream "
|
||||
"xmlns:stream='http://etherx.jabber.org/streams' "
|
||||
"xmlns='jabber:server' "
|
||||
"xmlns:db='jabber:server:dialback'>"
|
||||
"xmlns:db='jabber:server:dialback' "
|
||||
"to='~s'>"
|
||||
).
|
||||
|
||||
-define(STREAM_TRAILER, "</stream:stream>").
|
||||
@ -57,8 +58,8 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%% API
|
||||
%%%----------------------------------------------------------------------
|
||||
start(Host, Type) ->
|
||||
{ok, Pid} = gen_fsm:start(ejabberd_s2s_out, [Host, Type], ?FSMOPTS),
|
||||
start(From, Host, Type) ->
|
||||
{ok, Pid} = gen_fsm:start(ejabberd_s2s_out, [From, Host, Type], ?FSMOPTS),
|
||||
Pid.
|
||||
|
||||
%%%----------------------------------------------------------------------
|
||||
@ -72,7 +73,7 @@ start(Host, Type) ->
|
||||
%% ignore |
|
||||
%% {stop, StopReason}
|
||||
%%----------------------------------------------------------------------
|
||||
init([Server, Type]) ->
|
||||
init([From, Server, Type]) ->
|
||||
gen_fsm:send_event(self(), init),
|
||||
{New, Verify} = case Type of
|
||||
{new, Key} ->
|
||||
@ -81,6 +82,7 @@ init([Server, Type]) ->
|
||||
{false, {Pid, Key}}
|
||||
end,
|
||||
{ok, open_socket, #state{queue = queue:new(),
|
||||
myname = From,
|
||||
server = Server,
|
||||
new = New,
|
||||
verify = Verify}}.
|
||||
@ -96,7 +98,8 @@ open_socket(init, StateData) ->
|
||||
[binary, {packet, 0}]) of
|
||||
{ok, Socket} ->
|
||||
XMLStreamPid = xml_stream:start(self()),
|
||||
send_text(Socket, ?STREAM_HEADER),
|
||||
send_text(Socket, io_lib:format(?STREAM_HEADER,
|
||||
[StateData#state.server])),
|
||||
{next_state, wait_for_stream,
|
||||
StateData#state{socket = Socket,
|
||||
xmlpid = XMLStreamPid,
|
||||
@ -135,7 +138,7 @@ wait_for_stream({xmlstreamstart, Name, Attrs}, StateData) ->
|
||||
send_element(StateData#state.socket,
|
||||
{xmlelement,
|
||||
"db:result",
|
||||
[{"from", ?MYNAME},
|
||||
[{"from", StateData#state.myname},
|
||||
{"to", Server}],
|
||||
[{xmlcdata, Key1}]})
|
||||
end,
|
||||
@ -146,7 +149,7 @@ wait_for_stream({xmlstreamstart, Name, Attrs}, StateData) ->
|
||||
send_element(StateData#state.socket,
|
||||
{xmlelement,
|
||||
"db:verify",
|
||||
[{"from", ?MYNAME},
|
||||
[{"from", StateData#state.myname},
|
||||
{"to", StateData#state.server}],
|
||||
[{xmlcdata, Key2}]})
|
||||
end,
|
||||
|
@ -23,7 +23,7 @@
|
||||
-record(session, {ur, user, node}).
|
||||
-record(mysession, {ur, pid}).
|
||||
-record(presence, {ur, user, priority}).
|
||||
|
||||
-record(offline_msg, {user, timestamp, xml}).
|
||||
|
||||
start() ->
|
||||
spawn(ejabberd_sm, init, []).
|
||||
|
@ -172,8 +172,8 @@ set_vcard(LUser, VCARD) ->
|
||||
[{xmlcdata, "Fill in fields to search "
|
||||
"for any matching Jabber User"}]},
|
||||
{xmlelement, "field", [{"type", "text-single"},
|
||||
{"label", "JID"},
|
||||
{"var", "jid"}], []},
|
||||
{"label", "User"},
|
||||
{"var", "user"}], []},
|
||||
{xmlelement, "field", [{"type", "text-single"},
|
||||
{"label", "Full Name"},
|
||||
{"var", "fn"}], []},
|
||||
@ -403,7 +403,7 @@ filter_fields([], Match) ->
|
||||
filter_fields([{SVar, [Val]} | Ds], Match)
|
||||
when is_list(Val) and (Val /= "") ->
|
||||
NewMatch = case SVar of
|
||||
"jid" -> Match;
|
||||
"user" -> Match#vcard_search{user = Val};
|
||||
"fn" -> Match#vcard_search{fn = Val};
|
||||
"family" -> Match#vcard_search{family = Val};
|
||||
"given" -> Match#vcard_search{given = Val};
|
||||
|
Loading…
Reference in New Issue
Block a user