summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Burchell w00t@inspircd.org <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>2008-10-02 16:03:16 +0000
committerRobin Burchell w00t@inspircd.org <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>2008-10-02 16:03:16 +0000
commite5051e4aa5cfc9e80ac965a6a82e4cab8d17387c (patch)
tree0ccaead6e96584ebc2376604e5ca5c34c11b12b1
parentb7ed70140d6e755b49cdd3c4b9d85ec6abf30cd7 (diff)
Merge commit 'cbx/anopeng-uid' into anopeng-uid
Conflicts: include/extern.h include/services.h src/protocol/bahamut.c src/protocol/inspircd11.c git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1320 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--Changes1
-rw-r--r--docs/NEWS3
-rw-r--r--include/extern.h68
-rw-r--r--include/services.h16
-rw-r--r--src/actions.c2
-rw-r--r--src/botserv.c2
-rw-r--r--src/channels.c2
-rw-r--r--src/chanserv.c12
-rw-r--r--src/core/ns_register.c21
-rw-r--r--src/core/ns_saset.c6
-rw-r--r--src/core/ns_set.c4
-rw-r--r--src/ircd.c15
-rw-r--r--src/messages.c6
-rw-r--r--src/mysql.c4
-rw-r--r--src/nickserv.c41
-rw-r--r--src/protocol/bahamut.c169
-rw-r--r--src/protocol/bahamut.h2
-rw-r--r--src/protocol/charybdis.c199
-rw-r--r--src/protocol/inspircd11.c113
-rwxr-xr-xsrc/protocol/inspircd11.h14
-rw-r--r--src/protocol/ratbox.c154
-rw-r--r--src/protocol/ratbox.h6
-rw-r--r--src/protocol/unreal32.c190
-rw-r--r--src/protocol/unreal32.h2
-rw-r--r--src/tools/db-merger.c14
-rw-r--r--version.log6
26 files changed, 309 insertions, 763 deletions
diff --git a/Changes b/Changes
index 8ad4cec58..8199984b6 100644
--- a/Changes
+++ b/Changes
@@ -11,6 +11,7 @@ Anope Version S V N
09/30 F Fixed OS IGNORE behaviour. [#941]
09/30 F Fixed error in the SASET help. [#950]
10/01 F Fixed an error in the OS IGNORE documentation. [#948]
+10/01 F Fixed DB routines not storing nick passwords properly. [#940]
Provided by Robin Burchell <w00t@inspircd.org> - 2008
09/22 F Enabled UMODE functionality for InspIRCd 1.1 [ #00]
diff --git a/docs/NEWS b/docs/NEWS
index 12de6a16f..f8e0c85a6 100644
--- a/docs/NEWS
+++ b/docs/NEWS
@@ -41,6 +41,9 @@ Highlighted News in Anope 1.7 (and soon 1.8)
* Removed proxy detector (see docs/PROXY).
* Fixed various exploits and vulnerabilities.
* Fixed various language typos and inconsistencies.
+ * Fixed a bug in the database system causing nickserv passwords
+ to be saved incorrectly. Note that this breaks backwards
+ compatibility on nick.db !!!
Highlighted News in Anope 1.6
=============================
diff --git a/include/extern.h b/include/extern.h
index 9fd206177..945ca249e 100644
--- a/include/extern.h
+++ b/include/extern.h
@@ -1176,74 +1176,6 @@ E void anope_cmd_svswatch(const char *sender, const char *nick, const char *parm
E void anope_SendCTCP(const char *source, const char *dest, const char *fmt, ...); /* CTCP */
E void anope_SendNumeric(const char *, int, const char *, const char *, ...) FORMAT(printf, 4, 5); /* Numerics */
-EI int anope_event_482(const char *source, int ac, const char **av);
-EI int anope_event_436(const char *source, int ac, const char **av);
-EI int anope_event_away(const char *source, int ac, const char **av);
-EI int anope_event_ping(const char *source, int ac, const char **av);
-EI int anope_event_motd(const char *source, int ac, const char **av);
-EI int anope_event_join(const char *source, int ac, const char **av);
-EI int anope_event_kick(const char *source, int ac, const char **av);
-EI int anope_event_kill(const char *source, int ac, const char **av);
-EI int anope_event_mode(const char *source, int ac, const char **av);
-EI int anope_event_tmode(const char *source, int ac, const char **av);
-EI int anope_event_quit(const char *source, int ac, const char **av);
-EI int anope_event_squit(const char *source, int ac, const char **av);
-EI int anope_event_topic(const char *source, int ac, const char **av);
-EI int anope_event_whois(const char *source, int ac, const char **av);
-EI int anope_event_part(const char *source, int ac, const char **av);
-EI int anope_event_server(const char *source, int ac, const char **av);
-EI int anope_event_sid(const char *source, int ac, const char **av);
-EI int anope_event_nick(const char *source, int ac, const char **av);
-EI int anope_event_bmask(const char *source, int ac, const char **av);
-EI int anope_event_gnotice(const char *source, int ac, const char **av);
-EI int anope_event_privmsg(const char *source, int ac, const char **av);
-EI int anope_event_capab(const char *source, int ac, const char **av);
-EI int anope_event_sjoin(const char *source, int ac, const char **av);
-EI int anope_event_cs(const char *source, int ac, const char **av);
-EI int anope_event_hs(const char *source, int ac, const char **av);
-EI int anope_event_ms(const char *source, int ac, const char **av);
-EI int anope_event_ns(const char *source, int ac, const char **av);
-EI int anope_event_os(const char *source, int ac, const char **av);
-EI int anope_event_vs(const char *source, int ac, const char **av);
-EI int anope_event_svinfo(const char *source, int ac, const char **av);
-EI int anope_event_chghost(const char *source, int ac, const char **av);
-EI int anope_event_sethost(const char *source, int ac, const char **av);
-EI int anope_event_chgident(const char *source, int ac, const char **av);
-EI int anope_event_setident(const char *source, int ac, const char **av);
-EI int anope_event_chgname(const char *source, int ac, const char **av);
-EI int anope_event_setname(const char *source, int ac, const char **av);
-EI int anope_event_svsinfo(const char *source, int ac, const char **av);
-EI int anope_event_snick(const char *source, int ac, const char **av);
-EI int anope_event_vhost(const char *source, int ac, const char **av);
-EI int anope_event_tkl(const char *source, int ac, const char **av);
-EI int anope_event_eos(const char *source, int ac, const char **av);
-EI int anope_event_eob(const char *source, int ac, const char **av);
-EI int anope_event_pass(const char *source, int ac, const char **av);
-EI int anope_event_netinfo(const char *source, int ac, const char **av);
-EI int anope_event_error(const char *source, int ac, const char **av);
-EI int anope_event_eb(const char *source, int ac, const char **av);
-EI int anope_event_netctrl(const char *source, int ac, const char **av);
-EI int anope_event_notice(const char *source, int ac, const char **av);
-EI int anope_event_snotice(const char *source, int ac, const char **av);
-EI int anope_event_sqline(const char *source, int ac, const char **av);
-EI int anope_event_smo(const char *source, int ac, const char **av);
-EI int anope_event_myid(const char *source, int ac, const char **av);
-EI int anope_event_vctrl(const char *source, int ac, const char **av);
-EI int anope_event_tctrl(const char *source, int ac, const char **av);
-EI int anope_event_snetinfo(const char *source, int ac, const char **av);
-EI int anope_event_umode2(const char *source, int ac, const char **av);
-EI int anope_event_globops(const char *source, int ac, const char **av);
-EI int anope_event_swhois(const char *source, int ac, const char **av);
-EI int anope_event_burst(const char *source, int ac, const char **av);
-EI int anope_event_luserslock(const char *source, int ac, const char **av);
-EI int anope_event_admin(const char *source, int ac, const char **av);
-EI int anope_event_credits(const char *source, int ac, const char **av);
-EI int anope_event_rehash(const char *source, int ac, const char **av);
-EI int anope_event_sdesc(const char *source, int ac, const char **av);
-EI int anope_event_netglobal(const char *source, int ac, const char **av);
-EI int anope_event_invite(const char *source, int ac, const char **av);
-E int anope_event_null(const char *source, int ac, const char **av);
-
E void anope_ProcessUsermodes(User * user, int ac, const char **av);
E void anope_SendSVID(const char *nick, time_t ts);
E void anope_SendSVID2(User *u, const char *ts);
diff --git a/include/services.h b/include/services.h
index 765c7eb74..6abfcf6dc 100644
--- a/include/services.h
+++ b/include/services.h
@@ -435,8 +435,8 @@ typedef struct {
#define CHAN_VERSION 16
#define EXCEPTION_VERSION 9
#define NEWS_VERSION 9
-#define NICK_VERSION 13
-#define PRE_NICK_VERSION 1
+#define NICK_VERSION 14
+#define PRE_NICK_VERSION 2
#define OPER_VERSION 13
#define HELP_VERSION 1
#define HOST_VERSION 3
@@ -486,7 +486,7 @@ struct nickrequest_ {
NickRequest *next, *prev;
char *nick;
char *passcode;
- char *password;
+ char password[PASSMAX];
char *email;
time_t requested;
time_t lastmail; /* Unsaved */
@@ -511,7 +511,7 @@ struct nickcore_ {
NickCore *next, *prev;
char *display; /* How the nick is displayed */
- char *pass; /* Password of the nicks */
+ char pass[PASSMAX]; /* Password of the nicks */
char *email; /* E-mail associated to the nick */
char *greet; /* Greet associated to the nick */
uint32 icq; /* ICQ # associated to the nick */
@@ -1246,9 +1246,9 @@ class IRCDProto {
virtual void SendMessage(BotInfo *bi, const char *dest, const char *buf)
{
if (NSDefFlags & NI_MSG)
- cmd_privmsg(bi, dest, buf);
+ SendPrivmsg(bi, dest, buf);
else
- cmd_notice(bi, dest, buf);
+ SendNotice(bi, dest, buf);
}
virtual void SendNotice(BotInfo *bi, const char *dest, const char *msg)
{
@@ -1361,9 +1361,9 @@ class IRCDProto {
}
};
-class IRCdProtoTS6 : public IRCdProto
+class IRCDTS6Proto : public IRCDProto
{
-}
+};
/*************************************************************************/
diff --git a/src/actions.c b/src/actions.c
index 08db9eb3c..b3387b2af 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -188,7 +188,7 @@ void common_unban(ChannelInfo * ci, char *nick)
else
av[2] = ban->mask;
- do_cmode(whosends(ci), ac, av);
+ do_cmode(whosends(ci)->nick, ac, av);
}
}
}
diff --git a/src/botserv.c b/src/botserv.c
index 3c3c90497..5fe3058a9 100644
--- a/src/botserv.c
+++ b/src/botserv.c
@@ -738,7 +738,7 @@ void bot_join(ChannelInfo * ci)
else
av[2] = ban->mask;
- do_cmode(whosends(ci), ac, av);
+ do_cmode(whosends(ci)->nick, ac, av);
}
}
}
diff --git a/src/channels.c b/src/channels.c
index 7a72a29c0..ce4dd5ccd 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -1548,7 +1548,7 @@ void chan_adduser2(User * user, Channel * c)
/* Added channelname to entrymsg - 30.03.2004, Certus */
/* Also, don't send the entrymsg when bursting -GD */
if (c->ci && c->ci->entry_message && is_sync(user->server))
- notice_user(whosends(c->ci), user, "[%s] %s", c->name,
+ notice_user(whosends(c->ci)->nick, user, "[%s] %s", c->name,
c->ci->entry_message);
}
diff --git a/src/chanserv.c b/src/chanserv.c
index e6360e20e..b325bf6a6 100644
--- a/src/chanserv.c
+++ b/src/chanserv.c
@@ -1377,7 +1377,7 @@ int check_kick(User * user, const char *chan, time_t chants)
ac = 3;
}
- do_cmode(whosends(ci), ac, av);
+ do_cmode(whosends(ci)->nick, ac, av);
}
anope_SendMode(whosends(ci), chan, "+b %s", mask);
@@ -1432,7 +1432,7 @@ void restore_topic(const char *chan)
* should be updated with a TOPIC from the IRCd soon. -GD
*/
ci->last_topic = NULL;
- strscpy(ci->last_topic_setter, whosends(ci), NICKMAX);
+ strscpy(ci->last_topic_setter, whosends(ci)->nick, NICKMAX);
ci->last_topic_time = time(NULL);
return;
}
@@ -1444,7 +1444,7 @@ void restore_topic(const char *chan)
c->topic_time = ci->last_topic_time;
} else {
c->topic = NULL;
- strscpy(c->topic_setter, whosends(ci), NICKMAX);
+ strscpy(c->topic_setter, whosends(ci)->nick, NICKMAX);
}
if (ircd->join2set) {
if (whosends(ci) == s_ChanServ) {
@@ -1452,7 +1452,7 @@ void restore_topic(const char *chan)
anope_SendMode(NULL, chan, "+o %s", s_ChanServ);
}
}
- anope_cmd_topic(whosends(ci), c->name, c->topic_setter,
+ anope_cmd_topic(whosends(ci)->nick, c->name, c->topic_setter,
c->topic ? c->topic : "", c->topic_time);
if (ircd->join2set) {
if (whosends(ci) == s_ChanServ) {
@@ -1489,7 +1489,7 @@ int check_topiclock(Channel * c, time_t topic_time)
c->topic = NULL;
/* Bot assigned & Symbiosis ON?, the bot will set the topic - doc */
/* Altough whosends() also checks for BSMinUsers -GD */
- strscpy(c->topic_setter, whosends(ci), NICKMAX);
+ strscpy(c->topic_setter, whosends(ci)->nick, NICKMAX);
}
if (ircd->topictsforward) {
@@ -1515,7 +1515,7 @@ int check_topiclock(Channel * c, time_t topic_time)
}
}
- anope_cmd_topic(whosends(ci), c->name, c->topic_setter,
+ anope_cmd_topic(whosends(ci)->nick, c->name, c->topic_setter,
c->topic ? c->topic : "", c->topic_time);
if (ircd->join2set) {
diff --git a/src/core/ns_register.c b/src/core/ns_register.c
index 7f79b2a3d..8908a1917 100644
--- a/src/core/ns_register.c
+++ b/src/core/ns_register.c
@@ -198,7 +198,11 @@ int do_register(User * u)
} passcode[idx] = '\0';
nr = makerequest(u->nick);
nr->passcode = sstrdup(passcode);
- nr->password = sstrdup(pass);
+ strscpy(nr->password, pass, PASSMAX);
+ memset(pass, 0, strlen(pass));
+ /* We are paranoid about keeping a plain text pass in memory, yet we would write
+ * it to a database.. - Viper */
+ enc_encrypt_in_place(nr->password, PASSMAX);
if (email) {
nr->email = sstrdup(email);
}
@@ -238,7 +242,6 @@ int do_confirm(User * u)
NickRequest *nr = NULL;
NickAlias *na = NULL;
char *passcode = strtok(NULL, " ");
- char *pass = NULL;
char *email = NULL;
int forced = 0;
User *utmp = NULL;
@@ -255,7 +258,7 @@ int do_confirm(User * u)
if (!nr) {
if (is_services_admin(u)) {
-/* If an admin, thier nick is obviously already regged, so look at the passcode to get the nick
+/* If an admin, their nick is obviously already regged, so look at the passcode to get the nick
of the user they are trying to validate, and push that user through regardless of passcode */
nr = findrequestnick(passcode);
if (nr) {
@@ -295,7 +298,6 @@ int do_confirm(User * u)
notice_lang(s_NickServ, u, NICK_REGISTRATION_FAILED);
return MOD_CONT;
}
- pass = sstrdup(nr->password);
if (nr->email) {
email = sstrdup(nr->email);
@@ -307,16 +309,7 @@ int do_confirm(User * u)
char tsbuf[16];
char tmp_pass[PASSMAX];
- len = strlen(pass);
- na->nc->pass = (char *)smalloc(PASSMAX);
- if (enc_encrypt(pass, len, na->nc->pass, PASSMAX - 1) < 0) {
- memset(pass, 0, strlen(pass));
- alog("%s: Failed to encrypt password for %s (register)",
- s_NickServ, nr->nick);
- notice_lang(s_NickServ, u, NICK_REGISTRATION_FAILED);
- return MOD_CONT;
- }
- memset(pass, 0, strlen(pass));
+ memcpy(na->nc->pass, nr->password, PASSMAX);
na->status = (int16) (NS_IDENTIFIED | NS_RECOGNIZED);
/* na->nc->flags |= NI_ENCRYPTEDPW; */
diff --git a/src/core/ns_saset.c b/src/core/ns_saset.c
index 7261a55ce..cfa6bd0a4 100644
--- a/src/core/ns_saset.c
+++ b/src/core/ns_saset.c
@@ -240,10 +240,6 @@ int do_saset_password(User * u, NickCore * nc, char *param)
return MOD_CONT;
}
- if (nc->pass)
- free(nc->pass);
-
- nc->pass = (char *)smalloc(PASSMAX);
if (enc_encrypt(param, len, nc->pass, PASSMAX - 1) < 0) {
memset(param, 0, len);
alog("%s: Failed to encrypt password for %s (set)", s_NickServ,
@@ -253,7 +249,7 @@ int do_saset_password(User * u, NickCore * nc, char *param)
return MOD_CONT;
}
memset(param, 0, len);
-
+
if(enc_decrypt(nc->pass,tmp_pass,PASSMAX - 1)==1) {
notice_lang(s_NickServ, u, NICK_SASET_PASSWORD_CHANGED_TO, nc->display,
tmp_pass);
diff --git a/src/core/ns_set.c b/src/core/ns_set.c
index a5a9b71b3..61b28c99d 100644
--- a/src/core/ns_set.c
+++ b/src/core/ns_set.c
@@ -213,10 +213,6 @@ int do_set_password(User * u, NickCore * nc, char *param)
return MOD_CONT;
}
- if (nc->pass)
- free(nc->pass);
-
- nc->pass = (char *)smalloc(PASSMAX);
if (enc_encrypt(param, len, nc->pass, PASSMAX - 1) < 0) {
memset(param, 0, len);
alog("%s: Failed to encrypt password for %s (set)", s_NickServ,
diff --git a/src/ircd.c b/src/ircd.c
index 273c7922a..8b7bbae13 100644
--- a/src/ircd.c
+++ b/src/ircd.c
@@ -55,7 +55,8 @@ void anope_SendAkillDel(const char *user, const char *host)
void anope_cmd_topic(const char *whosets, const char *chan, const char *whosetit, const char *topic, time_t when)
{
- ircdproto->cmd_topic(whosets, chan, whosetit, topic, when);
+ BotInfo *bi = findbot(whosets);
+ ircdproto->SendTopic(bi, chan, whosetit, topic, when);
}
void anope_SendVhostDel(User *u)
@@ -140,12 +141,14 @@ void anope_cmd_message(const char *source, const char *dest, const char *fmt, ..
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
- ircdproto->cmd_message(source, dest, buf);
+ BotInfo *bi = findbot(source);
+ ircdproto->SendMessage(bi, dest, buf);
}
void anope_cmd_notice(const char *source, const char *dest, const char *msg)
{
- ircdproto->cmd_notice(source, dest, msg);
+ BotInfo *bi = findbot(source);
+ ircdproto->SendNotice(bi, dest, msg);
}
void anope_cmd_action(const char *source, const char *dest, const char *fmt, ...)
@@ -160,7 +163,8 @@ void anope_cmd_action(const char *source, const char *dest, const char *fmt, ...
else return;
if (!*buf) return;
snprintf(actionbuf, BUFSIZE - 1, "%cACTION %s%c", 1, buf, 1);
- ircdproto->cmd_privmsg(source, dest, actionbuf);
+ BotInfo *bi = findbot(source);
+ ircdproto->SendPrivmsg(bi, dest, actionbuf);
}
void anope_cmd_privmsg(const char *source, const char *dest, const char *fmt, ...)
@@ -172,7 +176,8 @@ void anope_cmd_privmsg(const char *source, const char *dest, const char *fmt, ..
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
- ircdproto->cmd_privmsg(source, dest, buf);
+ BotInfo *bi = findbot(source);
+ ircdproto->SendPrivmsg(bi, dest, buf);
}
void anope_SendGlobalNotice(const char *source, const char *dest, const char *msg)
diff --git a/src/messages.c b/src/messages.c
index a8ceb408b..e6033627e 100644
--- a/src/messages.c
+++ b/src/messages.c
@@ -357,12 +357,6 @@ int m_whois(const char *source, const char *who)
return MOD_CONT;
}
-/* NULL route messages */
-int anope_event_null(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
/* *INDENT-OFF* */
void moduleAddMsgs(void) {
Message *m;
diff --git a/src/mysql.c b/src/mysql.c
index 22fa520da..ed0422781 100644
--- a/src/mysql.c
+++ b/src/mysql.c
@@ -1669,7 +1669,7 @@ int db_mysql_load_ns_req_dbase(void)
nr->nick = sstrdup(mysql_row[0]);
nr->passcode = sstrdup(mysql_row[1]);
- nr->password = sstrdup(mysql_row[2]);
+ snprintf(nr->password, PASSMAX, "%s", mysql_row[2]);
nr->email = sstrdup(mysql_row[3]);
nr->requested = strtol(mysql_row[4], (char **) NULL, 10);
@@ -1712,7 +1712,7 @@ int db_mysql_load_ns_dbase(void)
/* Display, password, email, ICQ, URL, flags */
nc->display = sstrdup(mysql_row[0]);
- nc->pass = sstrdup(mysql_row[1]);
+ snprintf(nc->pass, PASSMAX, "%s", mysql_row[1]);
nc->email = sstrdup(mysql_row[2]);
nc->icq = strtol(mysql_row[3], (char **) NULL, 10);
nc->url = sstrdup(mysql_row[4]);
diff --git a/src/nickserv.c b/src/nickserv.c
index 94db5aa3c..9ffea4a2f 100644
--- a/src/nickserv.c
+++ b/src/nickserv.c
@@ -276,9 +276,9 @@ void load_old_ns_dbase(void)
/* We grabbed info before; fill the appropriate fields now */
if (*bufp)
- nc->pass = sstrdup(bufp);
+ memcpy(nc->pass, bufp, PASSMAX);
else
- nc->pass = NULL; /* Which may be the case for forbidden nicks .. */
+ memset(nc->pass, 0, PASSMAX); /* Which may be the case for forbidden nicks .. */
nc->email = email;
nc->greet = greet;
@@ -419,7 +419,8 @@ void load_ns_req_db(void)
int i, c, ver;
NickRequest *nr;
uint32 tmp32;
- int failed = 0;
+ int failed = 0, len;
+ char *pass;
if (!(f = open_db(s_NickServ, PreNickDBName, "r", PRE_NICK_VERSION)))
return;
@@ -431,7 +432,14 @@ void load_ns_req_db(void)
nr = (NickRequest *)scalloc(1, sizeof(NickRequest));
SAFE(read_string(&nr->nick, f));
SAFE(read_string(&nr->passcode, f));
- SAFE(read_string(&nr->password, f));
+ if (ver < 2) {
+ SAFE(read_string(&pass, f));
+ len = strlen(pass);
+ enc_encrypt(pass, len, nr->password, PASSMAX);
+ memset(pass, 0, len);
+ free(pass);
+ } else
+ SAFE(read_buffer(nr->password, f));
SAFE(read_string(&nr->email, f));
SAFE(read_int32(&tmp32, f));
nr->requested = tmp32;
@@ -447,10 +455,10 @@ void load_ns_dbase(void)
int ver, i, j, c;
NickAlias *na, **nalast, *naprev;
NickCore *nc, **nclast, *ncprev;
- int failed = 0;
+ int failed = 0, len;
uint16 tmp16;
uint32 tmp32;
- char *s;
+ char *s, *pass;
if (!(f = open_db(s_NickServ, NickDBName, "r", NICK_VERSION)))
return;
@@ -481,7 +489,18 @@ void load_ns_dbase(void)
slist_init(&nc->aliases);
SAFE(read_string(&nc->display, f));
- SAFE(read_string(&nc->pass, f));
+ if (ver < 14) {
+ SAFE(read_string(&pass, f));
+ if (pass) {
+ len = strlen(pass);
+ enc_encrypt(pass, len, nc->pass, PASSMAX);
+ memset(pass, 0, len);
+ free(pass);
+ } else
+ memset(nc->pass, 0, PASSMAX);
+ } else
+ SAFE(read_buffer(nc->pass, f));
+
SAFE(read_string(&nc->email, f));
SAFE(read_string(&nc->greet, f));
SAFE(read_int32(&nc->icq, f));
@@ -649,7 +668,7 @@ void save_ns_dbase(void)
SAFE(write_int8(1, f));
SAFE(write_string(nc->display, f));
- SAFE(write_string(nc->pass, f));
+ SAFE(write_buffer(nc->pass, f));
SAFE(write_string(nc->email, f));
SAFE(write_string(nc->greet, f));
@@ -724,7 +743,7 @@ void save_ns_req_dbase(void)
SAFE(write_int8(1, f));
SAFE(write_string(nr->nick, f));
SAFE(write_string(nr->passcode, f));
- SAFE(write_string(nr->password, f));
+ SAFE(write_buffer(nr->password, f));
SAFE(write_string(nr->email, f));
SAFE(write_int32(nr->requested, f));
SAFE(write_int8(0, f));
@@ -1370,8 +1389,6 @@ static int delcore(NickCore * nc)
/* Now we can safely free it. */
free(nc->display);
- if (nc->pass)
- free(nc->pass);
if (nc->email)
free(nc->email);
@@ -1414,8 +1431,6 @@ int delnickrequest(NickRequest * nr)
free(nr->nick);
if (nr->passcode)
free(nr->passcode);
- if (nr->password)
- free(nr->password);
if (nr->email)
free(nr->email);
free(nr);
diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c
index c2293a38d..9cd553754 100644
--- a/src/protocol/bahamut.c
+++ b/src/protocol/bahamut.c
@@ -595,72 +595,6 @@ int anope_event_436(const char *source, int ac, const char **av)
return MOD_CONT;
}
-/* *INDENT-OFF* */
-void moduleAddIRCDMsgs(void) {
- Message *m;
-
-
- /* first update the cs protect info about this ircd */
- updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+","-");
-
- /* now add the commands */
- m = createMessage("401", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("402", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
- m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
- m = createMessage("INVITE", anope_event_null); addCoreMessage(IRCD,m);
- 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("MODE", anope_event_mode); addCoreMessage(IRCD,m);
- m = createMessage("MOTD", anope_event_motd); addCoreMessage(IRCD,m);
- m = createMessage("NICK", anope_event_nick); addCoreMessage(IRCD,m);
- m = createMessage("NOTICE", anope_event_notice); addCoreMessage(IRCD,m);
- m = createMessage("PART", anope_event_part); addCoreMessage(IRCD,m);
- m = createMessage("PASS", anope_event_pass); addCoreMessage(IRCD,m);
- m = createMessage("PING", anope_event_ping); addCoreMessage(IRCD,m);
- m = createMessage("PRIVMSG", anope_event_privmsg); addCoreMessage(IRCD,m);
- m = createMessage("QUIT", anope_event_quit); addCoreMessage(IRCD,m);
- m = createMessage("SERVER", anope_event_server); addCoreMessage(IRCD,m);
- m = createMessage("SQUIT", anope_event_squit); addCoreMessage(IRCD,m);
- m = createMessage("TOPIC", anope_event_topic); addCoreMessage(IRCD,m);
- m = createMessage("USER", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("WALLOPS", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m);
- m = createMessage("AKILL", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("GLOBOPS", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("GNOTICE", anope_event_gnotice); addCoreMessage(IRCD,m);
- m = createMessage("GOPER", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("RAKILL", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SILENCE", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SVSKILL", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SVSMODE", anope_event_mode); addCoreMessage(IRCD,m);
- m = createMessage("SVSNICK", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SVSNOOP", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SQLINE", anope_event_sqline); addCoreMessage(IRCD,m);
- m = createMessage("UNSQLINE", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("CAPAB", anope_event_capab); addCoreMessage(IRCD,m);
- m = createMessage("CS", anope_event_cs); addCoreMessage(IRCD,m);
- m = createMessage("HS", anope_event_hs); addCoreMessage(IRCD,m);
- m = createMessage("MS", anope_event_ms); addCoreMessage(IRCD,m);
- m = createMessage("NS", anope_event_ns); addCoreMessage(IRCD,m);
- m = createMessage("OS", anope_event_os); addCoreMessage(IRCD,m);
- m = createMessage("RS", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SGLINE", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SJOIN", anope_event_sjoin); addCoreMessage(IRCD,m);
- m = createMessage("SS", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SVINFO", anope_event_svinfo); addCoreMessage(IRCD,m);
- m = createMessage("SZLINE", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("UNSGLINE", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("UNSZLINE", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("ERROR", anope_event_error); addCoreMessage(IRCD,m);
- m = createMessage("LUSERSLOCK",anope_event_luserslock); addCoreMessage(IRCD,m);
- m = createMessage("BURST", anope_event_burst); addCoreMessage(IRCD,m);
- m = createMessage("ADMIN", anope_event_admin); addCoreMessage(IRCD,m);
-
-}
-
-/* *INDENT-ON* */
/* SQLINE */
void BahamutIRCdProto::SendSQLine(const char *mask, const char *reason)
@@ -699,11 +633,6 @@ void BahamutIRCdProto::SendSVSNOOP(const char *server, int set)
send_cmd(NULL, "SVSNOOP %s %s", server, set ? "+" : "-");
}
-void bahamut_cmd_svsadmin(const char *server, int set)
-{
- ircd_proto.SendSVSNOOP(server, set);
-}
-
/* SGLINE */
void BahamutIRCdProto::SendSGLine(const char *mask, const char *reason)
{
@@ -717,9 +646,9 @@ void BahamutIRCdProto::SendAkillDel(const char *user, const char *host)
}
/* TOPIC */
-void BahamutIRCdProto::cmd_topic(const char *whosets, const char *chan, const char *whosetit, const char *topic, time_t when)
+void BahamutIRCdProto::SendTopic(BotInfo *whosets, const char *chan, const char *whosetit, const char *topic, time_t when)
{
- send_cmd(whosets, "TOPIC %s %s %lu :%s", chan, whosetit, static_cast<unsigned long>(when), topic);
+ send_cmd(whosets->nick, "TOPIC %s %s %lu :%s", chan, whosetit, static_cast<unsigned long>(when), topic);
}
/* UNSQLINE */
@@ -850,20 +779,6 @@ int anope_event_privmsg(const char *source, int ac, const char **av)
return MOD_CONT;
}
-/* EVENT : SVINFO */
-/*
- * parv[0] = sender prefix
- * parv[1] = TS_CURRENT for the server
- * parv[2] = TS_MIN for the server
- * parv[3] = server is standalone or connected to non-TS only
- * parv[4] = server's idea of UTC time
- */
-int anope_event_svinfo(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-
int anope_event_part(const char *source, int ac, const char **av)
{
if (ac < 1 || ac > 2)
@@ -1029,27 +944,6 @@ int anope_event_error(const char *source, int ac, const char **av)
return MOD_CONT;
}
-int anope_event_notice(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_sqline(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-
-int anope_event_gnotice(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_pass(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
void BahamutIRCdProto::SendEOB()
{
send_cmd(NULL, "BURST 0");
@@ -1073,26 +967,6 @@ int anope_event_burst(const char *source, int ac, const char **av)
return MOD_CONT;
}
-int anope_event_luserslock(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_rehash(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_credits(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_admin(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
int BahamutIRCdProto::IsFloodModeParamValid(const char *value)
{
char *dp, *end;
@@ -1109,6 +983,45 @@ void bahamut_cmd_chghost(const char *nick, const char *vhost)
}
}
+/* *INDENT-OFF* */
+void moduleAddIRCDMsgs(void) {
+ Message *m;
+
+
+ /* first update the cs protect info about this ircd */
+ updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+","-");
+
+ /* now add the commands */
+ m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
+ m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
+ 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("MODE", anope_event_mode); addCoreMessage(IRCD,m);
+ m = createMessage("MOTD", anope_event_motd); addCoreMessage(IRCD,m);
+ m = createMessage("NICK", anope_event_nick); addCoreMessage(IRCD,m);
+ m = createMessage("PART", anope_event_part); addCoreMessage(IRCD,m);
+ m = createMessage("PING", anope_event_ping); addCoreMessage(IRCD,m);
+ m = createMessage("PRIVMSG", anope_event_privmsg); addCoreMessage(IRCD,m);
+ m = createMessage("QUIT", anope_event_quit); addCoreMessage(IRCD,m);
+ m = createMessage("SERVER", anope_event_server); addCoreMessage(IRCD,m);
+ m = createMessage("SQUIT", anope_event_squit); addCoreMessage(IRCD,m);
+ m = createMessage("TOPIC", anope_event_topic); addCoreMessage(IRCD,m);
+ m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m);
+ m = createMessage("SVSMODE", anope_event_mode); addCoreMessage(IRCD,m);
+ m = createMessage("CAPAB", anope_event_capab); addCoreMessage(IRCD,m);
+ m = createMessage("CS", anope_event_cs); addCoreMessage(IRCD,m);
+ m = createMessage("HS", anope_event_hs); addCoreMessage(IRCD,m);
+ m = createMessage("MS", anope_event_ms); addCoreMessage(IRCD,m);
+ m = createMessage("NS", anope_event_ns); addCoreMessage(IRCD,m);
+ m = createMessage("OS", anope_event_os); addCoreMessage(IRCD,m);
+ m = createMessage("SJOIN", anope_event_sjoin); addCoreMessage(IRCD,m);
+ m = createMessage("ERROR", anope_event_error); addCoreMessage(IRCD,m);
+ m = createMessage("BURST", anope_event_burst); addCoreMessage(IRCD,m);
+}
+
+/* *INDENT-ON* */
+
/**
* Now tell anope how to use us.
**/
diff --git a/src/protocol/bahamut.h b/src/protocol/bahamut.h
index bbc0980fa..df8166c7b 100644
--- a/src/protocol/bahamut.h
+++ b/src/protocol/bahamut.h
@@ -62,7 +62,7 @@ class BahamutIRCdProto : public IRCDProto {
public:
void SendSVSNOOP(const char *, int);
void SendAkillDel(const char *, const char *);
- void cmd_topic(const char *, const char *, const char *, const char *, time_t);
+ void SendTopic(BotInfo *, const char *, const char *, const char *, time_t);
void SendAkill(const char *, const char *, const char *, time_t, time_t, const char *);
void SendSVSKill(const char *, const char *, const char *);
void SendSVSMode(User *, int, const char **);
diff --git a/src/protocol/charybdis.c b/src/protocol/charybdis.c
index 2e88e3b6d..6afb2cd07 100644
--- a/src/protocol/charybdis.c
+++ b/src/protocol/charybdis.c
@@ -438,9 +438,9 @@ void CharybdisProto::SendGlobops(const char *source, const char *buf)
{
if (!buf) return;
if (source) {
- Uid *u = find_uid(source);
- if (u) {
- send_cmd(UseTS6 ? u->uid : source, "OPERWALL :%s", buf);
+ BotInfo *bi = findbot(source);
+ if (bi) {
+ send_cmd(UseTS6 ? bi->uid.c_str() : source, "OPERWALL :%s", buf);
return;
}
}
@@ -653,86 +653,29 @@ int anope_event_436(const char *source, int ac, const char **av)
}
-/* *INDENT-OFF* */
-void moduleAddIRCDMsgs(void)
-{
- Message *m;
-
- updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+","-");
-
- if (UseTS6) {
- TS6SID = sstrdup(Numeric);
- }
-
- m = createMessage("401", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("402", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
- m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
- m = createMessage("INVITE", anope_event_invite); addCoreMessage(IRCD,m);
- 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("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);
- m = createMessage("NICK", anope_event_nick); addCoreMessage(IRCD,m);
- m = createMessage("BMASK", anope_event_bmask); addCoreMessage(IRCD,m);
- m = createMessage("UID", anope_event_nick); addCoreMessage(IRCD,m);
- m = createMessage("NOTICE", anope_event_notice); addCoreMessage(IRCD,m);
- m = createMessage("PART", anope_event_part); addCoreMessage(IRCD,m);
- m = createMessage("PASS", anope_event_pass); addCoreMessage(IRCD,m);
- m = createMessage("PING", anope_event_ping); addCoreMessage(IRCD,m);
- m = createMessage("PRIVMSG", anope_event_privmsg); addCoreMessage(IRCD,m);
- m = createMessage("QUIT", anope_event_quit); addCoreMessage(IRCD,m);
- m = createMessage("SERVER", anope_event_server); addCoreMessage(IRCD,m);
- m = createMessage("SQUIT", anope_event_squit); addCoreMessage(IRCD,m);
- m = createMessage("TOPIC", anope_event_topic); addCoreMessage(IRCD,m);
- m = createMessage("TB", anope_event_tburst); addCoreMessage(IRCD,m);
- m = createMessage("USER", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("WALLOPS", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m);
- m = createMessage("SVSMODE", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SVSNICK", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("CAPAB", anope_event_capab); addCoreMessage(IRCD,m);
- m = createMessage("SJOIN", anope_event_sjoin); addCoreMessage(IRCD,m);
- m = createMessage("SVINFO", anope_event_svinfo); addCoreMessage(IRCD,m);
- m = createMessage("ADMIN", anope_event_admin); addCoreMessage(IRCD,m);
- m = createMessage("ERROR", anope_event_error); addCoreMessage(IRCD,m);
- m = createMessage("421", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("ENCAP", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SID", anope_event_sid); addCoreMessage(IRCD,m);
- m = createMessage("EUID", anope_event_euid); addCoreMessage(IRCD,m);
-}
-
-/* *INDENT-ON* */
-
void CharybdisProto::SendSQLine(const char *mask, const char *reason)
{
- Uid *ud = find_uid(s_OperServ);
- send_cmd(UseTS6 ? (ud ? ud->uid : s_OperServ) : s_OperServ, "RESV * %s :%s", mask, reason);
+ BotInfo *bi = findbot(s_OperServ);
+ send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : s_OperServ) : s_OperServ, "RESV * %s :%s", mask, reason);
}
void CharybdisProto::SendSGLineDel(const char *mask)
{
- Uid *ud = find_uid(s_OperServ);
- send_cmd(UseTS6 ? (ud ? ud->uid : s_OperServ) : s_OperServ, "UNXLINE * %s", mask);
-}
-
-void charybdis_cmd_svsadmin(const char *server, int set)
-{
+ BotInfo *bi = findbot(s_OperServ);
+ send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : s_OperServ) : s_OperServ, "UNXLINE * %s", mask);
}
void CharybdisProto::SendSGLine(const char *mask, const char *reason)
{
- Uid *ud = find_uid(s_OperServ);
- send_cmd(UseTS6 ? (ud ? ud->uid : s_OperServ) : s_OperServ, "XLINE * %s 0 :%s", mask, reason);
+ BotInfo *bi = findbot(s_OperServ);
+ send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : s_OperServ) : s_OperServ, "XLINE * %s 0 :%s", mask, reason);
}
void CharybdisProto::SendAkillDel(const char *user, const char *host)
{
- Uid *ud = find_uid(s_OperServ);
- send_cmd(UseTS6 ? (ud ? ud->uid : s_OperServ) : s_OperServ, "UNKLINE * %s %s", user, host);
+ BotInfo *bi = findbot(s_OperServ);
+ send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : s_OperServ) : s_OperServ, "UNKLINE * %s %s", user, host);
}
void CharybdisProto::SendVhostDel(User *u)
@@ -747,14 +690,14 @@ void CharybdisProto::SendVhost(const char *nick, const char *vIdent, const char
void CharybdisProto::SendSQLineDel(const char *user)
{
- Uid *ud = find_uid(s_OperServ);
- send_cmd(UseTS6 ? (ud ? ud->uid : s_OperServ) : s_OperServ, "UNRESV * %s", user);
+ BotInfo *bi = findbot(s_OperServ);
+ send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : s_OperServ) : s_OperServ, "UNRESV * %s", user);
}
void CharybdisProto::SendJoin(const char *user, const char *channel, time_t chantime)
{
- Uid *ud = find_uid(user);
- send_cmd(NULL, "SJOIN %ld %s + :%s", static_cast<long>(chantime), channel, UseTS6 ? (ud ? ud->uid : user) : user);
+ User *u = finduser(user);
+ send_cmd(NULL, "SJOIN %ld %s + :%s", static_cast<long>(chantime), channel, UseTS6 ? (u ? u->uid : user) : user);
}
/*
@@ -768,15 +711,16 @@ reason: the reason for the kline.
void CharybdisProto::SendAkill(const char *user, const char *host, const char *who, time_t when, time_t expires, const char *reason)
{
- Uid *ud = find_uid(s_OperServ);
- send_cmd(UseTS6 ? (ud ? ud->uid : s_OperServ) : s_OperServ, "KLINE * %ld %s %s :%s", static_cast<long>(expires - time(NULL)), user, host, reason);
+ BotInfo *bi = findbot(s_OperServ);
+ send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : s_OperServ) : s_OperServ, "KLINE * %ld %s %s :%s", static_cast<long>(expires - time(NULL)), user, host, reason);
}
void CharybdisProto::SendSVSKill(const char *source, const char *user, const char *buf)
{
if (!source || !user || !buf) return;
- Uid *ud = find_uid(source), *ud2 = find_uid(user);
- send_cmd(UseTS6 ? (ud ? ud->uid : source) : source, "KILL %s :%s", UseTS6 ? (ud2 ? ud2->uid : user) : user, buf);
+ BotInfo *bi = findbot(source);
+ User *u = finduser(user);
+ send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : source) : source, "KILL %s :%s", UseTS6 ? (u ? u->uid : user) : user, buf);
}
void CharybdisProto::SendSVSMode(User *u, int ac, const char **av)
@@ -864,7 +808,6 @@ void CharybdisProto::SendClientIntroduction(const char *nick, const char *user,
if (UseTS6) {
char *uidbuf = ts6_uid_retrieve();
send_cmd(TS6SID, "UID %s 1 %ld %s %s %s 0 %s :%s", nick, static_cast<long>(time(NULL)), modes, user, host, uidbuf, real);
- new_uid(nick, uidbuf);
}
else send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s :%s", nick, static_cast<long>(time(NULL)), modes, user, host, ServerName, real);
SendSQLine(nick, "Reserved for services");
@@ -872,9 +815,9 @@ void CharybdisProto::SendClientIntroduction(const char *nick, const char *user,
void CharybdisProto::SendPart(const char *nick, const char *chan, const char *buf)
{
- Uid *ud = find_uid(nick);
- if (buf) send_cmd(UseTS6 ? ud->uid : nick, "PART %s :%s", chan, buf);
- else send_cmd(UseTS6 ? ud->uid : nick, "PART %s", chan);
+ User *u = finduser(nick);
+ if (buf) send_cmd(UseTS6 ? u->uid : nick, "PART %s :%s", chan, buf);
+ else send_cmd(UseTS6 ? u->uid : nick, "PART %s", chan);
}
int anope_event_ping(const char *source, int ac, const char **av)
@@ -1044,8 +987,8 @@ void CharybdisProto::SendMode(const char *source, const char *dest, const char *
{
if (!buf) return;
if (source) {
- Uid *ud = find_uid(source);
- send_cmd(UseTS6 ? (ud ? ud->uid : source) : source, "MODE %s %s", dest, buf);
+ BotInfo *bi = findbot(source);
+ send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : source) : source, "MODE %s %s", dest, buf);
}
else send_cmd(source, "MODE %s %s", dest, buf);
}
@@ -1070,23 +1013,23 @@ void charybdis_cmd_tmode(const char *source, const char *dest, const char *fmt,
void CharybdisProto::SendKick(const char *source, const char *chan, const char *user, const char *buf)
{
- Uid *ud = find_uid(source);
+ BotInfo *bi = findbot(source);
User *u = finduser(user);
- if (buf) send_cmd(UseTS6 ? (ud ? ud->uid : source) : source, "KICK %s %s :%s", chan, UseTS6 ? (u ? u->uid : user) : user, buf);
- else send_cmd(UseTS6 ? (ud ? ud->uid : source) : source, "KICK %s %s", chan, UseTS6 ? (u ? u->uid : user) : user);
+ if (buf) send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : source) : source, "KICK %s %s :%s", chan, UseTS6 ? (u ? u->uid : user) : user, buf);
+ else send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : source) : source, "KICK %s %s", chan, UseTS6 ? (u ? u->uid : user) : user);
}
void CharybdisProto::SendNoticeChanops(const char *source, const char *dest, const char *buf)
{
if (!buf) return;
- Uid *ud = find_uid(source);
- send_cmd(UseTS6 ? (ud ? ud->uid : source) : source, "NOTICE @%s :%s", dest, buf);
+ BotInfo *bi = findbot(source);
+ send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : source) : source, "NOTICE @%s :%s", dest, buf);
}
void CharybdisProto::SendBotOp(const char *nick, const char *chan)
{
if (UseTS6) {
- Uid *u = find_uid(nick);
+ User *u = finduser(nick);
charybdis_cmd_tmode(nick, chan, "%s %s", ircd->botchanumode, u ? u->uid : nick);
}
else anope_SendMode(ServerName, chan, "%s %s", ircd->botchanumode, nick);
@@ -1095,9 +1038,9 @@ void CharybdisProto::SendBotOp(const char *nick, const char *chan)
/* QUIT */
void CharybdisProto::SendQuit(const char *source, const char *buf)
{
- Uid *ud = find_uid(source);
- if (buf) send_cmd(UseTS6 ? (ud ? ud->uid : source) : source, "QUIT :%s", buf);
- else send_cmd(UseTS6 ? (ud ? ud->uid : source) : source, "QUIT");
+ BotInfo *bi = findbot(source);
+ if (buf) send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : source) : source, "QUIT :%s", buf);
+ else send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : source) : source, "QUIT");
}
/* PONG */
@@ -1112,9 +1055,9 @@ void CharybdisProto::SendPong(const char *servname, const char *who)
void CharybdisProto::SendInvite(const char *source, const char *chan, const char *nick)
{
if (!source || !chan || !nick) return;
- Uid *ud = find_uid(source);
+ BotInfo *bi = findbot(source);
User *u = finduser(nick);
- send_cmd(UseTS6 ? (ud ? ud->uid : source) : source, "INVITE %s %s", UseTS6 ? (u ? u->uid : nick) : nick, chan);
+ send_cmd(UseTS6 ? (bi ? bi->uid.c_str() : source) : source, "INVITE %s %s", UseTS6 ? (u ? u->uid : nick) : nick, chan);
}
int anope_event_mode(const char *source, int ac, const char **av)
@@ -1203,20 +1146,6 @@ void CharybdisProto::SendForceNickChange(const char *oldnick, const char *newnic
send_cmd(NULL, "ENCAP %s RSFNC %s %s %ld %ld", u->server->name, u->nick, newnick, static_cast<long>(when), static_cast<long>(u->timestamp));
}
-/*
- * SVINFO
- * parv[0] = sender prefix
- * parv[1] = TS_CURRENT for the server
- * parv[2] = TS_MIN for the server
- * parv[3] = server is standalone or connected to non-TS only
- * parv[4] = server's idea of UTC time
- */
-int anope_event_svinfo(const char *source, int ac, const char **av)
-{
- /* currently not used but removes the message : unknown message from server */
- return MOD_CONT;
-}
-
int anope_event_pass(const char *source, int ac, const char **av)
{
if (UseTS6) {
@@ -1225,21 +1154,6 @@ int anope_event_pass(const char *source, int ac, const char **av)
return MOD_CONT;
}
-int anope_event_notice(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_admin(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_invite(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
int anope_event_bmask(const char *source, int ac, const char **av)
{
Channel *c;
@@ -1319,6 +1233,47 @@ int charybdis_send_deaccount(int argc, char **argv)
return MOD_CONT;
}
+/* *INDENT-OFF* */
+void moduleAddIRCDMsgs(void)
+{
+ Message *m;
+
+ updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+","-");
+
+ if (UseTS6) {
+ TS6SID = sstrdup(Numeric);
+ }
+
+ m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
+ m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
+ 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("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);
+ m = createMessage("NICK", anope_event_nick); addCoreMessage(IRCD,m);
+ m = createMessage("BMASK", anope_event_bmask); addCoreMessage(IRCD,m);
+ m = createMessage("UID", anope_event_nick); addCoreMessage(IRCD,m);
+ m = createMessage("PART", anope_event_part); addCoreMessage(IRCD,m);
+ m = createMessage("PASS", anope_event_pass); addCoreMessage(IRCD,m);
+ m = createMessage("PING", anope_event_ping); addCoreMessage(IRCD,m);
+ m = createMessage("PRIVMSG", anope_event_privmsg); addCoreMessage(IRCD,m);
+ m = createMessage("QUIT", anope_event_quit); addCoreMessage(IRCD,m);
+ m = createMessage("SERVER", anope_event_server); addCoreMessage(IRCD,m);
+ m = createMessage("SQUIT", anope_event_squit); addCoreMessage(IRCD,m);
+ m = createMessage("TOPIC", anope_event_topic); addCoreMessage(IRCD,m);
+ m = createMessage("TB", anope_event_tburst); addCoreMessage(IRCD,m);
+ m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m);
+ m = createMessage("CAPAB", anope_event_capab); addCoreMessage(IRCD,m);
+ m = createMessage("SJOIN", anope_event_sjoin); addCoreMessage(IRCD,m);
+ m = createMessage("ERROR", anope_event_error); addCoreMessage(IRCD,m);
+ m = createMessage("SID", anope_event_sid); addCoreMessage(IRCD,m);
+ m = createMessage("EUID", anope_event_euid); addCoreMessage(IRCD,m);
+}
+
+/* *INDENT-ON* */
+
/**
* Now tell anope how to use us.
**/
diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c
index 904cc2459..41f5023a7 100644
--- a/src/protocol/inspircd11.c
+++ b/src/protocol/inspircd11.c
@@ -505,19 +505,14 @@ void moduleAddIRCDMsgs(void) {
/* *INDENT-ON* */
-void inspircd_cmd_svsadmin(const char *server, int set)
-{
- /* Not Supported by this IRCD */
-}
-
void InspIRCdProto::SendAkillDel(const char *user, const char *host)
{
send_cmd(s_OperServ, "GLINE %s@%s", user, host);
}
-void InspIRCdProto::cmd_topic(const char *whosets, const char *chan, const char *whosetit, const char *topic, time_t when)
+void InspIRCdProto::SendTopic(BotInfo *whosets, const char *chan, const char *whosetit, const char *topic, time_t when)
{
- send_cmd(whosets, "FTOPIC %s %lu %s :%s", chan, static_cast<unsigned long>(when), whosetit, topic);
+ send_cmd(whosets->nick, "FTOPIC %s %lu %s :%s", chan, static_cast<unsigned long>(when), whosetit, topic);
}
/* CHGHOST */
@@ -577,11 +572,6 @@ void InspIRCdProto::SendMode(const char *source, const char *dest, const char *b
send_cmd(source ? source : s_OperServ, "FMODE %s %u %s", dest, static_cast<unsigned>(c ? c->creation_time : time(NULL)), buf);
}
-int anope_event_version(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
int anope_event_idle(const char *source, int ac, const char **av)
{
if (ac == 1) {
@@ -603,6 +593,27 @@ int anope_event_ftopic(const char *source, int ac, const char **av)
return MOD_CONT;
}
+int anope_event_mode(const char *source, int ac, const char **av)
+{
+ if (ac < 2)
+ return MOD_CONT;
+
+ if (*av[0] == '#' || *av[0] == '&') {
+ do_cmode(source, ac, av);
+ } else {
+ /* InspIRCd lets opers change another
+ users modes, we have to kludge this
+ as it slightly breaks RFC1459
+ */
+ if (!strcasecmp(source, av[0])) {
+ do_umode(source, ac, av);
+ } else {
+ do_umode(av[0], ac, av);
+ }
+ }
+ return MOD_CONT;
+}
+
int anope_event_opertype(const char *source, int ac, const char **av)
{
/* opertype is equivalent to mode +o because servers
@@ -916,28 +927,6 @@ int anope_event_quit(const char *source, int ac, const char **av)
}
-int anope_event_mode(const char *source, int ac, const char **av)
-{
- if (ac < 2)
- return MOD_CONT;
-
- if (*av[0] == '#' || *av[0] == '&') {
- do_cmode(source, ac, av);
- } else {
- /* InspIRCd lets opers change another
- users modes, we have to kludge this
- as it slightly breaks RFC1459
- */
- if (!strcasecmp(source, av[0])) {
- do_umode(source, ac, av);
- } else {
- do_umode(av[0], ac, av);
- }
- }
- return MOD_CONT;
-}
-
-
int anope_event_kill(const char *source, int ac, const char **av)
{
if (ac != 2)
@@ -1330,22 +1319,6 @@ void InspIRCdProto::SendEOB()
send_cmd(NULL, "ENDBURST");
}
-
-int anope_event_rehash(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_credits(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_admin(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
int InspIRCdProto::IsFloodModeParamValid(const char *value)
{
char *dp, *end;
@@ -1353,6 +1326,46 @@ int InspIRCdProto::IsFloodModeParamValid(const char *value)
else return 0;
}
+/* *INDENT-OFF* */
+void moduleAddIRCDMsgs(void) {
+ Message *m;
+
+ updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+a","-a");
+
+ m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
+ m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
+ 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("MODE", anope_event_mode); addCoreMessage(IRCD,m);
+ m = createMessage("MOTD", anope_event_motd); addCoreMessage(IRCD,m);
+ m = createMessage("NICK", anope_event_nick); addCoreMessage(IRCD,m);
+ m = createMessage("CAPAB", anope_event_capab); addCoreMessage(IRCD,m);
+ m = createMessage("PART", anope_event_part); addCoreMessage(IRCD,m);
+ m = createMessage("PING", anope_event_ping); addCoreMessage(IRCD,m);
+ m = createMessage("PRIVMSG", anope_event_privmsg); addCoreMessage(IRCD,m);
+ m = createMessage("QUIT", anope_event_quit); addCoreMessage(IRCD,m);
+ m = createMessage("SERVER", anope_event_server); addCoreMessage(IRCD,m);
+ m = createMessage("SQUIT", anope_event_squit); addCoreMessage(IRCD,m);
+ m = createMessage("RSQUIT", anope_event_rsquit); addCoreMessage(IRCD,m);
+ m = createMessage("TOPIC", anope_event_topic); addCoreMessage(IRCD,m);
+ m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m);
+ m = createMessage("SVSMODE", anope_event_mode) ;addCoreMessage(IRCD,m);
+ m = createMessage("FHOST", anope_event_chghost); addCoreMessage(IRCD,m);
+ m = createMessage("CHGIDENT", anope_event_chgident); addCoreMessage(IRCD,m);
+ m = createMessage("FNAME", anope_event_chgname); addCoreMessage(IRCD,m);
+ m = createMessage("SETHOST", anope_event_sethost); addCoreMessage(IRCD,m);
+ m = createMessage("SETIDENT", anope_event_setident); addCoreMessage(IRCD,m);
+ m = createMessage("SETNAME", anope_event_setname); addCoreMessage(IRCD,m);
+ m = createMessage("FJOIN", anope_event_fjoin); addCoreMessage(IRCD,m);
+ m = createMessage("FMODE", anope_event_fmode); addCoreMessage(IRCD,m);
+ m = createMessage("FTOPIC", anope_event_ftopic); addCoreMessage(IRCD,m);
+ m = createMessage("OPERTYPE", anope_event_opertype); addCoreMessage(IRCD,m);
+ m = createMessage("IDLE", anope_event_idle); addCoreMessage(IRCD,m);
+}
+
+/* *INDENT-ON* */
+
/**
* Now tell anope how to use us.
**/
diff --git a/src/protocol/inspircd11.h b/src/protocol/inspircd11.h
index e57de099e..0097d142b 100755
--- a/src/protocol/inspircd11.h
+++ b/src/protocol/inspircd11.h
@@ -51,22 +51,10 @@
#define DEFAULT_MLOCK CMODE_n | CMODE_t | CMODE_r
-int anope_event_fjoin(const char *source, int ac, const char **av);
-int anope_event_fmode(const char *source, int ac, const char **av);
-int anope_event_ftopic(const char *source, int ac, const char **av);
-int anope_event_sanick(const char *source, int ac, const char **av);
-int anope_event_samode(const char *source, int ac, const char **av);
-int anope_event_sajoin(const char *source, int ac, const char **av);
-int anope_event_sapart(const char *source, int ac, const char **av);
-int anope_event_version(const char *source, int ac, const char **av);
-int anope_event_opertype(const char *source, int ac, const char **av);
-int anope_event_idle(const char *source, int ac, const char **av);
-int anope_event_rsquit(const char *source, int ac, const char **av);
-
class InspIRCdProto : public IRCDProto {
public:
void SendAkillDel(const char *, const char *);
- void cmd_topic(const char *, const char *, const char *, const char *, time_t);
+ void SendTopic(BotInfo *, const char *, const char *, const char *, time_t);
void SendVhostDel(User *);
void SendAkill(const char *, const char *, const char *, time_t, time_t, const char *);
void SendSVSKill(const char *, const char *, const char *);
diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c
index dd07cc436..d78027487 100644
--- a/src/protocol/ratbox.c
+++ b/src/protocol/ratbox.c
@@ -425,27 +425,6 @@ CUMode myCumodes[128] = {
-void RatboxProto::cmd_message(const char *source, const char *dest, const char *buf)
-{
- if (!buf) return;
- if (NSDefFlags & NI_MSG) cmd_privmsg(source, dest, buf);
- else cmd_notice(source, dest, buf);
-}
-
-void RatboxProto::cmd_notice(const char *source, const char *dest, const char *msg)
-{
- Uid *ud = find_uid(source);
- User *u = finduser(dest);
- send_cmd(UseTS6 ? (ud ? ud->uid : source) : source, "NOTICE %s :%s", UseTS6 ? (u ? u->uid : dest) : dest, msg);
-}
-
-void RatboxProto::cmd_privmsg(const char *source, const char *dest, const char *buf)
-{
- if (!buf) return;
- Uid *ud = find_uid(source), *ud2 = find_uid(dest);
- send_cmd(UseTS6 ? (ud ? ud->uid : source) : source, "PRIVMSG %s :%s", UseTS6 ? (ud2 ? ud2->uid : dest) : dest, buf);
-}
-
void RatboxProto::SendGlobops(const char *source, const char *buf)
{
if (!buf) return;
@@ -623,59 +602,6 @@ int anope_event_436(const char *source, int ac, const char **av)
}
-/* *INDENT-OFF* */
-void moduleAddIRCDMsgs(void)
-{
- Message *m;
-
- updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+","-");
-
- if (UseTS6) {
- TS6SID = sstrdup(Numeric);
- UseTSMODE = 1; /* TMODE */
- }
-
- m = createMessage("401", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("402", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
- m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
- m = createMessage("INVITE", anope_event_invite); addCoreMessage(IRCD,m);
- 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("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);
- m = createMessage("NICK", anope_event_nick); addCoreMessage(IRCD,m);
- m = createMessage("BMASK", anope_event_bmask); addCoreMessage(IRCD,m);
- m = createMessage("UID", anope_event_nick); addCoreMessage(IRCD,m);
- m = createMessage("NOTICE", anope_event_notice); addCoreMessage(IRCD,m);
- m = createMessage("PART", anope_event_part); addCoreMessage(IRCD,m);
- m = createMessage("PASS", anope_event_pass); addCoreMessage(IRCD,m);
- m = createMessage("PING", anope_event_ping); addCoreMessage(IRCD,m);
- m = createMessage("PRIVMSG", anope_event_privmsg); addCoreMessage(IRCD,m);
- m = createMessage("QUIT", anope_event_quit); addCoreMessage(IRCD,m);
- m = createMessage("SERVER", anope_event_server); addCoreMessage(IRCD,m);
- m = createMessage("SQUIT", anope_event_squit); addCoreMessage(IRCD,m);
- m = createMessage("TOPIC", anope_event_topic); addCoreMessage(IRCD,m);
- m = createMessage("TB", anope_event_tburst); addCoreMessage(IRCD,m);
- m = createMessage("USER", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("WALLOPS", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m);
- m = createMessage("SVSMODE", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SVSNICK", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("CAPAB", anope_event_capab); addCoreMessage(IRCD,m);
- m = createMessage("SJOIN", anope_event_sjoin); addCoreMessage(IRCD,m);
- m = createMessage("SVINFO", anope_event_svinfo); addCoreMessage(IRCD,m);
- m = createMessage("ADMIN", anope_event_admin); addCoreMessage(IRCD,m);
- m = createMessage("ERROR", anope_event_error); addCoreMessage(IRCD,m);
- m = createMessage("421", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("ENCAP", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("SID", anope_event_sid); addCoreMessage(IRCD,m);
-}
-
-/* *INDENT-ON* */
-
void RatboxProto::SendSQLine(const char *mask, const char *reason)
{
@@ -689,10 +615,6 @@ void RatboxProto::SendSGLineDel(const char *mask)
send_cmd(UseTS6 ? (ud ? ud->uid : s_OperServ) : s_OperServ, "UNXLINE * %s", mask);
}
-void ratbox_cmd_svsadmin(const char *server, int set)
-{
-}
-
void RatboxProto::SendSGLine(const char *mask, const char *reason)
{
Uid *ud = find_uid(s_OperServ);
@@ -705,12 +627,6 @@ void RatboxProto::SendAkillDel(const char *user, const char *host)
send_cmd(UseTS6 ? (ud ? ud->uid : s_OperServ) : s_OperServ, "UNKLINE * %s %s", user, host);
}
-void RatboxProto::cmd_topic(const char *whosets, const char *chan, const char *whosetit, const char *topic, time_t when)
-{
- Uid *ud = find_uid(whosets);
- send_cmd(UseTS6 ? (ud ? ud->uid : whosets) : whosets, "TOPIC %s :%s", chan, topic);
-}
-
void RatboxProto::SendSQLineDel(const char *user)
{
Uid *ud = find_uid(s_OperServ);
@@ -1137,20 +1053,6 @@ int anope_event_capab(const char *source, int ac, const char **av)
return MOD_CONT;
}
-/*
- * SVINFO
- * parv[0] = sender prefix
- * parv[1] = TS_CURRENT for the server
- * parv[2] = TS_MIN for the server
- * parv[3] = server is standalone or connected to non-TS only
- * parv[4] = server's idea of UTC time
- */
-int anope_event_svinfo(const char *source, int ac, const char **av)
-{
- /* currently not used but removes the message : unknown message from server */
- return MOD_CONT;
-}
-
int anope_event_pass(const char *source, int ac, const char **av)
{
if (UseTS6) {
@@ -1159,21 +1061,6 @@ int anope_event_pass(const char *source, int ac, const char **av)
return MOD_CONT;
}
-int anope_event_notice(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_admin(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_invite(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
int anope_event_bmask(const char *source, int ac, const char **av)
{
Channel *c;
@@ -1228,6 +1115,47 @@ int RatboxProto::IsNickValid(const char *nick)
return 1;
}
+/* *INDENT-OFF* */
+void moduleAddIRCDMsgs(void)
+{
+ Message *m;
+
+ updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+","-");
+
+ if (UseTS6) {
+ TS6SID = sstrdup(Numeric);
+ UseTSMODE = 1; /* TMODE */
+ }
+
+ m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
+ m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
+ 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("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);
+ m = createMessage("NICK", anope_event_nick); addCoreMessage(IRCD,m);
+ m = createMessage("BMASK", anope_event_bmask); addCoreMessage(IRCD,m);
+ m = createMessage("UID", anope_event_nick); addCoreMessage(IRCD,m);
+ m = createMessage("PART", anope_event_part); addCoreMessage(IRCD,m);
+ m = createMessage("PASS", anope_event_pass); addCoreMessage(IRCD,m);
+ m = createMessage("PING", anope_event_ping); addCoreMessage(IRCD,m);
+ m = createMessage("PRIVMSG", anope_event_privmsg); addCoreMessage(IRCD,m);
+ m = createMessage("QUIT", anope_event_quit); addCoreMessage(IRCD,m);
+ m = createMessage("SERVER", anope_event_server); addCoreMessage(IRCD,m);
+ m = createMessage("SQUIT", anope_event_squit); addCoreMessage(IRCD,m);
+ m = createMessage("TOPIC", anope_event_topic); addCoreMessage(IRCD,m);
+ m = createMessage("TB", anope_event_tburst); addCoreMessage(IRCD,m);
+ m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m);
+ m = createMessage("CAPAB", anope_event_capab); addCoreMessage(IRCD,m);
+ m = createMessage("SJOIN", anope_event_sjoin); addCoreMessage(IRCD,m);
+ m = createMessage("ERROR", anope_event_error); addCoreMessage(IRCD,m);
+ m = createMessage("SID", anope_event_sid); addCoreMessage(IRCD,m);
+}
+
+/* *INDENT-ON* */
+
/**
* Now tell anope how to use us.
**/
diff --git a/src/protocol/ratbox.h b/src/protocol/ratbox.h
index d9d87cfd7..b73485279 100644
--- a/src/protocol/ratbox.h
+++ b/src/protocol/ratbox.h
@@ -45,10 +45,9 @@
#define DEFAULT_MLOCK CMODE_n | CMODE_t
-class RatboxProto : public IRCDProto {
+class RatboxProto : public IRCDTS6Proto {
public:
void SendAkillDel(const char *, const char *);
- void cmd_topic(const char *, const char *, const char *, const char *, time_t);
void SendAkill(const char *, const char *, const char *, time_t, time_t, const char *);
void SendSVSKill(const char *, const char *, const char *);
void SendSVSMode(User *, int, const char **);
@@ -56,9 +55,6 @@ class RatboxProto : public IRCDProto {
void SendClientIntroduction(const char *, const char *, const char *, const char *, const char *);
void SendKick(const char *, const char *, const char *, const char *);
void SendNoticeChanops(const char *, const char *, const char *);
- void cmd_message(const char *, const char *, const char *);
- void cmd_notice(const char *, const char *, const char *);
- void cmd_privmsg(const char *, const char *, const char *);
void SendBotOp(const char *, const char *);
void SendQuit(const char *, const char *);
void SendPong(const char *, const char *);
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index 5fb0548d3..0d9789862 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -483,19 +483,14 @@ void UnrealIRCdProto::SendSVSNOOP(const char *server, int set)
send_cmd(NULL, "%s %s %s", send_token("SVSNOOP", "f"), server, set ? "+" : "-");
}
-void unreal_cmd_svsadmin(const char *server, int set)
-{
- ircd_proto.SendSVSNOOP(server, set);
-}
-
void UnrealIRCdProto::SendAkillDel(const char *user, const char *host)
{
send_cmd(NULL, "%s - G %s %s %s", send_token("TKL", "BD"), user, host, s_OperServ);
}
-void UnrealIRCdProto::cmd_topic(const char *whosets, const char *chan, const char *whosetit, const char *topic, time_t when)
+void UnrealIRCdProto::SendTopic(BotInfo *whosets, const char *chan, const char *whosetit, const char *topic, time_t when)
{
- send_cmd(whosets, "%s %s %s %lu :%s", send_token("TOPIC", ")"), chan, whosetit, static_cast<unsigned long>(when), topic);
+ send_cmd(whosets->nick, "%s %s %s %lu :%s", send_token("TOPIC", ")"), chan, whosetit, static_cast<unsigned long>(when), topic);
}
void UnrealIRCdProto::SendVhostDel(User *u)
@@ -753,26 +748,6 @@ int anope_event_netinfo(const char *source, int ac, const char **av)
return MOD_CONT;
}
-
-/* TKL
- * add: remove: spamfilter: spamfilter+TKLEXT sqline:
- * parv[ 1]: + - +/- + +/-
- * parv[ 2]: type type type type type
- * parv[ 3]: user user target target hold
- * parv[ 4]: host host action action host
- * parv[ 5]: setby removedby (un)setby setby setby
- * parv[ 6]: expire_at expire_at (0) expire_at (0) expire_at
- * parv[ 7]: set_at set_at set_at set_at
- * parv[ 8]: reason regex tkl duration reason
- * parv[ 9]: tkl reason [A]
- * parv[10]: regex
- *
-*/
-int anope_event_tkl(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
int anope_event_eos(const char *source, int ac, const char **av)
{
Server *s;
@@ -846,12 +821,6 @@ int anope_event_quit(const char *source, int ac, const char **av)
return MOD_CONT;
}
-int anope_event_pass(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-
int anope_event_mode(const char *source, int ac, const char **av)
{
if (ac < 2)
@@ -1244,16 +1213,6 @@ int anope_event_error(const char *source, int ac, const char **av)
return MOD_CONT;
}
-int anope_event_notice(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_smo(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
/* svsjoin
parv[0] - sender
parv[1] - nick to make join
@@ -1279,31 +1238,6 @@ void UnrealIRCdProto::SendSVSPart(const char *source, const char *nick, const ch
send_cmd(source, "%s %s :%s", send_token("SVSPART", "BT"), nick, chan);
}
-int anope_event_globops(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_swhois(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_rehash(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_credits(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
-int anope_event_admin(const char *source, int ac, const char **av)
-{
- return MOD_CONT;
-}
-
int anope_event_sdesc(const char *source, int ac, const char **av)
{
Server *s;
@@ -1396,19 +1330,11 @@ void moduleAddIRCDMsgs(void) {
updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+a","-a");
- m = createMessage("401", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("402", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
- m = createMessage("451", anope_event_null); addCoreMessage(IRCD,m);
- m = createMessage("461", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("6", anope_event_away); addCoreMessage(IRCD,m);
}
- m = createMessage("INVITE", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("*", anope_event_null); addCoreMessage(IRCD,m);
- }
m = createMessage("JOIN", anope_event_join); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("C", anope_event_join); addCoreMessage(IRCD,m);
@@ -1433,10 +1359,6 @@ void moduleAddIRCDMsgs(void) {
if (UseTokens) {
m = createMessage("&", anope_event_nick); addCoreMessage(IRCD,m);
}
- m = createMessage("NOTICE", anope_event_notice); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("B", anope_event_notice); addCoreMessage(IRCD,m);
- }
m = createMessage("PART", anope_event_part); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("D", anope_event_part); addCoreMessage(IRCD,m);
@@ -1473,62 +1395,10 @@ void moduleAddIRCDMsgs(void) {
if (UseTokens) {
m = createMessage("v", anope_event_mode); addCoreMessage(IRCD,m);
}
- m = createMessage("USER", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("%", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("WALLOPS", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("=", anope_event_null); addCoreMessage(IRCD,m);
- }
m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("#", anope_event_whois); addCoreMessage(IRCD,m);
}
- m = createMessage("AKILL", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("V", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("GLOBOPS", anope_event_globops); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("]", anope_event_globops); addCoreMessage(IRCD,m);
- }
- m = createMessage("GNOTICE", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("Z", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("GOPER", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("[", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("RAKILL", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("Y", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("SILENCE", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("U", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("SVSKILL", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("h", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("SVSNICK", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("e", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("SVSNOOP", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("f", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("SQLINE", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("c", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("UNSQLINE", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("d", anope_event_null); addCoreMessage(IRCD,m);
- }
m = createMessage("PROTOCTL", anope_event_capab); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("_", anope_event_capab); addCoreMessage(IRCD,m);
@@ -1561,82 +1431,26 @@ void moduleAddIRCDMsgs(void) {
if (UseTokens) {
m = createMessage("AE", anope_event_setname); addCoreMessage(IRCD,m);
}
- m = createMessage("TKL", anope_event_tkl); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("BD", anope_event_tkl); addCoreMessage(IRCD,m);
- }
m = createMessage("EOS", anope_event_eos); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("ES", anope_event_eos); addCoreMessage(IRCD,m);
}
- m = createMessage("PASS", anope_event_pass); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("<", anope_event_pass); addCoreMessage(IRCD,m);
- }
m = createMessage("ERROR", anope_event_error); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("5", anope_event_error); addCoreMessage(IRCD,m);
}
- m = createMessage("SMO", anope_event_smo); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("AU", anope_event_smo); addCoreMessage(IRCD,m);
- }
m = createMessage("UMODE2", anope_event_umode2); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("|", anope_event_umode2); addCoreMessage(IRCD,m);
}
- m = createMessage("SWHOIS", anope_event_swhois); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("BA", anope_event_swhois); addCoreMessage(IRCD,m);
- }
m = createMessage("SJOIN", anope_event_sjoin); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("~", anope_event_sjoin); addCoreMessage(IRCD,m);
}
- m = createMessage("REHASH", anope_event_rehash); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("O", anope_event_rehash); addCoreMessage(IRCD,m);
- }
- m = createMessage("ADMIN", anope_event_admin); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("@", anope_event_admin); addCoreMessage(IRCD,m);
- }
- m = createMessage("CREDITS", anope_event_credits); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("AJ", anope_event_credits); addCoreMessage(IRCD,m);
- }
m = createMessage("SDESC", anope_event_sdesc); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("AG", anope_event_sdesc); addCoreMessage(IRCD,m);
}
- m = createMessage("HTM", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("BH", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("HELP", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("4", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("TRACE", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("b", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("LAG", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("AF", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("RPING", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("AM", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("SENDSNO", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("Ss", anope_event_null); addCoreMessage(IRCD,m);
- }
- m = createMessage("SENDUMODE", anope_event_null); addCoreMessage(IRCD,m);
- if (UseTokens) {
- m = createMessage("AP", anope_event_null); addCoreMessage(IRCD,m);
- }
/* The none token version of these is in messages.c */
if (UseTokens) {
diff --git a/src/protocol/unreal32.h b/src/protocol/unreal32.h
index c5ed93ca4..b25a810e6 100644
--- a/src/protocol/unreal32.h
+++ b/src/protocol/unreal32.h
@@ -84,7 +84,7 @@ class UnrealIRCdProto : public IRCDProto {
public:
void SendSVSNOOP(const char *, int);
void SendAkillDel(const char *, const char *);
- void cmd_topic(const char *, const char *, const char *, const char *, time_t);
+ void SendTopic(BotInfo *, const char *, const char *, const char *, time_t);
void SendVhostDel(User *);
void SendAkill(const char *, const char *, const char *, time_t, time_t, const char *);
void SendSVSKill(const char *, const char *, const char *);
diff --git a/src/tools/db-merger.c b/src/tools/db-merger.c
index fbcbf966c..dd835cbe4 100644
--- a/src/tools/db-merger.c
+++ b/src/tools/db-merger.c
@@ -198,7 +198,7 @@ struct nickcore_ {
NickCore *next, *prev;
char *display; /* How the nick is displayed */
- char *pass; /* Password of the nicks */
+ char pass[32]; /* Password of the nicks */
char *email; /* E-mail associated to the nick */
char *greet; /* Greet associated to the nick */
uint32 icq; /* ICQ # associated to the nick */
@@ -341,7 +341,7 @@ int main(int argc, char *argv[])
/* Section I: Nicks */
/* Ia: First database */
- if ((f = open_db_read("NickServ", NICK_DB_1, 13))) {
+ if ((f = open_db_read("NickServ", NICK_DB_1, 14))) {
NickAlias *na, **nalast, *naprev;
NickCore *nc, **nclast, *ncprev;
@@ -372,7 +372,7 @@ int main(int argc, char *argv[])
ncprev = nc;
READ(read_string(&nc->display, f));
- READ(read_string(&nc->pass, f));
+ READ(read_buffer(nc->pass, f));
READ(read_string(&nc->email, f));
READ(read_string(&nc->greet, f));
READ(read_uint32(&nc->icq, f));
@@ -451,7 +451,7 @@ int main(int argc, char *argv[])
/* Ib: Second database */
if (!nonick) {
- if ((f = open_db_read("NickServ", NICK_DB_2, 13))) {
+ if ((f = open_db_read("NickServ", NICK_DB_2, 14))) {
NickAlias *na, *naptr;
NickCore *nc;
@@ -470,7 +470,7 @@ int main(int argc, char *argv[])
nc = (NickCore *)calloc(1, sizeof(NickCore));
READ(read_string(&nc->display, f));
- READ(read_string(&nc->pass, f));
+ READ(read_buffer(nc->pass, f));
READ(read_string(&nc->email, f));
naptr = findnick(nc->display);
@@ -640,7 +640,7 @@ int main(int argc, char *argv[])
/* Ic: Saving */
if (!nonick) {
- if ((f = open_db_write("NickServ", NICK_DB_NEW, 13))) {
+ if ((f = open_db_write("NickServ", NICK_DB_NEW, 14))) {
NickAlias *na;
NickCore *nc;
@@ -653,7 +653,7 @@ int main(int argc, char *argv[])
for (nc = nclists[i]; nc; nc = nc->next) {
SAFE(write_int8(1, f));
SAFE(write_string(nc->display, f));
- SAFE(write_string(nc->pass, f));
+ SAFE(write_buffer(nc->pass, f));
SAFE(write_string(nc->email, f));
SAFE(write_string(nc->greet, f));
SAFE(write_int32(nc->icq, f));
diff --git a/version.log b/version.log
index a10a8ac4a..4efe55f43 100644
--- a/version.log
+++ b/version.log
@@ -9,10 +9,14 @@ VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="22"
VERSION_EXTRA="-svn"
-VERSION_BUILD="1461"
+VERSION_BUILD="1462"
# $Log$
#
+# BUILD : 1.7.22 (1462)
+# BUGS : 940
+# NOTES : Fixed a bug in the database system causing certain nickserv password hashes to be stored incorrectly. Note that THIS BREAKS BACKWARDS COMPATIBILITY !!! As of now nick.db is no longer backwards compatible.
+#
# BUILD : 1.7.22 (1461)
# BUGS :
# NOTES : Fixed possible compile warning in os_ignore_db.