struct hs_user *huser = hs_get_user(hi, 0);
if(huser) {
- struct hs_assignment *assignment;
- struct hs_secondlevel *slfh;
struct devnull_class *devc;
- for(assignment = huser->assignments; assignment; assignment = assignment->unext) {
- slfh = assignment->secondlevel;
- if(slfh->devnull_id) {
- devc = devnull_find_id(slfh->devnull_id);
- if(!devc) {
- slfh->devnull_id = 0;
- continue;
- }
+ if(hi->devnull_id != 0) {
+ devc = devnull_find_id(huser->hi->devnull_id);
+ if(devc) {
if(DEVNULL_HAS_PRIV(devc, CHANLIMIT) && (!DEVNULL_HAS_PRIV(&th, CHANLIMIT) || th.maxchan < devc->maxchan))
th.maxchan = devc->maxchan;
if(DEVNULL_HAS_PRIV(devc, MAXSENDQ) && (!DEVNULL_HAS_PRIV(&th, MAXSENDQ) || th.maxsendq < devc->maxsendq))
if(!th.name)
th.name = devc->name;
}
+ } else {
+ struct hs_assignment *assignment;
+ struct hs_secondlevel *slfh;
+ for(assignment = huser->assignments; assignment; assignment = assignment->unext) {
+ slfh = assignment->secondlevel;
+ if(slfh->devnull_id) {
+ devc = devnull_find_id(slfh->devnull_id);
+ if(!devc) {
+ slfh->devnull_id = 0;
+ continue;
+ }
+ if(DEVNULL_HAS_PRIV(devc, CHANLIMIT) && (!DEVNULL_HAS_PRIV(&th, CHANLIMIT) || th.maxchan < devc->maxchan))
+ th.maxchan = devc->maxchan;
+ if(DEVNULL_HAS_PRIV(devc, MAXSENDQ) && (!DEVNULL_HAS_PRIV(&th, MAXSENDQ) || th.maxsendq < devc->maxsendq))
+ th.maxsendq = devc->maxsendq;
+ th.modes |= devc->modes;
+ if(!th.name)
+ th.name = devc->name;
+ }
+ }
}
}
return th;
* copyright information pertaining to changes you make to srvx.
*/
send_message_type(4, user, cmd->parent->bot, "$b"PACKAGE_STRING"$b ("CODENAME"), GIT Revision: %s, Built: "__DATE__", "__TIME__". Copyright 2000-2008 srvx Development Team.", git_version);
- send_message_type(12, user, cmd->parent->bot, "The srvx Development Team includes Paul Chang, Adrian Dewhurst, Miles Peterson, Michael Poole and others.\nThe srvx Development Team can be reached at http://sf.net/projects/srvx/ or in #srvx on irc.gamesurge.net.\nThis version has been modified by pk910 - visit #srvx @ irc.nextirc.net.\nThis version has been modified by Stricted, NurPech - visit #dev @ irc.easy-scripting.net.");
+ send_message_type(12, user, cmd->parent->bot, "The srvx Development Team includes Paul Chang, Adrian Dewhurst, Miles Peterson, Michael Poole and others.\nThe srvx Development Team can be reached at http://sf.net/projects/srvx/ or in #srvx on irc.gamesurge.net.\nThis version has been modified by pk910, Stricted, NurPech - visit #dev @ irc.nextirc.net.");
return 1;
}
#define NICKSERV_DISCRIM_FIELDS_FAKEHOST 0x10
#define NICKSERV_DISCRIM_FIELDS_WEBSITE 0x20
#define NICKSERV_DISCRIM_FIELDS_DEVNULL 0x40
+#define NICKSERV_DISCRIM_FIELDS_ID 0x80
-#define NICKSERV_DISCRIM_FIELD_COUNT 7
+#define NICKSERV_DISCRIM_FIELD_COUNT 8
struct nickserv_discrim {
unsigned int show_fields;
unsigned long lastseen;
unsigned int limit;
int min_level, max_level;
+ unsigned int min_id, max_id;
int min_karma, max_karma;
enum { SUBSET, EXACT, SUPERSET, LASTQUIT } hostmask_type;
const char *nickmask;
discrim->lastseen = ULONG_MAX;
discrim->min_karma = INT_MIN;
discrim->max_karma = INT_MAX;
+ discrim->min_id = 0;
+ discrim->max_id = INT_MAX;
+
for (i=0; i<argc; i++) {
if (i == argc - 1) {
discrim->show_fields |= NICKSERV_DISCRIM_FIELDS_SEEN;
else if(!irccasecmp(fields, "access"))
discrim->show_fields |= NICKSERV_DISCRIM_FIELDS_ACCESS;
+ else if(!irccasecmp(fields, "id"))
+ discrim->show_fields |= NICKSERV_DISCRIM_FIELDS_ID;
else if(!irccasecmp(fields, "fakehost"))
discrim->show_fields |= NICKSERV_DISCRIM_FIELDS_FAKEHOST;
else if(!irccasecmp(fields, "website") && IsBot(user))
} else {
send_message(user, nickserv, "MSG_INVALID_CRITERIA", cmp);
}
+ } else if (!irccasecmp(argv[i], "id")) {
+ const char *cmp = argv[++i];
+ if (cmp[0] == '<') {
+ if (discrim->min_id == 0) discrim->min_id = 1;
+ if (cmp[1] == '=') {
+ discrim->max_id = strtoul(cmp+2, NULL, 0);
+ } else {
+ discrim->max_id = strtoul(cmp+1, NULL, 0) - 1;
+ }
+ } else if (cmp[0] == '=') {
+ discrim->min_id = discrim->max_id = strtoul(cmp+1, NULL, 0);
+ } else if (cmp[0] == '>') {
+ if (cmp[1] == '=') {
+ discrim->min_id = strtoul(cmp+2, NULL, 0);
+ } else {
+ discrim->min_id = strtoul(cmp+1, NULL, 0) + 1;
+ }
+ } else {
+ send_message(user, nickserv, "MSG_INVALID_CRITERIA", cmp);
+ }
} else if (!irccasecmp(argv[i], "karma")) {
const char *cmp = argv[++i];
if (cmp[0] == '<') {
|| (discrim->emailmask && (!hi->email_addr || !match_ircglob(hi->email_addr, discrim->emailmask)))
|| (discrim->min_level > hi->opserv_level)
|| (discrim->max_level < hi->opserv_level)
+ || (discrim->min_id > hi->id)
+ || (discrim->max_id < hi->id)
|| (discrim->min_karma > hi->karma)
|| (discrim->max_karma < hi->karma)
) {
}
if(discrim->show_fields & NICKSERV_DISCRIM_FIELDS_ACCESS)
discrim->output_table->contents[discrim->output_table_pos][i++] = strtab(match->opserv_level);
+ if(discrim->show_fields & NICKSERV_DISCRIM_FIELDS_ID)
+ discrim->output_table->contents[discrim->output_table_pos][i++] = strtab(match->id);
if(discrim->show_fields & NICKSERV_DISCRIM_FIELDS_FAKEHOST)
discrim->output_table->contents[discrim->output_table_pos][i++] = (match->fakehost ? match->fakehost : "*");
if(discrim->show_fields & NICKSERV_DISCRIM_FIELDS_WEBSITE)
discrim->output_table->contents[0][ii++] = "Seen";
if(discrim->show_fields & NICKSERV_DISCRIM_FIELDS_ACCESS)
discrim->output_table->contents[0][ii++] = "Access";
+ if(discrim->show_fields & NICKSERV_DISCRIM_FIELDS_ID)
+ discrim->output_table->contents[0][ii++] = "ID";
if(discrim->show_fields & NICKSERV_DISCRIM_FIELDS_FAKEHOST)
discrim->output_table->contents[0][ii++] = "Fakehost";
if(discrim->show_fields & NICKSERV_DISCRIM_FIELDS_WEBSITE)