aboutsummaryrefslogtreecommitdiff
path: root/src/mod_announce.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_announce.erl')
-rw-r--r--src/mod_announce.erl48
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