mirror of
https://github.com/anope/anope.git
synced 2026-07-06 13:13:12 +02:00
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
This commit is contained in:
parent
a5ef39373a
commit
0038ed05f4
@@ -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]
|
||||
|
||||
+81
-5
@@ -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;
|
||||
|
||||
|
||||
+1
-1
@@ -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 */
|
||||
|
||||
+5
-1
@@ -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
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user