channel created messages added
authorpk910 <philipp@zoelle1.de>
Fri, 8 Jul 2011 15:26:36 +0000 (17:26 +0200)
committerpk910 <philipp@zoelle1.de>
Fri, 8 Jul 2011 15:33:06 +0000 (17:33 +0200)
src/chanserv.c
src/chanserv.h
src/proto-common.c
src/proto-p10.c
srvx.conf.example

index b6da8147f7daaa2bfe241871472b455f44d3183b..a76992e8579ff8beeae944508a55c17e61d9d9cc 100644 (file)
@@ -58,6 +58,9 @@
 #define KEY_MAX_USERINFO_LENGTH     "max_userinfo_length"
 #define KEY_GIVEOWNERSHIP_PERIOD    "giveownership_timeout"
 #define KEY_INVITED_INTERVAL           "invite_timeout"
+#define KEY_NEW_CHANNEL_AUTHED      "new_channel_authed_join"
+#define KEY_NEW_CHANNEL_UNAUTHED    "new_channel_unauthed_join"
+#define KEY_NEW_CHANNEL_MSG         "new_channel_message"
 
 /* ChanServ database */
 #define KEY_CHANNELS                "channels"
@@ -574,6 +577,10 @@ static struct
     const char          *irc_operator_epithet;
     const char          *network_helper_epithet;
     const char          *support_helper_epithet;
+
+    const char          *new_channel_authed;
+    const char          *new_channel_unauthed;
+    const char          *new_channel_msg;
 } chanserv_conf;
 
 struct listData
@@ -7048,6 +7055,16 @@ handle_new_channel(struct chanNode *channel)
         SetChannelTopic(channel, chanserv, channel->channel_info->topic, 1);
 }
 
+void handle_new_channel_created(char *chan, struct userNode *user) {
+    if(user->handle_info && chanserv_conf.new_channel_authed) {
+        send_target_message(5, chan, chanserv, "%s", chanserv_conf.new_channel_authed);
+    } else if(!user->handle_info && chanserv_conf.new_channel_unauthed) {
+        send_target_message(5, chan, chanserv, "%s", chanserv_conf.new_channel_unauthed);
+    }
+    if(chanserv_conf.new_channel_msg)
+        send_target_message(5, chan, chanserv, "%s", chanserv_conf.new_channel_msg);
+}
+
 /* Welcome to my worst nightmare. Warning: Read (or modify)
    the code below at your own risk. */
 static int
@@ -7673,6 +7690,12 @@ chanserv_conf_read(void)
     chanserv_conf.network_helper_epithet = str ? str : "a wannabe tyrant";
     str = database_get_data(conf_node, KEY_SUPPORT_HELPER_EPITHET, RECDB_QSTRING);
     chanserv_conf.support_helper_epithet = str ? str : "a wannabe tyrant";
+    str = database_get_data(conf_node, KEY_NEW_CHANNEL_AUTHED, RECDB_QSTRING);
+    chanserv_conf.new_channel_authed = str ? str : NULL;
+    str = database_get_data(conf_node, KEY_NEW_CHANNEL_UNAUTHED, RECDB_QSTRING);
+    chanserv_conf.new_channel_unauthed = str ? str : NULL;
+    str = database_get_data(conf_node, KEY_NEW_CHANNEL_MSG, RECDB_QSTRING);
+    chanserv_conf.new_channel_msg = str ? str : NULL;
     str = database_get_data(conf_node, "default_modes", RECDB_QSTRING);
     if(!str)
         str = "+nt";
index 8faad9c99034882c4237b620ea42443aa3a3a5f9..22fb7173c86ee88d90c5c77a4c7b19d3ccb62e9e 100644 (file)
@@ -199,5 +199,6 @@ unsigned short user_level_from_name(const char *name, unsigned short clamp_level
 struct do_not_register *chanserv_is_dnr(const char *chan_name, struct handle_info *handle);
 int check_user_level(struct chanNode *channel, struct userNode *user, enum levelOption opt, int allow_override, int exempt_owner);
 struct mod_chanmode *find_matching_bans(struct banList *bans, struct userNode *actee, const char *mask);
+void handle_new_channel_created(char *chan, struct userNode *user);
 
 #endif
index fbd22e304e5348cf8501d6163d8af278aa04b211..ee7a8b7c32fc8907b6783037640c2fe6f7da9991 100644 (file)
@@ -24,6 +24,7 @@
 #include "log.h"
 #include "nickserv.h"
 #include "opserv.h"
+#include "chanserv.h"
 #include "spamserv.h"
 #include "timeq.h"
 #ifdef HAVE_SYS_SOCKET_H
index 0e4645a02e672d467bbc9884be8da07260d4f98e..f8817be1266bd5d12f9dbe256b1467085807a3d5 100644 (file)
@@ -1197,6 +1197,8 @@ create_helper(char *name, void *data)
         return;
     }
 
+    handle_new_channel_created(name, cd->user);
+
     AddChannelUser(cd->user, AddChannel(name, cd->when, NULL, NULL));
 }
 
index 2501d93a7b208a5e57aa612e8351ee310250d6c7..e9dcfc351529440c40b02bd6d0294077c418f0c6 100644 (file)
         "nodelete_level" "1";
         // how long before a new channel owner can give ownership away?
         "giveownership_timeout" "1w";
+        // message sent to new channels
+        "new_channel_unauthed_join" ""; //only sent if the user is unauthed
+        "new_channel_authed_join" ""; //only sent if the user is authed
+        "new_channel_message" ""; //always after the message above
+        
     };
 
     "global" {