X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fchanserv.c;h=a2f6175f5ef619b936f9064435ffcda8f9daba31;hb=95ca19dd93fa5ef8d8756d0ef0ec1c39fe398650;hp=3ddfaf6874822d50451a596628451b53c73dcef1;hpb=18a22dac8302182719e030976fa1c045bde8a461;p=srvx.git diff --git a/src/chanserv.c b/src/chanserv.c index 3ddfaf6..a2f6175 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -141,7 +141,7 @@ #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