added modes parameter to srvx.conf to control user modes
authoradam <adam@gamesurge.net>
Wed, 16 Jun 2004 12:23:32 +0000 (12:23 +0000)
committeradam <adam@gamesurge.net>
Wed, 16 Jun 2004 12:23:32 +0000 (12:23 +0000)
* each service now has a 'modes' parameter in srvx.conf to specify their individual modes.. if left blank, will default to whatever 'services' modes work for your ircd.

git-archimport-id: srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-69

ChangeLog
src/chanserv.c
src/global.c
src/mod-helpserv.c
src/modcmd.c
src/nickserv.c
src/opserv.c
src/proto-bahamut.c
src/proto-p10.c
src/proto.h
srvx.conf.example

index b3bda78c0a4a609fcabcc344b90c1f70490d89fc..fc973e8b39521e03ca9d0a851a7533d135c30ad0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,22 @@
 # arch-tag: automatic-ChangeLog--srvx@srvx.net--2004-srvx/srvx--devo--1.3
 #
 
+2004-06-16 12:23:32 GMT        adam <adam@gamesurge.net>       patch-69
+
+    Summary:
+      added modes parameter to srvx.conf to control user modes
+    Revision:
+      srvx--devo--1.3--patch-69
+
+    * each service now has a 'modes' parameter in srvx.conf to specify their individual modes.. if left blank, will default to whatever 'services' modes work for your ircd.
+    
+
+    modified files:
+     ChangeLog src/chanserv.c src/global.c src/mod-helpserv.c
+     src/modcmd.c src/nickserv.c src/opserv.c src/proto-bahamut.c
+     src/proto-p10.c src/proto.h srvx.conf.example
+
+
 2004-06-08 09:24:49 GMT        adam <adam@gamesurge.net>       patch-68
 
     Summary:
index 7c629f6780f0af6d380dedcb44081968e2f9697c..f93a75fad6d00f3c3ce319c1350c23577a4a9843 100644 (file)
@@ -7249,7 +7249,8 @@ init_chanserv(const char *nick)
     dict_set_free_data(note_types, chanserv_deref_note_type);
     if(nick)
     {
-        chanserv = AddService(nick, "Channel Services", NULL);
+        const char *modes = conf_get_data("services/chanserv/modes", RECDB_QSTRING);
+        chanserv = AddService(nick, modes ? modes : NULL, "Channel Services", NULL);
         service_register(chanserv)->trigger = '!';
         reg_chanmsg_func('\001', chanserv, chanserv_ctcp_check);
     }
index dc7dc4f0f381c73c3a9d3c842478f7cf3cbe7192..75e82457480d43f2195c583a1d403a283e9b25d5 100644 (file)
@@ -674,7 +674,8 @@ init_global(const char *nick)
 
     if(nick)
     {
-        global = AddService(nick, "Global Services", NULL);
+        const char *modes = conf_get_data("services/global/modes", RECDB_QSTRING);
+        global = AddService(nick, modes ? modes : NULL, "Global Services", NULL);
         global_service = service_register(global);
     }
     saxdb_register("Global", global_saxdb_read, global_saxdb_write);
