summaryrefslogtreecommitdiff
path: root/src
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-11-29 02:26:59 +0000
committertrystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-11-29 02:26:59 +0000
commitbd4d81fb5fb82bb12e4b505d6b6cf1cf0ea82c90 (patch)
tree45eff7d122681100452f0359ea28c81cdbfe47f1 /src
parent28bb054da100e0f73a5eaabfd09e1f228f592130 (diff)
BUILD : 1.7.6 (465) BUGS : 218, 235 NOTES : 1. correct the grammer in the example.conf 2. SolidIRCD cmode +S 3. NSSecureAdmins now restricts /NS SET EMAIL 4. Unreals version of SVSHOLD 5. SolidIRCD halfop support 6. /os set list
git-svn-id: svn://svn.anope.org/anope/trunk@465 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@319 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/nickserv.c5
-rw-r--r--src/operserv.c35
-rw-r--r--src/solidircd.c4
-rw-r--r--src/unreal32.c6
4 files changed, 42 insertions, 8 deletions
diff --git a/src/nickserv.c b/src/nickserv.c
index e025b8f75..d853464af 100644
--- a/src/nickserv.c
+++ b/src/nickserv.c
@@ -3010,6 +3010,11 @@ static int do_set_email(User * u, NickCore * nc, char *param)
if (!param && NSForceEmail) {
notice_lang(s_NickServ, u, NICK_SET_EMAIL_UNSET_IMPOSSIBLE);
return MOD_CONT;
+ } else if (NSSecureAdmins && u->na->nc != nc
+ && nick_is_services_admin(nc)
+ && !is_services_root(u)) {
+ notice_lang(s_NickServ, u, PERMISSION_DENIED);
+ return MOD_CONT;
} else if (param && !MailValidate(param)) {
notice_lang(s_NickServ, u, MAIL_X_INVALID, param);
return MOD_CONT;
diff --git a/src/operserv.c b/src/operserv.c
index fcc567541..900a828fb 100644
--- a/src/operserv.c
+++ b/src/operserv.c
@@ -169,6 +169,7 @@ void moduleAddOperServCmds(void) {
/* Commands for Services admins: */
c = createCommand("SET", do_set, is_services_admin,OPER_HELP_SET, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
+ c = createCommand("SET LIST", NULL, NULL,OPER_HELP_SET_LIST, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
c = createCommand("SET READONLY", NULL, NULL,OPER_HELP_SET_READONLY, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
c = createCommand("SET LOGCHAN", NULL, NULL,OPER_HELP_SET_LOGCHAN, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
c = createCommand("SET DEBUG", NULL, NULL,OPER_HELP_SET_DEBUG, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
@@ -4455,10 +4456,37 @@ static int do_set(User * u)
{
char *option = strtok(NULL, " ");
char *setting = strtok(NULL, " ");
+ int index;
- if (!option || !setting) {
+ if (!option) {
+ syntax_error(s_OperServ, u, "SET", OPER_SET_SYNTAX);
+ } else if (stricmp(option, "LIST") == 0) {
+ index =
+ (allow_ignore ? OPER_SET_LIST_OPTION_ON :
+ OPER_SET_LIST_OPTION_OFF);
+ notice_lang(s_OperServ, u, index, "IGNORE");
+ index =
+ (readonly ? OPER_SET_LIST_OPTION_ON :
+ OPER_SET_LIST_OPTION_OFF);
+ notice_lang(s_OperServ, u, index, "READONLY");
+ index =
+ (logchan ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF);
+ notice_lang(s_OperServ, u, index, "LOGCHAN");
+ index =
+ (debug ? OPER_SET_LIST_OPTION_ON : OPER_SET_LIST_OPTION_OFF);
+ notice_lang(s_OperServ, u, index, "DEBUG");
+ index =
+ (noexpire ? OPER_SET_LIST_OPTION_ON :
+ OPER_SET_LIST_OPTION_OFF);
+ notice_lang(s_OperServ, u, index, "NOEXPIRE");
+#ifdef USE_MYSQL
+ index =
+ (do_mysql ? OPER_SET_LIST_OPTION_ON :
+ OPER_SET_LIST_OPTION_OFF);
+ notice_lang(s_OperServ, u, index, "SQL");
+#endif
+ } else if (!setting) {
syntax_error(s_OperServ, u, "SET", OPER_SET_SYNTAX);
-
} else if (stricmp(option, "IGNORE") == 0) {
if (stricmp(setting, "on") == 0) {
allow_ignore = 1;
@@ -4515,11 +4543,11 @@ static int do_set(User * u)
alog("Now sending log messages to %s", LogChannel);
notice_lang(s_OperServ, u, OPER_SET_LOGCHAN_ON, LogChannel);
} else if (LogChannel && (stricmp(setting, "off") == 0)) {
+ alog("No longer sending log messages to a channel");
if (ircd->join2msg) {
anope_cmd_part(s_GlobalNoticer, LogChannel, NULL);
}
logchan = 0;
- alog("No longer sending log messages to a channel");
notice_lang(s_OperServ, u, OPER_SET_LOGCHAN_OFF);
} else {
notice_lang(s_OperServ, u, OPER_SET_LOGCHAN_ERROR);
@@ -4577,7 +4605,6 @@ static int do_set(User * u)
} else {
notice_lang(s_OperServ, u, OPER_SET_NOEXPIRE_ERROR);
}
-
} else {
notice_lang(s_OperServ, u, OPER_SET_UNKNOWN_OPTION, option);
}
diff --git a/src/solidircd.c b/src/solidircd.c
index 4dd736d28..d03d42e4d 100644
--- a/src/solidircd.c
+++ b/src/solidircd.c
@@ -60,7 +60,7 @@ IRCDVar ircd[] = {
1, /* Supports SGlines */
1, /* Supports SQlines */
1, /* Supports SZlines */
- 0, /* Supports Halfop +h */
+ 1, /* Supports Halfop +h */
3, /* Number of server args */
0, /* Join 2 Set */
0, /* Join 2 Message */
@@ -364,7 +364,7 @@ CBMode cbmodes[128] = {
{0}, /* P */
{0}, /* Q */
{CMODE_R, 0, NULL, NULL}, /* R */
- {0}, /* S */
+ {CMODE_S, 0, NULL, NULL}, /* S */
{0}, /* T */
{0}, /* U */
{0}, /* V */
diff --git a/src/unreal32.c b/src/unreal32.c
index ae06b3fb2..90915071b 100644
--- a/src/unreal32.c
+++ b/src/unreal32.c
@@ -1886,13 +1886,15 @@ int anope_event_whois(char *source, int ac, char **av)
/* SVSHOLD - set */
void anope_cmd_svshold(char *nick)
{
- /* Not supported by this IRCD */
+ send_cmd(NULL, "TKL + Q H %s %s %ld %ld :%s", nick, ServerName,
+ (long int) time(NULL) + NSReleaseTimeout,
+ (long int) time(NULL), "Being held for registered user");
}
/* SVSHOLD - release */
void anope_cmd_release_svshold(char *nick)
{
- /* Not Supported by this IRCD */
+ send_cmd(NULL, "TKL - Q * %s %s", nick, ServerName);
}
/* UNSGLINE */