mirror of
https://github.com/anope/anope.git
synced 2026-07-06 13:33:13 +02:00
BUILD : 1.7.8 (593) BUGS : 307 NOTES : Fixed admin/owner mode handling
git-svn-id: svn://svn.anope.org/anope/trunk@593 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@442 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
parent
bfa12b9fe4
commit
30f8519717
@@ -5,6 +5,7 @@ Provided by Anope Dev. <dev@anope.org> - 2005
|
||||
02/13 A Internal Event support, see EVENTS in the doc folder for help [ #00]
|
||||
02/05 A Support for Unreal 3.2 +I channel mode. [ #00]
|
||||
02/03 A Merged anope-win32 branch into the main, now Win32 ready. [ #00]
|
||||
03/03 F ircd admin/ower mode handling. [#307]
|
||||
03/02 F Fixed LogUser message, normalizes the "realname" on nick change. [#306]
|
||||
03/02 F ircd protocol support for owner and admin taken from proto. files.[ #00]
|
||||
03/02 F /ns alist output. [#288]
|
||||
|
||||
@@ -678,6 +678,7 @@ E char *myStrGetOnlyToken(const char *str, const char dilim,
|
||||
E char *myStrSubString(const char *src, int start, int end);
|
||||
E char *myStrGetTokenRemainder(const char *str, const char dilim,
|
||||
int token_number);
|
||||
E char *stripModePrefix(const char *str);
|
||||
E int myNumToken(const char *str, const char dilim);
|
||||
E void doCleanBuffer(char *str);
|
||||
E void EnforceQlinedNick(char *nick, char *killer);
|
||||
|
||||
+21
-14
@@ -1413,6 +1413,7 @@ int check_valid_admin(User * user, Channel * chan, int servermode)
|
||||
|
||||
int check_valid_op(User * user, Channel * chan, int servermode)
|
||||
{
|
||||
char *tmp;
|
||||
if (!chan || !chan->ci)
|
||||
return 1;
|
||||
|
||||
@@ -1425,25 +1426,29 @@ int check_valid_op(User * user, Channel * chan, int servermode)
|
||||
if (ircd->halfop) {
|
||||
if (ircd->owner && ircd->protect) {
|
||||
if (check_access(user, chan->ci, CA_AUTOHALFOP)) {
|
||||
tmp = stripModePrefix(ircd->ownerunset);
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"-%so%s %s %s %s", ++ircd->adminunset,
|
||||
++ircd->ownerunset, user->nick,
|
||||
"%so%s %s %s %s", ircd->adminunset,
|
||||
tmp, user->nick,
|
||||
user->nick, user->nick);
|
||||
free(tmp);
|
||||
} else {
|
||||
tmp = stripModePrefix(ircd->ownerunset);
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"-%sho%s %s %s %s %s",
|
||||
++ircd->adminunset, ++ircd->ownerunset,
|
||||
"%sho%s %s %s %s %s",
|
||||
ircd->adminunset, tmp,
|
||||
user->nick, user->nick, user->nick,
|
||||
user->nick);
|
||||
free(tmp);
|
||||
}
|
||||
} else if (!ircd->owner && ircd->protect) {
|
||||
if (check_access(user, chan->ci, CA_AUTOHALFOP)) {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"-%so %s %s", ++ircd->adminunset,
|
||||
"%so %s %s", ircd->adminunset,
|
||||
user->nick, user->nick);
|
||||
} else {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"-%soh %s %s %s", ++ircd->adminunset,
|
||||
"%soh %s %s %s", ircd->adminunset,
|
||||
user->nick, user->nick, user->nick);
|
||||
}
|
||||
} else {
|
||||
@@ -1465,10 +1470,12 @@ int check_valid_op(User * user, Channel * chan, int servermode)
|
||||
if (check_access(user, chan->ci, CA_AUTODEOP)) {
|
||||
if (ircd->halfop) {
|
||||
if (ircd->owner && ircd->protect) {
|
||||
tmp = stripModePrefix(ircd->ownerunset);
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name,
|
||||
"-%sho%s %s %s %s %s", ++ircd->adminunset,
|
||||
++ircd->ownerunset, user->nick, user->nick,
|
||||
"%sho%s %s %s %s %s", ircd->adminunset,
|
||||
tmp, user->nick, user->nick,
|
||||
user->nick, user->nick);
|
||||
free(tmp);
|
||||
} else {
|
||||
anope_cmd_mode(whosends(chan->ci), chan->name, "-ho %s %s",
|
||||
user->nick, user->nick);
|
||||
@@ -6093,13 +6100,13 @@ static int do_clear(User * u)
|
||||
if (!chan_has_user_status(c, cu->user, CUS_OWNER)) {
|
||||
continue;
|
||||
} else {
|
||||
snprintf(tmp, BUFSIZE, "-%so",
|
||||
++ircd->ownerunset);
|
||||
snprintf(tmp, BUFSIZE, "%so",
|
||||
ircd->ownerunset);
|
||||
av[1] = sstrdup(tmp);
|
||||
|
||||
}
|
||||
} else {
|
||||
snprintf(tmp, BUFSIZE, "-%so", ++ircd->adminunset);
|
||||
snprintf(tmp, BUFSIZE, "%so", ircd->adminunset);
|
||||
av[1] = sstrdup(tmp);
|
||||
}
|
||||
} else {
|
||||
@@ -6120,12 +6127,12 @@ static int do_clear(User * u)
|
||||
if (!chan_has_user_status(c, cu->user, CUS_OWNER)) {
|
||||
continue;
|
||||
} else {
|
||||
snprintf(tmp, BUFSIZE, "-%so",
|
||||
++ircd->ownerunset);
|
||||
snprintf(tmp, BUFSIZE, "%so",
|
||||
ircd->ownerunset);
|
||||
av[1] = sstrdup(tmp);
|
||||
}
|
||||
} else {
|
||||
snprintf(tmp, BUFSIZE, "-%so", ++ircd->adminunset);
|
||||
snprintf(tmp, BUFSIZE, "%so", ircd->adminunset);
|
||||
av[1] = sstrdup(tmp);
|
||||
}
|
||||
} else {
|
||||
|
||||
+12
@@ -1135,4 +1135,16 @@ char *str_signed(unsigned char *str)
|
||||
return nstr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Strip the mode prefix from the given string.
|
||||
* Useful for using the modes stored in things like ircd->ownerset etc..
|
||||
**/
|
||||
|
||||
char *stripModePrefix(const char *str) {
|
||||
if(str) {
|
||||
return strdup(str+1);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
||||
+5
-1
@@ -8,10 +8,14 @@
|
||||
VERSION_MAJOR="1"
|
||||
VERSION_MINOR="7"
|
||||
VERSION_PATCH="8"
|
||||
VERSION_BUILD="591"
|
||||
VERSION_BUILD="593"
|
||||
|
||||
# $Log$
|
||||
#
|
||||
# BUILD : 1.7.8 (593)
|
||||
# BUGS : 307
|
||||
# NOTES : Fixed admin/owner mode handling
|
||||
#
|
||||
# BUILD : 1.7.8 (591)
|
||||
# BUGS : 306
|
||||
# NOTES : Fixed LogUser message, normalizes the "realname" on nick change.
|
||||
|
||||
Reference in New Issue
Block a user