index 1a8efc5d9e1cca5c1736ea1f07c6192a0f5b389e..5b75c1e2857edc22b4984f7d80bdf65969cac594 100644 (file)
@@ -2603,7 +2603,7 @@ static struct helpserv_bot *register_helpserv(const char *nick, const char *help
      * it's a harmless default */
     hs = calloc(1, sizeof(struct helpserv_bot));
 
-    if (!(hs->helpserv = AddService(nick, helpserv_conf.description, NULL))) {
+    if (!(hs->helpserv = AddService(nick, "+iok", helpserv_conf.description, NULL))) {
         free(hs);
         return NULL;
     }
index ba5f40ea10db471675c4ac9ce6a1467281db68b1..933c79123625c971ae2f3d626fc7bc1138a9f262 100644 (file)
@@ -1730,7 +1730,7 @@ static MODCMD_FUNC(cmd_service_add) {
         reply("MCMSG_ALREADY_SERVICE", bot->nick);
         return 0;
     }
-    bot = AddService(nick, desc, hostname);
+    bot = AddService(nick, NULL, desc, hostname);
     service_register(bot);
     reply("MCMSG_NEW_SERVICE", bot->nick);
     return 1;
@@ -2049,7 +2049,7 @@ modcmd_load_bots(struct dict *db, int default_nick) {
         hostname = database_get_data(rd->d.object, "hostname", RECDB_QSTRING);
         if (desc) {
             if (!svc)
-                svc = service_register(AddService(nick, desc, hostname));
+                svc = service_register(AddService(nick, NULL, desc, hostname));
             else if (hostname)
                 strcpy(svc->bot->hostname, hostname);
             desc = database_get_data(rd->d.object, "trigger", RECDB_QSTRING);
index 4d7b374d8c9b8c178023dde6d2a2d4a301e47ea9..b2f5afda1a08ddd8b138a443d2b45420b4251dee 100644 (file)
@@ -3826,7 +3826,8 @@ init_nickserv(const char *nick)
     userList_init(&curr_helpers);
 
     if (nick) {
-        nickserv = AddService(nick, "Nick Services", NULL);
+        const char *modes = conf_get_data("services/nickserv/modes", RECDB_QSTRING);
+        nickserv = AddService(nick, modes ? modes : NULL, "Nick Services", NULL);
         nickserv_service = service_register(nickserv);
     }
     saxdb_register("NickServ", nickserv_saxdb_read, nickserv_saxdb_write);
index a63c0e148141ec2dd45c3823c7f87f386a6d4d1d..0a3ac77767078e0cf7ee0a440282b1ecc124ed00 100644 (file)
@@ -4022,8 +4022,10 @@ void
 init_opserv(const char *nick)
 {
     OS_LOG = log_register_type("OpServ", "file:opserv.log");
-    if (nick)
-        opserv = AddService(nick, "Oper Services", NULL);
+    if (nick) {
+        const char *modes = conf_get_data("services/opserv/modes", RECDB_QSTRING);
+        opserv = AddService(nick, modes ? modes : NULL, "Oper Services", NULL);
+    }
     conf_register_reload(opserv_conf_read);
 
     memset(level_strings, 0, sizeof(level_strings));
index ee649b1b15ab27706b9dc1de56d36afb6e5134c9..689e26cfbc4016bfc0b0a14d550c53dfab643bc8 100644 (file)
@@ -171,7 +171,7 @@ AddUser(struct server* uplink, const char *nick, const char *ident, const char *
 }
 
 struct userNode *
-AddService(const char *nick, const char *desc, const char *hostname) {
+AddService(const char *nick, const char *modes, const char *desc, const char *hostname) {
     time_t timestamp = now;
     struct userNode *old_user = GetUserH(nick);
     struct in_addr ipaddr = { INADDR_LOOPBACK };
@@ -182,7 +182,7 @@ AddService(const char *nick, const char *desc, const char *hostname) {
     }
     if (!hostname)
         hostname = self->name;
-    return AddUser(self, nick, nick, hostname, "+oikr", desc, timestamp, ipaddr, 0);
+    return AddUser(self, nick, nick, hostname, modes ? modes : "+oikr", desc, timestamp, ipaddr, 0);
 }
 
 struct userNode *
index b2aa696fdd7e1ec0376db60ad64ffd906d9cfb1c..8e5bc3ef4a8dfd07a38c9597a887b8f038315d66 100644 (file)
@@ -1801,7 +1801,7 @@ void DelServer(struct server* serv, int announce, const char *message)
 }
 
 struct userNode *
-AddService(const char *nick, const char *desc, const char *hostname)
+AddService(const char *nick, const char *modes, const char *desc, const char *hostname)
 {
     char numeric[COMBO_NUMERIC_LEN+1];
     int local_num = get_local_numeric();
@@ -1820,7 +1820,7 @@ AddService(const char *nick, const char *desc, const char *hostname)
     if (!hostname)
         hostname = self->name;
     make_numeric(self, local_num, numeric);
-    return AddUser(self, nick, nick, hostname, "+oik", numeric, desc, now, "AAAAAA");
+    return AddUser(self, nick, nick, hostname, modes ? modes : "+oik", numeric, desc, now, "AAAAAA");
 }
 
 struct userNode *
index 3b60c7221745b2cd13fad53d7295388f311a0258..3f4143bbb100347322d75a844a076994f1f04186 100644 (file)
@@ -169,7 +169,7 @@ void irc_numeric(struct userNode *user, unsigned int num, const char *format, ..
 /* stuff originally from other headers that is really protocol-specific */
 int IsChannelName(const char *name);
 int is_valid_nick(const char *nick);
-struct userNode *AddService(const char *nick, const char *desc, const char *hostname);
+struct userNode *AddService(const char *nick, const char *modes, const char *desc, const char *hostname);
 struct userNode *AddClone(const char *nick, const char *ident, const char *hostname, const char *desc);
 struct server* AddServer(struct server* uplink, const char *name, int hops, time_t boot, time_t link, const char *numeric, const char *description);
 void DelServer(struct server* serv, int announce, const char *message);
index 3bd2d60525681bf32d637eb411fe7ead81b9371d..bab5e6a19cbad5f0052cf052ee70f9e253d662e7 100644 (file)
 "services" {
     "nickserv" {
         "nick" "NickServ";
+       // What user modes do you want this service to have? Please keep in
+       // mind which ircd software you are using here, and that all of the
+       // services need to be at least +o.
+       // "modes" "+iok";
         // If you want to by have *@* as the default hostmask, set
         // default_hostmask.  This is discouraged for security reasons.
         // "default_hostmask" "1";
 
     "opserv" {
         "nick" "OpServ";
+       // What user modes do you want this service to have? Please keep in
+       // mind which ircd software you are using here, and that all of the
+       // services need to be at least +o.
+       // "modes" "+iok";
         // should use of this service be limited to global opers?
         "privileged" "1";
         // fullname for service
         // (This is changed relative srvx-1.0.x, which would use default
         // unless you specified ".disabled".)
         "nick" "ChanServ";
+       // What user modes do you want this service to have? Please keep in
+       // mind which ircd software you are using here, and that all of the
+       // services need to be at least +o.
+       // "modes" "+iok";
         // Does your ircd have off-channel services support?
         // Bahamut does; ircu2.10.11 does not.
         "off_channel" "no";
 
     "global" {
         "nick" "Global";
+       // What user modes do you want this service to have? Please keep in
+       // mind which ircd software you are using here, and that all of the
+       // services need to be at least +o.
+       // "modes" "+iok";
         // should users get community announcements by default or not?
         "announcements_default" "on";
     };