diff options
Diffstat (limited to 'src/mod_muc_riak.erl')
-rw-r--r-- | src/mod_muc_riak.erl | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/src/mod_muc_riak.erl b/src/mod_muc_riak.erl deleted file mode 100644 index b7942910c..000000000 --- a/src/mod_muc_riak.erl +++ /dev/null @@ -1,193 +0,0 @@ -%%%------------------------------------------------------------------- -%%% File : mod_muc_riak.erl -%%% Author : Evgeny Khramtsov <ekhramtsov@process-one.net> -%%% Created : 13 Apr 2016 by Evgeny Khramtsov <ekhramtsov@process-one.net> -%%% -%%% -%%% ejabberd, Copyright (C) 2002-2019 ProcessOne -%%% -%%% This program is free software; you can redistribute it and/or -%%% modify it under the terms of the GNU General Public License as -%%% published by the Free Software Foundation; either version 2 of the -%%% License, or (at your option) any later version. -%%% -%%% This program is distributed in the hope that it will be useful, -%%% but WITHOUT ANY WARRANTY; without even the implied warranty of -%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%%% General Public License for more details. -%%% -%%% You should have received a copy of the GNU General Public License along -%%% with this program; if not, write to the Free Software Foundation, Inc., -%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -%%% -%%%---------------------------------------------------------------------- - --module(mod_muc_riak). - --behaviour(mod_muc). --behaviour(mod_muc_room). - -%% API --export([init/2, import/3, store_room/5, restore_room/3, forget_room/3, - can_use_nick/4, get_rooms/2, get_nick/3, set_nick/4]). --export([register_online_room/4, unregister_online_room/4, find_online_room/3, - get_online_rooms/3, count_online_rooms/2, rsm_supported/0, - register_online_user/4, unregister_online_user/4, - count_online_rooms_by_user/3, get_online_rooms_by_user/3]). --export([set_affiliation/6, set_affiliations/4, get_affiliation/5, - get_affiliations/3, search_affiliation/4]). - --include("jid.hrl"). --include("mod_muc.hrl"). - -%%%=================================================================== -%%% API -%%%=================================================================== -init(_Host, _Opts) -> - ok. - -store_room(_LServer, Host, Name, Opts, _) -> - {atomic, ejabberd_riak:put(#muc_room{name_host = {Name, Host}, - opts = Opts}, - muc_room_schema())}. - -restore_room(_LServer, Host, Name) -> - case ejabberd_riak:get(muc_room, muc_room_schema(), {Name, Host}) of - {ok, #muc_room{opts = Opts}} -> Opts; - _ -> error - end. - -forget_room(_LServer, Host, Name) -> - {atomic, ejabberd_riak:delete(muc_room, {Name, Host})}. - -can_use_nick(_LServer, Host, JID, Nick) -> - {LUser, LServer, _} = jid:tolower(JID), - LUS = {LUser, LServer}, - case ejabberd_riak:get_by_index(muc_registered, - muc_registered_schema(), - <<"nick_host">>, {Nick, Host}) of - {ok, []} -> - true; - {ok, [#muc_registered{us_host = {U, _Host}}]} -> - U == LUS; - {error, _} -> - true - end. - -get_rooms(_LServer, Host) -> - case ejabberd_riak:get(muc_room, muc_room_schema()) of - {ok, Rs} -> - lists:filter( - fun(#muc_room{name_host = {_, H}}) -> - Host == H - end, Rs); - _Err -> - [] - end. - -get_nick(LServer, Host, From) -> - {LUser, LServer, _} = jid:tolower(From), - US = {LUser, LServer}, - case ejabberd_riak:get(muc_registered, - muc_registered_schema(), - {US, Host}) of - {ok, #muc_registered{nick = Nick}} -> Nick; - {error, _} -> error - end. - -set_nick(LServer, Host, From, Nick) -> - {LUser, LServer, _} = jid:tolower(From), - LUS = {LUser, LServer}, - {atomic, - case Nick of - <<"">> -> - ejabberd_riak:delete(muc_registered, {LUS, Host}); - _ -> - Allow = case ejabberd_riak:get_by_index( - muc_registered, - muc_registered_schema(), - <<"nick_host">>, {Nick, Host}) of - {ok, []} -> - true; - {ok, [#muc_registered{us_host = {U, _Host}}]} -> - U == LUS; - {error, _} -> - false - end, - if Allow -> - ejabberd_riak:put(#muc_registered{us_host = {LUS, Host}, - nick = Nick}, - muc_registered_schema(), - [{'2i', [{<<"nick_host">>, - {Nick, Host}}]}]); - true -> - false - end - end}. - -set_affiliation(_ServerHost, _Room, _Host, _JID, _Affiliation, _Reason) -> - {error, not_implemented}. - -set_affiliations(_ServerHost, _Room, _Host, _Affiliations) -> - {error, not_implemented}. - -get_affiliation(_ServerHost, _Room, _Host, _LUser, _LServer) -> - {error, not_implemented}. - -get_affiliations(_ServerHost, _Room, _Host) -> - {error, not_implemented}. - -search_affiliation(_ServerHost, _Room, _Host, _Affiliation) -> - {error, not_implemented}. - -register_online_room(_, _, _, _) -> - erlang:error(not_implemented). - -unregister_online_room(_, _, _, _) -> - erlang:error(not_implemented). - -find_online_room(_, _, _) -> - erlang:error(not_implemented). - -count_online_rooms(_, _) -> - erlang:error(not_implemented). - -get_online_rooms(_, _, _) -> - erlang:error(not_implemented). - -rsm_supported() -> - false. - -register_online_user(_, _, _, _) -> - erlang:error(not_implemented). - -unregister_online_user(_, _, _, _) -> - erlang:error(not_implemented). - -count_online_rooms_by_user(_, _, _) -> - erlang:error(not_implemented). - -get_online_rooms_by_user(_, _, _) -> - erlang:error(not_implemented). - -import(_LServer, <<"muc_room">>, - [Name, RoomHost, SOpts, _TimeStamp]) -> - Opts = mod_muc:opts_to_binary(ejabberd_sql:decode_term(SOpts)), - ejabberd_riak:put( - #muc_room{name_host = {Name, RoomHost}, opts = Opts}, - muc_room_schema()); -import(_LServer, <<"muc_registered">>, - [J, RoomHost, Nick, _TimeStamp]) -> - #jid{user = U, server = S} = jid:decode(J), - R = #muc_registered{us_host = {{U, S}, RoomHost}, nick = Nick}, - ejabberd_riak:put(R, muc_registered_schema(), - [{'2i', [{<<"nick_host">>, {Nick, RoomHost}}]}]). - -%%%=================================================================== -%%% Internal functions -%%%=================================================================== -muc_room_schema() -> - {record_info(fields, muc_room), #muc_room{}}. - -muc_registered_schema() -> - {record_info(fields, muc_registered), #muc_registered{}}. |