X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fchanserv.c;h=9358d160a305c46ec36fa7d87a9f6124cf2373c9;hb=25d63694265d44db2b1385e8d03c89d0edbed28d;hp=44f6d9d5f1488f88c0b24d06260e0fce960e1eb9;hpb=58d823d306b690515fbc6f671636d4ec152b867a;p=srvx.git diff --git a/src/chanserv.c b/src/chanserv.c index 44f6d9d..9358d16 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" @@ -156,7 +156,6 @@ static const struct message_entry msgtab[] = { { "CSMSG_MUST_BE_OPPED", "You must be a channel operator in $b%s$b to register it." }, { "CSMSG_PROXY_FORBIDDEN", "You may not register a channel for someone else." }, { "CSMSG_OWN_TOO_MANY", "%s already owns enough channels (at least %d); use FORCE to override." }, - { "CMSG_ALERT_REGISTERED" "%s registered to %s by %s." }, /* Do-not-register channels */ { "CSMSG_NOT_DNR", "$b%s$b is not a valid channel name or *account." }, @@ -179,7 +178,6 @@ static const struct message_entry msgtab[] = { { "CSMSG_UNREG_NODELETE", "$b%s$b is protected from unregistration." }, { "CSMSG_CHAN_SUSPENDED", "$b$C$b access to $b%s$b has been temporarily suspended (%s)." }, { "CSMSG_CONFIRM_UNREG", "To confirm this unregistration, you must use 'unregister %s'." }, - { "CMSG_ALERT_UNREGISTERED" "%s %s" }, /* Channel moving */ { "CSMSG_MOVE_SUCCESS", "Channel registration has been moved to $b%s$b." }, @@ -401,7 +399,7 @@ static const struct message_entry msgtab[] = { { "CSMSG_LC_H_TITLE", "support helper" }, { "CSMSG_LAME_SMURF_TARGET", "%s is an IRC operator." }, { "CSMSG_MYACCESS_COUNT", "%s has access in $b%d$b channels and is owner of $b%d$b channel(s)." }, - { "CSMSG_MYACCESS_COUNT_1", "%s has access in $b%d$b channel and is owner of $b%d$b channel(s)." }, + { "CSMSG_MYACCESS_COUNT_1", "%s has access in $b%d$b channel and is owner of $b%d$b channel(s)." }, /* Seen information */ @@ -485,6 +483,7 @@ static const struct message_entry msgtab[] = { /* Toys */ { "CSMSG_UNF_RESPONSE", "I don't want to be part of your sick fantasies!" }, { "CSMSG_PING_RESPONSE", "Pong!" }, + { "CSMSG_PONG_RESPONSE", "Ping!" }, { "CSMSG_WUT_RESPONSE", "wut" }, { "CSMSG_BAD_NUMBER", "$b%s$b is an invalid number. Please use a number greater than 1 with this command." }, { "CSMSG_BAD_DIE_FORMAT", "I do not understand $b%s$b. Please use either a single number or standard 4d6+3 format." }, @@ -525,6 +524,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 @@ -1522,11 +1524,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; - + sprintf(msgbuf, "%s %s", channel->channel->name, reason); dict_delete(channel->notes); if(!IsSuspended(channel)) DelChannelUser(chanserv, channel->channel, msgbuf, 0); - chanserv_oper_message(CSMSGL_CHANNEL_UNREGISTERED, channel->channel->name, reason); + + chanserv_oper_message(CSMSG_ALERT_UNREGISTERED, channel->channel->name, reason); UnlockChannel(channel->channel); free(channel); registered_channels--; @@ -2166,7 +2169,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; @@ -2389,7 +2391,7 @@ static CHANSERV_FUNC(cmd_move) REQUIRE_PARAMS(2); - if(IsProtected(channel->channel_info)) + if(IsProtected(channel->channel_info) && !IsOper(user)) { reply("CSMSG_MOVE_NODELETE", channel->name); return 0; @@ -2697,7 +2699,7 @@ static CHANSERV_FUNC(cmd_merge) return 0; } - if(IsProtected(channel->channel_info)) + if(IsProtected(channel->channel_info) && !IsOper(user)) { reply("CSMSG_MERGE_NODELETE"); return 0; @@ -3285,8 +3287,7 @@ static CHANSERV_FUNC(cmd_opme) return 0; } - struct devnull_class *devnull; - if(user->handle_info->devnull && (devnull = devnull_get(user->handle_info->devnull)) && (devnull->modes & DEVNULL_MODE_OPME)) + if(devnull_user_has_priv(user->handle_info, DEVNULL_PRIV_OPME)) { change.args[0].mode = MODE_CHANOP; errmsg = "CSMSG_ALREADY_OPPED"; @@ -5424,7 +5425,7 @@ static CHANSERV_FUNC(cmd_csuspend) REQUIRE_PARAMS(3); - if(IsProtected(channel->channel_info)) + if(IsProtected(channel->channel_info) && !IsOper(user)) { reply("CSMSG_SUSPEND_NODELETE", channel->name); return 0; @@ -7128,6 +7129,20 @@ static CHANSERV_FUNC(cmd_ping) return 1; } +static CHANSERV_FUNC(cmd_pong) +{ + if(channel) + { + char response[MAXLEN]; + const char *fmt = user_find_message(user, "CSMSG_PONG_RESPONSE"); + sprintf(response, "%s: %s", user->nick, fmt); + irc_privmsg(cmd->parent->bot, channel->name, response); + } + else + reply("CSMSG_PONG_RESPONSE"); + return 1; +} + static CHANSERV_FUNC(cmd_wut) { if(channel) @@ -7986,7 +8001,7 @@ chanserv_conf_read(void) str = database_get_data(conf_node, "off_channel", RECDB_QSTRING); off_channel = str ? atoi(str) : 0; - str = database_get_data(conf_node, "oper_chan", RECDB_QSTRING); + str = database_get_data(conf_node, "oper_channel", RECDB_QSTRING); if(str) { chanserv_conf.oper_channel = AddChannel(str, now, "+tinms", NULL); @@ -8961,6 +8976,7 @@ init_chanserv(const char *nick) DEFINE_COMMAND(unf, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL); DEFINE_COMMAND(ping, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL); + DEFINE_COMMAND(pong, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL); DEFINE_COMMAND(wut, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL); DEFINE_COMMAND(8ball, 2, 0, "flags", "+nolog,+toy,+acceptchan", NULL); DEFINE_COMMAND(d, 2, 0, "flags", "+nolog,+toy,+acceptchan", NULL);