]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_s2s.erl: Added error catching for do_route/3
authorAlexey Shchepin <alexey@process-one.net>
Thu, 15 May 2003 18:16:13 +0000 (18:16 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Thu, 15 May 2003 18:16:13 +0000 (18:16 +0000)
* src/ejabberd_local.erl: Likewise for do_route/4

* src/msgs/ru.msg: Updated

* src/mod_muc/mod_muc_room.erl: New option to allow to view list
of participants for non-ones via disco#items

* src/mod_muc/mod_muc_room.erl: Store room subject with
configuration options

SVN Revision: 109

ChangeLog
TODO
src/ejabberd_local.erl
src/ejabberd_s2s.erl
src/mod_muc/mod_muc_room.erl
src/msgs/ru.msg

index a3c7f32453ae4c028bfa23351a6944520add344c..736d11366a7d534f4f9427959c1ee2a7d043716a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2003-05-15  Alexey Shchepin  <alexey@sevcom.net>
+
+       * src/ejabberd_s2s.erl: Added error catching for do_route/3
+       * src/ejabberd_local.erl: Likewise for do_route/4
+
+       * src/msgs/ru.msg: Updated
+
+       * src/mod_muc/mod_muc_room.erl: New option to allow to view list
+       of participants for non-ones via disco#items
+
+       * src/mod_muc/mod_muc_room.erl: Store room subject with
+       configuration options
+
 2003-05-14  Alexey Shchepin  <alexey@sevcom.net>
 
        * src/mod_muc/mod_muc_room.erl: Remove user from room on receiving
diff --git a/TODO b/TODO
index 0f202549d07edcc56607ca035ac014e71d1d17d5..0b7984866d01035452a22b8884cb7a8d4e351430 100644 (file)
--- a/TODO
+++ b/TODO
@@ -6,15 +6,21 @@ admin interface
                node restart/shutdown
                statistics about memory usage
        backup management
-S2S timeouts
-rewrite S2S key validation
-iq:browse (?)
+
+S2S:
+       * timeouts
+
+       * rewrite S2S key validation
+
 more correctly work with SRV DNS records (priority, weight, etc...)
 SSL
-SASL
 JEP-62,63 (?)
 make roster set to work in one transaction
-add traffic shapers to to c2s connection before authentification
+add traffic shapers to c2s connection before authentification
 add traffic shapers to s2s connections
 more traffic shapers
 SNMP
+
+mod_muc:
+
+       * broadcast messages from admin
index 3dcc1eabd29d66099eb8aca923d9d16e8fce2026..02618fe4f2b65ef83a7b241357d7c351915e777d 100644 (file)
@@ -37,7 +37,12 @@ init() ->
 loop(State) ->
     receive
        {route, From, To, Packet} ->
-           do_route(State, From, To, Packet),
+           case catch do_route(State, From, To, Packet) of
+               {'EXIT', Reason} ->
+                   ?ERROR_MSG("~p", [Reason]);
+               _ ->
+                   ok
+           end,
            loop(State);
        {register_iq_handler, XMLNS, Module, Function} ->
            ets:insert(State#state.iqtable, {XMLNS, Module, Function}),
index 0aa36784b0948639fdedca70f7ad1dc69e643d35..0490c8e506772761d40e495c794fb853d7246fb1 100644 (file)
@@ -55,7 +55,12 @@ loop() ->
            clean_table_from_bad_node(Node),
            loop();
        {route, From, To, Packet} ->
-           do_route(From, To, Packet),
+           case catch do_route(From, To, Packet) of
+               {'EXIT', Reason} ->
+                   ?ERROR_MSG("~p", [Reason]);
+               _ ->
+                   ok
+           end,
            loop();
        _ ->
            loop()
index 33d824474738ea98977cbdb00950f7e85700d8d2..47e55576f5faab3e4fa75c4d3549aa151485a008 100644 (file)
@@ -40,6 +40,7 @@
                 allow_query_users = true,
                 allow_private_messages = true,
                 public = true,
+                public_list = true,
                 persistent = false,
                 moderated = false, % TODO
                 members_by_default = true,
@@ -146,10 +147,20 @@ normal_state({route, From, "",
                                        case can_change_subject(Role,
                                                                StateData) of
                                            true ->
-                                               {StateData#state{
-                                                  subject = Subject,
-                                                  subject_author = FromNick},
-                                                true};
+                                               NSD =
+                                                   StateData#state{
+                                                     subject = Subject,
+                                                     subject_author =
+                                                     FromNick},
+                                               case (NSD#state.config)#config.persistent of
+                                                   true ->
+                                                       mod_muc:store_room(
+                                                         NSD#state.room,
+                                                         make_opts(NSD));
+                                                   _ ->
+                                                       ok
+                                               end,
+                                               {NSD, true};
                                            _ ->
                                                {StateData, false}
                                        end
@@ -272,7 +283,7 @@ normal_state({route, From, "",
                        {{iq, ID, result, XMLNS,
                          [{xmlelement, "query", [{"xmlns", XMLNS}],
                            Res
-                        }]},
+                          }]},
                         SD};
                    {error, Error} ->
                        {{iq, ID, error, XMLNS,
@@ -1496,9 +1507,6 @@ process_iq_owner(From, set, SubEl, StateData) ->
        _ ->
            {error, ?ERR_FORBIDDEN}
     end;
-%    {xmlelement, _, _, Items} = SubEl,
-%    process_admin_items_set(From, Items, StateData);
-%    {error, ?ERR_FEATURE_NOT_IMPLEMENTED};
 
 process_iq_owner(From, get, SubEl, StateData) ->
     FAffiliation = get_affiliation(From, StateData),
@@ -1567,6 +1575,9 @@ get_config(Lang, StateData) ->
         ?BOOLXFIELD("Make room public searchable?",
                     "public",
                     Config#config.public),
+        ?BOOLXFIELD("Make participants list public?",
+                    "public_list",
+                    Config#config.public_list),
         ?BOOLXFIELD("Make room persistent?",
                     "persistent",
                     Config#config.persistent),
@@ -1634,6 +1645,8 @@ set_xoption([{"allow_private_messages", [Val]} | Opts], Config) ->
     ?SET_BOOL_XOPT(allow_private_messages, Val);
 set_xoption([{"public", [Val]} | Opts], Config) ->
     ?SET_BOOL_XOPT(public, Val);
+set_xoption([{"public_list", [Val]} | Opts], Config) ->
+    ?SET_BOOL_XOPT(public_list, Val);
 set_xoption([{"persistent", [Val]} | Opts], Config) ->
     ?SET_BOOL_XOPT(persistent, Val);
 set_xoption([{"moderated", [Val]} | Opts], Config) ->
@@ -1681,6 +1694,7 @@ set_opts([{Opt, Val} | Opts], StateData) ->
              ?CASE_CONFIG_OPT(allow_query_users);
              ?CASE_CONFIG_OPT(allow_private_messages);
              ?CASE_CONFIG_OPT(public);
+             ?CASE_CONFIG_OPT(public_list);
              ?CASE_CONFIG_OPT(persistent);
              ?CASE_CONFIG_OPT(moderated);
              ?CASE_CONFIG_OPT(members_by_default);
@@ -1691,6 +1705,10 @@ set_opts([{Opt, Val} | Opts], StateData) ->
              ?CASE_CONFIG_OPT(logging);
              affiliations ->
                  StateData#state{affiliations = ?DICT:from_list(Val)};
+             subject ->
+                 StateData#state{subject = Val};
+             subject_author ->
+                 StateData#state{subject_author = Val};
              _ -> StateData
          end,
     set_opts(Opts, NSD).
@@ -1705,6 +1723,7 @@ make_opts(StateData) ->
      ?MAKE_CONFIG_OPT(allow_query_users),
      ?MAKE_CONFIG_OPT(allow_private_messages),
      ?MAKE_CONFIG_OPT(public),
+     ?MAKE_CONFIG_OPT(public_list),
      ?MAKE_CONFIG_OPT(persistent),
      ?MAKE_CONFIG_OPT(moderated),
      ?MAKE_CONFIG_OPT(members_by_default),
@@ -1713,7 +1732,9 @@ make_opts(StateData) ->
      ?MAKE_CONFIG_OPT(password_protected),
      ?MAKE_CONFIG_OPT(anonymous),
      ?MAKE_CONFIG_OPT(logging),
-     {affiliations, ?DICT:to_list(StateData#state.affiliations)}
+     {affiliations, ?DICT:to_list(StateData#state.affiliations)},
+     {subject, StateData#state.subject},
+     {subject_author, StateData#state.subject_author}
     ].
 
 
@@ -1760,8 +1781,9 @@ process_iq_disco_items(From, set, StateData) ->
 process_iq_disco_items(From, get, StateData) ->
     FAffiliation = get_affiliation(From, StateData),
     FRole = get_role(From, StateData),
-    case (FRole /= none) or
-       (FAffiliation == admin) or
+    case ((StateData#state.config)#config.public_list == true) orelse
+       (FRole /= none) orelse
+       (FAffiliation == admin) orelse
        (FAffiliation == owner) of
        true ->
            UList =
index 15cabadd84aff797e1327d35a25c669d07308027..c9bb60c45cbd1158b0baf9fab824fa9c272454f0 100644 (file)
@@ -72,6 +72,7 @@
 {"Allow users to send private messages?",
  "Разрешить приватные сообщения?"}.
 {"Make room public searchable?", "Сделать комнату видимой всем?"}.
+{"Make participants list public?", "Сделать список участников видимым всем?"}.
 {"Make room persistent?", "Сделать комнату постоянной?"}.
 {"Make room moderated?", "Сделать комнату модерируемой?"}.
 {"Default users as members?",