minor updates and bugfixes

This commit is contained in:
fishwaldo 2003-07-30 13:58:22 +00:00
parent ca7e8620b0
commit acbc8d4a3d
45 changed files with 7504 additions and 7799 deletions

2
.indent.pro vendored
View file

@ -1 +1 @@
-br -ce -ts8 -kr -i8 -ut -v -cdw
-v -br -brs -cdw -ce -l200 -nbc -ut -ts8 -i8

394
Bahamut.c
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: Bahamut.c,v 1.4 2003/07/23 12:45:51 fishwaldo Exp $
** $Id: Bahamut.c,v 1.5 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -150,55 +150,60 @@ Oper_Modes usr_mds[] = {
{0, 0, 0}
};
void init_ircd()
void
init_ircd ()
{
/* count the number of commands */
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
};
int sserver_cmd(const char *name, const int numeric, const char *infoline)
int
sserver_cmd (const char *name, const int numeric, const char *infoline)
{
sts(":%s %s %s %d :%s", me.name,
MSG_SERVER, name, numeric, infoline);
sts (":%s %s %s %d :%s", me.name, MSG_SERVER, name, numeric, infoline);
return 1;
}
int slogin_cmd(const char *name, const int numeric, const char *infoline,
const char *pass)
int
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
{
sts ("%s %s :TS", MSG_PASS, pass);
sts ("CAPAB TS3 SSJOIN BURST NICKIP");
sts("%s %s %d :%s", MSG_SERVER, name,
numeric, infoline);
sts ("%s %s %d :%s", MSG_SERVER, name, numeric, infoline);
return 1;
}
int ssquit_cmd(const char *server)
int
ssquit_cmd (const char *server)
{
sts ("%s %s", MSG_SQUIT, server);
return 1;
}
int sprotocol_cmd(const char *option)
int
sprotocol_cmd (const char *option)
{
return 1;
}
int squit_cmd(const char *who, const char *quitmsg)
int
squit_cmd (const char *who, const char *quitmsg)
{
sts (":%s %s :%s", who, MSG_QUIT, quitmsg);
DelUser (who);
return 1;
}
int spart_cmd(const char *who, const char *chan)
int
spart_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, MSG_PART, chan);
part_chan (finduser (who), (char *) chan);
return 1;
}
int sjoin_cmd(const char *who, const char *chan, unsigned long chflag)
int
sjoin_cmd (const char *who, const char *chan, unsigned long chflag)
{
char flag;
char mode[2];
@ -236,16 +241,14 @@ int sjoin_cmd(const char *who, const char *chan, unsigned long chflag)
return 1;
}
int schmode_cmd(const char *who, const char *chan, const char *mode,
const char *args)
int
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
{
char **av;
int ac;
char tmp[512];
sts(":%s %s %s %s %s %lu", me.name,
MSG_MODE, chan, mode, args,
time(NULL));
sts (":%s %s %s %s %s %lu", me.name, MSG_MODE, chan, mode, args, time (NULL));
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
ac = split_buf (tmp, &av, 0);
ChanMode ("", av, ac);
@ -253,8 +256,8 @@ int schmode_cmd(const char *who, const char *chan, const char *mode,
return 1;
}
int snewnick_cmd(const char *nick, const char *ident, const char *host,
const char *realname, long mode)
int
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname, long mode)
{
int i, j;
char newmode[20];
@ -268,22 +271,21 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
}
newmode[j] = '\0';
sts("%s %s 1 %lu %s %s %s %s 0 %lu :%s",
MSG_NICK, nick, time(NULL), newmode,
ident, host, me.name, time(NULL), realname);
sts ("%s %s 1 %lu %s %s %s %s 0 %lu :%s", MSG_NICK, nick, time (NULL), newmode, ident, host, me.name, time (NULL), realname);
AddUser (nick, ident, host, me.name, 0, time (NULL));
UserMode (nick, newmode, 0);
return 1;
}
int sping_cmd(const char *from, const char *reply, const char *to)
int
sping_cmd (const char *from, const char *reply, const char *to)
{
sts(":%s %s %s :%s", from, MSG_PING, reply,
to);
sts (":%s %s %s :%s", from, MSG_PING, reply, to);
return 1;
}
int sumode_cmd(const char *who, const char *target, long mode)
int
sumode_cmd (const char *who, const char *target, long mode)
{
int i, j;
char newmode[20];
@ -297,14 +299,13 @@ int sumode_cmd(const char *who, const char *target, long mode)
}
newmode[j] = '\0';
sts(":%s %s %s :%s", who, MSG_MODE, target,
newmode);
sts (":%s %s %s :%s", who, MSG_MODE, target, newmode);
UserMode (target, newmode, 0);
return 1;
}
int snumeric_cmd(const int numeric, const char *target, const char *data,
...)
int
snumeric_cmd (const int numeric, const char *target, const char *data, ...)
{
va_list ap;
char buf[512];
@ -315,160 +316,150 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
return 1;
}
int spong_cmd(const char *reply)
int
spong_cmd (const char *reply)
{
sts ("%s %s", MSG_PONG, reply);
return 1;
}
#if 0
int snetinfo_cmd()
int
snetinfo_cmd ()
{
sts(":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO,
time(NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
sts (":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO, time (NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
return 1;
}
#endif
int skill_cmd(const char *from, const char *target, const char *reason,
...)
int
skill_cmd (const char *from, const char *target, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", from, MSG_KILL,
target, buf);
sts (":%s %s %s :%s", from, MSG_KILL, target, buf);
va_end (ap);
DelUser (target);
return 1;
}
int ssvskill_cmd(const char *who, const char *reason, ...)
int
ssvskill_cmd (const char *who, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", me.name, MSG_SVSKILL,
who, buf);
sts (":%s %s %s :%s", me.name, MSG_SVSKILL, who, buf);
va_end (ap);
return 1;
}
int ssmo_cmd(const char *from, const char *umodetarget, const char *msg)
int
ssmo_cmd (const char *from, const char *umodetarget, const char *msg)
{
chanalert(s_Services,
"Warning, Module %s tried to SMO, which is not supported in Bahamut",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Module %s tried to SMO, which is not supported in Bahamut",
segvinmodule);
chanalert (s_Services, "Warning, Module %s tried to SMO, which is not supported in Bahamut", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Bahamut", segvinmodule);
return 1;
}
int snick_cmd(const char *oldnick, const char *newnick)
int
snick_cmd (const char *oldnick, const char *newnick)
{
Change_User (finduser (oldnick), newnick);
sts(":%s %s %s %d", oldnick, MSG_NICK,
newnick, time(NULL));
return 1;
}
int sswhois_cmd(const char *target, const char *swhois)
{
chanalert(s_Services,
"Warning Module %s tried to SWHOIS, which is not supported in Bahamut",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SWHOIS, which is not supported in Bahamut",
segvinmodule);
return 1;
}
int ssvsnick_cmd(const char *target, const char *newnick)
{
sts("%s %s %s :%d", MSG_SVSNICK, target,
newnick, time(NULL));
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
return 1;
}
int ssvsjoin_cmd(const char *target, const char *chan)
int
sswhois_cmd (const char *target, const char *swhois)
{
chanalert(s_Services,
"Warning Module %s tried to SVSJOIN, which is not supported in Bahamut",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SVSJOIN, which is not supported in Bahamut",
segvinmodule);
chanalert (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Bahamut", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Bahamut", segvinmodule);
return 1;
}
int ssvspart_cmd(const char *target, const char *chan)
int
ssvsnick_cmd (const char *target, const char *newnick)
{
chanalert(s_Services,
"Warning Module %s tried to SVSPART, which is not supported in Bahamut",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SVSPART, which is not supported in Bahamut",
segvinmodule);
sts ("%s %s %s :%d", MSG_SVSNICK, target, newnick, time (NULL));
return 1;
}
int skick_cmd(const char *who, const char *target, const char *chan,
const char *reason)
int
ssvsjoin_cmd (const char *target, const char *chan)
{
sts(":%s %s %s %s :%s", who, MSG_KICK,
chan, target, (reason ? reason : "No Reason Given"));
chanalert (s_Services, "Warning Module %s tried to SVSJOIN, which is not supported in Bahamut", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSJOIN, which is not supported in Bahamut", segvinmodule);
return 1;
}
int
ssvspart_cmd (const char *target, const char *chan)
{
chanalert (s_Services, "Warning Module %s tried to SVSPART, which is not supported in Bahamut", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSPART, which is not supported in Bahamut", segvinmodule);
return 1;
}
int
skick_cmd (const char *who, const char *target, const char *chan, const char *reason)
{
sts (":%s %s %s %s :%s", who, MSG_KICK, chan, target, (reason ? reason : "No Reason Given"));
part_chan (finduser (target), (char *) chan);
return 1;
}
int swallops_cmd(const char *who, const char *msg, ...)
int
swallops_cmd (const char *who, const char *msg, ...)
{
va_list ap;
char buf[512];
va_start (ap, msg);
vsnprintf (buf, 512, msg, ap);
sts(":%s %s :%s", who, MSG_WALLOPS,
buf);
sts (":%s %s :%s", who, MSG_WALLOPS, buf);
va_end (ap);
return 1;
}
int ssvshost_cmd(const char *who, const char *vhost)
int
ssvshost_cmd (const char *who, const char *vhost)
{
chanalert(s_Services,
"Warning Module %s tried to SVSHOST, which is not supported in Bahamut",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SVSHOST, which is not supported in Bahamut",
segvinmodule);
chanalert (s_Services, "Warning Module %s tried to SVSHOST, which is not supported in Bahamut", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSHOST, which is not supported in Bahamut", segvinmodule);
return 1;
}
int sakill_cmd(const char *host, const char *ident, const char *setby,
const int length, const char *reason, ...)
int
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s %s %d %s %d :%s", me.name,
MSG_AKILL, host, ident, length, setby,
time(NULL), buf);
sts (":%s %s %s %s %d %s %d :%s", me.name, MSG_AKILL, host, ident, length, setby, time (NULL), buf);
va_end (ap);
return 1;
}
int srakill_cmd(const char *host, const char *ident)
int
srakill_cmd (const char *host, const char *ident)
{
sts(":%s %s %s %s", me.name, MSG_RAKILL,
host, ident);
sts (":%s %s %s %s", me.name, MSG_RAKILL, host, ident);
return 1;
}
int ssvinfo_cmd()
int
ssvinfo_cmd ()
{
sts ("SVINFO 3 3 0 :%d", time (NULL));
return 1;
}
int sburst_cmd(int b)
int
sburst_cmd (int b)
{
if (b == 0) {
sts ("BURST 0");
@ -480,7 +471,8 @@ int sburst_cmd(int b)
void chanalert(char *who, char *buf, ...)
void
chanalert (char *who, char *buf, ...)
{
va_list ap;
char tmp[512];
@ -489,13 +481,14 @@ void chanalert(char *who, char *buf, ...)
vsnprintf (tmp, 512, buf, ap);
if (me.onchan) {
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
tmp);
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
sts ("%s", out);
}
va_end (ap);
}
void prefmsg(char *to, const char *from, char *fmt, ...)
void
prefmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -503,9 +496,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
va_start (ap, fmt);
vsnprintf (buf2, sizeof (buf2), fmt, ap);
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
if (me.want_privmsg) {
@ -516,15 +507,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
sts ("%s", buf);
va_end (ap);
}
void privmsg(char *to, const char *from, char *fmt, ...)
void
privmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -535,15 +526,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
va_end (ap);
}
void notice(char *to, const char *from, char *fmt, ...)
void
notice (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -555,7 +545,8 @@ void notice(char *to, const char *from, char *fmt, ...)
}
void privmsg_list(char *to, char *from, const char **text)
void
privmsg_list (char *to, char *from, const char **text)
{
while (*text) {
if (**text)
@ -567,7 +558,8 @@ void privmsg_list(char *to, char *from, const char **text)
}
void globops(char *from, char *fmt, ...)
void
globops (char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -588,7 +580,8 @@ void globops(char *from, char *fmt, ...)
}
void Srv_Sjoin(char *origin, char **argv, int argc)
void
Srv_Sjoin (char *origin, char **argv, int argc)
{
char nick[MAXNICK];
long mode = 0;
@ -615,22 +608,17 @@ printf("%s\n", modes);
goto nomodes;
}
while (*modes) {
for (i = 0;
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (*modes == cFlagTab[i].flag) {
if (cFlagTab[i].parameters) {
m = smalloc (sizeof (ModesParm));
m->mode = cFlagTab[i].mode;
strncpy(m->param, argv[j],
PARAMSIZE);
strncpy (m->param, argv[j], PARAMSIZE);
mn = lnode_create (m);
if (!list_isfull (tl)) {
list_append (tl, mn);
} else {
nlog(LOG_CRITICAL,
LOG_CORE,
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
j++;
@ -646,10 +634,7 @@ printf("%s\n", modes);
modes = argv[j];
mode = 0;
while (ok == 1) {
for (i = 0;
i <
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (cFlagTab[i].sjoin != 0) {
if (*modes == cFlagTab[i].sjoin) {
mode |= cFlagTab[i].mode;
@ -665,8 +650,7 @@ printf("%s\n", modes);
}
}
join_chan (finduser (nick), argv[1]);
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
mode);
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
j++;
ok = 1;
}
@ -679,15 +663,15 @@ printf("%s\n", modes);
list_transfer (c->modeparms, tl, list_first (tl));
} else {
/* eeeeeeek, list is full! */
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
}
list_destroy (tl);
}
void Srv_Burst(char *origin, char **argv, int argc)
void
Srv_Burst (char *origin, char **argv, int argc)
{
if (argc > 0) {
if (ircd_srv.burst == 1) {
@ -701,54 +685,68 @@ void Srv_Burst(char *origin, char **argv, int argc)
}
}
void Srv_Connect(char *origin, char **argv, int argc)
void
Srv_Connect (char *origin, char **argv, int argc)
{
}
void Usr_Stats(char *origin, char **argv, int argc)
void
Usr_Stats (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Recieved a Message from a Unknown User! (%s)",
origin);
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
return;
}
ShowStats (argv[0], u);
}
void Usr_Version(char *origin, char **argv, int argc)
void
Usr_Version (char *origin, char **argv, int argc)
{
snumeric_cmd(351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR,
REV, version, me.name, version_date, version_time);
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
}
void Usr_ShowMOTD(char *origin, char **argv, int argc)
void
Usr_ShowMOTD (char *origin, char **argv, int argc)
{
ShowMOTD (origin);
}
void Usr_ShowADMIN(char *origin, char **argv, int argc)
void
Usr_ShowADMIN (char *origin, char **argv, int argc)
{
ShowADMIN (origin);
}
void Usr_Showcredits(char *origin, char **argv, int argc)
void
Usr_Showcredits (char *origin, char **argv, int argc)
{
Showcredits (origin);
}
void Usr_AddServer(char *origin, char **argv, int argc)
void
Usr_AddServer (char *origin, char **argv, int argc)
{
AddServer (argv[0], origin, atoi (argv[1]));
}
void Usr_DelServer(char *origin, char **argv, int argc)
void
Usr_DelServer (char *origin, char **argv, int argc)
{
DelServer (argv[0]);
}
void Usr_DelUser(char *origin, char **argv, int argc)
void
Usr_DelUser (char *origin, char **argv, int argc)
{
DelUser (origin);
}
void Usr_Smode(char *origin, char **argv, int argc)
void
Usr_Smode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
/* its user svsmode change */
@ -758,7 +756,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Mode(char *origin, char **argv, int argc)
void
Usr_Mode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[0]);
@ -767,29 +766,30 @@ void Usr_Mode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Kill(char *origin, char **argv, int argc)
void
Usr_Kill (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
KillUser (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
}
}
void Usr_Pong(char *origin, char **argv, int argc)
void
Usr_Pong (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
dopong (s);
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Received PONG from unknown server: %s", argv[0]);
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
}
}
void Usr_Away(char *origin, char **argv, int argc)
void
Usr_Away (char *origin, char **argv, int argc)
{
char *Buf;
User *u = finduser (origin);
@ -804,18 +804,19 @@ void Usr_Away(char *origin, char **argv, int argc)
free (Buf);
}
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Unable to find User %s for Away", origin);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
}
}
void Usr_Nick(char *origin, char **argv, int argc)
void
Usr_Nick (char *origin, char **argv, int argc)
{
User *u = finduser (origin);
if (u) {
Change_User (u, argv[0]);
}
}
void Usr_Topic(char *origin, char **argv, int argc)
void
Usr_Topic (char *origin, char **argv, int argc)
{
char *buf;
Chans *c;
@ -825,13 +826,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
Change_Topic (argv[1], c, atoi (argv[2]), buf);
free (buf);
} else {
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
}
}
void Usr_Kick(char *origin, char **argv, int argc)
void
Usr_Kick (char *origin, char **argv, int argc)
{
User *u, *k;
u = finduser (argv[1]);
@ -839,12 +840,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
if (u) {
kick_chan (u, argv[0], k);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for kick %s", argv[1],
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
}
}
void Usr_Join(char *origin, char **argv, int argc)
void
Usr_Join (char *origin, char **argv, int argc)
{
char *s, *t;
t = argv[0];
@ -855,11 +855,14 @@ void Usr_Join(char *origin, char **argv, int argc)
join_chan (finduser (origin), s);
}
}
void Usr_Part(char *origin, char **argv, int argc)
void
Usr_Part (char *origin, char **argv, int argc)
{
part_chan (finduser (origin), argv[0]);
}
void Srv_Ping(char *origin, char **argv, int argc)
void
Srv_Ping (char *origin, char **argv, int argc)
{
spong_cmd (argv[0]);
if (ircd_srv.burst) {
@ -867,16 +870,19 @@ void Srv_Ping(char *origin, char **argv, int argc)
}
}
void Srv_Svinfo(char *origin, char **argv, int argc)
void
Srv_Svinfo (char *origin, char **argv, int argc)
{
ssvinfo_cmd ();
}
void Srv_Pass(char *origin, char **argv, int argc)
void
Srv_Pass (char *origin, char **argv, int argc)
{
}
void Srv_Server(char *origin, char **argv, int argc)
void
Srv_Server (char *origin, char **argv, int argc)
{
Server *s;
if (*origin == 0) {
@ -887,26 +893,27 @@ void Srv_Server(char *origin, char **argv, int argc)
s = findserver (argv[0]);
me.s = s;
}
void Srv_Squit(char *origin, char **argv, int argc)
void
Srv_Squit (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
DelServer (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Waring, Squit from Unknown Server %s", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
}
}
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
void Srv_Nick(char *origin, char **argv, int argc)
void
Srv_Nick (char *origin, char **argv, int argc)
{
char *realname;
AddUser(argv[0], argv[4], argv[5], argv[6],
strtoul(argv[8], NULL, 10), strtoul(argv[2], NULL, 10));
AddUser (argv[0], argv[4], argv[5], argv[6], strtoul (argv[8], NULL, 10), strtoul (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 9);
AddRealName (argv[0], realname);
free (realname);
@ -914,26 +921,27 @@ void Srv_Nick(char *origin, char **argv, int argc)
UserMode (argv[0], argv[3], 0);
}
void Srv_Svsnick(char *origin, char **argv, int argc)
void
Srv_Svsnick (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
Change_User (u, argv[1]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for SVSNICK", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for SVSNICK", argv[0]);
}
}
void Srv_Kill(char *origin, char **argv, int argc)
void
Srv_Kill (char *origin, char **argv, int argc)
{
}
int SignOn_NewBot(const char *nick, const char *user,
const char *host, const char *rname, long Umode)
int
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
{
snewnick_cmd (nick, user, host, rname, Umode);

View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: Bahamut.h,v 1.4 2003/07/23 12:45:51 fishwaldo Exp $
** $Id: Bahamut.h,v 1.5 2003/07/30 13:58:22 fishwaldo Exp $
*/
#ifndef BAHAMUT_H
#define BAHAMUT_H

View file

@ -3,6 +3,8 @@ NeoStats ChangeLog - Anything we add/remove/fix/change is in here (even our rant
- Fixed a core with using strcasecmp instead of strcmp in the parse function.
- Moved is_pub_chan from SecureServ to NeoStats
- Implemented Bahamut support and necessary functions
- make the ping time configurable.
- Make Timers deletable from inside the timer function!
* NeoStats * Fish * Version 2.5.4 Pre2
- Fixed a problem with statserv and the HTML settings

373
Ircu.c
View file

@ -18,7 +18,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: Ircu.c,v 1.1 2003/06/30 15:18:23 fishwaldo Exp $
** $Id: Ircu.c,v 1.2 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -165,28 +165,30 @@ Oper_Modes usr_mds[] = {
{0, 0, 0}
};
void init_ircd()
void
init_ircd ()
{
/* count the number of commands */
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
};
int seob_cmd(const char *server)
int
seob_cmd (const char *server)
{
sts (":%s %s", server, MSG_EOB);
return 1;
}
int sserver_cmd(const char *name, const int numeric, const char *infoline)
int
sserver_cmd (const char *name, const int numeric, const char *infoline)
{
sts(":%s %s %s %d :%s", me.name, MSG_SERVER, name, numeric,
infoline);
sts (":%s %s %s %d :%s", me.name, MSG_SERVER, name, numeric, infoline);
return 1;
}
int slogin_cmd(const char *name, const int numeric, const char *infoline,
const char *pass)
int
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
{
sts ("%s %s :TS", MSG_PASS, pass);
sts ("CAPAB :TS EX CHW IE EOB KLN GLN KNOCK HOPS HUB AOPS MX");
@ -194,55 +196,60 @@ int slogin_cmd(const char *name, const int numeric, const char *infoline,
return 1;
}
int ssquit_cmd(const char *server)
int
ssquit_cmd (const char *server)
{
sts ("%s %s", MSG_SQUIT, server);
return 1;
}
int sprotocol_cmd(const char *option)
int
sprotocol_cmd (const char *option)
{
return 1;
}
int squit_cmd(const char *who, const char *quitmsg)
int
squit_cmd (const char *who, const char *quitmsg)
{
sts (":%s %s :%s", who, MSG_QUIT, quitmsg);
DelUser (who);
return 1;
}
int spart_cmd(const char *who, const char *chan)
int
spart_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, MSG_PART, chan);
part_chan (finduser (who), (char *) chan);
return 1;
}
int sjoin_cmd(const char *who, const char *chan)
int
sjoin_cmd (const char *who, const char *chan)
{
sts (":%s %s 0 %s + :%s", me.name, MSG_SJOIN, chan, who);
join_chan (finduser (who), (char *) chan);
return 1;
}
int schmode_cmd(const char *who, const char *chan, const char *mode,
const char *args)
int
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
{
char **av;
int ac;
char tmp[512];
sts(":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args,
time(NULL));
sts (":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args, time (NULL));
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
ac = split_buf (tmp, &av, 0);
ChanMode ("", av, ac);
free (av);
return 1;
}
int snewnick_cmd(const char *nick, const char *ident, const char *host,
const char *realname, long mode)
int
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname, long mode)
{
int i, j;
char newmode[20];
@ -256,20 +263,21 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
}
newmode[j] = '\0';
sts("%s %s 1 %lu %s %s %s %s :%s", MSG_NICK, nick, time(NULL),
newmode, ident, host, me.name, realname);
sts ("%s %s 1 %lu %s %s %s %s :%s", MSG_NICK, nick, time (NULL), newmode, ident, host, me.name, realname);
AddUser (nick, ident, host, me.name, 0, time (NULL));
UserMode (nick, newmode, 0);
return 1;
}
int sping_cmd(const char *from, const char *reply, const char *to)
int
sping_cmd (const char *from, const char *reply, const char *to)
{
sts (":%s %s %s :%s", from, MSG_PING, reply, to);
return 1;
}
int sumode_cmd(const char *who, const char *target, long mode)
int
sumode_cmd (const char *who, const char *target, long mode)
{
int i, j;
char newmode[20];
@ -288,8 +296,8 @@ int sumode_cmd(const char *who, const char *target, long mode)
return 1;
}
int snumeric_cmd(const int numeric, const char *target, const char *data,
...)
int
snumeric_cmd (const int numeric, const char *target, const char *data, ...)
{
va_list ap;
char buf[512];
@ -300,15 +308,16 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
return 1;
}
int spong_cmd(const char *reply)
int
spong_cmd (const char *reply)
{
sts ("%s %s", MSG_PONG, reply);
return 1;
}
int skill_cmd(const char *from, const char *target, const char *reason,
...)
int
skill_cmd (const char *from, const char *target, const char *reason, ...)
{
va_list ap;
char buf[512];
@ -319,89 +328,79 @@ int skill_cmd(const char *from, const char *target, const char *reason,
DelUser (target);
return 1;
}
int ssvskill_cmd(const char *who, const char *reason, ...)
int
ssvskill_cmd (const char *who, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", me.name, MSG_KILL,
who, buf);
sts (":%s %s %s :%s", me.name, MSG_KILL, who, buf);
va_end (ap);
/* hybrid doesn't have svskill, so this is handled just like a normal kill */
DelUser (who);
return 1;
}
int ssmo_cmd(const char *from, const char *umodetarget, const char *msg)
int
ssmo_cmd (const char *from, const char *umodetarget, const char *msg)
{
notice(s_Services,
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
return 1;
}
int snick_cmd(const char *oldnick, const char *newnick)
int
snick_cmd (const char *oldnick, const char *newnick)
{
Change_User (finduser (oldnick), newnick);
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
return 1;
}
int sswhois_cmd(const char *target, const char *swhois)
int
sswhois_cmd (const char *target, const char *swhois)
{
notice(s_Services,
"Warning Module %s tried to SWHOIS, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SWHOIS, which is not supported in Hybrid",
segvinmodule);
return 1;
}
int ssvsnick_cmd(const char *target, const char *newnick)
{
notice(s_Services,
"Warning Module %s tried to SVSNICK, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SVSNICK, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Hybrid", segvinmodule);
return 1;
}
int ssvsjoin_cmd(const char *target, const char *chan)
int
ssvsnick_cmd (const char *target, const char *newnick)
{
notice(s_Services,
"Warning Module %s tried to SJOIN, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SJOIN, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning Module %s tried to SVSNICK, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSNICK, which is not supported in Hybrid", segvinmodule);
return 1;
}
int ssvspart_cmd(const char *target, const char *chan)
int
ssvsjoin_cmd (const char *target, const char *chan)
{
notice(s_Services,
"Warning Module %s tried to SVSPART, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SVSPART, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning Module %s tried to SJOIN, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SJOIN, which is not supported in Hybrid", segvinmodule);
return 1;
}
int skick_cmd(const char *who, const char *target, const char *chan,
const char *reason)
int
ssvspart_cmd (const char *target, const char *chan)
{
sts(":%s %s %s %s :%s", who, MSG_KICK, chan, target,
(reason ? reason : "No Reason Given"));
notice (s_Services, "Warning Module %s tried to SVSPART, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSPART, which is not supported in Hybrid", segvinmodule);
return 1;
}
int
skick_cmd (const char *who, const char *target, const char *chan, const char *reason)
{
sts (":%s %s %s %s :%s", who, MSG_KICK, chan, target, (reason ? reason : "No Reason Given"));
part_chan (finduser (target), (char *) chan);
return 1;
}
int swallops_cmd(const char *who, const char *msg, ...)
int
swallops_cmd (const char *who, const char *msg, ...)
{
va_list ap;
char buf[512];
@ -412,23 +411,23 @@ int swallops_cmd(const char *who, const char *msg, ...)
return 1;
}
int ssvshost_cmd(const char *who, const char *vhost)
int
ssvshost_cmd (const char *who, const char *vhost)
{
notice(s_Services,
"Warning Module %s tried to SVSHOST, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SVSHOST, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning Module %s tried to SVSHOST, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSHOST, which is not supported in Hybrid", segvinmodule);
return 1;
}
int ssvinfo_cmd()
int
ssvinfo_cmd ()
{
sts ("SVINFO 5 3 0 :%d", time (NULL));
return 1;
}
int sburst_cmd(int b)
int
sburst_cmd (int b)
{
if (b == 0) {
sts ("BURST 0");
@ -438,8 +437,8 @@ int sburst_cmd(int b)
return 1;
}
int sakill_cmd(const char *host, const char *ident, const char *setby,
const int length, const char *reason, ...)
int
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
{
/* there isn't a akill on Hybrid, so we send a kline to all servers! */
hscan_t ss;
@ -454,21 +453,22 @@ int sakill_cmd(const char *host, const char *ident, const char *setby,
hash_scan_begin (&ss, sh);
while ((sn = hash_scan_next (&ss)) != NULL) {
s = hnode_get (sn);
sts(":%s %s %s %lu %s %s :%s", setby, MSG_KLINE, s->name,
length, ident, host, buf);
sts (":%s %s %s %lu %s %s :%s", setby, MSG_KLINE, s->name, length, ident, host, buf);
}
va_end (ap);
return 1;
}
int srakill_cmd(const char *host, const char *ident)
int
srakill_cmd (const char *host, const char *ident)
{
chanalert(s_Services,
"Please Manually remove KLINES using /unkline on each server");
chanalert (s_Services, "Please Manually remove KLINES using /unkline on each server");
return 1;
}
void chanalert(char *who, char *buf, ...)
void
chanalert (char *who, char *buf, ...)
{
va_list ap;
char tmp[512];
@ -477,14 +477,15 @@ void chanalert(char *who, char *buf, ...)
vsnprintf (tmp, 512, buf, ap);
if (me.onchan) {
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
tmp);
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
sts ("%s", out);
}
va_end (ap);
}
void prefmsg(char *to, const char *from, char *fmt, ...)
void
prefmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -492,9 +493,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
va_start (ap, fmt);
vsnprintf (buf2, sizeof (buf2), fmt, ap);
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
if (me.want_privmsg) {
@ -505,15 +504,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
sts ("%s", buf);
va_end (ap);
}
void privmsg(char *to, const char *from, char *fmt, ...)
void
privmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -524,15 +523,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
va_end (ap);
}
void notice(char *to, const char *from, char *fmt, ...)
void
notice (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -544,7 +542,8 @@ void notice(char *to, const char *from, char *fmt, ...)
}
void privmsg_list(char *to, char *from, const char **text)
void
privmsg_list (char *to, char *from, const char **text)
{
while (*text) {
if (**text)
@ -556,7 +555,8 @@ void privmsg_list(char *to, char *from, const char **text)
}
void globops(char *from, char *fmt, ...)
void
globops (char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -576,7 +576,8 @@ void globops(char *from, char *fmt, ...)
va_end (ap);
}
void Srv_Sjoin(char *origin, char **argv, int argc)
void
Srv_Sjoin (char *origin, char **argv, int argc)
{
char nick[MAXNICK];
long mode = 0;
@ -603,22 +604,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
goto nomodes;
}
while (*modes) {
for (i = 0;
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (*modes == cFlagTab[i].flag) {
if (cFlagTab[i].parameters) {
m = smalloc (sizeof (ModesParm));
m->mode = cFlagTab[i].mode;
strncpy(m->param, argv[j],
PARAMSIZE);
strncpy (m->param, argv[j], PARAMSIZE);
mn = lnode_create (m);
if (!list_isfull (tl)) {
list_append (tl, mn);
} else {
nlog(LOG_CRITICAL,
LOG_CORE,
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
j++;
@ -634,10 +630,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
modes = argv[j];
mode = 0;
while (ok == 1) {
for (i = 0;
i <
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (cFlagTab[i].sjoin != 0) {
if (*modes == cFlagTab[i].sjoin) {
mode |= cFlagTab[i].mode;
@ -650,8 +643,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
break;
}
join_chan (finduser (nick), argv[1]);
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
mode);
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
j++;
ok = 1;
}
@ -662,15 +654,15 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
list_transfer (c->modeparms, tl, list_first (tl));
} else {
/* eeeeeeek, list is full! */
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
}
list_destroy (tl);
}
void Srv_Burst(char *origin, char **argv, int argc)
void
Srv_Burst (char *origin, char **argv, int argc)
{
if (argc > 0) {
if (ircd_srv.burst == 1) {
@ -686,7 +678,8 @@ void Srv_Burst(char *origin, char **argv, int argc)
init_ServBot ();
}
void Srv_Connect(char *origin, char **argv, int argc)
void
Srv_Connect (char *origin, char **argv, int argc)
{
int i;
@ -698,49 +691,62 @@ void Srv_Connect(char *origin, char **argv, int argc)
}
void Usr_Stats(char *origin, char **argv, int argc)
void
Usr_Stats (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Recieved a Message from a Unknown User! (%s)",
origin);
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
}
ShowStats (argv[0], u);
}
void Usr_Version(char *origin, char **argv, int argc)
void
Usr_Version (char *origin, char **argv, int argc)
{
snumeric_cmd(351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR,
REV, version, me.name, version_date, version_time);
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
}
void Usr_ShowMOTD(char *origin, char **argv, int argc)
void
Usr_ShowMOTD (char *origin, char **argv, int argc)
{
ShowMOTD (origin);
}
void Usr_ShowADMIN(char *origin, char **argv, int argc)
void
Usr_ShowADMIN (char *origin, char **argv, int argc)
{
ShowADMIN (origin);
}
void Usr_Showcredits(char *origin, char **argv, int argc)
void
Usr_Showcredits (char *origin, char **argv, int argc)
{
Showcredits (origin);
}
void Usr_AddServer(char *origin, char **argv, int argc)
void
Usr_AddServer (char *origin, char **argv, int argc)
{
AddServer (argv[0], origin, atoi (argv[1]));
}
void Usr_DelServer(char *origin, char **argv, int argc)
void
Usr_DelServer (char *origin, char **argv, int argc)
{
DelServer (argv[0]);
}
void Usr_DelUser(char *origin, char **argv, int argc)
void
Usr_DelUser (char *origin, char **argv, int argc)
{
DelUser (origin);
}
void Usr_Smode(char *origin, char **argv, int argc)
void
Usr_Smode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
/* its user svsmode change */
@ -750,7 +756,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Mode(char *origin, char **argv, int argc)
void
Usr_Mode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[0]);
@ -759,18 +766,19 @@ void Usr_Mode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Kill(char *origin, char **argv, int argc)
void
Usr_Kill (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
KillUser (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
}
}
void Usr_Vhost(char *origin, char **argv, int argc)
void
Usr_Vhost (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
@ -778,18 +786,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
strncpy (u->vhost, argv[0], MAXHOST);
}
}
void Usr_Pong(char *origin, char **argv, int argc)
void
Usr_Pong (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
dopong (s);
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Received PONG from unknown server: %s", argv[0]);
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
}
}
void Usr_Away(char *origin, char **argv, int argc)
void
Usr_Away (char *origin, char **argv, int argc)
{
User *u = finduser (origin);
char *buf;
@ -804,22 +813,22 @@ void Usr_Away(char *origin, char **argv, int argc)
free (buf);
}
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Unable to find User %s for Away", origin);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
}
}
void Usr_Nick(char *origin, char **argv, int argc)
void
Usr_Nick (char *origin, char **argv, int argc)
{
User *u = finduser (origin);
if (u) {
Change_User (u, argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Ehh, Can't find the user for %s", origin);
nlog (LOG_WARNING, LOG_CORE, "Ehh, Can't find the user for %s", origin);
}
}
void Usr_Topic(char *origin, char **argv, int argc)
void
Usr_Topic (char *origin, char **argv, int argc)
{
char *buf;
Chans *c;
@ -829,25 +838,24 @@ void Usr_Topic(char *origin, char **argv, int argc)
Change_Topic (origin, c, time (NULL), buf);
free (buf);
} else {
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
}
}
void Usr_Kick(char *origin, char **argv, int argc)
void
Usr_Kick (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[1]);
if (u) {
kick_chan (u, argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for kick %s", argv[1],
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
}
}
void Usr_Join(char *origin, char **argv, int argc)
void
Usr_Join (char *origin, char **argv, int argc)
{
char *s, *t;
t = argv[0];
@ -858,21 +866,26 @@ void Usr_Join(char *origin, char **argv, int argc)
join_chan (finduser (origin), s);
}
}
void Usr_Part(char *origin, char **argv, int argc)
void
Usr_Part (char *origin, char **argv, int argc)
{
part_chan (finduser (origin), argv[0]);
}
void Srv_Ping(char *origin, char **argv, int argc)
void
Srv_Ping (char *origin, char **argv, int argc)
{
spong_cmd (argv[0]);
}
void Srv_Svinfo(char *origin, char **argv, int argc)
void
Srv_Svinfo (char *origin, char **argv, int argc)
{
ssvinfo_cmd ();
}
void Srv_Netinfo(char *origin, char **argv, int argc)
void
Srv_Netinfo (char *origin, char **argv, int argc)
{
me.onchan = 1;
ircd_srv.uprot = atoi (argv[2]);
@ -887,10 +900,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
me.synced = 1;
}
void Srv_Pass(char *origin, char **argv, int argc)
void
Srv_Pass (char *origin, char **argv, int argc)
{
}
void Srv_Server(char *origin, char **argv, int argc)
void
Srv_Server (char *origin, char **argv, int argc)
{
Server *s;
if (*origin == 0) {
@ -901,27 +916,28 @@ void Srv_Server(char *origin, char **argv, int argc)
s = findserver (argv[0]);
me.s = s;
}
void Srv_Squit(char *origin, char **argv, int argc)
void
Srv_Squit (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
DelServer (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Waring, Squit from Unknown Server %s", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
}
}
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
void Srv_Nick(char *origin, char **argv, int argc)
void
Srv_Nick (char *origin, char **argv, int argc)
{
char *realname;
AddUser(argv[0], argv[4], argv[5], argv[6], 0,
strtoul(argv[2], NULL, 10));
AddUser (argv[0], argv[4], argv[5], argv[6], 0, strtoul (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 7);
AddRealName (argv[0], realname);
free (realname);
@ -929,12 +945,13 @@ void Srv_Nick(char *origin, char **argv, int argc)
UserMode (argv[0], argv[3], 0);
}
void Srv_Kill(char *origin, char **argv, int argc)
void
Srv_Kill (char *origin, char **argv, int argc)
{
}
int SignOn_NewBot(const char *nick, const char *user, const char *host,
const char *rname, long Umode)
int
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
{
snewnick_cmd (nick, user, host, rname, Umode);

2
Ircu.h
View file

@ -18,7 +18,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: Ircu.h,v 1.1 2003/06/30 15:18:23 fishwaldo Exp $
** $Id: Ircu.h,v 1.2 2003/07/30 13:58:22 fishwaldo Exp $
*/

View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: QuantumIRCd.c,v 1.2 2003/07/15 11:21:45 fishwaldo Exp $
** $Id: QuantumIRCd.c,v 1.3 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -298,55 +298,60 @@ Oper_Modes susr_mds[] = {
};
void init_ircd()
void
init_ircd ()
{
/* count the number of commands */
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
};
int sserver_cmd(const char *name, const int numeric, const char *infoline)
int
sserver_cmd (const char *name, const int numeric, const char *infoline)
{
sts(":%s %s %s %d :%s", me.name,
(me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
sts (":%s %s %s %d :%s", me.name, (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
return 1;
}
int slogin_cmd(const char *name, const int numeric, const char *infoline,
const char *pass)
int
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
{
sts ("%s %s :TS", (me.token ? TOK_PASS : MSG_PASS), pass);
sts ("CAPAB TS5 BURST SSJ5 NICKIP CLIENT");
sts("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name,
numeric, infoline);
sts ("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
return 1;
}
int ssquit_cmd(const char *server)
int
ssquit_cmd (const char *server)
{
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
return 1;
}
int sprotocol_cmd(const char *option)
int
sprotocol_cmd (const char *option)
{
return 1;
}
int squit_cmd(const char *who, const char *quitmsg)
int
squit_cmd (const char *who, const char *quitmsg)
{
sts (":%s %s :%s", who, (me.token ? TOK_QUIT : MSG_QUIT), quitmsg);
DelUser (who);
return 1;
}
int spart_cmd(const char *who, const char *chan)
int
spart_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, (me.token ? TOK_PART : MSG_PART), chan);
part_chan (finduser (who), (char *) chan);
return 1;
}
int sjoin_cmd(const char *who, const char *chan, unsigned long chflag)
int
sjoin_cmd (const char *who, const char *chan, unsigned long chflag)
{
char flag;
char mode[2];
@ -392,16 +397,14 @@ int sjoin_cmd(const char *who, const char *chan, unsigned long chflag)
return 1;
}
int schmode_cmd(const char *who, const char *chan, const char *mode,
const char *args)
int
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
{
char **av;
int ac;
char tmp[512];
sts(":%s %s %s %s %s %lu", me.name,
(me.token ? TOK_MODE : MSG_MODE), chan, mode, args,
time(NULL));
sts (":%s %s %s %s %s %lu", me.name, (me.token ? TOK_MODE : MSG_MODE), chan, mode, args, time (NULL));
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
ac = split_buf (tmp, &av, 0);
ChanMode ("", av, ac);
@ -409,8 +412,8 @@ int schmode_cmd(const char *who, const char *chan, const char *mode,
return 1;
}
int snewnick_cmd(const char *nick, const char *ident, const char *host,
const char *realname, long mode)
int
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname, long mode)
{
int i, j;
char newmode[20];
@ -424,22 +427,21 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
}
newmode[j] = '\0';
sts("%s %s 1 %lu %s %s %s %s 0 %lu :%s",
(me.token ? TOK_NICK : MSG_NICK), nick, time(NULL), newmode,
ident, host, me.name, time(NULL), realname);
sts ("%s %s 1 %lu %s %s %s %s 0 %lu :%s", (me.token ? TOK_NICK : MSG_NICK), nick, time (NULL), newmode, ident, host, me.name, time (NULL), realname);
AddUser (nick, ident, host, me.name, 0, time (NULL));
UserMode (nick, newmode, 0);
return 1;
}
int sping_cmd(const char *from, const char *reply, const char *to)
int
sping_cmd (const char *from, const char *reply, const char *to)
{
sts(":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply,
to);
sts (":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply, to);
return 1;
}
int sumode_cmd(const char *who, const char *target, long mode)
int
sumode_cmd (const char *who, const char *target, long mode)
{
int i, j;
char newmode[20];
@ -453,14 +455,13 @@ int sumode_cmd(const char *who, const char *target, long mode)
}
newmode[j] = '\0';
sts(":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target,
newmode);
sts (":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target, newmode);
UserMode (target, newmode, 0);
return 1;
}
int snumeric_cmd(const int numeric, const char *target, const char *data,
...)
int
snumeric_cmd (const int numeric, const char *target, const char *data, ...)
{
va_list ap;
char buf[512];
@ -471,164 +472,160 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
return 1;
}
int spong_cmd(const char *reply)
int
spong_cmd (const char *reply)
{
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
return 1;
}
int snetinfo_cmd()
int
snetinfo_cmd ()
{
sts(":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO,
time(NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
sts (":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO, time (NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
return 1;
}
int vctrl_cmd()
int
vctrl_cmd ()
{
sts("%s %d %d %d %d 0 0 0 0 0 0 0 0 0 0 :%s", MSG_VCTRL,
ircd_srv.uprot, ircd_srv.nicklg, ircd_srv.modex, ircd_srv.gc,
me.netname);
sts ("%s %d %d %d %d 0 0 0 0 0 0 0 0 0 0 :%s", MSG_VCTRL, ircd_srv.uprot, ircd_srv.nicklg, ircd_srv.modex, ircd_srv.gc, me.netname);
return 1;
}
int skill_cmd(const char *from, const char *target, const char *reason,
...)
int
skill_cmd (const char *from, const char *target, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL),
target, buf);
sts (":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL), target, buf);
va_end (ap);
DelUser (target);
return 1;
}
int ssvskill_cmd(const char *who, const char *reason, ...)
int
ssvskill_cmd (const char *who, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", me.name, MSG_SVSKILL,
who, buf);
sts (":%s %s %s :%s", me.name, MSG_SVSKILL, who, buf);
va_end (ap);
return 1;
}
int ssmo_cmd(const char *from, const char *umodetarget, const char *msg)
int
ssmo_cmd (const char *from, const char *umodetarget, const char *msg)
{
chanalert(s_Services,
"Warning, Module %s tried to SMO, which is not supported in Ultimate",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Module %s tried to SMO, which is not supported in Ultimate",
segvinmodule);
chanalert (s_Services, "Warning, Module %s tried to SMO, which is not supported in Ultimate", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Ultimate", segvinmodule);
return 1;
}
int snick_cmd(const char *oldnick, const char *newnick)
int
snick_cmd (const char *oldnick, const char *newnick)
{
Change_User (finduser (oldnick), newnick);
sts(":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK),
newnick, time(NULL));
return 1;
}
int sswhois_cmd(const char *target, const char *swhois)
{
chanalert(s_Services,
"Warning Module %s tried to SWHOIS, which is not supported in Ultimate",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SWHOIS, which is not supported in Ultimate",
segvinmodule);
return 1;
}
int ssvsnick_cmd(const char *target, const char *newnick)
{
sts("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target,
newnick, time(NULL));
sts (":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK), newnick, time (NULL));
return 1;
}
int ssvsjoin_cmd(const char *target, const char *chan)
int
sswhois_cmd (const char *target, const char *swhois)
{
sts("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target,
chan);
chanalert (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Ultimate", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Ultimate", segvinmodule);
return 1;
}
int ssvspart_cmd(const char *target, const char *chan)
int
ssvsnick_cmd (const char *target, const char *newnick)
{
sts("%s %s %s", (me.token ? TOK_SVSPART : MSG_SVSPART), target,
chan);
sts ("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target, newnick, time (NULL));
return 1;
}
int skick_cmd(const char *who, const char *target, const char *chan,
const char *reason)
int
ssvsjoin_cmd (const char *target, const char *chan)
{
sts(":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK),
chan, target, (reason ? reason : "No Reason Given"));
sts ("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target, chan);
return 1;
}
int
ssvspart_cmd (const char *target, const char *chan)
{
sts ("%s %s %s", (me.token ? TOK_SVSPART : MSG_SVSPART), target, chan);
return 1;
}
int
skick_cmd (const char *who, const char *target, const char *chan, const char *reason)
{
sts (":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK), chan, target, (reason ? reason : "No Reason Given"));
part_chan (finduser (target), (char *) chan);
return 1;
}
int swallops_cmd(const char *who, const char *msg, ...)
int
swallops_cmd (const char *who, const char *msg, ...)
{
va_list ap;
char buf[512];
va_start (ap, msg);
vsnprintf (buf, 512, msg, ap);
sts(":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS),
buf);
sts (":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS), buf);
va_end (ap);
return 1;
}
int ssvshost_cmd(const char *who, const char *vhost)
int
ssvshost_cmd (const char *who, const char *vhost)
{
User *u;
u = finduser (who);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Can't Find user %s for ssvshost_cmd", who);
nlog (LOG_WARNING, LOG_CORE, "Can't Find user %s for ssvshost_cmd", who);
return 0;
} else {
strncpy (u->vhost, vhost, MAXHOST);
sts(":%s %s %s %s", me.name,
(me.token ? TOK_SETHOST : MSG_SETHOST), who, vhost);
sts (":%s %s %s %s", me.name, (me.token ? TOK_SETHOST : MSG_SETHOST), who, vhost);
return 1;
}
}
int sakill_cmd(const char *host, const char *ident, const char *setby,
const int length, const char *reason, ...)
int
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s %s %d %s %d :%s", me.name,
(me.token ? TOK_AKILL : MSG_AKILL), host, ident, length, setby,
time(NULL), buf);
sts (":%s %s %s %s %d %s %d :%s", me.name, (me.token ? TOK_AKILL : MSG_AKILL), host, ident, length, setby, time (NULL), buf);
va_end (ap);
return 1;
}
int srakill_cmd(const char *host, const char *ident)
int
srakill_cmd (const char *host, const char *ident)
{
sts(":%s %s %s %s", me.name, (me.token ? TOK_RAKILL : MSG_RAKILL),
host, ident);
sts (":%s %s %s %s", me.name, (me.token ? TOK_RAKILL : MSG_RAKILL), host, ident);
return 1;
}
int ssvinfo_cmd()
int
ssvinfo_cmd ()
{
sts ("SVINFO 5 3 0 :%d", time (NULL));
return 1;
}
int sburst_cmd(int b)
int
sburst_cmd (int b)
{
if (b == 0) {
sts ("BURST 0");
@ -640,7 +637,8 @@ int sburst_cmd(int b)
void chanalert(char *who, char *buf, ...)
void
chanalert (char *who, char *buf, ...)
{
va_list ap;
char tmp[512];
@ -649,14 +647,15 @@ void chanalert(char *who, char *buf, ...)
vsnprintf (tmp, 512, buf, ap);
if (me.onchan) {
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
tmp);
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
sts ("%s", out);
}
va_end (ap);
}
void prefmsg(char *to, const char *from, char *fmt, ...)
void
prefmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -664,9 +663,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
va_start (ap, fmt);
vsnprintf (buf2, sizeof (buf2), fmt, ap);
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
if (me.want_privmsg) {
@ -677,15 +674,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
sts ("%s", buf);
va_end (ap);
}
void privmsg(char *to, const char *from, char *fmt, ...)
void
privmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -696,15 +693,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
va_end (ap);
}
void notice(char *to, const char *from, char *fmt, ...)
void
notice (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -716,7 +712,8 @@ void notice(char *to, const char *from, char *fmt, ...)
}
void privmsg_list(char *to, char *from, const char **text)
void
privmsg_list (char *to, char *from, const char **text)
{
while (*text) {
if (**text)
@ -728,7 +725,8 @@ void privmsg_list(char *to, char *from, const char **text)
}
void globops(char *from, char *fmt, ...)
void
globops (char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -749,7 +747,8 @@ void globops(char *from, char *fmt, ...)
}
void Srv_Sjoin(char *origin, char **argv, int argc)
void
Srv_Sjoin (char *origin, char **argv, int argc)
{
char nick[MAXNICK];
long mode = 0;
@ -776,22 +775,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
goto nomodes;
}
while (*modes) {
for (i = 0;
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (*modes == cFlagTab[i].flag) {
if (cFlagTab[i].parameters) {
m = smalloc (sizeof (ModesParm));
m->mode = cFlagTab[i].mode;
strncpy(m->param, argv[j],
PARAMSIZE);
strncpy (m->param, argv[j], PARAMSIZE);
mn = lnode_create (m);
if (!list_isfull (tl)) {
list_append (tl, mn);
} else {
nlog(LOG_CRITICAL,
LOG_CORE,
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
j++;
@ -807,10 +801,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
modes = argv[j];
mode = 0;
while (ok == 1) {
for (i = 0;
i <
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (cFlagTab[i].sjoin != 0) {
if (*modes == cFlagTab[i].sjoin) {
mode |= cFlagTab[i].mode;
@ -826,8 +817,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
}
}
join_chan (finduser (nick), argv[1]);
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
mode);
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
j++;
ok = 1;
}
@ -838,15 +828,15 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
list_transfer (c->modeparms, tl, list_first (tl));
} else {
/* eeeeeeek, list is full! */
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
}
list_destroy (tl);
}
void Srv_Burst(char *origin, char **argv, int argc)
void
Srv_Burst (char *origin, char **argv, int argc)
{
if (argc > 0) {
if (ircd_srv.burst == 1) {
@ -860,7 +850,8 @@ void Srv_Burst(char *origin, char **argv, int argc)
}
}
void Srv_Connect(char *origin, char **argv, int argc)
void
Srv_Connect (char *origin, char **argv, int argc)
{
int i;
@ -875,49 +866,62 @@ void Srv_Connect(char *origin, char **argv, int argc)
}
void Usr_Stats(char *origin, char **argv, int argc)
void
Usr_Stats (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Recieved a Message from a Unknown User! (%s)",
origin);
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
return;
}
ShowStats (argv[0], u);
}
void Usr_Version(char *origin, char **argv, int argc)
void
Usr_Version (char *origin, char **argv, int argc)
{
snumeric_cmd(351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR,
REV, version, me.name, version_date, version_time);
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
}
void Usr_ShowMOTD(char *origin, char **argv, int argc)
void
Usr_ShowMOTD (char *origin, char **argv, int argc)
{
ShowMOTD (origin);
}
void Usr_ShowADMIN(char *origin, char **argv, int argc)
void
Usr_ShowADMIN (char *origin, char **argv, int argc)
{
ShowADMIN (origin);
}
void Usr_Showcredits(char *origin, char **argv, int argc)
void
Usr_Showcredits (char *origin, char **argv, int argc)
{
Showcredits (origin);
}
void Usr_AddServer(char *origin, char **argv, int argc)
void
Usr_AddServer (char *origin, char **argv, int argc)
{
AddServer (argv[0], origin, atoi (argv[1]));
}
void Usr_DelServer(char *origin, char **argv, int argc)
void
Usr_DelServer (char *origin, char **argv, int argc)
{
DelServer (argv[0]);
}
void Usr_DelUser(char *origin, char **argv, int argc)
void
Usr_DelUser (char *origin, char **argv, int argc)
{
DelUser (origin);
}
void Usr_Smode(char *origin, char **argv, int argc)
void
Usr_Smode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
/* its user svsmode change */
@ -927,7 +931,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Mode(char *origin, char **argv, int argc)
void
Usr_Mode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s %s", argv[0], argv[1]);
@ -936,18 +941,19 @@ void Usr_Mode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Kill(char *origin, char **argv, int argc)
void
Usr_Kill (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
KillUser (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
}
}
void Usr_Vhost(char *origin, char **argv, int argc)
void
Usr_Vhost (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
@ -955,18 +961,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
strncpy (u->vhost, argv[1], MAXHOST);
}
}
void Usr_Pong(char *origin, char **argv, int argc)
void
Usr_Pong (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
dopong (s);
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Received PONG from unknown server: %s", argv[0]);
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
}
}
void Usr_Away(char *origin, char **argv, int argc)
void
Usr_Away (char *origin, char **argv, int argc)
{
char *Buf;
User *u = finduser (origin);
@ -981,18 +988,19 @@ void Usr_Away(char *origin, char **argv, int argc)
free (Buf);
}
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Unable to find User %s for Away", origin);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
}
}
void Usr_Nick(char *origin, char **argv, int argc)
void
Usr_Nick (char *origin, char **argv, int argc)
{
User *u = finduser (origin);
if (u) {
Change_User (u, argv[0]);
}
}
void Usr_Topic(char *origin, char **argv, int argc)
void
Usr_Topic (char *origin, char **argv, int argc)
{
char *buf;
Chans *c;
@ -1002,13 +1010,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
Change_Topic (argv[1], c, atoi (argv[2]), buf);
free (buf);
} else {
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
}
}
void Usr_Kick(char *origin, char **argv, int argc)
void
Usr_Kick (char *origin, char **argv, int argc)
{
User *u, *k;
u = finduser (argv[1]);
@ -1016,12 +1024,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
if ((u) && (k)) {
kick_chan (u, argv[0], k);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for kick %s", argv[1],
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
}
}
void Usr_Join(char *origin, char **argv, int argc)
void
Usr_Join (char *origin, char **argv, int argc)
{
char *s, *t;
t = argv[0];
@ -1032,11 +1039,14 @@ void Usr_Join(char *origin, char **argv, int argc)
join_chan (finduser (origin), s);
}
}
void Usr_Part(char *origin, char **argv, int argc)
void
Usr_Part (char *origin, char **argv, int argc)
{
part_chan (finduser (origin), argv[0]);
}
void Srv_Ping(char *origin, char **argv, int argc)
void
Srv_Ping (char *origin, char **argv, int argc)
{
spong_cmd (argv[0]);
if (ircd_srv.burst) {
@ -1044,7 +1054,8 @@ void Srv_Ping(char *origin, char **argv, int argc)
}
}
void Srv_Vctrl(char *origin, char **argv, int argc)
void
Srv_Vctrl (char *origin, char **argv, int argc)
{
ircd_srv.uprot = atoi (argv[0]);
ircd_srv.nicklg = atoi (argv[1]);
@ -1054,16 +1065,19 @@ void Srv_Vctrl(char *origin, char **argv, int argc)
vctrl_cmd ();
}
void Srv_Svinfo(char *origin, char **argv, int argc)
void
Srv_Svinfo (char *origin, char **argv, int argc)
{
ssvinfo_cmd ();
}
void Srv_Pass(char *origin, char **argv, int argc)
void
Srv_Pass (char *origin, char **argv, int argc)
{
}
void Srv_Server(char *origin, char **argv, int argc)
void
Srv_Server (char *origin, char **argv, int argc)
{
Server *s;
if (*origin == 0) {
@ -1074,26 +1088,27 @@ void Srv_Server(char *origin, char **argv, int argc)
s = findserver (argv[0]);
me.s = s;
}
void Srv_Squit(char *origin, char **argv, int argc)
void
Srv_Squit (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
DelServer (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Waring, Squit from Unknown Server %s", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
}
}
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
void Srv_Nick(char *origin, char **argv, int argc)
void
Srv_Nick (char *origin, char **argv, int argc)
{
char *realname;
AddUser(argv[0], argv[4], argv[5], argv[6],
strtoul(argv[8], NULL, 10), strtoul(argv[2], NULL, 10));
AddUser (argv[0], argv[4], argv[5], argv[6], strtoul (argv[8], NULL, 10), strtoul (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 9);
AddRealName (argv[0], realname);
free (realname);
@ -1102,12 +1117,12 @@ void Srv_Nick(char *origin, char **argv, int argc)
}
/* Ultimate3 Client Support */
void Srv_Client(char *origin, char **argv, int argc)
void
Srv_Client (char *origin, char **argv, int argc)
{
char *realname;
AddUser(argv[0], argv[5], argv[6], argv[8],
strtoul(argv[10], NULL, 10), strtoul(argv[2], NULL, 10));
AddUser (argv[0], argv[5], argv[6], argv[8], strtoul (argv[10], NULL, 10), strtoul (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 11);
AddRealName (argv[0], realname);
free (realname);
@ -1118,33 +1133,35 @@ void Srv_Client(char *origin, char **argv, int argc)
}
void Srv_Smode(char *origin, char **argv, int argc)
void
Srv_Smode (char *origin, char **argv, int argc)
{
UserMode (argv[0], argv[1], 1);
};
/* ultimate 3 */
void Srv_Svsnick(char *origin, char **argv, int argc)
void
Srv_Svsnick (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
Change_User (u, argv[1]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for SVSNICK", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for SVSNICK", argv[0]);
}
}
void Srv_Kill(char *origin, char **argv, int argc)
void
Srv_Kill (char *origin, char **argv, int argc)
{
}
int SignOn_NewBot(const char *nick, const char *user,
const char *host, const char *rname, long Umode)
int
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
{
snewnick_cmd (nick, user, host, rname, Umode);

View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: QuantumIRCd.h,v 1.3 2003/07/23 10:35:47 fishwaldo Exp $
** $Id: QuantumIRCd.h,v 1.4 2003/07/30 13:58:22 fishwaldo Exp $
*/
#ifndef QUANTUM_H
#define QUANTUM_H

View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: Ultimate.c,v 1.57 2003/07/11 14:06:45 fishwaldo Exp $
** $Id: Ultimate.c,v 1.58 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -354,21 +354,22 @@ Oper_Modes usr_mds[] = {
};
#endif
void init_ircd()
void
init_ircd ()
{
/* count the number of commands */
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
};
int sserver_cmd(const char *name, const int numeric, const char *infoline)
int
sserver_cmd (const char *name, const int numeric, const char *infoline)
{
sts(":%s %s %s %d :%s", me.name,
(me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
sts (":%s %s %s %d :%s", me.name, (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
return 1;
}
int slogin_cmd(const char *name, const int numeric, const char *infoline,
const char *pass)
int
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
{
#ifndef ULTIMATE3
sts ("%s %s", (me.token ? TOK_PASS : MSG_PASS), pass);
@ -376,18 +377,19 @@ int slogin_cmd(const char *name, const int numeric, const char *infoline,
sts ("%s %s :TS", (me.token ? TOK_PASS : MSG_PASS), pass);
sts ("CAPAB TS5 BURST SSJ5 NICKIP CLIENT");
#endif
sts("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name,
numeric, infoline);
sts ("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
return 1;
}
int ssquit_cmd(const char *server)
int
ssquit_cmd (const char *server)
{
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
return 1;
}
int sprotocol_cmd(const char *option)
int
sprotocol_cmd (const char *option)
{
#ifndef ULTIMATE3
sts ("%s %s", (me.token ? TOK_PROTOCTL : MSG_PROTOCTL), option);
@ -395,14 +397,16 @@ int sprotocol_cmd(const char *option)
return 1;
}
int squit_cmd(const char *who, const char *quitmsg)
int
squit_cmd (const char *who, const char *quitmsg)
{
sts (":%s %s :%s", who, (me.token ? TOK_QUIT : MSG_QUIT), quitmsg);
DelUser (who);
return 1;
}
int spart_cmd(const char *who, const char *chan)
int
spart_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, (me.token ? TOK_PART : MSG_PART), chan);
part_chan (finduser (who), (char *) chan);
@ -410,7 +414,8 @@ int spart_cmd(const char *who, const char *chan)
}
#ifdef ULTIMATE3
int sjoin_cmd(const char *who, const char *chan, unsigned long chflag)
int
sjoin_cmd (const char *who, const char *chan, unsigned long chflag)
{
char flag;
char mode[2];
@ -446,7 +451,8 @@ int sjoin_cmd(const char *who, const char *chan, unsigned long chflag)
free (av);
#else
int sjoin_cmd(const char *who, const char *chan)
int
sjoin_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, (me.token ? TOK_JOIN : MSG_JOIN), chan);
join_chan (finduser (who), (char *) chan);
@ -454,16 +460,14 @@ int sjoin_cmd(const char *who, const char *chan)
return 1;
}
int schmode_cmd(const char *who, const char *chan, const char *mode,
const char *args)
int
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
{
char **av;
int ac;
char tmp[512];
sts(":%s %s %s %s %s %lu", me.name,
(me.token ? TOK_MODE : MSG_MODE), chan, mode, args,
time(NULL));
sts (":%s %s %s %s %s %lu", who, (me.token ? TOK_MODE : MSG_MODE), chan, mode, args, time (NULL));
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
ac = split_buf (tmp, &av, 0);
ChanMode ("", av, ac);
@ -472,15 +476,14 @@ int schmode_cmd(const char *who, const char *chan, const char *mode,
}
#ifndef ULTIMATE3
int snewnick_cmd(const char *nick, const char *ident, const char *host,
const char *realname)
int
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname)
{
sts("%s %s 1 %lu %s %s %s 0 :%s", (me.token ? TOK_NICK : MSG_NICK),
nick, time(NULL), ident, host, me.name, realname);
sts ("%s %s 1 %lu %s %s %s 0 :%s", (me.token ? TOK_NICK : MSG_NICK), nick, time (NULL), ident, host, me.name, realname);
AddUser (nick, ident, host, me.name, 0, time (NULL));
#else
int snewnick_cmd(const char *nick, const char *ident, const char *host,
const char *realname, long mode)
int
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname, long mode)
{
int i, j;
char newmode[20];
@ -494,23 +497,22 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
}
newmode[j] = '\0';
sts("%s %s 1 %lu %s %s %s %s 0 %lu :%s",
(me.token ? TOK_NICK : MSG_NICK), nick, time(NULL), newmode,
ident, host, me.name, time(NULL), realname);
sts ("%s %s 1 %lu %s %s %s %s 0 %lu :%s", (me.token ? TOK_NICK : MSG_NICK), nick, time (NULL), newmode, ident, host, me.name, time (NULL), realname);
AddUser (nick, ident, host, me.name, 0, time (NULL));
UserMode (nick, newmode, 0);
#endif
return 1;
}
int sping_cmd(const char *from, const char *reply, const char *to)
int
sping_cmd (const char *from, const char *reply, const char *to)
{
sts(":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply,
to);
sts (":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply, to);
return 1;
}
int sumode_cmd(const char *who, const char *target, long mode)
int
sumode_cmd (const char *who, const char *target, long mode)
{
int i, j;
char newmode[20];
@ -524,14 +526,13 @@ int sumode_cmd(const char *who, const char *target, long mode)
}
newmode[j] = '\0';
sts(":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target,
newmode);
sts (":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target, newmode);
UserMode (target, newmode, 0);
return 1;
}
int snumeric_cmd(const int numeric, const char *target, const char *data,
...)
int
snumeric_cmd (const int numeric, const char *target, const char *data, ...)
{
va_list ap;
char buf[512];
@ -542,151 +543,144 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
return 1;
}
int spong_cmd(const char *reply)
int
spong_cmd (const char *reply)
{
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
return 1;
}
int snetinfo_cmd()
int
snetinfo_cmd ()
{
sts(":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO,
time(NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
sts (":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO, time (NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
return 1;
}
int vctrl_cmd()
int
vctrl_cmd ()
{
sts("%s %d %d %d %d 0 0 0 0 0 0 0 0 0 0 :%s", MSG_VCTRL,
ircd_srv.uprot, ircd_srv.nicklg, ircd_srv.modex, ircd_srv.gc,
me.netname);
sts ("%s %d %d %d %d 0 0 0 0 0 0 0 0 0 0 :%s", MSG_VCTRL, ircd_srv.uprot, ircd_srv.nicklg, ircd_srv.modex, ircd_srv.gc, me.netname);
return 1;
}
int skill_cmd(const char *from, const char *target, const char *reason,
...)
int
skill_cmd (const char *from, const char *target, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL),
target, buf);
sts (":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL), target, buf);
va_end (ap);
DelUser (target);
return 1;
}
int ssvskill_cmd(const char *who, const char *reason, ...)
int
ssvskill_cmd (const char *who, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", me.name, MSG_SVSKILL,
who, buf);
sts (":%s %s %s :%s", me.name, MSG_SVSKILL, who, buf);
va_end (ap);
return 1;
}
int ssmo_cmd(const char *from, const char *umodetarget, const char *msg)
int
ssmo_cmd (const char *from, const char *umodetarget, const char *msg)
{
chanalert(s_Services,
"Warning, Module %s tried to SMO, which is not supported in Ultimate",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Module %s tried to SMO, which is not supported in Ultimate",
segvinmodule);
chanalert (s_Services, "Warning, Module %s tried to SMO, which is not supported in Ultimate", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Ultimate", segvinmodule);
return 1;
}
int snick_cmd(const char *oldnick, const char *newnick)
int
snick_cmd (const char *oldnick, const char *newnick)
{
Change_User (finduser (oldnick), newnick);
sts(":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK),
newnick, time(NULL));
return 1;
}
int sswhois_cmd(const char *target, const char *swhois)
{
chanalert(s_Services,
"Warning Module %s tried to SWHOIS, which is not supported in Ultimate",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SWHOIS, which is not supported in Ultimate",
segvinmodule);
return 1;
}
int ssvsnick_cmd(const char *target, const char *newnick)
{
sts("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target,
newnick, time(NULL));
sts (":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK), newnick, time (NULL));
return 1;
}
int ssvsjoin_cmd(const char *target, const char *chan)
int
sswhois_cmd (const char *target, const char *swhois)
{
sts("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target,
chan);
chanalert (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Ultimate", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Ultimate", segvinmodule);
return 1;
}
int ssvspart_cmd(const char *target, const char *chan)
int
ssvsnick_cmd (const char *target, const char *newnick)
{
sts("%s %s %s", (me.token ? TOK_SVSPART : MSG_SVSPART), target,
chan);
sts ("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target, newnick, time (NULL));
return 1;
}
int skick_cmd(const char *who, const char *target, const char *chan,
const char *reason)
int
ssvsjoin_cmd (const char *target, const char *chan)
{
sts(":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK),
chan, target, (reason ? reason : "No Reason Given"));
sts ("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target, chan);
return 1;
}
int
ssvspart_cmd (const char *target, const char *chan)
{
sts ("%s %s %s", (me.token ? TOK_SVSPART : MSG_SVSPART), target, chan);
return 1;
}
int
skick_cmd (const char *who, const char *target, const char *chan, const char *reason)
{
sts (":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK), chan, target, (reason ? reason : "No Reason Given"));
part_chan (finduser (target), (char *) chan);
return 1;
}
int swallops_cmd(const char *who, const char *msg, ...)
int
swallops_cmd (const char *who, const char *msg, ...)
{
va_list ap;
char buf[512];
va_start (ap, msg);
vsnprintf (buf, 512, msg, ap);
sts(":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS),
buf);
sts (":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS), buf);
va_end (ap);
return 1;
}
int ssvshost_cmd(const char *who, const char *vhost)
int
ssvshost_cmd (const char *who, const char *vhost)
{
User *u;
u = finduser (who);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Can't Find user %s for ssvshost_cmd", who);
nlog (LOG_WARNING, LOG_CORE, "Can't Find user %s for ssvshost_cmd", who);
return 0;
} else {
strncpy (u->vhost, vhost, MAXHOST);
#ifdef ULTIMATE3
sts(":%s %s %s %s", me.name,
(me.token ? TOK_SETHOST : MSG_SETHOST), who, vhost);
sts (":%s %s %s %s", me.name, (me.token ? TOK_SETHOST : MSG_SETHOST), who, vhost);
#elif ULTIMATE
sts (":%s CHGHOST %s %s", me.name, who, vhost);
#endif
return 1;
}
}
int sakill_cmd(const char *host, const char *ident, const char *setby,
const int length, const char *reason, ...)
int
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
#ifdef ULTIMATE3
sts(":%s %s %s %s %d %s %d :%s", me.name,
(me.token ? TOK_AKILL : MSG_AKILL), host, ident, length, setby,
time(NULL), buf);
sts (":%s %s %s %s %d %s %d :%s", me.name, (me.token ? TOK_AKILL : MSG_AKILL), host, ident, length, setby, time (NULL), buf);
#elif ULTIMATE
sts (":%s %s %s@%s %d %d %s :%s", me.name, MSG_GLINE, ident, host, time (NULL) + length, time (NULL), setby, buf);
#endif
@ -694,11 +688,11 @@ int sakill_cmd(const char *host, const char *ident, const char *setby,
return 1;
}
int srakill_cmd(const char *host, const char *ident)
int
srakill_cmd (const char *host, const char *ident)
{
#ifdef ULTIMATE3
sts(":%s %s %s %s", me.name, (me.token ? TOK_RAKILL : MSG_RAKILL),
host, ident);
sts (":%s %s %s %s", me.name, (me.token ? TOK_RAKILL : MSG_RAKILL), host, ident);
#elif ULTIMATE
/* ultimate2 needs a oper to remove */
sts (":%s %s :%s@%s", s_Services, MSG_REMGLINE, host, ident);
@ -707,12 +701,15 @@ int srakill_cmd(const char *host, const char *ident)
}
int ssvinfo_cmd()
int
ssvinfo_cmd ()
{
sts ("SVINFO 5 3 0 :%d", time (NULL));
return 1;
}
int sburst_cmd(int b)
int
sburst_cmd (int b)
{
if (b == 0) {
sts ("BURST 0");
@ -723,8 +720,8 @@ int sburst_cmd(int b)
}
void chanalert(char *who, char *buf, ...)
void
chanalert (char *who, char *buf, ...)
{
va_list ap;
char tmp[512];
@ -733,14 +730,15 @@ void chanalert(char *who, char *buf, ...)
vsnprintf (tmp, 512, buf, ap);
if (me.onchan) {
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
tmp);
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
sts ("%s", out);
}
va_end (ap);
}
void prefmsg(char *to, const char *from, char *fmt, ...)
void
prefmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -748,9 +746,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
va_start (ap, fmt);
vsnprintf (buf2, sizeof (buf2), fmt, ap);
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
if (me.want_privmsg) {
@ -761,15 +757,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
sts ("%s", buf);
va_end (ap);
}
void privmsg(char *to, const char *from, char *fmt, ...)
void
privmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -780,15 +776,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
va_end (ap);
}
void notice(char *to, const char *from, char *fmt, ...)
void
notice (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -800,7 +795,8 @@ void notice(char *to, const char *from, char *fmt, ...)
}
void privmsg_list(char *to, char *from, const char **text)
void
privmsg_list (char *to, char *from, const char **text)
{
while (*text) {
if (**text)
@ -812,7 +808,8 @@ void privmsg_list(char *to, char *from, const char **text)
}
void globops(char *from, char *fmt, ...)
void
globops (char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -833,7 +830,8 @@ void globops(char *from, char *fmt, ...)
}
void Srv_Sjoin(char *origin, char **argv, int argc)
void
Srv_Sjoin (char *origin, char **argv, int argc)
{
char nick[MAXNICK];
long mode = 0;
@ -860,22 +858,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
goto nomodes;
}
while (*modes) {
for (i = 0;
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (*modes == cFlagTab[i].flag) {
if (cFlagTab[i].parameters) {
m = smalloc (sizeof (ModesParm));
m->mode = cFlagTab[i].mode;
strncpy(m->param, argv[j],
PARAMSIZE);
strncpy (m->param, argv[j], PARAMSIZE);
mn = lnode_create (m);
if (!list_isfull (tl)) {
list_append (tl, mn);
} else {
nlog(LOG_CRITICAL,
LOG_CORE,
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
j++;
@ -891,10 +884,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
modes = argv[j];
mode = 0;
while (ok == 1) {
for (i = 0;
i <
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (cFlagTab[i].sjoin != 0) {
if (*modes == cFlagTab[i].sjoin) {
mode |= cFlagTab[i].mode;
@ -910,8 +900,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
}
}
join_chan (finduser (nick), argv[1]);
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
mode);
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
j++;
ok = 1;
}
@ -922,15 +911,15 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
list_transfer (c->modeparms, tl, list_first (tl));
} else {
/* eeeeeeek, list is full! */
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
}
list_destroy (tl);
}
void Srv_Burst(char *origin, char **argv, int argc)
void
Srv_Burst (char *origin, char **argv, int argc)
{
if (argc > 0) {
if (ircd_srv.burst == 1) {
@ -944,7 +933,8 @@ void Srv_Burst(char *origin, char **argv, int argc)
}
}
void Srv_Connect(char *origin, char **argv, int argc)
void
Srv_Connect (char *origin, char **argv, int argc)
{
int i;
@ -961,49 +951,62 @@ void Srv_Connect(char *origin, char **argv, int argc)
}
void Usr_Stats(char *origin, char **argv, int argc)
void
Usr_Stats (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Recieved a Message from a Unknown User! (%s)",
origin);
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
return;
}
ShowStats (argv[0], u);
}
void Usr_Version(char *origin, char **argv, int argc)
void
Usr_Version (char *origin, char **argv, int argc)
{
snumeric_cmd(351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR,
REV, version, me.name, version_date, version_time);
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
}
void Usr_ShowMOTD(char *origin, char **argv, int argc)
void
Usr_ShowMOTD (char *origin, char **argv, int argc)
{
ShowMOTD (origin);
}
void Usr_ShowADMIN(char *origin, char **argv, int argc)
void
Usr_ShowADMIN (char *origin, char **argv, int argc)
{
ShowADMIN (origin);
}
void Usr_Showcredits(char *origin, char **argv, int argc)
void
Usr_Showcredits (char *origin, char **argv, int argc)
{
Showcredits (origin);
}
void Usr_AddServer(char *origin, char **argv, int argc)
void
Usr_AddServer (char *origin, char **argv, int argc)
{
AddServer (argv[0], origin, atoi (argv[1]));
}
void Usr_DelServer(char *origin, char **argv, int argc)
void
Usr_DelServer (char *origin, char **argv, int argc)
{
DelServer (argv[0]);
}
void Usr_DelUser(char *origin, char **argv, int argc)
void
Usr_DelUser (char *origin, char **argv, int argc)
{
DelUser (origin);
}
void Usr_Smode(char *origin, char **argv, int argc)
void
Usr_Smode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
/* its user svsmode change */
@ -1017,7 +1020,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Mode(char *origin, char **argv, int argc)
void
Usr_Mode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s %s", argv[0], argv[1]);
@ -1026,18 +1030,19 @@ void Usr_Mode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Kill(char *origin, char **argv, int argc)
void
Usr_Kill (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
KillUser (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
}
}
void Usr_Vhost(char *origin, char **argv, int argc)
void
Usr_Vhost (char *origin, char **argv, int argc)
{
User *u;
#ifndef ULTIMATE3
@ -1053,18 +1058,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
#endif
}
}
void Usr_Pong(char *origin, char **argv, int argc)
void
Usr_Pong (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
dopong (s);
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Received PONG from unknown server: %s", argv[0]);
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
}
}
void Usr_Away(char *origin, char **argv, int argc)
void
Usr_Away (char *origin, char **argv, int argc)
{
char *Buf;
User *u = finduser (origin);
@ -1079,18 +1085,19 @@ void Usr_Away(char *origin, char **argv, int argc)
free (Buf);
}
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Unable to find User %s for Away", origin);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
}
}
void Usr_Nick(char *origin, char **argv, int argc)
void
Usr_Nick (char *origin, char **argv, int argc)
{
User *u = finduser (origin);
if (u) {
Change_User (u, argv[0]);
}
}
void Usr_Topic(char *origin, char **argv, int argc)
void
Usr_Topic (char *origin, char **argv, int argc)
{
char *buf;
Chans *c;
@ -1100,13 +1107,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
Change_Topic (argv[1], c, atoi (argv[2]), buf);
free (buf);
} else {
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
}
}
void Usr_Kick(char *origin, char **argv, int argc)
void
Usr_Kick (char *origin, char **argv, int argc)
{
User *u, *k;
u = finduser (argv[1]);
@ -1114,12 +1121,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
if ((u) && (k)) {
kick_chan (u, argv[0], k);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for kick %s", argv[1],
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
}
}
void Usr_Join(char *origin, char **argv, int argc)
void
Usr_Join (char *origin, char **argv, int argc)
{
char *s, *t;
t = argv[0];
@ -1130,11 +1136,14 @@ void Usr_Join(char *origin, char **argv, int argc)
join_chan (finduser (origin), s);
}
}
void Usr_Part(char *origin, char **argv, int argc)
void
Usr_Part (char *origin, char **argv, int argc)
{
part_chan (finduser (origin), argv[0]);
}
void Srv_Ping(char *origin, char **argv, int argc)
void
Srv_Ping (char *origin, char **argv, int argc)
{
spong_cmd (argv[0]);
#ifdef ULTIMATE3
@ -1144,7 +1153,8 @@ void Srv_Ping(char *origin, char **argv, int argc)
#endif
}
void Srv_Vctrl(char *origin, char **argv, int argc)
void
Srv_Vctrl (char *origin, char **argv, int argc)
{
ircd_srv.uprot = atoi (argv[0]);
ircd_srv.nicklg = atoi (argv[1]);
@ -1154,13 +1164,15 @@ void Srv_Vctrl(char *origin, char **argv, int argc)
vctrl_cmd ();
}
void Srv_Svinfo(char *origin, char **argv, int argc)
void
Srv_Svinfo (char *origin, char **argv, int argc)
{
ssvinfo_cmd ();
}
#ifndef ULTIMATE3
void Srv_Netinfo(char *origin, char **argv, int argc)
void
Srv_Netinfo (char *origin, char **argv, int argc)
{
me.onchan = 1;
ircd_srv.uprot = atoi (argv[2]);
@ -1181,10 +1193,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
}
#endif
void Srv_Pass(char *origin, char **argv, int argc)
void
Srv_Pass (char *origin, char **argv, int argc)
{
}
void Srv_Server(char *origin, char **argv, int argc)
void
Srv_Server (char *origin, char **argv, int argc)
{
Server *s;
if (*origin == 0) {
@ -1195,35 +1209,35 @@ void Srv_Server(char *origin, char **argv, int argc)
s = findserver (argv[0]);
me.s = s;
}
void Srv_Squit(char *origin, char **argv, int argc)
void
Srv_Squit (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
DelServer (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Waring, Squit from Unknown Server %s", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
}
}
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
void Srv_Nick(char *origin, char **argv, int argc)
void
Srv_Nick (char *origin, char **argv, int argc)
{
char *realname;
#if ULTIMATE3
AddUser(argv[0], argv[4], argv[5], argv[6],
strtoul(argv[8], NULL, 10), strtoul(argv[2], NULL, 10));
AddUser (argv[0], argv[4], argv[5], argv[6], strtoul (argv[8], NULL, 10), strtoul (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 9);
AddRealName (argv[0], realname);
free (realname);
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[3]);
UserMode (argv[0], argv[3], 0);
#elif ULTIMATE
AddUser(argv[0], argv[3], argv[4], argv[5], 0,
strtoul(argv[2], NULL, 10));
AddUser (argv[0], argv[3], argv[4], argv[5], 0, strtoul (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 7);
AddRealName (argv[0], realname);
free (realname);
@ -1232,12 +1246,12 @@ void Srv_Nick(char *origin, char **argv, int argc)
/* Ultimate3 Client Support */
#ifdef ULTIMATE3
void Srv_Client(char *origin, char **argv, int argc)
void
Srv_Client (char *origin, char **argv, int argc)
{
char *realname;
AddUser(argv[0], argv[5], argv[6], argv[8],
strtoul(argv[10], NULL, 10), strtoul(argv[2], NULL, 10));
AddUser (argv[0], argv[5], argv[6], argv[8], strtoul (argv[10], NULL, 10), strtoul (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 11);
AddRealName (argv[0], realname);
free (realname);
@ -1248,7 +1262,8 @@ void Srv_Client(char *origin, char **argv, int argc)
}
void Srv_Smode(char *origin, char **argv, int argc)
void
Srv_Smode (char *origin, char **argv, int argc)
{
UserMode (argv[0], argv[1], 1);
};
@ -1256,26 +1271,27 @@ void Srv_Smode(char *origin, char **argv, int argc)
/* ultimate 3 */
#endif
void Srv_Svsnick(char *origin, char **argv, int argc)
void
Srv_Svsnick (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
Change_User (u, argv[1]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for SVSNICK", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for SVSNICK", argv[0]);
}
}
void Srv_Kill(char *origin, char **argv, int argc)
void
Srv_Kill (char *origin, char **argv, int argc)
{
}
int SignOn_NewBot(const char *nick, const char *user,
const char *host, const char *rname, long Umode)
int
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
{
#ifdef ULTIMATE3

View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: Ultimate.h,v 1.24 2003/07/23 10:35:47 fishwaldo Exp $
** $Id: Ultimate.h,v 1.25 2003/07/30 13:58:22 fishwaldo Exp $
*/
#ifndef ULTIMATE_H
#define ULTIMATE_H

355
Unreal.c
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: Unreal.c,v 1.49 2003/07/11 13:43:27 fishwaldo Exp $
** $Id: Unreal.c,v 1.50 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -294,7 +294,8 @@ Oper_Modes usr_mds[] = {
void init_ircd()
void
init_ircd ()
{
/* count the number of commands */
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
@ -302,87 +303,90 @@ void init_ircd()
};
int sserver_cmd(const char *name, const int numeric, const char *infoline)
int
sserver_cmd (const char *name, const int numeric, const char *infoline)
{
sts(":%s %s %s %d :%s", me.name,
(me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
sts (":%s %s %s %d :%s", me.name, (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
return 1;
}
int slogin_cmd(const char *name, const int numeric, const char *infoline,
const char *pass)
int
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
{
sts ("%s %s", (me.token ? TOK_PASS : MSG_PASS), pass);
sts("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name,
numeric, infoline);
sts ("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
return 1;
}
int ssquit_cmd(const char *server)
int
ssquit_cmd (const char *server)
{
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
return 1;
}
int sprotocol_cmd(const char *option)
int
sprotocol_cmd (const char *option)
{
sts ("%s %s", (me.token ? TOK_PROTOCTL : MSG_PROTOCTL), option);
return 1;
}
int squit_cmd(const char *who, const char *quitmsg)
int
squit_cmd (const char *who, const char *quitmsg)
{
sts (":%s %s :%s", who, (me.token ? TOK_QUIT : MSG_QUIT), quitmsg);
DelUser (who);
return 1;
}
int spart_cmd(const char *who, const char *chan)
int
spart_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, (me.token ? TOK_PART : MSG_PART), chan);
part_chan (finduser (who), (char *) chan);
return 1;
}
int sjoin_cmd(const char *who, const char *chan)
int
sjoin_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, (me.token ? TOK_JOIN : MSG_JOIN), chan);
join_chan (finduser (who), (char *) chan);
return 1;
}
int schmode_cmd(const char *who, const char *chan, const char *mode,
const char *args)
int
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
{
char **av;
int ac;
char tmp[512];
sts(":%s %s %s %s %s %lu", who, (me.token ? TOK_MODE : MSG_MODE),
chan, mode, args, time(NULL));
sts (":%s %s %s %s %s %lu", who, (me.token ? TOK_MODE : MSG_MODE), chan, mode, args, time (NULL));
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
ac = split_buf (tmp, &av, 0);
ChanMode ("", av, ac);
return 1;
}
int snewnick_cmd(const char *nick, const char *ident, const char *host,
const char *realname)
int
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname)
{
sts("%s %s 1 %lu %s %s %s 0 :%s", (me.token ? TOK_NICK : MSG_NICK),
nick, time(NULL), ident, host, me.name, realname);
sts ("%s %s 1 %lu %s %s %s 0 :%s", (me.token ? TOK_NICK : MSG_NICK), nick, time (NULL), ident, host, me.name, realname);
AddUser (nick, ident, host, me.name, 0, time (NULL));
return 1;
}
int sping_cmd(const char *from, const char *reply, const char *to)
int
sping_cmd (const char *from, const char *reply, const char *to)
{
sts(":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply,
to);
sts (":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply, to);
return 1;
}
int sumode_cmd(const char *who, const char *target, long mode)
int
sumode_cmd (const char *who, const char *target, long mode)
{
int i, j;
char newmode[20];
@ -396,14 +400,13 @@ int sumode_cmd(const char *who, const char *target, long mode)
}
newmode[j] = '\0';
sts(":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target,
newmode);
sts (":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target, newmode);
UserMode (target, newmode, 0);
return 1;
}
int snumeric_cmd(const int numeric, const char *target, const char *data,
...)
int
snumeric_cmd (const int numeric, const char *target, const char *data, ...)
{
va_list ap;
char buf[512];
@ -414,141 +417,140 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
return 1;
}
int spong_cmd(const char *reply)
int
spong_cmd (const char *reply)
{
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
return 1;
}
int snetinfo_cmd()
int
snetinfo_cmd ()
{
sts(":%s %s 0 %d %d %s 0 0 0 :%s", me.name,
(me.token ? TOK_NETINFO : MSG_NETINFO), time(NULL),
ircd_srv.uprot, ircd_srv.cloak, me.netname);
sts (":%s %s 0 %d %d %s 0 0 0 :%s", me.name, (me.token ? TOK_NETINFO : MSG_NETINFO), time (NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
return 1;
}
int skill_cmd(const char *from, const char *target, const char *reason,
...)
int
skill_cmd (const char *from, const char *target, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL),
target, buf);
sts (":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL), target, buf);
va_end (ap);
DelUser (target);
return 1;
}
int ssmo_cmd(const char *from, const char *umodetarget, const char *msg)
int
ssmo_cmd (const char *from, const char *umodetarget, const char *msg)
{
sts(":%s %s %s :%s", from, (me.token ? TOK_SMO : MSG_SMO),
umodetarget, msg);
sts (":%s %s %s :%s", from, (me.token ? TOK_SMO : MSG_SMO), umodetarget, msg);
return 1;
}
int snick_cmd(const char *oldnick, const char *newnick)
int
snick_cmd (const char *oldnick, const char *newnick)
{
Change_User (finduser (oldnick), newnick);
sts(":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK),
newnick, time(NULL));
return 1;
}
int sswhois_cmd(const char *target, const char *swhois)
{
sts("%s %s :%s", (me.token ? TOK_SWHOIS : MSG_SWHOIS), target,
swhois);
return 1;
}
int ssvsnick_cmd(const char *target, const char *newnick)
{
sts("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target,
newnick, time(NULL));
sts (":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK), newnick, time (NULL));
return 1;
}
int ssvsjoin_cmd(const char *target, const char *chan)
int
sswhois_cmd (const char *target, const char *swhois)
{
sts("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target,
chan);
sts ("%s %s :%s", (me.token ? TOK_SWHOIS : MSG_SWHOIS), target, swhois);
return 1;
}
int ssvspart_cmd(const char *target, const char *chan)
int
ssvsnick_cmd (const char *target, const char *newnick)
{
sts("%s %s %s", (me.token ? TOK_SVSPART : MSG_SVSPART), target,
chan);
sts ("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target, newnick, time (NULL));
return 1;
}
int skick_cmd(const char *who, const char *target, const char *chan,
const char *reason)
int
ssvsjoin_cmd (const char *target, const char *chan)
{
sts(":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK),
chan, target, (reason ? reason : "No Reason Given"));
sts ("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target, chan);
return 1;
}
int
ssvspart_cmd (const char *target, const char *chan)
{
sts ("%s %s %s", (me.token ? TOK_SVSPART : MSG_SVSPART), target, chan);
return 1;
}
int
skick_cmd (const char *who, const char *target, const char *chan, const char *reason)
{
sts (":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK), chan, target, (reason ? reason : "No Reason Given"));
part_chan (finduser (target), (char *) chan);
return 1;
}
int swallops_cmd(const char *who, const char *msg, ...)
int
swallops_cmd (const char *who, const char *msg, ...)
{
va_list ap;
char buf[512];
va_start (ap, msg);
vsnprintf (buf, 512, msg, ap);
sts(":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS),
buf);
sts (":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS), buf);
va_end (ap);
return 1;
}
int ssvshost_cmd(const char *who, const char *vhost)
int
ssvshost_cmd (const char *who, const char *vhost)
{
User *u;
u = finduser (who);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Can't Find user %s for ssvshost_cmd", who);
nlog (LOG_WARNING, LOG_CORE, "Can't Find user %s for ssvshost_cmd", who);
return 0;
} else {
strcpy (u->vhost, vhost);
sts(":%s %s %s %s", me.name,
(me.token ? TOK_CHGHOST : MSG_CHGHOST), who, vhost);
sts (":%s %s %s %s", me.name, (me.token ? TOK_CHGHOST : MSG_CHGHOST), who, vhost);
return 1;
}
}
int ssvsmode_cmd(const char *target, const char *modes)
int
ssvsmode_cmd (const char *target, const char *modes)
{
User *u;
u = finduser (target);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Can't find user %s for ssvsmode_cmd", target);
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for ssvsmode_cmd", target);
return 0;
} else {
sts(":%s %s %s %s", me.name,
(me.token ? TOK_SVSMODE : MSG_SVSMODE), target, modes);
sts (":%s %s %s %s", me.name, (me.token ? TOK_SVSMODE : MSG_SVSMODE), target, modes);
UserMode (target, modes, 0);
}
return 1;
}
int ssvskill_cmd(const char *target, const char *reason, ...)
int
ssvskill_cmd (const char *target, const char *reason, ...)
{
User *u;
va_list ap;
char buf[512];
u = finduser (target);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Cant find user %s for ssvskill_cmd", target);
nlog (LOG_WARNING, LOG_CORE, "Cant find user %s for ssvskill_cmd", target);
return 0;
} else {
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", me.name,
(me.token ? TOK_SVSKILL : MSG_SVSKILL), target, buf);
sts (":%s %s %s :%s", me.name, (me.token ? TOK_SVSKILL : MSG_SVSKILL), target, buf);
va_end (ap);
return 1;
}
@ -556,29 +558,28 @@ int ssvskill_cmd(const char *target, const char *reason, ...)
/* akill is gone in the latest Unreals, so we set Glines instead */
int sakill_cmd(const char *host, const char *ident, const char *setby,
const int length, const char *reason, ...)
int
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s + G %s %s %s %d %d :%s", me.name,
(me.token ? TOK_TKL : MSG_TKL), ident, host, setby,
time(NULL) + length, time(NULL), buf);
sts (":%s %s + G %s %s %s %d %d :%s", me.name, (me.token ? TOK_TKL : MSG_TKL), ident, host, setby, time (NULL) + length, time (NULL), buf);
va_end (ap);
return 1;
}
int srakill_cmd(const char *host, const char *ident)
int
srakill_cmd (const char *host, const char *ident)
{
sts(":%s %s - G %s %s %s", me.name, (me.token ? TOK_TKL : MSG_TKL),
ident, host, me.name);
sts (":%s %s - G %s %s %s", me.name, (me.token ? TOK_TKL : MSG_TKL), ident, host, me.name);
return 1;
}
void chanalert(char *who, char *buf, ...)
void
chanalert (char *who, char *buf, ...)
{
va_list ap;
char tmp[512];
@ -587,21 +588,20 @@ void chanalert(char *who, char *buf, ...)
vsnprintf (tmp, 512, buf, ap);
if (me.onchan) {
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
tmp);
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
sts ("%s", out);
}
va_end (ap);
}
void notice(char *to, const char *from, char *fmt, ...)
void
notice (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -611,15 +611,15 @@ void notice(char *to, const char *from, char *fmt, ...)
sts ("%s", buf);
va_end (ap);
}
void privmsg(char *to, const char *from, char *fmt, ...)
void
privmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -630,7 +630,8 @@ void privmsg(char *to, const char *from, char *fmt, ...)
va_end (ap);
}
void prefmsg(char *to, const char *from, char *fmt, ...)
void
prefmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -638,9 +639,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
va_start (ap, fmt);
vsnprintf (buf2, sizeof (buf2), fmt, ap);
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
if (me.want_privmsg) {
@ -652,7 +651,8 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
va_end (ap);
}
void privmsg_list(char *to, char *from, const char **text)
void
privmsg_list (char *to, char *from, const char **text)
{
while (*text) {
if (**text)
@ -664,7 +664,8 @@ void privmsg_list(char *to, char *from, const char **text)
}
void globops(char *from, char *fmt, ...)
void
globops (char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -686,7 +687,8 @@ void globops(char *from, char *fmt, ...)
void Srv_Connect(char *origin, char **argv, int argc)
void
Srv_Connect (char *origin, char **argv, int argc)
{
int i;
@ -698,49 +700,62 @@ void Srv_Connect(char *origin, char **argv, int argc)
}
void Usr_Stats(char *origin, char **argv, int argc)
void
Usr_Stats (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Recieved a Message from a Unknown User! (%s)",
origin);
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
return;
}
ShowStats (argv[0], u);
}
void Usr_Version(char *origin, char **argv, int argc)
void
Usr_Version (char *origin, char **argv, int argc)
{
snumeric_cmd(351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR,
REV, version, me.name, version_date, version_time);
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
}
void Usr_ShowMOTD(char *origin, char **argv, int argc)
void
Usr_ShowMOTD (char *origin, char **argv, int argc)
{
ShowMOTD (origin);
}
void Usr_ShowADMIN(char *origin, char **argv, int argc)
void
Usr_ShowADMIN (char *origin, char **argv, int argc)
{
ShowADMIN (origin);
}
void Usr_Showcredits(char *origin, char **argv, int argc)
void
Usr_Showcredits (char *origin, char **argv, int argc)
{
Showcredits (origin);
}
void Usr_AddServer(char *origin, char **argv, int argc)
void
Usr_AddServer (char *origin, char **argv, int argc)
{
AddServer (argv[0], origin, atoi (argv[1]));
}
void Usr_DelServer(char *origin, char **argv, int argc)
void
Usr_DelServer (char *origin, char **argv, int argc)
{
DelServer (argv[0]);
}
void Usr_DelUser(char *origin, char **argv, int argc)
void
Usr_DelUser (char *origin, char **argv, int argc)
{
DelUser (origin);
}
void Usr_Smode(char *origin, char **argv, int argc)
void
Usr_Smode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
/* its user svsmode change */
@ -750,7 +765,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Mode(char *origin, char **argv, int argc)
void
Usr_Mode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
UserMode (argv[0], argv[1], 0);
@ -758,18 +774,19 @@ void Usr_Mode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Kill(char *origin, char **argv, int argc)
void
Usr_Kill (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
KillUser (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
}
}
void Usr_Vhost(char *origin, char **argv, int argc)
void
Usr_Vhost (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
@ -777,18 +794,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
strncpy (u->vhost, argv[0], MAXHOST);
}
}
void Usr_Pong(char *origin, char **argv, int argc)
void
Usr_Pong (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
dopong (s);
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Received PONG from unknown server: %s", argv[0]);
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
}
}
void Usr_Away(char *origin, char **argv, int argc)
void
Usr_Away (char *origin, char **argv, int argc)
{
char *buf;
User *u = finduser (origin);
@ -803,22 +821,21 @@ void Usr_Away(char *origin, char **argv, int argc)
free (buf);
}
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Unable to find User %s for Away", origin);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
}
}
void Usr_Nick(char *origin, char **argv, int argc)
void
Usr_Nick (char *origin, char **argv, int argc)
{
User *u = finduser (origin);
if (u) {
Change_User (u, argv[0]);
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Unable to find user %s for User_nick",
origin);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find user %s for User_nick", origin);
}
}
void Usr_Topic(char *origin, char **argv, int argc)
void
Usr_Topic (char *origin, char **argv, int argc)
{
char *buf;
Chans *c;
@ -828,13 +845,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
Change_Topic (argv[1], c, atoi (argv[2]), buf);
free (buf);
} else {
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
}
}
void Usr_Kick(char *origin, char **argv, int argc)
void
Usr_Kick (char *origin, char **argv, int argc)
{
User *u, *k;
u = finduser (argv[1]);
@ -842,12 +859,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
if (u) {
kick_chan (u, argv[0], k);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Waring, Can't find user %s for Kick %s", argv[1],
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Waring, Can't find user %s for Kick %s", argv[1], argv[0]);
}
}
void Usr_Join(char *origin, char **argv, int argc)
void
Usr_Join (char *origin, char **argv, int argc)
{
char *s, *t;
t = argv[0];
@ -858,15 +874,20 @@ void Usr_Join(char *origin, char **argv, int argc)
join_chan (finduser (origin), s);
}
}
void Usr_Part(char *origin, char **argv, int argc)
void
Usr_Part (char *origin, char **argv, int argc)
{
part_chan (finduser (origin), argv[0]);
}
void Srv_Ping(char *origin, char **argv, int argc)
void
Srv_Ping (char *origin, char **argv, int argc)
{
spong_cmd (argv[0]);
}
void Srv_Netinfo(char *origin, char **argv, int argc)
void
Srv_Netinfo (char *origin, char **argv, int argc)
{
me.onchan = 1;
ircd_srv.uprot = atoi (argv[2]);
@ -883,10 +904,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
me.synced = 1;
}
void Srv_Pass(char *origin, char **argv, int argc)
void
Srv_Pass (char *origin, char **argv, int argc)
{
}
void Srv_Server(char *origin, char **argv, int argc)
void
Srv_Server (char *origin, char **argv, int argc)
{
Server *s;
if (*origin == 0) {
@ -897,53 +920,55 @@ void Srv_Server(char *origin, char **argv, int argc)
s = findserver (argv[0]);
me.s = s;
}
void Srv_Squit(char *origin, char **argv, int argc)
void
Srv_Squit (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
DelServer (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Waring, Squit from Unknown Server %s", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
}
}
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
void Srv_Nick(char *origin, char **argv, int argc)
void
Srv_Nick (char *origin, char **argv, int argc)
{
char **av;
int ac = 0;
char *realname;
AddStringToList (&av, argv[0], &ac);
AddUser(argv[0], argv[3], argv[4], argv[5], 0,
strtol(argv[2], NULL, 10));
AddUser (argv[0], argv[3], argv[4], argv[5], 0, strtol (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 7);
AddRealName (argv[0], realname);
free (realname);
}
void Srv_Svsnick(char *origin, char **argv, int argc)
void
Srv_Svsnick (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
Change_User (u, argv[1]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Can't find user %s for svsnick", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for svsnick", argv[0]);
}
}
void Srv_Kill(char *origin, char **argv, int argc)
void
Srv_Kill (char *origin, char **argv, int argc)
{
nlog (LOG_WARNING, LOG_CORE, "Got Kill, but its unhandled.");
}
extern int SignOn_NewBot(const char *nick, const char *user,
const char *host, const char *rname, long Umode)
extern int
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
{
snewnick_cmd (nick, user, host, rname);

View file

@ -44,7 +44,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: Unreal.h,v 1.32 2003/07/23 10:35:47 fishwaldo Exp $
* $Id: Unreal.h,v 1.33 2003/07/30 13:58:22 fishwaldo Exp $
*/
@ -521,4 +521,3 @@ int SignOn_NewBot(const char *, const char *, const char *, const char *, long);
#endif /* UNREAL_H Define */

View file

@ -18,18 +18,19 @@
#undef HAVEUSE_RPCTYPES_H
@ BOTTOM @
/* Use the definitions: */
#ifndef HAVE_INLINE
#define inline
#endif
#ifdef HAVE_POLL
#include <sys/poll.h>
#else
/* kludge it up */
struct pollfd { int fd; short events; short revents; };
struct pollfd {
int fd;
short events;
short revents;
};
#define POLLIN 1
#define POLLPRI 2
#define POLLOUT 4

325
chans.c
View file

@ -19,7 +19,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: chans.c,v 1.47 2003/07/23 10:35:47 fishwaldo Exp $
** $Id: chans.c,v 1.48 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include <fnmatch.h>
@ -37,11 +37,13 @@
*/
void init_chan_hash()
void
init_chan_hash ()
{
ch = hash_create (C_TABLE_SIZE, 0, 0);
}
/** @brief Process the Channel TS Time
*
* Addes the channel TS time to the channel struct
@ -52,7 +54,9 @@ void init_chan_hash()
* @returns Nothing
*
*/
void Change_Chan_Ts(Chans *c, time_t tstime) {
void
Change_Chan_Ts (Chans * c, time_t tstime)
{
if (!c) {
nlog (LOG_WARNING, LOG_CORE, "Warning, Called Change_Change_Ts with null channel");
return;
@ -75,7 +79,8 @@ void Change_Chan_Ts(Chans *c, time_t tstime) {
* @return Nothing
*/
extern void Change_Topic(char *owner, Chans * c, time_t time, char *topic)
extern void
Change_Topic (char *owner, Chans * c, time_t time, char *topic)
{
char **av;
int ac = 0;
@ -100,7 +105,9 @@ extern void Change_Topic(char *owner, Chans * c, time_t time, char *topic)
* @returns 1 on match, 0 on no match, -1 on error
*
*/
extern int CheckChanMode(Chans *c, long mode) {
extern int
CheckChanMode (Chans * c, long mode)
{
ModesParm *m;
lnode_t *mn;
if (!c) {
@ -135,7 +142,8 @@ extern int CheckChanMode(Chans *c, long mode) {
* @return 0 on match, 1 otherwise.
*/
int comparemode(const void *v, const void *mode)
int
comparemode (const void *v, const void *mode)
{
ModesParm *m = (void *) v;
if (m->mode == (long) mode) {
@ -156,7 +164,8 @@ int comparemode(const void *v, const void *mode)
* @return 0 on error, number of modes processed on success.
*/
int ChanMode(char *origin, char **av, int ac)
int
ChanMode (char *origin, char **av, int ac)
{
char *modes;
int add = 0;
@ -180,61 +189,34 @@ int ChanMode(char *origin, char **av, int ac)
add = 0;
break;
default:
for (i = 0;
i <
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (*modes == cFlagTab[i].flag) {
if (add) {
if (cFlagTab[i].nickparam) {
ChangeChanUserMode
(c,
finduser(av
[j]),
1,
cFlagTab[i].
mode);
ChangeChanUserMode (c, finduser (av[j]), 1, cFlagTab[i].mode);
j++;
} else {
if (cFlagTab[i].
parameters) {
if (cFlagTab[i].parameters) {
mn = list_first (c->modeparms);
modeexists
= 0;
modeexists = 0;
while (mn) {
m = lnode_get (mn);
/* mode limit and mode key replace current values */
if ((m->mode == MODE_LIMIT) && (cFlagTab[i].mode == MODE_LIMIT)) {
strncpy
(m->
param,
av
[j],
PARAMSIZE);
strncpy (m->param, av[j], PARAMSIZE);
j++;
modeexists
=
1;
modeexists = 1;
break;
} else if ((m->mode == MODE_KEY) && (cFlagTab[i].mode == MODE_KEY)) {
strncpy
(m->
param,
av
[j],
PARAMSIZE);
strncpy (m->param, av[j], PARAMSIZE);
j++;
modeexists
=
1;
modeexists = 1;
break;
} else if (((int *) m->mode == (int *) cFlagTab[i].mode) && !strcasecmp (m->param, av[j])) {
nlog (LOG_INFO, LOG_CORE, "Mode %c (%s) already exists, not adding again", cFlagTab[i].flag, av[j]);
j++;
modeexists
=
1;
modeexists = 1;
break;
}
mn = list_next (c->modeparms, mn);
@ -242,66 +224,40 @@ int ChanMode(char *origin, char **av, int ac)
if (modeexists != 1) {
m = smalloc (sizeof (ModesParm));
m->mode = cFlagTab[i].mode;
strncpy
(m->
param,
av
[j],
PARAMSIZE);
strncpy (m->param, av[j], PARAMSIZE);
mn = lnode_create (m);
if (list_isfull (c->modeparms)) {
nlog (LOG_CRITICAL, LOG_CORE, "Eeek, Can't add additional Modes to Channel %s. Modelist is full", c->name);
do_exit
(0);
do_exit (0);
} else {
list_append
(c->
modeparms,
mn);
list_append (c->modeparms, mn);
}
j++;
}
} else {
c->modes |=
cFlagTab
[i].
mode;
c->modes |= cFlagTab[i].mode;
}
}
} else {
if (cFlagTab[i].nickparam) {
ChangeChanUserMode
(c,
finduser(av
[j]),
0,
cFlagTab[i].
mode);
ChangeChanUserMode (c, finduser (av[j]), 0, cFlagTab[i].mode);
j++;
} else {
if (cFlagTab[i].
parameters) {
if (cFlagTab[i].parameters) {
mn = list_find (c->modeparms, (int *) cFlagTab[i].mode, comparemode);
if (!mn) {
nlog (LOG_INFO, LOG_CORE, "Can't find Mode %c for Chan %s", *modes, c->name);
} else {
list_delete
(c->
modeparms,
mn);
list_delete (c->modeparms, mn);
m = lnode_get (mn);
lnode_destroy
(mn);
lnode_destroy (mn);
free (m);
if (!(cFlagTab[i].mode == MODE_LIMIT || cFlagTab[i].mode == MODE_KEY))
j++;
}
} else {
c->modes &=
~cFlagTab
[i].
mode;
c->modes &= ~cFlagTab[i].mode;
}
}
}
@ -326,7 +282,8 @@ int ChanMode(char *origin, char **av, int ac)
* @return Nothing
*/
void ChangeChanUserMode(Chans * c, User * u, int add, long mode)
void
ChangeChanUserMode (Chans * c, User * u, int add, long mode)
{
lnode_t *cmn;
Chanmem *cm;
@ -339,9 +296,7 @@ void ChangeChanUserMode(Chans * c, User * u, int add, long mode)
cmn = list_find (c->chanmembers, u->nick, comparef);
if (!cmn) {
if (me.coder_debug) {
chanalert(s_Services,
"ChangeChanUserMode() %s doesn't seem to be in the Chan %s",
u->nick, c->name);
chanalert (s_Services, "ChangeChanUserMode() %s doesn't seem to be in the Chan %s", u->nick, c->name);
chandump (c->name);
UserDump (u->nick);
}
@ -349,14 +304,10 @@ void ChangeChanUserMode(Chans * c, User * u, int add, long mode)
}
cm = lnode_get (cmn);
if (add) {
nlog(LOG_DEBUG2, LOG_CORE,
"Adding mode %ld to Channel %s User %s", mode,
c->name, u->nick);
nlog (LOG_DEBUG2, LOG_CORE, "Adding mode %ld to Channel %s User %s", mode, c->name, u->nick);
cm->flags |= mode;
} else {
nlog(LOG_DEBUG2, LOG_CORE,
"Deleting Mode %ld to Channel %s User %s", mode,
c->name, u->nick);
nlog (LOG_DEBUG2, LOG_CORE, "Deleting Mode %ld to Channel %s User %s", mode, c->name, u->nick);
cm->flags &= ~mode;
}
}
@ -371,7 +322,8 @@ void ChangeChanUserMode(Chans * c, User * u, int add, long mode)
* @returns c the newly created channel record
* @todo Dynamically resizable channel hashes
*/
Chans *new_chan(char *chan)
Chans *
new_chan (char *chan)
{
Chans *c;
hnode_t *cn;
@ -397,7 +349,8 @@ Chans *new_chan(char *chan)
* @returns Nothing
*/
void del_chan(Chans * c)
void
del_chan (Chans * c)
{
hnode_t *cn;
lnode_t *cm;
@ -405,8 +358,7 @@ void del_chan(Chans * c)
strcpy (segv_location, "del_chan");
cn = hash_lookup (ch, c->name);
if (!cn) {
nlog(LOG_WARNING, LOG_CORE,
"Hu, Deleting a Non Existand Channel?");
nlog (LOG_WARNING, LOG_CORE, "Hu, Deleting a Non Existand Channel?");
return;
} else {
nlog (LOG_DEBUG2, LOG_CORE, "Deleting Channel %s", c->name);
@ -434,7 +386,8 @@ void del_chan(Chans * c)
*
*/
void kick_chan(User * u, char *chan, User * k)
void
kick_chan (User * u, char *chan, User * k)
{
char **av;
int ac = 0;
@ -444,13 +397,9 @@ void kick_chan(User * u, char *chan, User * k)
strcpy (segv_location, "part_chan");
nlog (LOG_DEBUG2, LOG_CORE, "%s Kicking %s from %s", k->nick, u->nick, chan);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Ehh, KIcking a Unknown User %s from Chan %s: %s",
u->nick, chan, recbuf);
nlog (LOG_WARNING, LOG_CORE, "Ehh, KIcking a Unknown User %s from Chan %s: %s", u->nick, chan, recbuf);
if (me.coder_debug) {
chanalert(s_Services,
"Ehh, Kicking a Unknown User %s from Chan %s: %s",
u->nick, chan, recbuf);
chanalert (s_Services, "Ehh, Kicking a Unknown User %s from Chan %s: %s", u->nick, chan, recbuf);
chandump (chan);
UserDump (u->nick);
}
@ -458,19 +407,14 @@ void kick_chan(User * u, char *chan, User * k)
}
c = findchan (chan);
if (!c) {
nlog(LOG_WARNING, LOG_CORE,
"Hu, Kicking a Non existant Channel? %s", chan);
nlog (LOG_WARNING, LOG_CORE, "Hu, Kicking a Non existant Channel? %s", chan);
return;
} else {
un = list_find (c->chanmembers, u->nick, comparef);
if (!un) {
nlog(LOG_WARNING, LOG_CORE,
"Kick: hu, User %s isn't a member of this channel %s",
u->nick, chan);
nlog (LOG_WARNING, LOG_CORE, "Kick: hu, User %s isn't a member of this channel %s", u->nick, chan);
if (me.coder_debug) {
chanalert(s_Services,
"Kick: hu, User %s isn't a member of this channel %s",
u->nick, chan);
chanalert (s_Services, "Kick: hu, User %s isn't a member of this channel %s", u->nick, chan);
chandump (c->name);
UserDump (u->nick);
}
@ -485,8 +429,7 @@ void kick_chan(User * u, char *chan, User * k)
ac = 0;
c->cur_users--;
}
nlog(LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)",
c->name, c->cur_users, list_count(c->chanmembers));
nlog (LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)", c->name, c->cur_users, list_count (c->chanmembers));
if (c->cur_users <= 0) {
AddStringToList (&av, c->name, &ac);
Module_Event ("DELCHAN", av, ac);
@ -496,13 +439,9 @@ void kick_chan(User * u, char *chan, User * k)
}
un = list_find (u->chans, c->name, comparef);
if (!un) {
nlog(LOG_WARNING, LOG_CORE,
"Kick:Hu, User %s claims not to be part of Chan %s",
u->nick, chan);
nlog (LOG_WARNING, LOG_CORE, "Kick:Hu, User %s claims not to be part of Chan %s", u->nick, chan);
if (me.coder_debug) {
chanalert(s_Services,
"Kick: Hu, User %s claims not to be part of Chan %s",
u->nick, chan);
chanalert (s_Services, "Kick: Hu, User %s claims not to be part of Chan %s", u->nick, chan);
chandump (c->name);
UserDump (u->nick);
}
@ -536,7 +475,8 @@ void kick_chan(User * u, char *chan, User * k)
*/
void part_chan(User * u, char *chan)
void
part_chan (User * u, char *chan)
{
Chans *c;
lnode_t *un;
@ -546,13 +486,9 @@ void part_chan(User * u, char *chan)
strcpy (segv_location, "part_chan");
nlog (LOG_DEBUG2, LOG_CORE, "Parting %s from %s", u->nick, chan);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Ehh, Parting a Unknown User %s from Chan %s: %s",
u->nick, chan, recbuf);
nlog (LOG_WARNING, LOG_CORE, "Ehh, Parting a Unknown User %s from Chan %s: %s", u->nick, chan, recbuf);
if (me.coder_debug) {
chanalert(s_Services,
"Ehh, Parting a Unknown User %s from Chan %s: %s",
u->nick, chan, recbuf);
chanalert (s_Services, "Ehh, Parting a Unknown User %s from Chan %s: %s", u->nick, chan, recbuf);
chandump (chan);
UserDump (u->nick);
}
@ -560,19 +496,14 @@ void part_chan(User * u, char *chan)
}
c = findchan (chan);
if (!c) {
nlog(LOG_WARNING, LOG_CORE,
"Hu, Parting a Non existant Channel? %s", chan);
nlog (LOG_WARNING, LOG_CORE, "Hu, Parting a Non existant Channel? %s", chan);
return;
} else {
un = list_find (c->chanmembers, u->nick, comparef);
if (!un) {
nlog(LOG_WARNING, LOG_CORE,
"hu, User %s isn't a member of this channel %s",
u->nick, chan);
nlog (LOG_WARNING, LOG_CORE, "hu, User %s isn't a member of this channel %s", u->nick, chan);
if (me.coder_debug) {
chanalert(s_Services,
"hu, User %s isn't a member of this channel %s",
u->nick, chan);
chanalert (s_Services, "hu, User %s isn't a member of this channel %s", u->nick, chan);
chandump (c->name);
UserDump (u->nick);
}
@ -588,8 +519,7 @@ void part_chan(User * u, char *chan)
// FreeList(av, ac);
c->cur_users--;
}
nlog(LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)",
c->name, c->cur_users, list_count(c->chanmembers));
nlog (LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)", c->name, c->cur_users, list_count (c->chanmembers));
if (c->cur_users <= 0) {
AddStringToList (&av, c->name, &ac);
Module_Event ("DELCHAN", av, ac);
@ -600,13 +530,9 @@ void part_chan(User * u, char *chan)
}
un = list_find (u->chans, c->name, comparef);
if (!un) {
nlog(LOG_WARNING, LOG_CORE,
"Hu, User %s claims not to be part of Chan %s",
u->nick, chan);
nlog (LOG_WARNING, LOG_CORE, "Hu, User %s claims not to be part of Chan %s", u->nick, chan);
if (me.coder_debug) {
chanalert(s_Services,
"Hu, User %s claims not to be part of Chan %s",
u->nick, chan);
chanalert (s_Services, "Hu, User %s claims not to be part of Chan %s", u->nick, chan);
chandump (c->name);
UserDump (u->nick);
}
@ -637,28 +563,23 @@ void part_chan(User * u, char *chan)
* @todo What happens if one of our bots change their nick?
*/
void change_user_nick(Chans * c, char *newnick, char *oldnick)
void
change_user_nick (Chans * c, char *newnick, char *oldnick)
{
lnode_t *cm;
Chanmem *cml;
strcpy (segv_location, "change_user_nick");
cm = list_find (c->chanmembers, oldnick, comparef);
if (!cm) {
nlog(LOG_WARNING, LOG_CORE,
"change_user_nick() %s isn't a member of %s", oldnick,
c->name);
nlog (LOG_WARNING, LOG_CORE, "change_user_nick() %s isn't a member of %s", oldnick, c->name);
if (me.coder_debug) {
chanalert(s_Services,
"change_user_nick() %s isn't a member of %s",
oldnick, c->name);
chanalert (s_Services, "change_user_nick() %s isn't a member of %s", oldnick, c->name);
chandump (c->name);
UserDump (oldnick);
}
return;
} else {
nlog(LOG_DEBUG3, LOG_CORE,
"Change_User_Nick(): NewNick %s, OldNick %s", newnick,
oldnick);
nlog (LOG_DEBUG3, LOG_CORE, "Change_User_Nick(): NewNick %s, OldNick %s", newnick, oldnick);
cml = lnode_get (cm);
strncpy (cml->nick, newnick, MAXNICK);
}
@ -679,7 +600,8 @@ void change_user_nick(Chans * c, char *newnick, char *oldnick)
*/
void join_chan(User * u, char *chan)
void
join_chan (User * u, char *chan)
{
Chans *c;
lnode_t *un, *cn;
@ -688,23 +610,19 @@ void join_chan(User * u, char *chan)
int ac = 0;
strcpy (segv_location, "join_chan");
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"ehhh, Joining a Unknown user to %s: %s", chan,
recbuf);
nlog (LOG_WARNING, LOG_CORE, "ehhh, Joining a Unknown user to %s: %s", chan, recbuf);
return;
}
if (!strcasecmp ("0", chan)) {
/* join 0 is actually part all chans */
nlog(LOG_DEBUG2, LOG_CORE,
"join_chan() -> Parting all chans %s", u->nick);
nlog (LOG_DEBUG2, LOG_CORE, "join_chan() -> Parting all chans %s", u->nick);
list_process (u->chans, u, part_u_chan);
return;
}
c = findchan (chan);
if (!c) {
/* its a new Channel */
nlog(LOG_DEBUG2, LOG_CORE, "join_chan() -> New Channel %s",
chan);
nlog (LOG_DEBUG2, LOG_CORE, "join_chan() -> New Channel %s", chan);
c = new_chan (chan);
c->chanmembers = list_create (CHAN_MEM_SIZE);
c->modeparms = list_create (MAXMODES);
@ -724,24 +642,18 @@ void join_chan(User * u, char *chan)
cm->joint = time (NULL);
cm->flags = 0;
cn = lnode_create (cm);
nlog(LOG_DEBUG2, LOG_CORE, "adding usernode %s to Channel %s",
u->nick, chan);
nlog (LOG_DEBUG2, LOG_CORE, "adding usernode %s to Channel %s", u->nick, chan);
if (list_find (c->chanmembers, u->nick, comparef)) {
nlog(LOG_WARNING, LOG_CORE,
"Adding %s to Chan %s when he is already a member?",
u->nick, chan);
nlog (LOG_WARNING, LOG_CORE, "Adding %s to Chan %s when he is already a member?", u->nick, chan);
if (me.coder_debug) {
chanalert(s_Services,
"Adding %s to Chan %s when he is already a member?",
u->nick, chan);
chanalert (s_Services, "Adding %s to Chan %s when he is already a member?", u->nick, chan);
chandump (c->name);
UserDump (u->nick);
}
return;
}
if (list_isfull (c->chanmembers)) {
nlog(LOG_CRITICAL, LOG_CORE,
"ekk, Channel %s Members list is full", c->name);
nlog (LOG_CRITICAL, LOG_CORE, "ekk, Channel %s Members list is full", c->name);
lnode_destroy (cn);
free (cm);
return;
@ -751,8 +663,7 @@ void join_chan(User * u, char *chan)
c->cur_users++;
un = lnode_create (c->name);
if (list_isfull (u->chans)) {
nlog(LOG_CRITICAL, LOG_CORE,
"eek, User %s members list is full", u->nick);
nlog (LOG_CRITICAL, LOG_CORE, "eek, User %s members list is full", u->nick);
lnode_destroy (un);
} else {
list_append (u->chans, un);
@ -762,8 +673,7 @@ void join_chan(User * u, char *chan)
Module_Event ("JOINCHAN", av, ac);
free (av);
// FreeList(av, ac);
nlog(LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)", c->name,
c->cur_users, list_count(c->chanmembers));
nlog (LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)", c->name, c->cur_users, list_count (c->chanmembers));
if (findbot (u->nick)) {
add_bot_to_chan (u->nick, c->name);
}
@ -781,7 +691,8 @@ void join_chan(User * u, char *chan)
*/
void chandump(char *chan)
void
chandump (char *chan)
{
hnode_t *cn;
lnode_t *cmn;
@ -802,34 +713,20 @@ void chandump(char *chan)
sendcoders ("====================");
bzero (mode, 10);
mode[0] = '+';
for (i = 0;
i <
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (c->modes & cFlagTab[i].mode) {
mode[++j] = cFlagTab[i].flag;
}
}
sendcoders
("Channel: %s Members: %d (List %d) Flags %s tstime %d",
c->name, c->cur_users,
list_count(c->chanmembers), mode, c->tstime);
sendcoders
(" Topic Owner %s, TopicTime: %d, Topic %s",
c->topicowner, c->topictime, c->topic);
sendcoders ("Channel: %s Members: %d (List %d) Flags %s tstime %d", c->name, c->cur_users, list_count (c->chanmembers), mode, c->tstime);
sendcoders (" Topic Owner %s, TopicTime: %d, Topic %s", c->topicowner, c->topictime, c->topic);
sendcoders ("PubChan?: %d", is_pub_chan (c));
cmn = list_first (c->modeparms);
while (cmn) {
m = lnode_get (cmn);
for (i = 0;
i <
((sizeof(cFlagTab) /
sizeof(cFlagTab[0])) - 1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (m->mode & cFlagTab[i].mode) {
sendcoders
(" Modes: %c Parms %s",
cFlagTab[i].flag,
m->param);
sendcoders (" Modes: %c Parms %s", cFlagTab[i].flag, m->param);
}
}
@ -841,17 +738,12 @@ void chandump(char *chan)
bzero (mode, 10);
j = 0;
mode[0] = '+';
for (i = 0;
i <
((sizeof(cFlagTab) /
sizeof(cFlagTab[0])) - 1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (cm->flags & cFlagTab[i].mode) {
mode[++j] = cFlagTab[i].flag;
}
}
sendcoders
("Members: %s Modes %s Joined %d",
cm->nick, mode, cm->joint);
sendcoders ("Members: %s Modes %s Joined %d", cm->nick, mode, cm->joint);
cmn = list_next (c->chanmembers, cmn);
}
}
@ -863,34 +755,20 @@ void chandump(char *chan)
bzero (mode, 10);
j = 0;
mode[0] = '+';
for (i = 0;
i <
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (c->modes & cFlagTab[i].mode) {
mode[++j] = cFlagTab[i].flag;
}
}
sendcoders
("Channel: %s Members: %d (List %d) Flags %s tstime %d",
c->name, c->cur_users,
list_count(c->chanmembers), mode, c->tstime);
sendcoders
(" Topic Owner %s, TopicTime: %d Topic %s",
c->topicowner, c->topictime, c->topic);
sendcoders ("Channel: %s Members: %d (List %d) Flags %s tstime %d", c->name, c->cur_users, list_count (c->chanmembers), mode, c->tstime);
sendcoders (" Topic Owner %s, TopicTime: %d Topic %s", c->topicowner, c->topictime, c->topic);
sendcoders ("PubChan?: %d", is_pub_chan (c));
cmn = list_first (c->modeparms);
while (cmn) {
m = lnode_get (cmn);
for (i = 0;
i <
((sizeof(cFlagTab) /
sizeof(cFlagTab[0])) - 1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (m->mode & cFlagTab[i].mode) {
sendcoders
(" Modes: %c Parms %s",
cFlagTab[i].flag,
m->param);
sendcoders (" Modes: %c Parms %s", cFlagTab[i].flag, m->param);
}
}
cmn = list_next (c->modeparms, cmn);
@ -901,17 +779,12 @@ void chandump(char *chan)
bzero (mode, 10);
mode[0] = '+';
j = 0;
for (i = 0;
i <
((sizeof(cFlagTab) /
sizeof(cFlagTab[0])) - 1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (cm->flags & cFlagTab[i].mode) {
mode[++j] = cFlagTab[i].flag;
}
}
sendcoders
("Members: %s Modes %s Joined: %d",
cm->nick, mode, cm->joint);
sendcoders ("Members: %s Modes %s Joined: %d", cm->nick, mode, cm->joint);
cmn = list_next (c->chanmembers, cmn);
}
}
@ -929,7 +802,8 @@ void chandump(char *chan)
*/
Chans *findchan(char *chan)
Chans *
findchan (char *chan)
{
Chans *c;
hnode_t *cn;
@ -939,8 +813,7 @@ Chans *findchan(char *chan)
c = hnode_get (cn);
return c;
} else {
nlog(LOG_DEBUG3, LOG_CORE, "FindChan(%s) -> Not Found",
chan);
nlog (LOG_DEBUG3, LOG_CORE, "FindChan(%s) -> Not Found", chan);
return NULL;
}
}

64
conf.c
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: conf.c,v 1.25 2003/06/13 13:11:48 fishwaldo Exp $
** $Id: conf.c,v 1.26 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -68,7 +68,8 @@ static config_option options[] = {
* @return Nothing
*/
void init_conf()
void
init_conf ()
{
}
@ -80,7 +81,8 @@ void init_conf()
* @retval line the stripped line
*/
void strip(char *line)
void
strip (char *line)
{
char *c;
if ((c = strchr (line, '\n')))
@ -98,27 +100,20 @@ void strip(char *line)
*/
void ConfLoad()
void
ConfLoad ()
{
/* Read in the Config File */
printf ("Reading the Config File. Please wait.....\n");
if (!config_read ("neostats.cfg", options) == 0) {
printf
("***************************************************\n");
printf
("* Error! *\n");
printf
("* *\n");
printf
("* Config File not found, or Unable to Open *\n");
printf
("* Please check its Location, and try again *\n");
printf
("* *\n");
printf
("* NeoStats NOT Started *\n");
printf
("***************************************************\n");
printf ("***************************************************\n");
printf ("* Error! *\n");
printf ("* *\n");
printf ("* Config File not found, or Unable to Open *\n");
printf ("* Please check its Location, and try again *\n");
printf ("* *\n");
printf ("* NeoStats NOT Started *\n");
printf ("***************************************************\n");
/* no need to call do_exit, we havn't even started! */
exit (0);
}
@ -131,6 +126,9 @@ void ConfLoad()
if (GetConf ((void *) &me.allbots, CFGBOOL, "AllBotsJoinChan") <= 0) {
me.allbots = 0;
}
if (GetConf ((void *) &me.pingtime, CFGINT, "PingServerTime") <= 0) {
me.pingtime = 120;
}
done_mods = 0;
}
@ -144,7 +142,8 @@ void ConfLoad()
* @returns Nothing
*/
void cb_Module(char *arg, int configtype)
void
cb_Module (char *arg, int configtype)
{
int i;
strcpy (segv_location, "cb_Module");
@ -155,8 +154,7 @@ void cb_Module(char *arg, int configtype)
}
}
load_mods[i] = sstrdup (arg);
nlog(LOG_NORMAL, LOG_CORE, "Added Module %d :%s", i,
load_mods[i]);
nlog (LOG_NORMAL, LOG_CORE, "Added Module %d :%s", i, load_mods[i]);
}
}
@ -168,7 +166,8 @@ void cb_Module(char *arg, int configtype)
* @bugs if a single module fails to load, it stops trying to load any other modules
*/
int init_modules()
int
init_modules ()
{
int i;
int rval;
@ -176,17 +175,12 @@ int init_modules()
strcpy (segv_location, "init_modules");
for (i = 1; (i < NUM_MODULES) && (load_mods[i] != 0); i++) {
nlog(LOG_DEBUG1, LOG_CORE, "Loading Module %s",
load_mods[i]);
nlog (LOG_DEBUG1, LOG_CORE, "Loading Module %s", load_mods[i]);
rval = load_module (load_mods[i], NULL);
if (!rval) {
nlog(LOG_NORMAL, LOG_CORE,
"Successfully Loaded Module %s",
load_mods[i]);
nlog (LOG_NORMAL, LOG_CORE, "Successfully Loaded Module %s", load_mods[i]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Could Not Load Module %s, Please check above error Messages",
load_mods[i]);
nlog (LOG_WARNING, LOG_CORE, "Could Not Load Module %s, Please check above error Messages", load_mods[i]);
}
}
return 1;
@ -201,7 +195,8 @@ int init_modules()
* @param configtype the index of the variable being called now
* @returns Nothing
*/
void cb_Server(char *arg, int configtype)
void
cb_Server (char *arg, int configtype)
{
if (configtype == 0) {
@ -253,7 +248,8 @@ void cb_Server(char *arg, int configtype)
* @returns Nothing
*/
void rehash()
void
rehash ()
{
/* nothing, yet */
}

2
conf.h
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: conf.h,v 1.5 2003/05/26 09:18:28 fishwaldo Exp $
** $Id: conf.h,v 1.6 2003/07/30 13:58:22 fishwaldo Exp $
*/

319
dl.c
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: dl.c,v 1.61 2003/07/15 09:16:15 fishwaldo Exp $
** $Id: dl.c,v 1.62 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include <dlfcn.h>
@ -36,7 +36,8 @@
void __init_mod_list()
void
__init_mod_list ()
{
strcpy (segv_location, "__init_mod_list");
@ -48,7 +49,8 @@ void __init_mod_list()
sockh = hash_create (me.maxsocks, 0, 0);
}
static Mod_Timer *new_timer(char *timer_name)
static Mod_Timer *
new_timer (char *timer_name)
{
Mod_Timer *t;
hnode_t *tn;
@ -60,8 +62,7 @@ static Mod_Timer *new_timer(char *timer_name)
strncpy (t->timername, timer_name, MAXHOST);
tn = hnode_create (t);
if (hash_isfull (th)) {
nlog(LOG_WARNING, LOG_CORE,
"new_timer(): Couldn't add new Timer, Hash is Full!");
nlog (LOG_WARNING, LOG_CORE, "new_timer(): Couldn't add new Timer, Hash is Full!");
return NULL;
} else {
hash_insert (th, tn, timer_name);
@ -69,7 +70,8 @@ static Mod_Timer *new_timer(char *timer_name)
return t;
}
Mod_Timer *findtimer(char *timer_name)
Mod_Timer *
findtimer (char *timer_name)
{
hnode_t *tn;
@ -79,8 +81,9 @@ Mod_Timer *findtimer(char *timer_name)
return (Mod_Timer *) hnode_get (tn);
return NULL;
}
int add_mod_timer(char *func_name, char *timer_name, char *mod_name,
int interval)
int
add_mod_timer (char *func_name, char *timer_name, char *mod_name, int interval)
{
Mod_Timer *Mod_timer_list;
@ -88,23 +91,24 @@ int add_mod_timer(char *func_name, char *timer_name, char *mod_name,
if (dlsym ((int *) get_dl_handle (mod_name), func_name) == NULL) {
nlog(LOG_WARNING, LOG_CORE,
"Oh Oh, The Timer Function doesn't exist");
nlog (LOG_WARNING, LOG_CORE, "Oh Oh, The Timer Function doesn't exist");
return -1;
}
Mod_timer_list = new_timer (timer_name);
if (Mod_timer_list) {
Mod_timer_list->interval = interval;
Mod_timer_list->lastrun = time (NULL);
strncpy (Mod_timer_list->modname, mod_name, MAXHOST);
Mod_timer_list->function =
dlsym((int *) get_dl_handle(mod_name), func_name);
nlog(LOG_DEBUG2, LOG_CORE,
"Registered Module %s with timer for Function %s", mod_name,
func_name);
Mod_timer_list->function = dlsym ((int *) get_dl_handle (mod_name), func_name);
nlog (LOG_DEBUG2, LOG_CORE, "Registered Module %s with timer for Function %s", mod_name, func_name);
return 1;
} else {
return -1;
}
}
int del_mod_timer(char *timer_name)
int
del_mod_timer (char *timer_name)
{
Mod_Timer *list;
hnode_t *tn;
@ -113,9 +117,7 @@ int del_mod_timer(char *timer_name)
tn = hash_lookup (th, timer_name);
if (tn) {
list = hnode_get (tn);
nlog(LOG_DEBUG2, LOG_CORE,
"Unregistered Timer function %s from Module %s",
timer_name, list->modname);
nlog (LOG_DEBUG2, LOG_CORE, "Unregistered Timer function %s from Module %s", timer_name, list->modname);
hash_delete (th, tn);
hnode_destroy (tn);
free (list);
@ -124,7 +126,8 @@ int del_mod_timer(char *timer_name)
return -1;
}
void list_module_timer(User * u)
void
list_module_timer (User * u)
{
Mod_Timer *mod_ptr = NULL;
hscan_t ts;
@ -135,21 +138,16 @@ void list_module_timer(User * u)
hash_scan_begin (&ts, th);
while ((tn = hash_scan_next (&ts)) != NULL) {
mod_ptr = hnode_get (tn);
prefmsg(u->nick, s_Services,
"%s:--------------------------------",
mod_ptr->modname);
prefmsg(u->nick, s_Services, "Module Timer Name: %s",
mod_ptr->timername);
prefmsg(u->nick, s_Services, "Module Interval: %d",
mod_ptr->interval);
prefmsg(u->nick, s_Services, "Time till next Run: %d",
mod_ptr->interval - (time(NULL) -
mod_ptr->lastrun));
prefmsg (u->nick, s_Services, "%s:--------------------------------", mod_ptr->modname);
prefmsg (u->nick, s_Services, "Module Timer Name: %s", mod_ptr->timername);
prefmsg (u->nick, s_Services, "Module Interval: %d", mod_ptr->interval);
prefmsg (u->nick, s_Services, "Time till next Run: %d", mod_ptr->interval - (time (NULL) - mod_ptr->lastrun));
}
prefmsg (u->nick, s_Services, "End of Module timer List");
}
static Sock_List *new_sock(char *sock_name)
static Sock_List *
new_sock (char *sock_name)
{
Sock_List *s;
hnode_t *sn;
@ -162,8 +160,7 @@ static Sock_List *new_sock(char *sock_name)
strncpy (s->sockname, sock_name, MAXHOST);
sn = hnode_create (s);
if (hash_isfull (sockh)) {
nlog(LOG_CRITICAL, LOG_CORE,
"Eeek, SocketHash is full, can not add a new socket");
nlog (LOG_CRITICAL, LOG_CORE, "Eeek, SocketHash is full, can not add a new socket");
return NULL;
} else {
hash_insert (sockh, sn, s->sockname);
@ -171,7 +168,8 @@ static Sock_List *new_sock(char *sock_name)
return s;
}
Sock_List *findsock(char *sock_name)
Sock_List *
findsock (char *sock_name)
{
hnode_t *sn;
strcpy (segv_location, "findsock");
@ -181,55 +179,42 @@ Sock_List *findsock(char *sock_name)
return NULL;
}
int add_socket(char *readfunc, char *writefunc, char *errfunc,
char *sock_name, int socknum, char *mod_name)
int
add_socket (char *readfunc, char *writefunc, char *errfunc, char *sock_name, int socknum, char *mod_name)
{
Sock_List *Sockets_mod_list;
strcpy (segv_location, "add_Socket");
if (readfunc) {
if (dlsym((int *) get_dl_handle(mod_name), readfunc) ==
NULL) {
nlog(LOG_WARNING, LOG_CORE,
"oh oh, the Read socket function doesn't exist = %s (%s)",
readfunc, mod_name);
if (dlsym ((int *) get_dl_handle (mod_name), readfunc) == NULL) {
nlog (LOG_WARNING, LOG_CORE, "oh oh, the Read socket function doesn't exist = %s (%s)", readfunc, mod_name);
return -1;
}
}
if (writefunc) {
if (dlsym((int *) get_dl_handle(mod_name), writefunc) ==
NULL) {
nlog(LOG_WARNING, LOG_CORE,
"oh oh, the Write socket function doesn't exist = %s (%s)",
writefunc, mod_name);
if (dlsym ((int *) get_dl_handle (mod_name), writefunc) == NULL) {
nlog (LOG_WARNING, LOG_CORE, "oh oh, the Write socket function doesn't exist = %s (%s)", writefunc, mod_name);
return -1;
}
}
if (errfunc) {
if (dlsym((int *) get_dl_handle(mod_name), errfunc) ==
NULL) {
nlog(LOG_WARNING, LOG_CORE,
"oh oh, the Error socket function doesn't exist = %s (%s)",
errfunc, mod_name);
if (dlsym ((int *) get_dl_handle (mod_name), errfunc) == NULL) {
nlog (LOG_WARNING, LOG_CORE, "oh oh, the Error socket function doesn't exist = %s (%s)", errfunc, mod_name);
return -1;
}
}
Sockets_mod_list = new_sock (sock_name);
Sockets_mod_list->sock_no = socknum;
strncpy (Sockets_mod_list->modname, mod_name, MAXHOST);
Sockets_mod_list->readfnc =
dlsym((int *) get_dl_handle(mod_name), readfunc);
Sockets_mod_list->writefnc =
dlsym((int *) get_dl_handle(mod_name), writefunc);
Sockets_mod_list->errfnc =
dlsym((int *) get_dl_handle(mod_name), errfunc);
nlog(LOG_DEBUG2, LOG_CORE,
"Registered Module %s with Socket functions %s", mod_name,
Sockets_mod_list->sockname);
Sockets_mod_list->readfnc = dlsym ((int *) get_dl_handle (mod_name), readfunc);
Sockets_mod_list->writefnc = dlsym ((int *) get_dl_handle (mod_name), writefunc);
Sockets_mod_list->errfnc = dlsym ((int *) get_dl_handle (mod_name), errfunc);
nlog (LOG_DEBUG2, LOG_CORE, "Registered Module %s with Socket functions %s", mod_name, Sockets_mod_list->sockname);
return 1;
}
int del_socket(char *sock_name)
int
del_socket (char *sock_name)
{
Sock_List *list;
hnode_t *sn;
@ -238,9 +223,7 @@ int del_socket(char *sock_name)
sn = hash_lookup (sockh, sock_name);
if (sn) {
list = hnode_get (sn);
nlog(LOG_DEBUG2, LOG_CORE,
"Unregistered Socket function %s from Module %s",
sock_name, list->modname);
nlog (LOG_DEBUG2, LOG_CORE, "Unregistered Socket function %s from Module %s", sock_name, list->modname);
hash_scan_delete (sockh, sn);
hnode_destroy (sn);
// free(list->sockname);
@ -250,30 +233,27 @@ int del_socket(char *sock_name)
return -1;
}
void list_sockets(User * u)
void
list_sockets (User * u)
{
Sock_List *mod_ptr = NULL;
hscan_t ss;
hnode_t *sn;
strcpy (segv_location, "list_sockets");
prefmsg(u->nick, s_Services, "Sockets List: (%d)",
hash_count(sockh));
prefmsg (u->nick, s_Services, "Sockets List: (%d)", hash_count (sockh));
hash_scan_begin (&ss, sockh);
while ((sn = hash_scan_next (&ss)) != NULL) {
mod_ptr = hnode_get (sn);
prefmsg(u->nick, s_Services,
"%s:--------------------------------",
mod_ptr->modname);
prefmsg(u->nick, s_Services, "Socket Name: %s",
mod_ptr->sockname);
prefmsg(u->nick, s_Services, "Socket Number: %d",
mod_ptr->sock_no);
prefmsg (u->nick, s_Services, "%s:--------------------------------", mod_ptr->modname);
prefmsg (u->nick, s_Services, "Socket Name: %s", mod_ptr->sockname);
prefmsg (u->nick, s_Services, "Socket Number: %d", mod_ptr->sock_no);
}
prefmsg (u->nick, s_Services, "End of Socket List");
}
extern void add_bot_to_chan(char *bot, char *chan)
extern void
add_bot_to_chan (char *bot, char *chan)
{
hnode_t *cbn;
Chan_Bot *bc;
@ -286,8 +266,7 @@ extern void add_bot_to_chan(char *bot, char *chan)
bc->bots = list_create (B_TABLE_SIZE);
cbn = hnode_create (bc);
if (hash_isfull (bch)) {
nlog(LOG_CRITICAL, LOG_CORE,
"eek, bot channel hash is full");
nlog (LOG_CRITICAL, LOG_CORE, "eek, bot channel hash is full");
return;
}
hash_insert (bch, cbn, bc->chan);
@ -295,8 +274,7 @@ extern void add_bot_to_chan(char *bot, char *chan)
bc = hnode_get (cbn);
}
if (list_isfull (bc->bots)) {
nlog(LOG_CRITICAL, LOG_CORE,
"Eeek, Bot Channel List is full for Chan %s", chan);
nlog (LOG_CRITICAL, LOG_CORE, "Eeek, Bot Channel List is full for Chan %s", chan);
return;
}
botname = sstrdup (bot);
@ -305,23 +283,21 @@ extern void add_bot_to_chan(char *bot, char *chan)
return;
}
extern void del_bot_from_chan(char *bot, char *chan)
extern void
del_bot_from_chan (char *bot, char *chan)
{
hnode_t *cbn;
Chan_Bot *bc;
lnode_t *bmn;
cbn = hash_lookup (bch, chan);
if (!cbn) {
nlog(LOG_WARNING, LOG_CORE,
"Hu? Can't Find Channel %s for botchanhash", chan);
nlog (LOG_WARNING, LOG_CORE, "Hu? Can't Find Channel %s for botchanhash", chan);
return;
}
bc = hnode_get (cbn);
bmn = list_find (bc->bots, bot, comparef);
if (!bmn) {
nlog(LOG_WARNING, LOG_CORE,
"Hu? Can't find bot %s in %s in botchanhash", bot,
chan);
nlog (LOG_WARNING, LOG_CORE, "Hu? Can't find bot %s in %s in botchanhash", bot, chan);
return;
}
list_delete (bc->bots, bmn);
@ -336,7 +312,8 @@ extern void del_bot_from_chan(char *bot, char *chan)
}
}
extern void bot_chan_message(char *origin, char *chan, char **av, int ac)
extern void
bot_chan_message (char *origin, char *chan, char **av, int ac)
{
hnode_t *cbn;
Chan_Bot *bc;
@ -344,9 +321,7 @@ extern void bot_chan_message(char *origin, char *chan, char **av, int ac)
Mod_User *u;
cbn = hash_lookup (bch, chan);
if (!cbn) {
nlog(LOG_WARNING, LOG_CORE,
"eeeh, Can't find channel %s for BotChanMessage",
chan);
nlog (LOG_WARNING, LOG_CORE, "eeeh, Can't find channel %s for BotChanMessage", chan);
return;
}
bc = hnode_get (cbn);
@ -354,8 +329,7 @@ extern void bot_chan_message(char *origin, char *chan, char **av, int ac)
while (bmn) {
u = findbot (lnode_get (bmn));
if (u->chanfunc) {
nlog(LOG_DEBUG2, LOG_CORE,
"Running Module for Chanmessage %s", chan);
nlog (LOG_DEBUG2, LOG_CORE, "Running Module for Chanmessage %s", chan);
u->chanfunc (origin, chan, av, ac);
}
bmn = list_next (bc->bots, bmn);
@ -365,7 +339,8 @@ extern void bot_chan_message(char *origin, char *chan, char **av, int ac)
}
extern void botchandump(User * u)
extern void
botchandump (User * u)
{
hscan_t hs;
hnode_t *hn;
@ -375,18 +350,17 @@ extern void botchandump(User * u)
hash_scan_begin (&hs, bch);
while ((hn = hash_scan_next (&hs)) != NULL) {
bc = hnode_get (hn);
prefmsg(u->nick, s_Services,
"%s:--------------------------------", bc->chan);
prefmsg (u->nick, s_Services, "%s:--------------------------------", bc->chan);
ln = list_first (bc->bots);
while (ln) {
prefmsg(u->nick, s_Services, "Bot Name: %s",
lnode_get(ln));
prefmsg (u->nick, s_Services, "Bot Name: %s", lnode_get (ln));
ln = list_next (bc->bots, ln);
}
}
}
static Mod_User *new_bot(char *bot_name)
static Mod_User *
new_bot (char *bot_name)
{
Mod_User *u;
hnode_t *bn;
@ -406,7 +380,9 @@ static Mod_User *new_bot(char *bot_name)
}
return u;
}
int add_mod_user(char *nick, char *mod_name)
int
add_mod_user (char *nick, char *mod_name)
{
Mod_User *Mod_Usr_list;
Module *list_ptr;
@ -423,19 +399,17 @@ int add_mod_user(char *nick, char *mod_name)
mn = hash_lookup (mh, mod_name);
if (mn) {
list_ptr = hnode_get (mn);
Mod_Usr_list->function =
dlsym(list_ptr->dl_handle, "__Bot_Message");
Mod_Usr_list->chanfunc =
dlsym(list_ptr->dl_handle, "__Chan_Message");
Mod_Usr_list->function = dlsym (list_ptr->dl_handle, "__Bot_Message");
Mod_Usr_list->chanfunc = dlsym (list_ptr->dl_handle, "__Chan_Message");
return 1;
}
nlog(LOG_WARNING, LOG_CORE,
"add_mod_user(): Couldn't Add ModuleBot to List");
nlog (LOG_WARNING, LOG_CORE, "add_mod_user(): Couldn't Add ModuleBot to List");
return 0;
}
Mod_User *findbot(char *bot_name)
Mod_User *
findbot (char *bot_name)
{
hnode_t *bn;
@ -447,7 +421,8 @@ Mod_User *findbot(char *bot_name)
return NULL;
}
int del_mod_user(char *bot_name)
int
del_mod_user (char *bot_name)
{
Mod_User *list;
hnode_t *bn;
@ -469,7 +444,8 @@ int del_mod_user(char *bot_name)
}
int bot_nick_change(char *oldnick, char *newnick)
int
bot_nick_change (char *oldnick, char *newnick)
{
User *u;
Mod_User *mod_tmp, *mod_ptr;
@ -479,24 +455,19 @@ int bot_nick_change(char *oldnick, char *newnick)
/* First, try to find out if the newnick is unique! */
u = finduser (oldnick);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"A non-registered bot(%s) attempted to change its nick to %s",
oldnick, newnick);
nlog (LOG_WARNING, LOG_CORE, "A non-registered bot(%s) attempted to change its nick to %s", oldnick, newnick);
return -1;
}
u = finduser (newnick);
if (!u) {
if ((mod_ptr = findbot (oldnick)) != NULL) {
nlog(LOG_DEBUG3, LOG_CORE,
"Bot %s Changed its nick to %s", oldnick,
newnick);
nlog (LOG_DEBUG3, LOG_CORE, "Bot %s Changed its nick to %s", oldnick, newnick);
mod_tmp = new_bot (newnick);
/* add a brand new user */
strncpy (mod_tmp->nick, newnick, MAXNICK);
strncpy(mod_tmp->modname, mod_ptr->modname,
MAXHOST);
strncpy (mod_tmp->modname, mod_ptr->modname, MAXHOST);
mod_tmp->function = mod_ptr->function;
/* Now Delete the Old bot nick */
@ -506,15 +477,15 @@ int bot_nick_change(char *oldnick, char *newnick)
return 1;
}
}
nlog(LOG_NOTICE, LOG_CORE, "Couldn't find Bot Nick %s in Bot list",
oldnick);
nlog (LOG_NOTICE, LOG_CORE, "Couldn't find Bot Nick %s in Bot list", oldnick);
return -1;
}
void list_module_bots(User * u)
void
list_module_bots (User * u)
{
Mod_User *mod_ptr;
hnode_t *bn;
@ -525,10 +496,8 @@ void list_module_bots(User * u)
hash_scan_begin (&bs, bh);
while ((bn = hash_scan_next (&bs)) != NULL) {
mod_ptr = hnode_get (bn);
prefmsg(u->nick, s_Services, "Module: %s",
mod_ptr->modname);
prefmsg(u->nick, s_Services, "Module Bots: %s",
mod_ptr->nick);
prefmsg (u->nick, s_Services, "Module: %s", mod_ptr->modname);
prefmsg (u->nick, s_Services, "Module Bots: %s", mod_ptr->nick);
}
prefmsg (u->nick, s_Services, "End of Module Bot List");
}
@ -536,7 +505,8 @@ void list_module_bots(User * u)
int load_module(char *path1, User * u)
int
load_module (char *path1, User * u)
{
@ -581,12 +551,10 @@ int load_module(char *path1, User * u)
strcpy (segvinmodule, "");
if (!dl_handle) {
if (do_msg)
prefmsg(u->nick, s_Services,
"Error, Couldn't Load Module");
prefmsg (u->nick, s_Services, "Error, Couldn't Load Module");
if (do_msg)
prefmsg (u->nick, s_Services, "%s", dlerror ());
nlog(LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s",
dlerror());
nlog (LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s", dlerror ());
nlog (LOG_WARNING, LOG_CORE, "Module was %s", p);
return -1;
}
@ -599,12 +567,10 @@ int load_module(char *path1, User * u)
if ((dl_error = dlerror ()) != NULL) {
#endif
if (do_msg)
prefmsg(u->nick, s_Services,
"Error, Couldn't Load Module");
prefmsg (u->nick, s_Services, "Error, Couldn't Load Module");
if (do_msg)
prefmsg (u->nick, s_Services, "%s", dl_error);
nlog(LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s",
dl_error);
nlog (LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s", dl_error);
dlclose (dl_handle);
return -1;
}
@ -617,12 +583,10 @@ int load_module(char *path1, User * u)
if ((dl_error = dlerror ()) != NULL) {
#endif
if (do_msg)
prefmsg(u->nick, s_Services,
"Error, Couldn't Load Module");
prefmsg (u->nick, s_Services, "Error, Couldn't Load Module");
if (do_msg)
prefmsg (u->nick, s_Services, "%s", dl_error);
nlog(LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s",
dl_error);
nlog (LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s", dl_error);
dlclose (dl_handle);
return -1;
}
@ -637,11 +601,8 @@ int load_module(char *path1, User * u)
if (mod_info_ptr == NULL || mod_funcs_ptr == NULL) {
dlclose (dl_handle);
nlog(LOG_WARNING, LOG_CORE,
"%s: Could not load dynamic library %s!\n",
__PRETTY_FUNCTION__, path);
nlog(LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s",
dlerror());
nlog (LOG_WARNING, LOG_CORE, "%s: Could not load dynamic library %s!\n", __PRETTY_FUNCTION__, path);
nlog (LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s", dlerror ());
return -1;
}
@ -650,9 +611,7 @@ int load_module(char *path1, User * u)
if (hash_lookup (mh, mod_info_ptr->module_name)) {
dlclose (dl_handle);
if (do_msg)
prefmsg(u->nick, s_Services,
"Module %s already Loaded, Can't Load 2 Copies",
mod_info_ptr->module_name);
prefmsg (u->nick, s_Services, "Module %s already Loaded, Can't Load 2 Copies", mod_info_ptr->module_name);
free (mod_ptr);
return -1;
}
@ -662,21 +621,17 @@ int load_module(char *path1, User * u)
mn = hnode_create (mod_ptr);
if (hash_isfull (mh)) {
if (do_msg)
chanalert(s_Services,
"Module List is Full. Can't Load any more modules");
chanalert (s_Services, "Module List is Full. Can't Load any more modules");
if (do_msg)
prefmsg(u->nick, s_Services,
"Module List is Full, Can't Load any more Modules");
prefmsg (u->nick, s_Services, "Module List is Full, Can't Load any more Modules");
dlclose (dl_handle);
free (mod_ptr);
return -1;
} else {
hash_insert (mh, mn, mod_info_ptr->module_name);
}
nlog(LOG_NORMAL, LOG_CORE, "Module Internal name: %s",
mod_info_ptr->module_name);
nlog(LOG_NORMAL, LOG_CORE, "Module description: %s",
mod_info_ptr->module_description);
nlog (LOG_NORMAL, LOG_CORE, "Module Internal name: %s", mod_info_ptr->module_name);
nlog (LOG_NORMAL, LOG_CORE, "Module description: %s", mod_info_ptr->module_description);
mod_ptr->info = mod_info_ptr;
mod_ptr->function_list = mod_funcs_ptr;
@ -685,7 +640,8 @@ int load_module(char *path1, User * u)
/* assign a module number to this module */
i = 0;
while (ModNum[i].used != 0) i++;
while (ModNum[i].used != 0)
i++;
/* no need to check for overflow of NUM_MODULES, as its done above */
ModNum[i].used = 1;
ModNum[i].mod = mod_ptr;
@ -699,10 +655,8 @@ int load_module(char *path1, User * u)
while (event_fn_ptr->cmd_name != NULL) {
if (!strcasecmp (event_fn_ptr->cmd_name, "ONLINE")) {
AddStringToList (&av, me.s->name, &ac);
strcpy(segv_location,
mod_ptr->info->module_name);
strcpy(segvinmodule,
mod_ptr->info->module_name);
strcpy (segv_location, mod_ptr->info->module_name);
strcpy (segvinmodule, mod_ptr->info->module_name);
event_fn_ptr->function (av, ac);
strcpy (segv_location, "AfterDLLoadOnline");
strcpy (segvinmodule, "");
@ -713,18 +667,15 @@ int load_module(char *path1, User * u)
}
}
if (do_msg)
prefmsg(u->nick, s_Services,
"Module %s Loaded, Description: %s",
mod_info_ptr->module_name,
mod_info_ptr->module_description);
prefmsg (u->nick, s_Services, "Module %s Loaded, Description: %s", mod_info_ptr->module_name, mod_info_ptr->module_description);
if (do_msg)
globops(me.name, "%s Module Loaded",
mod_info_ptr->module_name);
globops (me.name, "%s Module Loaded", mod_info_ptr->module_name);
return 0;
}
extern int get_dl_handle(char *mod_name)
extern int
get_dl_handle (char *mod_name)
{
Module *list_ptr;
hnode_t *mn;
@ -738,7 +689,8 @@ extern int get_dl_handle(char *mod_name)
}
return 0;
}
extern int get_mod_num(char *mod_name)
extern int
get_mod_num (char *mod_name)
{
int i;
for (i = 0; i <= NUM_MODULES; i++) {
@ -754,7 +706,8 @@ extern int get_mod_num(char *mod_name)
};
void list_module(User * u)
void
list_module (User * u)
{
Module *mod_ptr = NULL;
hnode_t *mn;
@ -764,18 +717,15 @@ void list_module(User * u)
hash_scan_begin (&hs, mh);
while ((mn = hash_scan_next (&hs)) != NULL) {
mod_ptr = hnode_get (mn);
prefmsg(u->nick, s_Services, "Module: %s (%s)",
mod_ptr->info->module_name,
mod_ptr->info->module_version);
prefmsg(u->nick, s_Services, "Module Description: %s",
mod_ptr->info->module_description);
prefmsg(u->nick, s_Services, "Module Number: %d",
get_mod_num(mod_ptr->info->module_name));
prefmsg (u->nick, s_Services, "Module: %s (%s)", mod_ptr->info->module_name, mod_ptr->info->module_version);
prefmsg (u->nick, s_Services, "Module Description: %s", mod_ptr->info->module_description);
prefmsg (u->nick, s_Services, "Module Number: %d", get_mod_num (mod_ptr->info->module_name));
}
prefmsg (u->nick, s_Services, "End of Module List");
}
int unload_module(char *module_name, User * u)
int
unload_module (char *module_name, User * u)
{
Module *list;
Mod_User *mod_ptr = NULL;
@ -793,12 +743,8 @@ int unload_module(char *module_name, User * u)
chanalert (s_Services, "Unloading Module %s", module_name);
} else {
if (u) {
prefmsg(u->nick, s_Services,
"Couldn't Find Module %s Loaded, Try /msg %s modlist",
module_name, s_Services);
chanalert(s_Services,
"%s tried to Unload %s but its not loaded",
u->nick, module_name);
prefmsg (u->nick, s_Services, "Couldn't Find Module %s Loaded, Try /msg %s modlist", module_name, s_Services);
chanalert (s_Services, "%s tried to Unload %s but its not loaded", u->nick, module_name);
return -1;
}
return -1;
@ -808,9 +754,7 @@ int unload_module(char *module_name, User * u)
while ((modnode = hash_scan_next (&hscan)) != NULL) {
mod_tmr = hnode_get (modnode);
if (!strcasecmp (mod_tmr->modname, module_name)) {
nlog(LOG_DEBUG1, LOG_CORE,
"Module %s has timer %s Registered. Deleting..",
module_name, mod_tmr->timername);
nlog (LOG_DEBUG1, LOG_CORE, "Module %s has timer %s Registered. Deleting..", module_name, mod_tmr->timername);
del_mod_timer (mod_tmr->timername);
}
}
@ -819,9 +763,7 @@ int unload_module(char *module_name, User * u)
while ((modnode = hash_scan_next (&hscan)) != NULL) {
mod_sock = hnode_get (modnode);
if (!strcasecmp (mod_sock->modname, module_name)) {
nlog(LOG_DEBUG1, LOG_CORE,
"Module %s had Socket %s Registered. Deleting..",
module_name, mod_sock->sockname);
nlog (LOG_DEBUG1, LOG_CORE, "Module %s had Socket %s Registered. Deleting..", module_name, mod_sock->sockname);
del_socket (mod_sock->sockname);
}
}
@ -831,16 +773,13 @@ int unload_module(char *module_name, User * u)
while ((modnode = hash_scan_next (&hscan)) != NULL) {
mod_ptr = hnode_get (modnode);
if (!strcasecmp (mod_ptr->modname, module_name)) {
nlog(LOG_DEBUG1, LOG_CORE,
"Module %s had bot %s Registered. Deleting..",
module_name, mod_ptr->nick);
nlog (LOG_DEBUG1, LOG_CORE, "Module %s had bot %s Registered. Deleting..", module_name, mod_ptr->nick);
del_bot (mod_ptr->nick, "Module Unloaded");
}
}
modnode = hash_lookup (mh, module_name);
if (modnode) {
nlog(LOG_DEBUG1, LOG_CORE,
"Deleting Module %s from ModHash", module_name);
nlog (LOG_DEBUG1, LOG_CORE, "Deleting Module %s from ModHash", module_name);
globops (me.name, "%s Module Unloaded", module_name);
i = get_mod_num (module_name);

2
dl.h
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: dl.h,v 1.27 2003/07/11 13:43:27 fishwaldo Exp $
** $Id: dl.h,v 1.28 2003/07/30 13:58:22 fishwaldo Exp $
*/

51
dns.c
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: dns.c,v 1.14 2003/06/13 13:11:48 fishwaldo Exp $
** $Id: dns.c,v 1.15 2003/07/30 13:58:22 fishwaldo Exp $
*/
@ -72,8 +72,8 @@ list_t *dnslist;
* @return returns 1 on success, 0 on failure (to add the lookup, not a successfull lookup
*/
int dns_lookup(char *str, adns_rrtype type,
void (*callback) (char *data, adns_answer * a), char *data)
int
dns_lookup (char *str, adns_rrtype type, void (*callback) (char *data, adns_answer * a), char *data)
{
lnode_t *dnsnode;
DnsLookup *dnsdata;
@ -98,27 +98,17 @@ int dns_lookup(char *str, adns_rrtype type,
if (type == adns_r_ptr) {
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr (str);
status =
adns_submit_reverse(ads, (const struct sockaddr *) &sa,
type,
adns_qf_owner |
adns_qf_cname_loose, NULL,
&dnsdata->q);
status = adns_submit_reverse (ads, (const struct sockaddr *) &sa, type, adns_qf_owner | adns_qf_cname_loose, NULL, &dnsdata->q);
} else {
status =
adns_submit(ads, str, type,
adns_qf_owner | adns_qf_cname_loose, NULL,
&dnsdata->q);
status = adns_submit (ads, str, type, adns_qf_owner | adns_qf_cname_loose, NULL, &dnsdata->q);
}
if (status) {
nlog(LOG_WARNING, LOG_CORE, "DNS: adns_submit error: %s",
strerror(status));
nlog (LOG_WARNING, LOG_CORE, "DNS: adns_submit error: %s", strerror (status));
free (dnsdata);
return 0;
}
nlog(LOG_DEBUG1, LOG_CORE, "DNS: Added dns query %s to list",
data);
nlog (LOG_DEBUG1, LOG_CORE, "DNS: Added dns query %s to list", data);
/* if we get here, then the submit was successfull. Add it to the list of queryies */
dnsnode = lnode_create (dnsdata);
list_append (dnslist, dnsnode);
@ -134,7 +124,8 @@ int dns_lookup(char *str, adns_rrtype type,
* @return returns 1 on success, 0 on failure
*/
int init_dns()
int
init_dns ()
{
int adnsstart;
@ -144,15 +135,13 @@ int init_dns()
if (!dnslist)
return 0;
#ifndef DEBUG
adnsstart =
adns_init(&ads, adns_if_noerrprint | adns_if_noautosys, 0);
adnsstart = adns_init (&ads, adns_if_noerrprint | adns_if_noautosys, 0);
#else
adnsstart = adns_init (&ads, adns_if_debug | adns_if_noautosys, 0);
#endif
if (adnsstart) {
printf ("ADNS init failed: %s\n", strerror (adnsstart));
nlog(LOG_CRITICAL, LOG_CORE, "ADNS init failed: %s",
strerror(adnsstart));
nlog (LOG_CRITICAL, LOG_CORE, "ADNS init failed: %s", strerror (adnsstart));
return 0;
}
return 1;
@ -168,7 +157,8 @@ int init_dns()
* @return Nothing
*/
void do_dns()
void
do_dns ()
{
lnode_t *dnsnode, *dnsnode1;
int status;
@ -187,19 +177,14 @@ void do_dns()
status = adns_check (ads, &dnsdata->q, &dnsdata->a, NULL);
/* if status == eagain, the lookup hasn't completed yet */
if (status == EAGAIN) {
nlog(LOG_DEBUG2, LOG_CORE,
"DNS: Lookup hasn't completed for %s",
&dnsdata->data);
nlog (LOG_DEBUG2, LOG_CORE, "DNS: Lookup hasn't completed for %s", &dnsdata->data);
dnsnode = list_next (dnslist, dnsnode);
break;
}
/* there was a error */
if (status) {
nlog(LOG_CRITICAL, LOG_CORE,
"DNS: Baaaad error on adns_check: %s. Please report to NeoStats Group",
strerror(status));
chanalert(s_Services,
"Bad Error on DNS lookup. Please check logfile");
nlog (LOG_CRITICAL, LOG_CORE, "DNS: Baaaad error on adns_check: %s. Please report to NeoStats Group", strerror (status));
chanalert (s_Services, "Bad Error on DNS lookup. Please check logfile");
/* set this so nlog works good */
strncpy (segvinmodule, dnsdata->mod_name, MAXHOST);
@ -215,9 +200,7 @@ void do_dns()
lnode_destroy (dnsnode1);
break;
}
nlog(LOG_DEBUG2, LOG_CORE,
"DNS: Calling callback function with data %s",
dnsdata->data);
nlog (LOG_DEBUG2, LOG_CORE, "DNS: Calling callback function with data %s", dnsdata->data);
strncpy (segvinmodule, dnsdata->mod_name, MAXHOST);
/* call the callback function */
dnsdata->callback (dnsdata->data, dnsdata->a);

View file

@ -42,7 +42,7 @@
/*
** NeoStats CVS Identification
** $Id: dotconf.c,v 1.9 2003/06/13 13:11:48 fishwaldo Exp $
** $Id: dotconf.c,v 1.10 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include <time.h>
@ -77,13 +77,13 @@ static config_option *config_options[CFG_MODULES];
static void dotconf_cb_include (char *); /* magic 'Include' */
static void dotconf_cb_includepath (char *); /* magic 'IncludePath' */
static config_option dotconf_options[] =
{ {"Include", ARG_STR, dotconf_cb_include, 0},
static config_option dotconf_options[] = { {"Include", ARG_STR, dotconf_cb_include, 0},
{"IncludePath", ARG_STR, dotconf_cb_includepath, 0},
LAST_OPTION
};
void config_substitute_env(char *str)
void
config_substitute_env (char *str)
{
char *cp1, *cp2, *cp3, *eos, *eob;
char *env_value;
@ -122,16 +122,14 @@ void config_substitute_env(char *str)
cp1++;
if (*cp1 != '}')
fprintf(stderr, "%s:%d: Unbalanced '{'\n",
dotconf_file, dotconf_line);
fprintf (stderr, "%s:%d: Unbalanced '{'\n", dotconf_file, dotconf_line);
else {
cp1++; /* skip } */
if ((env_value = getenv (env_name)) != NULL) {
strncat (cp2, env_value, eos - cp2);
cp2 += strlen (env_value);
} else {
strncat(cp2, env_default,
eos - cp2);
strncat (cp2, env_default, eos - cp2);
cp2 += strlen (env_default);
}
}
@ -145,7 +143,8 @@ void config_substitute_env(char *str)
strncpy (str, tmp_value, CFG_MAX_VALUE + 1);
}
void config_register_options(config_option * options)
void
config_register_options (config_option * options)
{
int i;
for (i = 0; i < CFG_MODULES && config_options[i]; i++) {
@ -153,7 +152,8 @@ void config_register_options(config_option * options)
config_options[i] = options;
}
int config_parse(FILE * config)
int
config_parse (FILE * config)
{
static char buffer[CFG_BUFSIZE];
static char *here_string; /* Damn FreeBSD */
@ -198,12 +198,9 @@ int config_parse(FILE * config)
/* and now find the entry in the option table, and call the callback */
bzero (&opt, sizeof (config_option));
for (mod = 0; mod < CFG_MODULES && config_options[mod];
mod++)
for (mod = 0; mod < CFG_MODULES && config_options[mod]; mod++)
for (i = 0; config_options[mod][i].name[0]; i++)
if (!strncmp
(name, config_options[mod][i].name,
CFG_MAX_OPTION)) {
if (!strncmp (name, config_options[mod][i].name, CFG_MAX_OPTION)) {
opt = config_options[mod][i];
break; /* found it; break out of for */
}
@ -243,18 +240,14 @@ int config_parse(FILE * config)
strncpy (here_limit, cp3 + 2, 8); /* copy here-delimiter */
while (fgets (buffer, CFG_BUFSIZE, config)) {
if (!strncmp
(here_limit, buffer,
strlen(here_limit))) {
if (!strncmp (here_limit, buffer, strlen (here_limit))) {
here_string = 0;
break;
}
strcat (here_doc, buffer); /* append to buffer */
}
if (here_string)
fprintf(stderr,
"Line %d: Unterminated here-document!\n",
dotconf_line);
fprintf (stderr, "Line %d: Unterminated here-document!\n", dotconf_line);
here_doc[strlen (here_doc) - 1] = '\0'; /* strip newline */
opt.callback (here_doc, opt.userdata); /* call back */
@ -312,8 +305,7 @@ int config_parse(FILE * config)
cp1++;
}
/* not space or quoted ; eat it: */
else if ((((!isspace(*cp1) && !dq && !sq
&& *cp1 != '"' && *cp1 != '\'')
else if ((((!isspace (*cp1) && !dq && !sq && *cp1 != '"' && *cp1 != '\'')
/* dont take quote if quoting: */
|| (dq && (*cp1 != '"'))
|| (sq && *cp1 != '\''))))
@ -329,15 +321,10 @@ int config_parse(FILE * config)
{
/* the value is true if the argument is Yes, On or 1 */
/* kludge code follows ;) */
int arg = ((values[0][0] == 'Y'
|| values[0][1] == 'y')
int arg = ((values[0][0] == 'Y' || values[0][1] == 'y')
|| (values[0][0] == '1')
|| ((values[0][0] == 'o'
|| values[0][0] ==
'O')
&& (values[0][1] ==
'n'
|| values[0][1]
|| ((values[0][0] == 'o' || values[0][0] == 'O')
&& (values[0][1] == 'n' || values[0][1]
== 'N')));
opt.callback (arg, USER_DATA);
break;
@ -359,13 +346,10 @@ int config_parse(FILE * config)
char *data[CFG_VALUES];
int i;
for (i = 0; i < word_count; i++) { /* prepare list */
config_substitute_env
(values[i]);
data[i] =
strdup(values[i]);
config_substitute_env (values[i]);
data[i] = strdup (values[i]);
}
opt.callback(data, word_count,
USER_DATA);
opt.callback (data, word_count, USER_DATA);
for (i = 0; i < word_count; i++) /* dump list */
free (data[i]);
@ -392,14 +376,14 @@ int config_parse(FILE * config)
* open and parse the config-file using the config_options list
* as reference for what callback to call and what type of arguments to provide
*/
int config_read(char *fname, config_option * options)
int
config_read (char *fname, config_option * options)
{
FILE *config;
char *dc_env; /* pointer to DC_INCLUDEPATH */
if (access (fname, R_OK)) {
fprintf(stderr, "Error opening configuration file '%s'\n",
fname);
fprintf (stderr, "Error opening configuration file '%s'\n", fname);
return 1;
}
@ -427,7 +411,8 @@ int config_read(char *fname, config_option * options)
/* callbacks for internal options */
void dotconf_cb_include(char *str)
void
dotconf_cb_include (char *str)
{
FILE *config;
char old_fname[CFG_MAX_FILENAME];
@ -438,24 +423,17 @@ void dotconf_cb_include(char *str)
/* relative file AND include path is used */
/* check for length of fully qualified filename */
if ((strlen(str) + strlen(dotconf_includepath) + 1) ==
CFG_MAX_FILENAME) {
fprintf(stderr,
"%s:%d: Absolute filename too long (>%d)\n",
dotconf_file, dotconf_line,
CFG_MAX_FILENAME);
if ((strlen (str) + strlen (dotconf_includepath) + 1) == CFG_MAX_FILENAME) {
fprintf (stderr, "%s:%d: Absolute filename too long (>%d)\n", dotconf_file, dotconf_line, CFG_MAX_FILENAME);
return;
}
snprintf(dotconf_file, CFG_MAX_FILENAME + 1, "%s/%s",
dotconf_includepath, str);
snprintf (dotconf_file, CFG_MAX_FILENAME + 1, "%s/%s", dotconf_includepath, str);
} else /* fully qualified, or no includepath */
strncpy (dotconf_file, str, CFG_MAX_FILENAME);
if (access (dotconf_file, R_OK)) {
fprintf(stderr,
"Error in %s line %d: Cannot open %s for inclusion\n",
old_fname, dotconf_line, dotconf_file);
fprintf (stderr, "Error in %s line %d: Cannot open %s for inclusion\n", old_fname, dotconf_line, dotconf_file);
strcpy (dotconf_file, old_fname); /* restore settings */
return;
}
@ -466,7 +444,8 @@ void dotconf_cb_include(char *str)
strcpy (dotconf_file, old_fname);
}
void dotconf_cb_includepath(char *str)
void
dotconf_cb_includepath (char *str)
{
char *env = getenv ("DC_INCLUDEPATH");
if (!env) /* environment overrides configuration file setting */

View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: dotconf.h,v 1.3 2003/05/26 09:18:28 fishwaldo Exp $
** $Id: dotconf.h,v 1.4 2003/07/30 13:58:22 fishwaldo Exp $
*/

167
hash.c
View file

@ -39,7 +39,7 @@
* into proprietary software; there is no requirement for such software to
* contain a copyright notice related to this source.
*
* $Id: hash.c,v 1.10 2003/07/17 10:13:51 fishwaldo Exp $
* $Id: hash.c,v 1.11 2003/07/30 13:58:22 fishwaldo Exp $
* $Name: $
*/
@ -54,8 +54,7 @@
#ifdef KAZLIB_RCSID
static const char rcsid[] =
"$Id: hash.c,v 1.10 2003/07/17 10:13:51 fishwaldo Exp $";
static const char rcsid[] = "$Id: hash.c,v 1.11 2003/07/30 13:58:22 fishwaldo Exp $";
#endif
#define INIT_BITS 6
@ -104,7 +103,8 @@ int hash_val_t_bit;
* right, replacing the topmost bit by zero.
*/
static void compute_bits(void)
static void
compute_bits (void)
{
hash_val_t val = HASH_VAL_T_MAX; /* 1 */
int bits = 0;
@ -121,7 +121,8 @@ static void compute_bits(void)
* Verify whether the given argument is a power of two.
*/
static int is_power_of_two(hash_val_t arg)
static int
is_power_of_two (hash_val_t arg)
{
if (arg == 0)
return 0;
@ -134,7 +135,8 @@ static int is_power_of_two(hash_val_t arg)
* Compute a shift amount from a given table size
*/
static hash_val_t compute_mask(hashcount_t size)
static hash_val_t
compute_mask (hashcount_t size)
{
nassert (is_power_of_two (size));
nassert (size >= 2);
@ -146,7 +148,8 @@ static hash_val_t compute_mask(hashcount_t size)
* Initialize the table of pointers to null.
*/
static void clear_table(hash_t * hash)
static void
clear_table (hash_t * hash)
{
hash_val_t i;
@ -182,7 +185,8 @@ static void clear_table(hash_t * hash)
* the various bookeeping fields of the hash structure.
*/
static void grow_table(hash_t * hash)
static void
grow_table (hash_t * hash)
{
hnode_t **newtable;
@ -198,11 +202,9 @@ static void grow_table(hash_t * hash)
nassert (mask != hash->mask);
for (chain = 0; chain < hash->nchains; chain++) { /* 7 */
hnode_t *low_chain = 0, *high_chain =
0, *hptr, *next;
hnode_t *low_chain = 0, *high_chain = 0, *hptr, *next;
for (hptr = newtable[chain]; hptr != 0;
hptr = next) {
for (hptr = newtable[chain]; hptr != 0; hptr = next) {
next = hptr->next;
if (hptr->hkey & exposed_bit) {
@ -257,7 +259,8 @@ static void grow_table(hash_t * hash)
* 9. Finally, update the various table parameters to reflect the new size.
*/
static void shrink_table(hash_t * hash)
static void
shrink_table (hash_t * hash)
{
hash_val_t chain, nchains;
hnode_t **newtable, *low_tail, *low_chain, *high_chain;
@ -316,8 +319,8 @@ static void shrink_table(hash_t * hash)
* 8. The table of chains must be properly reset to all null pointers.
*/
hash_t *hash_create(hashcount_t maxcount, hash_comp_t compfun,
hash_fun_t hashfun)
hash_t *
hash_create (hashcount_t maxcount, hash_comp_t compfun, hash_fun_t hashfun)
{
hash_t *hash;
@ -334,10 +337,8 @@ hash_t *hash_create(hashcount_t maxcount, hash_comp_t compfun,
hash->lowmark = INIT_SIZE / 2;
hash->nodecount = 0;
hash->maxcount = maxcount;
hash->compare =
compfun ? compfun : hash_comp_default;
hash->function =
hashfun ? hashfun : hash_fun_default;
hash->compare = compfun ? compfun : hash_comp_default;
hash->function = hashfun ? hashfun : hash_fun_default;
hash->allocnode = hnode_alloc;
hash->freenode = hnode_free;
hash->context = NULL;
@ -357,8 +358,8 @@ hash_t *hash_create(hashcount_t maxcount, hash_comp_t compfun,
* Select a different set of node allocator routines.
*/
void hash_set_allocator(hash_t * hash, hnode_alloc_t al,
hnode_free_t fr, void *context)
void
hash_set_allocator (hash_t * hash, hnode_alloc_t al, hnode_free_t fr, void *context)
{
nassert (hash_count (hash) == 0);
nassert ((al == 0 && fr == 0) || (al != 0 && fr != 0));
@ -373,7 +374,8 @@ void hash_set_allocator(hash_t * hash, hnode_alloc_t al,
* cause the hash to become empty.
*/
void hash_free_nodes(hash_t * hash)
void
hash_free_nodes (hash_t * hash)
{
hscan_t hs;
hnode_t *node;
@ -391,7 +393,8 @@ void hash_free_nodes(hash_t * hash)
* freeing them and then freeing the table all in one step.
*/
void hash_free(hash_t * hash)
void
hash_free (hash_t * hash)
{
#ifdef KAZLIB_OBSOLESCENT_DEBUG
nassert ("call to obsolescent function hash_free()" && 0);
@ -404,7 +407,8 @@ void hash_free(hash_t * hash)
* Free a dynamic hash table structure.
*/
void hash_destroy(hash_t * hash)
void
hash_destroy (hash_t * hash)
{
nassert (hash_val_t_bit != 0);
nassert (hash_isempty (hash));
@ -425,9 +429,8 @@ void hash_destroy(hash_t * hash)
* so we reset it here.
*/
hash_t *hash_init(hash_t * hash, hashcount_t maxcount,
hash_comp_t compfun, hash_fun_t hashfun,
hnode_t ** table, hashcount_t nchains)
hash_t *
hash_init (hash_t * hash, hashcount_t maxcount, hash_comp_t compfun, hash_fun_t hashfun, hnode_t ** table, hashcount_t nchains)
{
if (hash_val_t_bit == 0) /* 1 */
compute_bits ();
@ -460,7 +463,8 @@ hash_t *hash_init(hash_t * hash, hashcount_t maxcount,
* so that hash_scan_next() shall indicate failure.
*/
void hash_scan_begin(hscan_t * scan, hash_t * hash)
void
hash_scan_begin (hscan_t * scan, hash_t * hash)
{
hash_val_t nchains = hash->nchains;
hash_val_t chain;
@ -469,8 +473,7 @@ void hash_scan_begin(hscan_t * scan, hash_t * hash)
/* 1 */
for (chain = 0; chain < nchains && hash->table[chain] == 0;
chain++);
for (chain = 0; chain < nchains && hash->table[chain] == 0; chain++);
if (chain < nchains) { /* 2 */
scan->chain = chain;
@ -506,7 +509,8 @@ void hash_scan_begin(hscan_t * scan, hash_t * hash)
*/
hnode_t *hash_scan_next(hscan_t * scan)
hnode_t *
hash_scan_next (hscan_t * scan)
{
hnode_t *next = scan->next; /* 1 */
hash_t *hash = scan->table;
@ -545,7 +549,8 @@ hnode_t *hash_scan_next(hscan_t * scan)
* where N is the base 2 logarithm of the size of the hash table.
*/
void hash_insert(hash_t * hash, hnode_t * node, const void *key)
void
hash_insert (hash_t * hash, hnode_t * node, const void *key)
{
hash_val_t hkey, chain;
@ -583,7 +588,8 @@ void hash_insert(hash_t * hash, hnode_t * node, const void *key)
* entry.
*/
hnode_t *hash_lookup(hash_t * hash, const void *key)
hnode_t *
hash_lookup (hash_t * hash, const void *key)
{
hash_val_t hkey, chain;
hnode_t *nptr;
@ -592,8 +598,7 @@ hnode_t *hash_lookup(hash_t * hash, const void *key)
chain = hkey & hash->mask; /* 2 */
for (nptr = hash->table[chain]; nptr; nptr = nptr->next) { /* 3 */
if (nptr->hkey == hkey
&& hash->compare(nptr->key, key) == 0)
if (nptr->hkey == hkey && hash->compare (nptr->key, key) == 0)
return nptr;
}
@ -618,7 +623,8 @@ hnode_t *hash_lookup(hash_t * hash, const void *key)
* 6. Indicate that the node is no longer in a hash table.
*/
hnode_t *hash_delete(hash_t * hash, hnode_t * node)
hnode_t *
hash_delete (hash_t * hash, hnode_t * node)
{
hash_val_t chain;
hnode_t *hptr;
@ -626,8 +632,7 @@ hnode_t *hash_delete(hash_t * hash, hnode_t * node)
nassert (hash_lookup (hash, node->key) == node); /* 1 */
nassert (hash_val_t_bit != 0);
if (hash->dynamic && hash->nodecount <= hash->lowmark
&& hash->nodecount > INIT_SIZE)
if (hash->dynamic && hash->nodecount <= hash->lowmark && hash->nodecount > INIT_SIZE)
shrink_table (hash); /* 2 */
chain = node->hkey & hash->mask; /* 3 */
@ -651,7 +656,8 @@ hnode_t *hash_delete(hash_t * hash, hnode_t * node)
return node;
}
int hash_alloc_insert(hash_t * hash, const void *key, void *data)
int
hash_alloc_insert (hash_t * hash, const void *key, void *data)
{
hnode_t *node = hash->allocnode (hash->context);
@ -663,7 +669,8 @@ int hash_alloc_insert(hash_t * hash, const void *key, void *data)
return 0;
}
void hash_delete_free(hash_t * hash, hnode_t * node)
void
hash_delete_free (hash_t * hash, hnode_t * node)
{
hash_delete (hash, node);
hash->freenode (node, hash->context);
@ -674,7 +681,8 @@ void hash_delete_free(hash_t * hash, hnode_t * node)
* used from within a hash table scan operation. See notes for hash_delete.
*/
hnode_t *hash_scan_delete(hash_t * hash, hnode_t * node)
hnode_t *
hash_scan_delete (hash_t * hash, hnode_t * node)
{
hash_val_t chain;
hnode_t *hptr;
@ -704,7 +712,8 @@ hnode_t *hash_scan_delete(hash_t * hash, hnode_t * node)
* Like hash_delete_free but based on hash_scan_delete.
*/
void hash_scan_delfree(hash_t * hash, hnode_t * node)
void
hash_scan_delfree (hash_t * hash, hnode_t * node)
{
hash_scan_delete (hash, node);
hash->freenode (node, hash->context);
@ -719,7 +728,8 @@ void hash_scan_delfree(hash_t * hash, hnode_t * node)
* to see whether it is correct for the node's chain.
*/
int hash_verify(hash_t * hash)
int
hash_verify (hash_t * hash)
{
hashcount_t count = 0;
hash_val_t chain;
@ -735,8 +745,7 @@ int hash_verify(hash_t * hash)
}
for (chain = 0; chain < hash->nchains; chain++) { /* 2 */
for (hptr = hash->table[chain]; hptr != 0;
hptr = hptr->next) {
for (hptr = hash->table[chain]; hptr != 0; hptr = hptr->next) {
if ((hptr->hkey & hash->mask) != chain)
return 0;
count++;
@ -755,7 +764,8 @@ int hash_verify(hash_t * hash)
*/
#undef hash_isfull
int hash_isfull(hash_t * hash)
int
hash_isfull (hash_t * hash)
{
return hash->nodecount == hash->maxcount;
}
@ -766,17 +776,20 @@ int hash_isfull(hash_t * hash)
*/
#undef hash_isempty
int hash_isempty(hash_t * hash)
int
hash_isempty (hash_t * hash)
{
return hash->nodecount == 0;
}
static hnode_t *hnode_alloc(void *context)
static hnode_t *
hnode_alloc (void *context)
{
return malloc (sizeof *hnode_alloc (NULL));
}
static void hnode_free(hnode_t * node, void *context)
static void
hnode_free (hnode_t * node, void *context)
{
free (node);
}
@ -786,7 +799,8 @@ static void hnode_free(hnode_t * node, void *context)
* Create a hash table node dynamically and assign it the given data.
*/
hnode_t *hnode_create(void *data)
hnode_t *
hnode_create (void *data)
{
hnode_t *node = malloc (sizeof *node);
if (node) {
@ -800,7 +814,8 @@ hnode_t *hnode_create(void *data)
* Initialize a client-supplied node
*/
hnode_t *hnode_init(hnode_t * hnode, void *data)
hnode_t *
hnode_init (hnode_t * hnode, void *data)
{
hnode->data = data;
hnode->next = NULL;
@ -811,42 +826,49 @@ hnode_t *hnode_init(hnode_t * hnode, void *data)
* Destroy a dynamically allocated node.
*/
void hnode_destroy(hnode_t * hnode)
void
hnode_destroy (hnode_t * hnode)
{
free (hnode);
}
#undef hnode_put
void hnode_put(hnode_t * node, void *data)
void
hnode_put (hnode_t * node, void *data)
{
node->data = data;
}
#undef hnode_get
void *hnode_get(hnode_t * node)
void *
hnode_get (hnode_t * node)
{
return node->data;
}
#undef hnode_getkey
const void *hnode_getkey(hnode_t * node)
const void *
hnode_getkey (hnode_t * node)
{
return node->key;
}
#undef hash_count
hashcount_t hash_count(hash_t * hash)
hashcount_t
hash_count (hash_t * hash)
{
return hash->nodecount;
}
#undef hash_size
hashcount_t hash_size(hash_t * hash)
hashcount_t
hash_size (hash_t * hash)
{
return hash->nchains;
}
static hash_val_t hash_fun_default(const void *key)
static hash_val_t
hash_fun_default (const void *key)
{
static unsigned long randbox[] = {
0x49848f1bU, 0xe6255dbaU, 0x36da5bdcU, 0x47bf94e9U,
@ -869,7 +891,8 @@ static hash_val_t hash_fun_default(const void *key)
return acc;
}
static int hash_comp_default(const void *key1, const void *key2)
static int
hash_comp_default (const void *key1, const void *key2)
{
return strcasecmp (key1, key2);
}
@ -882,7 +905,8 @@ static int hash_comp_default(const void *key1, const void *key2)
typedef char input_t[256];
static int tokenize(char *string, ...)
static int
tokenize (char *string, ...)
{
char **tokptr;
va_list arglist;
@ -909,7 +933,8 @@ static int tokenize(char *string, ...)
return tokcount;
}
static char *dupstring(char *str)
static char *
dupstring (char *str)
{
int sz = strlen (str) + 1;
char *new = malloc (sz);
@ -918,7 +943,8 @@ static char *dupstring(char *str)
return new;
}
static hnode_t *new_node(void *c)
static hnode_t *
new_node (void *c)
{
static hnode_t few[5];
static int count;
@ -929,11 +955,13 @@ static hnode_t *new_node(void *c)
return NULL;
}
static void del_node(hnode_t * n, void *c)
static void
del_node (hnode_t * n, void *c)
{
}
int main(void)
int
main (void)
{
input_t in;
hash_t *h = hash_create (HASHCOUNT_T_MAX, 0, 0);
@ -953,9 +981,7 @@ int main(void)
"+ increase hash table (private func)\n"
"- decrease hash table (private func)\n"
"b print hash_t_bit value\n"
"p turn prompt on\n"
"s switch to non-functioning allocator\n"
"q quit";
"p turn prompt on\n" "s switch to non-functioning allocator\n" "q quit";
if (!h)
puts ("hash_create failed");
@ -976,8 +1002,7 @@ int main(void)
printf ("%d\n", hash_val_t_bit);
break;
case 'a':
if (tokenize(in + 1, &tok1, &tok2, (char **) 0) !=
2) {
if (tokenize (in + 1, &tok1, &tok2, (char **) 0) != 2) {
puts ("what?");
break;
}
@ -1035,9 +1060,7 @@ int main(void)
case 't':
hash_scan_begin (&hs, h);
while ((hn = hash_scan_next (&hs)))
printf("%s\t%s\n",
(char *) hnode_getkey(hn),
(char *) hnode_get(hn));
printf ("%s\t%s\n", (char *) hnode_getkey (hn), (char *) hnode_get (hn));
break;
case '+':
grow_table (h); /* private function */

6
hash.h
View file

@ -37,7 +37,7 @@
* into proprietary software; there is no requirement for such software to
* contain a copyright notice related to this source.
*
* $Id: hash.h,v 1.3 2003/05/26 09:18:28 fishwaldo Exp $
* $Id: hash.h,v 1.4 2003/07/30 13:58:22 fishwaldo Exp $
* $Name: $
*/
@ -214,8 +214,7 @@ extern void hash_set_allocator(hash_t *, hnode_alloc_t, hnode_free_t, void *);
extern void hash_destroy (hash_t *);
extern void hash_free_nodes (hash_t *);
extern void hash_free (hash_t *);
extern hash_t *hash_init(hash_t *, hashcount_t, hash_comp_t,
hash_fun_t, hnode_t **, hashcount_t);
extern hash_t *hash_init (hash_t *, hashcount_t, hash_comp_t, hash_fun_t, hnode_t **, hashcount_t);
extern void hash_insert (hash_t *, hnode_t *, const void *);
extern hnode_t *hash_lookup (hash_t *, const void *);
extern hnode_t *hash_delete (hash_t *, hnode_t *);
@ -259,5 +258,4 @@ extern void hnode_destroy(hnode_t *);
#ifdef __cplusplus
}
#endif
#endif

373
hybrid7.c
View file

@ -18,7 +18,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: hybrid7.c,v 1.22 2003/07/15 09:16:15 fishwaldo Exp $
** $Id: hybrid7.c,v 1.23 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -165,28 +165,30 @@ Oper_Modes usr_mds[] = {
{0, 0, 0}
};
void init_ircd()
void
init_ircd ()
{
/* count the number of commands */
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
};
int seob_cmd(const char *server)
int
seob_cmd (const char *server)
{
sts (":%s %s", server, MSG_EOB);
return 1;
}
int sserver_cmd(const char *name, const int numeric, const char *infoline)
int
sserver_cmd (const char *name, const int numeric, const char *infoline)
{
sts(":%s %s %s %d :%s", me.name, MSG_SERVER, name, numeric,
infoline);
sts (":%s %s %s %d :%s", me.name, MSG_SERVER, name, numeric, infoline);
return 1;
}
int slogin_cmd(const char *name, const int numeric, const char *infoline,
const char *pass)
int
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
{
sts ("%s %s :TS", MSG_PASS, pass);
sts ("CAPAB :TS EX CHW IE EOB KLN GLN KNOCK HOPS HUB AOPS MX");
@ -194,55 +196,60 @@ int slogin_cmd(const char *name, const int numeric, const char *infoline,
return 1;
}
int ssquit_cmd(const char *server)
int
ssquit_cmd (const char *server)
{
sts ("%s %s", MSG_SQUIT, server);
return 1;
}
int sprotocol_cmd(const char *option)
int
sprotocol_cmd (const char *option)
{
return 1;
}
int squit_cmd(const char *who, const char *quitmsg)
int
squit_cmd (const char *who, const char *quitmsg)
{
sts (":%s %s :%s", who, MSG_QUIT, quitmsg);
DelUser (who);
return 1;
}
int spart_cmd(const char *who, const char *chan)
int
spart_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, MSG_PART, chan);
part_chan (finduser (who), (char *) chan);
return 1;
}
int sjoin_cmd(const char *who, const char *chan)
int
sjoin_cmd (const char *who, const char *chan)
{
sts (":%s %s 0 %s + :%s", me.name, MSG_SJOIN, chan, who);
join_chan (finduser (who), (char *) chan);
return 1;
}
int schmode_cmd(const char *who, const char *chan, const char *mode,
const char *args)
int
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
{
char **av;
int ac;
char tmp[512];
sts(":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args,
time(NULL));
sts (":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args, time (NULL));
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
ac = split_buf (tmp, &av, 0);
ChanMode ("", av, ac);
free (av);
return 1;
}
int snewnick_cmd(const char *nick, const char *ident, const char *host,
const char *realname, long mode)
int
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname, long mode)
{
int i, j;
char newmode[20];
@ -256,20 +263,21 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
}
newmode[j] = '\0';
sts("%s %s 1 %lu %s %s %s %s :%s", MSG_NICK, nick, time(NULL),
newmode, ident, host, me.name, realname);
sts ("%s %s 1 %lu %s %s %s %s :%s", MSG_NICK, nick, time (NULL), newmode, ident, host, me.name, realname);
AddUser (nick, ident, host, me.name, 0, time (NULL));
UserMode (nick, newmode, 0);
return 1;
}
int sping_cmd(const char *from, const char *reply, const char *to)
int
sping_cmd (const char *from, const char *reply, const char *to)
{
sts (":%s %s %s :%s", from, MSG_PING, reply, to);
return 1;
}
int sumode_cmd(const char *who, const char *target, long mode)
int
sumode_cmd (const char *who, const char *target, long mode)
{
int i, j;
char newmode[20];
@ -288,8 +296,8 @@ int sumode_cmd(const char *who, const char *target, long mode)
return 1;
}
int snumeric_cmd(const int numeric, const char *target, const char *data,
...)
int
snumeric_cmd (const int numeric, const char *target, const char *data, ...)
{
va_list ap;
char buf[512];
@ -300,15 +308,16 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
return 1;
}
int spong_cmd(const char *reply)
int
spong_cmd (const char *reply)
{
sts ("%s %s", MSG_PONG, reply);
return 1;
}
int skill_cmd(const char *from, const char *target, const char *reason,
...)
int
skill_cmd (const char *from, const char *target, const char *reason, ...)
{
va_list ap;
char buf[512];
@ -319,89 +328,79 @@ int skill_cmd(const char *from, const char *target, const char *reason,
DelUser (target);
return 1;
}
int ssvskill_cmd(const char *who, const char *reason, ...)
int
ssvskill_cmd (const char *who, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", me.name, MSG_KILL,
who, buf);
sts (":%s %s %s :%s", me.name, MSG_KILL, who, buf);
va_end (ap);
/* hybrid doesn't have svskill, so this is handled just like a normal kill */
DelUser (who);
return 1;
}
int ssmo_cmd(const char *from, const char *umodetarget, const char *msg)
int
ssmo_cmd (const char *from, const char *umodetarget, const char *msg)
{
notice(s_Services,
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
return 1;
}
int snick_cmd(const char *oldnick, const char *newnick)
int
snick_cmd (const char *oldnick, const char *newnick)
{
Change_User (finduser (oldnick), newnick);
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
return 1;
}
int sswhois_cmd(const char *target, const char *swhois)
int
sswhois_cmd (const char *target, const char *swhois)
{
notice(s_Services,
"Warning Module %s tried to SWHOIS, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SWHOIS, which is not supported in Hybrid",
segvinmodule);
return 1;
}
int ssvsnick_cmd(const char *target, const char *newnick)
{
notice(s_Services,
"Warning Module %s tried to SVSNICK, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SVSNICK, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Hybrid", segvinmodule);
return 1;
}
int ssvsjoin_cmd(const char *target, const char *chan)
int
ssvsnick_cmd (const char *target, const char *newnick)
{
notice(s_Services,
"Warning Module %s tried to SJOIN, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SJOIN, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning Module %s tried to SVSNICK, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSNICK, which is not supported in Hybrid", segvinmodule);
return 1;
}
int ssvspart_cmd(const char *target, const char *chan)
int
ssvsjoin_cmd (const char *target, const char *chan)
{
notice(s_Services,
"Warning Module %s tried to SVSPART, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SVSPART, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning Module %s tried to SJOIN, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SJOIN, which is not supported in Hybrid", segvinmodule);
return 1;
}
int skick_cmd(const char *who, const char *target, const char *chan,
const char *reason)
int
ssvspart_cmd (const char *target, const char *chan)
{
sts(":%s %s %s %s :%s", who, MSG_KICK, chan, target,
(reason ? reason : "No Reason Given"));
notice (s_Services, "Warning Module %s tried to SVSPART, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSPART, which is not supported in Hybrid", segvinmodule);
return 1;
}
int
skick_cmd (const char *who, const char *target, const char *chan, const char *reason)
{
sts (":%s %s %s %s :%s", who, MSG_KICK, chan, target, (reason ? reason : "No Reason Given"));
part_chan (finduser (target), (char *) chan);
return 1;
}
int swallops_cmd(const char *who, const char *msg, ...)
int
swallops_cmd (const char *who, const char *msg, ...)
{
va_list ap;
char buf[512];
@ -412,23 +411,23 @@ int swallops_cmd(const char *who, const char *msg, ...)
return 1;
}
int ssvshost_cmd(const char *who, const char *vhost)
int
ssvshost_cmd (const char *who, const char *vhost)
{
notice(s_Services,
"Warning Module %s tried to SVSHOST, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SVSHOST, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning Module %s tried to SVSHOST, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSHOST, which is not supported in Hybrid", segvinmodule);
return 1;
}
int ssvinfo_cmd()
int
ssvinfo_cmd ()
{
sts ("SVINFO 5 3 0 :%d", time (NULL));
return 1;
}
int sburst_cmd(int b)
int
sburst_cmd (int b)
{
if (b == 0) {
sts ("BURST 0");
@ -438,8 +437,8 @@ int sburst_cmd(int b)
return 1;
}
int sakill_cmd(const char *host, const char *ident, const char *setby,
const int length, const char *reason, ...)
int
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
{
/* there isn't a akill on Hybrid, so we send a kline to all servers! */
hscan_t ss;
@ -454,21 +453,22 @@ int sakill_cmd(const char *host, const char *ident, const char *setby,
hash_scan_begin (&ss, sh);
while ((sn = hash_scan_next (&ss)) != NULL) {
s = hnode_get (sn);
sts(":%s %s %s %lu %s %s :%s", setby, MSG_KLINE, s->name,
length, ident, host, buf);
sts (":%s %s %s %lu %s %s :%s", setby, MSG_KLINE, s->name, length, ident, host, buf);
}
va_end (ap);
return 1;
}
int srakill_cmd(const char *host, const char *ident)
int
srakill_cmd (const char *host, const char *ident)
{
chanalert(s_Services,
"Please Manually remove KLINES using /unkline on each server");
chanalert (s_Services, "Please Manually remove KLINES using /unkline on each server");
return 1;
}
void chanalert(char *who, char *buf, ...)
void
chanalert (char *who, char *buf, ...)
{
va_list ap;
char tmp[512];
@ -477,14 +477,15 @@ void chanalert(char *who, char *buf, ...)
vsnprintf (tmp, 512, buf, ap);
if (me.onchan) {
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
tmp);
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
sts ("%s", out);
}
va_end (ap);
}
void prefmsg(char *to, const char *from, char *fmt, ...)
void
prefmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -492,9 +493,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
va_start (ap, fmt);
vsnprintf (buf2, sizeof (buf2), fmt, ap);
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
if (me.want_privmsg) {
@ -505,15 +504,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
sts ("%s", buf);
va_end (ap);
}
void privmsg(char *to, const char *from, char *fmt, ...)
void
privmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -524,15 +523,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
va_end (ap);
}
void notice(char *to, const char *from, char *fmt, ...)
void
notice (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -544,7 +542,8 @@ void notice(char *to, const char *from, char *fmt, ...)
}
void privmsg_list(char *to, char *from, const char **text)
void
privmsg_list (char *to, char *from, const char **text)
{
while (*text) {
if (**text)
@ -556,7 +555,8 @@ void privmsg_list(char *to, char *from, const char **text)
}
void globops(char *from, char *fmt, ...)
void
globops (char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -576,7 +576,8 @@ void globops(char *from, char *fmt, ...)
va_end (ap);
}
void Srv_Sjoin(char *origin, char **argv, int argc)
void
Srv_Sjoin (char *origin, char **argv, int argc)
{
char nick[MAXNICK];
long mode = 0;
@ -603,22 +604,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
goto nomodes;
}
while (*modes) {
for (i = 0;
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (*modes == cFlagTab[i].flag) {
if (cFlagTab[i].parameters) {
m = smalloc (sizeof (ModesParm));
m->mode = cFlagTab[i].mode;
strncpy(m->param, argv[j],
PARAMSIZE);
strncpy (m->param, argv[j], PARAMSIZE);
mn = lnode_create (m);
if (!list_isfull (tl)) {
list_append (tl, mn);
} else {
nlog(LOG_CRITICAL,
LOG_CORE,
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
j++;
@ -634,10 +630,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
modes = argv[j];
mode = 0;
while (ok == 1) {
for (i = 0;
i <
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (cFlagTab[i].sjoin != 0) {
if (*modes == cFlagTab[i].sjoin) {
mode |= cFlagTab[i].mode;
@ -650,8 +643,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
break;
}
join_chan (finduser (nick), argv[1]);
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
mode);
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
j++;
ok = 1;
}
@ -662,15 +654,15 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
list_transfer (c->modeparms, tl, list_first (tl));
} else {
/* eeeeeeek, list is full! */
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
}
list_destroy (tl);
}
void Srv_Burst(char *origin, char **argv, int argc)
void
Srv_Burst (char *origin, char **argv, int argc)
{
if (argc > 0) {
if (ircd_srv.burst == 1) {
@ -686,7 +678,8 @@ void Srv_Burst(char *origin, char **argv, int argc)
init_ServBot ();
}
void Srv_Connect(char *origin, char **argv, int argc)
void
Srv_Connect (char *origin, char **argv, int argc)
{
int i;
@ -698,49 +691,62 @@ void Srv_Connect(char *origin, char **argv, int argc)
}
void Usr_Stats(char *origin, char **argv, int argc)
void
Usr_Stats (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Recieved a Message from a Unknown User! (%s)",
origin);
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
}
ShowStats (argv[0], u);
}
void Usr_Version(char *origin, char **argv, int argc)
void
Usr_Version (char *origin, char **argv, int argc)
{
snumeric_cmd(351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR,
REV, version, me.name, version_date, version_time);
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
}
void Usr_ShowMOTD(char *origin, char **argv, int argc)
void
Usr_ShowMOTD (char *origin, char **argv, int argc)
{
ShowMOTD (origin);
}
void Usr_ShowADMIN(char *origin, char **argv, int argc)
void
Usr_ShowADMIN (char *origin, char **argv, int argc)
{
ShowADMIN (origin);
}
void Usr_Showcredits(char *origin, char **argv, int argc)
void
Usr_Showcredits (char *origin, char **argv, int argc)
{
Showcredits (origin);
}
void Usr_AddServer(char *origin, char **argv, int argc)
void
Usr_AddServer (char *origin, char **argv, int argc)
{
AddServer (argv[0], origin, atoi (argv[1]));
}
void Usr_DelServer(char *origin, char **argv, int argc)
void
Usr_DelServer (char *origin, char **argv, int argc)
{
DelServer (argv[0]);
}
void Usr_DelUser(char *origin, char **argv, int argc)
void
Usr_DelUser (char *origin, char **argv, int argc)
{
DelUser (origin);
}
void Usr_Smode(char *origin, char **argv, int argc)
void
Usr_Smode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
/* its user svsmode change */
@ -750,7 +756,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Mode(char *origin, char **argv, int argc)
void
Usr_Mode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[0]);
@ -759,18 +766,19 @@ void Usr_Mode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Kill(char *origin, char **argv, int argc)
void
Usr_Kill (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
KillUser (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
}
}
void Usr_Vhost(char *origin, char **argv, int argc)
void
Usr_Vhost (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
@ -778,18 +786,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
strncpy (u->vhost, argv[0], MAXHOST);
}
}
void Usr_Pong(char *origin, char **argv, int argc)
void
Usr_Pong (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
dopong (s);
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Received PONG from unknown server: %s", argv[0]);
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
}
}
void Usr_Away(char *origin, char **argv, int argc)
void
Usr_Away (char *origin, char **argv, int argc)
{
User *u = finduser (origin);
char *buf;
@ -804,22 +813,22 @@ void Usr_Away(char *origin, char **argv, int argc)
free (buf);
}
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Unable to find User %s for Away", origin);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
}
}
void Usr_Nick(char *origin, char **argv, int argc)
void
Usr_Nick (char *origin, char **argv, int argc)
{
User *u = finduser (origin);
if (u) {
Change_User (u, argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Ehh, Can't find the user for %s", origin);
nlog (LOG_WARNING, LOG_CORE, "Ehh, Can't find the user for %s", origin);
}
}
void Usr_Topic(char *origin, char **argv, int argc)
void
Usr_Topic (char *origin, char **argv, int argc)
{
char *buf;
Chans *c;
@ -829,13 +838,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
Change_Topic (origin, c, time (NULL), buf);
free (buf);
} else {
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
}
}
void Usr_Kick(char *origin, char **argv, int argc)
void
Usr_Kick (char *origin, char **argv, int argc)
{
User *u, *k;
u = finduser (argv[1]);
@ -843,12 +852,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
if (u) {
kick_chan (u, argv[0], k);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for kick %s", argv[1],
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
}
}
void Usr_Join(char *origin, char **argv, int argc)
void
Usr_Join (char *origin, char **argv, int argc)
{
char *s, *t;
t = argv[0];
@ -859,21 +867,26 @@ void Usr_Join(char *origin, char **argv, int argc)
join_chan (finduser (origin), s);
}
}
void Usr_Part(char *origin, char **argv, int argc)
void
Usr_Part (char *origin, char **argv, int argc)
{
part_chan (finduser (origin), argv[0]);
}
void Srv_Ping(char *origin, char **argv, int argc)
void
Srv_Ping (char *origin, char **argv, int argc)
{
spong_cmd (argv[0]);
}
void Srv_Svinfo(char *origin, char **argv, int argc)
void
Srv_Svinfo (char *origin, char **argv, int argc)
{
ssvinfo_cmd ();
}
void Srv_Netinfo(char *origin, char **argv, int argc)
void
Srv_Netinfo (char *origin, char **argv, int argc)
{
me.onchan = 1;
ircd_srv.uprot = atoi (argv[2]);
@ -888,10 +901,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
me.synced = 1;
}
void Srv_Pass(char *origin, char **argv, int argc)
void
Srv_Pass (char *origin, char **argv, int argc)
{
}
void Srv_Server(char *origin, char **argv, int argc)
void
Srv_Server (char *origin, char **argv, int argc)
{
Server *s;
if (*origin == 0) {
@ -902,27 +917,28 @@ void Srv_Server(char *origin, char **argv, int argc)
s = findserver (argv[0]);
me.s = s;
}
void Srv_Squit(char *origin, char **argv, int argc)
void
Srv_Squit (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
DelServer (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Waring, Squit from Unknown Server %s", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
}
}
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
void Srv_Nick(char *origin, char **argv, int argc)
void
Srv_Nick (char *origin, char **argv, int argc)
{
char *realname;
AddUser(argv[0], argv[4], argv[5], argv[6], 0,
strtoul(argv[2], NULL, 10));
AddUser (argv[0], argv[4], argv[5], argv[6], 0, strtoul (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 7);
AddRealName (argv[0], realname);
free (realname);
@ -930,12 +946,13 @@ void Srv_Nick(char *origin, char **argv, int argc)
UserMode (argv[0], argv[3], 0);
}
void Srv_Kill(char *origin, char **argv, int argc)
void
Srv_Kill (char *origin, char **argv, int argc)
{
}
int SignOn_NewBot(const char *nick, const char *user, const char *host,
const char *rname, long Umode)
int
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
{
snewnick_cmd (nick, user, host, rname, Umode);

View file

@ -18,7 +18,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: hybrid7.h,v 1.12 2003/07/23 10:35:47 fishwaldo Exp $
** $Id: hybrid7.h,v 1.13 2003/07/30 13:58:22 fishwaldo Exp $
*/

214
ircd.c
View file

@ -22,7 +22,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: ircd.c,v 1.134 2003/07/22 11:50:51 fishwaldo Exp $
** $Id: ircd.c,v 1.135 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include <setjmp.h>
#include "stats.h"
@ -34,8 +34,8 @@ extern const char protocol_version[];
extern IntCommands cmd_list[];
int init_bot(char *nick, char *user, char *host, char *rname, char *modes,
char *mod_name)
int
init_bot (char *nick, char *user, char *host, char *rname, char *modes, char *mod_name)
{
User *u;
char **av;
@ -49,15 +49,11 @@ int init_bot(char *nick, char *user, char *host, char *rname, char *modes,
strcpy (segv_location, "init_bot");
u = finduser (nick);
if (u) {
nlog(LOG_WARNING, LOG_CORE,
"Attempting to Login with a Nickname that already Exists: %s",
nick);
nlog (LOG_WARNING, LOG_CORE, "Attempting to Login with a Nickname that already Exists: %s", nick);
return -1;
}
if (strlen (user) > 8) {
nlog(LOG_WARNING, LOG_CORE,
"Warning, %s bot %s has a username longer than 8 chars. Some IRCd's don't like that",
mod_name, nick);
nlog (LOG_WARNING, LOG_CORE, "Warning, %s bot %s has a username longer than 8 chars. Some IRCd's don't like that", mod_name, nick);
}
add_mod_user (nick, mod_name);
Umode = 0;
@ -71,17 +67,13 @@ int init_bot(char *nick, char *user, char *host, char *rname, char *modes,
add = 0;
break;
default:
for (i = 0;
i <
((sizeof(usr_mds) / sizeof(usr_mds[0])) - 1);
i++) {
for (i = 0; i < ((sizeof (usr_mds) / sizeof (usr_mds[0])) - 1); i++) {
if (usr_mds[i].mode == tmpmode) {
if (add) {
Umode |= usr_mds[i].umodes;
break;
} else {
Umode &=
~usr_mds[i].umodes;
Umode &= ~usr_mds[i].umodes;
break;
}
}
@ -98,16 +90,15 @@ int init_bot(char *nick, char *user, char *host, char *rname, char *modes,
return 1;
}
int del_bot(char *nick, char *reason)
int
del_bot (char *nick, char *reason)
{
User *u;
strcpy (segv_location, "del_bot");
u = finduser (nick);
nlog (LOG_DEBUG1, LOG_CORE, "Killing %s for %s", nick, reason);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Attempting to Logoff with a Nickname that does not Exists: %s",
nick);
nlog (LOG_WARNING, LOG_CORE, "Attempting to Logoff with a Nickname that does not Exists: %s", nick);
return -1;
}
squit_cmd (nick, reason);
@ -118,7 +109,8 @@ int del_bot(char *nick, char *reason)
void Module_Event(char *event, char **av, int ac)
void
Module_Event (char *event, char **av, int ac)
{
Module *module_ptr;
EventFnList *ev_list;
@ -134,28 +126,16 @@ void Module_Event(char *event, char **av, int ac)
while (ev_list->cmd_name != NULL) {
/* This goes through each Command */
if (!strcasecmp (ev_list->cmd_name, event)) {
nlog(LOG_DEBUG1, LOG_CORE,
"Running Module %s for Comamnd %s -> %s",
module_ptr->info->module_name,
event, ev_list->cmd_name);
strcpy(segv_location,
module_ptr->info->
module_name);
strcpy(segvinmodule,
module_ptr->info->
module_name);
nlog (LOG_DEBUG1, LOG_CORE, "Running Module %s for Comamnd %s -> %s", module_ptr->info->module_name, event, ev_list->cmd_name);
strcpy (segv_location, module_ptr->info->module_name);
strcpy (segvinmodule, module_ptr->info->module_name);
if (setjmp (sigvbuf) == 0) {
ev_list->function (av, ac);
} else {
nlog(LOG_CRITICAL,
LOG_CORE,
"setjmp() Failed, Can't call Module %s\n",
module_ptr->info->
module_name);
nlog (LOG_CRITICAL, LOG_CORE, "setjmp() Failed, Can't call Module %s\n", module_ptr->info->module_name);
}
strcpy (segvinmodule, "");
strcpy(segv_location,
"Module_Event_Return");
strcpy (segv_location, "Module_Event_Return");
break;
}
ev_list++;
@ -178,7 +158,8 @@ void Module_Event(char *event, char **av, int ac)
* the buffer by side effect.
*/
extern int split_buf(char *buf, char ***argv, int colon_special)
extern int
split_buf (char *buf, char ***argv, int colon_special)
{
int argvsize = 8;
int argc;
@ -223,7 +204,8 @@ extern int split_buf(char *buf, char ***argv, int colon_special)
return argc - flag;
}
extern char *joinbuf(char **av, int ac, int from)
extern char *
joinbuf (char **av, int ac, int from)
{
int i;
char *buf;
@ -239,7 +221,8 @@ extern char *joinbuf(char **av, int ac, int from)
}
void parse(char *line)
void
parse (char *line)
{
char origin[64], cmd[64], *coreLine;
char *nick;
@ -324,8 +307,7 @@ void parse(char *line)
list = findbot (nick);
/* Check to see if any of the Modules have this nick Registered */
if (list) {
nlog(LOG_DEBUG1, LOG_CORE, "nicks: %s",
list->nick);
nlog (LOG_DEBUG1, LOG_CORE, "nicks: %s", list->nick);
if (flood (finduser (origin))) {
free (av);
return;
@ -333,11 +315,8 @@ void parse(char *line)
/* Check to make sure there are no blank spaces so we dont crash */
if (strlen (av[1]) >= 350) {
prefmsg(origin, s_Services,
"command line too long!");
notice(s_Services,
"%s tried to send a very LARGE command, we told them to shove it!",
origin);
prefmsg (origin, s_Services, "command line too long!");
notice (s_Services, "%s tried to send a very LARGE command, we told them to shove it!", origin);
free (av);
return;
}
@ -348,8 +327,7 @@ void parse(char *line)
list->function (origin, av, ac);
}
strcpy (segvinmodule, "");
strcpy(segv_location,
"Return from Module Message");
strcpy (segv_location, "Return from Module Message");
free (av);
if (I == 1)
free (nick);
@ -386,23 +364,14 @@ void parse(char *line)
/* This goes through each Command */
if (!strcmp (fn_list->cmd_name, cmd)) {
if (fn_list->srvmsg == cmdptr) {
nlog(LOG_DEBUG1, LOG_CORE,
"Running Module %s for Function %s",
module_ptr->info->module_name,
fn_list->cmd_name);
strcpy(segv_location,
module_ptr->info->
module_name);
strcpy(segvinmodule,
module_ptr->info->
module_name);
nlog (LOG_DEBUG1, LOG_CORE, "Running Module %s for Function %s", module_ptr->info->module_name, fn_list->cmd_name);
strcpy (segv_location, module_ptr->info->module_name);
strcpy (segvinmodule, module_ptr->info->module_name);
if (setjmp (sigvbuf) == 0) {
fn_list->function(origin,
av, ac);
fn_list->function (origin, av, ac);
}
strcpy (segvinmodule, "");
strcpy(segv_location,
"Parse_Return_Module");
strcpy (segv_location, "Parse_Return_Module");
break;
}
}
@ -423,7 +392,8 @@ void parse(char *line)
/* Here are the Following Internal Functions.
they should update the internal Structures */
void init_ServBot()
void
init_ServBot ()
{
char rname[63];
char **av;
@ -433,8 +403,7 @@ void init_ServBot()
/* nick already exists on the network */
snprintf (s_Services, MAXNICK, "NeoStats1");
snprintf (rname, 63, "/msg %s \2HELP\2", s_Services);
SignOn_NewBot(s_Services, Servbot.user, Servbot.host, rname,
UMODE_SERVICES);
SignOn_NewBot (s_Services, Servbot.user, Servbot.host, rname, UMODE_SERVICES);
me.onchan = 1;
AddStringToList (&av, me.uplink, &ac);
Module_Event ("ONLINE", av, ac);
@ -446,7 +415,8 @@ void init_ServBot()
}
void dopong(Server * s)
void
dopong (Server * s)
{
char **av;
int ac = 0;
@ -460,14 +430,14 @@ void dopong(Server * s)
Module_Event ("PONG", av, ac);
free (av);
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Received PONG from unknown server: %s", recbuf);
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", recbuf);
}
}
int flood(User * u)
int
flood (User * u)
{
time_t current = time (NULL);
@ -483,11 +453,8 @@ int flood(User * u)
return 0;
}
if (u->flood >= 5) {
nlog(LOG_NORMAL, LOG_CORE, "FLOODING: %s!%s@%s", u->nick,
u->username, u->hostname);
ssvskill_cmd(u->nick,
"%s!%s (Flooding Services.)", Servbot.host,
s_Services);
nlog (LOG_NORMAL, LOG_CORE, "FLOODING: %s!%s@%s", u->nick, u->username, u->hostname);
ssvskill_cmd (u->nick, "%s!%s (Flooding Services.)", Servbot.host, s_Services);
return 1;
} else {
u->flood++;
@ -496,15 +463,14 @@ int flood(User * u)
}
/* Display our MOTD Message of the Day from the external neostats.motd file */
void ShowMOTD(char *nick)
void
ShowMOTD (char *nick)
{
FILE *fp;
char buf[BUFSIZE];
snumeric_cmd (375, nick, ":- %s Message of the Day -", me.name);
snumeric_cmd(372, nick,
":- %d.%d.%d%s. Copyright (c) 1999 - 2002 The NeoStats Group",
MAJOR, MINOR, REV, version);
snumeric_cmd (372, nick, ":- %d.%d.%d%s. Copyright (c) 1999 - 2002 The NeoStats Group", MAJOR, MINOR, REV, version);
snumeric_cmd (372, nick, ":-");
fp = fopen ("neostats.motd", "r");
@ -523,15 +489,14 @@ void ShowMOTD(char *nick)
/* Display the ADMIN Message from the external stats.admin file */
void ShowADMIN(char *nick)
void
ShowADMIN (char *nick)
{
FILE *fp;
char buf[BUFSIZE];
snumeric_cmd (256, nick, ":- %s NeoStats Admins -", me.name);
snumeric_cmd(256, nick,
":- %d.%d.%d%s. Copyright (c) 1999 - 2002 The NeoStats Group",
MAJOR, MINOR, REV, version);
snumeric_cmd (256, nick, ":- %d.%d.%d%s. Copyright (c) 1999 - 2002 The NeoStats Group", MAJOR, MINOR, REV, version);
fp = fopen ("stats.admin", "r");
@ -546,48 +511,33 @@ void ShowADMIN(char *nick)
}
void Showcredits(char *nick)
void
Showcredits (char *nick)
{
snumeric_cmd(351, nick, ":- NeoStats %d.%d.%d%s Credits ", MAJOR,
MINOR, REV, version);
snumeric_cmd(351, nick,
":- Now Maintained by Shmad (shmad@neostats.net) and ^Enigma^ (enigma@neostats.net)");
snumeric_cmd(351, nick,
":- For Support, you can find ^Enigma^ or Shmad at");
snumeric_cmd (351, nick, ":- NeoStats %d.%d.%d%s Credits ", MAJOR, MINOR, REV, version);
snumeric_cmd (351, nick, ":- Now Maintained by Shmad (shmad@neostats.net) and ^Enigma^ (enigma@neostats.net)");
snumeric_cmd (351, nick, ":- For Support, you can find ^Enigma^ or Shmad at");
snumeric_cmd (351, nick, ":- irc.irc-chat.net #NeoStats");
snumeric_cmd (351, nick, ":- Thanks to:");
snumeric_cmd(351, nick,
":- \2Fish\2 still part of the team with patch submissions.");
snumeric_cmd(351, nick,
":- Stskeeps for Writting the best IRCD ever!");
snumeric_cmd(351, nick,
":- chrisv@b0rked.dhs.org for the Code for Dynamically Loading Modules (Hurrican IRCD)");
snumeric_cmd(351, nick,
":- monkeyIRCD for the Module Segv Catching code");
snumeric_cmd(351, nick,
":- the Users of Global-irc.net and Dreaming.org for being our Guinea Pigs!");
snumeric_cmd (351, nick, ":- \2Fish\2 still part of the team with patch submissions.");
snumeric_cmd (351, nick, ":- Stskeeps for Writting the best IRCD ever!");
snumeric_cmd (351, nick, ":- chrisv@b0rked.dhs.org for the Code for Dynamically Loading Modules (Hurrican IRCD)");
snumeric_cmd (351, nick, ":- monkeyIRCD for the Module Segv Catching code");
snumeric_cmd (351, nick, ":- the Users of Global-irc.net and Dreaming.org for being our Guinea Pigs!");
snumeric_cmd (351, nick, ":- Andy For Ideas");
snumeric_cmd(351, nick,
":- HeadBang for BetaTesting, and Ideas, And Hassling us for Beta Copies");
snumeric_cmd(351, nick,
":- sre and Jacob for development systems and access");
snumeric_cmd(351, nick,
":- Error51 for Translating our FAQ and README files");
snumeric_cmd(351, nick,
":- users and opers of irc.irc-chat.net/org for putting up with our constant coding crashes!");
snumeric_cmd(351, nick,
":- Eggy for proving to use our code still had bugs when we thought it didn't (and all the bug reports!)");
snumeric_cmd(351, nick,
":- Hwy - Helping us even though he also has a similar project, and providing solaris porting tips :)");
snumeric_cmd(351, nick,
":- M - Updating lots of Doco and code and providing lots of great feedback");
snumeric_cmd(351, nick,
":- J Michael Jones - Giving us Patches to support QuantumIRCd");
snumeric_cmd(351, nick,
":- Blud - Giving us patches for Mystic IRCd");
snumeric_cmd (351, nick, ":- HeadBang for BetaTesting, and Ideas, And Hassling us for Beta Copies");
snumeric_cmd (351, nick, ":- sre and Jacob for development systems and access");
snumeric_cmd (351, nick, ":- Error51 for Translating our FAQ and README files");
snumeric_cmd (351, nick, ":- users and opers of irc.irc-chat.net/org for putting up with our constant coding crashes!");
snumeric_cmd (351, nick, ":- Eggy for proving to use our code still had bugs when we thought it didn't (and all the bug reports!)");
snumeric_cmd (351, nick, ":- Hwy - Helping us even though he also has a similar project, and providing solaris porting tips :)");
snumeric_cmd (351, nick, ":- M - Updating lots of Doco and code and providing lots of great feedback");
snumeric_cmd (351, nick, ":- J Michael Jones - Giving us Patches to support QuantumIRCd");
snumeric_cmd (351, nick, ":- Blud - Giving us patches for Mystic IRCd");
}
void ShowStats(char *what, User * u)
void
ShowStats (char *what, User * u)
{
time_t tmp;
time_t tmp2;
@ -603,16 +553,11 @@ void ShowStats(char *what, User * u)
if (!strcasecmp (what, "u")) {
/* server uptime - Shmad */
int uptime = time (NULL) - me.t_start;
snumeric_cmd(242, u->nick,
"Statistical Server up %d days, %d:%02d:%02d",
uptime / 86400, (uptime / 3600) % 24,
(uptime / 60) % 60, uptime % 60);
snumeric_cmd (242, u->nick, "Statistical Server up %d days, %d:%02d:%02d", uptime / 86400, (uptime / 3600) % 24, (uptime / 60) % 60, uptime % 60);
} else if (!strcasecmp (what, "c")) {
/* Connections */
snumeric_cmd(214, u->nick, "N *@%s * * %d 50", me.uplink,
me.port);
snumeric_cmd(213, u->nick, "C *@%s * * %d 50", me.uplink,
me.port);
snumeric_cmd (214, u->nick, "N *@%s * * %d 50", me.uplink, me.port);
snumeric_cmd (213, u->nick, "C *@%s * * %d 50", me.uplink, me.port);
} else if (!strcasecmp (what, "o")) {
/* Operators */
#ifdef EXTAUTH
@ -623,24 +568,17 @@ void ShowStats(char *what, User * u)
(*listauth) (u);
} else
#endif
snumeric_cmd(243, u->nick,
"Operators think they are God, but you and I know they are not!");
snumeric_cmd (243, u->nick, "Operators think they are God, but you and I know they are not!");
} else if (!strcasecmp (what, "l")) {
/* Port Lists */
tmp = time (NULL) - me.lastmsg;
tmp2 = time (NULL) - me.t_start;
snumeric_cmd(211, u->nick,
"l SendQ SendM SendBytes RcveM RcveBytes Open_Since CPU :IDLE");
snumeric_cmd(241, u->nick, "%s 0 %d %d %d %d %d 0 :%d",
me.uplink, me.SendM, me.SendBytes, me.RcveM,
me.RcveBytes, tmp2, tmp);
snumeric_cmd (211, u->nick, "l SendQ SendM SendBytes RcveM RcveBytes Open_Since CPU :IDLE");
snumeric_cmd (241, u->nick, "%s 0 %d %d %d %d %d 0 :%d", me.uplink, me.SendM, me.SendBytes, me.RcveM, me.RcveBytes, tmp2, tmp);
} else if (!strcasecmp (what, "M")) {
for (I = 0; I < ircd_srv.cmdcount; I++) {
if (cmd_list[I].usage > 0)
snumeric_cmd(212, u->nick,
"Command %s Usage %d",
cmd_list[I].name,
cmd_list[I].usage);
snumeric_cmd (212, u->nick, "Command %s Usage %d", cmd_list[I].name, cmd_list[I].usage);
}
}
snumeric_cmd (219, u->nick, "%s :End of /STATS report", what);

2
ircd.h
View file

@ -18,7 +18,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: ircd.h,v 1.2 2003/06/26 05:14:16 fishwaldo Exp $
** $Id: ircd.h,v 1.3 2003/07/30 13:58:22 fishwaldo Exp $
*/
#ifndef IRCD_H
#define IRCD_H

View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: keeper.c,v 1.10 2003/06/13 13:11:49 fishwaldo Exp $
** $Id: keeper.c,v 1.11 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -30,7 +30,8 @@
/** @brief Gets Config Data of Type
*/
int GetConf(void **data, int type, const char *item)
int
GetConf (void **data, int type, const char *item)
{
char keypath[255];
int i = 0;
@ -56,9 +57,7 @@ int GetConf(void **data, int type, const char *item)
i = kp_get_bool (keypath, (int *) *&data);
break;
default:
nlog(LOG_WARNING, LOG_CORE,
"Keeper: Called GetConf with invalid datatype %d",
type);
nlog (LOG_WARNING, LOG_CORE, "Keeper: Called GetConf with invalid datatype %d", type);
return -1;
}
/* check for errors */
@ -66,8 +65,7 @@ int GetConf(void **data, int type, const char *item)
/*
data = malloc(255);
*/
nlog(LOG_DEBUG1, LOG_CORE, "GetConf: %s - Path: %s",
kp_strerror(i), keypath);
nlog (LOG_DEBUG1, LOG_CORE, "GetConf: %s - Path: %s", kp_strerror (i), keypath);
return -1;
}
return 1;
@ -75,7 +73,8 @@ int GetConf(void **data, int type, const char *item)
/* @brief return a array of strings containing all subkeys in a directory */
int GetDir(char *item, char ***data)
int
GetDir (char *item, char ***data)
{
int i;
char keypath[255];
@ -93,8 +92,7 @@ int GetDir(char *item, char ***data)
return 1;
}
*data = NULL;
nlog(LOG_DEBUG1, LOG_CORE, "GetDir: %s - Path: %s", kp_strerror(i),
keypath);
nlog (LOG_DEBUG1, LOG_CORE, "GetDir: %s - Path: %s", kp_strerror (i), keypath);
return -1;
}
@ -103,7 +101,8 @@ int GetDir(char *item, char ***data)
/** @brief Sets Config Data of Type
*/
int SetConf(void *data, int type, char *item)
int
SetConf (void *data, int type, char *item)
{
char keypath[255];
int i = 0;
@ -131,9 +130,7 @@ int SetConf(void *data, int type, char *item)
i = kp_set_bool (keypath, (int) data);
break;
default:
nlog(LOG_WARNING, LOG_CORE,
"Keeper: Called SetConf with invalid datatype %d",
type);
nlog (LOG_WARNING, LOG_CORE, "Keeper: Called SetConf with invalid datatype %d", type);
return -1;
}
/* check for errors */

166
list.c
View file

@ -37,7 +37,7 @@
* into proprietary software; there is no requirement for such software to
* contain a copyright notice related to this source.
*
* $Id: list.c,v 1.9 2003/07/17 10:13:51 fishwaldo Exp $
* $Id: list.c,v 1.10 2003/07/30 13:58:22 fishwaldo Exp $
* $Name: $
*/
@ -69,8 +69,7 @@
#define lnode_prev(N) ((N)->prev)
#ifdef KAZLIB_RCSID
static const char rcsid[] =
"$Id: list.c,v 1.9 2003/07/17 10:13:51 fishwaldo Exp $";
static const char rcsid[] = "$Id: list.c,v 1.10 2003/07/30 13:58:22 fishwaldo Exp $";
#endif
/*
@ -80,7 +79,8 @@ static const char rcsid[] =
* is not permitted.
*/
list_t *list_init(list_t * list, listcount_t maxcount)
list_t *
list_init (list_t * list, listcount_t maxcount)
{
nassert (maxcount != 0);
list->nilnode.next = &list->nilnode;
@ -96,7 +96,8 @@ list_t *list_init(list_t * list, listcount_t maxcount)
* should be specified as LISTCOUNT_T_MAX, or, alternately, as -1.
*/
list_t *list_create(listcount_t maxcount)
list_t *
list_create (listcount_t maxcount)
{
list_t *new = malloc (sizeof *new);
if (new) {
@ -114,7 +115,8 @@ list_t *list_create(listcount_t maxcount)
* The client must remove the nodes first.
*/
void list_destroy(list_t * list)
void
list_destroy (list_t * list)
{
nassert (list_isempty (list));
free (list);
@ -126,10 +128,10 @@ void list_destroy(list_t * list)
* is empty.
*/
void list_destroy_nodes(list_t * list)
void
list_destroy_nodes (list_t * list)
{
lnode_t *lnode = list_first_priv(list), *nil =
list_nil(list), *tmp;
lnode_t *lnode = list_first_priv (list), *nil = list_nil (list), *tmp;
while (lnode != nil) {
tmp = lnode->next;
@ -147,10 +149,10 @@ void list_destroy_nodes(list_t * list)
* the list must all have come from the same pool.
*/
void list_return_nodes(list_t * list, lnodepool_t * pool)
void
list_return_nodes (list_t * list, lnodepool_t * pool)
{
lnode_t *lnode = list_first_priv(list), *tmp, *nil =
list_nil(list);
lnode_t *lnode = list_first_priv (list), *tmp, *nil = list_nil (list);
while (lnode != nil) {
tmp = lnode->next;
@ -167,7 +169,8 @@ void list_return_nodes(list_t * list, lnodepool_t * pool)
* Insert the node ``new'' into the list immediately after ``this'' node.
*/
void list_ins_after(list_t * list, lnode_t * new, lnode_t * this)
void
list_ins_after (list_t * list, lnode_t * new, lnode_t * this)
{
lnode_t *that = this->next;
@ -190,7 +193,8 @@ void list_ins_after(list_t * list, lnode_t * new, lnode_t * this)
* Insert the node ``new'' into the list immediately before ``this'' node.
*/
void list_ins_before(list_t * list, lnode_t * new, lnode_t * this)
void
list_ins_before (list_t * list, lnode_t * new, lnode_t * this)
{
lnode_t *that = this->prev;
@ -213,7 +217,8 @@ void list_ins_before(list_t * list, lnode_t * new, lnode_t * this)
* Delete the given node from the list.
*/
lnode_t *list_delete(list_t * list, lnode_t * del)
lnode_t *
list_delete (list_t * list, lnode_t * del)
{
lnode_t *next = del->next;
lnode_t *prev = del->prev;
@ -235,12 +240,10 @@ lnode_t *list_delete(list_t * list, lnode_t * del)
* call to the function.
*/
void list_process(list_t * list, void *context,
void (*function) (list_t * list, lnode_t * lnode,
void *context))
void
list_process (list_t * list, void *context, void (*function) (list_t * list, lnode_t * lnode, void *context))
{
lnode_t *node = list_first_priv(list), *next, *nil =
list_nil(list);
lnode_t *node = list_first_priv (list), *next, *nil = list_nil (list);
while (node != nil) {
/* check for callback function deleting */
@ -256,7 +259,8 @@ void list_process(list_t * list, void *context,
* Dynamically allocate a list node and assign it the given piece of data.
*/
lnode_t *lnode_create(void *data)
lnode_t *
lnode_create (void *data)
{
lnode_t *new = malloc (sizeof *new);
if (new) {
@ -271,7 +275,8 @@ lnode_t *lnode_create(void *data)
* Initialize a user-supplied lnode.
*/
lnode_t *lnode_init(lnode_t * lnode, void *data)
lnode_t *
lnode_init (lnode_t * lnode, void *data)
{
lnode->data = data;
lnode->next = NULL;
@ -283,7 +288,8 @@ lnode_t *lnode_init(lnode_t * lnode, void *data)
* Destroy a dynamically allocated node.
*/
void lnode_destroy(lnode_t * lnode)
void
lnode_destroy (lnode_t * lnode)
{
nassert (!lnode_is_in_a_list (lnode));
free (lnode);
@ -295,8 +301,8 @@ void lnode_destroy(lnode_t * lnode)
* ``n'' elements.
*/
lnodepool_t *lnode_pool_init(lnodepool_t * pool, lnode_t * nodes,
listcount_t n)
lnodepool_t *
lnode_pool_init (lnodepool_t * pool, lnode_t * nodes, listcount_t n)
{
listcount_t i;
@ -317,7 +323,8 @@ lnodepool_t *lnode_pool_init(lnodepool_t * pool, lnode_t * nodes,
* Create a dynamically allocated pool of n nodes.
*/
lnodepool_t *lnode_pool_create(listcount_t n)
lnodepool_t *
lnode_pool_create (listcount_t n)
{
lnodepool_t *pool;
lnode_t *nodes;
@ -340,7 +347,8 @@ lnodepool_t *lnode_pool_create(listcount_t n)
* Determine whether the given pool is from this pool.
*/
int lnode_pool_isfrom(lnodepool_t * pool, lnode_t * node)
int
lnode_pool_isfrom (lnodepool_t * pool, lnode_t * node)
{
listcount_t i;
@ -359,7 +367,8 @@ int lnode_pool_isfrom(lnodepool_t * pool, lnode_t * node)
* Destroy a dynamically allocated pool of nodes.
*/
void lnode_pool_destroy(lnodepool_t * p)
void
lnode_pool_destroy (lnodepool_t * p)
{
free (p->pool);
free (p);
@ -370,7 +379,8 @@ void lnode_pool_destroy(lnodepool_t * p)
* is exhausted.
*/
lnode_t *lnode_borrow(lnodepool_t * pool, void *data)
lnode_t *
lnode_borrow (lnodepool_t * pool, void *data)
{
lnode_t *new = pool->fre;
if (new) {
@ -387,7 +397,8 @@ lnode_t *lnode_borrow(lnodepool_t * pool, void *data)
* from which it came.
*/
void lnode_return(lnodepool_t * pool, lnode_t * node)
void
lnode_return (lnodepool_t * pool, lnode_t * node)
{
nassert (lnode_pool_isfrom (pool, node));
nassert (!lnode_is_in_a_list (node));
@ -402,7 +413,8 @@ void lnode_return(lnodepool_t * pool, lnode_t * node)
* According to this function, a list does not contain its nilnode.
*/
int list_contains(list_t * list, lnode_t * node)
int
list_contains (list_t * list, lnode_t * node)
{
lnode_t *n, *nil = list_nil (list);
@ -420,8 +432,8 @@ int list_contains(list_t * list, lnode_t * node)
* list.
*/
void list_extract(list_t * dest, list_t * source, lnode_t * first,
lnode_t * last)
void
list_extract (list_t * dest, list_t * source, lnode_t * first, lnode_t * last)
{
listcount_t moved = 1;
@ -473,7 +485,8 @@ void list_extract(list_t * dest, list_t * source, lnode_t * first,
* order.
*/
void list_transfer(list_t * dest, list_t * source, lnode_t * first)
void
list_transfer (list_t * dest, list_t * source, lnode_t * first)
{
listcount_t moved = 1;
lnode_t *last;
@ -513,8 +526,8 @@ void list_transfer(list_t * dest, list_t * source, lnode_t * first)
nassert (list_verify (dest));
}
void list_merge(list_t * dest, list_t * sour,
int compare(const void *, const void *))
void
list_merge (list_t * dest, list_t * sour, int compare (const void *, const void *))
{
lnode_t *dn, *sn, *tn;
lnode_t *d_nil = list_nil (dest), *s_nil = list_nil (sour);
@ -551,7 +564,8 @@ void list_merge(list_t * dest, list_t * sour,
list_transfer (dest, sour, sn);
}
void list_sort(list_t * list, int compare(const void *, const void *))
void
list_sort (list_t * list, int compare (const void *, const void *))
{
list_t extra;
listcount_t middle;
@ -574,13 +588,12 @@ void list_sort(list_t * list, int compare(const void *, const void *))
nassert (list_is_sorted (list, compare));
}
lnode_t *list_find(list_t * list, const void *key,
int compare(const void *, const void *))
lnode_t *
list_find (list_t * list, const void *key, int compare (const void *, const void *))
{
lnode_t *node;
for (node = list_first_priv(list); node != list_nil(list);
node = node->next) {
for (node = list_first_priv (list); node != list_nil (list); node = node->next) {
if (compare (lnode_get (node), key) == 0)
return node;
}
@ -593,7 +606,8 @@ lnode_t *list_find(list_t * list, const void *key,
* Return 1 if the list is in sorted order, 0 otherwise
*/
int list_is_sorted(list_t * list, int compare(const void *, const void *))
int
list_is_sorted (list_t * list, int compare (const void *, const void *))
{
lnode_t *node, *next, *nil;
@ -635,7 +649,8 @@ int list_is_sorted(list_t * list, int compare(const void *, const void *))
* Return 1 if the list is empty, 0 otherwise
*/
int list_isempty(list_t * list)
int
list_isempty (list_t * list)
{
return list->nodecount == 0;
}
@ -645,7 +660,8 @@ int list_isempty(list_t * list)
* Permitted only on bounded lists.
*/
int list_isfull(list_t * list)
int
list_isfull (list_t * list)
{
return list->nodecount == list->maxcount;
}
@ -654,7 +670,8 @@ int list_isfull(list_t * list)
* Check if the node pool is empty.
*/
int lnode_pool_isempty(lnodepool_t * pool)
int
lnode_pool_isempty (lnodepool_t * pool)
{
return (pool->fre == NULL);
}
@ -663,7 +680,8 @@ int lnode_pool_isempty(lnodepool_t * pool)
* Add the given node at the end of the list
*/
void list_append(list_t * list, lnode_t * node)
void
list_append (list_t * list, lnode_t * node)
{
list_ins_before (list, node, &list->nilnode);
}
@ -672,7 +690,8 @@ void list_append(list_t * list, lnode_t * node)
* Add the given node at the beginning of the list.
*/
void list_prepend(list_t * list, lnode_t * node)
void
list_prepend (list_t * list, lnode_t * node)
{
list_ins_after (list, node, &list->nilnode);
}
@ -681,7 +700,8 @@ void list_prepend(list_t * list, lnode_t * node)
* Retrieve the first node of the list
*/
lnode_t *list_first(list_t * list)
lnode_t *
list_first (list_t * list)
{
if (list->nilnode.next == &list->nilnode)
return NULL;
@ -692,7 +712,8 @@ lnode_t *list_first(list_t * list)
* Retrieve the last node of the list
*/
lnode_t *list_last(list_t * list)
lnode_t *
list_last (list_t * list)
{
if (list->nilnode.prev == &list->nilnode)
return NULL;
@ -703,7 +724,8 @@ lnode_t *list_last(list_t * list)
* Retrieve the count of nodes in the list
*/
listcount_t list_count(list_t * list)
listcount_t
list_count (list_t * list)
{
return list->nodecount;
}
@ -712,7 +734,8 @@ listcount_t list_count(list_t * list)
* Remove the first node from the list and return it.
*/
lnode_t *list_del_first(list_t * list)
lnode_t *
list_del_first (list_t * list)
{
return list_delete (list, list->nilnode.next);
}
@ -721,7 +744,8 @@ lnode_t *list_del_first(list_t * list)
* Remove the last node from the list and return it.
*/
lnode_t *list_del_last(list_t * list)
lnode_t *
list_del_last (list_t * list)
{
return list_delete (list, list->nilnode.prev);
}
@ -731,7 +755,8 @@ lnode_t *list_del_last(list_t * list)
* Associate a data item with the given node.
*/
void lnode_put(lnode_t * lnode, void *data)
void
lnode_put (lnode_t * lnode, void *data)
{
lnode->data = data;
}
@ -740,7 +765,8 @@ void lnode_put(lnode_t * lnode, void *data)
* Retrieve the data item associated with the node.
*/
void *lnode_get(lnode_t * lnode)
void *
lnode_get (lnode_t * lnode)
{
return lnode->data;
}
@ -750,7 +776,8 @@ void *lnode_get(lnode_t * lnode)
* NULL is returned.
*/
lnode_t *list_next(list_t * list, lnode_t * lnode)
lnode_t *
list_next (list_t * list, lnode_t * lnode)
{
nassert (list_contains (list, lnode));
@ -763,7 +790,8 @@ lnode_t *list_next(list_t * list, lnode_t * lnode)
* Retrieve the node's predecessor. See comment for lnode_next().
*/
lnode_t *list_prev(list_t * list, lnode_t * lnode)
lnode_t *
list_prev (list_t * list, lnode_t * lnode)
{
nassert (list_contains (list, lnode));
@ -776,13 +804,15 @@ lnode_t *list_prev(list_t * list, lnode_t * lnode)
* Return 1 if the lnode is in some list, otherwise return 0.
*/
int lnode_is_in_a_list(lnode_t * lnode)
int
lnode_is_in_a_list (lnode_t * lnode)
{
return (lnode->next != NULL || lnode->prev != NULL);
}
int list_verify(list_t * list)
int
list_verify (list_t * list)
{
lnode_t *node = list_first_priv (list), *nil = list_nil (list);
listcount_t count = list_count (list);
@ -808,7 +838,8 @@ int list_verify(list_t * list)
return 1;
}
int comparef(const void *key1, const void *key2)
int
comparef (const void *key1, const void *key2)
{
return strcasecmp (key1, key2);
}
@ -824,7 +855,8 @@ int comparef(const void *key1, const void *key2)
typedef char input_t[256];
static int tokenize(char *string, ...)
static int
tokenize (char *string, ...)
{
char **tokptr;
va_list arglist;
@ -852,7 +884,8 @@ static int tokenize(char *string, ...)
}
static char *dupstring(char *str)
static char *
dupstring (char *str)
{
int sz = strlen (str) + 1;
char *new = malloc (sz);
@ -861,7 +894,8 @@ static char *dupstring(char *str)
return new;
}
int main(void)
int
main (void)
{
input_t in;
list_t *l = list_create (LISTCOUNT_T_MAX);
@ -874,10 +908,7 @@ int main(void)
"d <val> delete value from list\n"
"l <val> lookup value in list\n"
"s sort list\n"
"c show number of entries\n"
"t dump whole list\n"
"p turn prompt on\n"
"q quit";
"c show number of entries\n" "t dump whole list\n" "p turn prompt on\n" "q quit";
if (!l)
puts ("list_create failed");
@ -945,8 +976,7 @@ int main(void)
printf ("%lu\n", (unsigned long) list_count (l));
break;
case 't':
for (ln = list_first(l); ln != 0;
ln = list_next(l, ln))
for (ln = list_first (l); ln != 0; ln = list_next (l, ln))
puts (lnode_get (ln));
break;
case 'q':

3
list.h
View file

@ -37,7 +37,7 @@
* into proprietary software; there is no requirement for such software to
* contain a copyright notice related to this source.
*
* $Id: list.h,v 1.3 2002/09/04 08:40:27 fishwaldo Exp $
* $Id: list.h,v 1.4 2003/07/30 13:58:22 fishwaldo Exp $
* $Name: $
*/
@ -176,5 +176,4 @@ int list_is_sorted(list_t *, int (const void *, const void *));
#ifdef __cplusplus
}
#endif
#endif

62
log.c
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: log.c,v 1.11 2003/07/17 10:13:51 fishwaldo Exp $
** $Id: log.c,v 1.12 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -55,7 +55,8 @@ void *close_logs();
/** @brief Initilize the logging functions
*/
void init_logs()
void
init_logs ()
{
logs = hash_create (-1, 0, 0);
if (!logs) {
@ -69,7 +70,8 @@ void init_logs()
*/
void *close_logs()
void *
close_logs ()
{
hscan_t hs;
hnode_t *hn;
@ -81,8 +83,7 @@ void *close_logs()
fflush (logentry->logfile);
logentry->flush = 0;
#ifdef DEBUG
printf("Closing Logfile %s (%s)\n", logentry->name,
(char *) hnode_getkey(hn));
printf ("Closing Logfile %s (%s)\n", logentry->name, (char *) hnode_getkey (hn));
#endif
fclose (logentry->logfile);
hash_scan_delete (logs, hn);
@ -95,7 +96,8 @@ void *close_logs()
/** @Configurable logging function
*/
void nlog(int level, int scope, char *fmt, ...)
void
nlog (int level, int scope, char *fmt, ...)
{
va_list ap;
char buf[512], fmttime[80];
@ -110,8 +112,7 @@ void nlog(int level, int scope, char *fmt, ...)
if (strlen (segvinmodule) > 1) {
hn = hash_lookup (logs, segvinmodule);
} else {
nlog(LOG_ERROR, LOG_CORE,
"Warning, nlog called with LOG_MOD, but segvinmodule is blank! Logging to Core");
nlog (LOG_ERROR, LOG_CORE, "Warning, nlog called with LOG_MOD, but segvinmodule is blank! Logging to Core");
hn = hash_lookup (logs, "core");
}
} else {
@ -125,17 +126,14 @@ void nlog(int level, int scope, char *fmt, ...)
/* log file not found */
if ((strlen (segvinmodule) <= 1) && (scope > 0)) {
#ifdef DEBUG
printf
("segvinmodule is blank, but scope is for Modules!\n");
printf ("segvinmodule is blank, but scope is for Modules!\n");
#endif
/* bad, but hey ! */
scope = 0;
}
logentry = malloc (sizeof (struct logs_));
strncpy(logentry->name,
scope > 0 ? segvinmodule : "core", 30);
snprintf(buf, 40, "logs/%s.log",
scope > 0 ? segvinmodule : "NeoStats");
strncpy (logentry->name, scope > 0 ? segvinmodule : "core", 30);
snprintf (buf, 40, "logs/%s.log", scope > 0 ? segvinmodule : "NeoStats");
logentry->logfile = fopen (buf, "a");
logentry->flush = 0;
hn = hnode_create (logentry);
@ -153,19 +151,17 @@ void nlog(int level, int scope, char *fmt, ...)
va_start (ap, fmt);
vsnprintf (buf, 512, fmt, ap);
fprintf(logentry->logfile, "(%s) %s %s - %s\n", fmttime,
loglevels[level - 1],
scope > 0 ? segvinmodule : "CORE", buf);
fprintf (logentry->logfile, "(%s) %s %s - %s\n", fmttime, loglevels[level - 1], scope > 0 ? segvinmodule : "CORE", buf);
logentry->flush = 1;
#ifndef DEBUG
if (config.foreground)
#endif
printf("%s %s - %s\n", loglevels[level - 1],
scope > 0 ? segvinmodule : "CORE", buf);
printf ("%s %s - %s\n", loglevels[level - 1], scope > 0 ? segvinmodule : "CORE", buf);
va_end (ap);
}
}
void ResetLogs()
void
ResetLogs ()
{
char tmp[255], tmp2[255];
time_t t = time (NULL);
@ -182,24 +178,17 @@ void ResetLogs()
fflush (logentry->logfile);
logentry->flush = 0;
#ifdef DEBUG
printf("Closing Logfile %s (%s)\n", logentry->name,
(char *) hnode_getkey(hn));
printf ("Closing Logfile %s (%s)\n", logentry->name, (char *) hnode_getkey (hn));
#endif
fclose (logentry->logfile);
if (!strcasecmp (logentry->name, "core")) {
strftime(tmp, 255,
"logs/NeoStats-%m-%d.log",
localtime(&t));
strftime (tmp, 255, "logs/NeoStats-%m-%d.log", localtime (&t));
rename ("logs/NeoStats.log", tmp);
logentry->logfile =
fopen("logs/NeoStats.log", "a");
logentry->logfile = fopen ("logs/NeoStats.log", "a");
} else {
strftime(tmp2, 255, "%m-%d.log",
localtime(&t));
snprintf(tmp, 255, "logs/%s-%s",
logentry->name, tmp2);
snprintf(tmp2, 255, "logs/%s.log",
logentry->name);
strftime (tmp2, 255, "%m-%d.log", localtime (&t));
snprintf (tmp, 255, "logs/%s-%s", logentry->name, tmp2);
snprintf (tmp2, 255, "logs/%s.log", logentry->name);
rename (tmp2, tmp);
logentry->logfile = fopen (tmp2, "a");
}
@ -210,7 +199,9 @@ void ResetLogs()
/* this is for printing out details during a assertion failure */
extern void nassert_fail(const char *expr, const char *file, const int line, const char *infunk) {
extern void
nassert_fail (const char *expr, const char *file, const int line, const char *infunk)
{
#ifdef HAVE_BACKTRACE
void *array[50];
size_t size;
@ -226,8 +217,7 @@ extern void nassert_fail(const char *expr, const char *file, const int line, con
nlog (LOG_CRITICAL, LOG_CORE, "Expression: %s", expr);
#ifdef HAVE_BACKTRACE
for (i = 1; i < size; i++) {
nlog(LOG_CRITICAL, LOG_CORE, "BackTrace(%d): %s",
i - 1, strings[i]);
nlog (LOG_CRITICAL, LOG_CORE, "BackTrace(%d): %s", i - 1, strings[i]);
}
#endif
nlog (LOG_CRITICAL, LOG_CORE, "Shutting Down!");

2
log.h
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: log.h,v 1.5 2003/07/18 06:09:17 fishwaldo Exp $
** $Id: log.h,v 1.6 2003/07/30 13:58:22 fishwaldo Exp $
*/

192
main.c
View file

@ -22,7 +22,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: main.c,v 1.98 2003/07/18 06:09:17 fishwaldo Exp $
** $Id: main.c,v 1.99 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include <setjmp.h>
@ -87,7 +87,8 @@ int forked = 0;
*
* @todo Close STDIN etc correctly
*/
int main(int argc, char *argv[])
int
main (int argc, char *argv[])
{
FILE *fp;
/* get our commandline options */
@ -111,16 +112,13 @@ int main(int argc, char *argv[])
me.onchan = 0;
/* keep quiet if we are told to :) */
if (!config.quiet) {
printf("NeoStats %d.%d.%d%s Loading...\n", MAJOR, MINOR,
REV, version);
printf
("-----------------------------------------------\n");
printf ("NeoStats %d.%d.%d%s Loading...\n", MAJOR, MINOR, REV, version);
printf ("-----------------------------------------------\n");
printf ("Copyright: NeoStats Group. 2000-2003\n");
printf ("Justin Hammond (fish@neostats.net)\n");
printf ("Adam Rutter (shmad@neostats.net)\n");
printf ("^Enigma^ (enigma@neostats.net)\n");
printf
("-----------------------------------------------\n\n");
printf ("-----------------------------------------------\n\n");
}
/* set some defaults before we parse the config file */
me.t_start = time (NULL);
@ -155,10 +153,8 @@ int main(int argc, char *argv[])
/* load the config files */
ConfLoad ();
if (me.die) {
printf
("\n-----> ERROR: Read the README file then edit neostats.cfg! <-----\n\n");
nlog(LOG_CRITICAL, LOG_CORE,
"Read the README file and edit your neostats.cfg");
printf ("\n-----> ERROR: Read the README file then edit neostats.cfg! <-----\n\n");
nlog (LOG_CRITICAL, LOG_CORE, "Read the README file and edit your neostats.cfg");
sleep (1);
close (servsock);
remove ("neostats.pid");
@ -187,11 +183,8 @@ int main(int argc, char *argv[])
fclose (fp);
if (!config.quiet) {
printf ("\n");
printf
("NeoStats %d.%d.%d%s Successfully Launched into Background\n",
MAJOR, MINOR, REV, version);
printf("PID: %i - Wrote to neostats.pid\n",
forked);
printf ("NeoStats %d.%d.%d%s Successfully Launched into Background\n", MAJOR, MINOR, REV, version);
printf ("PID: %i - Wrote to neostats.pid\n", forked);
}
return 0;
}
@ -202,9 +195,7 @@ int main(int argc, char *argv[])
}
}
#endif
nlog(LOG_NOTICE, LOG_CORE,
"Statistics Started (NeoStats %d.%d.%d%s).", MAJOR, MINOR,
REV, version);
nlog (LOG_NOTICE, LOG_CORE, "Statistics Started (NeoStats %d.%d.%d%s).", MAJOR, MINOR, REV, version);
/* don't init_modules till after we fork. This fixes the load->fork-exit->call _fini problems when we fork */
init_modules ();
@ -219,7 +210,8 @@ int main(int argc, char *argv[])
*
* Processes commandline options
*/
void get_options(int argc, char **argv)
void
get_options (int argc, char **argv)
{
int c;
int dbg;
@ -237,31 +229,22 @@ void get_options(int argc, char **argv)
while ((c = getopt (argc, argv, "hvrd:nqf")) != -1) {
switch (c) {
case 'h':
printf
("NeoStats: Usage: \"neostats [options]\"\n");
printf ("NeoStats: Usage: \"neostats [options]\"\n");
printf (" -h (Show this screen)\n");
printf (" -v (Show Version Number)\n");
printf (" -r (Enable Recv.log)\n");
printf
(" -d 1-10 (Enable Debuging output 1= lowest, 10 = highest)\n");
printf
(" -n (Do not load any modules on startup)\n");
printf
(" -q (Quiet Start - For Cron Scripts)\n");
printf
(" -f (Do NOt fork into BackGround\n");
printf (" -d 1-10 (Enable Debuging output 1= lowest, 10 = highest)\n");
printf (" -n (Do not load any modules on startup)\n");
printf (" -q (Quiet Start - For Cron Scripts)\n");
printf (" -f (Do NOt fork into BackGround\n");
exit (1);
case 'v':
printf("NeoStats Version %d.%d.%d%s\n", MAJOR,
MINOR, REV, version);
printf("Compiled: %s at %s\n", version_date,
version_time);
printf
("Flag after version number indicates what IRCd NeoStats is compiled for:\n");
printf ("NeoStats Version %d.%d.%d%s\n", MAJOR, MINOR, REV, version);
printf ("Compiled: %s at %s\n", version_date, version_time);
printf ("Flag after version number indicates what IRCd NeoStats is compiled for:\n");
printf ("(U) - Unreal IRCd\n");
printf ("(UL3)- Ultimate 3.x.x IRCd\n");
printf
("(UL) - Ultimate 2.x.x IRCd (Depriciated)\n");
printf ("(UL) - Ultimate 2.x.x IRCd (Depriciated)\n");
printf ("(H) - Hybrid 7.x IRCd\n");
printf ("(N) - NeoIRCd IRCd\n");
printf ("(M) - Mystic IRCd\n");
@ -310,12 +293,12 @@ void get_options(int argc, char **argv)
*
* @todo Do a nice shutdown, no thtis crap :)
*/
RETSIGTYPE serv_die()
RETSIGTYPE
serv_die ()
{
User *u;
u = finduser (s_Services);
nlog(LOG_CRITICAL, LOG_CORE,
"Sigterm Recieved, Shuting Down Server!!!!");
nlog (LOG_CRITICAL, LOG_CORE, "Sigterm Recieved, Shuting Down Server!!!!");
ns_shutdown (u, "SigTerm Recieved");
ssquit_cmd (me.name);
@ -330,7 +313,8 @@ RETSIGTYPE serv_die()
*
* @todo Implement a Rehash function. What can we actually rehash?
*/
RETSIGTYPE conf_rehash()
RETSIGTYPE
conf_rehash ()
{
/* struct sigaction act; */
chanalert (s_Services, "Recieved SIGHUP, Attempting to Rehash");
@ -362,7 +346,8 @@ RETSIGTYPE conf_rehash()
*
*/
RETSIGTYPE serv_segv()
RETSIGTYPE
serv_segv ()
{
char name[30];
#ifdef HAVE_BACKTRACE
@ -379,34 +364,20 @@ RETSIGTYPE serv_segv()
* and continue on
*/
if (strlen (segvinmodule) > 1) {
globops(me.name,
"Oh Damn, Module %s Segv'd, Unloading Module",
segvinmodule);
chanalert(s_Services,
"Oh Damn, Module %s Segv'd, Unloading Module",
segvinmodule);
nlog(LOG_CRITICAL, LOG_CORE,
"Uh Oh, Segmentation Fault in Modules Code %s",
segvinmodule);
nlog(LOG_CRITICAL, LOG_CORE, "Location could be %s",
segv_location);
nlog(LOG_CRITICAL, LOG_CORE,
"Unloading Module and restoring stacks. Doing Backtrace:");
chanalert(s_Services,
"Location *could* be %s. Doing Backtrace:",
segv_location);
globops (me.name, "Oh Damn, Module %s Segv'd, Unloading Module", segvinmodule);
chanalert (s_Services, "Oh Damn, Module %s Segv'd, Unloading Module", segvinmodule);
nlog (LOG_CRITICAL, LOG_CORE, "Uh Oh, Segmentation Fault in Modules Code %s", segvinmodule);
nlog (LOG_CRITICAL, LOG_CORE, "Location could be %s", segv_location);
nlog (LOG_CRITICAL, LOG_CORE, "Unloading Module and restoring stacks. Doing Backtrace:");
chanalert (s_Services, "Location *could* be %s. Doing Backtrace:", segv_location);
#ifdef HAVE_BACKTRACE
for (i = 1; i < size; i++) {
chanalert(s_Services, "Backtrace(%d): %s", i,
strings[i]);
nlog(LOG_CRITICAL, LOG_CORE, "BackTrace(%d): %s",
i - 1, strings[i]);
chanalert (s_Services, "Backtrace(%d): %s", i, strings[i]);
nlog (LOG_CRITICAL, LOG_CORE, "BackTrace(%d): %s", i - 1, strings[i]);
}
#else
chanalert(s_Services,
"Backtrace not available on this platform");
nlog(LOG_CRITICAL, LOG_CORE,
"Backtrace not available on this platform");
chanalert (s_Services, "Backtrace not available on this platform");
nlog (LOG_CRITICAL, LOG_CORE, "Backtrace not available on this platform");
#endif
strcpy (name, segvinmodule);
strcpy (segvinmodule, "");
@ -420,32 +391,20 @@ RETSIGTYPE serv_segv()
} else {
/** The segv happened in our core, damn it */
/* Thanks to Stskeeps and Unreal for this stuff :) */
nlog(LOG_CRITICAL, LOG_CORE,
"Uh Oh, Segmentation Fault.. Server Terminating");
nlog(LOG_CRITICAL, LOG_CORE, "Details: Buffer: %s",
recbuf);
nlog(LOG_CRITICAL, LOG_CORE,
"Approx Location: %s Backtrace:", segv_location);
nlog (LOG_CRITICAL, LOG_CORE, "Uh Oh, Segmentation Fault.. Server Terminating");
nlog (LOG_CRITICAL, LOG_CORE, "Details: Buffer: %s", recbuf);
nlog (LOG_CRITICAL, LOG_CORE, "Approx Location: %s Backtrace:", segv_location);
/* Broadcast it out! */
globops(me.name,
"Ohhh Crap, Server Terminating, Segmentation Fault. Buffer: %s, Approx Location %s",
recbuf, segv_location);
chanalert(s_Services,
"Damn IT, Server Terminating (%d%d%d%s), Segmentation Fault. Buffer: %s, Approx Location: %s Backtrace:",
MAJOR, MINOR, REV, version, recbuf,
segv_location);
globops (me.name, "Ohhh Crap, Server Terminating, Segmentation Fault. Buffer: %s, Approx Location %s", recbuf, segv_location);
chanalert (s_Services, "Damn IT, Server Terminating (%d%d%d%s), Segmentation Fault. Buffer: %s, Approx Location: %s Backtrace:", MAJOR, MINOR, REV, version, recbuf, segv_location);
#ifdef HAVE_BACKTRACE
for (i = 1; i < size; i++) {
chanalert(s_Services, "Backtrace(%d): %s", i,
strings[i]);
nlog(LOG_CRITICAL, LOG_CORE, "BackTrace(%d): %s",
i - 1, strings[i]);
chanalert (s_Services, "Backtrace(%d): %s", i, strings[i]);
nlog (LOG_CRITICAL, LOG_CORE, "BackTrace(%d): %s", i - 1, strings[i]);
}
#else
chanalert(s_Services,
"Backtrace not available on this platform");
nlog(LOG_CRITICAL, LOG_CORE,
"Backtrace not available on this platform");
chanalert (s_Services, "Backtrace not available on this platform");
nlog (LOG_CRITICAL, LOG_CORE, "Backtrace not available on this platform");
#endif
sleep (2);
kill (forked, 3);
@ -464,7 +423,8 @@ RETSIGTYPE serv_segv()
* @return Nothing
*
*/
static void setup_signals()
static void
setup_signals ()
{
struct sigaction act;
act.sa_handler = SIG_IGN;
@ -508,7 +468,8 @@ static void setup_signals()
*
* @todo make the restart code nicer so it doesn't go mad when we can't connect
*/
void start()
void
start ()
{
static int attempts = 0;
Module *mod_ptr = NULL;
@ -518,32 +479,27 @@ void start()
strcpy (segv_location, "start");
nlog(LOG_NOTICE, LOG_CORE, "Connecting to %s:%d", me.uplink,
me.port);
nlog (LOG_NOTICE, LOG_CORE, "Connecting to %s:%d", me.uplink, me.port);
if (servsock > 0)
close (servsock);
servsock = ConnectTo (me.uplink, me.port);
if (servsock <= 0) {
nlog(LOG_WARNING, LOG_CORE, "Unable to connect to %s",
me.uplink);
nlog (LOG_WARNING, LOG_CORE, "Unable to connect to %s", me.uplink);
} else {
attempts = 0;
login ();
read_loop ();
}
nlog(LOG_NOTICE, LOG_CORE,
"Reconnecting to the server in %d seconds (Attempt %i)",
me.r_time, attempts);
nlog (LOG_NOTICE, LOG_CORE, "Reconnecting to the server in %d seconds (Attempt %i)", me.r_time, attempts);
close (servsock);
/* Unload the Modules */
hash_scan_begin (&ms, mh);
while ((mn = hash_scan_next (&ms)) != NULL) {
mod_ptr = hnode_get (mn);
unload_module(mod_ptr->info->module_name,
finduser(s_Services));
unload_module (mod_ptr->info->module_name, finduser (s_Services));
}
sleep (5);
do_exit (2);
@ -557,7 +513,8 @@ void start()
*
*/
void login()
void
login ()
{
strcpy (segv_location, "login");
slogin_cmd (me.name, 1, me.infoline, me.pass);
@ -576,14 +533,14 @@ void login()
* @todo move this to a util type file, as it being in main is crazy
*/
void *smalloc(long size)
void *
smalloc (long size)
{
void *buf;
strcpy (segv_location, "smalloc");
if (!size) {
nlog(LOG_WARNING, LOG_CORE,
"smalloc(): illegal attempt to allocate 0 bytes!");
nlog (LOG_WARNING, LOG_CORE, "smalloc(): illegal attempt to allocate 0 bytes!");
size = 1;
}
buf = malloc (size);
@ -606,7 +563,8 @@ void *smalloc(long size)
*
*/
char *sstrdup(const char *s)
char *
sstrdup (const char *s)
{
char *t = strdup (s);
if (!t) {
@ -630,7 +588,8 @@ char *sstrdup(const char *s)
*
*/
unsigned long HASH(const unsigned char *name, int size_of_table)
unsigned long
HASH (const unsigned char *name, int size_of_table)
{
unsigned long h = 0, g;
@ -653,7 +612,8 @@ unsigned long HASH(const unsigned char *name, int size_of_table)
*
*/
char *strlower(char *s)
char *
strlower (char *s)
{
char *t;
t = malloc (strlen (s));
@ -676,7 +636,8 @@ char *strlower(char *s)
*
*/
void AddStringToList(char ***List, char S[], int *C)
void
AddStringToList (char ***List, char S[], int *C)
{
if (*C == 0) {
*List = calloc (sizeof (char *) * 8, 1);
@ -695,7 +656,8 @@ void AddStringToList(char ***List, char S[], int *C)
* @returns Nothing
*
*/
void FreeList(char **List, int C)
void
FreeList (char **List, int C)
{
int i;
for (i = 0; i == C; i++)
@ -709,20 +671,18 @@ void FreeList(char **List, int C)
* @parm segv 1 = we are exiting because of a segv fault, 0, we are not.
* if 1, we don't prompt to save data
*/
void do_exit(int segv)
void
do_exit (int segv)
{
switch (segv) {
case 0:
nlog(LOG_CRITICAL, LOG_CORE,
"Normal shut down SubSystems");
nlog (LOG_CRITICAL, LOG_CORE, "Normal shut down SubSystems");
break;
case 2:
nlog(LOG_CRITICAL, LOG_CORE,
"Restarting NeoStats SubSystems");
nlog (LOG_CRITICAL, LOG_CORE, "Restarting NeoStats SubSystems");
break;
case 1:
nlog(LOG_CRITICAL, LOG_CORE,
"Shutting Down SubSystems without saving data due to core");
nlog (LOG_CRITICAL, LOG_CORE, "Shutting Down SubSystems without saving data due to core");
break;
}
close_logs ();

386
mystic.c
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: mystic.c,v 1.7 2003/07/11 14:06:45 fishwaldo Exp $
** $Id: mystic.c,v 1.8 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -253,48 +253,52 @@ Oper_Modes usr_mds[] = {
{0, 0, 0}
};
void init_ircd()
void
init_ircd ()
{
/* count the number of commands */
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
};
int sserver_cmd(const char *name, const int numeric, const char *infoline)
int
sserver_cmd (const char *name, const int numeric, const char *infoline)
{
sts(":%s %s %s %d :%s", me.name,
(me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
sts (":%s %s %s %d :%s", me.name, (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
return 1;
}
int slogin_cmd(const char *name, const int numeric, const char *infoline,
const char *pass)
int
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
{
sts ("%s %s", (me.token ? TOK_PASS : MSG_PASS), pass);
sts("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name,
numeric, infoline);
sts ("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
return 1;
}
int ssquit_cmd(const char *server)
int
ssquit_cmd (const char *server)
{
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
return 1;
}
int sprotocol_cmd(const char *option)
int
sprotocol_cmd (const char *option)
{
sts ("%s %s", (me.token ? TOK_PROTOCTL : MSG_PROTOCTL), option);
return 1;
}
int squit_cmd(const char *who, const char *quitmsg)
int
squit_cmd (const char *who, const char *quitmsg)
{
sts (":%s %s :%s", who, (me.token ? TOK_QUIT : MSG_QUIT), quitmsg);
DelUser (who);
return 1;
}
int spart_cmd(const char *who, const char *chan)
int
spart_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, (me.token ? TOK_PART : MSG_PART), chan);
part_chan (finduser (who), (char *) chan);
@ -302,23 +306,22 @@ int spart_cmd(const char *who, const char *chan)
}
int sjoin_cmd(const char *who, const char *chan)
int
sjoin_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, (me.token ? TOK_JOIN : MSG_JOIN), chan);
join_chan (finduser (who), (char *) chan);
return 1;
}
int schmode_cmd(const char *who, const char *chan, const char *mode,
const char *args)
int
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
{
char **av;
int ac;
char tmp[512];
sts(":%s %s %s %s %s %lu", me.name,
(me.token ? TOK_MODE : MSG_MODE), chan, mode, args,
time(NULL));
sts (":%s %s %s %s %s %lu", me.name, (me.token ? TOK_MODE : MSG_MODE), chan, mode, args, time (NULL));
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
ac = split_buf (tmp, &av, 0);
ChanMode ("", av, ac);
@ -326,23 +329,23 @@ int schmode_cmd(const char *who, const char *chan, const char *mode,
return 1;
}
int snewnick_cmd(const char *nick, const char *ident, const char *host,
const char *realname)
int
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname)
{
sts("%s %s 1 %lu %s %s %s 0 :%s", (me.token ? TOK_NICK : MSG_NICK),
nick, time(NULL), ident, host, me.name, realname);
sts ("%s %s 1 %lu %s %s %s 0 :%s", (me.token ? TOK_NICK : MSG_NICK), nick, time (NULL), ident, host, me.name, realname);
AddUser (nick, ident, host, me.name, 0, time (NULL));
return 1;
}
int sping_cmd(const char *from, const char *reply, const char *to)
int
sping_cmd (const char *from, const char *reply, const char *to)
{
sts(":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply,
to);
sts (":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply, to);
return 1;
}
int sumode_cmd(const char *who, const char *target, long mode)
int
sumode_cmd (const char *who, const char *target, long mode)
{
int i, j;
char newmode[20];
@ -356,14 +359,13 @@ int sumode_cmd(const char *who, const char *target, long mode)
}
newmode[j] = '\0';
sts(":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target,
newmode);
sts (":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target, newmode);
UserMode (target, newmode, 0);
return 1;
}
int snumeric_cmd(const int numeric, const char *target, const char *data,
...)
int
snumeric_cmd (const int numeric, const char *target, const char *data, ...)
{
va_list ap;
char buf[512];
@ -374,128 +376,124 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
return 1;
}
int spong_cmd(const char *reply)
int
spong_cmd (const char *reply)
{
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
return 1;
}
int snetinfo_cmd()
int
snetinfo_cmd ()
{
sts(":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO,
time(NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
sts (":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO, time (NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
return 1;
}
int vctrl_cmd()
int
vctrl_cmd ()
{
sts("%s %d %d %d %d 0 0 0 0 0 0 0 0 0 0 :%s", MSG_VCTRL,
ircd_srv.uprot, ircd_srv.nicklg, ircd_srv.modex, ircd_srv.gc,
me.netname);
sts ("%s %d %d %d %d 0 0 0 0 0 0 0 0 0 0 :%s", MSG_VCTRL, ircd_srv.uprot, ircd_srv.nicklg, ircd_srv.modex, ircd_srv.gc, me.netname);
return 1;
}
int skill_cmd(const char *from, const char *target, const char *reason,
...)
int
skill_cmd (const char *from, const char *target, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL),
target, buf);
sts (":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL), target, buf);
va_end (ap);
DelUser (target);
return 1;
}
int ssvskill_cmd(const char *who, const char *reason, ...)
int
ssvskill_cmd (const char *who, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", me.name, MSG_SVSKILL,
who, buf);
sts (":%s %s %s :%s", me.name, MSG_SVSKILL, who, buf);
va_end (ap);
return 1;
}
int ssmo_cmd(const char *from, const char *umodetarget, const char *msg)
int
ssmo_cmd (const char *from, const char *umodetarget, const char *msg)
{
notice(s_Services,
"Warning, Module %s tried to SMO, which is not supported in Mystic",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Module %s tried to SMO, which is not supported in Mystic",
segvinmodule);
notice (s_Services, "Warning, Module %s tried to SMO, which is not supported in Mystic", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Mystic", segvinmodule);
return 1;
}
int snick_cmd(const char *oldnick, const char *newnick)
int
snick_cmd (const char *oldnick, const char *newnick)
{
Change_User (finduser (oldnick), newnick);
sts(":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK),
newnick, time(NULL));
return 1;
}
int sswhois_cmd(const char *target, const char *swhois)
{
notice(s_Services,
"Warning Module %s tried to SWHOIS, which is not supported in Mystic",
segvinmodule);
nlog(LOG_NOTICE, LOG_CORE,
"Warning. Module %s tried to SWHOIS, which is not supported in Mystic",
segvinmodule);
return 1;
}
int ssvsnick_cmd(const char *target, const char *newnick)
{
sts("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target,
newnick, time(NULL));
sts (":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK), newnick, time (NULL));
return 1;
}
int ssvsjoin_cmd(const char *target, const char *chan)
int
sswhois_cmd (const char *target, const char *swhois)
{
sts("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target,
chan);
notice (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Mystic", segvinmodule);
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Mystic", segvinmodule);
return 1;
}
int ssvspart_cmd(const char *target, const char *chan)
int
ssvsnick_cmd (const char *target, const char *newnick)
{
sts("%s %s %s", (me.token ? TOK_SVSPART : MSG_SVSPART), target,
chan);
sts ("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target, newnick, time (NULL));
return 1;
}
int skick_cmd(const char *who, const char *target, const char *chan,
const char *reason)
int
ssvsjoin_cmd (const char *target, const char *chan)
{
sts(":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK),
chan, target, (reason ? reason : "No Reason Given"));
sts ("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target, chan);
return 1;
}
int
ssvspart_cmd (const char *target, const char *chan)
{
sts ("%s %s %s", (me.token ? TOK_SVSPART : MSG_SVSPART), target, chan);
return 1;
}
int
skick_cmd (const char *who, const char *target, const char *chan, const char *reason)
{
sts (":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK), chan, target, (reason ? reason : "No Reason Given"));
part_chan (finduser (target), (char *) chan);
return 1;
}
int swallops_cmd(const char *who, const char *msg, ...)
int
swallops_cmd (const char *who, const char *msg, ...)
{
va_list ap;
char buf[512];
va_start (ap, msg);
vsnprintf (buf, 512, msg, ap);
sts(":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS),
buf);
sts (":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS), buf);
va_end (ap);
return 1;
}
int ssvshost_cmd(const char *who, const char *vhost)
int
ssvshost_cmd (const char *who, const char *vhost)
{
User *u;
u = finduser (who);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Can't Find user %s for ssvshost_cmd", who);
nlog (LOG_WARNING, LOG_CORE, "Can't Find user %s for ssvshost_cmd", who);
return 0;
} else {
strncpy (u->vhost, vhost, MAXHOST);
@ -503,8 +501,8 @@ int ssvshost_cmd(const char *who, const char *vhost)
return 1;
}
}
int sakill_cmd(const char *host, const char *ident, const char *setby,
const int length, const char *reason, ...)
int
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
{
va_list ap;
char buf[512];
@ -515,7 +513,8 @@ int sakill_cmd(const char *host, const char *ident, const char *setby,
return 1;
}
int srakill_cmd(const char *host, const char *ident)
int
srakill_cmd (const char *host, const char *ident)
{
/* ultimate2 needs a oper to remove */
sts (":%s %s :%s@%s", s_Services, MSG_REMGLINE, host, ident);
@ -524,12 +523,15 @@ int srakill_cmd(const char *host, const char *ident)
}
int ssvinfo_cmd()
int
ssvinfo_cmd ()
{
sts ("SVINFO 5 3 0 :%d", time (NULL));
return 1;
}
int sburst_cmd(int b)
int
sburst_cmd (int b)
{
if (b == 0) {
sts ("BURST 0");
@ -541,7 +543,8 @@ int sburst_cmd(int b)
void chanalert(char *who, char *buf, ...)
void
chanalert (char *who, char *buf, ...)
{
va_list ap;
char tmp[512];
@ -550,14 +553,15 @@ void chanalert(char *who, char *buf, ...)
vsnprintf (tmp, 512, buf, ap);
if (me.onchan) {
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
tmp);
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
sts ("%s", out);
}
va_end (ap);
}
void prefmsg(char *to, const char *from, char *fmt, ...)
void
prefmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -565,9 +569,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
va_start (ap, fmt);
vsnprintf (buf2, sizeof (buf2), fmt, ap);
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
if (me.want_privmsg) {
@ -578,15 +580,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
sts ("%s", buf);
va_end (ap);
}
void privmsg(char *to, const char *from, char *fmt, ...)
void
privmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -597,15 +599,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
va_end (ap);
}
void notice(char *to, const char *from, char *fmt, ...)
void
notice (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -617,7 +618,8 @@ void notice(char *to, const char *from, char *fmt, ...)
}
void privmsg_list(char *to, char *from, const char **text)
void
privmsg_list (char *to, char *from, const char **text)
{
while (*text) {
if (**text)
@ -629,7 +631,8 @@ void privmsg_list(char *to, char *from, const char **text)
}
void globops(char *from, char *fmt, ...)
void
globops (char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -646,7 +649,8 @@ void globops(char *from, char *fmt, ...)
}
void Srv_Sjoin(char *origin, char **argv, int argc)
void
Srv_Sjoin (char *origin, char **argv, int argc)
{
char nick[MAXNICK];
long mode = 0;
@ -673,22 +677,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
goto nomodes;
}
while (*modes) {
for (i = 0;
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (*modes == cFlagTab[i].flag) {
if (cFlagTab[i].parameters) {
m = smalloc (sizeof (ModesParm));
m->mode = cFlagTab[i].mode;
strncpy(m->param, argv[j],
PARAMSIZE);
strncpy (m->param, argv[j], PARAMSIZE);
mn = lnode_create (m);
if (!list_isfull (tl)) {
list_append (tl, mn);
} else {
nlog(LOG_CRITICAL,
LOG_CORE,
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
j++;
@ -704,10 +703,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
modes = argv[j];
mode = 0;
while (ok == 1) {
for (i = 0;
i <
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (cFlagTab[i].sjoin != 0) {
if (*modes == cFlagTab[i].sjoin) {
mode |= cFlagTab[i].mode;
@ -720,8 +716,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
break;
}
join_chan (finduser (nick), argv[1]);
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
mode);
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
j++;
ok = 1;
}
@ -732,15 +727,15 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
list_transfer (c->modeparms, tl, list_first (tl));
} else {
/* eeeeeeek, list is full! */
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
}
list_destroy (tl);
}
void Srv_Burst(char *origin, char **argv, int argc)
void
Srv_Burst (char *origin, char **argv, int argc)
{
if (argc > 0) {
if (ircd_srv.burst == 1) {
@ -754,7 +749,8 @@ void Srv_Burst(char *origin, char **argv, int argc)
}
}
void Srv_Connect(char *origin, char **argv, int argc)
void
Srv_Connect (char *origin, char **argv, int argc)
{
int i;
@ -766,49 +762,62 @@ void Srv_Connect(char *origin, char **argv, int argc)
}
void Usr_Stats(char *origin, char **argv, int argc)
void
Usr_Stats (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Recieved a Message from a Unknown User! (%s)",
origin);
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
return;
}
ShowStats (argv[0], u);
}
void Usr_Version(char *origin, char **argv, int argc)
void
Usr_Version (char *origin, char **argv, int argc)
{
snumeric_cmd(351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR,
REV, version, me.name, version_date, version_time);
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
}
void Usr_ShowMOTD(char *origin, char **argv, int argc)
void
Usr_ShowMOTD (char *origin, char **argv, int argc)
{
ShowMOTD (origin);
}
void Usr_ShowADMIN(char *origin, char **argv, int argc)
void
Usr_ShowADMIN (char *origin, char **argv, int argc)
{
ShowADMIN (origin);
}
void Usr_Showcredits(char *origin, char **argv, int argc)
void
Usr_Showcredits (char *origin, char **argv, int argc)
{
Showcredits (origin);
}
void Usr_AddServer(char *origin, char **argv, int argc)
void
Usr_AddServer (char *origin, char **argv, int argc)
{
AddServer (argv[0], origin, atoi (argv[1]));
}
void Usr_DelServer(char *origin, char **argv, int argc)
void
Usr_DelServer (char *origin, char **argv, int argc)
{
DelServer (argv[0]);
}
void Usr_DelUser(char *origin, char **argv, int argc)
void
Usr_DelUser (char *origin, char **argv, int argc)
{
DelUser (origin);
}
void Usr_Smode(char *origin, char **argv, int argc)
void
Usr_Smode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
/* its user svsmode change */
@ -818,7 +827,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Mode(char *origin, char **argv, int argc)
void
Usr_Mode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[0]);
@ -827,18 +837,19 @@ void Usr_Mode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Kill(char *origin, char **argv, int argc)
void
Usr_Kill (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
KillUser (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
}
}
void Usr_Vhost(char *origin, char **argv, int argc)
void
Usr_Vhost (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
@ -846,18 +857,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
strncpy (u->vhost, argv[0], MAXHOST);
}
}
void Usr_Pong(char *origin, char **argv, int argc)
void
Usr_Pong (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
dopong (s);
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Received PONG from unknown server: %s", argv[0]);
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
}
}
void Usr_Away(char *origin, char **argv, int argc)
void
Usr_Away (char *origin, char **argv, int argc)
{
char *Buf;
User *u = finduser (origin);
@ -872,18 +884,19 @@ void Usr_Away(char *origin, char **argv, int argc)
free (Buf);
}
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Unable to find User %s for Away", origin);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
}
}
void Usr_Nick(char *origin, char **argv, int argc)
void
Usr_Nick (char *origin, char **argv, int argc)
{
User *u = finduser (origin);
if (u) {
Change_User (u, argv[0]);
}
}
void Usr_Topic(char *origin, char **argv, int argc)
void
Usr_Topic (char *origin, char **argv, int argc)
{
char *buf;
Chans *c;
@ -893,13 +906,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
Change_Topic (argv[1], c, atoi (argv[2]), buf);
free (buf);
} else {
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
}
}
void Usr_Kick(char *origin, char **argv, int argc)
void
Usr_Kick (char *origin, char **argv, int argc)
{
User *u, *k;
u = finduser (argv[1]);
@ -907,12 +920,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
if ((u) && (k)) {
kick_chan (u, argv[0], k);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for kick %s", argv[1],
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
}
}
void Usr_Join(char *origin, char **argv, int argc)
void
Usr_Join (char *origin, char **argv, int argc)
{
char *s, *t;
t = argv[0];
@ -923,16 +935,20 @@ void Usr_Join(char *origin, char **argv, int argc)
join_chan (finduser (origin), s);
}
}
void Usr_Part(char *origin, char **argv, int argc)
void
Usr_Part (char *origin, char **argv, int argc)
{
part_chan (finduser (origin), argv[0]);
}
void Srv_Ping(char *origin, char **argv, int argc)
void
Srv_Ping (char *origin, char **argv, int argc)
{
spong_cmd (argv[0]);
}
void Srv_Vctrl(char *origin, char **argv, int argc)
void
Srv_Vctrl (char *origin, char **argv, int argc)
{
ircd_srv.uprot = atoi (argv[0]);
ircd_srv.nicklg = atoi (argv[1]);
@ -942,12 +958,14 @@ void Srv_Vctrl(char *origin, char **argv, int argc)
vctrl_cmd ();
}
void Srv_Svinfo(char *origin, char **argv, int argc)
void
Srv_Svinfo (char *origin, char **argv, int argc)
{
ssvinfo_cmd ();
}
void Srv_Netinfo(char *origin, char **argv, int argc)
void
Srv_Netinfo (char *origin, char **argv, int argc)
{
me.onchan = 1;
ircd_srv.uprot = atoi (argv[2]);
@ -967,10 +985,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
me.synced = 1;
}
void Srv_Pass(char *origin, char **argv, int argc)
void
Srv_Pass (char *origin, char **argv, int argc)
{
}
void Srv_Server(char *origin, char **argv, int argc)
void
Srv_Server (char *origin, char **argv, int argc)
{
Server *s;
if (*origin == 0) {
@ -981,27 +1001,28 @@ void Srv_Server(char *origin, char **argv, int argc)
s = findserver (argv[0]);
me.s = s;
}
void Srv_Squit(char *origin, char **argv, int argc)
void
Srv_Squit (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
DelServer (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Waring, Squit from Unknown Server %s", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
}
}
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
void Srv_Nick(char *origin, char **argv, int argc)
void
Srv_Nick (char *origin, char **argv, int argc)
{
char *realname;
#if MYSTIC
AddUser(argv[0], argv[3], argv[4], argv[5], 0,
strtoul(argv[2], NULL, 10));
AddUser (argv[0], argv[3], argv[4], argv[5], 0, strtoul (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 7);
AddRealName (argv[0], realname);
free (realname);
@ -1009,26 +1030,27 @@ void Srv_Nick(char *origin, char **argv, int argc)
}
void Srv_Svsnick(char *origin, char **argv, int argc)
void
Srv_Svsnick (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
Change_User (u, argv[1]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for SVSNICK", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for SVSNICK", argv[0]);
}
}
void Srv_Kill(char *origin, char **argv, int argc)
void
Srv_Kill (char *origin, char **argv, int argc)
{
}
int SignOn_NewBot(const char *nick, const char *ident,
const char *host, const char *rname, long Umode)
int
SignOn_NewBot (const char *nick, const char *ident, const char *host, const char *rname, long Umode)
{
snewnick_cmd (nick, ident, host, rname);
sumode_cmd (nick, nick, Umode);

View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: mystic.h,v 1.4 2003/07/23 10:35:47 fishwaldo Exp $
** $Id: mystic.h,v 1.5 2003/07/30 13:58:22 fishwaldo Exp $
*/
#ifndef MYSTIC_H
#define MYSTIC_H

339
neoircd.c
View file

@ -18,7 +18,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: neoircd.c,v 1.22 2003/07/15 09:16:15 fishwaldo Exp $
** $Id: neoircd.c,v 1.23 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -178,28 +178,31 @@ Oper_Modes usr_mds[] = {
{0, 0, 0}
};
void init_ircd()
void
init_ircd ()
{
/* count the number of commands */
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
}
int seob_cmd(const char *server)
int
seob_cmd (const char *server)
{
sts (":%s %s", server, MSG_EOB);
return 1;
}
int sserver_cmd(const char *name, const int numeric, const char *infoline)
int
sserver_cmd (const char *name, const int numeric, const char *infoline)
{
sts (":%s %s %s 2 0 :%s", me.name, MSG_SERVER, name, infoline);
return 1;
}
int slogin_cmd(const char *name, const int numeric, const char *infoline,
const char *pass)
int
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
{
sts ("%s %s :TS", MSG_PASS, pass);
sts ("CAPAB :TS EOB HUB PARA");
@ -207,56 +210,60 @@ int slogin_cmd(const char *name, const int numeric, const char *infoline,
return 1;
}
int ssquit_cmd(const char *server)
int
ssquit_cmd (const char *server)
{
sts ("%s %s", MSG_SQUIT, server);
return 1;
}
int sprotocol_cmd(const char *option)
int
sprotocol_cmd (const char *option)
{
return 1;
}
int squit_cmd(const char *who, const char *quitmsg)
int
squit_cmd (const char *who, const char *quitmsg)
{
sts (":%s %s :%s", who, MSG_QUIT, quitmsg);
DelUser (who);
return 1;
}
int spart_cmd(const char *who, const char *chan)
int
spart_cmd (const char *who, const char *chan)
{
sts (":%s %s %s", who, MSG_PART, chan);
part_chan (finduser (who), (char *) chan);
return 1;
}
int sjoin_cmd(const char *who, const char *chan)
int
sjoin_cmd (const char *who, const char *chan)
{
sts(":%s %s %d %s + :%s", me.name, MSG_SJOIN, time(NULL), chan,
who);
sts (":%s %s %d %s + :%s", me.name, MSG_SJOIN, time (NULL), chan, who);
join_chan (finduser (who), (char *) chan);
return 1;
}
int schmode_cmd(const char *who, const char *chan, const char *mode,
const char *args)
int
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
{
char **av;
int ac;
char tmp[512];
sts(":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args,
time(NULL));
sts (":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args, time (NULL));
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
ac = split_buf (tmp, &av, 0);
ChanMode ("", av, ac);
free (av);
return 1;
}
int snewnick_cmd(const char *nick, const char *ident, const char *host,
const char *realname, long mode)
int
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname, long mode)
{
int i, j;
char newmode[20];
@ -270,20 +277,21 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
}
newmode[j] = '\0';
sts("%s %s 1 %lu %s %s %s * %s 0 :%s", MSG_NICK, nick, time(NULL),
newmode, ident, host, me.name, realname);
sts ("%s %s 1 %lu %s %s %s * %s 0 :%s", MSG_NICK, nick, time (NULL), newmode, ident, host, me.name, realname);
AddUser (nick, ident, host, me.name, 0, time (NULL));
UserMode (nick, newmode, 0);
return 1;
}
int sping_cmd(const char *from, const char *reply, const char *to)
int
sping_cmd (const char *from, const char *reply, const char *to)
{
sts (":%s %s %s :%s", from, MSG_PING, reply, to);
return 1;
}
int sumode_cmd(const char *who, const char *target, long mode)
int
sumode_cmd (const char *who, const char *target, long mode)
{
int i, j;
char newmode[20];
@ -302,8 +310,8 @@ int sumode_cmd(const char *who, const char *target, long mode)
return 1;
}
int snumeric_cmd(const int numeric, const char *target, const char *data,
...)
int
snumeric_cmd (const int numeric, const char *target, const char *data, ...)
{
va_list ap;
char buf[512];
@ -314,15 +322,16 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
return 1;
}
int spong_cmd(const char *reply)
int
spong_cmd (const char *reply)
{
sts ("%s %s", MSG_PONG, reply);
return 1;
}
int skill_cmd(const char *from, const char *target, const char *reason,
...)
int
skill_cmd (const char *from, const char *target, const char *reason, ...)
{
va_list ap;
char buf[512];
@ -334,14 +343,14 @@ int skill_cmd(const char *from, const char *target, const char *reason,
return 1;
}
int ssvskill_cmd(const char *who, const char *reason, ...)
int
ssvskill_cmd (const char *who, const char *reason, ...)
{
va_list ap;
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s %s %s :%s", me.name, MSG_KILL,
who, buf);
sts (":%s %s %s :%s", me.name, MSG_KILL, who, buf);
va_end (ap);
/* neoircd doesn't have svskill, so this is handled just like a normal kill */
DelUser (who);
@ -349,56 +358,60 @@ int ssvskill_cmd(const char *who, const char *reason, ...)
}
int ssmo_cmd(const char *from, const char *umodetarget, const char *msg)
int
ssmo_cmd (const char *from, const char *umodetarget, const char *msg)
{
notice(s_Services,
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
segvinmodule);
nlog(LOG_NORMAL, LOG_CORE,
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
segvinmodule);
notice (s_Services, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
nlog (LOG_NORMAL, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
return 1;
}
int snick_cmd(const char *oldnick, const char *newnick)
int
snick_cmd (const char *oldnick, const char *newnick)
{
Change_User (finduser (oldnick), newnick);
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
return 1;
}
int sswhois_cmd(const char *target, const char *swhois)
int
sswhois_cmd (const char *target, const char *swhois)
{
sts (":%s SWHOIS %s :%s", me.name, target, swhois);
return 1;
}
int ssvsnick_cmd(const char *target, const char *newnick)
int
ssvsnick_cmd (const char *target, const char *newnick)
{
sts(":%s SVSNICK %s %s :%lu", me.name, target, newnick,
time(NULL));
sts (":%s SVSNICK %s %s :%lu", me.name, target, newnick, time (NULL));
return 1;
}
int ssvsjoin_cmd(const char *target, const char *chan)
int
ssvsjoin_cmd (const char *target, const char *chan)
{
sts (":%s SVSJOIN %s %s", me.name, target, chan);
return 1;
}
int ssvspart_cmd(const char *target, const char *chan)
int
ssvspart_cmd (const char *target, const char *chan)
{
sts (":%s SVSPART %s %s", me.name, target, chan);
return 1;
}
int skick_cmd(const char *who, const char *target, const char *chan,
const char *reason)
int
skick_cmd (const char *who, const char *target, const char *chan, const char *reason)
{
sts(":%s %s %s %s :%s", who, MSG_KICK, chan, target,
(reason ? reason : "No Reason Given"));
sts (":%s %s %s %s :%s", who, MSG_KICK, chan, target, (reason ? reason : "No Reason Given"));
part_chan (finduser (target), (char *) chan);
return 1;
}
int swallops_cmd(const char *who, const char *msg, ...)
int
swallops_cmd (const char *who, const char *msg, ...)
{
va_list ap;
char buf[512];
@ -409,7 +422,8 @@ int swallops_cmd(const char *who, const char *msg, ...)
return 1;
}
int ssvshost_cmd(const char *who, const char *vhost)
int
ssvshost_cmd (const char *who, const char *vhost)
{
User *u;
u = finduser (who);
@ -418,19 +432,21 @@ int ssvshost_cmd(const char *who, const char *vhost)
sts (":%s SVSHOST %s :%s", me.name, who, vhost);
return 1;
} else {
nlog(LOG_WARNING, LOG_CORE,
"Can't Find user %s for ssvshost_cmd", who);
nlog (LOG_WARNING, LOG_CORE, "Can't Find user %s for ssvshost_cmd", who);
return 0;
}
return 0;
}
int ssvinfo_cmd()
int
ssvinfo_cmd ()
{
sts ("SVINFO 5 3 0 :%d", time (NULL));
return 1;
}
int sburst_cmd(int b)
int
sburst_cmd (int b)
{
if (b == 0) {
sts ("BURST 0");
@ -440,8 +456,8 @@ int sburst_cmd(int b)
return 1;
}
int sakill_cmd(const char *host, const char *ident, const char *setby,
const int length, const char *reason, ...)
int
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
{
/* there isn't a akill on Hybrid, so we send a kline to all servers! */
#if 0
@ -454,20 +470,21 @@ int sakill_cmd(const char *host, const char *ident, const char *setby,
char buf[512];
va_start (ap, reason);
vsnprintf (buf, 512, reason, ap);
sts(":%s GLINE %s %s %d :%s", me.name, ident, host,
time(NULL) + length, buf);
sts (":%s GLINE %s %s %d :%s", me.name, ident, host, time (NULL) + length, buf);
va_end (ap);
return 1;
}
int srakill_cmd(const char *host, const char *ident)
int
srakill_cmd (const char *host, const char *ident)
{
sts (":%s UNGLINE %s@%s", me.name, ident, host);
return 1;
}
void chanalert(char *who, char *buf, ...)
void
chanalert (char *who, char *buf, ...)
{
va_list ap;
char tmp[512];
@ -476,14 +493,15 @@ void chanalert(char *who, char *buf, ...)
vsnprintf (tmp, 512, buf, ap);
if (me.onchan) {
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
tmp);
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
sts ("%s", out);
}
va_end (ap);
}
void prefmsg(char *to, const char *from, char *fmt, ...)
void
prefmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -491,9 +509,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
va_start (ap, fmt);
vsnprintf (buf2, sizeof (buf2), fmt, ap);
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
if (me.want_privmsg) {
@ -504,15 +520,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
sts ("%s", buf);
va_end (ap);
}
void privmsg(char *to, const char *from, char *fmt, ...)
void
privmsg (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -523,15 +539,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
va_end (ap);
}
void notice(char *to, const char *from, char *fmt, ...)
void
notice (char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
if (findbot (to)) {
chanalert(s_Services,
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
from, to);
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
return;
}
@ -543,7 +558,8 @@ void notice(char *to, const char *from, char *fmt, ...)
}
void privmsg_list(char *to, char *from, const char **text)
void
privmsg_list (char *to, char *from, const char **text)
{
while (*text) {
if (**text)
@ -555,7 +571,8 @@ void privmsg_list(char *to, char *from, const char **text)
}
void globops(char *from, char *fmt, ...)
void
globops (char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
@ -580,7 +597,8 @@ void globops(char *from, char *fmt, ...)
/* XXXX sjoin sucks man Should do as much of this in a chans.c function*/
void Srv_Sjoin(char *origin, char **argv, int argc)
void
Srv_Sjoin (char *origin, char **argv, int argc)
{
char nick[MAXNICK];
long mode = 0;
@ -607,22 +625,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
goto nomodes;
}
while (*modes) {
for (i = 0;
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (*modes == cFlagTab[i].flag) {
if (cFlagTab[i].parameters) {
m = smalloc (sizeof (ModesParm));
m->mode = cFlagTab[i].mode;
strncpy(m->param, argv[j],
PARAMSIZE);
strncpy (m->param, argv[j], PARAMSIZE);
mn = lnode_create (m);
if (!list_isfull (tl)) {
list_append (tl, mn);
} else {
nlog(LOG_CRITICAL,
LOG_CORE,
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
j++;
@ -638,10 +651,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
modes = argv[j];
mode = 0;
while (ok == 1) {
for (i = 0;
i <
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
1); i++) {
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
if (cFlagTab[i].sjoin != 0) {
if (*modes == cFlagTab[i].sjoin) {
mode |= cFlagTab[i].mode;
@ -654,8 +664,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
break;
}
join_chan (finduser (nick), argv[1]);
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
mode);
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
j++;
ok = 1;
}
@ -666,8 +675,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
list_transfer (c->modeparms, tl, list_first (tl));
} else {
/* eeeeeeek, list is full! */
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
do_exit (0);
}
}
@ -675,7 +683,8 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
}
void Srv_Burst(char *origin, char **argv, int argc)
void
Srv_Burst (char *origin, char **argv, int argc)
{
if (argc > 0) {
if (ircd_srv.burst == 1) {
@ -692,7 +701,8 @@ void Srv_Burst(char *origin, char **argv, int argc)
}
void Srv_Connect(char *origin, char **argv, int argc)
void
Srv_Connect (char *origin, char **argv, int argc)
{
int i;
for (i = 0; i < argc; i++) {
@ -703,48 +713,62 @@ void Srv_Connect(char *origin, char **argv, int argc)
}
void Usr_Stats(char *origin, char **argv, int argc)
void
Usr_Stats (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Recieved a Message from a Unknown User!");
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User!");
return;
}
ShowStats (argv[0], u);
}
void Usr_Version(char *origin, char **argv, int argc)
void
Usr_Version (char *origin, char **argv, int argc)
{
snumeric_cmd(351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR,
REV, version, me.name, version_date, version_time);
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
}
void Usr_ShowMOTD(char *origin, char **argv, int argc)
void
Usr_ShowMOTD (char *origin, char **argv, int argc)
{
ShowMOTD (origin);
}
void Usr_ShowADMIN(char *origin, char **argv, int argc)
void
Usr_ShowADMIN (char *origin, char **argv, int argc)
{
ShowADMIN (origin);
}
void Usr_Showcredits(char *origin, char **argv, int argc)
void
Usr_Showcredits (char *origin, char **argv, int argc)
{
Showcredits (origin);
}
void Usr_AddServer(char *origin, char **argv, int argc)
void
Usr_AddServer (char *origin, char **argv, int argc)
{
AddServer (argv[0], origin, atoi (argv[1]));
}
void Usr_DelServer(char *origin, char **argv, int argc)
void
Usr_DelServer (char *origin, char **argv, int argc)
{
DelServer (argv[0]);
}
void Usr_DelUser(char *origin, char **argv, int argc)
void
Usr_DelUser (char *origin, char **argv, int argc)
{
DelUser (origin);
}
void Usr_Smode(char *origin, char **argv, int argc)
void
Usr_Smode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
/* its user svsmode change */
@ -754,7 +778,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Mode(char *origin, char **argv, int argc)
void
Usr_Mode (char *origin, char **argv, int argc)
{
if (!strchr (argv[0], '#')) {
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[0]);
@ -763,18 +788,19 @@ void Usr_Mode(char *origin, char **argv, int argc)
ChanMode (origin, argv, argc);
}
}
void Usr_Kill(char *origin, char **argv, int argc)
void
Usr_Kill (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
KillUser (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
}
}
void Usr_Vhost(char *origin, char **argv, int argc)
void
Usr_Vhost (char *origin, char **argv, int argc)
{
User *u;
u = finduser (origin);
@ -782,18 +808,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
strncpy (u->vhost, argv[0], MAXHOST);
}
}
void Usr_Pong(char *origin, char **argv, int argc)
void
Usr_Pong (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
dopong (s);
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Recieved PONG from unknown Server %s", argv[0]);
nlog (LOG_NOTICE, LOG_CORE, "Recieved PONG from unknown Server %s", argv[0]);
}
}
void Usr_Away(char *origin, char **argv, int argc)
void
Usr_Away (char *origin, char **argv, int argc)
{
char *buf;
User *u;
@ -809,18 +836,19 @@ void Usr_Away(char *origin, char **argv, int argc)
free (buf);
}
} else {
nlog(LOG_NOTICE, LOG_CORE,
"Warning, Unable to find User %s for Away", origin);
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
}
}
void Usr_Nick(char *origin, char **argv, int argc)
void
Usr_Nick (char *origin, char **argv, int argc)
{
User *u = finduser (origin);
if (u) {
Change_User (u, argv[0]);
}
}
void Usr_Topic(char *origin, char **argv, int argc)
void
Usr_Topic (char *origin, char **argv, int argc)
{
char *buf;
Chans *c;
@ -830,13 +858,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
Change_Topic (argv[1], c, atoi (argv[2]), buf);
free (buf);
} else {
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
}
}
void Usr_Kick(char *origin, char **argv, int argc)
void
Usr_Kick (char *origin, char **argv, int argc)
{
User *u, *k;
u = finduser (argv[1]);
@ -844,12 +872,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
if (u) {
kick_chan (u, argv[0], k);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can't find user %s for kick %s", argv[1],
argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
}
}
void Usr_Join(char *origin, char **argv, int argc)
void
Usr_Join (char *origin, char **argv, int argc)
{
char *s, *t;
t = argv[0];
@ -860,22 +887,27 @@ void Usr_Join(char *origin, char **argv, int argc)
join_chan (finduser (origin), s);
}
}
void Usr_Part(char *origin, char **argv, int argc)
void
Usr_Part (char *origin, char **argv, int argc)
{
part_chan (finduser (origin), argv[0]);
}
void Srv_Ping(char *origin, char **argv, int argc)
void
Srv_Ping (char *origin, char **argv, int argc)
{
spong_cmd (argv[0]);
}
void Srv_Svinfo(char *origin, char **argv, int argc)
void
Srv_Svinfo (char *origin, char **argv, int argc)
{
ssvinfo_cmd ();
}
void Srv_Netinfo(char *origin, char **argv, int argc)
void
Srv_Netinfo (char *origin, char **argv, int argc)
{
me.onchan = 1;
ircd_srv.uprot = atoi (argv[2]);
@ -890,10 +922,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
me.synced = 1;
}
void Srv_Pass(char *origin, char **argv, int argc)
void
Srv_Pass (char *origin, char **argv, int argc)
{
}
void Srv_Server(char *origin, char **argv, int argc)
void
Srv_Server (char *origin, char **argv, int argc)
{
Server *s;
if (*origin == 0) {
@ -904,26 +938,27 @@ void Srv_Server(char *origin, char **argv, int argc)
s = findserver (argv[0]);
me.s = s;
}
void Srv_Squit(char *origin, char **argv, int argc)
void
Srv_Squit (char *origin, char **argv, int argc)
{
Server *s;
s = findserver (argv[0]);
if (s) {
DelServer (argv[0]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Waring, Squit from Unknown Server %s", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
}
}
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
void Srv_Nick(char *origin, char **argv, int argc)
void
Srv_Nick (char *origin, char **argv, int argc)
{
char *realname;
User *u;
AddUser(argv[0], argv[4], argv[5], argv[7], 0,
strtoul(argv[2], NULL, 10));
AddUser (argv[0], argv[4], argv[5], argv[7], 0, strtoul (argv[2], NULL, 10));
realname = joinbuf (argv, argc, 9);
AddRealName (argv[0], realname);
free (realname);
@ -935,28 +970,29 @@ void Srv_Nick(char *origin, char **argv, int argc)
UserMode (argv[0], argv[3], 0);
}
void Srv_Svsnick(char *origin, char **argv, int argc)
void
Srv_Svsnick (char *origin, char **argv, int argc)
{
User *u;
u = finduser (argv[0]);
if (u) {
Change_User (u, argv[1]);
} else {
nlog(LOG_WARNING, LOG_CORE,
"Can't Find User %s for SVSNICK", argv[0]);
nlog (LOG_WARNING, LOG_CORE, "Can't Find User %s for SVSNICK", argv[0]);
}
}
void Srv_Kill(char *origin, char **argv, int argc)
void
Srv_Kill (char *origin, char **argv, int argc)
{
nlog(LOG_WARNING, LOG_CORE,
"Got Srv_Kill, but its un-handled (%s)", recbuf);
nlog (LOG_WARNING, LOG_CORE, "Got Srv_Kill, but its un-handled (%s)", recbuf);
}
/* Topic Bursting for NeoIRCD */
/* R: :fish.dynam.ac TBURST 1034639893 #ircop 1034652780 ChanServ!services@neostats.net :NeoIRCd Test Oper Channel */
void Srv_Tburst(char *origin, char **argv, int argc)
void
Srv_Tburst (char *origin, char **argv, int argc)
{
char *buf;
Chans *c;
@ -966,15 +1002,14 @@ void Srv_Tburst(char *origin, char **argv, int argc)
Change_Topic (argv[3], c, atoi (argv[2]), buf);
free (buf);
} else {
nlog(LOG_WARNING, LOG_CORE,
"TopicBurst: Ehhh, Can't find Channel %s", argv[1]);
nlog (LOG_WARNING, LOG_CORE, "TopicBurst: Ehhh, Can't find Channel %s", argv[1]);
}
}
extern int SignOn_NewBot(const char *nick, const char *user,
const char *host, const char *rname, long Umode)
extern int
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
{
snewnick_cmd (nick, user, host, rname, Umode);

View file

@ -18,7 +18,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: neoircd.h,v 1.9 2003/07/23 10:35:47 fishwaldo Exp $
** $Id: neoircd.h,v 1.10 2003/07/30 13:58:22 fishwaldo Exp $
*/

View file

@ -22,12 +22,13 @@
** USA
**
** NeoStats CVS Identification
** $Id: ns_help.c,v 1.8 2003/06/13 13:11:49 fishwaldo Exp $
** $Id: ns_help.c,v 1.9 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
void init_ns_help()
void
init_ns_help ()
{
if (usr_mds);
}

View file

@ -22,7 +22,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: server.c,v 1.20 2003/07/15 09:16:15 fishwaldo Exp $
** $Id: server.c,v 1.21 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include <fnmatch.h>
@ -35,12 +35,14 @@ int fnmatch(const char *, const char *, int flags);
Server *new_server (char *);
void init_server()
void
init_server ()
{
if (usr_mds);
}
Server *new_server(char *name)
Server *
new_server (char *name)
{
Server *s;
hnode_t *sn;
@ -54,15 +56,15 @@ Server *new_server(char *name)
nlog (LOG_WARNING, LOG_CORE, "Eeek, Hash is broken\n");
}
if (hash_isfull (sh)) {
nlog(LOG_WARNING, LOG_CORE,
"Eeek, Server Hash is full!\n");
nlog (LOG_WARNING, LOG_CORE, "Eeek, Server Hash is full!\n");
} else {
hash_insert (sh, sn, s->name);
}
return s;
}
void AddServer(char *name, char *uplink, int hops)
void
AddServer (char *name, char *uplink, int hops)
{
Server *s;
char **av;
@ -88,7 +90,8 @@ void AddServer(char *name, char *uplink, int hops)
}
void DelServer(char *name)
void
DelServer (char *name)
{
Server *s;
hnode_t *sn;
@ -100,8 +103,7 @@ void DelServer(char *name)
}
sn = hash_lookup (sh, name);
if (!sn) {
nlog(LOG_DEBUG1, LOG_CORE, "DelServer(): %s not found!",
name);
nlog (LOG_DEBUG1, LOG_CORE, "DelServer(): %s not found!", name);
return;
}
s = hnode_get (sn);
@ -116,7 +118,8 @@ void DelServer(char *name)
free (s);
}
Server *findserver(const char *name)
Server *
findserver (const char *name)
{
Server *s;
hnode_t *sn;
@ -126,13 +129,13 @@ Server *findserver(const char *name)
s = hnode_get (sn);
return s;
} else {
nlog(LOG_DEBUG2, LOG_CORE, "FindServer(): %s not found!",
name);
nlog (LOG_DEBUG2, LOG_CORE, "FindServer(): %s not found!", name);
return NULL;
}
}
void ServerDump()
void
ServerDump ()
{
Server *s;
hscan_t ss;
@ -148,18 +151,19 @@ void ServerDump()
sendcoders ("End of Listing.");
}
void init_server_hash()
void
init_server_hash ()
{
sh = hash_create (S_TABLE_SIZE, 0, 0);
if (!sh) {
nlog(LOG_CRITICAL, LOG_CORE,
"Create Server Hash Failed\n");
nlog (LOG_CRITICAL, LOG_CORE, "Create Server Hash Failed\n");
do_exit (1);
}
AddServer (me.name, NULL, 0);
}
void TimerPings()
void
TimerPings ()
{
Server *s;
hscan_t ss;

View file

@ -22,7 +22,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: services.c,v 1.55 2003/06/13 13:11:49 fishwaldo Exp $
** $Id: services.c,v 1.56 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -47,7 +47,8 @@ static void ns_chan_dump(User *, char *);
static void ns_uptime (User *);
static void ns_version (User *);
void servicesbot(char *nick, char **av, int ac)
void
servicesbot (char *nick, char **av, int ac)
{
User *u;
int rval;
@ -55,34 +56,27 @@ void servicesbot(char *nick, char **av, int ac)
u = finduser (nick);
if (!u) {
nlog(LOG_WARNING, LOG_CORE, "Unable to finduser %s (%s)",
nick, s_Services);
nlog (LOG_WARNING, LOG_CORE, "Unable to finduser %s (%s)", nick, s_Services);
return;
}
me.requests++;
if (me.onlyopers && (UserLevel (u) < 40)) {
prefmsg(u->nick, s_Services,
"This service is only available to IRCops.");
chanalert(s_Services,
"%s Requested %s, but he is Not a Operator!",
u->nick, av[1]);
prefmsg (u->nick, s_Services, "This service is only available to IRCops.");
chanalert (s_Services, "%s Requested %s, but he is Not a Operator!", u->nick, av[1]);
return;
}
if (!strcasecmp (av[1], "HELP")) {
if (ac > 2) {
chanalert(s_Services, "%s Requested %s Help on %s",
u->nick, s_Services, av[2]);
chanalert (s_Services, "%s Requested %s Help on %s", u->nick, s_Services, av[2]);
} else {
chanalert(s_Services, "%s Requested %s Help",
u->nick, s_Services);
chanalert (s_Services, "%s Requested %s Help", u->nick, s_Services);
}
if (ac < 3) {
privmsg_list (nick, s_Services, ns_help);
if (UserLevel (u) >= 180)
privmsg_list(nick, s_Services,
ns_myuser_help);
privmsg_list (nick, s_Services, ns_myuser_help);
} else if (!strcasecmp (av[2], "VERSION"))
privmsg_list (nick, s_Services, ns_version_help);
else if (!strcasecmp (av[2], "SHUTDOWN")
@ -123,177 +117,135 @@ void servicesbot(char *nick, char **av, int ac)
else if (!strcasecmp (av[2], "LEVEL"))
privmsg_list (nick, s_Services, ns_level_help);
else
prefmsg(nick, s_Services,
"Unknown Help Topic: \2%s\2", av[2]);
prefmsg (nick, s_Services, "Unknown Help Topic: \2%s\2", av[2]);
} else if (!strcasecmp (av[1], "LEVEL")) {
prefmsg(nick, s_Services, "Your Level is %d",
UserLevel(u));
prefmsg (nick, s_Services, "Your Level is %d", UserLevel (u));
} else if (!strcasecmp (av[1], "LOAD")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to LOAD, but is not at least a NetAdmin",
nick);
chanalert (s_Services, "%s Tried to LOAD, but is not at least a NetAdmin", nick);
return;
}
if (ac <= 2) {
prefmsg(nick, s_Services,
"Please Specify a Module");
prefmsg (nick, s_Services, "Please Specify a Module");
return;
}
rval = load_module (av[2], u);
if (!rval) {
chanalert(s_Services, "%s Loaded Module %s",
u->nick, av[2]);
chanalert (s_Services, "%s Loaded Module %s", u->nick, av[2]);
} else {
chanalert(s_Services,
"%s Tried to Load Module %s, but Failed",
u->nick, av[2]);
chanalert (s_Services, "%s Tried to Load Module %s, but Failed", u->nick, av[2]);
}
} else if (!strcasecmp (av[1], "MODLIST")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to MODLIST, but is not a Techadmin",
nick);
chanalert (s_Services, "%s Tried to MODLIST, but is not a Techadmin", nick);
return;
}
list_module (u);
} else if (!strcasecmp (av[1], "UNLOAD")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to UNLOAD, but is not a Techadmin",
nick);
chanalert (s_Services, "%s Tried to UNLOAD, but is not a Techadmin", nick);
return;
}
if (ac <= 2) {
prefmsg(nick, s_Services,
" Please Specify a Module Name");
prefmsg (nick, s_Services, " Please Specify a Module Name");
return;
}
rval = unload_module (av[2], u);
if (rval > 0) {
chanalert(s_Services, "%s Unloaded Module %s",
u->nick, av[2]);
chanalert (s_Services, "%s Unloaded Module %s", u->nick, av[2]);
}
return;
} else if (!strcasecmp (av[1], "MODBOTLIST")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to MODBOTLIST, but is not a Techadmin",
nick);
chanalert (s_Services, "%s Tried to MODBOTLIST, but is not a Techadmin", nick);
return;
}
list_module_bots (u);
} else if (!strcasecmp (av[1], "MODSOCKLIST")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to MODSOCKLIST, but is not a Techadmin",
nick);
chanalert (s_Services, "%s Tried to MODSOCKLIST, but is not a Techadmin", nick);
return;
}
list_sockets (u);
} else if (!strcasecmp (av[1], "MODTIMERLIST")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to MODTIMERLIST, but is not a Techadmin",
nick);
chanalert (s_Services, "%s Tried to MODTIMERLIST, but is not a Techadmin", nick);
return;
}
list_module_timer (u);
} else if (!strcasecmp (av[1], "MODBOTCHANLIST")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s tried to MODBOTCHANLIST, but is not a techadmin",
nick);
chanalert (s_Services, "%s tried to MODBOTCHANLIST, but is not a techadmin", nick);
return;
}
botchandump (u);
} else if (!strcasecmp (av[1], "INFO")) {
ns_uptime (u);
chanalert(s_Services, "%s Wanted to see %s's info",
u->nick, me.name);
chanalert (s_Services, "%s Wanted to see %s's info", u->nick, me.name);
} else if (!strcasecmp (av[1], "SHUTDOWN")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to SHUTDOWN, but is not a Techadmin",
nick);
chanalert (s_Services, "%s Tried to SHUTDOWN, but is not a Techadmin", nick);
return;
}
chanalert(s_Services,
"%s Wants me to Go to BED!!! Good Night!",
u->nick);
chanalert (s_Services, "%s Wants me to Go to BED!!! Good Night!", u->nick);
tmp = joinbuf (av, ac, 2);
ns_shutdown (u, tmp);
free (tmp);
} else if (!strcasecmp (av[1], "VERSION")) {
ns_version (u);
chanalert(s_Services,
"%s Wanted to know our version number ",
u->nick);
chanalert (s_Services, "%s Wanted to know our version number ", u->nick);
} else if (!strcasecmp (av[1], "RELOAD")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to RELOAD, but is not a Techadmin",
nick);
chanalert (s_Services, "%s Tried to RELOAD, but is not a Techadmin", nick);
return;
}
if (ac <= 2) {
prefmsg(nick, s_Services,
"You must supply a Reason to Reload");
prefmsg (nick, s_Services, "You must supply a Reason to Reload");
return;
}
tmp = joinbuf (av, ac, 2);
chanalert(s_Services, "%s Wants me to RELOAD! for %s",
u->nick, tmp);
chanalert (s_Services, "%s Wants me to RELOAD! for %s", u->nick, tmp);
ns_reload (u, tmp);
free (tmp);
} else if (!strcasecmp (av[1], "LOGS")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to view LOGS, but is not a Techadmin",
nick);
chanalert (s_Services, "%s Tried to view LOGS, but is not a Techadmin", nick);
return;
}
ns_logs (u);
chanalert(s_Services, "%s Wants to Look at my Logs!!",
u->nick);
chanalert (s_Services, "%s Wants to Look at my Logs!!", u->nick);
} else if (!strcasecmp (av[1], "JUPE")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to JUPE, but is not a Techadmin",
nick);
chanalert (s_Services, "%s Tried to JUPE, but is not a Techadmin", nick);
return;
}
if (ac <= 2) {
prefmsg(nick, s_Services,
"You must supply a ServerName to Jupe");
prefmsg (nick, s_Services, "You must supply a ServerName to Jupe");
return;
}
ns_jupe (u, av[2]);
chanalert(s_Services, "%s Wants to JUPE this Server %s",
u->nick, av[2]);
chanalert (s_Services, "%s Wants to JUPE this Server %s", u->nick, av[2]);
} else if (!strcasecmp (av[1], "DEBUG")) {
if (!(UserLevel (u) >= 180)) {
prefmsg(u->nick, s_Services,
"Permission Denied, you need to be a Techadmin to Enable Debug Mode!");
prefmsg (u->nick, s_Services, "Permission Denied, you need to be a Techadmin to Enable Debug Mode!");
return;
}
ns_debug_to_coders (u->nick);
} else if (!strcasecmp (av[1], "USERDUMP")) {
if (!me.coder_debug) {
prefmsg(u->nick, s_Services,
"\2Error:\2 Debug Mode Disabled");
prefmsg (u->nick, s_Services, "\2Error:\2 Debug Mode Disabled");
return;
}
if (ac <= 2) {
@ -303,8 +255,7 @@ void servicesbot(char *nick, char **av, int ac)
}
} else if (!strcasecmp (av[1], "CHANDUMP")) {
if (!me.coder_debug) {
prefmsg(u->nick, s_Services,
"\2Error:\2 Debug Mode Disabled");
prefmsg (u->nick, s_Services, "\2Error:\2 Debug Mode Disabled");
return;
}
if (ac < 3) {
@ -314,17 +265,14 @@ void servicesbot(char *nick, char **av, int ac)
}
} else if (!strcasecmp (av[1], "SERVERDUMP")) {
if (!me.coder_debug) {
prefmsg(u->nick, s_Services,
"\2Error:\2 Debug Mode Disabled");
prefmsg (u->nick, s_Services, "\2Error:\2 Debug Mode Disabled");
return;
}
ns_server_dump (u);
} else if (!strcasecmp (av[1], "RAW")) {
if (!(UserLevel (u) >= 180)) {
prefmsg (nick, s_Services, "Permission Denied");
chanalert(s_Services,
"%s Tried to use RAW, but is not a Techadmin",
nick);
chanalert (s_Services, "%s Tried to use RAW, but is not a Techadmin", nick);
return;
}
#ifdef USE_RAW
@ -337,16 +285,14 @@ void servicesbot(char *nick, char **av, int ac)
return;
#endif
} else {
prefmsg(nick, s_Services, "Unknown Command: \2%s\2",
av[1]);
chanalert(s_Services,
"%s Reqested %s, but that is a Unknown Command",
u->nick, av[1]);
prefmsg (nick, s_Services, "Unknown Command: \2%s\2", av[1]);
chanalert (s_Services, "%s Reqested %s, but that is a Unknown Command", u->nick, av[1]);
}
}
extern void ns_shutdown(User * u, char *reason)
extern void
ns_shutdown (User * u, char *reason)
{
Module *mod_ptr = NULL;
hscan_t ms;
@ -358,43 +304,37 @@ extern void ns_shutdown(User * u, char *reason)
hash_scan_begin (&ms, mh);
while ((mn = hash_scan_next (&ms)) != NULL) {
mod_ptr = hnode_get (mn);
chanalert(s_Services, "Module %s Unloaded by %s",
mod_ptr->info->module_name, u->nick);
chanalert (s_Services, "Module %s Unloaded by %s", mod_ptr->info->module_name, u->nick);
unload_module (mod_ptr->info->module_name, u);
}
globops(s_Services, "%s requested \2SHUTDOWN\2 for %s", u->nick,
reason);
snprintf(quitmsg, 255, "%s Set SHUTDOWN: %s", u->nick,
(reason ? reason : "No Reason"));
globops (s_Services, "%s requested \2SHUTDOWN\2 for %s", u->nick, reason);
snprintf (quitmsg, 255, "%s Set SHUTDOWN: %s", u->nick, (reason ? reason : "No Reason"));
squit_cmd (s_Services, quitmsg);
ssquit_cmd (me.name);
sleep (1);
close (servsock);
remove ("neostats.pid");
nlog(LOG_NOTICE, LOG_CORE, "%s [%s](%s) requested SHUTDOWN.",
u->nick, u->username, u->hostname);
nlog (LOG_NOTICE, LOG_CORE, "%s [%s](%s) requested SHUTDOWN.", u->nick, u->username, u->hostname);
do_exit (0);
}
static void ns_reload(User * u, char *reason)
static void
ns_reload (User * u, char *reason)
{
Module *mod_ptr = NULL;
hscan_t ms;
hnode_t *mn;
char quitmsg[255];
strcpy (segv_location, "ns_reload");
globops(s_Services, "%s requested \2RELOAD\2 for %s", u->nick,
reason);
nlog(LOG_NOTICE, LOG_CORE, "%s requested RELOAD. -> reason",
u->nick);
globops (s_Services, "%s requested \2RELOAD\2 for %s", u->nick, reason);
nlog (LOG_NOTICE, LOG_CORE, "%s requested RELOAD. -> reason", u->nick);
snprintf (quitmsg, 255, "%s Sent RELOAD: %s", u->nick, reason);
hash_scan_begin (&ms, mh);
while ((mn = hash_scan_next (&ms)) != NULL) {
mod_ptr = hnode_get (mn);
chanalert(s_Services, "Module %s Unloaded by %s",
mod_ptr->info->module_name, u->nick);
chanalert (s_Services, "Module %s Unloaded by %s", mod_ptr->info->module_name, u->nick);
unload_module (mod_ptr->info->module_name, u);
}
squit_cmd (s_Services, quitmsg);
@ -404,11 +344,11 @@ static void ns_reload(User * u, char *reason)
}
static void ns_logs(User * u)
static void
ns_logs (User * u)
{
#ifdef DEBUG
prefmsg(u->nick, s_Services,
"This command is disabled while in DEBUG.");
prefmsg (u->nick, s_Services, "This command is disabled while in DEBUG.");
#else
FILE *fp;
char buf[512];
@ -417,8 +357,7 @@ static void ns_logs(User * u)
fp = fopen ("logs/NeoStats.log", "r");
if (!fp) {
prefmsg(u->nick, s_Services,
"Unable to open neostats.log");
prefmsg (u->nick, s_Services, "Unable to open neostats.log");
return;
}
while (fgets (buf, sizeof (buf), fp)) {
@ -429,24 +368,24 @@ static void ns_logs(User * u)
#endif
}
static void ns_jupe(User * u, char *server)
static void
ns_jupe (User * u, char *server)
{
char infoline[255];
strcpy (segv_location, "ns_jupe");
snprintf (infoline, 255, "[Jupitered by %s]", u->nick);
sserver_cmd (server, 1, infoline);
nlog(LOG_NOTICE, LOG_CORE, "%s!%s@%s jupitered %s", u->nick,
u->username, u->hostname, server);
nlog (LOG_NOTICE, LOG_CORE, "%s!%s@%s jupitered %s", u->nick, u->username, u->hostname, server);
}
void ns_debug_to_coders(char *u)
void
ns_debug_to_coders (char *u)
{
strcpy (segv_location, "ns_debug_to_coders");
if (!me.coder_debug) {
me.coder_debug = 1;
if (u) {
globops(me.name, "\2DEBUG MODE\2 Activated by %s",
u);
globops (me.name, "\2DEBUG MODE\2 Activated by %s", u);
prefmsg (u, s_Services, "Debuging Mode Enabled!");
} else {
globops (me.name, "\2DEBUG MODE\3 Active");
@ -454,8 +393,7 @@ void ns_debug_to_coders(char *u)
} else {
me.coder_debug = 0;
if (!u) {
globops(me.name,
"\2DEBUG MODE\2 Deactivated by %s", u);
globops (me.name, "\2DEBUG MODE\2 Deactivated by %s", u);
prefmsg (u, s_Services, "Debuging Mode Disabled");
} else {
globops (me.name, "\2DEBUG MODE\2 Deactivated");
@ -464,15 +402,13 @@ void ns_debug_to_coders(char *u)
}
#ifdef USE_RAW
static void ns_raw(User * u, char *message)
static void
ns_raw (User * u, char *message)
{
int sent;
strcpy (segv_location, "ns_raw");
chanalert(s_Services,
"\2RAW COMMAND\2 \2%s\2 Issued a Raw Command!(%s)",
u->nick, message);
nlog(LOG_INFO, LOG_CORE, "RAW COMMAND %sIssued a Raw Command!(%s)",
u->nick, message);
chanalert (s_Services, "\2RAW COMMAND\2 \2%s\2 Issued a Raw Command!(%s)", u->nick, message);
nlog (LOG_INFO, LOG_CORE, "RAW COMMAND %sIssued a Raw Command!(%s)", u->nick, message);
strcat (message, "\n");
sent = write (servsock, message, strlen (message));
if (sent == -1) {
@ -483,95 +419,73 @@ static void ns_raw(User * u, char *message)
me.SendBytes = me.SendBytes + sent;
}
#endif
static void ns_user_dump(User * u, char *nick)
static void
ns_user_dump (User * u, char *nick)
{
strcpy (segv_location, "ns_user_dump");
if (!(UserLevel (u) >= 180)) {
prefmsg(u->nick, s_Services,
"Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
prefmsg (u->nick, s_Services, "Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
return;
}
chanalert(s_Services, "\2DEBUG\2 \2%s\2 Requested a UserDump!",
u->nick);
chanalert (s_Services, "\2DEBUG\2 \2%s\2 Requested a UserDump!", u->nick);
UserDump (nick);
}
static void ns_server_dump(User * u)
static void
ns_server_dump (User * u)
{
strcpy (segv_location, "ns_server_dump");
if (!(UserLevel (u) >= 180)) {
prefmsg(u->nick, s_Services,
"Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
prefmsg (u->nick, s_Services, "Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
return;
}
chanalert(s_Services, "\2DEBUG\2 \2%s\2 Requested a ServerDump!",
u->nick);
chanalert (s_Services, "\2DEBUG\2 \2%s\2 Requested a ServerDump!", u->nick);
ServerDump ();
}
static void ns_chan_dump(User * u, char *chan)
static void
ns_chan_dump (User * u, char *chan)
{
strcpy (segv_location, "ns_chan_dump");
if (!(UserLevel (u) >= 180)) {
prefmsg(u->nick, s_Services,
"Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
prefmsg (u->nick, s_Services, "Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
return;
}
chanalert(s_Services, "\2DEBUG\2 \2%s\2 Requested a ChannelDump!",
u->nick);
chanalert (s_Services, "\2DEBUG\2 \2%s\2 Requested a ChannelDump!", u->nick);
chandump (chan);
}
static void ns_uptime(User * u)
static void
ns_uptime (User * u)
{
int uptime = time (NULL) - me.t_start;
strcpy (segv_location, "ns_uptime");
prefmsg (u->nick, s_Services, "Statistics Information:");
if (uptime > 86400) {
prefmsg(u->nick, s_Services,
"Statistics up \2%ld\2 day%s, \2%02ld:%02ld\2",
uptime / 86400, (uptime / 86400 == 1) ? "" : "s",
(uptime / 3600) % 24, (uptime / 60) % 60);
prefmsg (u->nick, s_Services, "Statistics up \2%ld\2 day%s, \2%02ld:%02ld\2", uptime / 86400, (uptime / 86400 == 1) ? "" : "s", (uptime / 3600) % 24, (uptime / 60) % 60);
} else if (uptime > 3600) {
prefmsg(u->nick, s_Services,
"Statistics up \2%ld hour%s, %ld minute%s\2",
uptime / 3600, uptime / 3600 == 1 ? "" : "s",
(uptime / 60) % 60,
(uptime / 60) % 60 == 1 ? "" : "s");
prefmsg (u->nick, s_Services, "Statistics up \2%ld hour%s, %ld minute%s\2", uptime / 3600, uptime / 3600 == 1 ? "" : "s", (uptime / 60) % 60, (uptime / 60) % 60 == 1 ? "" : "s");
} else if (uptime > 60) {
prefmsg(u->nick, s_Services,
"Statistics up \2%ld minute%s, %ld second%s\2",
uptime / 60, uptime / 60 == 1 ? "" : "s",
uptime % 60, uptime % 60 == 1 ? "" : "s");
prefmsg (u->nick, s_Services, "Statistics up \2%ld minute%s, %ld second%s\2", uptime / 60, uptime / 60 == 1 ? "" : "s", uptime % 60, uptime % 60 == 1 ? "" : "s");
} else {
prefmsg(u->nick, s_Services,
"Statistics up \2%ld second%s\2", uptime,
uptime == 1 ? "" : "s");
prefmsg (u->nick, s_Services, "Statistics up \2%ld second%s\2", uptime, uptime == 1 ? "" : "s");
}
prefmsg(u->nick, s_Services,
"Sent %ld Messages Totaling %ld Bytes", me.SendM,
me.SendBytes);
prefmsg(u->nick, s_Services,
"Recieved %ld Messages, Totaling %ld Bytes", me.RcveM,
me.RcveBytes);
prefmsg (u->nick, s_Services, "Sent %ld Messages Totaling %ld Bytes", me.SendM, me.SendBytes);
prefmsg (u->nick, s_Services, "Recieved %ld Messages, Totaling %ld Bytes", me.RcveM, me.RcveBytes);
prefmsg (u->nick, s_Services, "Reconnect Time: %d", me.r_time);
prefmsg(u->nick, s_Services, "Statistic Requests: %d",
me.requests);
prefmsg(u->nick, s_Services, "Max Sockets: %d (in use: %d)",
me.maxsocks, me.cursocks);
prefmsg(u->nick, s_Services, "Use SMO for Debug?: %s",
(me.usesmo) ? "Enabled" : "Disabled");
prefmsg (u->nick, s_Services, "Statistic Requests: %d", me.requests);
prefmsg (u->nick, s_Services, "Max Sockets: %d (in use: %d)", me.maxsocks, me.cursocks);
prefmsg (u->nick, s_Services, "Use SMO for Debug?: %s", (me.usesmo) ? "Enabled" : "Disabled");
if (me.coder_debug)
prefmsg (u->nick, s_Services, "Debugging Mode is \2ON!\2");
else
prefmsg(u->nick, s_Services,
"Debugging Mode is Disabled!");
prefmsg (u->nick, s_Services, "Debugging Mode is Disabled!");
prefmsg (u->nick, s_Services, "End of Information.");
}
static void ns_version(User * u)
static void
ns_version (User * u)
{
strcpy (segv_location, "ns_version");
prefmsg (u->nick, s_Services, "\2NeoStats Version Information\2");
prefmsg(u->nick, s_Services, "NeoStats Version: %d.%d.%d%s", MAJOR,
MINOR, REV, version);
prefmsg (u->nick, s_Services, "NeoStats Version: %d.%d.%d%s", MAJOR, MINOR, REV, version);
prefmsg (u->nick, s_Services, "http://www.neostats.net");
}

160
sock.c
View file

@ -22,7 +22,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: sock.c,v 1.39 2003/06/26 05:25:09 fishwaldo Exp $
** $Id: sock.c,v 1.40 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include <fcntl.h>
@ -37,7 +37,8 @@ void recvlog(char *line);
struct sockaddr_in lsa;
int dobind;
int ConnectTo(char *host, int port)
int
ConnectTo (char *host, int port)
{
struct hostent *hp;
struct sockaddr_in sa;
@ -48,12 +49,9 @@ int ConnectTo(char *host, int port)
memset (&lsa, 0, sizeof (lsa));
if (strlen (me.local) > 1) {
if ((hp = gethostbyname (me.local)) == NULL) {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Couldn't bind to IP address %s",
me.local);
nlog (LOG_WARNING, LOG_CORE, "Warning, Couldn't bind to IP address %s", me.local);
} else {
memcpy((char *) &lsa.sin_addr, hp->h_addr,
hp->h_length);
memcpy ((char *) &lsa.sin_addr, hp->h_addr, hp->h_length);
lsa.sin_family = hp->h_addrtype;
dobind = 1;
}
@ -69,9 +67,7 @@ int ConnectTo(char *host, int port)
return (-1);
if (dobind > 0) {
if (bind (s, (struct sockaddr *) &lsa, sizeof (lsa)) < 0) {
nlog(LOG_WARNING, LOG_CORE,
"bind(): Warning, Couldn't bind to IP address %s",
strerror(errno));
nlog (LOG_WARNING, LOG_CORE, "bind(): Warning, Couldn't bind to IP address %s", strerror (errno));
}
}
@ -89,7 +85,8 @@ int ConnectTo(char *host, int port)
return s;
}
void read_loop()
void
read_loop ()
{
register int i, j, SelectResult;
struct timeval *TimeOut, tvbuf;
@ -127,17 +124,13 @@ void read_loop()
++me.cursocks;
}
/* adns stuff... whats its interested in */
adns_beforeselect(ads, &me.maxsocks, &readfds, &writefds,
&errfds, &TimeOut, &tvbuf, 0);
adns_beforeselect (ads, &me.maxsocks, &readfds, &writefds, &errfds, &TimeOut, &tvbuf, 0);
/* adns may change this, but we tell it to go away!!! */
TimeOut->tv_sec = 1;
TimeOut->tv_usec = 0;
SelectResult =
select(FD_SETSIZE, &readfds, &writefds, &errfds,
TimeOut);
SelectResult = select (FD_SETSIZE, &readfds, &writefds, &errfds, TimeOut);
if (SelectResult > 0) {
adns_afterselect(ads, me.maxsocks, &readfds,
&writefds, &errfds, 0);
adns_afterselect (ads, me.maxsocks, &readfds, &writefds, &errfds, 0);
/* do and dns related callbacks now */
do_dns ();
@ -151,80 +144,35 @@ void read_loop()
if ((c == '\n')
|| (c == '\r')) {
me.RcveM++;
me.lastmsg =
time(NULL);
me.lastmsg = time (NULL);
if (config.recvlog)
recvlog
(buf);
recvlog (buf);
parse (buf);
break;
}
} else {
nlog(LOG_WARNING, LOG_CORE,
"read returned a Error");
nlog (LOG_WARNING, LOG_CORE, "read returned a Error");
return;
}
} else {
/* this checks if there is any data waiting on a socket for a module */
hash_scan_begin (&ss, sockh);
while ((sn =
hash_scan_next(&ss)) !=
NULL) {
while ((sn = hash_scan_next (&ss)) != NULL) {
mod_sock = hnode_get (sn);
strcpy(segvinmodule,
mod_sock->modname);
if (FD_ISSET
(mod_sock->sock_no,
&readfds)) {
nlog(LOG_DEBUG3,
LOG_CORE,
"Running module %s readsock function for %s",
mod_sock->
modname,
mod_sock->
sockname);
if (mod_sock->
readfnc
(mod_sock->
sock_no,
mod_sock->
sockname) < 0)
strcpy (segvinmodule, mod_sock->modname);
if (FD_ISSET (mod_sock->sock_no, &readfds)) {
nlog (LOG_DEBUG3, LOG_CORE, "Running module %s readsock function for %s", mod_sock->modname, mod_sock->sockname);
if (mod_sock->readfnc (mod_sock->sock_no, mod_sock->sockname) < 0)
break;
}
if (FD_ISSET
(mod_sock->sock_no,
&writefds)) {
nlog(LOG_DEBUG3,
LOG_CORE,
"Running module %s writesock function for %s",
mod_sock->
modname,
mod_sock->
sockname);
if (mod_sock->
writefnc
(mod_sock->
sock_no,
mod_sock->
sockname) < 0)
if (FD_ISSET (mod_sock->sock_no, &writefds)) {
nlog (LOG_DEBUG3, LOG_CORE, "Running module %s writesock function for %s", mod_sock->modname, mod_sock->sockname);
if (mod_sock->writefnc (mod_sock->sock_no, mod_sock->sockname) < 0)
break;
}
if (FD_ISSET
(mod_sock->sock_no,
&errfds)) {
nlog(LOG_DEBUG3,
LOG_CORE,
"Running module %s errorsock function for %s",
mod_sock->
modname,
mod_sock->
sockname);
if (mod_sock->
errfnc
(mod_sock->
sock_no,
mod_sock->
sockname) < 0)
if (FD_ISSET (mod_sock->sock_no, &errfds)) {
nlog (LOG_DEBUG3, LOG_CORE, "Running module %s errorsock function for %s", mod_sock->modname, mod_sock->sockname);
if (mod_sock->errfnc (mod_sock->sock_no, mod_sock->sockname) < 0)
break;
}
}
@ -240,21 +188,16 @@ void read_loop()
hash_scan_begin (&ms, mh);
while ((mn = hash_scan_next (&ms)) != NULL) {
mod_ptr = hnode_get (mn);
unload_module(mod_ptr->info->
module_name,
finduser
(s_Services));
unload_module (mod_ptr->info->module_name, finduser (s_Services));
}
close (servsock);
sleep (5);
nlog(LOG_WARNING, LOG_CORE,
"Eeek, Zombie Server, Reconnecting");
nlog (LOG_WARNING, LOG_CORE, "Eeek, Zombie Server, Reconnecting");
do_exit (2);
}
} else if (SelectResult == -1) {
if (errno != EINTR) {
nlog(LOG_WARNING, LOG_CORE,
"Lost connection to server.");
nlog (LOG_WARNING, LOG_CORE, "Lost connection to server.");
return;
}
}
@ -262,7 +205,8 @@ void read_loop()
nlog (LOG_NORMAL, LOG_CORE, "hu, how did we get here");
}
extern int getmaxsock()
extern int
getmaxsock ()
{
struct rlimit *lim;
int ret;
@ -273,7 +217,8 @@ extern int getmaxsock()
return ret;
}
void recvlog(char *line)
void
recvlog (char *line)
{
FILE *logfile;
if ((logfile = fopen ("logs/recv.log", "a")) == NULL)
@ -285,7 +230,8 @@ void recvlog(char *line)
#if 0
void log(char *fmt, ...)
void
log (char *fmt, ...)
{
va_list ap;
FILE *logfile;
@ -315,7 +261,8 @@ void log(char *fmt, ...)
#endif
char *sctime(time_t stuff)
char *
sctime (time_t stuff)
{
char *s, *c;
@ -328,7 +275,8 @@ char *sctime(time_t stuff)
char fmtime[80];
char *sftime(time_t stuff)
char *
sftime (time_t stuff)
{
struct tm *ltm = localtime (&stuff);
@ -338,9 +286,8 @@ char *sftime(time_t stuff)
}
int sock_connect(int socktype, unsigned long ipaddr, int port,
char *sockname, char *module, char *func_read,
char *func_write, char *func_error)
int
sock_connect (int socktype, unsigned long ipaddr, int port, char *sockname, char *module, char *func_read, char *func_write, char *func_error)
{
struct sockaddr_in sa;
int s;
@ -354,9 +301,7 @@ int sock_connect(int socktype, unsigned long ipaddr, int port,
/* bind to a IP address */
if (dobind > 0) {
if (bind (s, (struct sockaddr *) &lsa, sizeof (lsa)) < 0) {
nlog(LOG_WARNING, LOG_CORE,
"sock_connect(): Warning, Couldn't bind to IP address %s",
strerror(errno));
nlog (LOG_WARNING, LOG_CORE, "sock_connect(): Warning, Couldn't bind to IP address %s", strerror (errno));
}
}
@ -368,9 +313,7 @@ int sock_connect(int socktype, unsigned long ipaddr, int port,
/* set non blocking */
if ((i = fcntl (s, F_SETFL, O_NONBLOCK)) < 0) {
nlog(LOG_CRITICAL, LOG_CORE,
"can't set socket %s(%s) non-blocking: %s", sockname,
module, strerror(i));
nlog (LOG_CRITICAL, LOG_CORE, "can't set socket %s(%s) non-blocking: %s", sockname, module, strerror (i));
return (-1);
}
@ -379,9 +322,7 @@ int sock_connect(int socktype, unsigned long ipaddr, int port,
case EINPROGRESS:
break;
default:
nlog(LOG_WARNING, LOG_CORE,
"Socket %s(%s) cant connect %s", sockname,
module, strerror(errno), i);
nlog (LOG_WARNING, LOG_CORE, "Socket %s(%s) cant connect %s", sockname, module, strerror (errno), i);
close (s);
return (-1);
}
@ -391,7 +332,8 @@ int sock_connect(int socktype, unsigned long ipaddr, int port,
return s;
}
int sock_disconnect(char *sockname)
int
sock_disconnect (char *sockname)
{
Sock_List *sock;
fd_set fds;
@ -400,8 +342,7 @@ int sock_disconnect(char *sockname)
sock = findsock (sockname);
if (!sock) {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can not find Socket %s in list", sockname);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can not find Socket %s in list", sockname);
return (-1);
}
@ -413,19 +354,18 @@ int sock_disconnect(char *sockname)
tv.tv_usec = 0;
i = select (1, &fds, NULL, NULL, &tv);
if (!i && errno == EBADF) {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Bad File Descriptor %s in list", sockname);
nlog (LOG_WARNING, LOG_CORE, "Warning, Bad File Descriptor %s in list", sockname);
return (-1);
}
nlog(LOG_DEBUG3, LOG_CORE, "Closing Socket %s with Number %d",
sockname, sock->sock_no);
nlog (LOG_DEBUG3, LOG_CORE, "Closing Socket %s with Number %d", sockname, sock->sock_no);
close (sock->sock_no);
del_socket (sockname);
return (1);
}
void sts(char *fmt, ...)
void
sts (char *fmt, ...)
{
va_list ap;
char buf[512];

2
sock.h
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: sock.h,v 1.1 2003/06/26 05:25:09 fishwaldo Exp $
** $Id: sock.h,v 1.2 2003/07/30 13:58:22 fishwaldo Exp $
*/
#ifndef SOCK_H

15
stats.h
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: stats.h,v 1.88 2003/07/23 10:35:47 fishwaldo Exp $
** $Id: stats.h,v 1.89 2003/07/30 13:58:22 fishwaldo Exp $
*/
#ifndef STATS_H
@ -179,6 +179,7 @@ struct me {
long RcveM;
long RcveBytes;
time_t lastmsg;
int pingtime;
} me;
@ -263,9 +264,7 @@ extern void ResetLogs();
extern char *sctime (time_t);
extern char *sftime (time_t);
extern int getmaxsock ();
extern int sock_connect(int socktype, unsigned long ipaddr, int port,
char *sockname, char *module, char *func_read,
char *func_write, char *func_error);
extern int sock_connect (int socktype, unsigned long ipaddr, int port, char *sockname, char *module, char *func_read, char *func_write, char *func_error);
extern int sock_disconnect (char *sockname);
/* conf.c */
extern void strip (char *);
@ -310,8 +309,7 @@ extern void TimerMidnight();
extern int is_midnight ();
extern MyUser *myuhead;
extern void AddUser(const char *, const char *, const char *, const char *,
const unsigned long ip, const unsigned long TS);
extern void AddUser (const char *, const char *, const char *, const char *, const unsigned long ip, const unsigned long TS);
extern void DelUser (const char *);
void AddRealName (const char *, const char *);
extern void Change_User (User *, const char *);
@ -380,11 +378,8 @@ void Change_Chan_Ts(Chans *c, time_t tstime);
extern int CheckChanMode (Chans * c, long mode);
/* dns.c */
extern int dns_lookup(char *str, adns_rrtype type,
void (*callback) (char *data, adns_answer * a),
char *data);
extern int dns_lookup (char *str, adns_rrtype type, void (*callback) (char *data, adns_answer * a), char *data);
extern int init_dns ();
extern void do_dns ();
#endif

48
timer.c
View file

@ -20,7 +20,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: timer.c,v 1.24 2003/06/13 13:11:49 fishwaldo Exp $
** $Id: timer.c,v 1.25 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include "stats.h"
@ -33,52 +33,52 @@ static time_t last_cache_save;
static int midnight = 0;
void chk()
void
chk ()
{
Mod_Timer *mod_ptr = NULL;
time_t current = time (NULL);
hscan_t ts;
hnode_t *tn;
strcpy(segv_location, "chk");
/* First, lets see if any modules have a function that is due to run..... */
hash_scan_begin (&ts, th);
while ((tn = hash_scan_next (&ts)) != NULL) {
strcpy (segv_location, "chk");
mod_ptr = hnode_get (tn);
if (current - mod_ptr->lastrun > mod_ptr->interval) {
strcpy (segv_location, mod_ptr->modname);
strcpy (segvinmodule, mod_ptr->modname);
if (setjmp (sigvbuf) == 0) {
mod_ptr->function();
mod_ptr->lastrun = (int) time(NULL);
if (mod_ptr->function () < 0) {
nlog(LOG_DEBUG2, LOG_CORE, "Deleting Timer %s for Module %s as requested", mod_ptr->timername, mod_ptr->modname);
hash_scan_delete(th, tn);
hnode_destroy(tn);
free(mod_ptr);
} else {
nlog(LOG_CRITICAL, LOG_CORE,
"setjmp() Failed, Can't call Module %s\n",
mod_ptr->modname);
mod_ptr->lastrun = (int) time (NULL);
}
} else {
nlog (LOG_CRITICAL, LOG_CORE, "setjmp() Failed, Can't call Module %s\n", mod_ptr->modname);
}
strcpy (segvinmodule, "");
strcpy(segv_location, "Module_Event_Return");
}
}
if (current - ping.last_sent > 60) {
if (current - ping.last_sent > me.pingtime) {
TimerPings ();
ping.last_sent = time (NULL);
if (hash_verify (sockh) == 0) {
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, Corruption of the socket hash");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, Corruption of the socket hash");
}
if (hash_verify (mh) == 0) {
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, Corruption of the Module hash");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, Corruption of the Module hash");
}
if (hash_verify (bh) == 0) {
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, Corruption of the Bot hash");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, Corruption of the Bot hash");
}
if (hash_verify (th) == 0) {
nlog(LOG_CRITICAL, LOG_CORE,
"Eeeek, Corruption of the Timer hash");
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, Corruption of the Timer hash");
}
/* flush log files */
fflush (NULL);
@ -92,7 +92,8 @@ void chk()
}
}
void TimerReset()
void
TimerReset ()
{
time_t current = time (NULL);
last_stats_save = current;
@ -104,14 +105,15 @@ void TimerReset()
void TimerMidnight()
void
TimerMidnight ()
{
nlog(LOG_DEBUG1, LOG_CORE, "Its midnight!!! -> %s",
sctime(time(NULL)));
nlog (LOG_DEBUG1, LOG_CORE, "Its midnight!!! -> %s", sctime (time (NULL)));
ResetLogs ();
}
int is_midnight()
int
is_midnight ()
{
time_t current = time (NULL);
struct tm *ltm = localtime (&current);

131
users.c
View file

@ -22,7 +22,7 @@
** USA
**
** NeoStats CVS Identification
** $Id: users.c,v 1.57 2003/07/17 15:00:13 fishwaldo Exp $
** $Id: users.c,v 1.58 2003/07/30 13:58:22 fishwaldo Exp $
*/
#include <fnmatch.h>
@ -49,7 +49,8 @@ static User *new_user(const char *);
User *new_user(const char *nick)
User *
new_user (const char *nick)
{
User *u;
hnode_t *un;
@ -68,21 +69,16 @@ User *new_user(const char *nick)
return (u);
}
void AddUser(const char *nick, const char *user, const char *host,
const char *server, const unsigned long ipaddr,
const unsigned long TS)
void
AddUser (const char *nick, const char *user, const char *host, const char *server, const unsigned long ipaddr, const unsigned long TS)
{
User *u;
nlog(LOG_DEBUG2, LOG_CORE,
"AddUser(): %s (%s@%s)(%lu) -> %s at %lu", nick, user, host,
htonl(ipaddr), server, TS);
nlog (LOG_DEBUG2, LOG_CORE, "AddUser(): %s (%s@%s)(%lu) -> %s at %lu", nick, user, host, htonl (ipaddr), server, TS);
strcpy (segv_location, "AddUser");
u = finduser (nick);
if (u) {
nlog(LOG_WARNING, LOG_CORE,
"trying to add a user that already exists? (%s)",
nick);
nlog (LOG_WARNING, LOG_CORE, "trying to add a user that already exists? (%s)", nick);
return;
}
@ -105,7 +101,9 @@ void AddUser(const char *nick, const char *user, const char *host,
u->ipaddr.s_addr = htonl (ipaddr);
u->TS = TS;
}
void AddRealName(const char *nick, const char *realname)
void
AddRealName (const char *nick, const char *realname)
{
char **av;
int ac = 0;
@ -113,8 +111,7 @@ void AddRealName(const char *nick, const char *realname)
User *u = finduser (nick);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Can not find User %s for Realname", nick);
nlog (LOG_WARNING, LOG_CORE, "Warning, Can not find User %s for Realname", nick);
return;
}
nlog (LOG_DEBUG2, LOG_CORE, "RealName(%s): %s", nick, realname);
@ -124,20 +121,27 @@ void AddRealName(const char *nick, const char *realname)
free (av);
}
void part_u_chan(list_t * list, lnode_t * node, void *v)
void
part_u_chan (list_t * list, lnode_t * node, void *v)
{
User *u = v;
part_chan (u, lnode_get (node));
}
void KillUser(const char *nick)
void
KillUser (const char *nick)
{
doDelUser (nick, 1);
}
void DelUser(const char *nick)
void
DelUser (const char *nick)
{
doDelUser (nick, 0);
}
void doDelUser(const char *nick, int i)
void
doDelUser (const char *nick, int i)
{
User *u;
hnode_t *un;
@ -180,7 +184,8 @@ void doDelUser(const char *nick, int i)
free (u);
}
void Do_Away(User * u, const char *awaymsg)
void
Do_Away (User * u, const char *awaymsg)
{
char **av;
int ac = 0;
@ -198,7 +203,8 @@ void Do_Away(User * u, const char *awaymsg)
}
}
void Change_User(User * u, const char *newnick)
void
Change_User (User * u, const char *newnick)
{
hnode_t *un;
lnode_t *cm;
@ -207,18 +213,15 @@ void Change_User(User * u, const char *newnick)
char *oldnick;
strcpy (segv_location, "Change_User");
nlog(LOG_DEBUG2, LOG_CORE, "Change_User(%s, %s)", u->nick,
newnick);
nlog (LOG_DEBUG2, LOG_CORE, "Change_User(%s, %s)", u->nick, newnick);
un = hash_lookup (uh, u->nick);
if (!un) {
nlog(LOG_WARNING, LOG_CORE, "ChangeUser(%s) Failed!",
u->nick);
nlog (LOG_WARNING, LOG_CORE, "ChangeUser(%s) Failed!", u->nick);
return;
}
cm = list_first (u->chans);
while (cm) {
change_user_nick(findchan(lnode_get(cm)), (char *) newnick,
u->nick);
change_user_nick (findchan (lnode_get (cm)), (char *) newnick, u->nick);
cm = list_next (u->chans, cm);
}
strcpy (segv_location, "Change_User_Return");
@ -234,7 +237,9 @@ void Change_User(User * u, const char *newnick)
free (av);
free (oldnick);
}
void sendcoders(char *message, ...)
void
sendcoders (char *message, ...)
{
va_list ap;
char tmp[512];
@ -249,7 +254,8 @@ void sendcoders(char *message, ...)
va_end (ap);
}
User *finduser(const char *nick)
User *
finduser (const char *nick)
{
User *u;
hnode_t *un;
@ -259,21 +265,22 @@ User *finduser(const char *nick)
u = hnode_get (un);
return u;
} else {
nlog(LOG_DEBUG2, LOG_CORE, "FindUser(%s) -> NOTFOUND",
nick);
nlog (LOG_DEBUG2, LOG_CORE, "FindUser(%s) -> NOTFOUND", nick);
return NULL;
}
}
void init_user_hash()
void
init_user_hash ()
{
uh = hash_create (U_TABLE_SIZE, 0, 0);
}
void UserDump(char *nick)
void
UserDump (char *nick)
{
User *u;
hnode_t *un;
@ -288,8 +295,7 @@ void UserDump(char *nick)
sendcoders ("User: %s", u->nick);
cm = list_first (u->chans);
while (cm) {
sendcoders(" Chans: %s",
(char *) lnode_get(cm));
sendcoders (" Chans: %s", (char *) lnode_get (cm));
cm = list_next (u->chans, cm);
}
}
@ -300,8 +306,7 @@ void UserDump(char *nick)
sendcoders ("User: %s", u->nick);
cm = list_first (u->chans);
while (cm) {
sendcoders(" Chans: %s",
(char *) lnode_get(cm));
sendcoders (" Chans: %s", (char *) lnode_get (cm));
cm = list_next (u->chans, cm);
}
} else {
@ -310,7 +315,8 @@ void UserDump(char *nick)
}
}
int UserLevel(User * u)
int
UserLevel (User * u)
{
int i, tmplvl = 0;
#ifdef EXTAUTH
@ -324,21 +330,18 @@ int UserLevel(User * u)
tmplvl = usr_mds[i].level;
}
}
nlog(LOG_DEBUG1, LOG_CORE, "Umode Level for %s is %d", u->nick,
tmplvl);
nlog (LOG_DEBUG1, LOG_CORE, "Umode Level for %s is %d", u->nick, tmplvl);
/* I hate SMODEs damn it */
#ifdef ULTIMATE3
for (i = 0; i < ((sizeof(susr_mds) / sizeof(susr_mds[0])) - 1);
i++) {
for (i = 0; i < ((sizeof (susr_mds) / sizeof (susr_mds[0])) - 1); i++) {
if (u->Smode & susr_mds[i].umodes) {
if (susr_mds[i].level > tmplvl)
tmplvl = susr_mds[i].level;
}
}
#endif
nlog(LOG_DEBUG1, LOG_CORE, "Smode Level for %s is %d", u->nick,
tmplvl);
nlog (LOG_DEBUG1, LOG_CORE, "Smode Level for %s is %d", u->nick, tmplvl);
#ifdef DEBUG
#ifdef CODERHACK
/* this is only cause I dun have the right O lines on some of my "Beta" Networks, so I need to hack this in :) */
@ -363,13 +366,13 @@ int UserLevel(User * u)
nlog(LOG_DEBUG1, LOG_CORE, "UserLevel for %s is %d (%d)", u->nick,
tmplvl, i);
nlog (LOG_DEBUG1, LOG_CORE, "UserLevel for %s is %d (%d)", u->nick, tmplvl, i);
return tmplvl;
}
void UserMode(const char *nick, const char *modes, int smode)
void
UserMode (const char *nick, const char *modes, int smode)
{
/* I don't know why, but I spent like 3 hours trying to make this function work and
I finally got it... what a waste of time... gah, oh well... basically, it sets both the User Flags, and also the User Levels..
@ -385,9 +388,7 @@ void UserMode(const char *nick, const char *modes, int smode)
strcpy (segv_location, "UserMode");
u = finduser (nick);
if (!u) {
nlog(LOG_WARNING, LOG_CORE,
"Warning, Changing Modes for a Unknown User %s!",
nick);
nlog (LOG_WARNING, LOG_CORE, "Warning, Changing Modes for a Unknown User %s!", nick);
nlog (LOG_DEBUG1, LOG_CORE, "Recbuf: %s", recbuf);
return;
}
@ -415,39 +416,25 @@ void UserMode(const char *nick, const char *modes, int smode)
break;
default:
if (smode > 0) {
for (i = 0;
i <
((sizeof(susr_mds) /
sizeof(susr_mds[0])) - 1); i++) {
for (i = 0; i < ((sizeof (susr_mds) / sizeof (susr_mds[0])) - 1); i++) {
if (susr_mds[i].mode == tmpmode) {
if (add) {
u->Smode |=
susr_mds[i].
umodes;
u->Smode |= susr_mds[i].umodes;
break;
} else {
u->Smode &=
~susr_mds[i].
umodes;
u->Smode &= ~susr_mds[i].umodes;
break;
}
}
}
} else {
for (i = 0;
i <
((sizeof(usr_mds) /
sizeof(usr_mds[0])) - 1); i++) {
for (i = 0; i < ((sizeof (usr_mds) / sizeof (usr_mds[0])) - 1); i++) {
if (usr_mds[i].mode == tmpmode) {
if (add) {
u->Umode |=
usr_mds[i].
umodes;
u->Umode |= usr_mds[i].umodes;
break;
} else {
u->Umode &=
~usr_mds[i].
umodes;
u->Umode &= ~usr_mds[i].umodes;
break;
}
}
@ -457,12 +444,10 @@ void UserMode(const char *nick, const char *modes, int smode)
tmpmode = *modes++;
}
if (smode > 0) {
nlog(LOG_DEBUG1, LOG_CORE, "SMODE for %s is are now %p",
u->nick, u->Smode);
nlog (LOG_DEBUG1, LOG_CORE, "SMODE for %s is are now %p", u->nick, u->Smode);
Module_Event ("SMODE", av, ac);
} else {
nlog(LOG_DEBUG1, LOG_CORE, "Modes for %s are now %p",
u->nick, u->Umode);
nlog (LOG_DEBUG1, LOG_CORE, "Modes for %s are now %p", u->nick, u->Umode);
Module_Event ("UMODE", av, ac);
}
free (av);