diff options
Diffstat (limited to 'src/mod_announce.erl')
-rw-r--r-- | src/mod_announce.erl | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/mod_announce.erl b/src/mod_announce.erl index fba6d3b81..6ccc5990e 100644 --- a/src/mod_announce.erl +++ b/src/mod_announce.erl @@ -792,6 +792,17 @@ announce_motd(Host, Packet) -> end, Sessions) end, mnesia:transaction(F); + riak -> + try + lists:foreach( + fun({U, S, _R}) -> + ok = ejabberd_riak:put(#motd_users{us = {U, S}}, + [{'2i', [{<<"server">>, S}]}]) + end, Sessions), + {atomic, ok} + catch _:{badmatch, Err} -> + {atomic, Err} + end; odbc -> F = fun() -> lists:foreach( @@ -837,6 +848,9 @@ announce_motd_update(LServer, Packet) -> mnesia:write(#motd{server = LServer, packet = Packet}) end, mnesia:transaction(F); + riak -> + {atomic, ejabberd_riak:put(#motd{server = LServer, + packet = Packet})}; odbc -> XML = ejabberd_odbc:escape(xml:element_to_binary(Packet)), F = fun() -> @@ -887,6 +901,16 @@ announce_motd_delete(LServer) -> end, Users) end, mnesia:transaction(F); + riak -> + try + ok = ejabberd_riak:delete(motd, LServer), + ok = ejabberd_riak:delete_by_index(motd_users, + <<"server">>, + LServer), + {atomic, ok} + catch _:{badmatch, Err} -> + {atomic, Err} + end; odbc -> F = fun() -> ejabberd_odbc:sql_query_t([<<"delete from motd;">>]) @@ -915,6 +939,23 @@ send_motd(#jid{luser = LUser, lserver = LServer} = JID, mnesia) -> _ -> ok end; +send_motd(#jid{luser = LUser, lserver = LServer} = JID, riak) -> + case catch ejabberd_riak:get(motd, LServer) of + {ok, #motd{packet = Packet}} -> + US = {LUser, LServer}, + case ejabberd_riak:get(motd_users, US) of + {ok, #motd_users{}} -> + ok; + _ -> + Local = jlib:make_jid(<<>>, LServer, <<>>), + ejabberd_router:route(Local, JID, Packet), + {atomic, ejabberd_riak:put( + #motd_users{us = US}, + [{'2i', [{<<"server">>, LServer}]}])} + end; + _ -> + ok + end; send_motd(#jid{luser = LUser, lserver = LServer} = JID, odbc) when LUser /= <<>> -> case catch ejabberd_odbc:sql_query( LServer, [<<"select xml from motd where username='';">>]) of @@ -965,6 +1006,13 @@ get_stored_motd_packet(LServer, mnesia) -> _ -> error end; +get_stored_motd_packet(LServer, riak) -> + case ejabberd_riak:get(motd, LServer) of + {ok, #motd{packet = Packet}} -> + {ok, Packet}; + _ -> + error + end; get_stored_motd_packet(LServer, odbc) -> case catch ejabberd_odbc:sql_query( LServer, [<<"select xml from motd where username='';">>]) of |