summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgeniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2005-04-07 17:45:03 +0000
committergeniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2005-04-07 17:45:03 +0000
commit4a051a7fe1367874d1dca2206ade5f6f1f7256d6 (patch)
tree6f8fd1661d62d86ba1c49e259bbd3d1be2d61702 /src
parentce2c4d02c824552076bff61daee7824c46edc46d (diff)
BUILD : 1.7.8 (657) BUGS : 346 351 341 328 345 NOTES : Added channame to XOP/ACCESS/AKICK CLEAR, added checks to /hs off, fixed guest nick to take an unused nick, added SVN revision to win32 versions, fixed /ns alist to not accept invalid access levels, improved Config script, fixed responses for /ns glist/alist -- ty qa ;)
git-svn-id: svn://svn.anope.org/anope/trunk@657 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@505 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/chanserv.c6
-rw-r--r--src/hostserv.c19
-rw-r--r--src/nickserv.c23
-rw-r--r--src/shadowircd.c11
4 files changed, 43 insertions, 16 deletions
diff --git a/src/chanserv.c b/src/chanserv.c
index d479888a8..6ee7d0056 100644
--- a/src/chanserv.c
+++ b/src/chanserv.c
@@ -3952,7 +3952,7 @@ static int do_xop(User * u, char *xname, int xlev, int *xmsgs)
}
}
- notice_lang(s_ChanServ, u, xmsgs[13]);
+ notice_lang(s_ChanServ, u, xmsgs[13], ci->name);
} else {
syntax_error(s_ChanServ, u, xname, xmsgs[0]);
}
@@ -4293,7 +4293,7 @@ static int do_access(User * u)
ci->access = NULL;
ci->accesscount = 0;
- notice_lang(s_ChanServ, u, CHAN_ACCESS_CLEAR);
+ notice_lang(s_ChanServ, u, CHAN_ACCESS_CLEAR, ci->name);
alog("%s: %s!%s@%s (level %d) cleared access list on %s",
s_ChanServ, u->nick, u->username, u->host,
get_access(u, ci), chan);
@@ -4902,7 +4902,7 @@ static int do_akick(User * u)
ci->akick = NULL;
ci->akickcount = 0;
- notice_lang(s_ChanServ, u, CHAN_AKICK_CLEAR);
+ notice_lang(s_ChanServ, u, CHAN_AKICK_CLEAR, ci->name);
} else {
syntax_error(s_ChanServ, u, "AKICK", CHAN_AKICK_SYNTAX);
diff --git a/src/hostserv.c b/src/hostserv.c
index 38ee8dea7..e6cf50f86 100644
--- a/src/hostserv.c
+++ b/src/hostserv.c
@@ -1035,8 +1035,23 @@ int do_del(User * u)
/*************************************************************************/
int do_off(User * u)
{
- /* put any generic code here... :) */
- anope_cmd_vhost_off(u);
+ NickAlias *na;
+ char *vhost;
+ char *vident = NULL;
+ if ((na = findnick(u->nick))) {
+ if (na->status & NS_IDENTIFIED) {
+ vhost = getvHost(u->nick);
+ vident = getvIdent(u->nick);
+ if (vhost == NULL && vident == NULL)
+ notice_lang(s_HostServ, u, HOST_NOT_ASSIGNED);
+ else
+ anope_cmd_vhost_off(u);
+ } else {
+ notice_lang(s_HostServ, u, HOST_ID);
+ }
+ } else {
+ notice_lang(s_HostServ, u, HOST_NOT_REGED);
+ }
return MOD_CONT;
}
diff --git a/src/nickserv.c b/src/nickserv.c
index 54629c9d7..586362c9e 100644
--- a/src/nickserv.c
+++ b/src/nickserv.c
@@ -1761,8 +1761,11 @@ static void collide(NickAlias * na, int from_timeout)
*/
if (ircd->svsnick) {
- snprintf(guestnick, sizeof(guestnick), "%s%d", NSGuestNickPrefix,
- guestnum++);
+ /* We need to make sure the guestnick is free -- heinz */
+ do {
+ snprintf(guestnick, sizeof(guestnick), "%s%d%d",
+ NSGuestNickPrefix, getrandom32(), getrandom32());
+ } while (finduser(guestnick));
notice_lang(s_NickServ, na->u, FORCENICKCHANGE_CHANGING,
guestnick);
anope_cmd_svsnick(na->nick, guestnick, time(NULL));
@@ -3777,12 +3780,15 @@ static int do_glist(User * u)
char *nick = strtok(NULL, " ");
NickAlias *na, *na2;
+ int is_servadmin = is_services_admin(u);
+ int nick_ided = nick_identified(u);
int i;
- if ((nick ? (stricmp(nick, u->nick) ? !is_services_admin(u)
- : !nick_identified(u))
- : !nick_identified(u))) {
- notice_lang(s_NickServ, u, ACCESS_DENIED);
+ if ((nick ? (stricmp(nick, u->nick) ? !is_servadmin : !nick_ided)
+ : !nick_ided)) {
+ notice_lang(s_NickServ, u,
+ (nick_ided ? ACCESS_DENIED :
+ NICK_IDENTIFY_REQUIRED), s_NickServ);
} else if ((!nick ? !(na = u->na) : !(na = findnick(nick)))) {
notice_lang(s_NickServ, u,
(!nick ? NICK_NOT_REGISTERED : NICK_X_NOT_REGISTERED),
@@ -3879,11 +3885,14 @@ static int do_alist(User * u)
}
if (!nick_identified(u)) {
- notice_lang(s_NickServ, u, ACCESS_DENIED);
+ notice_lang(s_NickServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ);
} else if (is_servadmin && nick && !na) {
notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick);
} else if (na->status & NS_VERBOTEN) {
notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick);
+ } else if (min_level <= ACCESS_INVALID || min_level >= ACCESS_FOUNDER) {
+ notice_lang(s_NickServ, u, CHAN_ACCESS_LEVEL_RANGE,
+ ACCESS_INVALID + 1, ACCESS_FOUNDER - 1);
} else {
int i, level;
int chan_count = 0;
diff --git a/src/shadowircd.c b/src/shadowircd.c
index 2e4dcd239..c71381782 100644
--- a/src/shadowircd.c
+++ b/src/shadowircd.c
@@ -519,7 +519,8 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
ud = find_uid(source);
ud2 = find_uid(dest);
- send_cmd((ud ? ud->uid : source), "PRIVMSG %s :%s", ud2->uid, buf);
+ send_cmd((ud ? ud->uid : source), "PRIVMSG %s :%s",
+ (ud2 ? ud2->uid : dest), buf);
}
void anope_cmd_privmsg2(char *source, char *dest, char *msg)
@@ -529,7 +530,8 @@ void anope_cmd_privmsg2(char *source, char *dest, char *msg)
ud = find_uid(source);
ud2 = find_uid(dest);
- send_cmd((ud ? ud->uid : source), "PRIVMSG %s :%s", ud2->uid, msg);
+ send_cmd((ud ? ud->uid : source), "PRIVMSG %s :%s",
+ (ud2 ? ud2->uid : dest), msg);
}
void anope_cmd_serv_notice(char *source, char *dest, char *msg)
@@ -772,6 +774,7 @@ void moduleAddIRCDMsgs(void)
m = createMessage("JOIN", anope_event_join); addCoreMessage(IRCD,m);
m = createMessage("KICK", anope_event_kick); addCoreMessage(IRCD,m);
m = createMessage("KILL", anope_event_kill); addCoreMessage(IRCD,m);
+ m = createMessage("SVSKILL", anope_event_kill); addCoreMessage(IRCD,m);
m = createMessage("MODE", anope_event_mode); addCoreMessage(IRCD,m);
m = createMessage("TMODE", anope_event_tmode); addCoreMessage(IRCD,m);
m = createMessage("MOTD", anope_event_motd); addCoreMessage(IRCD,m);
@@ -865,7 +868,7 @@ void anope_cmd_topic(char *whosets, char *chan, char *whosetit,
void anope_cmd_vhost_off(User * u)
{
- send_cmd(NULL, "MODE %s -v", u->uid);
+ send_cmd(NULL, "MODE %s -v", (u->uid ? u->uid : u->nick));
}
void anope_cmd_vhost_on(char *nick, char *vIdent, char *vhost)
@@ -1604,7 +1607,7 @@ int anope_event_mode(char *source, int ac, char **av)
u = find_byuid(source);
u2 = find_byuid(av[0]);
av[0] = u2->nick;
- do_umode((u ? u->nick : source), ac, av);
+ do_umode2((u ? u->nick : source), ac, av);
}
return MOD_CONT;
}