Update of /cvsroot/srvx/services/src
In directory sc8-pr-cvs1:/tmp/cvs-serv18254/src
Modified Files:
opserv.c
Log Message:
do a better job at refusing to support channel criteria for alerts
add an "addalert kill" function so people can do kill alerts
Index: opserv.c
===================================================================
RCS file: /cvsroot/srvx/services/src/opserv.c,v
retrieving revision 1.295
retrieving revision 1.296
diff -C2 -r1.295 -r1.296
*** opserv.c 13 Dec 2002 23:18:10 -0000 1.295
--- opserv.c 14 Dec 2002 02:50:07 -0000 1.296
***************
*** 190,193 ****
--- 190,194 ----
#define OSMSG_NOT_IP "You must provide a valid IPv4 address."
#define OSMSG_DOMAIN_HOSTINFO "%s %lu"
+ #define OSMSG_TRACE_NO_CHANNEL "Specifying a channel criteria is not supported for that command."
#define OSMSG_BAD_ACTION "Unrecognized trace action $b%s$b."
#define OSMSG_GSYNC_RUNNING "Synchronizing glines from %s."
***************
*** 203,208 ****
#define OSMSG_ALERT_TRIGGERED "Alert $b%s$b triggered by user $b%s$b!%s@%s (%s)."
#define OSMSG_ALERT_EXISTS "An alert named $b%s$b already exists."
! #define OSMSG_NO_CHANNEL_ALERT "Alert not registered: specifying a channel is not supported."
! #define OSMSG_UNKNOWN_REACTION "Unknown reaction to alert $b%s$b."
#define OSMSG_ADDED_ALERT "Added alert named $b%s$b."
#define OSMSG_REMOVED_ALERT "Removed alert named $b%s$b."
--- 204,208 ----
#define OSMSG_ALERT_TRIGGERED "Alert $b%s$b triggered by user $b%s$b!%s@%s (%s)."
#define OSMSG_ALERT_EXISTS "An alert named $b%s$b already exists."
! #define OSMSG_UNKNOWN_REACTION "Unknown alert reaction $b%s$b."
#define OSMSG_ADDED_ALERT "Added alert named $b%s$b."
#define OSMSG_REMOVED_ALERT "Removed alert named $b%s$b."
***************
*** 332,336 ****
};
! static discrim_t opserv_discrim_create(struct userNode *user, unsigned int argc, unsigned char *argv[]);
static unsigned int opserv_discrim_search(discrim_t discrim, discrim_search_func dsf, void *data);
static int gag_helper_func(struct userNode *match, void *extra);
--- 332,336 ----
};
! static discrim_t opserv_discrim_create(struct userNode *user, unsigned int argc, unsigned char *argv[], int allow_channel);
static unsigned int opserv_discrim_search(discrim_t discrim, discrim_search_func dsf, void *data);
static int gag_helper_func(struct userNode *match, void *extra);
***************
*** 2464,2473 ****
discrim_copy = strdup(text_discrim); /* save a copy of the discrim */
wordc = split_line(discrim_copy, false, ArrayLength(wordv), wordv);
! alert->discrim = opserv_discrim_create(req, wordc, wordv);
! if (alert->discrim && alert->discrim->channel) {
! opserv_notice(req, OSMSG_NO_CHANNEL_ALERT);
! opserv_free_user_alert(alert->discrim);
! alert->discrim = NULL;
! }
if (!alert->discrim) {
free(alert->text_discrim);
--- 2464,2468 ----
discrim_copy = strdup(text_discrim); /* save a copy of the discrim */
wordc = split_line(discrim_copy, false, ArrayLength(wordv), wordv);
! alert->discrim = opserv_discrim_create(req, wordc, wordv, 0);
if (!alert->discrim) {
free(alert->text_discrim);
***************
*** 2829,2833 ****
static discrim_t
! opserv_discrim_create(struct userNode *user, unsigned int argc, unsigned char *argv[])
{
unsigned int i, j;
--- 2824,2828 ----
static discrim_t
! opserv_discrim_create(struct userNode *user, unsigned int argc, unsigned char *argv[], int allow_channel)
{
unsigned int i, j;
***************
*** 2878,2881 ****
--- 2873,2880 ----
discrim->duration = ParseInterval(argv[++i]);
} else if (irccasecmp(argv[i], "channel") == 0) {
+ if (!allow_channel) {
+ opserv_notice(user, OSMSG_TRACE_NO_CHANNEL);
+ goto fail;
+ }
i++;
for (j=0; ; j++) {
***************
*** 3257,3261 ****
das.dict = NULL;
das.source = user;
! das.discrim = opserv_discrim_create(user, argc-2, argv+2);
if (!das.discrim) return 0;
--- 3256,3260 ----
das.dict = NULL;
das.source = user;
! das.discrim = opserv_discrim_create(user, argc-2, argv+2, 1);
if (!das.discrim) return 0;
***************
*** 4005,4008 ****
--- 4004,4008 ----
opserv_define_func("ADDALERT", cmd_addalert, 800, 0);
opserv_define_func("ADDALERT NOTICE", NULL, 0, 0);
+ opserv_define_func("ADDALERT KILL", NULL, 800, 0);
opserv_define_func("ADDALERT GLINE", NULL, 900, 0);
opserv_define_func("ADDALERT KILL", NULL, 900, 0);
|