fixed fail from NurPech
[srvx.git] / src / chanserv.c
index 3ddfaf6874822d50451a596628451b53c73dcef1..a2f6175f5ef619b936f9064435ffcda8f9daba31 100644 (file)
 #define KEY_EXPIRES     "expires"
 #define KEY_TRIGGERED   "triggered"
 
-#define CHANNEL_DEFAULT_FLAGS   (CHANNEL_OFFCHANNEL | CHANNEL_UNREVIEWED)
+#define CHANNEL_DEFAULT_FLAGS   (CHANNEL_UNREVIEWED)
 #define CHANNEL_PRESERVED_FLAGS (CHANNEL_UNREVIEWED)
 #define CHANNEL_DEFAULT_OPTIONS "lmoooanpcnat"
 
@@ -523,6 +523,9 @@ static const struct message_entry msgtab[] = {
     { NULL, NULL }
 };
 
+#define CSMSG_ALERT_REGISTERED "%s registered to %s by %s."
+#define CSMSG_ALERT_UNREGISTERED "%s %s"
+
 /* eject_user and unban_user flags */
 #define ACTION_KICK             0x0001
 #define ACTION_BAN              0x0002
@@ -548,6 +551,9 @@ static const struct message_entry msgtab[] = {
 DECLARE_LIST(dnrList, struct do_not_register *);
 DEFINE_LIST(dnrList, struct do_not_register *)
 
+#define chanserv_notice(target, format...) send_message(target , chanserv , ## format)
+#define chanserv_oper_message(format...) do { if(chanserv_conf.oper_channel) send_channel_message(chanserv_conf.oper_channel , chanserv , ## format); } while(0)
+
 static int eject_user(struct userNode *user, struct chanNode *channel, unsigned int argc, char *argv[], struct svccmd *cmd, int action);
 
 struct userNode *chanserv;
@@ -601,6 +607,8 @@ static struct
     const char          *new_channel_authed;
     const char          *new_channel_unauthed;
     const char          *new_channel_msg;
+
+    struct chanNode    *oper_channel;
 } chanserv_conf;
 
 struct listData
@@ -1515,12 +1523,12 @@ unregister_channel(struct chanData *channel, const char *reason)
     if(channel->expiry)
         timeq_del(channel->expiry, chanserv_expire_channel, channel, 0);
     channel->channel->channel_info = NULL;
-
-    dict_delete(channel->notes);
     sprintf(msgbuf, "%s %s", channel->channel->name, reason);
+    dict_delete(channel->notes);
     if(!IsSuspended(channel))
         DelChannelUser(chanserv, channel->channel, msgbuf, 0);
-    global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, msgbuf);
+
+    chanserv_oper_message(CSMSG_ALERT_UNREGISTERED, channel->channel->name, reason);
     UnlockChannel(channel->channel);
     free(channel);
     registered_channels--;
@@ -2160,7 +2168,6 @@ static CHANSERV_FUNC(cmd_register)
     struct handle_info *handle;
     struct chanData *cData;
     struct modeNode *mn;
-    char reason[MAXLEN];
     char *chan_name;
     unsigned int new_channel, force=0;
     struct do_not_register *dnr;
@@ -2271,8 +2278,7 @@ static CHANSERV_FUNC(cmd_register)
     else
         reply("CSMSG_REG_SUCCESS", channel->name);
 
-    sprintf(reason, "%s registered to %s by %s.", channel->name, handle->handle, user->handle_info->handle);
-    global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, reason);
+    chanserv_oper_message(CSMSG_ALERT_REGISTERED, channel->name, handle->handle, user->handle_info->handle);
     return 1;
 }
 
@@ -7980,6 +7986,16 @@ chanserv_conf_read(void)
     chanserv_conf.old_ban_names = strlist;
     str = database_get_data(conf_node, "off_channel", RECDB_QSTRING);
     off_channel = str ? atoi(str) : 0;
+
+    str = database_get_data(conf_node, "oper_channel", RECDB_QSTRING);
+       if(str)
+       {
+               chanserv_conf.oper_channel = AddChannel(str, now, "+tinms", NULL);
+       }
+       else
+       {
+               chanserv_conf.oper_channel = NULL;
+       }
 }
 
 static void