summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-10-30 02:16:09 +0000
committertrystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-10-30 02:16:09 +0000
commit0038ed05f4ea53edaeabab68bafb23f908d870e4 (patch)
treea469278c2a04268f76a311a2364bcbaa3c9e0cc5
parenta5ef39373a9dc598b63c15d3842a0cdadbe90453 (diff)
BUILD : 1.7.5 (430) BUGS : 187, 201, 202 NOTES : Reorder fixes, Obsecure password for chanserv registeration (DrStein), minor tweak to hybrid support (TSL)
git-svn-id: svn://svn.anope.org/anope/trunk@430 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@285 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--Changes3
-rw-r--r--src/chanserv.c88
-rw-r--r--src/hybrid.c2
-rw-r--r--version.log6
4 files changed, 91 insertions, 8 deletions
diff --git a/Changes b/Changes
index b13d5db08..2740e0ac4 100644
--- a/Changes
+++ b/Changes
@@ -68,6 +68,9 @@ Provided by Trystan <trystan@nomadirc.net> - 2004
Provided by DrStein <gacevedo@anope.org> - 2004
10/05 A CS/NS INFO shows the expire time. [ #00]
10/05 A NS GLIST shows the expire time. [ #00]
+10/29 F ChanServ XOP reordering fix [#187]
+10/29 F ChanServ AKICK reordering fix [#201]
+10/29 F ChanServ now requires a more obscure password [#202]
10/27 F MS CHECK to look for the correct sender value. [#200]
10/21 F Updated Spanish language file. [ #00]
10/15 F More Check and trap for forbidden nicks on HS. [#183]
diff --git a/src/chanserv.c b/src/chanserv.c
index b18fac1c7..5416f60a0 100644
--- a/src/chanserv.c
+++ b/src/chanserv.c
@@ -2686,7 +2686,9 @@ static int do_register(User * u)
nc->
channelmax ? CHAN_EXCEEDED_CHANNEL_LIMIT :
CHAN_REACHED_CHANNEL_LIMIT, nc->channelmax);
-
+ } else if (stricmp(u->nick, pass) == 0
+ || (StrictPasswords && strlen(pass) < 5)) {
+ notice_lang(s_ChanServ, u, MORE_OBSCURE_PASSWORD);
} else if (!(ci = makechan(chan))) {
alog("%s: makechan() failed for REGISTER %s", s_ChanServ, chan);
notice_lang(s_ChanServ, u, CHAN_REGISTRATION_FAILED);
@@ -3761,6 +3763,7 @@ static int do_xop(User * u, char *xname, int xlev, int *xmsgs)
}
} else if (stricmp(cmd, "DEL") == 0) {
+ int deleted, a, b;
if (readonly) {
notice_lang(s_ChanServ, u, xmsgs[1]);
return MOD_CONT;
@@ -3775,7 +3778,7 @@ static int do_xop(User * u, char *xname, int xlev, int *xmsgs)
/* Special case: is it a number/list? Only do search if it isn't. */
if (isdigit(*nick) && strspn(nick, "1234567890,-") == strlen(nick)) {
- int count, deleted, last = -1, perm = 0;
+ int count, last = -1, perm = 0;
deleted =
process_numlist(nick, &count, xop_del_callback, u, ci,
&last, &perm, ulev, xlev);
@@ -3811,12 +3814,35 @@ static int do_xop(User * u, char *xname, int xlev, int *xmsgs)
access = &ci->access[i];
if (!is_servadmin && ulev <= access->level) {
+ deleted = 0;
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
} else {
notice_lang(s_ChanServ, u, xmsgs[8], access->nc->display,
ci->name);
access->nc = NULL;
access->in_use = 0;
+ deleted = 1;
+ }
+ }
+ if (deleted) {
+ /* Reordering - DrStein */
+ for (b = 0; b < ci->accesscount; b++) {
+ if (ci->access[b].in_use) {
+ for (a = 0; a < ci->accesscount; a++) {
+ if (a > b)
+ break;
+ if (!ci->access[a].in_use) {
+ ci->access[a].in_use = 1;
+ ci->access[a].level = ci->access[b].level;
+ ci->access[a].nc = ci->access[b].nc;
+ ci->access[a].last_seen =
+ ci->access[b].last_seen;
+ ci->access[b].nc = NULL;
+ ci->access[b].in_use = 0;
+ break;
+ }
+ }
+ }
}
}
} else if (stricmp(cmd, "LIST") == 0) {
@@ -4088,7 +4114,7 @@ static int do_access(User * u)
notice_lang(s_ChanServ, u, CHAN_ACCESS_ADDED, nc->display,
ci->name, access->level);
} else if (stricmp(cmd, "DEL") == 0) {
-
+ int deleted, a, b;
if (readonly) {
notice_lang(s_ChanServ, u, CHAN_ACCESS_DISABLED);
return MOD_CONT;
@@ -4101,7 +4127,7 @@ static int do_access(User * u)
/* Special case: is it a number/list? Only do search if it isn't. */
if (isdigit(*nick) && strspn(nick, "1234567890,-") == strlen(nick)) {
- int count, deleted, last = -1, perm = 0;
+ int count, last = -1, perm = 0;
deleted = process_numlist(nick, &count, access_del_callback, u,
ci, &last, &perm, get_access(u, ci));
if (!deleted) {
@@ -4139,6 +4165,7 @@ static int do_access(User * u)
}
access = &ci->access[i];
if (!is_servadmin && get_access(u, ci) <= access->level) {
+ deleted = 0;
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
} else {
notice_lang(s_ChanServ, u, CHAN_ACCESS_DELETED,
@@ -4146,6 +4173,29 @@ static int do_access(User * u)
alog("%s: %s!%s@%s (level %d) deleted access of %s (group %s) on %s", s_ChanServ, u->nick, u->username, common_get_vhost(u), get_access(u, ci), na->nick, access->nc->display, chan);
access->nc = NULL;
access->in_use = 0;
+ deleted = 1;
+ }
+ }
+
+ if (deleted) {
+ /* Reordering - DrStein */
+ for (b = 0; b < ci->accesscount; b++) {
+ if (ci->access[b].in_use) {
+ for (a = 0; a < ci->accesscount; a++) {
+ if (a > b)
+ break;
+ if (!ci->access[a].in_use) {
+ ci->access[a].in_use = 1;
+ ci->access[a].level = ci->access[b].level;
+ ci->access[a].nc = ci->access[b].nc;
+ ci->access[a].last_seen =
+ ci->access[b].last_seen;
+ ci->access[b].nc = NULL;
+ ci->access[b].in_use = 0;
+ break;
+ }
+ }
+ }
}
}
} else if (stricmp(cmd, "LIST") == 0) {
@@ -4603,6 +4653,7 @@ static int do_akick(User * u)
ci->name);
} else if (stricmp(cmd, "DEL") == 0) {
+ int deleted, a, b;
if (readonly) {
notice_lang(s_ChanServ, u, CHAN_AKICK_DISABLED);
@@ -4616,7 +4667,7 @@ static int do_akick(User * u)
/* Special case: is it a number/list? Only do search if it isn't. */
if (isdigit(*mask) && strspn(mask, "1234567890,-") == strlen(mask)) {
- int count, deleted, last = -1;
+ int count, last = -1;
deleted = process_numlist(mask, &count, akick_del_callback, u,
ci, &last);
if (!deleted) {
@@ -4654,8 +4705,33 @@ static int do_akick(User * u)
}
notice_lang(s_ChanServ, u, CHAN_AKICK_DELETED, mask, chan);
akick_del(u, akick);
- }
+ deleted = 1;
+ }
+ if (deleted) {
+ /* Reordering - DrStein */
+ for (b = 0; b < ci->akickcount; b++) {
+ if (ci->akick[b].flags & AK_USED) {
+ for (a = 1; a < ci->akickcount; a++) {
+ if (a > b)
+ break;
+ if (!(ci->akick[a].flags & AK_USED)) {
+ ci->akick[a].flags = ci->akick[b].flags;
+ if (ci->akick[b].flags & AK_ISNICK) {
+ ci->akick[a].u.nc = ci->akick[b].u.nc;
+ } else {
+ ci->akick[a].u.mask = ci->akick[b].u.mask;
+ }
+ ci->akick[a].reason = ci->akick[b].reason;
+ ci->akick[a].creator = ci->akick[b].creator;
+ ci->akick[a].addtime = ci->akick[b].addtime;
+ akick_del(u, &ci->akick[b]);
+ break;
+ }
+ }
+ }
+ }
+ }
} else if (stricmp(cmd, "LIST") == 0) {
int sent_header = 0;
diff --git a/src/hybrid.c b/src/hybrid.c
index 3945cb315..414585e18 100644
--- a/src/hybrid.c
+++ b/src/hybrid.c
@@ -45,7 +45,7 @@ IRCDVar ircd[] = {
"+io", /* Global alias mode */
"+", /* Used by BotServ Bots */
3, /* Chan Max Symbols */
- "-aiklmnpst", /* Modes to Remove */
+ "-ailmnpst", /* Modes to Remove */
"+o", /* Channel Umode used by Botserv bots */
0, /* SVSNICK */
0, /* Vhost */
diff --git a/version.log b/version.log
index 7fff9675c..fe1f9b5d1 100644
--- a/version.log
+++ b/version.log
@@ -8,10 +8,14 @@
VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="5"
-VERSION_BUILD="429"
+VERSION_BUILD="430"
# $Log$
#
+# BUILD : 1.7.5 (430)
+# BUGS : 187, 201, 202
+# NOTES : Reorder fixes, Obsecure password for chanserv registeration (DrStein), minor tweak to hybrid support (TSL)
+#
# BUILD : 1.7.5 (429)
# NOTES : Minor fix on example.conf
#