minor updates and bugfixes
This commit is contained in:
parent
ca7e8620b0
commit
acbc8d4a3d
45 changed files with 7504 additions and 7799 deletions
2
.indent.pro
vendored
2
.indent.pro
vendored
|
@ -1 +1 @@
|
||||||
-br -ce -ts8 -kr -i8 -ut -v -cdw
|
-v -br -brs -cdw -ce -l200 -nbc -ut -ts8 -i8
|
394
Bahamut.c
394
Bahamut.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -150,55 +150,60 @@ Oper_Modes usr_mds[] = {
|
||||||
{0, 0, 0}
|
{0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
void init_ircd()
|
void
|
||||||
|
init_ircd ()
|
||||||
{
|
{
|
||||||
/* count the number of commands */
|
/* count the number of commands */
|
||||||
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
|
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,
|
sts (":%s %s %s %d :%s", me.name, MSG_SERVER, name, numeric, infoline);
|
||||||
MSG_SERVER, name, numeric, infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slogin_cmd(const char *name, const int numeric, const char *infoline,
|
int
|
||||||
const char *pass)
|
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
|
||||||
{
|
{
|
||||||
sts ("%s %s :TS", MSG_PASS, pass);
|
sts ("%s %s :TS", MSG_PASS, pass);
|
||||||
sts ("CAPAB TS3 SSJOIN BURST NICKIP");
|
sts ("CAPAB TS3 SSJOIN BURST NICKIP");
|
||||||
sts("%s %s %d :%s", MSG_SERVER, name,
|
sts ("%s %s %d :%s", MSG_SERVER, name, numeric, infoline);
|
||||||
numeric, infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssquit_cmd(const char *server)
|
int
|
||||||
|
ssquit_cmd (const char *server)
|
||||||
{
|
{
|
||||||
sts ("%s %s", MSG_SQUIT, server);
|
sts ("%s %s", MSG_SQUIT, server);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sprotocol_cmd(const char *option)
|
int
|
||||||
|
sprotocol_cmd (const char *option)
|
||||||
{
|
{
|
||||||
return 1;
|
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);
|
sts (":%s %s :%s", who, MSG_QUIT, quitmsg);
|
||||||
DelUser (who);
|
DelUser (who);
|
||||||
return 1;
|
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);
|
sts (":%s %s %s", who, MSG_PART, chan);
|
||||||
part_chan (finduser (who), (char *) chan);
|
part_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
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 flag;
|
||||||
char mode[2];
|
char mode[2];
|
||||||
|
@ -236,16 +241,14 @@ int sjoin_cmd(const char *who, const char *chan, unsigned long chflag)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int schmode_cmd(const char *who, const char *chan, const char *mode,
|
int
|
||||||
const char *args)
|
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac;
|
int ac;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
|
||||||
sts(":%s %s %s %s %s %lu", me.name,
|
sts (":%s %s %s %s %s %lu", me.name, MSG_MODE, chan, mode, args, time (NULL));
|
||||||
MSG_MODE, chan, mode, args,
|
|
||||||
time(NULL));
|
|
||||||
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
||||||
ac = split_buf (tmp, &av, 0);
|
ac = split_buf (tmp, &av, 0);
|
||||||
ChanMode ("", av, ac);
|
ChanMode ("", av, ac);
|
||||||
|
@ -253,8 +256,8 @@ int schmode_cmd(const char *who, const char *chan, const char *mode,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
int
|
||||||
const char *realname, long mode)
|
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname, long mode)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -268,22 +271,21 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts("%s %s 1 %lu %s %s %s %s 0 %lu :%s",
|
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);
|
||||||
MSG_NICK, nick, time(NULL), newmode,
|
|
||||||
ident, host, me.name, time(NULL), realname);
|
|
||||||
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
||||||
UserMode (nick, newmode, 0);
|
UserMode (nick, newmode, 0);
|
||||||
return 1;
|
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,
|
sts (":%s %s %s :%s", from, MSG_PING, reply, to);
|
||||||
to);
|
|
||||||
return 1;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -297,14 +299,13 @@ int sumode_cmd(const char *who, const char *target, long mode)
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts(":%s %s %s :%s", who, MSG_MODE, target,
|
sts (":%s %s %s :%s", who, MSG_MODE, target, newmode);
|
||||||
newmode);
|
|
||||||
UserMode (target, newmode, 0);
|
UserMode (target, newmode, 0);
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -315,160 +316,150 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spong_cmd(const char *reply)
|
int
|
||||||
|
spong_cmd (const char *reply)
|
||||||
{
|
{
|
||||||
sts ("%s %s", MSG_PONG, reply);
|
sts ("%s %s", MSG_PONG, reply);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
int snetinfo_cmd()
|
int
|
||||||
|
snetinfo_cmd ()
|
||||||
{
|
{
|
||||||
sts(":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO,
|
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);
|
||||||
time(NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", from, MSG_KILL,
|
sts (":%s %s %s :%s", from, MSG_KILL, target, buf);
|
||||||
target, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
DelUser (target);
|
DelUser (target);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvskill_cmd(const char *who, const char *reason, ...)
|
int
|
||||||
|
ssvskill_cmd (const char *who, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", me.name, MSG_SVSKILL,
|
sts (":%s %s %s :%s", me.name, MSG_SVSKILL, who, buf);
|
||||||
who, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
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,
|
chanalert (s_Services, "Warning, Module %s tried to SMO, which is not supported in Bahamut", segvinmodule);
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Bahamut",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Bahamut", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Bahamut",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
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);
|
Change_User (finduser (oldnick), newnick);
|
||||||
sts(":%s %s %s %d", oldnick, MSG_NICK,
|
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
|
||||||
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));
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvsjoin_cmd(const char *target, const char *chan)
|
int
|
||||||
|
sswhois_cmd (const char *target, const char *swhois)
|
||||||
{
|
{
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Bahamut", segvinmodule);
|
||||||
"Warning Module %s tried to SVSJOIN, which is not supported in Bahamut",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Bahamut", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning. Module %s tried to SVSJOIN, which is not supported in Bahamut",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvspart_cmd(const char *target, const char *chan)
|
int
|
||||||
|
ssvsnick_cmd (const char *target, const char *newnick)
|
||||||
{
|
{
|
||||||
chanalert(s_Services,
|
sts ("%s %s %s :%d", MSG_SVSNICK, target, newnick, time (NULL));
|
||||||
"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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int skick_cmd(const char *who, const char *target, const char *chan,
|
int
|
||||||
const char *reason)
|
ssvsjoin_cmd (const char *target, const char *chan)
|
||||||
{
|
{
|
||||||
sts(":%s %s %s %s :%s", who, MSG_KICK,
|
chanalert (s_Services, "Warning Module %s tried to SVSJOIN, which is not supported in Bahamut", segvinmodule);
|
||||||
chan, target, (reason ? reason : "No Reason Given"));
|
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);
|
part_chan (finduser (target), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int swallops_cmd(const char *who, const char *msg, ...)
|
|
||||||
|
int
|
||||||
|
swallops_cmd (const char *who, const char *msg, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, msg);
|
va_start (ap, msg);
|
||||||
vsnprintf (buf, 512, msg, ap);
|
vsnprintf (buf, 512, msg, ap);
|
||||||
sts(":%s %s :%s", who, MSG_WALLOPS,
|
sts (":%s %s :%s", who, MSG_WALLOPS, buf);
|
||||||
buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvshost_cmd(const char *who, const char *vhost)
|
int
|
||||||
|
ssvshost_cmd (const char *who, const char *vhost)
|
||||||
{
|
{
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Warning Module %s tried to SVSHOST, which is not supported in Bahamut", segvinmodule);
|
||||||
"Warning Module %s tried to SVSHOST, which is not supported in Bahamut",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSHOST, which is not supported in Bahamut", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning. Module %s tried to SVSHOST, which is not supported in Bahamut",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s %s %d %s %d :%s", me.name,
|
sts (":%s %s %s %s %d %s %d :%s", me.name, MSG_AKILL, host, ident, length, setby, time (NULL), buf);
|
||||||
MSG_AKILL, host, ident, length, setby,
|
|
||||||
time(NULL), buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
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,
|
sts (":%s %s %s %s", me.name, MSG_RAKILL, host, ident);
|
||||||
host, ident);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ssvinfo_cmd()
|
int
|
||||||
|
ssvinfo_cmd ()
|
||||||
{
|
{
|
||||||
sts ("SVINFO 3 3 0 :%d", time (NULL));
|
sts ("SVINFO 3 3 0 :%d", time (NULL));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int sburst_cmd(int b)
|
|
||||||
|
int
|
||||||
|
sburst_cmd (int b)
|
||||||
{
|
{
|
||||||
if (b == 0) {
|
if (b == 0) {
|
||||||
sts ("BURST 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;
|
va_list ap;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
@ -489,13 +481,14 @@ void chanalert(char *who, char *buf, ...)
|
||||||
vsnprintf (tmp, 512, buf, ap);
|
vsnprintf (tmp, 512, buf, ap);
|
||||||
|
|
||||||
if (me.onchan) {
|
if (me.onchan) {
|
||||||
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
|
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
|
||||||
tmp);
|
|
||||||
sts ("%s", out);
|
sts ("%s", out);
|
||||||
}
|
}
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void prefmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
prefmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
@ -503,9 +496,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (me.want_privmsg) {
|
if (me.want_privmsg) {
|
||||||
|
@ -516,15 +507,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
sts ("%s", buf);
|
sts ("%s", buf);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void privmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
privmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -535,15 +526,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void notice(char *to, const char *from, char *fmt, ...)
|
void
|
||||||
|
notice (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
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) {
|
while (*text) {
|
||||||
if (**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;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
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];
|
char nick[MAXNICK];
|
||||||
long mode = 0;
|
long mode = 0;
|
||||||
|
@ -615,22 +608,17 @@ printf("%s\n", modes);
|
||||||
goto nomodes;
|
goto nomodes;
|
||||||
}
|
}
|
||||||
while (*modes) {
|
while (*modes) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
|
|
||||||
i++) {
|
|
||||||
if (*modes == cFlagTab[i].flag) {
|
if (*modes == cFlagTab[i].flag) {
|
||||||
if (cFlagTab[i].parameters) {
|
if (cFlagTab[i].parameters) {
|
||||||
m = smalloc (sizeof (ModesParm));
|
m = smalloc (sizeof (ModesParm));
|
||||||
m->mode = cFlagTab[i].mode;
|
m->mode = cFlagTab[i].mode;
|
||||||
strncpy(m->param, argv[j],
|
strncpy (m->param, argv[j], PARAMSIZE);
|
||||||
PARAMSIZE);
|
|
||||||
mn = lnode_create (m);
|
mn = lnode_create (m);
|
||||||
if (!list_isfull (tl)) {
|
if (!list_isfull (tl)) {
|
||||||
list_append (tl, mn);
|
list_append (tl, mn);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_CRITICAL,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
||||||
LOG_CORE,
|
|
||||||
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
|
@ -646,10 +634,7 @@ printf("%s\n", modes);
|
||||||
modes = argv[j];
|
modes = argv[j];
|
||||||
mode = 0;
|
mode = 0;
|
||||||
while (ok == 1) {
|
while (ok == 1) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
|
||||||
1); i++) {
|
|
||||||
if (cFlagTab[i].sjoin != 0) {
|
if (cFlagTab[i].sjoin != 0) {
|
||||||
if (*modes == cFlagTab[i].sjoin) {
|
if (*modes == cFlagTab[i].sjoin) {
|
||||||
mode |= cFlagTab[i].mode;
|
mode |= cFlagTab[i].mode;
|
||||||
|
@ -665,8 +650,7 @@ printf("%s\n", modes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
join_chan (finduser (nick), argv[1]);
|
join_chan (finduser (nick), argv[1]);
|
||||||
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
|
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
|
||||||
mode);
|
|
||||||
j++;
|
j++;
|
||||||
ok = 1;
|
ok = 1;
|
||||||
}
|
}
|
||||||
|
@ -679,15 +663,15 @@ printf("%s\n", modes);
|
||||||
list_transfer (c->modeparms, tl, list_first (tl));
|
list_transfer (c->modeparms, tl, list_first (tl));
|
||||||
} else {
|
} else {
|
||||||
/* eeeeeeek, list is full! */
|
/* eeeeeeek, list is full! */
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
||||||
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list_destroy (tl);
|
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 (argc > 0) {
|
||||||
if (ircd_srv.burst == 1) {
|
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;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
|
||||||
"Recieved a Message from a Unknown User! (%s)",
|
|
||||||
origin);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ShowStats (argv[0], u);
|
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,
|
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
|
||||||
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);
|
ShowMOTD (origin);
|
||||||
}
|
}
|
||||||
void Usr_ShowADMIN(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_ShowADMIN (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ShowADMIN (origin);
|
ShowADMIN (origin);
|
||||||
}
|
}
|
||||||
void Usr_Showcredits(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Showcredits (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Showcredits (origin);
|
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]));
|
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]);
|
DelServer (argv[0]);
|
||||||
}
|
}
|
||||||
void Usr_DelUser(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_DelUser (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
DelUser (origin);
|
DelUser (origin);
|
||||||
}
|
}
|
||||||
void Usr_Smode(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Smode (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
if (!strchr (argv[0], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
/* its user svsmode change */
|
/* its user svsmode change */
|
||||||
|
@ -758,7 +756,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
|
||||||
ChanMode (origin, argv, 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], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", 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);
|
ChanMode (origin, argv, argc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Kill(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kill (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
KillUser (argv[0]);
|
KillUser (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
|
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Pong(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Pong (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
dopong (s);
|
dopong (s);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
|
||||||
"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;
|
char *Buf;
|
||||||
User *u = finduser (origin);
|
User *u = finduser (origin);
|
||||||
|
@ -804,18 +804,19 @@ void Usr_Away(char *origin, char **argv, int argc)
|
||||||
free (Buf);
|
free (Buf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
|
||||||
"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);
|
User *u = finduser (origin);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[0]);
|
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;
|
char *buf;
|
||||||
Chans *c;
|
Chans *c;
|
||||||
|
@ -825,13 +826,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
|
||||||
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
||||||
free (buf);
|
free (buf);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
|
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Usr_Kick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u, *k;
|
User *u, *k;
|
||||||
u = finduser (argv[1]);
|
u = finduser (argv[1]);
|
||||||
|
@ -839,12 +840,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
|
||||||
if (u) {
|
if (u) {
|
||||||
kick_chan (u, argv[0], k);
|
kick_chan (u, argv[0], k);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
|
||||||
"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;
|
char *s, *t;
|
||||||
t = argv[0];
|
t = argv[0];
|
||||||
|
@ -855,11 +855,14 @@ void Usr_Join(char *origin, char **argv, int argc)
|
||||||
join_chan (finduser (origin), s);
|
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]);
|
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]);
|
spong_cmd (argv[0]);
|
||||||
if (ircd_srv.burst) {
|
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 ();
|
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;
|
Server *s;
|
||||||
if (*origin == 0) {
|
if (*origin == 0) {
|
||||||
|
@ -887,26 +893,27 @@ void Srv_Server(char *origin, char **argv, int argc)
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
me.s = s;
|
me.s = s;
|
||||||
}
|
}
|
||||||
void Srv_Squit(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Srv_Squit (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
DelServer (argv[0]);
|
DelServer (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
|
||||||
"Waring, Squit from Unknown Server %s", argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
|
/* 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;
|
char *realname;
|
||||||
AddUser(argv[0], argv[4], argv[5], argv[6],
|
AddUser (argv[0], argv[4], argv[5], argv[6], strtoul (argv[8], NULL, 10), strtoul (argv[2], NULL, 10));
|
||||||
strtoul(argv[8], NULL, 10), strtoul(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 9);
|
realname = joinbuf (argv, argc, 9);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (realname);
|
free (realname);
|
||||||
|
@ -914,26 +921,27 @@ void Srv_Nick(char *origin, char **argv, int argc)
|
||||||
UserMode (argv[0], argv[3], 0);
|
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;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[1]);
|
Change_User (u, argv[1]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for SVSNICK", argv[0]);
|
||||||
"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,
|
int
|
||||||
const char *host, const char *rname, long Umode)
|
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
|
||||||
{
|
{
|
||||||
|
|
||||||
snewnick_cmd (nick, user, host, rname, Umode);
|
snewnick_cmd (nick, user, host, rname, Umode);
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
|
#ifndef BAHAMUT_H
|
||||||
#define BAHAMUT_H
|
#define BAHAMUT_H
|
||||||
|
|
|
@ -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.
|
- Fixed a core with using strcasecmp instead of strcmp in the parse function.
|
||||||
- Moved is_pub_chan from SecureServ to NeoStats
|
- Moved is_pub_chan from SecureServ to NeoStats
|
||||||
- Implemented Bahamut support and necessary functions
|
- 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
|
* NeoStats * Fish * Version 2.5.4 Pre2
|
||||||
- Fixed a problem with statserv and the HTML settings
|
- Fixed a problem with statserv and the HTML settings
|
||||||
|
|
373
Ircu.c
373
Ircu.c
|
@ -18,7 +18,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -165,28 +165,30 @@ Oper_Modes usr_mds[] = {
|
||||||
{0, 0, 0}
|
{0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
void init_ircd()
|
void
|
||||||
|
init_ircd ()
|
||||||
{
|
{
|
||||||
/* count the number of commands */
|
/* count the number of commands */
|
||||||
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
|
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);
|
sts (":%s %s", server, MSG_EOB);
|
||||||
return 1;
|
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,
|
sts (":%s %s %s %d :%s", me.name, MSG_SERVER, name, numeric, infoline);
|
||||||
infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slogin_cmd(const char *name, const int numeric, const char *infoline,
|
int
|
||||||
const char *pass)
|
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
|
||||||
{
|
{
|
||||||
sts ("%s %s :TS", MSG_PASS, pass);
|
sts ("%s %s :TS", MSG_PASS, pass);
|
||||||
sts ("CAPAB :TS EX CHW IE EOB KLN GLN KNOCK HOPS HUB AOPS MX");
|
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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssquit_cmd(const char *server)
|
int
|
||||||
|
ssquit_cmd (const char *server)
|
||||||
{
|
{
|
||||||
sts ("%s %s", MSG_SQUIT, server);
|
sts ("%s %s", MSG_SQUIT, server);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sprotocol_cmd(const char *option)
|
int
|
||||||
|
sprotocol_cmd (const char *option)
|
||||||
{
|
{
|
||||||
return 1;
|
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);
|
sts (":%s %s :%s", who, MSG_QUIT, quitmsg);
|
||||||
DelUser (who);
|
DelUser (who);
|
||||||
return 1;
|
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);
|
sts (":%s %s %s", who, MSG_PART, chan);
|
||||||
part_chan (finduser (who), (char *) chan);
|
part_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
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);
|
sts (":%s %s 0 %s + :%s", me.name, MSG_SJOIN, chan, who);
|
||||||
join_chan (finduser (who), (char *) chan);
|
join_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int schmode_cmd(const char *who, const char *chan, const char *mode,
|
int
|
||||||
const char *args)
|
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac;
|
int ac;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
|
||||||
sts(":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args,
|
sts (":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args, time (NULL));
|
||||||
time(NULL));
|
|
||||||
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
||||||
ac = split_buf (tmp, &av, 0);
|
ac = split_buf (tmp, &av, 0);
|
||||||
ChanMode ("", av, ac);
|
ChanMode ("", av, ac);
|
||||||
free (av);
|
free (av);
|
||||||
return 1;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -256,20 +263,21 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts("%s %s 1 %lu %s %s %s %s :%s", MSG_NICK, nick, time(NULL),
|
sts ("%s %s 1 %lu %s %s %s %s :%s", MSG_NICK, nick, time (NULL), newmode, ident, host, me.name, realname);
|
||||||
newmode, ident, host, me.name, realname);
|
|
||||||
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
||||||
UserMode (nick, newmode, 0);
|
UserMode (nick, newmode, 0);
|
||||||
return 1;
|
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;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -288,8 +296,8 @@ int sumode_cmd(const char *who, const char *target, long mode)
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -300,15 +308,16 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spong_cmd(const char *reply)
|
int
|
||||||
|
spong_cmd (const char *reply)
|
||||||
{
|
{
|
||||||
sts ("%s %s", MSG_PONG, reply);
|
sts ("%s %s", MSG_PONG, reply);
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -319,89 +328,79 @@ int skill_cmd(const char *from, const char *target, const char *reason,
|
||||||
DelUser (target);
|
DelUser (target);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int ssvskill_cmd(const char *who, const char *reason, ...)
|
|
||||||
|
int
|
||||||
|
ssvskill_cmd (const char *who, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", me.name, MSG_KILL,
|
sts (":%s %s %s :%s", me.name, MSG_KILL, who, buf);
|
||||||
who, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
/* hybrid doesn't have svskill, so this is handled just like a normal kill */
|
/* hybrid doesn't have svskill, so this is handled just like a normal kill */
|
||||||
DelUser (who);
|
DelUser (who);
|
||||||
return 1;
|
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,
|
notice (s_Services, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
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);
|
Change_User (finduser (oldnick), newnick);
|
||||||
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
|
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int sswhois_cmd(const char *target, const char *swhois)
|
|
||||||
|
int
|
||||||
|
sswhois_cmd (const char *target, const char *swhois)
|
||||||
{
|
{
|
||||||
notice(s_Services,
|
notice (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning Module %s tried to SWHOIS, which is not supported in Hybrid",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Hybrid", segvinmodule);
|
||||||
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);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvsjoin_cmd(const char *target, const char *chan)
|
int
|
||||||
|
ssvsnick_cmd (const char *target, const char *newnick)
|
||||||
{
|
{
|
||||||
notice(s_Services,
|
notice (s_Services, "Warning Module %s tried to SVSNICK, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning Module %s tried to SJOIN, which is not supported in Hybrid",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSNICK, which is not supported in Hybrid", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning. Module %s tried to SJOIN, which is not supported in Hybrid",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvspart_cmd(const char *target, const char *chan)
|
int
|
||||||
|
ssvsjoin_cmd (const char *target, const char *chan)
|
||||||
{
|
{
|
||||||
notice(s_Services,
|
notice (s_Services, "Warning Module %s tried to SJOIN, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning Module %s tried to SVSPART, which is not supported in Hybrid",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SJOIN, which is not supported in Hybrid", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning. Module %s tried to SVSPART, which is not supported in Hybrid",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int skick_cmd(const char *who, const char *target, const char *chan,
|
int
|
||||||
const char *reason)
|
ssvspart_cmd (const char *target, const char *chan)
|
||||||
{
|
{
|
||||||
sts(":%s %s %s %s :%s", who, MSG_KICK, chan, target,
|
notice (s_Services, "Warning Module %s tried to SVSPART, which is not supported in Hybrid", segvinmodule);
|
||||||
(reason ? reason : "No Reason Given"));
|
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);
|
part_chan (finduser (target), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int swallops_cmd(const char *who, const char *msg, ...)
|
|
||||||
|
int
|
||||||
|
swallops_cmd (const char *who, const char *msg, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -412,23 +411,23 @@ int swallops_cmd(const char *who, const char *msg, ...)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvshost_cmd(const char *who, const char *vhost)
|
int
|
||||||
|
ssvshost_cmd (const char *who, const char *vhost)
|
||||||
{
|
{
|
||||||
notice(s_Services,
|
notice (s_Services, "Warning Module %s tried to SVSHOST, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning Module %s tried to SVSHOST, which is not supported in Hybrid",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSHOST, which is not supported in Hybrid", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning. Module %s tried to SVSHOST, which is not supported in Hybrid",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvinfo_cmd()
|
int
|
||||||
|
ssvinfo_cmd ()
|
||||||
{
|
{
|
||||||
sts ("SVINFO 5 3 0 :%d", time (NULL));
|
sts ("SVINFO 5 3 0 :%d", time (NULL));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int sburst_cmd(int b)
|
|
||||||
|
int
|
||||||
|
sburst_cmd (int b)
|
||||||
{
|
{
|
||||||
if (b == 0) {
|
if (b == 0) {
|
||||||
sts ("BURST 0");
|
sts ("BURST 0");
|
||||||
|
@ -438,8 +437,8 @@ int sburst_cmd(int b)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sakill_cmd(const char *host, const char *ident, const char *setby,
|
int
|
||||||
const int length, const char *reason, ...)
|
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! */
|
/* there isn't a akill on Hybrid, so we send a kline to all servers! */
|
||||||
hscan_t ss;
|
hscan_t ss;
|
||||||
|
@ -454,21 +453,22 @@ int sakill_cmd(const char *host, const char *ident, const char *setby,
|
||||||
hash_scan_begin (&ss, sh);
|
hash_scan_begin (&ss, sh);
|
||||||
while ((sn = hash_scan_next (&ss)) != NULL) {
|
while ((sn = hash_scan_next (&ss)) != NULL) {
|
||||||
s = hnode_get (sn);
|
s = hnode_get (sn);
|
||||||
sts(":%s %s %s %lu %s %s :%s", setby, MSG_KLINE, s->name,
|
sts (":%s %s %s %lu %s %s :%s", setby, MSG_KLINE, s->name, length, ident, host, buf);
|
||||||
length, ident, host, buf);
|
|
||||||
}
|
}
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int srakill_cmd(const char *host, const char *ident)
|
|
||||||
|
int
|
||||||
|
srakill_cmd (const char *host, const char *ident)
|
||||||
{
|
{
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Please Manually remove KLINES using /unkline on each server");
|
||||||
"Please Manually remove KLINES using /unkline on each server");
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void chanalert(char *who, char *buf, ...)
|
void
|
||||||
|
chanalert (char *who, char *buf, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
@ -477,14 +477,15 @@ void chanalert(char *who, char *buf, ...)
|
||||||
vsnprintf (tmp, 512, buf, ap);
|
vsnprintf (tmp, 512, buf, ap);
|
||||||
|
|
||||||
if (me.onchan) {
|
if (me.onchan) {
|
||||||
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
|
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
|
||||||
tmp);
|
|
||||||
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
||||||
sts ("%s", out);
|
sts ("%s", out);
|
||||||
}
|
}
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void prefmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
prefmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
@ -492,9 +493,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (me.want_privmsg) {
|
if (me.want_privmsg) {
|
||||||
|
@ -505,15 +504,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
sts ("%s", buf);
|
sts ("%s", buf);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void privmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
privmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -524,15 +523,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void notice(char *to, const char *from, char *fmt, ...)
|
void
|
||||||
|
notice (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
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) {
|
while (*text) {
|
||||||
if (**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;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
@ -576,7 +576,8 @@ void globops(char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Sjoin(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Sjoin (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
char nick[MAXNICK];
|
char nick[MAXNICK];
|
||||||
long mode = 0;
|
long mode = 0;
|
||||||
|
@ -603,22 +604,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
goto nomodes;
|
goto nomodes;
|
||||||
}
|
}
|
||||||
while (*modes) {
|
while (*modes) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
|
|
||||||
i++) {
|
|
||||||
if (*modes == cFlagTab[i].flag) {
|
if (*modes == cFlagTab[i].flag) {
|
||||||
if (cFlagTab[i].parameters) {
|
if (cFlagTab[i].parameters) {
|
||||||
m = smalloc (sizeof (ModesParm));
|
m = smalloc (sizeof (ModesParm));
|
||||||
m->mode = cFlagTab[i].mode;
|
m->mode = cFlagTab[i].mode;
|
||||||
strncpy(m->param, argv[j],
|
strncpy (m->param, argv[j], PARAMSIZE);
|
||||||
PARAMSIZE);
|
|
||||||
mn = lnode_create (m);
|
mn = lnode_create (m);
|
||||||
if (!list_isfull (tl)) {
|
if (!list_isfull (tl)) {
|
||||||
list_append (tl, mn);
|
list_append (tl, mn);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_CRITICAL,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
||||||
LOG_CORE,
|
|
||||||
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
|
@ -634,10 +630,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
modes = argv[j];
|
modes = argv[j];
|
||||||
mode = 0;
|
mode = 0;
|
||||||
while (ok == 1) {
|
while (ok == 1) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
|
||||||
1); i++) {
|
|
||||||
if (cFlagTab[i].sjoin != 0) {
|
if (cFlagTab[i].sjoin != 0) {
|
||||||
if (*modes == cFlagTab[i].sjoin) {
|
if (*modes == cFlagTab[i].sjoin) {
|
||||||
mode |= cFlagTab[i].mode;
|
mode |= cFlagTab[i].mode;
|
||||||
|
@ -650,8 +643,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
join_chan (finduser (nick), argv[1]);
|
join_chan (finduser (nick), argv[1]);
|
||||||
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
|
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
|
||||||
mode);
|
|
||||||
j++;
|
j++;
|
||||||
ok = 1;
|
ok = 1;
|
||||||
}
|
}
|
||||||
|
@ -662,15 +654,15 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
list_transfer (c->modeparms, tl, list_first (tl));
|
list_transfer (c->modeparms, tl, list_first (tl));
|
||||||
} else {
|
} else {
|
||||||
/* eeeeeeek, list is full! */
|
/* eeeeeeek, list is full! */
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
||||||
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list_destroy (tl);
|
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 (argc > 0) {
|
||||||
if (ircd_srv.burst == 1) {
|
if (ircd_srv.burst == 1) {
|
||||||
|
@ -686,7 +678,8 @@ void Srv_Burst(char *origin, char **argv, int argc)
|
||||||
init_ServBot ();
|
init_ServBot ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Connect(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Connect (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
int i;
|
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;
|
User *u;
|
||||||
|
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
|
||||||
"Recieved a Message from a Unknown User! (%s)",
|
|
||||||
origin);
|
|
||||||
}
|
}
|
||||||
ShowStats (argv[0], u);
|
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,
|
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
|
||||||
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);
|
ShowMOTD (origin);
|
||||||
}
|
}
|
||||||
void Usr_ShowADMIN(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_ShowADMIN (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ShowADMIN (origin);
|
ShowADMIN (origin);
|
||||||
}
|
}
|
||||||
void Usr_Showcredits(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Showcredits (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Showcredits (origin);
|
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]));
|
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]);
|
DelServer (argv[0]);
|
||||||
}
|
}
|
||||||
void Usr_DelUser(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_DelUser (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
DelUser (origin);
|
DelUser (origin);
|
||||||
}
|
}
|
||||||
void Usr_Smode(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Smode (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
if (!strchr (argv[0], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
/* its user svsmode change */
|
/* its user svsmode change */
|
||||||
|
@ -750,7 +756,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
|
||||||
ChanMode (origin, argv, 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], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", 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);
|
ChanMode (origin, argv, argc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Kill(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kill (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
KillUser (argv[0]);
|
KillUser (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
|
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Vhost(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Vhost (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
|
@ -778,18 +786,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
|
||||||
strncpy (u->vhost, argv[0], MAXHOST);
|
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;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
dopong (s);
|
dopong (s);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
|
||||||
"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);
|
User *u = finduser (origin);
|
||||||
char *buf;
|
char *buf;
|
||||||
|
@ -804,22 +813,22 @@ void Usr_Away(char *origin, char **argv, int argc)
|
||||||
free (buf);
|
free (buf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
|
||||||
"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);
|
User *u = finduser (origin);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[0]);
|
Change_User (u, argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Ehh, Can't find the user for %s", origin);
|
||||||
"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;
|
char *buf;
|
||||||
Chans *c;
|
Chans *c;
|
||||||
|
@ -829,25 +838,24 @@ void Usr_Topic(char *origin, char **argv, int argc)
|
||||||
Change_Topic (origin, c, time (NULL), buf);
|
Change_Topic (origin, c, time (NULL), buf);
|
||||||
free (buf);
|
free (buf);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
|
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Usr_Kick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[1]);
|
u = finduser (argv[1]);
|
||||||
if (u) {
|
if (u) {
|
||||||
kick_chan (u, argv[0]);
|
kick_chan (u, argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
|
||||||
"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;
|
char *s, *t;
|
||||||
t = argv[0];
|
t = argv[0];
|
||||||
|
@ -858,21 +866,26 @@ void Usr_Join(char *origin, char **argv, int argc)
|
||||||
join_chan (finduser (origin), s);
|
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]);
|
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]);
|
spong_cmd (argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Svinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Svinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ssvinfo_cmd ();
|
ssvinfo_cmd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Netinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Netinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
me.onchan = 1;
|
me.onchan = 1;
|
||||||
ircd_srv.uprot = atoi (argv[2]);
|
ircd_srv.uprot = atoi (argv[2]);
|
||||||
|
@ -887,10 +900,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
|
||||||
me.synced = 1;
|
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;
|
Server *s;
|
||||||
if (*origin == 0) {
|
if (*origin == 0) {
|
||||||
|
@ -901,27 +916,28 @@ void Srv_Server(char *origin, char **argv, int argc)
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
me.s = s;
|
me.s = s;
|
||||||
}
|
}
|
||||||
void Srv_Squit(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Srv_Squit (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
DelServer (argv[0]);
|
DelServer (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
|
||||||
"Waring, Squit from Unknown Server %s", argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
|
/* 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;
|
char *realname;
|
||||||
|
|
||||||
AddUser(argv[0], argv[4], argv[5], argv[6], 0,
|
AddUser (argv[0], argv[4], argv[5], argv[6], 0, strtoul (argv[2], NULL, 10));
|
||||||
strtoul(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 7);
|
realname = joinbuf (argv, argc, 7);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (realname);
|
free (realname);
|
||||||
|
@ -929,12 +945,13 @@ void Srv_Nick(char *origin, char **argv, int argc)
|
||||||
UserMode (argv[0], argv[3], 0);
|
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,
|
int
|
||||||
const char *rname, long Umode)
|
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
|
||||||
{
|
{
|
||||||
snewnick_cmd (nick, user, host, rname, Umode);
|
snewnick_cmd (nick, user, host, rname, Umode);
|
||||||
|
|
||||||
|
|
2
Ircu.h
2
Ircu.h
|
@ -18,7 +18,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
403
QuantumIRCd.c
403
QuantumIRCd.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -298,55 +298,60 @@ Oper_Modes susr_mds[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void init_ircd()
|
void
|
||||||
|
init_ircd ()
|
||||||
{
|
{
|
||||||
/* count the number of commands */
|
/* count the number of commands */
|
||||||
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
|
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,
|
sts (":%s %s %s %d :%s", me.name, (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
||||||
(me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slogin_cmd(const char *name, const int numeric, const char *infoline,
|
int
|
||||||
const char *pass)
|
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 ("%s %s :TS", (me.token ? TOK_PASS : MSG_PASS), pass);
|
||||||
sts ("CAPAB TS5 BURST SSJ5 NICKIP CLIENT");
|
sts ("CAPAB TS5 BURST SSJ5 NICKIP CLIENT");
|
||||||
sts("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name,
|
sts ("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
||||||
numeric, infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssquit_cmd(const char *server)
|
int
|
||||||
|
ssquit_cmd (const char *server)
|
||||||
{
|
{
|
||||||
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
|
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sprotocol_cmd(const char *option)
|
int
|
||||||
|
sprotocol_cmd (const char *option)
|
||||||
{
|
{
|
||||||
return 1;
|
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);
|
sts (":%s %s :%s", who, (me.token ? TOK_QUIT : MSG_QUIT), quitmsg);
|
||||||
DelUser (who);
|
DelUser (who);
|
||||||
return 1;
|
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);
|
sts (":%s %s %s", who, (me.token ? TOK_PART : MSG_PART), chan);
|
||||||
part_chan (finduser (who), (char *) chan);
|
part_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
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 flag;
|
||||||
char mode[2];
|
char mode[2];
|
||||||
|
@ -392,16 +397,14 @@ int sjoin_cmd(const char *who, const char *chan, unsigned long chflag)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int schmode_cmd(const char *who, const char *chan, const char *mode,
|
int
|
||||||
const char *args)
|
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac;
|
int ac;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
|
||||||
sts(":%s %s %s %s %s %lu", me.name,
|
sts (":%s %s %s %s %s %lu", me.name, (me.token ? TOK_MODE : MSG_MODE), chan, mode, args, time (NULL));
|
||||||
(me.token ? TOK_MODE : MSG_MODE), chan, mode, args,
|
|
||||||
time(NULL));
|
|
||||||
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
||||||
ac = split_buf (tmp, &av, 0);
|
ac = split_buf (tmp, &av, 0);
|
||||||
ChanMode ("", av, ac);
|
ChanMode ("", av, ac);
|
||||||
|
@ -409,8 +412,8 @@ int schmode_cmd(const char *who, const char *chan, const char *mode,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
int
|
||||||
const char *realname, long mode)
|
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname, long mode)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -424,22 +427,21 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts("%s %s 1 %lu %s %s %s %s 0 %lu :%s",
|
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);
|
||||||
(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));
|
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
||||||
UserMode (nick, newmode, 0);
|
UserMode (nick, newmode, 0);
|
||||||
return 1;
|
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,
|
sts (":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply, to);
|
||||||
to);
|
|
||||||
return 1;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -453,14 +455,13 @@ int sumode_cmd(const char *who, const char *target, long mode)
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts(":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target,
|
sts (":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target, newmode);
|
||||||
newmode);
|
|
||||||
UserMode (target, newmode, 0);
|
UserMode (target, newmode, 0);
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -471,164 +472,160 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spong_cmd(const char *reply)
|
int
|
||||||
|
spong_cmd (const char *reply)
|
||||||
{
|
{
|
||||||
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
|
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int snetinfo_cmd()
|
int
|
||||||
|
snetinfo_cmd ()
|
||||||
{
|
{
|
||||||
sts(":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO,
|
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);
|
||||||
time(NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
|
|
||||||
return 1;
|
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,
|
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);
|
||||||
ircd_srv.uprot, ircd_srv.nicklg, ircd_srv.modex, ircd_srv.gc,
|
|
||||||
me.netname);
|
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL),
|
sts (":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL), target, buf);
|
||||||
target, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
DelUser (target);
|
DelUser (target);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvskill_cmd(const char *who, const char *reason, ...)
|
int
|
||||||
|
ssvskill_cmd (const char *who, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", me.name, MSG_SVSKILL,
|
sts (":%s %s %s :%s", me.name, MSG_SVSKILL, who, buf);
|
||||||
who, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
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,
|
chanalert (s_Services, "Warning, Module %s tried to SMO, which is not supported in Ultimate", segvinmodule);
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Ultimate",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Ultimate", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Ultimate",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
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);
|
Change_User (finduser (oldnick), newnick);
|
||||||
sts(":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK),
|
sts (":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK), newnick, time (NULL));
|
||||||
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));
|
|
||||||
return 1;
|
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,
|
chanalert (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Ultimate", segvinmodule);
|
||||||
chan);
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Ultimate", segvinmodule);
|
||||||
return 1;
|
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,
|
sts ("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target, newnick, time (NULL));
|
||||||
chan);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int skick_cmd(const char *who, const char *target, const char *chan,
|
int
|
||||||
const char *reason)
|
ssvsjoin_cmd (const char *target, const char *chan)
|
||||||
{
|
{
|
||||||
sts(":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK),
|
sts ("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target, chan);
|
||||||
chan, target, (reason ? reason : "No Reason Given"));
|
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);
|
part_chan (finduser (target), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int swallops_cmd(const char *who, const char *msg, ...)
|
|
||||||
|
int
|
||||||
|
swallops_cmd (const char *who, const char *msg, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, msg);
|
va_start (ap, msg);
|
||||||
vsnprintf (buf, 512, msg, ap);
|
vsnprintf (buf, 512, msg, ap);
|
||||||
sts(":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS),
|
sts (":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS), buf);
|
||||||
buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvshost_cmd(const char *who, const char *vhost)
|
int
|
||||||
|
ssvshost_cmd (const char *who, const char *vhost)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (who);
|
u = finduser (who);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Can't Find user %s for ssvshost_cmd", who);
|
||||||
"Can't Find user %s for ssvshost_cmd", who);
|
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
strncpy (u->vhost, vhost, MAXHOST);
|
strncpy (u->vhost, vhost, MAXHOST);
|
||||||
sts(":%s %s %s %s", me.name,
|
sts (":%s %s %s %s", me.name, (me.token ? TOK_SETHOST : MSG_SETHOST), who, vhost);
|
||||||
(me.token ? TOK_SETHOST : MSG_SETHOST), who, vhost);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int sakill_cmd(const char *host, const char *ident, const char *setby,
|
int
|
||||||
const int length, const char *reason, ...)
|
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s %s %d %s %d :%s", me.name,
|
sts (":%s %s %s %s %d %s %d :%s", me.name, (me.token ? TOK_AKILL : MSG_AKILL), host, ident, length, setby, time (NULL), buf);
|
||||||
(me.token ? TOK_AKILL : MSG_AKILL), host, ident, length, setby,
|
|
||||||
time(NULL), buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
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),
|
sts (":%s %s %s %s", me.name, (me.token ? TOK_RAKILL : MSG_RAKILL), host, ident);
|
||||||
host, ident);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ssvinfo_cmd()
|
int
|
||||||
|
ssvinfo_cmd ()
|
||||||
{
|
{
|
||||||
sts ("SVINFO 5 3 0 :%d", time (NULL));
|
sts ("SVINFO 5 3 0 :%d", time (NULL));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int sburst_cmd(int b)
|
|
||||||
|
int
|
||||||
|
sburst_cmd (int b)
|
||||||
{
|
{
|
||||||
if (b == 0) {
|
if (b == 0) {
|
||||||
sts ("BURST 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;
|
va_list ap;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
@ -649,14 +647,15 @@ void chanalert(char *who, char *buf, ...)
|
||||||
vsnprintf (tmp, 512, buf, ap);
|
vsnprintf (tmp, 512, buf, ap);
|
||||||
|
|
||||||
if (me.onchan) {
|
if (me.onchan) {
|
||||||
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
|
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
|
||||||
tmp);
|
|
||||||
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
||||||
sts ("%s", out);
|
sts ("%s", out);
|
||||||
}
|
}
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void prefmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
prefmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
@ -664,9 +663,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (me.want_privmsg) {
|
if (me.want_privmsg) {
|
||||||
|
@ -677,15 +674,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
sts ("%s", buf);
|
sts ("%s", buf);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void privmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
privmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -696,15 +693,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void notice(char *to, const char *from, char *fmt, ...)
|
void
|
||||||
|
notice (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
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) {
|
while (*text) {
|
||||||
if (**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;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
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];
|
char nick[MAXNICK];
|
||||||
long mode = 0;
|
long mode = 0;
|
||||||
|
@ -776,22 +775,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
goto nomodes;
|
goto nomodes;
|
||||||
}
|
}
|
||||||
while (*modes) {
|
while (*modes) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
|
|
||||||
i++) {
|
|
||||||
if (*modes == cFlagTab[i].flag) {
|
if (*modes == cFlagTab[i].flag) {
|
||||||
if (cFlagTab[i].parameters) {
|
if (cFlagTab[i].parameters) {
|
||||||
m = smalloc (sizeof (ModesParm));
|
m = smalloc (sizeof (ModesParm));
|
||||||
m->mode = cFlagTab[i].mode;
|
m->mode = cFlagTab[i].mode;
|
||||||
strncpy(m->param, argv[j],
|
strncpy (m->param, argv[j], PARAMSIZE);
|
||||||
PARAMSIZE);
|
|
||||||
mn = lnode_create (m);
|
mn = lnode_create (m);
|
||||||
if (!list_isfull (tl)) {
|
if (!list_isfull (tl)) {
|
||||||
list_append (tl, mn);
|
list_append (tl, mn);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_CRITICAL,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
||||||
LOG_CORE,
|
|
||||||
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
|
@ -807,10 +801,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
modes = argv[j];
|
modes = argv[j];
|
||||||
mode = 0;
|
mode = 0;
|
||||||
while (ok == 1) {
|
while (ok == 1) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
|
||||||
1); i++) {
|
|
||||||
if (cFlagTab[i].sjoin != 0) {
|
if (cFlagTab[i].sjoin != 0) {
|
||||||
if (*modes == cFlagTab[i].sjoin) {
|
if (*modes == cFlagTab[i].sjoin) {
|
||||||
mode |= cFlagTab[i].mode;
|
mode |= cFlagTab[i].mode;
|
||||||
|
@ -826,8 +817,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
join_chan (finduser (nick), argv[1]);
|
join_chan (finduser (nick), argv[1]);
|
||||||
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
|
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
|
||||||
mode);
|
|
||||||
j++;
|
j++;
|
||||||
ok = 1;
|
ok = 1;
|
||||||
}
|
}
|
||||||
|
@ -838,15 +828,15 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
list_transfer (c->modeparms, tl, list_first (tl));
|
list_transfer (c->modeparms, tl, list_first (tl));
|
||||||
} else {
|
} else {
|
||||||
/* eeeeeeek, list is full! */
|
/* eeeeeeek, list is full! */
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
||||||
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list_destroy (tl);
|
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 (argc > 0) {
|
||||||
if (ircd_srv.burst == 1) {
|
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;
|
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;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
|
||||||
"Recieved a Message from a Unknown User! (%s)",
|
|
||||||
origin);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ShowStats (argv[0], u);
|
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,
|
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
|
||||||
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);
|
ShowMOTD (origin);
|
||||||
}
|
}
|
||||||
void Usr_ShowADMIN(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_ShowADMIN (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ShowADMIN (origin);
|
ShowADMIN (origin);
|
||||||
}
|
}
|
||||||
void Usr_Showcredits(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Showcredits (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Showcredits (origin);
|
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]));
|
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]);
|
DelServer (argv[0]);
|
||||||
}
|
}
|
||||||
void Usr_DelUser(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_DelUser (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
DelUser (origin);
|
DelUser (origin);
|
||||||
}
|
}
|
||||||
void Usr_Smode(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Smode (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
if (!strchr (argv[0], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
/* its user svsmode change */
|
/* its user svsmode change */
|
||||||
|
@ -927,7 +931,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
|
||||||
ChanMode (origin, argv, 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], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s %s", argv[0], argv[1]);
|
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);
|
ChanMode (origin, argv, argc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Kill(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kill (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
KillUser (argv[0]);
|
KillUser (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
|
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Vhost(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Vhost (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
|
@ -955,18 +961,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
|
||||||
strncpy (u->vhost, argv[1], MAXHOST);
|
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;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
dopong (s);
|
dopong (s);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
|
||||||
"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;
|
char *Buf;
|
||||||
User *u = finduser (origin);
|
User *u = finduser (origin);
|
||||||
|
@ -981,18 +988,19 @@ void Usr_Away(char *origin, char **argv, int argc)
|
||||||
free (Buf);
|
free (Buf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
|
||||||
"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);
|
User *u = finduser (origin);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[0]);
|
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;
|
char *buf;
|
||||||
Chans *c;
|
Chans *c;
|
||||||
|
@ -1002,13 +1010,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
|
||||||
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
||||||
free (buf);
|
free (buf);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
|
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Usr_Kick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u, *k;
|
User *u, *k;
|
||||||
u = finduser (argv[1]);
|
u = finduser (argv[1]);
|
||||||
|
@ -1016,12 +1024,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
|
||||||
if ((u) && (k)) {
|
if ((u) && (k)) {
|
||||||
kick_chan (u, argv[0], k);
|
kick_chan (u, argv[0], k);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
|
||||||
"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;
|
char *s, *t;
|
||||||
t = argv[0];
|
t = argv[0];
|
||||||
|
@ -1032,11 +1039,14 @@ void Usr_Join(char *origin, char **argv, int argc)
|
||||||
join_chan (finduser (origin), s);
|
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]);
|
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]);
|
spong_cmd (argv[0]);
|
||||||
if (ircd_srv.burst) {
|
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.uprot = atoi (argv[0]);
|
||||||
ircd_srv.nicklg = atoi (argv[1]);
|
ircd_srv.nicklg = atoi (argv[1]);
|
||||||
|
@ -1054,16 +1065,19 @@ void Srv_Vctrl(char *origin, char **argv, int argc)
|
||||||
vctrl_cmd ();
|
vctrl_cmd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Svinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Svinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ssvinfo_cmd ();
|
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;
|
Server *s;
|
||||||
if (*origin == 0) {
|
if (*origin == 0) {
|
||||||
|
@ -1074,26 +1088,27 @@ void Srv_Server(char *origin, char **argv, int argc)
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
me.s = s;
|
me.s = s;
|
||||||
}
|
}
|
||||||
void Srv_Squit(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Srv_Squit (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
DelServer (argv[0]);
|
DelServer (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
|
||||||
"Waring, Squit from Unknown Server %s", argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
|
/* 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;
|
char *realname;
|
||||||
AddUser(argv[0], argv[4], argv[5], argv[6],
|
AddUser (argv[0], argv[4], argv[5], argv[6], strtoul (argv[8], NULL, 10), strtoul (argv[2], NULL, 10));
|
||||||
strtoul(argv[8], NULL, 10), strtoul(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 9);
|
realname = joinbuf (argv, argc, 9);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (realname);
|
free (realname);
|
||||||
|
@ -1102,12 +1117,12 @@ void Srv_Nick(char *origin, char **argv, int argc)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ultimate3 Client Support */
|
/* Ultimate3 Client Support */
|
||||||
void Srv_Client(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Client (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
char *realname;
|
char *realname;
|
||||||
|
|
||||||
AddUser(argv[0], argv[5], argv[6], argv[8],
|
AddUser (argv[0], argv[5], argv[6], argv[8], strtoul (argv[10], NULL, 10), strtoul (argv[2], NULL, 10));
|
||||||
strtoul(argv[10], NULL, 10), strtoul(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 11);
|
realname = joinbuf (argv, argc, 11);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (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);
|
UserMode (argv[0], argv[1], 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* ultimate 3 */
|
/* ultimate 3 */
|
||||||
|
|
||||||
void Srv_Svsnick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Svsnick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[1]);
|
Change_User (u, argv[1]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for SVSNICK", argv[0]);
|
||||||
"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,
|
int
|
||||||
const char *host, const char *rname, long Umode)
|
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
|
||||||
{
|
{
|
||||||
|
|
||||||
snewnick_cmd (nick, user, host, rname, Umode);
|
snewnick_cmd (nick, user, host, rname, Umode);
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
|
#ifndef QUANTUM_H
|
||||||
#define QUANTUM_H
|
#define QUANTUM_H
|
||||||
|
|
420
Ultimate.c
420
Ultimate.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -354,21 +354,22 @@ Oper_Modes usr_mds[] = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void init_ircd()
|
void
|
||||||
|
init_ircd ()
|
||||||
{
|
{
|
||||||
/* count the number of commands */
|
/* count the number of commands */
|
||||||
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
|
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,
|
sts (":%s %s %s %d :%s", me.name, (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
||||||
(me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slogin_cmd(const char *name, const int numeric, const char *infoline,
|
int
|
||||||
const char *pass)
|
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
|
||||||
{
|
{
|
||||||
#ifndef ULTIMATE3
|
#ifndef ULTIMATE3
|
||||||
sts ("%s %s", (me.token ? TOK_PASS : MSG_PASS), pass);
|
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 ("%s %s :TS", (me.token ? TOK_PASS : MSG_PASS), pass);
|
||||||
sts ("CAPAB TS5 BURST SSJ5 NICKIP CLIENT");
|
sts ("CAPAB TS5 BURST SSJ5 NICKIP CLIENT");
|
||||||
#endif
|
#endif
|
||||||
sts("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name,
|
sts ("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
||||||
numeric, infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssquit_cmd(const char *server)
|
int
|
||||||
|
ssquit_cmd (const char *server)
|
||||||
{
|
{
|
||||||
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
|
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sprotocol_cmd(const char *option)
|
int
|
||||||
|
sprotocol_cmd (const char *option)
|
||||||
{
|
{
|
||||||
#ifndef ULTIMATE3
|
#ifndef ULTIMATE3
|
||||||
sts ("%s %s", (me.token ? TOK_PROTOCTL : MSG_PROTOCTL), option);
|
sts ("%s %s", (me.token ? TOK_PROTOCTL : MSG_PROTOCTL), option);
|
||||||
|
@ -395,14 +397,16 @@ int sprotocol_cmd(const char *option)
|
||||||
return 1;
|
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);
|
sts (":%s %s :%s", who, (me.token ? TOK_QUIT : MSG_QUIT), quitmsg);
|
||||||
DelUser (who);
|
DelUser (who);
|
||||||
return 1;
|
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);
|
sts (":%s %s %s", who, (me.token ? TOK_PART : MSG_PART), chan);
|
||||||
part_chan (finduser (who), (char *) chan);
|
part_chan (finduser (who), (char *) chan);
|
||||||
|
@ -410,7 +414,8 @@ int spart_cmd(const char *who, const char *chan)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ULTIMATE3
|
#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 flag;
|
||||||
char mode[2];
|
char mode[2];
|
||||||
|
@ -446,7 +451,8 @@ int sjoin_cmd(const char *who, const char *chan, unsigned long chflag)
|
||||||
free (av);
|
free (av);
|
||||||
|
|
||||||
#else
|
#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);
|
sts (":%s %s %s", who, (me.token ? TOK_JOIN : MSG_JOIN), chan);
|
||||||
join_chan (finduser (who), (char *) chan);
|
join_chan (finduser (who), (char *) chan);
|
||||||
|
@ -454,16 +460,14 @@ int sjoin_cmd(const char *who, const char *chan)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int schmode_cmd(const char *who, const char *chan, const char *mode,
|
int
|
||||||
const char *args)
|
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac;
|
int ac;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
|
||||||
sts(":%s %s %s %s %s %lu", me.name,
|
sts (":%s %s %s %s %s %lu", who, (me.token ? TOK_MODE : MSG_MODE), chan, mode, args, time (NULL));
|
||||||
(me.token ? TOK_MODE : MSG_MODE), chan, mode, args,
|
|
||||||
time(NULL));
|
|
||||||
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
||||||
ac = split_buf (tmp, &av, 0);
|
ac = split_buf (tmp, &av, 0);
|
||||||
ChanMode ("", av, ac);
|
ChanMode ("", av, ac);
|
||||||
|
@ -472,15 +476,14 @@ int schmode_cmd(const char *who, const char *chan, const char *mode,
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef ULTIMATE3
|
#ifndef ULTIMATE3
|
||||||
int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
int
|
||||||
const char *realname)
|
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),
|
sts ("%s %s 1 %lu %s %s %s 0 :%s", (me.token ? TOK_NICK : MSG_NICK), nick, time (NULL), ident, host, me.name, realname);
|
||||||
nick, time(NULL), ident, host, me.name, realname);
|
|
||||||
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
||||||
#else
|
#else
|
||||||
int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
int
|
||||||
const char *realname, long mode)
|
snewnick_cmd (const char *nick, const char *ident, const char *host, const char *realname, long mode)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -494,23 +497,22 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts("%s %s 1 %lu %s %s %s %s 0 %lu :%s",
|
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);
|
||||||
(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));
|
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
||||||
UserMode (nick, newmode, 0);
|
UserMode (nick, newmode, 0);
|
||||||
#endif
|
#endif
|
||||||
return 1;
|
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,
|
sts (":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply, to);
|
||||||
to);
|
|
||||||
return 1;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -524,14 +526,13 @@ int sumode_cmd(const char *who, const char *target, long mode)
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts(":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target,
|
sts (":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target, newmode);
|
||||||
newmode);
|
|
||||||
UserMode (target, newmode, 0);
|
UserMode (target, newmode, 0);
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -542,151 +543,144 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spong_cmd(const char *reply)
|
int
|
||||||
|
spong_cmd (const char *reply)
|
||||||
{
|
{
|
||||||
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
|
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int snetinfo_cmd()
|
int
|
||||||
|
snetinfo_cmd ()
|
||||||
{
|
{
|
||||||
sts(":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO,
|
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);
|
||||||
time(NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
|
|
||||||
return 1;
|
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,
|
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);
|
||||||
ircd_srv.uprot, ircd_srv.nicklg, ircd_srv.modex, ircd_srv.gc,
|
|
||||||
me.netname);
|
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL),
|
sts (":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL), target, buf);
|
||||||
target, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
DelUser (target);
|
DelUser (target);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvskill_cmd(const char *who, const char *reason, ...)
|
int
|
||||||
|
ssvskill_cmd (const char *who, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", me.name, MSG_SVSKILL,
|
sts (":%s %s %s :%s", me.name, MSG_SVSKILL, who, buf);
|
||||||
who, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
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,
|
chanalert (s_Services, "Warning, Module %s tried to SMO, which is not supported in Ultimate", segvinmodule);
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Ultimate",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Ultimate", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Ultimate",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
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);
|
Change_User (finduser (oldnick), newnick);
|
||||||
sts(":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK),
|
sts (":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK), newnick, time (NULL));
|
||||||
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));
|
|
||||||
return 1;
|
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,
|
chanalert (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Ultimate", segvinmodule);
|
||||||
chan);
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Ultimate", segvinmodule);
|
||||||
return 1;
|
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,
|
sts ("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target, newnick, time (NULL));
|
||||||
chan);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int skick_cmd(const char *who, const char *target, const char *chan,
|
int
|
||||||
const char *reason)
|
ssvsjoin_cmd (const char *target, const char *chan)
|
||||||
{
|
{
|
||||||
sts(":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK),
|
sts ("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target, chan);
|
||||||
chan, target, (reason ? reason : "No Reason Given"));
|
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);
|
part_chan (finduser (target), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int swallops_cmd(const char *who, const char *msg, ...)
|
|
||||||
|
int
|
||||||
|
swallops_cmd (const char *who, const char *msg, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, msg);
|
va_start (ap, msg);
|
||||||
vsnprintf (buf, 512, msg, ap);
|
vsnprintf (buf, 512, msg, ap);
|
||||||
sts(":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS),
|
sts (":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS), buf);
|
||||||
buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvshost_cmd(const char *who, const char *vhost)
|
int
|
||||||
|
ssvshost_cmd (const char *who, const char *vhost)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (who);
|
u = finduser (who);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Can't Find user %s for ssvshost_cmd", who);
|
||||||
"Can't Find user %s for ssvshost_cmd", who);
|
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
strncpy (u->vhost, vhost, MAXHOST);
|
strncpy (u->vhost, vhost, MAXHOST);
|
||||||
#ifdef ULTIMATE3
|
#ifdef ULTIMATE3
|
||||||
sts(":%s %s %s %s", me.name,
|
sts (":%s %s %s %s", me.name, (me.token ? TOK_SETHOST : MSG_SETHOST), who, vhost);
|
||||||
(me.token ? TOK_SETHOST : MSG_SETHOST), who, vhost);
|
|
||||||
#elif ULTIMATE
|
#elif ULTIMATE
|
||||||
sts (":%s CHGHOST %s %s", me.name, who, vhost);
|
sts (":%s CHGHOST %s %s", me.name, who, vhost);
|
||||||
#endif
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int sakill_cmd(const char *host, const char *ident, const char *setby,
|
int
|
||||||
const int length, const char *reason, ...)
|
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
#ifdef ULTIMATE3
|
#ifdef ULTIMATE3
|
||||||
sts(":%s %s %s %s %d %s %d :%s", me.name,
|
sts (":%s %s %s %s %d %s %d :%s", me.name, (me.token ? TOK_AKILL : MSG_AKILL), host, ident, length, setby, time (NULL), buf);
|
||||||
(me.token ? TOK_AKILL : MSG_AKILL), host, ident, length, setby,
|
|
||||||
time(NULL), buf);
|
|
||||||
#elif ULTIMATE
|
#elif ULTIMATE
|
||||||
sts (":%s %s %s@%s %d %d %s :%s", me.name, MSG_GLINE, ident, host, time (NULL) + length, time (NULL), setby, buf);
|
sts (":%s %s %s@%s %d %d %s :%s", me.name, MSG_GLINE, ident, host, time (NULL) + length, time (NULL), setby, buf);
|
||||||
#endif
|
#endif
|
||||||
|
@ -694,11 +688,11 @@ int sakill_cmd(const char *host, const char *ident, const char *setby,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int srakill_cmd(const char *host, const char *ident)
|
int
|
||||||
|
srakill_cmd (const char *host, const char *ident)
|
||||||
{
|
{
|
||||||
#ifdef ULTIMATE3
|
#ifdef ULTIMATE3
|
||||||
sts(":%s %s %s %s", me.name, (me.token ? TOK_RAKILL : MSG_RAKILL),
|
sts (":%s %s %s %s", me.name, (me.token ? TOK_RAKILL : MSG_RAKILL), host, ident);
|
||||||
host, ident);
|
|
||||||
#elif ULTIMATE
|
#elif ULTIMATE
|
||||||
/* ultimate2 needs a oper to remove */
|
/* ultimate2 needs a oper to remove */
|
||||||
sts (":%s %s :%s@%s", s_Services, MSG_REMGLINE, host, ident);
|
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));
|
sts ("SVINFO 5 3 0 :%d", time (NULL));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int sburst_cmd(int b)
|
|
||||||
|
int
|
||||||
|
sburst_cmd (int b)
|
||||||
{
|
{
|
||||||
if (b == 0) {
|
if (b == 0) {
|
||||||
sts ("BURST 0");
|
sts ("BURST 0");
|
||||||
|
@ -723,8 +720,8 @@ int sburst_cmd(int b)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
void chanalert(char *who, char *buf, ...)
|
chanalert (char *who, char *buf, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
@ -733,14 +730,15 @@ void chanalert(char *who, char *buf, ...)
|
||||||
vsnprintf (tmp, 512, buf, ap);
|
vsnprintf (tmp, 512, buf, ap);
|
||||||
|
|
||||||
if (me.onchan) {
|
if (me.onchan) {
|
||||||
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
|
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
|
||||||
tmp);
|
|
||||||
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
||||||
sts ("%s", out);
|
sts ("%s", out);
|
||||||
}
|
}
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void prefmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
prefmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
@ -748,9 +746,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (me.want_privmsg) {
|
if (me.want_privmsg) {
|
||||||
|
@ -761,15 +757,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
sts ("%s", buf);
|
sts ("%s", buf);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void privmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
privmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -780,15 +776,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void notice(char *to, const char *from, char *fmt, ...)
|
void
|
||||||
|
notice (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
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) {
|
while (*text) {
|
||||||
if (**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;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
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];
|
char nick[MAXNICK];
|
||||||
long mode = 0;
|
long mode = 0;
|
||||||
|
@ -860,22 +858,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
goto nomodes;
|
goto nomodes;
|
||||||
}
|
}
|
||||||
while (*modes) {
|
while (*modes) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
|
|
||||||
i++) {
|
|
||||||
if (*modes == cFlagTab[i].flag) {
|
if (*modes == cFlagTab[i].flag) {
|
||||||
if (cFlagTab[i].parameters) {
|
if (cFlagTab[i].parameters) {
|
||||||
m = smalloc (sizeof (ModesParm));
|
m = smalloc (sizeof (ModesParm));
|
||||||
m->mode = cFlagTab[i].mode;
|
m->mode = cFlagTab[i].mode;
|
||||||
strncpy(m->param, argv[j],
|
strncpy (m->param, argv[j], PARAMSIZE);
|
||||||
PARAMSIZE);
|
|
||||||
mn = lnode_create (m);
|
mn = lnode_create (m);
|
||||||
if (!list_isfull (tl)) {
|
if (!list_isfull (tl)) {
|
||||||
list_append (tl, mn);
|
list_append (tl, mn);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_CRITICAL,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
||||||
LOG_CORE,
|
|
||||||
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
|
@ -891,10 +884,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
modes = argv[j];
|
modes = argv[j];
|
||||||
mode = 0;
|
mode = 0;
|
||||||
while (ok == 1) {
|
while (ok == 1) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
|
||||||
1); i++) {
|
|
||||||
if (cFlagTab[i].sjoin != 0) {
|
if (cFlagTab[i].sjoin != 0) {
|
||||||
if (*modes == cFlagTab[i].sjoin) {
|
if (*modes == cFlagTab[i].sjoin) {
|
||||||
mode |= cFlagTab[i].mode;
|
mode |= cFlagTab[i].mode;
|
||||||
|
@ -910,8 +900,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
join_chan (finduser (nick), argv[1]);
|
join_chan (finduser (nick), argv[1]);
|
||||||
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
|
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
|
||||||
mode);
|
|
||||||
j++;
|
j++;
|
||||||
ok = 1;
|
ok = 1;
|
||||||
}
|
}
|
||||||
|
@ -922,15 +911,15 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
list_transfer (c->modeparms, tl, list_first (tl));
|
list_transfer (c->modeparms, tl, list_first (tl));
|
||||||
} else {
|
} else {
|
||||||
/* eeeeeeek, list is full! */
|
/* eeeeeeek, list is full! */
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
||||||
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list_destroy (tl);
|
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 (argc > 0) {
|
||||||
if (ircd_srv.burst == 1) {
|
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;
|
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;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
|
||||||
"Recieved a Message from a Unknown User! (%s)",
|
|
||||||
origin);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ShowStats (argv[0], u);
|
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,
|
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
|
||||||
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);
|
ShowMOTD (origin);
|
||||||
}
|
}
|
||||||
void Usr_ShowADMIN(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_ShowADMIN (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ShowADMIN (origin);
|
ShowADMIN (origin);
|
||||||
}
|
}
|
||||||
void Usr_Showcredits(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Showcredits (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Showcredits (origin);
|
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]));
|
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]);
|
DelServer (argv[0]);
|
||||||
}
|
}
|
||||||
void Usr_DelUser(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_DelUser (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
DelUser (origin);
|
DelUser (origin);
|
||||||
}
|
}
|
||||||
void Usr_Smode(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Smode (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
if (!strchr (argv[0], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
/* its user svsmode change */
|
/* its user svsmode change */
|
||||||
|
@ -1017,7 +1020,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
|
||||||
ChanMode (origin, argv, 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], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s %s", argv[0], argv[1]);
|
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);
|
ChanMode (origin, argv, argc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Kill(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kill (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
KillUser (argv[0]);
|
KillUser (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
|
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Vhost(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Vhost (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
#ifndef ULTIMATE3
|
#ifndef ULTIMATE3
|
||||||
|
@ -1053,18 +1058,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Pong(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Pong (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
dopong (s);
|
dopong (s);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
|
||||||
"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;
|
char *Buf;
|
||||||
User *u = finduser (origin);
|
User *u = finduser (origin);
|
||||||
|
@ -1079,18 +1085,19 @@ void Usr_Away(char *origin, char **argv, int argc)
|
||||||
free (Buf);
|
free (Buf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
|
||||||
"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);
|
User *u = finduser (origin);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[0]);
|
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;
|
char *buf;
|
||||||
Chans *c;
|
Chans *c;
|
||||||
|
@ -1100,13 +1107,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
|
||||||
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
||||||
free (buf);
|
free (buf);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
|
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Usr_Kick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u, *k;
|
User *u, *k;
|
||||||
u = finduser (argv[1]);
|
u = finduser (argv[1]);
|
||||||
|
@ -1114,12 +1121,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
|
||||||
if ((u) && (k)) {
|
if ((u) && (k)) {
|
||||||
kick_chan (u, argv[0], k);
|
kick_chan (u, argv[0], k);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
|
||||||
"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;
|
char *s, *t;
|
||||||
t = argv[0];
|
t = argv[0];
|
||||||
|
@ -1130,11 +1136,14 @@ void Usr_Join(char *origin, char **argv, int argc)
|
||||||
join_chan (finduser (origin), s);
|
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]);
|
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]);
|
spong_cmd (argv[0]);
|
||||||
#ifdef ULTIMATE3
|
#ifdef ULTIMATE3
|
||||||
|
@ -1144,7 +1153,8 @@ void Srv_Ping(char *origin, char **argv, int argc)
|
||||||
#endif
|
#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.uprot = atoi (argv[0]);
|
||||||
ircd_srv.nicklg = atoi (argv[1]);
|
ircd_srv.nicklg = atoi (argv[1]);
|
||||||
|
@ -1154,13 +1164,15 @@ void Srv_Vctrl(char *origin, char **argv, int argc)
|
||||||
vctrl_cmd ();
|
vctrl_cmd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Svinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Svinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ssvinfo_cmd ();
|
ssvinfo_cmd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef ULTIMATE3
|
#ifndef ULTIMATE3
|
||||||
void Srv_Netinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Netinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
me.onchan = 1;
|
me.onchan = 1;
|
||||||
ircd_srv.uprot = atoi (argv[2]);
|
ircd_srv.uprot = atoi (argv[2]);
|
||||||
|
@ -1181,10 +1193,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
|
||||||
}
|
}
|
||||||
#endif
|
#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;
|
Server *s;
|
||||||
if (*origin == 0) {
|
if (*origin == 0) {
|
||||||
|
@ -1195,35 +1209,35 @@ void Srv_Server(char *origin, char **argv, int argc)
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
me.s = s;
|
me.s = s;
|
||||||
}
|
}
|
||||||
void Srv_Squit(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Srv_Squit (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
DelServer (argv[0]);
|
DelServer (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
|
||||||
"Waring, Squit from Unknown Server %s", argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
|
/* 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;
|
char *realname;
|
||||||
#if ULTIMATE3
|
#if ULTIMATE3
|
||||||
AddUser(argv[0], argv[4], argv[5], argv[6],
|
AddUser (argv[0], argv[4], argv[5], argv[6], strtoul (argv[8], NULL, 10), strtoul (argv[2], NULL, 10));
|
||||||
strtoul(argv[8], NULL, 10), strtoul(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 9);
|
realname = joinbuf (argv, argc, 9);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (realname);
|
free (realname);
|
||||||
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[3]);
|
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[3]);
|
||||||
UserMode (argv[0], argv[3], 0);
|
UserMode (argv[0], argv[3], 0);
|
||||||
#elif ULTIMATE
|
#elif ULTIMATE
|
||||||
AddUser(argv[0], argv[3], argv[4], argv[5], 0,
|
AddUser (argv[0], argv[3], argv[4], argv[5], 0, strtoul (argv[2], NULL, 10));
|
||||||
strtoul(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 7);
|
realname = joinbuf (argv, argc, 7);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (realname);
|
free (realname);
|
||||||
|
@ -1232,12 +1246,12 @@ void Srv_Nick(char *origin, char **argv, int argc)
|
||||||
|
|
||||||
/* Ultimate3 Client Support */
|
/* Ultimate3 Client Support */
|
||||||
#ifdef ULTIMATE3
|
#ifdef ULTIMATE3
|
||||||
void Srv_Client(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Client (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
char *realname;
|
char *realname;
|
||||||
|
|
||||||
AddUser(argv[0], argv[5], argv[6], argv[8],
|
AddUser (argv[0], argv[5], argv[6], argv[8], strtoul (argv[10], NULL, 10), strtoul (argv[2], NULL, 10));
|
||||||
strtoul(argv[10], NULL, 10), strtoul(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 11);
|
realname = joinbuf (argv, argc, 11);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (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);
|
UserMode (argv[0], argv[1], 1);
|
||||||
};
|
};
|
||||||
|
@ -1256,26 +1271,27 @@ void Srv_Smode(char *origin, char **argv, int argc)
|
||||||
/* ultimate 3 */
|
/* ultimate 3 */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void Srv_Svsnick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Svsnick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[1]);
|
Change_User (u, argv[1]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for SVSNICK", argv[0]);
|
||||||
"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,
|
int
|
||||||
const char *host, const char *rname, long Umode)
|
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef ULTIMATE3
|
#ifdef ULTIMATE3
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
|
#ifndef ULTIMATE_H
|
||||||
#define ULTIMATE_H
|
#define ULTIMATE_H
|
||||||
|
|
355
Unreal.c
355
Unreal.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -294,7 +294,8 @@ Oper_Modes usr_mds[] = {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void init_ircd()
|
void
|
||||||
|
init_ircd ()
|
||||||
{
|
{
|
||||||
/* count the number of commands */
|
/* count the number of commands */
|
||||||
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
|
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,
|
sts (":%s %s %s %d :%s", me.name, (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
||||||
(me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slogin_cmd(const char *name, const int numeric, const char *infoline,
|
int
|
||||||
const char *pass)
|
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", (me.token ? TOK_PASS : MSG_PASS), pass);
|
||||||
sts("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name,
|
sts ("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
||||||
numeric, infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssquit_cmd(const char *server)
|
int
|
||||||
|
ssquit_cmd (const char *server)
|
||||||
{
|
{
|
||||||
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
|
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sprotocol_cmd(const char *option)
|
int
|
||||||
|
sprotocol_cmd (const char *option)
|
||||||
{
|
{
|
||||||
sts ("%s %s", (me.token ? TOK_PROTOCTL : MSG_PROTOCTL), option);
|
sts ("%s %s", (me.token ? TOK_PROTOCTL : MSG_PROTOCTL), option);
|
||||||
return 1;
|
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);
|
sts (":%s %s :%s", who, (me.token ? TOK_QUIT : MSG_QUIT), quitmsg);
|
||||||
DelUser (who);
|
DelUser (who);
|
||||||
return 1;
|
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);
|
sts (":%s %s %s", who, (me.token ? TOK_PART : MSG_PART), chan);
|
||||||
part_chan (finduser (who), (char *) chan);
|
part_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
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);
|
sts (":%s %s %s", who, (me.token ? TOK_JOIN : MSG_JOIN), chan);
|
||||||
join_chan (finduser (who), (char *) chan);
|
join_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int schmode_cmd(const char *who, const char *chan, const char *mode,
|
int
|
||||||
const char *args)
|
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac;
|
int ac;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
|
||||||
sts(":%s %s %s %s %s %lu", who, (me.token ? TOK_MODE : MSG_MODE),
|
sts (":%s %s %s %s %s %lu", who, (me.token ? TOK_MODE : MSG_MODE), chan, mode, args, time (NULL));
|
||||||
chan, mode, args, time(NULL));
|
|
||||||
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
||||||
ac = split_buf (tmp, &av, 0);
|
ac = split_buf (tmp, &av, 0);
|
||||||
ChanMode ("", av, ac);
|
ChanMode ("", av, ac);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
int
|
||||||
const char *realname)
|
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),
|
sts ("%s %s 1 %lu %s %s %s 0 :%s", (me.token ? TOK_NICK : MSG_NICK), nick, time (NULL), ident, host, me.name, realname);
|
||||||
nick, time(NULL), ident, host, me.name, realname);
|
|
||||||
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
||||||
return 1;
|
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,
|
sts (":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply, to);
|
||||||
to);
|
|
||||||
return 1;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -396,14 +400,13 @@ int sumode_cmd(const char *who, const char *target, long mode)
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts(":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target,
|
sts (":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target, newmode);
|
||||||
newmode);
|
|
||||||
UserMode (target, newmode, 0);
|
UserMode (target, newmode, 0);
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -414,141 +417,140 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spong_cmd(const char *reply)
|
int
|
||||||
|
spong_cmd (const char *reply)
|
||||||
{
|
{
|
||||||
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
|
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int snetinfo_cmd()
|
int
|
||||||
|
snetinfo_cmd ()
|
||||||
{
|
{
|
||||||
sts(":%s %s 0 %d %d %s 0 0 0 :%s", me.name,
|
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);
|
||||||
(me.token ? TOK_NETINFO : MSG_NETINFO), time(NULL),
|
|
||||||
ircd_srv.uprot, ircd_srv.cloak, me.netname);
|
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL),
|
sts (":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL), target, buf);
|
||||||
target, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
DelUser (target);
|
DelUser (target);
|
||||||
return 1;
|
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),
|
sts (":%s %s %s :%s", from, (me.token ? TOK_SMO : MSG_SMO), umodetarget, msg);
|
||||||
umodetarget, msg);
|
|
||||||
return 1;
|
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);
|
Change_User (finduser (oldnick), newnick);
|
||||||
sts(":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK),
|
sts (":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK), newnick, time (NULL));
|
||||||
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));
|
|
||||||
return 1;
|
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,
|
sts ("%s %s :%s", (me.token ? TOK_SWHOIS : MSG_SWHOIS), target, swhois);
|
||||||
chan);
|
|
||||||
return 1;
|
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,
|
sts ("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target, newnick, time (NULL));
|
||||||
chan);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int skick_cmd(const char *who, const char *target, const char *chan,
|
int
|
||||||
const char *reason)
|
ssvsjoin_cmd (const char *target, const char *chan)
|
||||||
{
|
{
|
||||||
sts(":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK),
|
sts ("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target, chan);
|
||||||
chan, target, (reason ? reason : "No Reason Given"));
|
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);
|
part_chan (finduser (target), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int swallops_cmd(const char *who, const char *msg, ...)
|
|
||||||
|
int
|
||||||
|
swallops_cmd (const char *who, const char *msg, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, msg);
|
va_start (ap, msg);
|
||||||
vsnprintf (buf, 512, msg, ap);
|
vsnprintf (buf, 512, msg, ap);
|
||||||
sts(":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS),
|
sts (":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS), buf);
|
||||||
buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvshost_cmd(const char *who, const char *vhost)
|
int
|
||||||
|
ssvshost_cmd (const char *who, const char *vhost)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (who);
|
u = finduser (who);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Can't Find user %s for ssvshost_cmd", who);
|
||||||
"Can't Find user %s for ssvshost_cmd", who);
|
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
strcpy (u->vhost, vhost);
|
strcpy (u->vhost, vhost);
|
||||||
sts(":%s %s %s %s", me.name,
|
sts (":%s %s %s %s", me.name, (me.token ? TOK_CHGHOST : MSG_CHGHOST), who, vhost);
|
||||||
(me.token ? TOK_CHGHOST : MSG_CHGHOST), who, vhost);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvsmode_cmd(const char *target, const char *modes)
|
int
|
||||||
|
ssvsmode_cmd (const char *target, const char *modes)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (target);
|
u = finduser (target);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for ssvsmode_cmd", target);
|
||||||
"Can't find user %s for ssvsmode_cmd", target);
|
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
sts(":%s %s %s %s", me.name,
|
sts (":%s %s %s %s", me.name, (me.token ? TOK_SVSMODE : MSG_SVSMODE), target, modes);
|
||||||
(me.token ? TOK_SVSMODE : MSG_SVSMODE), target, modes);
|
|
||||||
UserMode (target, modes, 0);
|
UserMode (target, modes, 0);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvskill_cmd(const char *target, const char *reason, ...)
|
int
|
||||||
|
ssvskill_cmd (const char *target, const char *reason, ...)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
u = finduser (target);
|
u = finduser (target);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Cant find user %s for ssvskill_cmd", target);
|
||||||
"Cant find user %s for ssvskill_cmd", target);
|
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", me.name,
|
sts (":%s %s %s :%s", me.name, (me.token ? TOK_SVSKILL : MSG_SVSKILL), target, buf);
|
||||||
(me.token ? TOK_SVSKILL : MSG_SVSKILL), target, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
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 */
|
/* akill is gone in the latest Unreals, so we set Glines instead */
|
||||||
|
|
||||||
int sakill_cmd(const char *host, const char *ident, const char *setby,
|
int
|
||||||
const int length, const char *reason, ...)
|
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s + G %s %s %s %d %d :%s", me.name,
|
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);
|
||||||
(me.token ? TOK_TKL : MSG_TKL), ident, host, setby,
|
|
||||||
time(NULL) + length, time(NULL), buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
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),
|
sts (":%s %s - G %s %s %s", me.name, (me.token ? TOK_TKL : MSG_TKL), ident, host, me.name);
|
||||||
ident, host, me.name);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void chanalert(char *who, char *buf, ...)
|
void
|
||||||
|
chanalert (char *who, char *buf, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
@ -587,21 +588,20 @@ void chanalert(char *who, char *buf, ...)
|
||||||
vsnprintf (tmp, 512, buf, ap);
|
vsnprintf (tmp, 512, buf, ap);
|
||||||
|
|
||||||
if (me.onchan) {
|
if (me.onchan) {
|
||||||
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
|
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
|
||||||
tmp);
|
|
||||||
sts ("%s", out);
|
sts ("%s", out);
|
||||||
}
|
}
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void notice(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
notice (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -611,15 +611,15 @@ void notice(char *to, const char *from, char *fmt, ...)
|
||||||
sts ("%s", buf);
|
sts ("%s", buf);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void privmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
privmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -630,7 +630,8 @@ void privmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void prefmsg(char *to, const char *from, char *fmt, ...)
|
void
|
||||||
|
prefmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
@ -638,9 +639,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (me.want_privmsg) {
|
if (me.want_privmsg) {
|
||||||
|
@ -652,7 +651,8 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
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) {
|
while (*text) {
|
||||||
if (**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;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
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;
|
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;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
|
||||||
"Recieved a Message from a Unknown User! (%s)",
|
|
||||||
origin);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ShowStats (argv[0], u);
|
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,
|
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
|
||||||
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);
|
ShowMOTD (origin);
|
||||||
}
|
}
|
||||||
void Usr_ShowADMIN(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_ShowADMIN (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ShowADMIN (origin);
|
ShowADMIN (origin);
|
||||||
}
|
}
|
||||||
void Usr_Showcredits(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Showcredits (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Showcredits (origin);
|
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]));
|
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]);
|
DelServer (argv[0]);
|
||||||
}
|
}
|
||||||
void Usr_DelUser(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_DelUser (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
DelUser (origin);
|
DelUser (origin);
|
||||||
}
|
}
|
||||||
void Usr_Smode(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Smode (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
if (!strchr (argv[0], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
/* its user svsmode change */
|
/* its user svsmode change */
|
||||||
|
@ -750,7 +765,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
|
||||||
ChanMode (origin, argv, 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], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
UserMode (argv[0], argv[1], 0);
|
UserMode (argv[0], argv[1], 0);
|
||||||
|
@ -758,18 +774,19 @@ void Usr_Mode(char *origin, char **argv, int argc)
|
||||||
ChanMode (origin, argv, 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;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
KillUser (argv[0]);
|
KillUser (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
|
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Vhost(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Vhost (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
|
@ -777,18 +794,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
|
||||||
strncpy (u->vhost, argv[0], MAXHOST);
|
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;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
dopong (s);
|
dopong (s);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
|
||||||
"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;
|
char *buf;
|
||||||
User *u = finduser (origin);
|
User *u = finduser (origin);
|
||||||
|
@ -803,22 +821,21 @@ void Usr_Away(char *origin, char **argv, int argc)
|
||||||
free (buf);
|
free (buf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
|
||||||
"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);
|
User *u = finduser (origin);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[0]);
|
Change_User (u, argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find user %s for User_nick", origin);
|
||||||
"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;
|
char *buf;
|
||||||
Chans *c;
|
Chans *c;
|
||||||
|
@ -828,13 +845,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
|
||||||
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
||||||
free (buf);
|
free (buf);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
|
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Usr_Kick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u, *k;
|
User *u, *k;
|
||||||
u = finduser (argv[1]);
|
u = finduser (argv[1]);
|
||||||
|
@ -842,12 +859,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
|
||||||
if (u) {
|
if (u) {
|
||||||
kick_chan (u, argv[0], k);
|
kick_chan (u, argv[0], k);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Waring, Can't find user %s for Kick %s", argv[1], argv[0]);
|
||||||
"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;
|
char *s, *t;
|
||||||
t = argv[0];
|
t = argv[0];
|
||||||
|
@ -858,15 +874,20 @@ void Usr_Join(char *origin, char **argv, int argc)
|
||||||
join_chan (finduser (origin), s);
|
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]);
|
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]);
|
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;
|
me.onchan = 1;
|
||||||
ircd_srv.uprot = atoi (argv[2]);
|
ircd_srv.uprot = atoi (argv[2]);
|
||||||
|
@ -883,10 +904,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
|
||||||
me.synced = 1;
|
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;
|
Server *s;
|
||||||
if (*origin == 0) {
|
if (*origin == 0) {
|
||||||
|
@ -897,53 +920,55 @@ void Srv_Server(char *origin, char **argv, int argc)
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
me.s = s;
|
me.s = s;
|
||||||
}
|
}
|
||||||
void Srv_Squit(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Srv_Squit (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
DelServer (argv[0]);
|
DelServer (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
|
||||||
"Waring, Squit from Unknown Server %s", argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
|
/* 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;
|
char **av;
|
||||||
int ac = 0;
|
int ac = 0;
|
||||||
char *realname;
|
char *realname;
|
||||||
AddStringToList (&av, argv[0], &ac);
|
AddStringToList (&av, argv[0], &ac);
|
||||||
AddUser(argv[0], argv[3], argv[4], argv[5], 0,
|
AddUser (argv[0], argv[3], argv[4], argv[5], 0, strtol (argv[2], NULL, 10));
|
||||||
strtol(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 7);
|
realname = joinbuf (argv, argc, 7);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (realname);
|
free (realname);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Svsnick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Svsnick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[1]);
|
Change_User (u, argv[1]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for svsnick", argv[0]);
|
||||||
"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.");
|
nlog (LOG_WARNING, LOG_CORE, "Got Kill, but its unhandled.");
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int SignOn_NewBot(const char *nick, const char *user,
|
extern int
|
||||||
const char *host, const char *rname, long Umode)
|
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
|
||||||
{
|
{
|
||||||
|
|
||||||
snewnick_cmd (nick, user, host, rname);
|
snewnick_cmd (nick, user, host, rname);
|
||||||
|
|
3
Unreal.h
3
Unreal.h
|
@ -44,7 +44,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* 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 */
|
#endif /* UNREAL_H Define */
|
||||||
|
|
||||||
|
|
|
@ -18,18 +18,19 @@
|
||||||
#undef HAVEUSE_RPCTYPES_H
|
#undef HAVEUSE_RPCTYPES_H
|
||||||
|
|
||||||
@ BOTTOM @
|
@ BOTTOM @
|
||||||
|
|
||||||
/* Use the definitions: */
|
/* Use the definitions: */
|
||||||
|
|
||||||
#ifndef HAVE_INLINE
|
#ifndef HAVE_INLINE
|
||||||
#define inline
|
#define inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_POLL
|
#ifdef HAVE_POLL
|
||||||
#include <sys/poll.h>
|
#include <sys/poll.h>
|
||||||
#else
|
#else
|
||||||
/* kludge it up */
|
/* kludge it up */
|
||||||
struct pollfd { int fd; short events; short revents; };
|
struct pollfd {
|
||||||
|
int fd;
|
||||||
|
short events;
|
||||||
|
short revents;
|
||||||
|
};
|
||||||
#define POLLIN 1
|
#define POLLIN 1
|
||||||
#define POLLPRI 2
|
#define POLLPRI 2
|
||||||
#define POLLOUT 4
|
#define POLLOUT 4
|
||||||
|
|
325
chans.c
325
chans.c
|
@ -19,7 +19,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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>
|
#include <fnmatch.h>
|
||||||
|
@ -37,11 +37,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
void init_chan_hash()
|
void
|
||||||
|
init_chan_hash ()
|
||||||
{
|
{
|
||||||
ch = hash_create (C_TABLE_SIZE, 0, 0);
|
ch = hash_create (C_TABLE_SIZE, 0, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief Process the Channel TS Time
|
/** @brief Process the Channel TS Time
|
||||||
*
|
*
|
||||||
* Addes the channel TS time to the channel struct
|
* Addes the channel TS time to the channel struct
|
||||||
|
@ -52,7 +54,9 @@ void init_chan_hash()
|
||||||
* @returns Nothing
|
* @returns Nothing
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void Change_Chan_Ts(Chans *c, time_t tstime) {
|
void
|
||||||
|
Change_Chan_Ts (Chans * c, time_t tstime)
|
||||||
|
{
|
||||||
if (!c) {
|
if (!c) {
|
||||||
nlog (LOG_WARNING, LOG_CORE, "Warning, Called Change_Change_Ts with null channel");
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Called Change_Change_Ts with null channel");
|
||||||
return;
|
return;
|
||||||
|
@ -75,7 +79,8 @@ void Change_Chan_Ts(Chans *c, time_t tstime) {
|
||||||
* @return Nothing
|
* @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;
|
char **av;
|
||||||
int ac = 0;
|
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
|
* @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;
|
ModesParm *m;
|
||||||
lnode_t *mn;
|
lnode_t *mn;
|
||||||
if (!c) {
|
if (!c) {
|
||||||
|
@ -135,7 +142,8 @@ extern int CheckChanMode(Chans *c, long mode) {
|
||||||
* @return 0 on match, 1 otherwise.
|
* @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;
|
ModesParm *m = (void *) v;
|
||||||
if (m->mode == (long) mode) {
|
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.
|
* @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;
|
char *modes;
|
||||||
int add = 0;
|
int add = 0;
|
||||||
|
@ -180,61 +189,34 @@ int ChanMode(char *origin, char **av, int ac)
|
||||||
add = 0;
|
add = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
|
||||||
1); i++) {
|
|
||||||
|
|
||||||
if (*modes == cFlagTab[i].flag) {
|
if (*modes == cFlagTab[i].flag) {
|
||||||
if (add) {
|
if (add) {
|
||||||
if (cFlagTab[i].nickparam) {
|
if (cFlagTab[i].nickparam) {
|
||||||
ChangeChanUserMode
|
ChangeChanUserMode (c, finduser (av[j]), 1, cFlagTab[i].mode);
|
||||||
(c,
|
|
||||||
finduser(av
|
|
||||||
[j]),
|
|
||||||
1,
|
|
||||||
cFlagTab[i].
|
|
||||||
mode);
|
|
||||||
j++;
|
j++;
|
||||||
} else {
|
} else {
|
||||||
if (cFlagTab[i].
|
if (cFlagTab[i].parameters) {
|
||||||
parameters) {
|
|
||||||
mn = list_first (c->modeparms);
|
mn = list_first (c->modeparms);
|
||||||
modeexists
|
modeexists = 0;
|
||||||
= 0;
|
|
||||||
while (mn) {
|
while (mn) {
|
||||||
m = lnode_get (mn);
|
m = lnode_get (mn);
|
||||||
/* mode limit and mode key replace current values */
|
/* mode limit and mode key replace current values */
|
||||||
if ((m->mode == MODE_LIMIT) && (cFlagTab[i].mode == MODE_LIMIT)) {
|
if ((m->mode == MODE_LIMIT) && (cFlagTab[i].mode == MODE_LIMIT)) {
|
||||||
strncpy
|
strncpy (m->param, av[j], PARAMSIZE);
|
||||||
(m->
|
|
||||||
param,
|
|
||||||
av
|
|
||||||
[j],
|
|
||||||
PARAMSIZE);
|
|
||||||
j++;
|
j++;
|
||||||
modeexists
|
modeexists = 1;
|
||||||
=
|
|
||||||
1;
|
|
||||||
break;
|
break;
|
||||||
} else if ((m->mode == MODE_KEY) && (cFlagTab[i].mode == MODE_KEY)) {
|
} else if ((m->mode == MODE_KEY) && (cFlagTab[i].mode == MODE_KEY)) {
|
||||||
strncpy
|
strncpy (m->param, av[j], PARAMSIZE);
|
||||||
(m->
|
|
||||||
param,
|
|
||||||
av
|
|
||||||
[j],
|
|
||||||
PARAMSIZE);
|
|
||||||
j++;
|
j++;
|
||||||
modeexists
|
modeexists = 1;
|
||||||
=
|
|
||||||
1;
|
|
||||||
break;
|
break;
|
||||||
} else if (((int *) m->mode == (int *) cFlagTab[i].mode) && !strcasecmp (m->param, av[j])) {
|
} 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]);
|
nlog (LOG_INFO, LOG_CORE, "Mode %c (%s) already exists, not adding again", cFlagTab[i].flag, av[j]);
|
||||||
j++;
|
j++;
|
||||||
modeexists
|
modeexists = 1;
|
||||||
=
|
|
||||||
1;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mn = list_next (c->modeparms, mn);
|
mn = list_next (c->modeparms, mn);
|
||||||
|
@ -242,66 +224,40 @@ int ChanMode(char *origin, char **av, int ac)
|
||||||
if (modeexists != 1) {
|
if (modeexists != 1) {
|
||||||
m = smalloc (sizeof (ModesParm));
|
m = smalloc (sizeof (ModesParm));
|
||||||
m->mode = cFlagTab[i].mode;
|
m->mode = cFlagTab[i].mode;
|
||||||
strncpy
|
strncpy (m->param, av[j], PARAMSIZE);
|
||||||
(m->
|
|
||||||
param,
|
|
||||||
av
|
|
||||||
[j],
|
|
||||||
PARAMSIZE);
|
|
||||||
mn = lnode_create (m);
|
mn = lnode_create (m);
|
||||||
if (list_isfull (c->modeparms)) {
|
if (list_isfull (c->modeparms)) {
|
||||||
nlog (LOG_CRITICAL, LOG_CORE, "Eeek, Can't add additional Modes to Channel %s. Modelist is full", c->name);
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeek, Can't add additional Modes to Channel %s. Modelist is full", c->name);
|
||||||
do_exit
|
do_exit (0);
|
||||||
(0);
|
|
||||||
} else {
|
} else {
|
||||||
list_append
|
list_append (c->modeparms, mn);
|
||||||
(c->
|
|
||||||
modeparms,
|
|
||||||
mn);
|
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
c->modes |=
|
c->modes |= cFlagTab[i].mode;
|
||||||
cFlagTab
|
|
||||||
[i].
|
|
||||||
mode;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (cFlagTab[i].nickparam) {
|
if (cFlagTab[i].nickparam) {
|
||||||
ChangeChanUserMode
|
ChangeChanUserMode (c, finduser (av[j]), 0, cFlagTab[i].mode);
|
||||||
(c,
|
|
||||||
finduser(av
|
|
||||||
[j]),
|
|
||||||
0,
|
|
||||||
cFlagTab[i].
|
|
||||||
mode);
|
|
||||||
j++;
|
j++;
|
||||||
} else {
|
} else {
|
||||||
if (cFlagTab[i].
|
if (cFlagTab[i].parameters) {
|
||||||
parameters) {
|
|
||||||
mn = list_find (c->modeparms, (int *) cFlagTab[i].mode, comparemode);
|
mn = list_find (c->modeparms, (int *) cFlagTab[i].mode, comparemode);
|
||||||
if (!mn) {
|
if (!mn) {
|
||||||
nlog (LOG_INFO, LOG_CORE, "Can't find Mode %c for Chan %s", *modes, c->name);
|
nlog (LOG_INFO, LOG_CORE, "Can't find Mode %c for Chan %s", *modes, c->name);
|
||||||
} else {
|
} else {
|
||||||
list_delete
|
list_delete (c->modeparms, mn);
|
||||||
(c->
|
|
||||||
modeparms,
|
|
||||||
mn);
|
|
||||||
m = lnode_get (mn);
|
m = lnode_get (mn);
|
||||||
lnode_destroy
|
lnode_destroy (mn);
|
||||||
(mn);
|
|
||||||
free (m);
|
free (m);
|
||||||
|
|
||||||
if (!(cFlagTab[i].mode == MODE_LIMIT || cFlagTab[i].mode == MODE_KEY))
|
if (!(cFlagTab[i].mode == MODE_LIMIT || cFlagTab[i].mode == MODE_KEY))
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
c->modes &=
|
c->modes &= ~cFlagTab[i].mode;
|
||||||
~cFlagTab
|
|
||||||
[i].
|
|
||||||
mode;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -326,7 +282,8 @@ int ChanMode(char *origin, char **av, int ac)
|
||||||
* @return Nothing
|
* @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;
|
lnode_t *cmn;
|
||||||
Chanmem *cm;
|
Chanmem *cm;
|
||||||
|
@ -339,9 +296,7 @@ void ChangeChanUserMode(Chans * c, User * u, int add, long mode)
|
||||||
cmn = list_find (c->chanmembers, u->nick, comparef);
|
cmn = list_find (c->chanmembers, u->nick, comparef);
|
||||||
if (!cmn) {
|
if (!cmn) {
|
||||||
if (me.coder_debug) {
|
if (me.coder_debug) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "ChangeChanUserMode() %s doesn't seem to be in the Chan %s", u->nick, c->name);
|
||||||
"ChangeChanUserMode() %s doesn't seem to be in the Chan %s",
|
|
||||||
u->nick, c->name);
|
|
||||||
chandump (c->name);
|
chandump (c->name);
|
||||||
UserDump (u->nick);
|
UserDump (u->nick);
|
||||||
}
|
}
|
||||||
|
@ -349,14 +304,10 @@ void ChangeChanUserMode(Chans * c, User * u, int add, long mode)
|
||||||
}
|
}
|
||||||
cm = lnode_get (cmn);
|
cm = lnode_get (cmn);
|
||||||
if (add) {
|
if (add) {
|
||||||
nlog(LOG_DEBUG2, LOG_CORE,
|
nlog (LOG_DEBUG2, LOG_CORE, "Adding mode %ld to Channel %s User %s", mode, c->name, u->nick);
|
||||||
"Adding mode %ld to Channel %s User %s", mode,
|
|
||||||
c->name, u->nick);
|
|
||||||
cm->flags |= mode;
|
cm->flags |= mode;
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_DEBUG2, LOG_CORE,
|
nlog (LOG_DEBUG2, LOG_CORE, "Deleting Mode %ld to Channel %s User %s", mode, c->name, u->nick);
|
||||||
"Deleting Mode %ld to Channel %s User %s", mode,
|
|
||||||
c->name, u->nick);
|
|
||||||
cm->flags &= ~mode;
|
cm->flags &= ~mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -371,7 +322,8 @@ void ChangeChanUserMode(Chans * c, User * u, int add, long mode)
|
||||||
* @returns c the newly created channel record
|
* @returns c the newly created channel record
|
||||||
* @todo Dynamically resizable channel hashes
|
* @todo Dynamically resizable channel hashes
|
||||||
*/
|
*/
|
||||||
Chans *new_chan(char *chan)
|
Chans *
|
||||||
|
new_chan (char *chan)
|
||||||
{
|
{
|
||||||
Chans *c;
|
Chans *c;
|
||||||
hnode_t *cn;
|
hnode_t *cn;
|
||||||
|
@ -397,7 +349,8 @@ Chans *new_chan(char *chan)
|
||||||
* @returns Nothing
|
* @returns Nothing
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void del_chan(Chans * c)
|
void
|
||||||
|
del_chan (Chans * c)
|
||||||
{
|
{
|
||||||
hnode_t *cn;
|
hnode_t *cn;
|
||||||
lnode_t *cm;
|
lnode_t *cm;
|
||||||
|
@ -405,8 +358,7 @@ void del_chan(Chans * c)
|
||||||
strcpy (segv_location, "del_chan");
|
strcpy (segv_location, "del_chan");
|
||||||
cn = hash_lookup (ch, c->name);
|
cn = hash_lookup (ch, c->name);
|
||||||
if (!cn) {
|
if (!cn) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Hu, Deleting a Non Existand Channel?");
|
||||||
"Hu, Deleting a Non Existand Channel?");
|
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
nlog (LOG_DEBUG2, LOG_CORE, "Deleting Channel %s", c->name);
|
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;
|
char **av;
|
||||||
int ac = 0;
|
int ac = 0;
|
||||||
|
@ -444,13 +397,9 @@ void kick_chan(User * u, char *chan, User * k)
|
||||||
strcpy (segv_location, "part_chan");
|
strcpy (segv_location, "part_chan");
|
||||||
nlog (LOG_DEBUG2, LOG_CORE, "%s Kicking %s from %s", k->nick, u->nick, chan);
|
nlog (LOG_DEBUG2, LOG_CORE, "%s Kicking %s from %s", k->nick, u->nick, chan);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Ehh, KIcking a Unknown User %s from Chan %s: %s", u->nick, chan, recbuf);
|
||||||
"Ehh, KIcking a Unknown User %s from Chan %s: %s",
|
|
||||||
u->nick, chan, recbuf);
|
|
||||||
if (me.coder_debug) {
|
if (me.coder_debug) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Ehh, Kicking a Unknown User %s from Chan %s: %s", u->nick, chan, recbuf);
|
||||||
"Ehh, Kicking a Unknown User %s from Chan %s: %s",
|
|
||||||
u->nick, chan, recbuf);
|
|
||||||
chandump (chan);
|
chandump (chan);
|
||||||
UserDump (u->nick);
|
UserDump (u->nick);
|
||||||
}
|
}
|
||||||
|
@ -458,19 +407,14 @@ void kick_chan(User * u, char *chan, User * k)
|
||||||
}
|
}
|
||||||
c = findchan (chan);
|
c = findchan (chan);
|
||||||
if (!c) {
|
if (!c) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Hu, Kicking a Non existant Channel? %s", chan);
|
||||||
"Hu, Kicking a Non existant Channel? %s", chan);
|
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
un = list_find (c->chanmembers, u->nick, comparef);
|
un = list_find (c->chanmembers, u->nick, comparef);
|
||||||
if (!un) {
|
if (!un) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Kick: hu, User %s isn't a member of this channel %s", u->nick, chan);
|
||||||
"Kick: hu, User %s isn't a member of this channel %s",
|
|
||||||
u->nick, chan);
|
|
||||||
if (me.coder_debug) {
|
if (me.coder_debug) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Kick: hu, User %s isn't a member of this channel %s", u->nick, chan);
|
||||||
"Kick: hu, User %s isn't a member of this channel %s",
|
|
||||||
u->nick, chan);
|
|
||||||
chandump (c->name);
|
chandump (c->name);
|
||||||
UserDump (u->nick);
|
UserDump (u->nick);
|
||||||
}
|
}
|
||||||
|
@ -485,8 +429,7 @@ void kick_chan(User * u, char *chan, User * k)
|
||||||
ac = 0;
|
ac = 0;
|
||||||
c->cur_users--;
|
c->cur_users--;
|
||||||
}
|
}
|
||||||
nlog(LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)",
|
nlog (LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)", c->name, c->cur_users, list_count (c->chanmembers));
|
||||||
c->name, c->cur_users, list_count(c->chanmembers));
|
|
||||||
if (c->cur_users <= 0) {
|
if (c->cur_users <= 0) {
|
||||||
AddStringToList (&av, c->name, &ac);
|
AddStringToList (&av, c->name, &ac);
|
||||||
Module_Event ("DELCHAN", av, 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);
|
un = list_find (u->chans, c->name, comparef);
|
||||||
if (!un) {
|
if (!un) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Kick:Hu, User %s claims not to be part of Chan %s", u->nick, chan);
|
||||||
"Kick:Hu, User %s claims not to be part of Chan %s",
|
|
||||||
u->nick, chan);
|
|
||||||
if (me.coder_debug) {
|
if (me.coder_debug) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Kick: Hu, User %s claims not to be part of Chan %s", u->nick, chan);
|
||||||
"Kick: Hu, User %s claims not to be part of Chan %s",
|
|
||||||
u->nick, chan);
|
|
||||||
chandump (c->name);
|
chandump (c->name);
|
||||||
UserDump (u->nick);
|
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;
|
Chans *c;
|
||||||
lnode_t *un;
|
lnode_t *un;
|
||||||
|
@ -546,13 +486,9 @@ void part_chan(User * u, char *chan)
|
||||||
strcpy (segv_location, "part_chan");
|
strcpy (segv_location, "part_chan");
|
||||||
nlog (LOG_DEBUG2, LOG_CORE, "Parting %s from %s", u->nick, chan);
|
nlog (LOG_DEBUG2, LOG_CORE, "Parting %s from %s", u->nick, chan);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Ehh, Parting a Unknown User %s from Chan %s: %s", u->nick, chan, recbuf);
|
||||||
"Ehh, Parting a Unknown User %s from Chan %s: %s",
|
|
||||||
u->nick, chan, recbuf);
|
|
||||||
if (me.coder_debug) {
|
if (me.coder_debug) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Ehh, Parting a Unknown User %s from Chan %s: %s", u->nick, chan, recbuf);
|
||||||
"Ehh, Parting a Unknown User %s from Chan %s: %s",
|
|
||||||
u->nick, chan, recbuf);
|
|
||||||
chandump (chan);
|
chandump (chan);
|
||||||
UserDump (u->nick);
|
UserDump (u->nick);
|
||||||
}
|
}
|
||||||
|
@ -560,19 +496,14 @@ void part_chan(User * u, char *chan)
|
||||||
}
|
}
|
||||||
c = findchan (chan);
|
c = findchan (chan);
|
||||||
if (!c) {
|
if (!c) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Hu, Parting a Non existant Channel? %s", chan);
|
||||||
"Hu, Parting a Non existant Channel? %s", chan);
|
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
un = list_find (c->chanmembers, u->nick, comparef);
|
un = list_find (c->chanmembers, u->nick, comparef);
|
||||||
if (!un) {
|
if (!un) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "hu, User %s isn't a member of this channel %s", u->nick, chan);
|
||||||
"hu, User %s isn't a member of this channel %s",
|
|
||||||
u->nick, chan);
|
|
||||||
if (me.coder_debug) {
|
if (me.coder_debug) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "hu, User %s isn't a member of this channel %s", u->nick, chan);
|
||||||
"hu, User %s isn't a member of this channel %s",
|
|
||||||
u->nick, chan);
|
|
||||||
chandump (c->name);
|
chandump (c->name);
|
||||||
UserDump (u->nick);
|
UserDump (u->nick);
|
||||||
}
|
}
|
||||||
|
@ -588,8 +519,7 @@ void part_chan(User * u, char *chan)
|
||||||
// FreeList(av, ac);
|
// FreeList(av, ac);
|
||||||
c->cur_users--;
|
c->cur_users--;
|
||||||
}
|
}
|
||||||
nlog(LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)",
|
nlog (LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)", c->name, c->cur_users, list_count (c->chanmembers));
|
||||||
c->name, c->cur_users, list_count(c->chanmembers));
|
|
||||||
if (c->cur_users <= 0) {
|
if (c->cur_users <= 0) {
|
||||||
AddStringToList (&av, c->name, &ac);
|
AddStringToList (&av, c->name, &ac);
|
||||||
Module_Event ("DELCHAN", av, 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);
|
un = list_find (u->chans, c->name, comparef);
|
||||||
if (!un) {
|
if (!un) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Hu, User %s claims not to be part of Chan %s", u->nick, chan);
|
||||||
"Hu, User %s claims not to be part of Chan %s",
|
|
||||||
u->nick, chan);
|
|
||||||
if (me.coder_debug) {
|
if (me.coder_debug) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Hu, User %s claims not to be part of Chan %s", u->nick, chan);
|
||||||
"Hu, User %s claims not to be part of Chan %s",
|
|
||||||
u->nick, chan);
|
|
||||||
chandump (c->name);
|
chandump (c->name);
|
||||||
UserDump (u->nick);
|
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?
|
* @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;
|
lnode_t *cm;
|
||||||
Chanmem *cml;
|
Chanmem *cml;
|
||||||
strcpy (segv_location, "change_user_nick");
|
strcpy (segv_location, "change_user_nick");
|
||||||
cm = list_find (c->chanmembers, oldnick, comparef);
|
cm = list_find (c->chanmembers, oldnick, comparef);
|
||||||
if (!cm) {
|
if (!cm) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "change_user_nick() %s isn't a member of %s", oldnick, c->name);
|
||||||
"change_user_nick() %s isn't a member of %s", oldnick,
|
|
||||||
c->name);
|
|
||||||
if (me.coder_debug) {
|
if (me.coder_debug) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "change_user_nick() %s isn't a member of %s", oldnick, c->name);
|
||||||
"change_user_nick() %s isn't a member of %s",
|
|
||||||
oldnick, c->name);
|
|
||||||
chandump (c->name);
|
chandump (c->name);
|
||||||
UserDump (oldnick);
|
UserDump (oldnick);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_DEBUG3, LOG_CORE,
|
nlog (LOG_DEBUG3, LOG_CORE, "Change_User_Nick(): NewNick %s, OldNick %s", newnick, oldnick);
|
||||||
"Change_User_Nick(): NewNick %s, OldNick %s", newnick,
|
|
||||||
oldnick);
|
|
||||||
cml = lnode_get (cm);
|
cml = lnode_get (cm);
|
||||||
strncpy (cml->nick, newnick, MAXNICK);
|
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;
|
Chans *c;
|
||||||
lnode_t *un, *cn;
|
lnode_t *un, *cn;
|
||||||
|
@ -688,23 +610,19 @@ void join_chan(User * u, char *chan)
|
||||||
int ac = 0;
|
int ac = 0;
|
||||||
strcpy (segv_location, "join_chan");
|
strcpy (segv_location, "join_chan");
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "ehhh, Joining a Unknown user to %s: %s", chan, recbuf);
|
||||||
"ehhh, Joining a Unknown user to %s: %s", chan,
|
|
||||||
recbuf);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!strcasecmp ("0", chan)) {
|
if (!strcasecmp ("0", chan)) {
|
||||||
/* join 0 is actually part all chans */
|
/* join 0 is actually part all chans */
|
||||||
nlog(LOG_DEBUG2, LOG_CORE,
|
nlog (LOG_DEBUG2, LOG_CORE, "join_chan() -> Parting all chans %s", u->nick);
|
||||||
"join_chan() -> Parting all chans %s", u->nick);
|
|
||||||
list_process (u->chans, u, part_u_chan);
|
list_process (u->chans, u, part_u_chan);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
c = findchan (chan);
|
c = findchan (chan);
|
||||||
if (!c) {
|
if (!c) {
|
||||||
/* its a new Channel */
|
/* its a new Channel */
|
||||||
nlog(LOG_DEBUG2, LOG_CORE, "join_chan() -> New Channel %s",
|
nlog (LOG_DEBUG2, LOG_CORE, "join_chan() -> New Channel %s", chan);
|
||||||
chan);
|
|
||||||
c = new_chan (chan);
|
c = new_chan (chan);
|
||||||
c->chanmembers = list_create (CHAN_MEM_SIZE);
|
c->chanmembers = list_create (CHAN_MEM_SIZE);
|
||||||
c->modeparms = list_create (MAXMODES);
|
c->modeparms = list_create (MAXMODES);
|
||||||
|
@ -724,24 +642,18 @@ void join_chan(User * u, char *chan)
|
||||||
cm->joint = time (NULL);
|
cm->joint = time (NULL);
|
||||||
cm->flags = 0;
|
cm->flags = 0;
|
||||||
cn = lnode_create (cm);
|
cn = lnode_create (cm);
|
||||||
nlog(LOG_DEBUG2, LOG_CORE, "adding usernode %s to Channel %s",
|
nlog (LOG_DEBUG2, LOG_CORE, "adding usernode %s to Channel %s", u->nick, chan);
|
||||||
u->nick, chan);
|
|
||||||
if (list_find (c->chanmembers, u->nick, comparef)) {
|
if (list_find (c->chanmembers, u->nick, comparef)) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Adding %s to Chan %s when he is already a member?", u->nick, chan);
|
||||||
"Adding %s to Chan %s when he is already a member?",
|
|
||||||
u->nick, chan);
|
|
||||||
if (me.coder_debug) {
|
if (me.coder_debug) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Adding %s to Chan %s when he is already a member?", u->nick, chan);
|
||||||
"Adding %s to Chan %s when he is already a member?",
|
|
||||||
u->nick, chan);
|
|
||||||
chandump (c->name);
|
chandump (c->name);
|
||||||
UserDump (u->nick);
|
UserDump (u->nick);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (list_isfull (c->chanmembers)) {
|
if (list_isfull (c->chanmembers)) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "ekk, Channel %s Members list is full", c->name);
|
||||||
"ekk, Channel %s Members list is full", c->name);
|
|
||||||
lnode_destroy (cn);
|
lnode_destroy (cn);
|
||||||
free (cm);
|
free (cm);
|
||||||
return;
|
return;
|
||||||
|
@ -751,8 +663,7 @@ void join_chan(User * u, char *chan)
|
||||||
c->cur_users++;
|
c->cur_users++;
|
||||||
un = lnode_create (c->name);
|
un = lnode_create (c->name);
|
||||||
if (list_isfull (u->chans)) {
|
if (list_isfull (u->chans)) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "eek, User %s members list is full", u->nick);
|
||||||
"eek, User %s members list is full", u->nick);
|
|
||||||
lnode_destroy (un);
|
lnode_destroy (un);
|
||||||
} else {
|
} else {
|
||||||
list_append (u->chans, un);
|
list_append (u->chans, un);
|
||||||
|
@ -762,8 +673,7 @@ void join_chan(User * u, char *chan)
|
||||||
Module_Event ("JOINCHAN", av, ac);
|
Module_Event ("JOINCHAN", av, ac);
|
||||||
free (av);
|
free (av);
|
||||||
// FreeList(av, ac);
|
// FreeList(av, ac);
|
||||||
nlog(LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)", c->name,
|
nlog (LOG_DEBUG3, LOG_CORE, "Cur Users %s %d (list %d)", c->name, c->cur_users, list_count (c->chanmembers));
|
||||||
c->cur_users, list_count(c->chanmembers));
|
|
||||||
if (findbot (u->nick)) {
|
if (findbot (u->nick)) {
|
||||||
add_bot_to_chan (u->nick, c->name);
|
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;
|
hnode_t *cn;
|
||||||
lnode_t *cmn;
|
lnode_t *cmn;
|
||||||
|
@ -802,34 +713,20 @@ void chandump(char *chan)
|
||||||
sendcoders ("====================");
|
sendcoders ("====================");
|
||||||
bzero (mode, 10);
|
bzero (mode, 10);
|
||||||
mode[0] = '+';
|
mode[0] = '+';
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
|
||||||
1); i++) {
|
|
||||||
if (c->modes & cFlagTab[i].mode) {
|
if (c->modes & cFlagTab[i].mode) {
|
||||||
mode[++j] = cFlagTab[i].flag;
|
mode[++j] = cFlagTab[i].flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sendcoders
|
sendcoders ("Channel: %s Members: %d (List %d) Flags %s tstime %d", c->name, c->cur_users, list_count (c->chanmembers), mode, c->tstime);
|
||||||
("Channel: %s Members: %d (List %d) Flags %s tstime %d",
|
sendcoders (" Topic Owner %s, TopicTime: %d, Topic %s", c->topicowner, c->topictime, c->topic);
|
||||||
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));
|
sendcoders ("PubChan?: %d", is_pub_chan (c));
|
||||||
cmn = list_first (c->modeparms);
|
cmn = list_first (c->modeparms);
|
||||||
while (cmn) {
|
while (cmn) {
|
||||||
m = lnode_get (cmn);
|
m = lnode_get (cmn);
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) /
|
|
||||||
sizeof(cFlagTab[0])) - 1); i++) {
|
|
||||||
if (m->mode & cFlagTab[i].mode) {
|
if (m->mode & cFlagTab[i].mode) {
|
||||||
sendcoders
|
sendcoders (" Modes: %c Parms %s", cFlagTab[i].flag, m->param);
|
||||||
(" Modes: %c Parms %s",
|
|
||||||
cFlagTab[i].flag,
|
|
||||||
m->param);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -841,17 +738,12 @@ void chandump(char *chan)
|
||||||
bzero (mode, 10);
|
bzero (mode, 10);
|
||||||
j = 0;
|
j = 0;
|
||||||
mode[0] = '+';
|
mode[0] = '+';
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) /
|
|
||||||
sizeof(cFlagTab[0])) - 1); i++) {
|
|
||||||
if (cm->flags & cFlagTab[i].mode) {
|
if (cm->flags & cFlagTab[i].mode) {
|
||||||
mode[++j] = cFlagTab[i].flag;
|
mode[++j] = cFlagTab[i].flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sendcoders
|
sendcoders ("Members: %s Modes %s Joined %d", cm->nick, mode, cm->joint);
|
||||||
("Members: %s Modes %s Joined %d",
|
|
||||||
cm->nick, mode, cm->joint);
|
|
||||||
cmn = list_next (c->chanmembers, cmn);
|
cmn = list_next (c->chanmembers, cmn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -863,34 +755,20 @@ void chandump(char *chan)
|
||||||
bzero (mode, 10);
|
bzero (mode, 10);
|
||||||
j = 0;
|
j = 0;
|
||||||
mode[0] = '+';
|
mode[0] = '+';
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
|
||||||
1); i++) {
|
|
||||||
if (c->modes & cFlagTab[i].mode) {
|
if (c->modes & cFlagTab[i].mode) {
|
||||||
mode[++j] = cFlagTab[i].flag;
|
mode[++j] = cFlagTab[i].flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sendcoders
|
sendcoders ("Channel: %s Members: %d (List %d) Flags %s tstime %d", c->name, c->cur_users, list_count (c->chanmembers), mode, c->tstime);
|
||||||
("Channel: %s Members: %d (List %d) Flags %s tstime %d",
|
sendcoders (" Topic Owner %s, TopicTime: %d Topic %s", c->topicowner, c->topictime, c->topic);
|
||||||
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));
|
sendcoders ("PubChan?: %d", is_pub_chan (c));
|
||||||
cmn = list_first (c->modeparms);
|
cmn = list_first (c->modeparms);
|
||||||
while (cmn) {
|
while (cmn) {
|
||||||
m = lnode_get (cmn);
|
m = lnode_get (cmn);
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) /
|
|
||||||
sizeof(cFlagTab[0])) - 1); i++) {
|
|
||||||
if (m->mode & cFlagTab[i].mode) {
|
if (m->mode & cFlagTab[i].mode) {
|
||||||
sendcoders
|
sendcoders (" Modes: %c Parms %s", cFlagTab[i].flag, m->param);
|
||||||
(" Modes: %c Parms %s",
|
|
||||||
cFlagTab[i].flag,
|
|
||||||
m->param);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cmn = list_next (c->modeparms, cmn);
|
cmn = list_next (c->modeparms, cmn);
|
||||||
|
@ -901,17 +779,12 @@ void chandump(char *chan)
|
||||||
bzero (mode, 10);
|
bzero (mode, 10);
|
||||||
mode[0] = '+';
|
mode[0] = '+';
|
||||||
j = 0;
|
j = 0;
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) /
|
|
||||||
sizeof(cFlagTab[0])) - 1); i++) {
|
|
||||||
if (cm->flags & cFlagTab[i].mode) {
|
if (cm->flags & cFlagTab[i].mode) {
|
||||||
mode[++j] = cFlagTab[i].flag;
|
mode[++j] = cFlagTab[i].flag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sendcoders
|
sendcoders ("Members: %s Modes %s Joined: %d", cm->nick, mode, cm->joint);
|
||||||
("Members: %s Modes %s Joined: %d",
|
|
||||||
cm->nick, mode, cm->joint);
|
|
||||||
cmn = list_next (c->chanmembers, cmn);
|
cmn = list_next (c->chanmembers, cmn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -929,7 +802,8 @@ void chandump(char *chan)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
Chans *findchan(char *chan)
|
Chans *
|
||||||
|
findchan (char *chan)
|
||||||
{
|
{
|
||||||
Chans *c;
|
Chans *c;
|
||||||
hnode_t *cn;
|
hnode_t *cn;
|
||||||
|
@ -939,8 +813,7 @@ Chans *findchan(char *chan)
|
||||||
c = hnode_get (cn);
|
c = hnode_get (cn);
|
||||||
return c;
|
return c;
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_DEBUG3, LOG_CORE, "FindChan(%s) -> Not Found",
|
nlog (LOG_DEBUG3, LOG_CORE, "FindChan(%s) -> Not Found", chan);
|
||||||
chan);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
64
conf.c
64
conf.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -68,7 +68,8 @@ static config_option options[] = {
|
||||||
* @return Nothing
|
* @return Nothing
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void init_conf()
|
void
|
||||||
|
init_conf ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +81,8 @@ void init_conf()
|
||||||
* @retval line the stripped line
|
* @retval line the stripped line
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void strip(char *line)
|
void
|
||||||
|
strip (char *line)
|
||||||
{
|
{
|
||||||
char *c;
|
char *c;
|
||||||
if ((c = strchr (line, '\n')))
|
if ((c = strchr (line, '\n')))
|
||||||
|
@ -98,27 +100,20 @@ void strip(char *line)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
void ConfLoad()
|
void
|
||||||
|
ConfLoad ()
|
||||||
{
|
{
|
||||||
/* Read in the Config File */
|
/* Read in the Config File */
|
||||||
printf ("Reading the Config File. Please wait.....\n");
|
printf ("Reading the Config File. Please wait.....\n");
|
||||||
if (!config_read ("neostats.cfg", options) == 0) {
|
if (!config_read ("neostats.cfg", options) == 0) {
|
||||||
printf
|
printf ("***************************************************\n");
|
||||||
("***************************************************\n");
|
printf ("* Error! *\n");
|
||||||
printf
|
printf ("* *\n");
|
||||||
("* Error! *\n");
|
printf ("* Config File not found, or Unable to Open *\n");
|
||||||
printf
|
printf ("* Please check its Location, and try again *\n");
|
||||||
("* *\n");
|
printf ("* *\n");
|
||||||
printf
|
printf ("* NeoStats NOT Started *\n");
|
||||||
("* Config File not found, or Unable to Open *\n");
|
printf ("***************************************************\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! */
|
/* no need to call do_exit, we havn't even started! */
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
@ -131,6 +126,9 @@ void ConfLoad()
|
||||||
if (GetConf ((void *) &me.allbots, CFGBOOL, "AllBotsJoinChan") <= 0) {
|
if (GetConf ((void *) &me.allbots, CFGBOOL, "AllBotsJoinChan") <= 0) {
|
||||||
me.allbots = 0;
|
me.allbots = 0;
|
||||||
}
|
}
|
||||||
|
if (GetConf ((void *) &me.pingtime, CFGINT, "PingServerTime") <= 0) {
|
||||||
|
me.pingtime = 120;
|
||||||
|
}
|
||||||
done_mods = 0;
|
done_mods = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +142,8 @@ void ConfLoad()
|
||||||
* @returns Nothing
|
* @returns Nothing
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void cb_Module(char *arg, int configtype)
|
void
|
||||||
|
cb_Module (char *arg, int configtype)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
strcpy (segv_location, "cb_Module");
|
strcpy (segv_location, "cb_Module");
|
||||||
|
@ -155,8 +154,7 @@ void cb_Module(char *arg, int configtype)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
load_mods[i] = sstrdup (arg);
|
load_mods[i] = sstrdup (arg);
|
||||||
nlog(LOG_NORMAL, LOG_CORE, "Added Module %d :%s", i,
|
nlog (LOG_NORMAL, LOG_CORE, "Added Module %d :%s", i, load_mods[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
|
* @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 i;
|
||||||
int rval;
|
int rval;
|
||||||
|
@ -176,17 +175,12 @@ int init_modules()
|
||||||
strcpy (segv_location, "init_modules");
|
strcpy (segv_location, "init_modules");
|
||||||
|
|
||||||
for (i = 1; (i < NUM_MODULES) && (load_mods[i] != 0); i++) {
|
for (i = 1; (i < NUM_MODULES) && (load_mods[i] != 0); i++) {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "Loading Module %s",
|
nlog (LOG_DEBUG1, LOG_CORE, "Loading Module %s", load_mods[i]);
|
||||||
load_mods[i]);
|
|
||||||
rval = load_module (load_mods[i], NULL);
|
rval = load_module (load_mods[i], NULL);
|
||||||
if (!rval) {
|
if (!rval) {
|
||||||
nlog(LOG_NORMAL, LOG_CORE,
|
nlog (LOG_NORMAL, LOG_CORE, "Successfully Loaded Module %s", load_mods[i]);
|
||||||
"Successfully Loaded Module %s",
|
|
||||||
load_mods[i]);
|
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Could Not Load Module %s, Please check above error Messages", load_mods[i]);
|
||||||
"Could Not Load Module %s, Please check above error Messages",
|
|
||||||
load_mods[i]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -201,7 +195,8 @@ int init_modules()
|
||||||
* @param configtype the index of the variable being called now
|
* @param configtype the index of the variable being called now
|
||||||
* @returns Nothing
|
* @returns Nothing
|
||||||
*/
|
*/
|
||||||
void cb_Server(char *arg, int configtype)
|
void
|
||||||
|
cb_Server (char *arg, int configtype)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (configtype == 0) {
|
if (configtype == 0) {
|
||||||
|
@ -253,7 +248,8 @@ void cb_Server(char *arg, int configtype)
|
||||||
* @returns Nothing
|
* @returns Nothing
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void rehash()
|
void
|
||||||
|
rehash ()
|
||||||
{
|
{
|
||||||
/* nothing, yet */
|
/* nothing, yet */
|
||||||
}
|
}
|
||||||
|
|
2
conf.h
2
conf.h
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
319
dl.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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>
|
#include <dlfcn.h>
|
||||||
|
@ -36,7 +36,8 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void __init_mod_list()
|
void
|
||||||
|
__init_mod_list ()
|
||||||
{
|
{
|
||||||
|
|
||||||
strcpy (segv_location, "__init_mod_list");
|
strcpy (segv_location, "__init_mod_list");
|
||||||
|
@ -48,7 +49,8 @@ void __init_mod_list()
|
||||||
sockh = hash_create (me.maxsocks, 0, 0);
|
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;
|
Mod_Timer *t;
|
||||||
hnode_t *tn;
|
hnode_t *tn;
|
||||||
|
@ -60,8 +62,7 @@ static Mod_Timer *new_timer(char *timer_name)
|
||||||
strncpy (t->timername, timer_name, MAXHOST);
|
strncpy (t->timername, timer_name, MAXHOST);
|
||||||
tn = hnode_create (t);
|
tn = hnode_create (t);
|
||||||
if (hash_isfull (th)) {
|
if (hash_isfull (th)) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "new_timer(): Couldn't add new Timer, Hash is Full!");
|
||||||
"new_timer(): Couldn't add new Timer, Hash is Full!");
|
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
hash_insert (th, tn, timer_name);
|
hash_insert (th, tn, timer_name);
|
||||||
|
@ -69,7 +70,8 @@ static Mod_Timer *new_timer(char *timer_name)
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
Mod_Timer *findtimer(char *timer_name)
|
Mod_Timer *
|
||||||
|
findtimer (char *timer_name)
|
||||||
{
|
{
|
||||||
hnode_t *tn;
|
hnode_t *tn;
|
||||||
|
|
||||||
|
@ -79,8 +81,9 @@ Mod_Timer *findtimer(char *timer_name)
|
||||||
return (Mod_Timer *) hnode_get (tn);
|
return (Mod_Timer *) hnode_get (tn);
|
||||||
return NULL;
|
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;
|
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) {
|
if (dlsym ((int *) get_dl_handle (mod_name), func_name) == NULL) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Oh Oh, The Timer Function doesn't exist");
|
||||||
"Oh Oh, The Timer Function doesn't exist");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
Mod_timer_list = new_timer (timer_name);
|
Mod_timer_list = new_timer (timer_name);
|
||||||
|
if (Mod_timer_list) {
|
||||||
Mod_timer_list->interval = interval;
|
Mod_timer_list->interval = interval;
|
||||||
Mod_timer_list->lastrun = time (NULL);
|
Mod_timer_list->lastrun = time (NULL);
|
||||||
strncpy (Mod_timer_list->modname, mod_name, MAXHOST);
|
strncpy (Mod_timer_list->modname, mod_name, MAXHOST);
|
||||||
Mod_timer_list->function =
|
Mod_timer_list->function = dlsym ((int *) get_dl_handle (mod_name), func_name);
|
||||||
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);
|
||||||
nlog(LOG_DEBUG2, LOG_CORE,
|
|
||||||
"Registered Module %s with timer for Function %s", mod_name,
|
|
||||||
func_name);
|
|
||||||
return 1;
|
return 1;
|
||||||
|
} else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int del_mod_timer(char *timer_name)
|
int
|
||||||
|
del_mod_timer (char *timer_name)
|
||||||
{
|
{
|
||||||
Mod_Timer *list;
|
Mod_Timer *list;
|
||||||
hnode_t *tn;
|
hnode_t *tn;
|
||||||
|
@ -113,9 +117,7 @@ int del_mod_timer(char *timer_name)
|
||||||
tn = hash_lookup (th, timer_name);
|
tn = hash_lookup (th, timer_name);
|
||||||
if (tn) {
|
if (tn) {
|
||||||
list = hnode_get (tn);
|
list = hnode_get (tn);
|
||||||
nlog(LOG_DEBUG2, LOG_CORE,
|
nlog (LOG_DEBUG2, LOG_CORE, "Unregistered Timer function %s from Module %s", timer_name, list->modname);
|
||||||
"Unregistered Timer function %s from Module %s",
|
|
||||||
timer_name, list->modname);
|
|
||||||
hash_delete (th, tn);
|
hash_delete (th, tn);
|
||||||
hnode_destroy (tn);
|
hnode_destroy (tn);
|
||||||
free (list);
|
free (list);
|
||||||
|
@ -124,7 +126,8 @@ int del_mod_timer(char *timer_name)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void list_module_timer(User * u)
|
void
|
||||||
|
list_module_timer (User * u)
|
||||||
{
|
{
|
||||||
Mod_Timer *mod_ptr = NULL;
|
Mod_Timer *mod_ptr = NULL;
|
||||||
hscan_t ts;
|
hscan_t ts;
|
||||||
|
@ -135,21 +138,16 @@ void list_module_timer(User * u)
|
||||||
hash_scan_begin (&ts, th);
|
hash_scan_begin (&ts, th);
|
||||||
while ((tn = hash_scan_next (&ts)) != NULL) {
|
while ((tn = hash_scan_next (&ts)) != NULL) {
|
||||||
mod_ptr = hnode_get (tn);
|
mod_ptr = hnode_get (tn);
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "%s:--------------------------------", mod_ptr->modname);
|
||||||
"%s:--------------------------------",
|
prefmsg (u->nick, s_Services, "Module Timer Name: %s", mod_ptr->timername);
|
||||||
mod_ptr->modname);
|
prefmsg (u->nick, s_Services, "Module Interval: %d", mod_ptr->interval);
|
||||||
prefmsg(u->nick, s_Services, "Module Timer Name: %s",
|
prefmsg (u->nick, s_Services, "Time till next Run: %d", mod_ptr->interval - (time (NULL) - mod_ptr->lastrun));
|
||||||
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");
|
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;
|
Sock_List *s;
|
||||||
hnode_t *sn;
|
hnode_t *sn;
|
||||||
|
@ -162,8 +160,7 @@ static Sock_List *new_sock(char *sock_name)
|
||||||
strncpy (s->sockname, sock_name, MAXHOST);
|
strncpy (s->sockname, sock_name, MAXHOST);
|
||||||
sn = hnode_create (s);
|
sn = hnode_create (s);
|
||||||
if (hash_isfull (sockh)) {
|
if (hash_isfull (sockh)) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeek, SocketHash is full, can not add a new socket");
|
||||||
"Eeek, SocketHash is full, can not add a new socket");
|
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
hash_insert (sockh, sn, s->sockname);
|
hash_insert (sockh, sn, s->sockname);
|
||||||
|
@ -171,7 +168,8 @@ static Sock_List *new_sock(char *sock_name)
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sock_List *findsock(char *sock_name)
|
Sock_List *
|
||||||
|
findsock (char *sock_name)
|
||||||
{
|
{
|
||||||
hnode_t *sn;
|
hnode_t *sn;
|
||||||
strcpy (segv_location, "findsock");
|
strcpy (segv_location, "findsock");
|
||||||
|
@ -181,55 +179,42 @@ Sock_List *findsock(char *sock_name)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int add_socket(char *readfunc, char *writefunc, char *errfunc,
|
int
|
||||||
char *sock_name, int socknum, char *mod_name)
|
add_socket (char *readfunc, char *writefunc, char *errfunc, char *sock_name, int socknum, char *mod_name)
|
||||||
{
|
{
|
||||||
Sock_List *Sockets_mod_list;
|
Sock_List *Sockets_mod_list;
|
||||||
|
|
||||||
strcpy (segv_location, "add_Socket");
|
strcpy (segv_location, "add_Socket");
|
||||||
if (readfunc) {
|
if (readfunc) {
|
||||||
if (dlsym((int *) get_dl_handle(mod_name), readfunc) ==
|
if (dlsym ((int *) get_dl_handle (mod_name), readfunc) == NULL) {
|
||||||
NULL) {
|
nlog (LOG_WARNING, LOG_CORE, "oh oh, the Read socket function doesn't exist = %s (%s)", readfunc, mod_name);
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
|
||||||
"oh oh, the Read socket function doesn't exist = %s (%s)",
|
|
||||||
readfunc, mod_name);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (writefunc) {
|
if (writefunc) {
|
||||||
if (dlsym((int *) get_dl_handle(mod_name), writefunc) ==
|
if (dlsym ((int *) get_dl_handle (mod_name), writefunc) == NULL) {
|
||||||
NULL) {
|
nlog (LOG_WARNING, LOG_CORE, "oh oh, the Write socket function doesn't exist = %s (%s)", writefunc, mod_name);
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
|
||||||
"oh oh, the Write socket function doesn't exist = %s (%s)",
|
|
||||||
writefunc, mod_name);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (errfunc) {
|
if (errfunc) {
|
||||||
if (dlsym((int *) get_dl_handle(mod_name), errfunc) ==
|
if (dlsym ((int *) get_dl_handle (mod_name), errfunc) == NULL) {
|
||||||
NULL) {
|
nlog (LOG_WARNING, LOG_CORE, "oh oh, the Error socket function doesn't exist = %s (%s)", errfunc, mod_name);
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
|
||||||
"oh oh, the Error socket function doesn't exist = %s (%s)",
|
|
||||||
errfunc, mod_name);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Sockets_mod_list = new_sock (sock_name);
|
Sockets_mod_list = new_sock (sock_name);
|
||||||
Sockets_mod_list->sock_no = socknum;
|
Sockets_mod_list->sock_no = socknum;
|
||||||
strncpy (Sockets_mod_list->modname, mod_name, MAXHOST);
|
strncpy (Sockets_mod_list->modname, mod_name, MAXHOST);
|
||||||
Sockets_mod_list->readfnc =
|
Sockets_mod_list->readfnc = dlsym ((int *) get_dl_handle (mod_name), readfunc);
|
||||||
dlsym((int *) get_dl_handle(mod_name), readfunc);
|
Sockets_mod_list->writefnc = dlsym ((int *) get_dl_handle (mod_name), writefunc);
|
||||||
Sockets_mod_list->writefnc =
|
Sockets_mod_list->errfnc = dlsym ((int *) get_dl_handle (mod_name), errfunc);
|
||||||
dlsym((int *) get_dl_handle(mod_name), writefunc);
|
nlog (LOG_DEBUG2, LOG_CORE, "Registered Module %s with Socket functions %s", mod_name, Sockets_mod_list->sockname);
|
||||||
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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int del_socket(char *sock_name)
|
int
|
||||||
|
del_socket (char *sock_name)
|
||||||
{
|
{
|
||||||
Sock_List *list;
|
Sock_List *list;
|
||||||
hnode_t *sn;
|
hnode_t *sn;
|
||||||
|
@ -238,9 +223,7 @@ int del_socket(char *sock_name)
|
||||||
sn = hash_lookup (sockh, sock_name);
|
sn = hash_lookup (sockh, sock_name);
|
||||||
if (sn) {
|
if (sn) {
|
||||||
list = hnode_get (sn);
|
list = hnode_get (sn);
|
||||||
nlog(LOG_DEBUG2, LOG_CORE,
|
nlog (LOG_DEBUG2, LOG_CORE, "Unregistered Socket function %s from Module %s", sock_name, list->modname);
|
||||||
"Unregistered Socket function %s from Module %s",
|
|
||||||
sock_name, list->modname);
|
|
||||||
hash_scan_delete (sockh, sn);
|
hash_scan_delete (sockh, sn);
|
||||||
hnode_destroy (sn);
|
hnode_destroy (sn);
|
||||||
// free(list->sockname);
|
// free(list->sockname);
|
||||||
|
@ -250,30 +233,27 @@ int del_socket(char *sock_name)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void list_sockets(User * u)
|
void
|
||||||
|
list_sockets (User * u)
|
||||||
{
|
{
|
||||||
Sock_List *mod_ptr = NULL;
|
Sock_List *mod_ptr = NULL;
|
||||||
hscan_t ss;
|
hscan_t ss;
|
||||||
hnode_t *sn;
|
hnode_t *sn;
|
||||||
|
|
||||||
strcpy (segv_location, "list_sockets");
|
strcpy (segv_location, "list_sockets");
|
||||||
prefmsg(u->nick, s_Services, "Sockets List: (%d)",
|
prefmsg (u->nick, s_Services, "Sockets List: (%d)", hash_count (sockh));
|
||||||
hash_count(sockh));
|
|
||||||
hash_scan_begin (&ss, sockh);
|
hash_scan_begin (&ss, sockh);
|
||||||
while ((sn = hash_scan_next (&ss)) != NULL) {
|
while ((sn = hash_scan_next (&ss)) != NULL) {
|
||||||
mod_ptr = hnode_get (sn);
|
mod_ptr = hnode_get (sn);
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "%s:--------------------------------", mod_ptr->modname);
|
||||||
"%s:--------------------------------",
|
prefmsg (u->nick, s_Services, "Socket Name: %s", mod_ptr->sockname);
|
||||||
mod_ptr->modname);
|
prefmsg (u->nick, s_Services, "Socket Number: %d", mod_ptr->sock_no);
|
||||||
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");
|
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;
|
hnode_t *cbn;
|
||||||
Chan_Bot *bc;
|
Chan_Bot *bc;
|
||||||
|
@ -286,8 +266,7 @@ extern void add_bot_to_chan(char *bot, char *chan)
|
||||||
bc->bots = list_create (B_TABLE_SIZE);
|
bc->bots = list_create (B_TABLE_SIZE);
|
||||||
cbn = hnode_create (bc);
|
cbn = hnode_create (bc);
|
||||||
if (hash_isfull (bch)) {
|
if (hash_isfull (bch)) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "eek, bot channel hash is full");
|
||||||
"eek, bot channel hash is full");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
hash_insert (bch, cbn, bc->chan);
|
hash_insert (bch, cbn, bc->chan);
|
||||||
|
@ -295,8 +274,7 @@ extern void add_bot_to_chan(char *bot, char *chan)
|
||||||
bc = hnode_get (cbn);
|
bc = hnode_get (cbn);
|
||||||
}
|
}
|
||||||
if (list_isfull (bc->bots)) {
|
if (list_isfull (bc->bots)) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeek, Bot Channel List is full for Chan %s", chan);
|
||||||
"Eeek, Bot Channel List is full for Chan %s", chan);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
botname = sstrdup (bot);
|
botname = sstrdup (bot);
|
||||||
|
@ -305,23 +283,21 @@ extern void add_bot_to_chan(char *bot, char *chan)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void del_bot_from_chan(char *bot, char *chan)
|
extern void
|
||||||
|
del_bot_from_chan (char *bot, char *chan)
|
||||||
{
|
{
|
||||||
hnode_t *cbn;
|
hnode_t *cbn;
|
||||||
Chan_Bot *bc;
|
Chan_Bot *bc;
|
||||||
lnode_t *bmn;
|
lnode_t *bmn;
|
||||||
cbn = hash_lookup (bch, chan);
|
cbn = hash_lookup (bch, chan);
|
||||||
if (!cbn) {
|
if (!cbn) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Hu? Can't Find Channel %s for botchanhash", chan);
|
||||||
"Hu? Can't Find Channel %s for botchanhash", chan);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
bc = hnode_get (cbn);
|
bc = hnode_get (cbn);
|
||||||
bmn = list_find (bc->bots, bot, comparef);
|
bmn = list_find (bc->bots, bot, comparef);
|
||||||
if (!bmn) {
|
if (!bmn) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Hu? Can't find bot %s in %s in botchanhash", bot, chan);
|
||||||
"Hu? Can't find bot %s in %s in botchanhash", bot,
|
|
||||||
chan);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
list_delete (bc->bots, bmn);
|
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;
|
hnode_t *cbn;
|
||||||
Chan_Bot *bc;
|
Chan_Bot *bc;
|
||||||
|
@ -344,9 +321,7 @@ extern void bot_chan_message(char *origin, char *chan, char **av, int ac)
|
||||||
Mod_User *u;
|
Mod_User *u;
|
||||||
cbn = hash_lookup (bch, chan);
|
cbn = hash_lookup (bch, chan);
|
||||||
if (!cbn) {
|
if (!cbn) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "eeeh, Can't find channel %s for BotChanMessage", chan);
|
||||||
"eeeh, Can't find channel %s for BotChanMessage",
|
|
||||||
chan);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
bc = hnode_get (cbn);
|
bc = hnode_get (cbn);
|
||||||
|
@ -354,8 +329,7 @@ extern void bot_chan_message(char *origin, char *chan, char **av, int ac)
|
||||||
while (bmn) {
|
while (bmn) {
|
||||||
u = findbot (lnode_get (bmn));
|
u = findbot (lnode_get (bmn));
|
||||||
if (u->chanfunc) {
|
if (u->chanfunc) {
|
||||||
nlog(LOG_DEBUG2, LOG_CORE,
|
nlog (LOG_DEBUG2, LOG_CORE, "Running Module for Chanmessage %s", chan);
|
||||||
"Running Module for Chanmessage %s", chan);
|
|
||||||
u->chanfunc (origin, chan, av, ac);
|
u->chanfunc (origin, chan, av, ac);
|
||||||
}
|
}
|
||||||
bmn = list_next (bc->bots, bmn);
|
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;
|
hscan_t hs;
|
||||||
hnode_t *hn;
|
hnode_t *hn;
|
||||||
|
@ -375,18 +350,17 @@ extern void botchandump(User * u)
|
||||||
hash_scan_begin (&hs, bch);
|
hash_scan_begin (&hs, bch);
|
||||||
while ((hn = hash_scan_next (&hs)) != NULL) {
|
while ((hn = hash_scan_next (&hs)) != NULL) {
|
||||||
bc = hnode_get (hn);
|
bc = hnode_get (hn);
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "%s:--------------------------------", bc->chan);
|
||||||
"%s:--------------------------------", bc->chan);
|
|
||||||
ln = list_first (bc->bots);
|
ln = list_first (bc->bots);
|
||||||
while (ln) {
|
while (ln) {
|
||||||
prefmsg(u->nick, s_Services, "Bot Name: %s",
|
prefmsg (u->nick, s_Services, "Bot Name: %s", lnode_get (ln));
|
||||||
lnode_get(ln));
|
|
||||||
ln = list_next (bc->bots, 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;
|
Mod_User *u;
|
||||||
hnode_t *bn;
|
hnode_t *bn;
|
||||||
|
@ -406,7 +380,9 @@ static Mod_User *new_bot(char *bot_name)
|
||||||
}
|
}
|
||||||
return u;
|
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;
|
Mod_User *Mod_Usr_list;
|
||||||
Module *list_ptr;
|
Module *list_ptr;
|
||||||
|
@ -423,19 +399,17 @@ int add_mod_user(char *nick, char *mod_name)
|
||||||
mn = hash_lookup (mh, mod_name);
|
mn = hash_lookup (mh, mod_name);
|
||||||
if (mn) {
|
if (mn) {
|
||||||
list_ptr = hnode_get (mn);
|
list_ptr = hnode_get (mn);
|
||||||
Mod_Usr_list->function =
|
Mod_Usr_list->function = dlsym (list_ptr->dl_handle, "__Bot_Message");
|
||||||
dlsym(list_ptr->dl_handle, "__Bot_Message");
|
Mod_Usr_list->chanfunc = dlsym (list_ptr->dl_handle, "__Chan_Message");
|
||||||
Mod_Usr_list->chanfunc =
|
|
||||||
dlsym(list_ptr->dl_handle, "__Chan_Message");
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "add_mod_user(): Couldn't Add ModuleBot to List");
|
||||||
"add_mod_user(): Couldn't Add ModuleBot to List");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Mod_User *findbot(char *bot_name)
|
Mod_User *
|
||||||
|
findbot (char *bot_name)
|
||||||
{
|
{
|
||||||
hnode_t *bn;
|
hnode_t *bn;
|
||||||
|
|
||||||
|
@ -447,7 +421,8 @@ Mod_User *findbot(char *bot_name)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int del_mod_user(char *bot_name)
|
int
|
||||||
|
del_mod_user (char *bot_name)
|
||||||
{
|
{
|
||||||
Mod_User *list;
|
Mod_User *list;
|
||||||
hnode_t *bn;
|
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;
|
User *u;
|
||||||
Mod_User *mod_tmp, *mod_ptr;
|
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! */
|
/* First, try to find out if the newnick is unique! */
|
||||||
u = finduser (oldnick);
|
u = finduser (oldnick);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "A non-registered bot(%s) attempted to change its nick to %s", oldnick, newnick);
|
||||||
"A non-registered bot(%s) attempted to change its nick to %s",
|
|
||||||
oldnick, newnick);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
u = finduser (newnick);
|
u = finduser (newnick);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
if ((mod_ptr = findbot (oldnick)) != NULL) {
|
if ((mod_ptr = findbot (oldnick)) != NULL) {
|
||||||
nlog(LOG_DEBUG3, LOG_CORE,
|
nlog (LOG_DEBUG3, LOG_CORE, "Bot %s Changed its nick to %s", oldnick, newnick);
|
||||||
"Bot %s Changed its nick to %s", oldnick,
|
|
||||||
newnick);
|
|
||||||
mod_tmp = new_bot (newnick);
|
mod_tmp = new_bot (newnick);
|
||||||
|
|
||||||
/* add a brand new user */
|
/* add a brand new user */
|
||||||
|
|
||||||
strncpy (mod_tmp->nick, newnick, MAXNICK);
|
strncpy (mod_tmp->nick, newnick, MAXNICK);
|
||||||
strncpy(mod_tmp->modname, mod_ptr->modname,
|
strncpy (mod_tmp->modname, mod_ptr->modname, MAXHOST);
|
||||||
MAXHOST);
|
|
||||||
mod_tmp->function = mod_ptr->function;
|
mod_tmp->function = mod_ptr->function;
|
||||||
|
|
||||||
/* Now Delete the Old bot nick */
|
/* Now Delete the Old bot nick */
|
||||||
|
@ -506,15 +477,15 @@ int bot_nick_change(char *oldnick, char *newnick)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nlog(LOG_NOTICE, LOG_CORE, "Couldn't find Bot Nick %s in Bot list",
|
nlog (LOG_NOTICE, LOG_CORE, "Couldn't find Bot Nick %s in Bot list", oldnick);
|
||||||
oldnick);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void list_module_bots(User * u)
|
void
|
||||||
|
list_module_bots (User * u)
|
||||||
{
|
{
|
||||||
Mod_User *mod_ptr;
|
Mod_User *mod_ptr;
|
||||||
hnode_t *bn;
|
hnode_t *bn;
|
||||||
|
@ -525,10 +496,8 @@ void list_module_bots(User * u)
|
||||||
hash_scan_begin (&bs, bh);
|
hash_scan_begin (&bs, bh);
|
||||||
while ((bn = hash_scan_next (&bs)) != NULL) {
|
while ((bn = hash_scan_next (&bs)) != NULL) {
|
||||||
mod_ptr = hnode_get (bn);
|
mod_ptr = hnode_get (bn);
|
||||||
prefmsg(u->nick, s_Services, "Module: %s",
|
prefmsg (u->nick, s_Services, "Module: %s", mod_ptr->modname);
|
||||||
mod_ptr->modname);
|
prefmsg (u->nick, s_Services, "Module Bots: %s", mod_ptr->nick);
|
||||||
prefmsg(u->nick, s_Services, "Module Bots: %s",
|
|
||||||
mod_ptr->nick);
|
|
||||||
}
|
}
|
||||||
prefmsg (u->nick, s_Services, "End of Module Bot List");
|
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, "");
|
strcpy (segvinmodule, "");
|
||||||
if (!dl_handle) {
|
if (!dl_handle) {
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Error, Couldn't Load Module");
|
||||||
"Error, Couldn't Load Module");
|
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
prefmsg (u->nick, s_Services, "%s", dlerror ());
|
prefmsg (u->nick, s_Services, "%s", dlerror ());
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s",
|
nlog (LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s", dlerror ());
|
||||||
dlerror());
|
|
||||||
nlog (LOG_WARNING, LOG_CORE, "Module was %s", p);
|
nlog (LOG_WARNING, LOG_CORE, "Module was %s", p);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -599,12 +567,10 @@ int load_module(char *path1, User * u)
|
||||||
if ((dl_error = dlerror ()) != NULL) {
|
if ((dl_error = dlerror ()) != NULL) {
|
||||||
#endif
|
#endif
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Error, Couldn't Load Module");
|
||||||
"Error, Couldn't Load Module");
|
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
prefmsg (u->nick, s_Services, "%s", dl_error);
|
prefmsg (u->nick, s_Services, "%s", dl_error);
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s",
|
nlog (LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s", dl_error);
|
||||||
dl_error);
|
|
||||||
dlclose (dl_handle);
|
dlclose (dl_handle);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -617,12 +583,10 @@ int load_module(char *path1, User * u)
|
||||||
if ((dl_error = dlerror ()) != NULL) {
|
if ((dl_error = dlerror ()) != NULL) {
|
||||||
#endif
|
#endif
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Error, Couldn't Load Module");
|
||||||
"Error, Couldn't Load Module");
|
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
prefmsg (u->nick, s_Services, "%s", dl_error);
|
prefmsg (u->nick, s_Services, "%s", dl_error);
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s",
|
nlog (LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s", dl_error);
|
||||||
dl_error);
|
|
||||||
dlclose (dl_handle);
|
dlclose (dl_handle);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -637,11 +601,8 @@ int load_module(char *path1, User * u)
|
||||||
|
|
||||||
if (mod_info_ptr == NULL || mod_funcs_ptr == NULL) {
|
if (mod_info_ptr == NULL || mod_funcs_ptr == NULL) {
|
||||||
dlclose (dl_handle);
|
dlclose (dl_handle);
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "%s: Could not load dynamic library %s!\n", __PRETTY_FUNCTION__, path);
|
||||||
"%s: Could not load dynamic library %s!\n",
|
nlog (LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s", dlerror ());
|
||||||
__PRETTY_FUNCTION__, path);
|
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Couldn't Load Module: %s",
|
|
||||||
dlerror());
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -650,9 +611,7 @@ int load_module(char *path1, User * u)
|
||||||
if (hash_lookup (mh, mod_info_ptr->module_name)) {
|
if (hash_lookup (mh, mod_info_ptr->module_name)) {
|
||||||
dlclose (dl_handle);
|
dlclose (dl_handle);
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Module %s already Loaded, Can't Load 2 Copies", mod_info_ptr->module_name);
|
||||||
"Module %s already Loaded, Can't Load 2 Copies",
|
|
||||||
mod_info_ptr->module_name);
|
|
||||||
free (mod_ptr);
|
free (mod_ptr);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -662,21 +621,17 @@ int load_module(char *path1, User * u)
|
||||||
mn = hnode_create (mod_ptr);
|
mn = hnode_create (mod_ptr);
|
||||||
if (hash_isfull (mh)) {
|
if (hash_isfull (mh)) {
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Module List is Full. Can't Load any more modules");
|
||||||
"Module List is Full. Can't Load any more modules");
|
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Module List is Full, Can't Load any more Modules");
|
||||||
"Module List is Full, Can't Load any more Modules");
|
|
||||||
dlclose (dl_handle);
|
dlclose (dl_handle);
|
||||||
free (mod_ptr);
|
free (mod_ptr);
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
hash_insert (mh, mn, mod_info_ptr->module_name);
|
hash_insert (mh, mn, mod_info_ptr->module_name);
|
||||||
}
|
}
|
||||||
nlog(LOG_NORMAL, LOG_CORE, "Module Internal name: %s",
|
nlog (LOG_NORMAL, LOG_CORE, "Module Internal name: %s", mod_info_ptr->module_name);
|
||||||
mod_info_ptr->module_name);
|
nlog (LOG_NORMAL, LOG_CORE, "Module description: %s", mod_info_ptr->module_description);
|
||||||
nlog(LOG_NORMAL, LOG_CORE, "Module description: %s",
|
|
||||||
mod_info_ptr->module_description);
|
|
||||||
|
|
||||||
mod_ptr->info = mod_info_ptr;
|
mod_ptr->info = mod_info_ptr;
|
||||||
mod_ptr->function_list = mod_funcs_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 */
|
/* assign a module number to this module */
|
||||||
i = 0;
|
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 */
|
/* no need to check for overflow of NUM_MODULES, as its done above */
|
||||||
ModNum[i].used = 1;
|
ModNum[i].used = 1;
|
||||||
ModNum[i].mod = mod_ptr;
|
ModNum[i].mod = mod_ptr;
|
||||||
|
@ -699,10 +655,8 @@ int load_module(char *path1, User * u)
|
||||||
while (event_fn_ptr->cmd_name != NULL) {
|
while (event_fn_ptr->cmd_name != NULL) {
|
||||||
if (!strcasecmp (event_fn_ptr->cmd_name, "ONLINE")) {
|
if (!strcasecmp (event_fn_ptr->cmd_name, "ONLINE")) {
|
||||||
AddStringToList (&av, me.s->name, &ac);
|
AddStringToList (&av, me.s->name, &ac);
|
||||||
strcpy(segv_location,
|
strcpy (segv_location, mod_ptr->info->module_name);
|
||||||
mod_ptr->info->module_name);
|
strcpy (segvinmodule, mod_ptr->info->module_name);
|
||||||
strcpy(segvinmodule,
|
|
||||||
mod_ptr->info->module_name);
|
|
||||||
event_fn_ptr->function (av, ac);
|
event_fn_ptr->function (av, ac);
|
||||||
strcpy (segv_location, "AfterDLLoadOnline");
|
strcpy (segv_location, "AfterDLLoadOnline");
|
||||||
strcpy (segvinmodule, "");
|
strcpy (segvinmodule, "");
|
||||||
|
@ -713,18 +667,15 @@ int load_module(char *path1, User * u)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Module %s Loaded, Description: %s", mod_info_ptr->module_name, mod_info_ptr->module_description);
|
||||||
"Module %s Loaded, Description: %s",
|
|
||||||
mod_info_ptr->module_name,
|
|
||||||
mod_info_ptr->module_description);
|
|
||||||
if (do_msg)
|
if (do_msg)
|
||||||
globops(me.name, "%s Module Loaded",
|
globops (me.name, "%s Module Loaded", mod_info_ptr->module_name);
|
||||||
mod_info_ptr->module_name);
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
extern int get_dl_handle(char *mod_name)
|
extern int
|
||||||
|
get_dl_handle (char *mod_name)
|
||||||
{
|
{
|
||||||
Module *list_ptr;
|
Module *list_ptr;
|
||||||
hnode_t *mn;
|
hnode_t *mn;
|
||||||
|
@ -738,7 +689,8 @@ extern int get_dl_handle(char *mod_name)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
extern int get_mod_num(char *mod_name)
|
extern int
|
||||||
|
get_mod_num (char *mod_name)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i <= NUM_MODULES; 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;
|
Module *mod_ptr = NULL;
|
||||||
hnode_t *mn;
|
hnode_t *mn;
|
||||||
|
@ -764,18 +717,15 @@ void list_module(User * u)
|
||||||
hash_scan_begin (&hs, mh);
|
hash_scan_begin (&hs, mh);
|
||||||
while ((mn = hash_scan_next (&hs)) != NULL) {
|
while ((mn = hash_scan_next (&hs)) != NULL) {
|
||||||
mod_ptr = hnode_get (mn);
|
mod_ptr = hnode_get (mn);
|
||||||
prefmsg(u->nick, s_Services, "Module: %s (%s)",
|
prefmsg (u->nick, s_Services, "Module: %s (%s)", mod_ptr->info->module_name, mod_ptr->info->module_version);
|
||||||
mod_ptr->info->module_name,
|
prefmsg (u->nick, s_Services, "Module Description: %s", mod_ptr->info->module_description);
|
||||||
mod_ptr->info->module_version);
|
prefmsg (u->nick, s_Services, "Module Number: %d", get_mod_num (mod_ptr->info->module_name));
|
||||||
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");
|
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;
|
Module *list;
|
||||||
Mod_User *mod_ptr = NULL;
|
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);
|
chanalert (s_Services, "Unloading Module %s", module_name);
|
||||||
} else {
|
} else {
|
||||||
if (u) {
|
if (u) {
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Couldn't Find Module %s Loaded, Try /msg %s modlist", module_name, s_Services);
|
||||||
"Couldn't Find Module %s Loaded, Try /msg %s modlist",
|
chanalert (s_Services, "%s tried to Unload %s but its not loaded", u->nick, module_name);
|
||||||
module_name, s_Services);
|
|
||||||
chanalert(s_Services,
|
|
||||||
"%s tried to Unload %s but its not loaded",
|
|
||||||
u->nick, module_name);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -808,9 +754,7 @@ int unload_module(char *module_name, User * u)
|
||||||
while ((modnode = hash_scan_next (&hscan)) != NULL) {
|
while ((modnode = hash_scan_next (&hscan)) != NULL) {
|
||||||
mod_tmr = hnode_get (modnode);
|
mod_tmr = hnode_get (modnode);
|
||||||
if (!strcasecmp (mod_tmr->modname, module_name)) {
|
if (!strcasecmp (mod_tmr->modname, module_name)) {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE,
|
nlog (LOG_DEBUG1, LOG_CORE, "Module %s has timer %s Registered. Deleting..", module_name, mod_tmr->timername);
|
||||||
"Module %s has timer %s Registered. Deleting..",
|
|
||||||
module_name, mod_tmr->timername);
|
|
||||||
del_mod_timer (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) {
|
while ((modnode = hash_scan_next (&hscan)) != NULL) {
|
||||||
mod_sock = hnode_get (modnode);
|
mod_sock = hnode_get (modnode);
|
||||||
if (!strcasecmp (mod_sock->modname, module_name)) {
|
if (!strcasecmp (mod_sock->modname, module_name)) {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE,
|
nlog (LOG_DEBUG1, LOG_CORE, "Module %s had Socket %s Registered. Deleting..", module_name, mod_sock->sockname);
|
||||||
"Module %s had Socket %s Registered. Deleting..",
|
|
||||||
module_name, mod_sock->sockname);
|
|
||||||
del_socket (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) {
|
while ((modnode = hash_scan_next (&hscan)) != NULL) {
|
||||||
mod_ptr = hnode_get (modnode);
|
mod_ptr = hnode_get (modnode);
|
||||||
if (!strcasecmp (mod_ptr->modname, module_name)) {
|
if (!strcasecmp (mod_ptr->modname, module_name)) {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE,
|
nlog (LOG_DEBUG1, LOG_CORE, "Module %s had bot %s Registered. Deleting..", module_name, mod_ptr->nick);
|
||||||
"Module %s had bot %s Registered. Deleting..",
|
|
||||||
module_name, mod_ptr->nick);
|
|
||||||
del_bot (mod_ptr->nick, "Module Unloaded");
|
del_bot (mod_ptr->nick, "Module Unloaded");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
modnode = hash_lookup (mh, module_name);
|
modnode = hash_lookup (mh, module_name);
|
||||||
if (modnode) {
|
if (modnode) {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE,
|
nlog (LOG_DEBUG1, LOG_CORE, "Deleting Module %s from ModHash", module_name);
|
||||||
"Deleting Module %s from ModHash", module_name);
|
|
||||||
globops (me.name, "%s Module Unloaded", module_name);
|
globops (me.name, "%s Module Unloaded", module_name);
|
||||||
|
|
||||||
i = get_mod_num (module_name);
|
i = get_mod_num (module_name);
|
||||||
|
|
2
dl.h
2
dl.h
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
51
dns.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
|
* @return returns 1 on success, 0 on failure (to add the lookup, not a successfull lookup
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int dns_lookup(char *str, adns_rrtype type,
|
int
|
||||||
void (*callback) (char *data, adns_answer * a), char *data)
|
dns_lookup (char *str, adns_rrtype type, void (*callback) (char *data, adns_answer * a), char *data)
|
||||||
{
|
{
|
||||||
lnode_t *dnsnode;
|
lnode_t *dnsnode;
|
||||||
DnsLookup *dnsdata;
|
DnsLookup *dnsdata;
|
||||||
|
@ -98,27 +98,17 @@ int dns_lookup(char *str, adns_rrtype type,
|
||||||
if (type == adns_r_ptr) {
|
if (type == adns_r_ptr) {
|
||||||
sa.sin_family = AF_INET;
|
sa.sin_family = AF_INET;
|
||||||
sa.sin_addr.s_addr = inet_addr (str);
|
sa.sin_addr.s_addr = inet_addr (str);
|
||||||
status =
|
status = adns_submit_reverse (ads, (const struct sockaddr *) &sa, type, adns_qf_owner | adns_qf_cname_loose, NULL, &dnsdata->q);
|
||||||
adns_submit_reverse(ads, (const struct sockaddr *) &sa,
|
|
||||||
type,
|
|
||||||
adns_qf_owner |
|
|
||||||
adns_qf_cname_loose, NULL,
|
|
||||||
&dnsdata->q);
|
|
||||||
} else {
|
} else {
|
||||||
status =
|
status = adns_submit (ads, str, type, adns_qf_owner | adns_qf_cname_loose, NULL, &dnsdata->q);
|
||||||
adns_submit(ads, str, type,
|
|
||||||
adns_qf_owner | adns_qf_cname_loose, NULL,
|
|
||||||
&dnsdata->q);
|
|
||||||
}
|
}
|
||||||
if (status) {
|
if (status) {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "DNS: adns_submit error: %s",
|
nlog (LOG_WARNING, LOG_CORE, "DNS: adns_submit error: %s", strerror (status));
|
||||||
strerror(status));
|
|
||||||
free (dnsdata);
|
free (dnsdata);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "DNS: Added dns query %s to list",
|
nlog (LOG_DEBUG1, LOG_CORE, "DNS: Added dns query %s to list", data);
|
||||||
data);
|
|
||||||
/* if we get here, then the submit was successfull. Add it to the list of queryies */
|
/* if we get here, then the submit was successfull. Add it to the list of queryies */
|
||||||
dnsnode = lnode_create (dnsdata);
|
dnsnode = lnode_create (dnsdata);
|
||||||
list_append (dnslist, dnsnode);
|
list_append (dnslist, dnsnode);
|
||||||
|
@ -134,7 +124,8 @@ int dns_lookup(char *str, adns_rrtype type,
|
||||||
* @return returns 1 on success, 0 on failure
|
* @return returns 1 on success, 0 on failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int init_dns()
|
int
|
||||||
|
init_dns ()
|
||||||
{
|
{
|
||||||
int adnsstart;
|
int adnsstart;
|
||||||
|
|
||||||
|
@ -144,15 +135,13 @@ int init_dns()
|
||||||
if (!dnslist)
|
if (!dnslist)
|
||||||
return 0;
|
return 0;
|
||||||
#ifndef DEBUG
|
#ifndef DEBUG
|
||||||
adnsstart =
|
adnsstart = adns_init (&ads, adns_if_noerrprint | adns_if_noautosys, 0);
|
||||||
adns_init(&ads, adns_if_noerrprint | adns_if_noautosys, 0);
|
|
||||||
#else
|
#else
|
||||||
adnsstart = adns_init (&ads, adns_if_debug | adns_if_noautosys, 0);
|
adnsstart = adns_init (&ads, adns_if_debug | adns_if_noautosys, 0);
|
||||||
#endif
|
#endif
|
||||||
if (adnsstart) {
|
if (adnsstart) {
|
||||||
printf ("ADNS init failed: %s\n", strerror (adnsstart));
|
printf ("ADNS init failed: %s\n", strerror (adnsstart));
|
||||||
nlog(LOG_CRITICAL, LOG_CORE, "ADNS init failed: %s",
|
nlog (LOG_CRITICAL, LOG_CORE, "ADNS init failed: %s", strerror (adnsstart));
|
||||||
strerror(adnsstart));
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -168,7 +157,8 @@ int init_dns()
|
||||||
* @return Nothing
|
* @return Nothing
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void do_dns()
|
void
|
||||||
|
do_dns ()
|
||||||
{
|
{
|
||||||
lnode_t *dnsnode, *dnsnode1;
|
lnode_t *dnsnode, *dnsnode1;
|
||||||
int status;
|
int status;
|
||||||
|
@ -187,19 +177,14 @@ void do_dns()
|
||||||
status = adns_check (ads, &dnsdata->q, &dnsdata->a, NULL);
|
status = adns_check (ads, &dnsdata->q, &dnsdata->a, NULL);
|
||||||
/* if status == eagain, the lookup hasn't completed yet */
|
/* if status == eagain, the lookup hasn't completed yet */
|
||||||
if (status == EAGAIN) {
|
if (status == EAGAIN) {
|
||||||
nlog(LOG_DEBUG2, LOG_CORE,
|
nlog (LOG_DEBUG2, LOG_CORE, "DNS: Lookup hasn't completed for %s", &dnsdata->data);
|
||||||
"DNS: Lookup hasn't completed for %s",
|
|
||||||
&dnsdata->data);
|
|
||||||
dnsnode = list_next (dnslist, dnsnode);
|
dnsnode = list_next (dnslist, dnsnode);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* there was a error */
|
/* there was a error */
|
||||||
if (status) {
|
if (status) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "DNS: Baaaad error on adns_check: %s. Please report to NeoStats Group", strerror (status));
|
||||||
"DNS: Baaaad error on adns_check: %s. Please report to NeoStats Group",
|
chanalert (s_Services, "Bad Error on DNS lookup. Please check logfile");
|
||||||
strerror(status));
|
|
||||||
chanalert(s_Services,
|
|
||||||
"Bad Error on DNS lookup. Please check logfile");
|
|
||||||
|
|
||||||
/* set this so nlog works good */
|
/* set this so nlog works good */
|
||||||
strncpy (segvinmodule, dnsdata->mod_name, MAXHOST);
|
strncpy (segvinmodule, dnsdata->mod_name, MAXHOST);
|
||||||
|
@ -215,9 +200,7 @@ void do_dns()
|
||||||
lnode_destroy (dnsnode1);
|
lnode_destroy (dnsnode1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
nlog(LOG_DEBUG2, LOG_CORE,
|
nlog (LOG_DEBUG2, LOG_CORE, "DNS: Calling callback function with data %s", dnsdata->data);
|
||||||
"DNS: Calling callback function with data %s",
|
|
||||||
dnsdata->data);
|
|
||||||
strncpy (segvinmodule, dnsdata->mod_name, MAXHOST);
|
strncpy (segvinmodule, dnsdata->mod_name, MAXHOST);
|
||||||
/* call the callback function */
|
/* call the callback function */
|
||||||
dnsdata->callback (dnsdata->data, dnsdata->a);
|
dnsdata->callback (dnsdata->data, dnsdata->a);
|
||||||
|
|
85
dotconf.c
85
dotconf.c
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** NeoStats CVS Identification
|
** 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>
|
#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_include (char *); /* magic 'Include' */
|
||||||
static void dotconf_cb_includepath (char *); /* magic 'IncludePath' */
|
static void dotconf_cb_includepath (char *); /* magic 'IncludePath' */
|
||||||
|
|
||||||
static config_option dotconf_options[] =
|
static config_option dotconf_options[] = { {"Include", ARG_STR, dotconf_cb_include, 0},
|
||||||
{ {"Include", ARG_STR, dotconf_cb_include, 0},
|
|
||||||
{"IncludePath", ARG_STR, dotconf_cb_includepath, 0},
|
{"IncludePath", ARG_STR, dotconf_cb_includepath, 0},
|
||||||
LAST_OPTION
|
LAST_OPTION
|
||||||
};
|
};
|
||||||
|
|
||||||
void config_substitute_env(char *str)
|
void
|
||||||
|
config_substitute_env (char *str)
|
||||||
{
|
{
|
||||||
char *cp1, *cp2, *cp3, *eos, *eob;
|
char *cp1, *cp2, *cp3, *eos, *eob;
|
||||||
char *env_value;
|
char *env_value;
|
||||||
|
@ -122,16 +122,14 @@ void config_substitute_env(char *str)
|
||||||
cp1++;
|
cp1++;
|
||||||
|
|
||||||
if (*cp1 != '}')
|
if (*cp1 != '}')
|
||||||
fprintf(stderr, "%s:%d: Unbalanced '{'\n",
|
fprintf (stderr, "%s:%d: Unbalanced '{'\n", dotconf_file, dotconf_line);
|
||||||
dotconf_file, dotconf_line);
|
|
||||||
else {
|
else {
|
||||||
cp1++; /* skip } */
|
cp1++; /* skip } */
|
||||||
if ((env_value = getenv (env_name)) != NULL) {
|
if ((env_value = getenv (env_name)) != NULL) {
|
||||||
strncat (cp2, env_value, eos - cp2);
|
strncat (cp2, env_value, eos - cp2);
|
||||||
cp2 += strlen (env_value);
|
cp2 += strlen (env_value);
|
||||||
} else {
|
} else {
|
||||||
strncat(cp2, env_default,
|
strncat (cp2, env_default, eos - cp2);
|
||||||
eos - cp2);
|
|
||||||
cp2 += strlen (env_default);
|
cp2 += strlen (env_default);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -145,7 +143,8 @@ void config_substitute_env(char *str)
|
||||||
strncpy (str, tmp_value, CFG_MAX_VALUE + 1);
|
strncpy (str, tmp_value, CFG_MAX_VALUE + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_register_options(config_option * options)
|
void
|
||||||
|
config_register_options (config_option * options)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < CFG_MODULES && config_options[i]; 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;
|
config_options[i] = options;
|
||||||
}
|
}
|
||||||
|
|
||||||
int config_parse(FILE * config)
|
int
|
||||||
|
config_parse (FILE * config)
|
||||||
{
|
{
|
||||||
static char buffer[CFG_BUFSIZE];
|
static char buffer[CFG_BUFSIZE];
|
||||||
static char *here_string; /* Damn FreeBSD */
|
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 */
|
/* and now find the entry in the option table, and call the callback */
|
||||||
bzero (&opt, sizeof (config_option));
|
bzero (&opt, sizeof (config_option));
|
||||||
for (mod = 0; mod < CFG_MODULES && config_options[mod];
|
for (mod = 0; mod < CFG_MODULES && config_options[mod]; mod++)
|
||||||
mod++)
|
|
||||||
for (i = 0; config_options[mod][i].name[0]; i++)
|
for (i = 0; config_options[mod][i].name[0]; i++)
|
||||||
if (!strncmp
|
if (!strncmp (name, config_options[mod][i].name, CFG_MAX_OPTION)) {
|
||||||
(name, config_options[mod][i].name,
|
|
||||||
CFG_MAX_OPTION)) {
|
|
||||||
opt = config_options[mod][i];
|
opt = config_options[mod][i];
|
||||||
break; /* found it; break out of for */
|
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 */
|
strncpy (here_limit, cp3 + 2, 8); /* copy here-delimiter */
|
||||||
while (fgets (buffer, CFG_BUFSIZE, config)) {
|
while (fgets (buffer, CFG_BUFSIZE, config)) {
|
||||||
if (!strncmp
|
if (!strncmp (here_limit, buffer, strlen (here_limit))) {
|
||||||
(here_limit, buffer,
|
|
||||||
strlen(here_limit))) {
|
|
||||||
here_string = 0;
|
here_string = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
strcat (here_doc, buffer); /* append to buffer */
|
strcat (here_doc, buffer); /* append to buffer */
|
||||||
}
|
}
|
||||||
if (here_string)
|
if (here_string)
|
||||||
fprintf(stderr,
|
fprintf (stderr, "Line %d: Unterminated here-document!\n", dotconf_line);
|
||||||
"Line %d: Unterminated here-document!\n",
|
|
||||||
dotconf_line);
|
|
||||||
here_doc[strlen (here_doc) - 1] = '\0'; /* strip newline */
|
here_doc[strlen (here_doc) - 1] = '\0'; /* strip newline */
|
||||||
opt.callback (here_doc, opt.userdata); /* call back */
|
opt.callback (here_doc, opt.userdata); /* call back */
|
||||||
|
|
||||||
|
@ -312,8 +305,7 @@ int config_parse(FILE * config)
|
||||||
cp1++;
|
cp1++;
|
||||||
}
|
}
|
||||||
/* not space or quoted ; eat it: */
|
/* not space or quoted ; eat it: */
|
||||||
else if ((((!isspace(*cp1) && !dq && !sq
|
else if ((((!isspace (*cp1) && !dq && !sq && *cp1 != '"' && *cp1 != '\'')
|
||||||
&& *cp1 != '"' && *cp1 != '\'')
|
|
||||||
/* dont take quote if quoting: */
|
/* dont take quote if quoting: */
|
||||||
|| (dq && (*cp1 != '"'))
|
|| (dq && (*cp1 != '"'))
|
||||||
|| (sq && *cp1 != '\''))))
|
|| (sq && *cp1 != '\''))))
|
||||||
|
@ -329,15 +321,10 @@ int config_parse(FILE * config)
|
||||||
{
|
{
|
||||||
/* the value is true if the argument is Yes, On or 1 */
|
/* the value is true if the argument is Yes, On or 1 */
|
||||||
/* kludge code follows ;) */
|
/* kludge code follows ;) */
|
||||||
int arg = ((values[0][0] == 'Y'
|
int arg = ((values[0][0] == 'Y' || values[0][1] == 'y')
|
||||||
|| values[0][1] == 'y')
|
|
||||||
|| (values[0][0] == '1')
|
|| (values[0][0] == '1')
|
||||||
|| ((values[0][0] == 'o'
|
|| ((values[0][0] == 'o' || values[0][0] == 'O')
|
||||||
|| values[0][0] ==
|
&& (values[0][1] == 'n' || values[0][1]
|
||||||
'O')
|
|
||||||
&& (values[0][1] ==
|
|
||||||
'n'
|
|
||||||
|| values[0][1]
|
|
||||||
== 'N')));
|
== 'N')));
|
||||||
opt.callback (arg, USER_DATA);
|
opt.callback (arg, USER_DATA);
|
||||||
break;
|
break;
|
||||||
|
@ -359,13 +346,10 @@ int config_parse(FILE * config)
|
||||||
char *data[CFG_VALUES];
|
char *data[CFG_VALUES];
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < word_count; i++) { /* prepare list */
|
for (i = 0; i < word_count; i++) { /* prepare list */
|
||||||
config_substitute_env
|
config_substitute_env (values[i]);
|
||||||
(values[i]);
|
data[i] = strdup (values[i]);
|
||||||
data[i] =
|
|
||||||
strdup(values[i]);
|
|
||||||
}
|
}
|
||||||
opt.callback(data, word_count,
|
opt.callback (data, word_count, USER_DATA);
|
||||||
USER_DATA);
|
|
||||||
|
|
||||||
for (i = 0; i < word_count; i++) /* dump list */
|
for (i = 0; i < word_count; i++) /* dump list */
|
||||||
free (data[i]);
|
free (data[i]);
|
||||||
|
@ -392,14 +376,14 @@ int config_parse(FILE * config)
|
||||||
* open and parse the config-file using the config_options list
|
* 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
|
* 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;
|
FILE *config;
|
||||||
char *dc_env; /* pointer to DC_INCLUDEPATH */
|
char *dc_env; /* pointer to DC_INCLUDEPATH */
|
||||||
|
|
||||||
if (access (fname, R_OK)) {
|
if (access (fname, R_OK)) {
|
||||||
fprintf(stderr, "Error opening configuration file '%s'\n",
|
fprintf (stderr, "Error opening configuration file '%s'\n", fname);
|
||||||
fname);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -427,7 +411,8 @@ int config_read(char *fname, config_option * options)
|
||||||
|
|
||||||
/* callbacks for internal options */
|
/* callbacks for internal options */
|
||||||
|
|
||||||
void dotconf_cb_include(char *str)
|
void
|
||||||
|
dotconf_cb_include (char *str)
|
||||||
{
|
{
|
||||||
FILE *config;
|
FILE *config;
|
||||||
char old_fname[CFG_MAX_FILENAME];
|
char old_fname[CFG_MAX_FILENAME];
|
||||||
|
@ -438,24 +423,17 @@ void dotconf_cb_include(char *str)
|
||||||
/* relative file AND include path is used */
|
/* relative file AND include path is used */
|
||||||
|
|
||||||
/* check for length of fully qualified filename */
|
/* check for length of fully qualified filename */
|
||||||
if ((strlen(str) + strlen(dotconf_includepath) + 1) ==
|
if ((strlen (str) + strlen (dotconf_includepath) + 1) == CFG_MAX_FILENAME) {
|
||||||
CFG_MAX_FILENAME) {
|
fprintf (stderr, "%s:%d: Absolute filename too long (>%d)\n", dotconf_file, dotconf_line, CFG_MAX_FILENAME);
|
||||||
fprintf(stderr,
|
|
||||||
"%s:%d: Absolute filename too long (>%d)\n",
|
|
||||||
dotconf_file, dotconf_line,
|
|
||||||
CFG_MAX_FILENAME);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(dotconf_file, CFG_MAX_FILENAME + 1, "%s/%s",
|
snprintf (dotconf_file, CFG_MAX_FILENAME + 1, "%s/%s", dotconf_includepath, str);
|
||||||
dotconf_includepath, str);
|
|
||||||
} else /* fully qualified, or no includepath */
|
} else /* fully qualified, or no includepath */
|
||||||
strncpy (dotconf_file, str, CFG_MAX_FILENAME);
|
strncpy (dotconf_file, str, CFG_MAX_FILENAME);
|
||||||
|
|
||||||
if (access (dotconf_file, R_OK)) {
|
if (access (dotconf_file, R_OK)) {
|
||||||
fprintf(stderr,
|
fprintf (stderr, "Error in %s line %d: Cannot open %s for inclusion\n", old_fname, dotconf_line, dotconf_file);
|
||||||
"Error in %s line %d: Cannot open %s for inclusion\n",
|
|
||||||
old_fname, dotconf_line, dotconf_file);
|
|
||||||
strcpy (dotconf_file, old_fname); /* restore settings */
|
strcpy (dotconf_file, old_fname); /* restore settings */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -466,7 +444,8 @@ void dotconf_cb_include(char *str)
|
||||||
strcpy (dotconf_file, old_fname);
|
strcpy (dotconf_file, old_fname);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dotconf_cb_includepath(char *str)
|
void
|
||||||
|
dotconf_cb_includepath (char *str)
|
||||||
{
|
{
|
||||||
char *env = getenv ("DC_INCLUDEPATH");
|
char *env = getenv ("DC_INCLUDEPATH");
|
||||||
if (!env) /* environment overrides configuration file setting */
|
if (!env) /* environment overrides configuration file setting */
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
167
hash.c
|
@ -39,7 +39,7 @@
|
||||||
* into proprietary software; there is no requirement for such software to
|
* into proprietary software; there is no requirement for such software to
|
||||||
* contain a copyright notice related to this source.
|
* 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: $
|
* $Name: $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -54,8 +54,7 @@
|
||||||
|
|
||||||
|
|
||||||
#ifdef KAZLIB_RCSID
|
#ifdef KAZLIB_RCSID
|
||||||
static const char rcsid[] =
|
static const char rcsid[] = "$Id: hash.c,v 1.11 2003/07/30 13:58:22 fishwaldo Exp $";
|
||||||
"$Id: hash.c,v 1.10 2003/07/17 10:13:51 fishwaldo Exp $";
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define INIT_BITS 6
|
#define INIT_BITS 6
|
||||||
|
@ -104,7 +103,8 @@ int hash_val_t_bit;
|
||||||
* right, replacing the topmost bit by zero.
|
* 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 */
|
hash_val_t val = HASH_VAL_T_MAX; /* 1 */
|
||||||
int bits = 0;
|
int bits = 0;
|
||||||
|
@ -121,7 +121,8 @@ static void compute_bits(void)
|
||||||
* Verify whether the given argument is a power of two.
|
* 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)
|
if (arg == 0)
|
||||||
return 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
|
* 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 (is_power_of_two (size));
|
||||||
nassert (size >= 2);
|
nassert (size >= 2);
|
||||||
|
@ -146,7 +148,8 @@ static hash_val_t compute_mask(hashcount_t size)
|
||||||
* Initialize the table of pointers to null.
|
* 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;
|
hash_val_t i;
|
||||||
|
|
||||||
|
@ -182,7 +185,8 @@ static void clear_table(hash_t * hash)
|
||||||
* the various bookeeping fields of the hash structure.
|
* 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;
|
hnode_t **newtable;
|
||||||
|
|
||||||
|
@ -198,11 +202,9 @@ static void grow_table(hash_t * hash)
|
||||||
nassert (mask != hash->mask);
|
nassert (mask != hash->mask);
|
||||||
|
|
||||||
for (chain = 0; chain < hash->nchains; chain++) { /* 7 */
|
for (chain = 0; chain < hash->nchains; chain++) { /* 7 */
|
||||||
hnode_t *low_chain = 0, *high_chain =
|
hnode_t *low_chain = 0, *high_chain = 0, *hptr, *next;
|
||||||
0, *hptr, *next;
|
|
||||||
|
|
||||||
for (hptr = newtable[chain]; hptr != 0;
|
for (hptr = newtable[chain]; hptr != 0; hptr = next) {
|
||||||
hptr = next) {
|
|
||||||
next = hptr->next;
|
next = hptr->next;
|
||||||
|
|
||||||
if (hptr->hkey & exposed_bit) {
|
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.
|
* 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;
|
hash_val_t chain, nchains;
|
||||||
hnode_t **newtable, *low_tail, *low_chain, *high_chain;
|
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.
|
* 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_t *
|
||||||
hash_fun_t hashfun)
|
hash_create (hashcount_t maxcount, hash_comp_t compfun, hash_fun_t hashfun)
|
||||||
{
|
{
|
||||||
hash_t *hash;
|
hash_t *hash;
|
||||||
|
|
||||||
|
@ -334,10 +337,8 @@ hash_t *hash_create(hashcount_t maxcount, hash_comp_t compfun,
|
||||||
hash->lowmark = INIT_SIZE / 2;
|
hash->lowmark = INIT_SIZE / 2;
|
||||||
hash->nodecount = 0;
|
hash->nodecount = 0;
|
||||||
hash->maxcount = maxcount;
|
hash->maxcount = maxcount;
|
||||||
hash->compare =
|
hash->compare = compfun ? compfun : hash_comp_default;
|
||||||
compfun ? compfun : hash_comp_default;
|
hash->function = hashfun ? hashfun : hash_fun_default;
|
||||||
hash->function =
|
|
||||||
hashfun ? hashfun : hash_fun_default;
|
|
||||||
hash->allocnode = hnode_alloc;
|
hash->allocnode = hnode_alloc;
|
||||||
hash->freenode = hnode_free;
|
hash->freenode = hnode_free;
|
||||||
hash->context = NULL;
|
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.
|
* Select a different set of node allocator routines.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void hash_set_allocator(hash_t * hash, hnode_alloc_t al,
|
void
|
||||||
hnode_free_t fr, void *context)
|
hash_set_allocator (hash_t * hash, hnode_alloc_t al, hnode_free_t fr, void *context)
|
||||||
{
|
{
|
||||||
nassert (hash_count (hash) == 0);
|
nassert (hash_count (hash) == 0);
|
||||||
nassert ((al == 0 && fr == 0) || (al != 0 && fr != 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.
|
* cause the hash to become empty.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void hash_free_nodes(hash_t * hash)
|
void
|
||||||
|
hash_free_nodes (hash_t * hash)
|
||||||
{
|
{
|
||||||
hscan_t hs;
|
hscan_t hs;
|
||||||
hnode_t *node;
|
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.
|
* 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
|
#ifdef KAZLIB_OBSOLESCENT_DEBUG
|
||||||
nassert ("call to obsolescent function hash_free()" && 0);
|
nassert ("call to obsolescent function hash_free()" && 0);
|
||||||
|
@ -404,7 +407,8 @@ void hash_free(hash_t * hash)
|
||||||
* Free a dynamic hash table structure.
|
* 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_val_t_bit != 0);
|
||||||
nassert (hash_isempty (hash));
|
nassert (hash_isempty (hash));
|
||||||
|
@ -425,9 +429,8 @@ void hash_destroy(hash_t * hash)
|
||||||
* so we reset it here.
|
* so we reset it here.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
hash_t *hash_init(hash_t * hash, hashcount_t maxcount,
|
hash_t *
|
||||||
hash_comp_t compfun, hash_fun_t hashfun,
|
hash_init (hash_t * hash, hashcount_t maxcount, hash_comp_t compfun, hash_fun_t hashfun, hnode_t ** table, hashcount_t nchains)
|
||||||
hnode_t ** table, hashcount_t nchains)
|
|
||||||
{
|
{
|
||||||
if (hash_val_t_bit == 0) /* 1 */
|
if (hash_val_t_bit == 0) /* 1 */
|
||||||
compute_bits ();
|
compute_bits ();
|
||||||
|
@ -460,7 +463,8 @@ hash_t *hash_init(hash_t * hash, hashcount_t maxcount,
|
||||||
* so that hash_scan_next() shall indicate failure.
|
* 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 nchains = hash->nchains;
|
||||||
hash_val_t chain;
|
hash_val_t chain;
|
||||||
|
@ -469,8 +473,7 @@ void hash_scan_begin(hscan_t * scan, hash_t * hash)
|
||||||
|
|
||||||
/* 1 */
|
/* 1 */
|
||||||
|
|
||||||
for (chain = 0; chain < nchains && hash->table[chain] == 0;
|
for (chain = 0; chain < nchains && hash->table[chain] == 0; chain++);
|
||||||
chain++);
|
|
||||||
|
|
||||||
if (chain < nchains) { /* 2 */
|
if (chain < nchains) { /* 2 */
|
||||||
scan->chain = chain;
|
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 */
|
hnode_t *next = scan->next; /* 1 */
|
||||||
hash_t *hash = scan->table;
|
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.
|
* 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;
|
hash_val_t hkey, chain;
|
||||||
|
|
||||||
|
@ -583,7 +588,8 @@ void hash_insert(hash_t * hash, hnode_t * node, const void *key)
|
||||||
* entry.
|
* 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;
|
hash_val_t hkey, chain;
|
||||||
hnode_t *nptr;
|
hnode_t *nptr;
|
||||||
|
@ -592,8 +598,7 @@ hnode_t *hash_lookup(hash_t * hash, const void *key)
|
||||||
chain = hkey & hash->mask; /* 2 */
|
chain = hkey & hash->mask; /* 2 */
|
||||||
|
|
||||||
for (nptr = hash->table[chain]; nptr; nptr = nptr->next) { /* 3 */
|
for (nptr = hash->table[chain]; nptr; nptr = nptr->next) { /* 3 */
|
||||||
if (nptr->hkey == hkey
|
if (nptr->hkey == hkey && hash->compare (nptr->key, key) == 0)
|
||||||
&& hash->compare(nptr->key, key) == 0)
|
|
||||||
return nptr;
|
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.
|
* 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;
|
hash_val_t chain;
|
||||||
hnode_t *hptr;
|
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_lookup (hash, node->key) == node); /* 1 */
|
||||||
nassert (hash_val_t_bit != 0);
|
nassert (hash_val_t_bit != 0);
|
||||||
|
|
||||||
if (hash->dynamic && hash->nodecount <= hash->lowmark
|
if (hash->dynamic && hash->nodecount <= hash->lowmark && hash->nodecount > INIT_SIZE)
|
||||||
&& hash->nodecount > INIT_SIZE)
|
|
||||||
shrink_table (hash); /* 2 */
|
shrink_table (hash); /* 2 */
|
||||||
|
|
||||||
chain = node->hkey & hash->mask; /* 3 */
|
chain = node->hkey & hash->mask; /* 3 */
|
||||||
|
@ -651,7 +656,8 @@ hnode_t *hash_delete(hash_t * hash, hnode_t * node)
|
||||||
return 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);
|
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;
|
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_delete (hash, node);
|
||||||
hash->freenode (node, hash->context);
|
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.
|
* 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;
|
hash_val_t chain;
|
||||||
hnode_t *hptr;
|
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.
|
* 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_scan_delete (hash, node);
|
||||||
hash->freenode (node, hash->context);
|
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.
|
* 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;
|
hashcount_t count = 0;
|
||||||
hash_val_t chain;
|
hash_val_t chain;
|
||||||
|
@ -735,8 +745,7 @@ int hash_verify(hash_t * hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (chain = 0; chain < hash->nchains; chain++) { /* 2 */
|
for (chain = 0; chain < hash->nchains; chain++) { /* 2 */
|
||||||
for (hptr = hash->table[chain]; hptr != 0;
|
for (hptr = hash->table[chain]; hptr != 0; hptr = hptr->next) {
|
||||||
hptr = hptr->next) {
|
|
||||||
if ((hptr->hkey & hash->mask) != chain)
|
if ((hptr->hkey & hash->mask) != chain)
|
||||||
return 0;
|
return 0;
|
||||||
count++;
|
count++;
|
||||||
|
@ -755,7 +764,8 @@ int hash_verify(hash_t * hash)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#undef hash_isfull
|
#undef hash_isfull
|
||||||
int hash_isfull(hash_t * hash)
|
int
|
||||||
|
hash_isfull (hash_t * hash)
|
||||||
{
|
{
|
||||||
return hash->nodecount == hash->maxcount;
|
return hash->nodecount == hash->maxcount;
|
||||||
}
|
}
|
||||||
|
@ -766,17 +776,20 @@ int hash_isfull(hash_t * hash)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#undef hash_isempty
|
#undef hash_isempty
|
||||||
int hash_isempty(hash_t * hash)
|
int
|
||||||
|
hash_isempty (hash_t * hash)
|
||||||
{
|
{
|
||||||
return hash->nodecount == 0;
|
return hash->nodecount == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static hnode_t *hnode_alloc(void *context)
|
static hnode_t *
|
||||||
|
hnode_alloc (void *context)
|
||||||
{
|
{
|
||||||
return malloc (sizeof *hnode_alloc (NULL));
|
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);
|
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.
|
* 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);
|
hnode_t *node = malloc (sizeof *node);
|
||||||
if (node) {
|
if (node) {
|
||||||
|
@ -800,7 +814,8 @@ hnode_t *hnode_create(void *data)
|
||||||
* Initialize a client-supplied node
|
* 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->data = data;
|
||||||
hnode->next = NULL;
|
hnode->next = NULL;
|
||||||
|
@ -811,42 +826,49 @@ hnode_t *hnode_init(hnode_t * hnode, void *data)
|
||||||
* Destroy a dynamically allocated node.
|
* Destroy a dynamically allocated node.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void hnode_destroy(hnode_t * hnode)
|
void
|
||||||
|
hnode_destroy (hnode_t * hnode)
|
||||||
{
|
{
|
||||||
free (hnode);
|
free (hnode);
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef hnode_put
|
#undef hnode_put
|
||||||
void hnode_put(hnode_t * node, void *data)
|
void
|
||||||
|
hnode_put (hnode_t * node, void *data)
|
||||||
{
|
{
|
||||||
node->data = data;
|
node->data = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef hnode_get
|
#undef hnode_get
|
||||||
void *hnode_get(hnode_t * node)
|
void *
|
||||||
|
hnode_get (hnode_t * node)
|
||||||
{
|
{
|
||||||
return node->data;
|
return node->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef hnode_getkey
|
#undef hnode_getkey
|
||||||
const void *hnode_getkey(hnode_t * node)
|
const void *
|
||||||
|
hnode_getkey (hnode_t * node)
|
||||||
{
|
{
|
||||||
return node->key;
|
return node->key;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef hash_count
|
#undef hash_count
|
||||||
hashcount_t hash_count(hash_t * hash)
|
hashcount_t
|
||||||
|
hash_count (hash_t * hash)
|
||||||
{
|
{
|
||||||
return hash->nodecount;
|
return hash->nodecount;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef hash_size
|
#undef hash_size
|
||||||
hashcount_t hash_size(hash_t * hash)
|
hashcount_t
|
||||||
|
hash_size (hash_t * hash)
|
||||||
{
|
{
|
||||||
return hash->nchains;
|
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[] = {
|
static unsigned long randbox[] = {
|
||||||
0x49848f1bU, 0xe6255dbaU, 0x36da5bdcU, 0x47bf94e9U,
|
0x49848f1bU, 0xe6255dbaU, 0x36da5bdcU, 0x47bf94e9U,
|
||||||
|
@ -869,7 +891,8 @@ static hash_val_t hash_fun_default(const void *key)
|
||||||
return acc;
|
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);
|
return strcasecmp (key1, key2);
|
||||||
}
|
}
|
||||||
|
@ -882,7 +905,8 @@ static int hash_comp_default(const void *key1, const void *key2)
|
||||||
|
|
||||||
typedef char input_t[256];
|
typedef char input_t[256];
|
||||||
|
|
||||||
static int tokenize(char *string, ...)
|
static int
|
||||||
|
tokenize (char *string, ...)
|
||||||
{
|
{
|
||||||
char **tokptr;
|
char **tokptr;
|
||||||
va_list arglist;
|
va_list arglist;
|
||||||
|
@ -909,7 +933,8 @@ static int tokenize(char *string, ...)
|
||||||
return tokcount;
|
return tokcount;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *dupstring(char *str)
|
static char *
|
||||||
|
dupstring (char *str)
|
||||||
{
|
{
|
||||||
int sz = strlen (str) + 1;
|
int sz = strlen (str) + 1;
|
||||||
char *new = malloc (sz);
|
char *new = malloc (sz);
|
||||||
|
@ -918,7 +943,8 @@ static char *dupstring(char *str)
|
||||||
return new;
|
return new;
|
||||||
}
|
}
|
||||||
|
|
||||||
static hnode_t *new_node(void *c)
|
static hnode_t *
|
||||||
|
new_node (void *c)
|
||||||
{
|
{
|
||||||
static hnode_t few[5];
|
static hnode_t few[5];
|
||||||
static int count;
|
static int count;
|
||||||
|
@ -929,11 +955,13 @@ static hnode_t *new_node(void *c)
|
||||||
return NULL;
|
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;
|
input_t in;
|
||||||
hash_t *h = hash_create (HASHCOUNT_T_MAX, 0, 0);
|
hash_t *h = hash_create (HASHCOUNT_T_MAX, 0, 0);
|
||||||
|
@ -953,9 +981,7 @@ int main(void)
|
||||||
"+ increase hash table (private func)\n"
|
"+ increase hash table (private func)\n"
|
||||||
"- decrease hash table (private func)\n"
|
"- decrease hash table (private func)\n"
|
||||||
"b print hash_t_bit value\n"
|
"b print hash_t_bit value\n"
|
||||||
"p turn prompt on\n"
|
"p turn prompt on\n" "s switch to non-functioning allocator\n" "q quit";
|
||||||
"s switch to non-functioning allocator\n"
|
|
||||||
"q quit";
|
|
||||||
|
|
||||||
if (!h)
|
if (!h)
|
||||||
puts ("hash_create failed");
|
puts ("hash_create failed");
|
||||||
|
@ -976,8 +1002,7 @@ int main(void)
|
||||||
printf ("%d\n", hash_val_t_bit);
|
printf ("%d\n", hash_val_t_bit);
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
if (tokenize(in + 1, &tok1, &tok2, (char **) 0) !=
|
if (tokenize (in + 1, &tok1, &tok2, (char **) 0) != 2) {
|
||||||
2) {
|
|
||||||
puts ("what?");
|
puts ("what?");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1035,9 +1060,7 @@ int main(void)
|
||||||
case 't':
|
case 't':
|
||||||
hash_scan_begin (&hs, h);
|
hash_scan_begin (&hs, h);
|
||||||
while ((hn = hash_scan_next (&hs)))
|
while ((hn = hash_scan_next (&hs)))
|
||||||
printf("%s\t%s\n",
|
printf ("%s\t%s\n", (char *) hnode_getkey (hn), (char *) hnode_get (hn));
|
||||||
(char *) hnode_getkey(hn),
|
|
||||||
(char *) hnode_get(hn));
|
|
||||||
break;
|
break;
|
||||||
case '+':
|
case '+':
|
||||||
grow_table (h); /* private function */
|
grow_table (h); /* private function */
|
||||||
|
|
6
hash.h
6
hash.h
|
@ -37,7 +37,7 @@
|
||||||
* into proprietary software; there is no requirement for such software to
|
* into proprietary software; there is no requirement for such software to
|
||||||
* contain a copyright notice related to this source.
|
* 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: $
|
* $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_destroy (hash_t *);
|
||||||
extern void hash_free_nodes (hash_t *);
|
extern void hash_free_nodes (hash_t *);
|
||||||
extern void hash_free (hash_t *);
|
extern void hash_free (hash_t *);
|
||||||
extern hash_t *hash_init(hash_t *, hashcount_t, hash_comp_t,
|
extern hash_t *hash_init (hash_t *, hashcount_t, hash_comp_t, hash_fun_t, hnode_t **, hashcount_t);
|
||||||
hash_fun_t, hnode_t **, hashcount_t);
|
|
||||||
extern void hash_insert (hash_t *, hnode_t *, const void *);
|
extern void hash_insert (hash_t *, hnode_t *, const void *);
|
||||||
extern hnode_t *hash_lookup (hash_t *, const void *);
|
extern hnode_t *hash_lookup (hash_t *, const void *);
|
||||||
extern hnode_t *hash_delete (hash_t *, hnode_t *);
|
extern hnode_t *hash_delete (hash_t *, hnode_t *);
|
||||||
|
@ -259,5 +258,4 @@ extern void hnode_destroy(hnode_t *);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
373
hybrid7.c
373
hybrid7.c
|
@ -18,7 +18,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -165,28 +165,30 @@ Oper_Modes usr_mds[] = {
|
||||||
{0, 0, 0}
|
{0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
void init_ircd()
|
void
|
||||||
|
init_ircd ()
|
||||||
{
|
{
|
||||||
/* count the number of commands */
|
/* count the number of commands */
|
||||||
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
|
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);
|
sts (":%s %s", server, MSG_EOB);
|
||||||
return 1;
|
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,
|
sts (":%s %s %s %d :%s", me.name, MSG_SERVER, name, numeric, infoline);
|
||||||
infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slogin_cmd(const char *name, const int numeric, const char *infoline,
|
int
|
||||||
const char *pass)
|
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
|
||||||
{
|
{
|
||||||
sts ("%s %s :TS", MSG_PASS, pass);
|
sts ("%s %s :TS", MSG_PASS, pass);
|
||||||
sts ("CAPAB :TS EX CHW IE EOB KLN GLN KNOCK HOPS HUB AOPS MX");
|
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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssquit_cmd(const char *server)
|
int
|
||||||
|
ssquit_cmd (const char *server)
|
||||||
{
|
{
|
||||||
sts ("%s %s", MSG_SQUIT, server);
|
sts ("%s %s", MSG_SQUIT, server);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sprotocol_cmd(const char *option)
|
int
|
||||||
|
sprotocol_cmd (const char *option)
|
||||||
{
|
{
|
||||||
return 1;
|
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);
|
sts (":%s %s :%s", who, MSG_QUIT, quitmsg);
|
||||||
DelUser (who);
|
DelUser (who);
|
||||||
return 1;
|
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);
|
sts (":%s %s %s", who, MSG_PART, chan);
|
||||||
part_chan (finduser (who), (char *) chan);
|
part_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
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);
|
sts (":%s %s 0 %s + :%s", me.name, MSG_SJOIN, chan, who);
|
||||||
join_chan (finduser (who), (char *) chan);
|
join_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int schmode_cmd(const char *who, const char *chan, const char *mode,
|
int
|
||||||
const char *args)
|
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac;
|
int ac;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
|
||||||
sts(":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args,
|
sts (":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args, time (NULL));
|
||||||
time(NULL));
|
|
||||||
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
||||||
ac = split_buf (tmp, &av, 0);
|
ac = split_buf (tmp, &av, 0);
|
||||||
ChanMode ("", av, ac);
|
ChanMode ("", av, ac);
|
||||||
free (av);
|
free (av);
|
||||||
return 1;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -256,20 +263,21 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts("%s %s 1 %lu %s %s %s %s :%s", MSG_NICK, nick, time(NULL),
|
sts ("%s %s 1 %lu %s %s %s %s :%s", MSG_NICK, nick, time (NULL), newmode, ident, host, me.name, realname);
|
||||||
newmode, ident, host, me.name, realname);
|
|
||||||
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
||||||
UserMode (nick, newmode, 0);
|
UserMode (nick, newmode, 0);
|
||||||
return 1;
|
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;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -288,8 +296,8 @@ int sumode_cmd(const char *who, const char *target, long mode)
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -300,15 +308,16 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spong_cmd(const char *reply)
|
int
|
||||||
|
spong_cmd (const char *reply)
|
||||||
{
|
{
|
||||||
sts ("%s %s", MSG_PONG, reply);
|
sts ("%s %s", MSG_PONG, reply);
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -319,89 +328,79 @@ int skill_cmd(const char *from, const char *target, const char *reason,
|
||||||
DelUser (target);
|
DelUser (target);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int ssvskill_cmd(const char *who, const char *reason, ...)
|
|
||||||
|
int
|
||||||
|
ssvskill_cmd (const char *who, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", me.name, MSG_KILL,
|
sts (":%s %s %s :%s", me.name, MSG_KILL, who, buf);
|
||||||
who, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
/* hybrid doesn't have svskill, so this is handled just like a normal kill */
|
/* hybrid doesn't have svskill, so this is handled just like a normal kill */
|
||||||
DelUser (who);
|
DelUser (who);
|
||||||
return 1;
|
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,
|
notice (s_Services, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
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);
|
Change_User (finduser (oldnick), newnick);
|
||||||
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
|
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int sswhois_cmd(const char *target, const char *swhois)
|
|
||||||
|
int
|
||||||
|
sswhois_cmd (const char *target, const char *swhois)
|
||||||
{
|
{
|
||||||
notice(s_Services,
|
notice (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning Module %s tried to SWHOIS, which is not supported in Hybrid",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Hybrid", segvinmodule);
|
||||||
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);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvsjoin_cmd(const char *target, const char *chan)
|
int
|
||||||
|
ssvsnick_cmd (const char *target, const char *newnick)
|
||||||
{
|
{
|
||||||
notice(s_Services,
|
notice (s_Services, "Warning Module %s tried to SVSNICK, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning Module %s tried to SJOIN, which is not supported in Hybrid",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSNICK, which is not supported in Hybrid", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning. Module %s tried to SJOIN, which is not supported in Hybrid",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvspart_cmd(const char *target, const char *chan)
|
int
|
||||||
|
ssvsjoin_cmd (const char *target, const char *chan)
|
||||||
{
|
{
|
||||||
notice(s_Services,
|
notice (s_Services, "Warning Module %s tried to SJOIN, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning Module %s tried to SVSPART, which is not supported in Hybrid",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SJOIN, which is not supported in Hybrid", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning. Module %s tried to SVSPART, which is not supported in Hybrid",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int skick_cmd(const char *who, const char *target, const char *chan,
|
int
|
||||||
const char *reason)
|
ssvspart_cmd (const char *target, const char *chan)
|
||||||
{
|
{
|
||||||
sts(":%s %s %s %s :%s", who, MSG_KICK, chan, target,
|
notice (s_Services, "Warning Module %s tried to SVSPART, which is not supported in Hybrid", segvinmodule);
|
||||||
(reason ? reason : "No Reason Given"));
|
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);
|
part_chan (finduser (target), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int swallops_cmd(const char *who, const char *msg, ...)
|
|
||||||
|
int
|
||||||
|
swallops_cmd (const char *who, const char *msg, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -412,23 +411,23 @@ int swallops_cmd(const char *who, const char *msg, ...)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvshost_cmd(const char *who, const char *vhost)
|
int
|
||||||
|
ssvshost_cmd (const char *who, const char *vhost)
|
||||||
{
|
{
|
||||||
notice(s_Services,
|
notice (s_Services, "Warning Module %s tried to SVSHOST, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning Module %s tried to SVSHOST, which is not supported in Hybrid",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SVSHOST, which is not supported in Hybrid", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning. Module %s tried to SVSHOST, which is not supported in Hybrid",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvinfo_cmd()
|
int
|
||||||
|
ssvinfo_cmd ()
|
||||||
{
|
{
|
||||||
sts ("SVINFO 5 3 0 :%d", time (NULL));
|
sts ("SVINFO 5 3 0 :%d", time (NULL));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int sburst_cmd(int b)
|
|
||||||
|
int
|
||||||
|
sburst_cmd (int b)
|
||||||
{
|
{
|
||||||
if (b == 0) {
|
if (b == 0) {
|
||||||
sts ("BURST 0");
|
sts ("BURST 0");
|
||||||
|
@ -438,8 +437,8 @@ int sburst_cmd(int b)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sakill_cmd(const char *host, const char *ident, const char *setby,
|
int
|
||||||
const int length, const char *reason, ...)
|
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! */
|
/* there isn't a akill on Hybrid, so we send a kline to all servers! */
|
||||||
hscan_t ss;
|
hscan_t ss;
|
||||||
|
@ -454,21 +453,22 @@ int sakill_cmd(const char *host, const char *ident, const char *setby,
|
||||||
hash_scan_begin (&ss, sh);
|
hash_scan_begin (&ss, sh);
|
||||||
while ((sn = hash_scan_next (&ss)) != NULL) {
|
while ((sn = hash_scan_next (&ss)) != NULL) {
|
||||||
s = hnode_get (sn);
|
s = hnode_get (sn);
|
||||||
sts(":%s %s %s %lu %s %s :%s", setby, MSG_KLINE, s->name,
|
sts (":%s %s %s %lu %s %s :%s", setby, MSG_KLINE, s->name, length, ident, host, buf);
|
||||||
length, ident, host, buf);
|
|
||||||
}
|
}
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int srakill_cmd(const char *host, const char *ident)
|
|
||||||
|
int
|
||||||
|
srakill_cmd (const char *host, const char *ident)
|
||||||
{
|
{
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Please Manually remove KLINES using /unkline on each server");
|
||||||
"Please Manually remove KLINES using /unkline on each server");
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void chanalert(char *who, char *buf, ...)
|
void
|
||||||
|
chanalert (char *who, char *buf, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
@ -477,14 +477,15 @@ void chanalert(char *who, char *buf, ...)
|
||||||
vsnprintf (tmp, 512, buf, ap);
|
vsnprintf (tmp, 512, buf, ap);
|
||||||
|
|
||||||
if (me.onchan) {
|
if (me.onchan) {
|
||||||
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
|
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
|
||||||
tmp);
|
|
||||||
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
||||||
sts ("%s", out);
|
sts ("%s", out);
|
||||||
}
|
}
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void prefmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
prefmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
@ -492,9 +493,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (me.want_privmsg) {
|
if (me.want_privmsg) {
|
||||||
|
@ -505,15 +504,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
sts ("%s", buf);
|
sts ("%s", buf);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void privmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
privmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -524,15 +523,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void notice(char *to, const char *from, char *fmt, ...)
|
void
|
||||||
|
notice (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
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) {
|
while (*text) {
|
||||||
if (**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;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
@ -576,7 +576,8 @@ void globops(char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Sjoin(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Sjoin (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
char nick[MAXNICK];
|
char nick[MAXNICK];
|
||||||
long mode = 0;
|
long mode = 0;
|
||||||
|
@ -603,22 +604,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
goto nomodes;
|
goto nomodes;
|
||||||
}
|
}
|
||||||
while (*modes) {
|
while (*modes) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
|
|
||||||
i++) {
|
|
||||||
if (*modes == cFlagTab[i].flag) {
|
if (*modes == cFlagTab[i].flag) {
|
||||||
if (cFlagTab[i].parameters) {
|
if (cFlagTab[i].parameters) {
|
||||||
m = smalloc (sizeof (ModesParm));
|
m = smalloc (sizeof (ModesParm));
|
||||||
m->mode = cFlagTab[i].mode;
|
m->mode = cFlagTab[i].mode;
|
||||||
strncpy(m->param, argv[j],
|
strncpy (m->param, argv[j], PARAMSIZE);
|
||||||
PARAMSIZE);
|
|
||||||
mn = lnode_create (m);
|
mn = lnode_create (m);
|
||||||
if (!list_isfull (tl)) {
|
if (!list_isfull (tl)) {
|
||||||
list_append (tl, mn);
|
list_append (tl, mn);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_CRITICAL,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
||||||
LOG_CORE,
|
|
||||||
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
|
@ -634,10 +630,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
modes = argv[j];
|
modes = argv[j];
|
||||||
mode = 0;
|
mode = 0;
|
||||||
while (ok == 1) {
|
while (ok == 1) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
|
||||||
1); i++) {
|
|
||||||
if (cFlagTab[i].sjoin != 0) {
|
if (cFlagTab[i].sjoin != 0) {
|
||||||
if (*modes == cFlagTab[i].sjoin) {
|
if (*modes == cFlagTab[i].sjoin) {
|
||||||
mode |= cFlagTab[i].mode;
|
mode |= cFlagTab[i].mode;
|
||||||
|
@ -650,8 +643,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
join_chan (finduser (nick), argv[1]);
|
join_chan (finduser (nick), argv[1]);
|
||||||
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
|
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
|
||||||
mode);
|
|
||||||
j++;
|
j++;
|
||||||
ok = 1;
|
ok = 1;
|
||||||
}
|
}
|
||||||
|
@ -662,15 +654,15 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
list_transfer (c->modeparms, tl, list_first (tl));
|
list_transfer (c->modeparms, tl, list_first (tl));
|
||||||
} else {
|
} else {
|
||||||
/* eeeeeeek, list is full! */
|
/* eeeeeeek, list is full! */
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
||||||
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list_destroy (tl);
|
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 (argc > 0) {
|
||||||
if (ircd_srv.burst == 1) {
|
if (ircd_srv.burst == 1) {
|
||||||
|
@ -686,7 +678,8 @@ void Srv_Burst(char *origin, char **argv, int argc)
|
||||||
init_ServBot ();
|
init_ServBot ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Connect(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Connect (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
int i;
|
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;
|
User *u;
|
||||||
|
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
|
||||||
"Recieved a Message from a Unknown User! (%s)",
|
|
||||||
origin);
|
|
||||||
}
|
}
|
||||||
ShowStats (argv[0], u);
|
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,
|
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
|
||||||
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);
|
ShowMOTD (origin);
|
||||||
}
|
}
|
||||||
void Usr_ShowADMIN(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_ShowADMIN (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ShowADMIN (origin);
|
ShowADMIN (origin);
|
||||||
}
|
}
|
||||||
void Usr_Showcredits(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Showcredits (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Showcredits (origin);
|
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]));
|
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]);
|
DelServer (argv[0]);
|
||||||
}
|
}
|
||||||
void Usr_DelUser(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_DelUser (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
DelUser (origin);
|
DelUser (origin);
|
||||||
}
|
}
|
||||||
void Usr_Smode(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Smode (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
if (!strchr (argv[0], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
/* its user svsmode change */
|
/* its user svsmode change */
|
||||||
|
@ -750,7 +756,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
|
||||||
ChanMode (origin, argv, 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], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", 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);
|
ChanMode (origin, argv, argc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Kill(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kill (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
KillUser (argv[0]);
|
KillUser (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
|
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Vhost(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Vhost (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
|
@ -778,18 +786,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
|
||||||
strncpy (u->vhost, argv[0], MAXHOST);
|
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;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
dopong (s);
|
dopong (s);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
|
||||||
"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);
|
User *u = finduser (origin);
|
||||||
char *buf;
|
char *buf;
|
||||||
|
@ -804,22 +813,22 @@ void Usr_Away(char *origin, char **argv, int argc)
|
||||||
free (buf);
|
free (buf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
|
||||||
"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);
|
User *u = finduser (origin);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[0]);
|
Change_User (u, argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Ehh, Can't find the user for %s", origin);
|
||||||
"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;
|
char *buf;
|
||||||
Chans *c;
|
Chans *c;
|
||||||
|
@ -829,13 +838,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
|
||||||
Change_Topic (origin, c, time (NULL), buf);
|
Change_Topic (origin, c, time (NULL), buf);
|
||||||
free (buf);
|
free (buf);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
|
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Usr_Kick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u, *k;
|
User *u, *k;
|
||||||
u = finduser (argv[1]);
|
u = finduser (argv[1]);
|
||||||
|
@ -843,12 +852,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
|
||||||
if (u) {
|
if (u) {
|
||||||
kick_chan (u, argv[0], k);
|
kick_chan (u, argv[0], k);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
|
||||||
"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;
|
char *s, *t;
|
||||||
t = argv[0];
|
t = argv[0];
|
||||||
|
@ -859,21 +867,26 @@ void Usr_Join(char *origin, char **argv, int argc)
|
||||||
join_chan (finduser (origin), s);
|
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]);
|
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]);
|
spong_cmd (argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Svinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Svinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ssvinfo_cmd ();
|
ssvinfo_cmd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Netinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Netinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
me.onchan = 1;
|
me.onchan = 1;
|
||||||
ircd_srv.uprot = atoi (argv[2]);
|
ircd_srv.uprot = atoi (argv[2]);
|
||||||
|
@ -888,10 +901,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
|
||||||
me.synced = 1;
|
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;
|
Server *s;
|
||||||
if (*origin == 0) {
|
if (*origin == 0) {
|
||||||
|
@ -902,27 +917,28 @@ void Srv_Server(char *origin, char **argv, int argc)
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
me.s = s;
|
me.s = s;
|
||||||
}
|
}
|
||||||
void Srv_Squit(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Srv_Squit (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
DelServer (argv[0]);
|
DelServer (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
|
||||||
"Waring, Squit from Unknown Server %s", argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
|
/* 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;
|
char *realname;
|
||||||
|
|
||||||
AddUser(argv[0], argv[4], argv[5], argv[6], 0,
|
AddUser (argv[0], argv[4], argv[5], argv[6], 0, strtoul (argv[2], NULL, 10));
|
||||||
strtoul(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 7);
|
realname = joinbuf (argv, argc, 7);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (realname);
|
free (realname);
|
||||||
|
@ -930,12 +946,13 @@ void Srv_Nick(char *origin, char **argv, int argc)
|
||||||
UserMode (argv[0], argv[3], 0);
|
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,
|
int
|
||||||
const char *rname, long Umode)
|
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
|
||||||
{
|
{
|
||||||
snewnick_cmd (nick, user, host, rname, Umode);
|
snewnick_cmd (nick, user, host, rname, Umode);
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
214
ircd.c
|
@ -22,7 +22,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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 <setjmp.h>
|
||||||
#include "stats.h"
|
#include "stats.h"
|
||||||
|
@ -34,8 +34,8 @@ extern const char protocol_version[];
|
||||||
|
|
||||||
extern IntCommands cmd_list[];
|
extern IntCommands cmd_list[];
|
||||||
|
|
||||||
int init_bot(char *nick, char *user, char *host, char *rname, char *modes,
|
int
|
||||||
char *mod_name)
|
init_bot (char *nick, char *user, char *host, char *rname, char *modes, char *mod_name)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
char **av;
|
char **av;
|
||||||
|
@ -49,15 +49,11 @@ int init_bot(char *nick, char *user, char *host, char *rname, char *modes,
|
||||||
strcpy (segv_location, "init_bot");
|
strcpy (segv_location, "init_bot");
|
||||||
u = finduser (nick);
|
u = finduser (nick);
|
||||||
if (u) {
|
if (u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Attempting to Login with a Nickname that already Exists: %s", nick);
|
||||||
"Attempting to Login with a Nickname that already Exists: %s",
|
|
||||||
nick);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (strlen (user) > 8) {
|
if (strlen (user) > 8) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
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);
|
||||||
"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);
|
add_mod_user (nick, mod_name);
|
||||||
Umode = 0;
|
Umode = 0;
|
||||||
|
@ -71,17 +67,13 @@ int init_bot(char *nick, char *user, char *host, char *rname, char *modes,
|
||||||
add = 0;
|
add = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (usr_mds) / sizeof (usr_mds[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(usr_mds) / sizeof(usr_mds[0])) - 1);
|
|
||||||
i++) {
|
|
||||||
if (usr_mds[i].mode == tmpmode) {
|
if (usr_mds[i].mode == tmpmode) {
|
||||||
if (add) {
|
if (add) {
|
||||||
Umode |= usr_mds[i].umodes;
|
Umode |= usr_mds[i].umodes;
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
Umode &=
|
Umode &= ~usr_mds[i].umodes;
|
||||||
~usr_mds[i].umodes;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,16 +90,15 @@ int init_bot(char *nick, char *user, char *host, char *rname, char *modes,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int del_bot(char *nick, char *reason)
|
int
|
||||||
|
del_bot (char *nick, char *reason)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
strcpy (segv_location, "del_bot");
|
strcpy (segv_location, "del_bot");
|
||||||
u = finduser (nick);
|
u = finduser (nick);
|
||||||
nlog (LOG_DEBUG1, LOG_CORE, "Killing %s for %s", nick, reason);
|
nlog (LOG_DEBUG1, LOG_CORE, "Killing %s for %s", nick, reason);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Attempting to Logoff with a Nickname that does not Exists: %s", nick);
|
||||||
"Attempting to Logoff with a Nickname that does not Exists: %s",
|
|
||||||
nick);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
squit_cmd (nick, reason);
|
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;
|
Module *module_ptr;
|
||||||
EventFnList *ev_list;
|
EventFnList *ev_list;
|
||||||
|
@ -134,28 +126,16 @@ void Module_Event(char *event, char **av, int ac)
|
||||||
while (ev_list->cmd_name != NULL) {
|
while (ev_list->cmd_name != NULL) {
|
||||||
/* This goes through each Command */
|
/* This goes through each Command */
|
||||||
if (!strcasecmp (ev_list->cmd_name, event)) {
|
if (!strcasecmp (ev_list->cmd_name, event)) {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE,
|
nlog (LOG_DEBUG1, LOG_CORE, "Running Module %s for Comamnd %s -> %s", module_ptr->info->module_name, event, ev_list->cmd_name);
|
||||||
"Running Module %s for Comamnd %s -> %s",
|
strcpy (segv_location, module_ptr->info->module_name);
|
||||||
module_ptr->info->module_name,
|
strcpy (segvinmodule, 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) {
|
if (setjmp (sigvbuf) == 0) {
|
||||||
ev_list->function (av, ac);
|
ev_list->function (av, ac);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_CRITICAL,
|
nlog (LOG_CRITICAL, LOG_CORE, "setjmp() Failed, Can't call Module %s\n", module_ptr->info->module_name);
|
||||||
LOG_CORE,
|
|
||||||
"setjmp() Failed, Can't call Module %s\n",
|
|
||||||
module_ptr->info->
|
|
||||||
module_name);
|
|
||||||
}
|
}
|
||||||
strcpy (segvinmodule, "");
|
strcpy (segvinmodule, "");
|
||||||
strcpy(segv_location,
|
strcpy (segv_location, "Module_Event_Return");
|
||||||
"Module_Event_Return");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ev_list++;
|
ev_list++;
|
||||||
|
@ -178,7 +158,8 @@ void Module_Event(char *event, char **av, int ac)
|
||||||
* the buffer by side effect.
|
* 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 argvsize = 8;
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -223,7 +204,8 @@ extern int split_buf(char *buf, char ***argv, int colon_special)
|
||||||
return argc - flag;
|
return argc - flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern char *joinbuf(char **av, int ac, int from)
|
extern char *
|
||||||
|
joinbuf (char **av, int ac, int from)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char *buf;
|
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 origin[64], cmd[64], *coreLine;
|
||||||
char *nick;
|
char *nick;
|
||||||
|
@ -324,8 +307,7 @@ void parse(char *line)
|
||||||
list = findbot (nick);
|
list = findbot (nick);
|
||||||
/* Check to see if any of the Modules have this nick Registered */
|
/* Check to see if any of the Modules have this nick Registered */
|
||||||
if (list) {
|
if (list) {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "nicks: %s",
|
nlog (LOG_DEBUG1, LOG_CORE, "nicks: %s", list->nick);
|
||||||
list->nick);
|
|
||||||
if (flood (finduser (origin))) {
|
if (flood (finduser (origin))) {
|
||||||
free (av);
|
free (av);
|
||||||
return;
|
return;
|
||||||
|
@ -333,11 +315,8 @@ void parse(char *line)
|
||||||
|
|
||||||
/* Check to make sure there are no blank spaces so we dont crash */
|
/* Check to make sure there are no blank spaces so we dont crash */
|
||||||
if (strlen (av[1]) >= 350) {
|
if (strlen (av[1]) >= 350) {
|
||||||
prefmsg(origin, s_Services,
|
prefmsg (origin, s_Services, "command line too long!");
|
||||||
"command line too long!");
|
notice (s_Services, "%s tried to send a very LARGE command, we told them to shove it!", origin);
|
||||||
notice(s_Services,
|
|
||||||
"%s tried to send a very LARGE command, we told them to shove it!",
|
|
||||||
origin);
|
|
||||||
free (av);
|
free (av);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -348,8 +327,7 @@ void parse(char *line)
|
||||||
list->function (origin, av, ac);
|
list->function (origin, av, ac);
|
||||||
}
|
}
|
||||||
strcpy (segvinmodule, "");
|
strcpy (segvinmodule, "");
|
||||||
strcpy(segv_location,
|
strcpy (segv_location, "Return from Module Message");
|
||||||
"Return from Module Message");
|
|
||||||
free (av);
|
free (av);
|
||||||
if (I == 1)
|
if (I == 1)
|
||||||
free (nick);
|
free (nick);
|
||||||
|
@ -386,23 +364,14 @@ void parse(char *line)
|
||||||
/* This goes through each Command */
|
/* This goes through each Command */
|
||||||
if (!strcmp (fn_list->cmd_name, cmd)) {
|
if (!strcmp (fn_list->cmd_name, cmd)) {
|
||||||
if (fn_list->srvmsg == cmdptr) {
|
if (fn_list->srvmsg == cmdptr) {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE,
|
nlog (LOG_DEBUG1, LOG_CORE, "Running Module %s for Function %s", module_ptr->info->module_name, fn_list->cmd_name);
|
||||||
"Running Module %s for Function %s",
|
strcpy (segv_location, module_ptr->info->module_name);
|
||||||
module_ptr->info->module_name,
|
strcpy (segvinmodule, 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) {
|
if (setjmp (sigvbuf) == 0) {
|
||||||
fn_list->function(origin,
|
fn_list->function (origin, av, ac);
|
||||||
av, ac);
|
|
||||||
}
|
}
|
||||||
strcpy (segvinmodule, "");
|
strcpy (segvinmodule, "");
|
||||||
strcpy(segv_location,
|
strcpy (segv_location, "Parse_Return_Module");
|
||||||
"Parse_Return_Module");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -423,7 +392,8 @@ void parse(char *line)
|
||||||
/* Here are the Following Internal Functions.
|
/* Here are the Following Internal Functions.
|
||||||
they should update the internal Structures */
|
they should update the internal Structures */
|
||||||
|
|
||||||
void init_ServBot()
|
void
|
||||||
|
init_ServBot ()
|
||||||
{
|
{
|
||||||
char rname[63];
|
char rname[63];
|
||||||
char **av;
|
char **av;
|
||||||
|
@ -433,8 +403,7 @@ void init_ServBot()
|
||||||
/* nick already exists on the network */
|
/* nick already exists on the network */
|
||||||
snprintf (s_Services, MAXNICK, "NeoStats1");
|
snprintf (s_Services, MAXNICK, "NeoStats1");
|
||||||
snprintf (rname, 63, "/msg %s \2HELP\2", s_Services);
|
snprintf (rname, 63, "/msg %s \2HELP\2", s_Services);
|
||||||
SignOn_NewBot(s_Services, Servbot.user, Servbot.host, rname,
|
SignOn_NewBot (s_Services, Servbot.user, Servbot.host, rname, UMODE_SERVICES);
|
||||||
UMODE_SERVICES);
|
|
||||||
me.onchan = 1;
|
me.onchan = 1;
|
||||||
AddStringToList (&av, me.uplink, &ac);
|
AddStringToList (&av, me.uplink, &ac);
|
||||||
Module_Event ("ONLINE", av, ac);
|
Module_Event ("ONLINE", av, ac);
|
||||||
|
@ -446,7 +415,8 @@ void init_ServBot()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void dopong(Server * s)
|
void
|
||||||
|
dopong (Server * s)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac = 0;
|
int ac = 0;
|
||||||
|
@ -460,14 +430,14 @@ void dopong(Server * s)
|
||||||
Module_Event ("PONG", av, ac);
|
Module_Event ("PONG", av, ac);
|
||||||
free (av);
|
free (av);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", recbuf);
|
||||||
"Received PONG from unknown server: %s", recbuf);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int flood(User * u)
|
int
|
||||||
|
flood (User * u)
|
||||||
{
|
{
|
||||||
time_t current = time (NULL);
|
time_t current = time (NULL);
|
||||||
|
|
||||||
|
@ -483,11 +453,8 @@ int flood(User * u)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (u->flood >= 5) {
|
if (u->flood >= 5) {
|
||||||
nlog(LOG_NORMAL, LOG_CORE, "FLOODING: %s!%s@%s", u->nick,
|
nlog (LOG_NORMAL, LOG_CORE, "FLOODING: %s!%s@%s", u->nick, u->username, u->hostname);
|
||||||
u->username, u->hostname);
|
ssvskill_cmd (u->nick, "%s!%s (Flooding Services.)", Servbot.host, s_Services);
|
||||||
ssvskill_cmd(u->nick,
|
|
||||||
"%s!%s (Flooding Services.)", Servbot.host,
|
|
||||||
s_Services);
|
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
u->flood++;
|
u->flood++;
|
||||||
|
@ -496,15 +463,14 @@ int flood(User * u)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Display our MOTD Message of the Day from the external neostats.motd file */
|
/* Display our MOTD Message of the Day from the external neostats.motd file */
|
||||||
void ShowMOTD(char *nick)
|
void
|
||||||
|
ShowMOTD (char *nick)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char buf[BUFSIZE];
|
char buf[BUFSIZE];
|
||||||
|
|
||||||
snumeric_cmd (375, nick, ":- %s Message of the Day -", me.name);
|
snumeric_cmd (375, nick, ":- %s Message of the Day -", me.name);
|
||||||
snumeric_cmd(372, nick,
|
snumeric_cmd (372, nick, ":- %d.%d.%d%s. Copyright (c) 1999 - 2002 The NeoStats Group", MAJOR, MINOR, REV, version);
|
||||||
":- %d.%d.%d%s. Copyright (c) 1999 - 2002 The NeoStats Group",
|
|
||||||
MAJOR, MINOR, REV, version);
|
|
||||||
snumeric_cmd (372, nick, ":-");
|
snumeric_cmd (372, nick, ":-");
|
||||||
|
|
||||||
fp = fopen ("neostats.motd", "r");
|
fp = fopen ("neostats.motd", "r");
|
||||||
|
@ -523,15 +489,14 @@ void ShowMOTD(char *nick)
|
||||||
|
|
||||||
|
|
||||||
/* Display the ADMIN Message from the external stats.admin file */
|
/* Display the ADMIN Message from the external stats.admin file */
|
||||||
void ShowADMIN(char *nick)
|
void
|
||||||
|
ShowADMIN (char *nick)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char buf[BUFSIZE];
|
char buf[BUFSIZE];
|
||||||
|
|
||||||
snumeric_cmd (256, nick, ":- %s NeoStats Admins -", me.name);
|
snumeric_cmd (256, nick, ":- %s NeoStats Admins -", me.name);
|
||||||
snumeric_cmd(256, nick,
|
snumeric_cmd (256, nick, ":- %d.%d.%d%s. Copyright (c) 1999 - 2002 The NeoStats Group", MAJOR, MINOR, REV, version);
|
||||||
":- %d.%d.%d%s. Copyright (c) 1999 - 2002 The NeoStats Group",
|
|
||||||
MAJOR, MINOR, REV, version);
|
|
||||||
|
|
||||||
fp = fopen ("stats.admin", "r");
|
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,
|
snumeric_cmd (351, nick, ":- NeoStats %d.%d.%d%s Credits ", MAJOR, MINOR, REV, version);
|
||||||
MINOR, REV, version);
|
snumeric_cmd (351, nick, ":- Now Maintained by Shmad (shmad@neostats.net) and ^Enigma^ (enigma@neostats.net)");
|
||||||
snumeric_cmd(351, nick,
|
snumeric_cmd (351, nick, ":- For Support, you can find ^Enigma^ or Shmad at");
|
||||||
":- 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, ":- irc.irc-chat.net #NeoStats");
|
||||||
snumeric_cmd (351, nick, ":- Thanks to:");
|
snumeric_cmd (351, nick, ":- Thanks to:");
|
||||||
snumeric_cmd(351, nick,
|
snumeric_cmd (351, nick, ":- \2Fish\2 still part of the team with patch submissions.");
|
||||||
":- \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,
|
snumeric_cmd (351, nick, ":- chrisv@b0rked.dhs.org for the Code for Dynamically Loading Modules (Hurrican IRCD)");
|
||||||
":- Stskeeps for Writting the best IRCD ever!");
|
snumeric_cmd (351, nick, ":- monkeyIRCD for the Module Segv Catching code");
|
||||||
snumeric_cmd(351, nick,
|
snumeric_cmd (351, nick, ":- the Users of Global-irc.net and Dreaming.org for being our Guinea Pigs!");
|
||||||
":- 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, ":- Andy For Ideas");
|
||||||
snumeric_cmd(351, nick,
|
snumeric_cmd (351, nick, ":- HeadBang for BetaTesting, and Ideas, And Hassling us for Beta Copies");
|
||||||
":- 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,
|
snumeric_cmd (351, nick, ":- Error51 for Translating our FAQ and README files");
|
||||||
":- sre and Jacob for development systems and access");
|
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,
|
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!)");
|
||||||
":- Error51 for Translating our FAQ and README files");
|
snumeric_cmd (351, nick, ":- Hwy - Helping us even though he also has a similar project, and providing solaris porting tips :)");
|
||||||
snumeric_cmd(351, nick,
|
snumeric_cmd (351, nick, ":- M - Updating lots of Doco and code and providing lots of great feedback");
|
||||||
":- users and opers of irc.irc-chat.net/org for putting up with our constant coding crashes!");
|
snumeric_cmd (351, nick, ":- J Michael Jones - Giving us Patches to support QuantumIRCd");
|
||||||
snumeric_cmd(351, nick,
|
snumeric_cmd (351, nick, ":- Blud - Giving us patches for Mystic IRCd");
|
||||||
":- 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 tmp;
|
||||||
time_t tmp2;
|
time_t tmp2;
|
||||||
|
@ -603,16 +553,11 @@ void ShowStats(char *what, User * u)
|
||||||
if (!strcasecmp (what, "u")) {
|
if (!strcasecmp (what, "u")) {
|
||||||
/* server uptime - Shmad */
|
/* server uptime - Shmad */
|
||||||
int uptime = time (NULL) - me.t_start;
|
int uptime = time (NULL) - me.t_start;
|
||||||
snumeric_cmd(242, u->nick,
|
snumeric_cmd (242, u->nick, "Statistical Server up %d days, %d:%02d:%02d", uptime / 86400, (uptime / 3600) % 24, (uptime / 60) % 60, uptime % 60);
|
||||||
"Statistical Server up %d days, %d:%02d:%02d",
|
|
||||||
uptime / 86400, (uptime / 3600) % 24,
|
|
||||||
(uptime / 60) % 60, uptime % 60);
|
|
||||||
} else if (!strcasecmp (what, "c")) {
|
} else if (!strcasecmp (what, "c")) {
|
||||||
/* Connections */
|
/* Connections */
|
||||||
snumeric_cmd(214, u->nick, "N *@%s * * %d 50", me.uplink,
|
snumeric_cmd (214, u->nick, "N *@%s * * %d 50", me.uplink, me.port);
|
||||||
me.port);
|
snumeric_cmd (213, u->nick, "C *@%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")) {
|
} else if (!strcasecmp (what, "o")) {
|
||||||
/* Operators */
|
/* Operators */
|
||||||
#ifdef EXTAUTH
|
#ifdef EXTAUTH
|
||||||
|
@ -623,24 +568,17 @@ void ShowStats(char *what, User * u)
|
||||||
(*listauth) (u);
|
(*listauth) (u);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
snumeric_cmd(243, u->nick,
|
snumeric_cmd (243, u->nick, "Operators think they are God, but you and I know they are not!");
|
||||||
"Operators think they are God, but you and I know they are not!");
|
|
||||||
} else if (!strcasecmp (what, "l")) {
|
} else if (!strcasecmp (what, "l")) {
|
||||||
/* Port Lists */
|
/* Port Lists */
|
||||||
tmp = time (NULL) - me.lastmsg;
|
tmp = time (NULL) - me.lastmsg;
|
||||||
tmp2 = time (NULL) - me.t_start;
|
tmp2 = time (NULL) - me.t_start;
|
||||||
snumeric_cmd(211, u->nick,
|
snumeric_cmd (211, u->nick, "l SendQ SendM SendBytes RcveM RcveBytes Open_Since CPU :IDLE");
|
||||||
"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(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")) {
|
} else if (!strcasecmp (what, "M")) {
|
||||||
for (I = 0; I < ircd_srv.cmdcount; I++) {
|
for (I = 0; I < ircd_srv.cmdcount; I++) {
|
||||||
if (cmd_list[I].usage > 0)
|
if (cmd_list[I].usage > 0)
|
||||||
snumeric_cmd(212, u->nick,
|
snumeric_cmd (212, u->nick, "Command %s Usage %d", cmd_list[I].name, cmd_list[I].usage);
|
||||||
"Command %s Usage %d",
|
|
||||||
cmd_list[I].name,
|
|
||||||
cmd_list[I].usage);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snumeric_cmd (219, u->nick, "%s :End of /STATS report", what);
|
snumeric_cmd (219, u->nick, "%s :End of /STATS report", what);
|
||||||
|
|
2
ircd.h
2
ircd.h
|
@ -18,7 +18,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
|
#ifndef IRCD_H
|
||||||
#define IRCD_H
|
#define IRCD_H
|
||||||
|
|
25
keeper.c
25
keeper.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -30,7 +30,8 @@
|
||||||
|
|
||||||
/** @brief Gets Config Data of Type
|
/** @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];
|
char keypath[255];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
@ -56,9 +57,7 @@ int GetConf(void **data, int type, const char *item)
|
||||||
i = kp_get_bool (keypath, (int *) *&data);
|
i = kp_get_bool (keypath, (int *) *&data);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Keeper: Called GetConf with invalid datatype %d", type);
|
||||||
"Keeper: Called GetConf with invalid datatype %d",
|
|
||||||
type);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
/* check for errors */
|
/* check for errors */
|
||||||
|
@ -66,8 +65,7 @@ int GetConf(void **data, int type, const char *item)
|
||||||
/*
|
/*
|
||||||
data = malloc(255);
|
data = malloc(255);
|
||||||
*/
|
*/
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "GetConf: %s - Path: %s",
|
nlog (LOG_DEBUG1, LOG_CORE, "GetConf: %s - Path: %s", kp_strerror (i), keypath);
|
||||||
kp_strerror(i), keypath);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
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 */
|
/* @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;
|
int i;
|
||||||
char keypath[255];
|
char keypath[255];
|
||||||
|
@ -93,8 +92,7 @@ int GetDir(char *item, char ***data)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
*data = NULL;
|
*data = NULL;
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "GetDir: %s - Path: %s", kp_strerror(i),
|
nlog (LOG_DEBUG1, LOG_CORE, "GetDir: %s - Path: %s", kp_strerror (i), keypath);
|
||||||
keypath);
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -103,7 +101,8 @@ int GetDir(char *item, char ***data)
|
||||||
|
|
||||||
/** @brief Sets Config Data of Type
|
/** @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];
|
char keypath[255];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
@ -131,9 +130,7 @@ int SetConf(void *data, int type, char *item)
|
||||||
i = kp_set_bool (keypath, (int) data);
|
i = kp_set_bool (keypath, (int) data);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Keeper: Called SetConf with invalid datatype %d", type);
|
||||||
"Keeper: Called SetConf with invalid datatype %d",
|
|
||||||
type);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
/* check for errors */
|
/* check for errors */
|
||||||
|
|
166
list.c
166
list.c
|
@ -37,7 +37,7 @@
|
||||||
* into proprietary software; there is no requirement for such software to
|
* into proprietary software; there is no requirement for such software to
|
||||||
* contain a copyright notice related to this source.
|
* 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: $
|
* $Name: $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -69,8 +69,7 @@
|
||||||
#define lnode_prev(N) ((N)->prev)
|
#define lnode_prev(N) ((N)->prev)
|
||||||
|
|
||||||
#ifdef KAZLIB_RCSID
|
#ifdef KAZLIB_RCSID
|
||||||
static const char rcsid[] =
|
static const char rcsid[] = "$Id: list.c,v 1.10 2003/07/30 13:58:22 fishwaldo Exp $";
|
||||||
"$Id: list.c,v 1.9 2003/07/17 10:13:51 fishwaldo Exp $";
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -80,7 +79,8 @@ static const char rcsid[] =
|
||||||
* is not permitted.
|
* 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);
|
nassert (maxcount != 0);
|
||||||
list->nilnode.next = &list->nilnode;
|
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.
|
* 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);
|
list_t *new = malloc (sizeof *new);
|
||||||
if (new) {
|
if (new) {
|
||||||
|
@ -114,7 +115,8 @@ list_t *list_create(listcount_t maxcount)
|
||||||
* The client must remove the nodes first.
|
* The client must remove the nodes first.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void list_destroy(list_t * list)
|
void
|
||||||
|
list_destroy (list_t * list)
|
||||||
{
|
{
|
||||||
nassert (list_isempty (list));
|
nassert (list_isempty (list));
|
||||||
free (list);
|
free (list);
|
||||||
|
@ -126,10 +128,10 @@ void list_destroy(list_t * list)
|
||||||
* is empty.
|
* is empty.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void list_destroy_nodes(list_t * list)
|
void
|
||||||
|
list_destroy_nodes (list_t * list)
|
||||||
{
|
{
|
||||||
lnode_t *lnode = list_first_priv(list), *nil =
|
lnode_t *lnode = list_first_priv (list), *nil = list_nil (list), *tmp;
|
||||||
list_nil(list), *tmp;
|
|
||||||
|
|
||||||
while (lnode != nil) {
|
while (lnode != nil) {
|
||||||
tmp = lnode->next;
|
tmp = lnode->next;
|
||||||
|
@ -147,10 +149,10 @@ void list_destroy_nodes(list_t * list)
|
||||||
* the list must all have come from the same pool.
|
* 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 =
|
lnode_t *lnode = list_first_priv (list), *tmp, *nil = list_nil (list);
|
||||||
list_nil(list);
|
|
||||||
|
|
||||||
while (lnode != nil) {
|
while (lnode != nil) {
|
||||||
tmp = lnode->next;
|
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.
|
* 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;
|
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.
|
* 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;
|
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.
|
* 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 *next = del->next;
|
||||||
lnode_t *prev = del->prev;
|
lnode_t *prev = del->prev;
|
||||||
|
@ -235,12 +240,10 @@ lnode_t *list_delete(list_t * list, lnode_t * del)
|
||||||
* call to the function.
|
* call to the function.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void list_process(list_t * list, void *context,
|
void
|
||||||
void (*function) (list_t * list, lnode_t * lnode,
|
list_process (list_t * list, void *context, void (*function) (list_t * list, lnode_t * lnode, void *context))
|
||||||
void *context))
|
|
||||||
{
|
{
|
||||||
lnode_t *node = list_first_priv(list), *next, *nil =
|
lnode_t *node = list_first_priv (list), *next, *nil = list_nil (list);
|
||||||
list_nil(list);
|
|
||||||
|
|
||||||
while (node != nil) {
|
while (node != nil) {
|
||||||
/* check for callback function deleting */
|
/* 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.
|
* 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);
|
lnode_t *new = malloc (sizeof *new);
|
||||||
if (new) {
|
if (new) {
|
||||||
|
@ -271,7 +275,8 @@ lnode_t *lnode_create(void *data)
|
||||||
* Initialize a user-supplied lnode.
|
* 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->data = data;
|
||||||
lnode->next = NULL;
|
lnode->next = NULL;
|
||||||
|
@ -283,7 +288,8 @@ lnode_t *lnode_init(lnode_t * lnode, void *data)
|
||||||
* Destroy a dynamically allocated node.
|
* Destroy a dynamically allocated node.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void lnode_destroy(lnode_t * lnode)
|
void
|
||||||
|
lnode_destroy (lnode_t * lnode)
|
||||||
{
|
{
|
||||||
nassert (!lnode_is_in_a_list (lnode));
|
nassert (!lnode_is_in_a_list (lnode));
|
||||||
free (lnode);
|
free (lnode);
|
||||||
|
@ -295,8 +301,8 @@ void lnode_destroy(lnode_t * lnode)
|
||||||
* ``n'' elements.
|
* ``n'' elements.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
lnodepool_t *lnode_pool_init(lnodepool_t * pool, lnode_t * nodes,
|
lnodepool_t *
|
||||||
listcount_t n)
|
lnode_pool_init (lnodepool_t * pool, lnode_t * nodes, listcount_t n)
|
||||||
{
|
{
|
||||||
listcount_t i;
|
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.
|
* 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;
|
lnodepool_t *pool;
|
||||||
lnode_t *nodes;
|
lnode_t *nodes;
|
||||||
|
@ -340,7 +347,8 @@ lnodepool_t *lnode_pool_create(listcount_t n)
|
||||||
* Determine whether the given pool is from this pool.
|
* 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;
|
listcount_t i;
|
||||||
|
|
||||||
|
@ -359,7 +367,8 @@ int lnode_pool_isfrom(lnodepool_t * pool, lnode_t * node)
|
||||||
* Destroy a dynamically allocated pool of nodes.
|
* 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->pool);
|
||||||
free (p);
|
free (p);
|
||||||
|
@ -370,7 +379,8 @@ void lnode_pool_destroy(lnodepool_t * p)
|
||||||
* is exhausted.
|
* 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;
|
lnode_t *new = pool->fre;
|
||||||
if (new) {
|
if (new) {
|
||||||
|
@ -387,7 +397,8 @@ lnode_t *lnode_borrow(lnodepool_t * pool, void *data)
|
||||||
* from which it came.
|
* 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_pool_isfrom (pool, node));
|
||||||
nassert (!lnode_is_in_a_list (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.
|
* 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);
|
lnode_t *n, *nil = list_nil (list);
|
||||||
|
|
||||||
|
@ -420,8 +432,8 @@ int list_contains(list_t * list, lnode_t * node)
|
||||||
* list.
|
* list.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void list_extract(list_t * dest, list_t * source, lnode_t * first,
|
void
|
||||||
lnode_t * last)
|
list_extract (list_t * dest, list_t * source, lnode_t * first, lnode_t * last)
|
||||||
{
|
{
|
||||||
listcount_t moved = 1;
|
listcount_t moved = 1;
|
||||||
|
|
||||||
|
@ -473,7 +485,8 @@ void list_extract(list_t * dest, list_t * source, lnode_t * first,
|
||||||
* order.
|
* 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;
|
listcount_t moved = 1;
|
||||||
lnode_t *last;
|
lnode_t *last;
|
||||||
|
@ -513,8 +526,8 @@ void list_transfer(list_t * dest, list_t * source, lnode_t * first)
|
||||||
nassert (list_verify (dest));
|
nassert (list_verify (dest));
|
||||||
}
|
}
|
||||||
|
|
||||||
void list_merge(list_t * dest, list_t * sour,
|
void
|
||||||
int compare(const void *, const void *))
|
list_merge (list_t * dest, list_t * sour, int compare (const void *, const void *))
|
||||||
{
|
{
|
||||||
lnode_t *dn, *sn, *tn;
|
lnode_t *dn, *sn, *tn;
|
||||||
lnode_t *d_nil = list_nil (dest), *s_nil = list_nil (sour);
|
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);
|
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;
|
list_t extra;
|
||||||
listcount_t middle;
|
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));
|
nassert (list_is_sorted (list, compare));
|
||||||
}
|
}
|
||||||
|
|
||||||
lnode_t *list_find(list_t * list, const void *key,
|
lnode_t *
|
||||||
int compare(const void *, const void *))
|
list_find (list_t * list, const void *key, int compare (const void *, const void *))
|
||||||
{
|
{
|
||||||
lnode_t *node;
|
lnode_t *node;
|
||||||
|
|
||||||
for (node = list_first_priv(list); node != list_nil(list);
|
for (node = list_first_priv (list); node != list_nil (list); node = node->next) {
|
||||||
node = node->next) {
|
|
||||||
if (compare (lnode_get (node), key) == 0)
|
if (compare (lnode_get (node), key) == 0)
|
||||||
return node;
|
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
|
* 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;
|
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
|
* 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;
|
return list->nodecount == 0;
|
||||||
}
|
}
|
||||||
|
@ -645,7 +660,8 @@ int list_isempty(list_t * list)
|
||||||
* Permitted only on bounded lists.
|
* Permitted only on bounded lists.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int list_isfull(list_t * list)
|
int
|
||||||
|
list_isfull (list_t * list)
|
||||||
{
|
{
|
||||||
return list->nodecount == list->maxcount;
|
return list->nodecount == list->maxcount;
|
||||||
}
|
}
|
||||||
|
@ -654,7 +670,8 @@ int list_isfull(list_t * list)
|
||||||
* Check if the node pool is empty.
|
* 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);
|
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
|
* 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);
|
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.
|
* 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);
|
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
|
* 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)
|
if (list->nilnode.next == &list->nilnode)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -692,7 +712,8 @@ lnode_t *list_first(list_t * list)
|
||||||
* Retrieve the last node of the 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)
|
if (list->nilnode.prev == &list->nilnode)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -703,7 +724,8 @@ lnode_t *list_last(list_t * list)
|
||||||
* Retrieve the count of nodes in the 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;
|
return list->nodecount;
|
||||||
}
|
}
|
||||||
|
@ -712,7 +734,8 @@ listcount_t list_count(list_t * list)
|
||||||
* Remove the first node from the list and return it.
|
* 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);
|
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.
|
* 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);
|
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.
|
* 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;
|
lnode->data = data;
|
||||||
}
|
}
|
||||||
|
@ -740,7 +765,8 @@ void lnode_put(lnode_t * lnode, void *data)
|
||||||
* Retrieve the data item associated with the node.
|
* Retrieve the data item associated with the node.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *lnode_get(lnode_t * lnode)
|
void *
|
||||||
|
lnode_get (lnode_t * lnode)
|
||||||
{
|
{
|
||||||
return lnode->data;
|
return lnode->data;
|
||||||
}
|
}
|
||||||
|
@ -750,7 +776,8 @@ void *lnode_get(lnode_t * lnode)
|
||||||
* NULL is returned.
|
* 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));
|
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().
|
* 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));
|
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.
|
* 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);
|
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);
|
lnode_t *node = list_first_priv (list), *nil = list_nil (list);
|
||||||
listcount_t count = list_count (list);
|
listcount_t count = list_count (list);
|
||||||
|
@ -808,7 +838,8 @@ int list_verify(list_t * list)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int comparef(const void *key1, const void *key2)
|
int
|
||||||
|
comparef (const void *key1, const void *key2)
|
||||||
{
|
{
|
||||||
return strcasecmp (key1, key2);
|
return strcasecmp (key1, key2);
|
||||||
}
|
}
|
||||||
|
@ -824,7 +855,8 @@ int comparef(const void *key1, const void *key2)
|
||||||
|
|
||||||
typedef char input_t[256];
|
typedef char input_t[256];
|
||||||
|
|
||||||
static int tokenize(char *string, ...)
|
static int
|
||||||
|
tokenize (char *string, ...)
|
||||||
{
|
{
|
||||||
char **tokptr;
|
char **tokptr;
|
||||||
va_list arglist;
|
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;
|
int sz = strlen (str) + 1;
|
||||||
char *new = malloc (sz);
|
char *new = malloc (sz);
|
||||||
|
@ -861,7 +894,8 @@ static char *dupstring(char *str)
|
||||||
return new;
|
return new;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int
|
||||||
|
main (void)
|
||||||
{
|
{
|
||||||
input_t in;
|
input_t in;
|
||||||
list_t *l = list_create (LISTCOUNT_T_MAX);
|
list_t *l = list_create (LISTCOUNT_T_MAX);
|
||||||
|
@ -874,10 +908,7 @@ int main(void)
|
||||||
"d <val> delete value from list\n"
|
"d <val> delete value from list\n"
|
||||||
"l <val> lookup value in list\n"
|
"l <val> lookup value in list\n"
|
||||||
"s sort list\n"
|
"s sort list\n"
|
||||||
"c show number of entries\n"
|
"c show number of entries\n" "t dump whole list\n" "p turn prompt on\n" "q quit";
|
||||||
"t dump whole list\n"
|
|
||||||
"p turn prompt on\n"
|
|
||||||
"q quit";
|
|
||||||
|
|
||||||
if (!l)
|
if (!l)
|
||||||
puts ("list_create failed");
|
puts ("list_create failed");
|
||||||
|
@ -945,8 +976,7 @@ int main(void)
|
||||||
printf ("%lu\n", (unsigned long) list_count (l));
|
printf ("%lu\n", (unsigned long) list_count (l));
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
for (ln = list_first(l); ln != 0;
|
for (ln = list_first (l); ln != 0; ln = list_next (l, ln))
|
||||||
ln = list_next(l, ln))
|
|
||||||
puts (lnode_get (ln));
|
puts (lnode_get (ln));
|
||||||
break;
|
break;
|
||||||
case 'q':
|
case 'q':
|
||||||
|
|
3
list.h
3
list.h
|
@ -37,7 +37,7 @@
|
||||||
* into proprietary software; there is no requirement for such software to
|
* into proprietary software; there is no requirement for such software to
|
||||||
* contain a copyright notice related to this source.
|
* 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: $
|
* $Name: $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -176,5 +176,4 @@ int list_is_sorted(list_t *, int (const void *, const void *));
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
62
log.c
62
log.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -55,7 +55,8 @@ void *close_logs();
|
||||||
|
|
||||||
/** @brief Initilize the logging functions
|
/** @brief Initilize the logging functions
|
||||||
*/
|
*/
|
||||||
void init_logs()
|
void
|
||||||
|
init_logs ()
|
||||||
{
|
{
|
||||||
logs = hash_create (-1, 0, 0);
|
logs = hash_create (-1, 0, 0);
|
||||||
if (!logs) {
|
if (!logs) {
|
||||||
|
@ -69,7 +70,8 @@ void init_logs()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
void *close_logs()
|
void *
|
||||||
|
close_logs ()
|
||||||
{
|
{
|
||||||
hscan_t hs;
|
hscan_t hs;
|
||||||
hnode_t *hn;
|
hnode_t *hn;
|
||||||
|
@ -81,8 +83,7 @@ void *close_logs()
|
||||||
fflush (logentry->logfile);
|
fflush (logentry->logfile);
|
||||||
logentry->flush = 0;
|
logentry->flush = 0;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("Closing Logfile %s (%s)\n", logentry->name,
|
printf ("Closing Logfile %s (%s)\n", logentry->name, (char *) hnode_getkey (hn));
|
||||||
(char *) hnode_getkey(hn));
|
|
||||||
#endif
|
#endif
|
||||||
fclose (logentry->logfile);
|
fclose (logentry->logfile);
|
||||||
hash_scan_delete (logs, hn);
|
hash_scan_delete (logs, hn);
|
||||||
|
@ -95,7 +96,8 @@ void *close_logs()
|
||||||
|
|
||||||
/** @Configurable logging function
|
/** @Configurable logging function
|
||||||
*/
|
*/
|
||||||
void nlog(int level, int scope, char *fmt, ...)
|
void
|
||||||
|
nlog (int level, int scope, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], fmttime[80];
|
char buf[512], fmttime[80];
|
||||||
|
@ -110,8 +112,7 @@ void nlog(int level, int scope, char *fmt, ...)
|
||||||
if (strlen (segvinmodule) > 1) {
|
if (strlen (segvinmodule) > 1) {
|
||||||
hn = hash_lookup (logs, segvinmodule);
|
hn = hash_lookup (logs, segvinmodule);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_ERROR, LOG_CORE,
|
nlog (LOG_ERROR, LOG_CORE, "Warning, nlog called with LOG_MOD, but segvinmodule is blank! Logging to Core");
|
||||||
"Warning, nlog called with LOG_MOD, but segvinmodule is blank! Logging to Core");
|
|
||||||
hn = hash_lookup (logs, "core");
|
hn = hash_lookup (logs, "core");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -125,17 +126,14 @@ void nlog(int level, int scope, char *fmt, ...)
|
||||||
/* log file not found */
|
/* log file not found */
|
||||||
if ((strlen (segvinmodule) <= 1) && (scope > 0)) {
|
if ((strlen (segvinmodule) <= 1) && (scope > 0)) {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf
|
printf ("segvinmodule is blank, but scope is for Modules!\n");
|
||||||
("segvinmodule is blank, but scope is for Modules!\n");
|
|
||||||
#endif
|
#endif
|
||||||
/* bad, but hey ! */
|
/* bad, but hey ! */
|
||||||
scope = 0;
|
scope = 0;
|
||||||
}
|
}
|
||||||
logentry = malloc (sizeof (struct logs_));
|
logentry = malloc (sizeof (struct logs_));
|
||||||
strncpy(logentry->name,
|
strncpy (logentry->name, scope > 0 ? segvinmodule : "core", 30);
|
||||||
scope > 0 ? segvinmodule : "core", 30);
|
snprintf (buf, 40, "logs/%s.log", scope > 0 ? segvinmodule : "NeoStats");
|
||||||
snprintf(buf, 40, "logs/%s.log",
|
|
||||||
scope > 0 ? segvinmodule : "NeoStats");
|
|
||||||
logentry->logfile = fopen (buf, "a");
|
logentry->logfile = fopen (buf, "a");
|
||||||
logentry->flush = 0;
|
logentry->flush = 0;
|
||||||
hn = hnode_create (logentry);
|
hn = hnode_create (logentry);
|
||||||
|
@ -153,19 +151,17 @@ void nlog(int level, int scope, char *fmt, ...)
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
vsnprintf (buf, 512, fmt, ap);
|
vsnprintf (buf, 512, fmt, ap);
|
||||||
|
|
||||||
fprintf(logentry->logfile, "(%s) %s %s - %s\n", fmttime,
|
fprintf (logentry->logfile, "(%s) %s %s - %s\n", fmttime, loglevels[level - 1], scope > 0 ? segvinmodule : "CORE", buf);
|
||||||
loglevels[level - 1],
|
|
||||||
scope > 0 ? segvinmodule : "CORE", buf);
|
|
||||||
logentry->flush = 1;
|
logentry->flush = 1;
|
||||||
#ifndef DEBUG
|
#ifndef DEBUG
|
||||||
if (config.foreground)
|
if (config.foreground)
|
||||||
#endif
|
#endif
|
||||||
printf("%s %s - %s\n", loglevels[level - 1],
|
printf ("%s %s - %s\n", loglevels[level - 1], scope > 0 ? segvinmodule : "CORE", buf);
|
||||||
scope > 0 ? segvinmodule : "CORE", buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void ResetLogs()
|
void
|
||||||
|
ResetLogs ()
|
||||||
{
|
{
|
||||||
char tmp[255], tmp2[255];
|
char tmp[255], tmp2[255];
|
||||||
time_t t = time (NULL);
|
time_t t = time (NULL);
|
||||||
|
@ -182,24 +178,17 @@ void ResetLogs()
|
||||||
fflush (logentry->logfile);
|
fflush (logentry->logfile);
|
||||||
logentry->flush = 0;
|
logentry->flush = 0;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("Closing Logfile %s (%s)\n", logentry->name,
|
printf ("Closing Logfile %s (%s)\n", logentry->name, (char *) hnode_getkey (hn));
|
||||||
(char *) hnode_getkey(hn));
|
|
||||||
#endif
|
#endif
|
||||||
fclose (logentry->logfile);
|
fclose (logentry->logfile);
|
||||||
if (!strcasecmp (logentry->name, "core")) {
|
if (!strcasecmp (logentry->name, "core")) {
|
||||||
strftime(tmp, 255,
|
strftime (tmp, 255, "logs/NeoStats-%m-%d.log", localtime (&t));
|
||||||
"logs/NeoStats-%m-%d.log",
|
|
||||||
localtime(&t));
|
|
||||||
rename ("logs/NeoStats.log", tmp);
|
rename ("logs/NeoStats.log", tmp);
|
||||||
logentry->logfile =
|
logentry->logfile = fopen ("logs/NeoStats.log", "a");
|
||||||
fopen("logs/NeoStats.log", "a");
|
|
||||||
} else {
|
} else {
|
||||||
strftime(tmp2, 255, "%m-%d.log",
|
strftime (tmp2, 255, "%m-%d.log", localtime (&t));
|
||||||
localtime(&t));
|
snprintf (tmp, 255, "logs/%s-%s", logentry->name, tmp2);
|
||||||
snprintf(tmp, 255, "logs/%s-%s",
|
snprintf (tmp2, 255, "logs/%s.log", logentry->name);
|
||||||
logentry->name, tmp2);
|
|
||||||
snprintf(tmp2, 255, "logs/%s.log",
|
|
||||||
logentry->name);
|
|
||||||
rename (tmp2, tmp);
|
rename (tmp2, tmp);
|
||||||
logentry->logfile = fopen (tmp2, "a");
|
logentry->logfile = fopen (tmp2, "a");
|
||||||
}
|
}
|
||||||
|
@ -210,7 +199,9 @@ void ResetLogs()
|
||||||
|
|
||||||
|
|
||||||
/* this is for printing out details during a assertion failure */
|
/* 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
|
#ifdef HAVE_BACKTRACE
|
||||||
void *array[50];
|
void *array[50];
|
||||||
size_t size;
|
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);
|
nlog (LOG_CRITICAL, LOG_CORE, "Expression: %s", expr);
|
||||||
#ifdef HAVE_BACKTRACE
|
#ifdef HAVE_BACKTRACE
|
||||||
for (i = 1; i < size; i++) {
|
for (i = 1; i < size; i++) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE, "BackTrace(%d): %s",
|
nlog (LOG_CRITICAL, LOG_CORE, "BackTrace(%d): %s", i - 1, strings[i]);
|
||||||
i - 1, strings[i]);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
nlog (LOG_CRITICAL, LOG_CORE, "Shutting Down!");
|
nlog (LOG_CRITICAL, LOG_CORE, "Shutting Down!");
|
||||||
|
|
2
log.h
2
log.h
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
192
main.c
|
@ -22,7 +22,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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>
|
#include <setjmp.h>
|
||||||
|
@ -87,7 +87,8 @@ int forked = 0;
|
||||||
*
|
*
|
||||||
* @todo Close STDIN etc correctly
|
* @todo Close STDIN etc correctly
|
||||||
*/
|
*/
|
||||||
int main(int argc, char *argv[])
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
/* get our commandline options */
|
/* get our commandline options */
|
||||||
|
@ -111,16 +112,13 @@ int main(int argc, char *argv[])
|
||||||
me.onchan = 0;
|
me.onchan = 0;
|
||||||
/* keep quiet if we are told to :) */
|
/* keep quiet if we are told to :) */
|
||||||
if (!config.quiet) {
|
if (!config.quiet) {
|
||||||
printf("NeoStats %d.%d.%d%s Loading...\n", MAJOR, MINOR,
|
printf ("NeoStats %d.%d.%d%s Loading...\n", MAJOR, MINOR, REV, version);
|
||||||
REV, version);
|
printf ("-----------------------------------------------\n");
|
||||||
printf
|
|
||||||
("-----------------------------------------------\n");
|
|
||||||
printf ("Copyright: NeoStats Group. 2000-2003\n");
|
printf ("Copyright: NeoStats Group. 2000-2003\n");
|
||||||
printf ("Justin Hammond (fish@neostats.net)\n");
|
printf ("Justin Hammond (fish@neostats.net)\n");
|
||||||
printf ("Adam Rutter (shmad@neostats.net)\n");
|
printf ("Adam Rutter (shmad@neostats.net)\n");
|
||||||
printf ("^Enigma^ (enigma@neostats.net)\n");
|
printf ("^Enigma^ (enigma@neostats.net)\n");
|
||||||
printf
|
printf ("-----------------------------------------------\n\n");
|
||||||
("-----------------------------------------------\n\n");
|
|
||||||
}
|
}
|
||||||
/* set some defaults before we parse the config file */
|
/* set some defaults before we parse the config file */
|
||||||
me.t_start = time (NULL);
|
me.t_start = time (NULL);
|
||||||
|
@ -155,10 +153,8 @@ int main(int argc, char *argv[])
|
||||||
/* load the config files */
|
/* load the config files */
|
||||||
ConfLoad ();
|
ConfLoad ();
|
||||||
if (me.die) {
|
if (me.die) {
|
||||||
printf
|
printf ("\n-----> ERROR: Read the README file then edit neostats.cfg! <-----\n\n");
|
||||||
("\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");
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
|
||||||
"Read the README file and edit your neostats.cfg");
|
|
||||||
sleep (1);
|
sleep (1);
|
||||||
close (servsock);
|
close (servsock);
|
||||||
remove ("neostats.pid");
|
remove ("neostats.pid");
|
||||||
|
@ -187,11 +183,8 @@ int main(int argc, char *argv[])
|
||||||
fclose (fp);
|
fclose (fp);
|
||||||
if (!config.quiet) {
|
if (!config.quiet) {
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
printf
|
printf ("NeoStats %d.%d.%d%s Successfully Launched into Background\n", MAJOR, MINOR, REV, version);
|
||||||
("NeoStats %d.%d.%d%s Successfully Launched into Background\n",
|
printf ("PID: %i - Wrote to neostats.pid\n", forked);
|
||||||
MAJOR, MINOR, REV, version);
|
|
||||||
printf("PID: %i - Wrote to neostats.pid\n",
|
|
||||||
forked);
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -202,9 +195,7 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Statistics Started (NeoStats %d.%d.%d%s).", MAJOR, MINOR, REV, version);
|
||||||
"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 */
|
/* don't init_modules till after we fork. This fixes the load->fork-exit->call _fini problems when we fork */
|
||||||
init_modules ();
|
init_modules ();
|
||||||
|
@ -219,7 +210,8 @@ int main(int argc, char *argv[])
|
||||||
*
|
*
|
||||||
* Processes commandline options
|
* Processes commandline options
|
||||||
*/
|
*/
|
||||||
void get_options(int argc, char **argv)
|
void
|
||||||
|
get_options (int argc, char **argv)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
int dbg;
|
int dbg;
|
||||||
|
@ -237,31 +229,22 @@ void get_options(int argc, char **argv)
|
||||||
while ((c = getopt (argc, argv, "hvrd:nqf")) != -1) {
|
while ((c = getopt (argc, argv, "hvrd:nqf")) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'h':
|
case 'h':
|
||||||
printf
|
printf ("NeoStats: Usage: \"neostats [options]\"\n");
|
||||||
("NeoStats: Usage: \"neostats [options]\"\n");
|
|
||||||
printf (" -h (Show this screen)\n");
|
printf (" -h (Show this screen)\n");
|
||||||
printf (" -v (Show Version Number)\n");
|
printf (" -v (Show Version Number)\n");
|
||||||
printf (" -r (Enable Recv.log)\n");
|
printf (" -r (Enable Recv.log)\n");
|
||||||
printf
|
printf (" -d 1-10 (Enable Debuging output 1= lowest, 10 = highest)\n");
|
||||||
(" -d 1-10 (Enable Debuging output 1= lowest, 10 = highest)\n");
|
printf (" -n (Do not load any modules on startup)\n");
|
||||||
printf
|
printf (" -q (Quiet Start - For Cron Scripts)\n");
|
||||||
(" -n (Do not load any modules on startup)\n");
|
printf (" -f (Do NOt fork into BackGround\n");
|
||||||
printf
|
|
||||||
(" -q (Quiet Start - For Cron Scripts)\n");
|
|
||||||
printf
|
|
||||||
(" -f (Do NOt fork into BackGround\n");
|
|
||||||
exit (1);
|
exit (1);
|
||||||
case 'v':
|
case 'v':
|
||||||
printf("NeoStats Version %d.%d.%d%s\n", MAJOR,
|
printf ("NeoStats Version %d.%d.%d%s\n", MAJOR, MINOR, REV, version);
|
||||||
MINOR, REV, version);
|
printf ("Compiled: %s at %s\n", version_date, version_time);
|
||||||
printf("Compiled: %s at %s\n", version_date,
|
printf ("Flag after version number indicates what IRCd NeoStats is compiled for:\n");
|
||||||
version_time);
|
|
||||||
printf
|
|
||||||
("Flag after version number indicates what IRCd NeoStats is compiled for:\n");
|
|
||||||
printf ("(U) - Unreal IRCd\n");
|
printf ("(U) - Unreal IRCd\n");
|
||||||
printf ("(UL3)- Ultimate 3.x.x IRCd\n");
|
printf ("(UL3)- Ultimate 3.x.x IRCd\n");
|
||||||
printf
|
printf ("(UL) - Ultimate 2.x.x IRCd (Depriciated)\n");
|
||||||
("(UL) - Ultimate 2.x.x IRCd (Depriciated)\n");
|
|
||||||
printf ("(H) - Hybrid 7.x IRCd\n");
|
printf ("(H) - Hybrid 7.x IRCd\n");
|
||||||
printf ("(N) - NeoIRCd IRCd\n");
|
printf ("(N) - NeoIRCd IRCd\n");
|
||||||
printf ("(M) - Mystic 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 :)
|
* @todo Do a nice shutdown, no thtis crap :)
|
||||||
*/
|
*/
|
||||||
RETSIGTYPE serv_die()
|
RETSIGTYPE
|
||||||
|
serv_die ()
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (s_Services);
|
u = finduser (s_Services);
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Sigterm Recieved, Shuting Down Server!!!!");
|
||||||
"Sigterm Recieved, Shuting Down Server!!!!");
|
|
||||||
ns_shutdown (u, "SigTerm Recieved");
|
ns_shutdown (u, "SigTerm Recieved");
|
||||||
ssquit_cmd (me.name);
|
ssquit_cmd (me.name);
|
||||||
|
|
||||||
|
@ -330,7 +313,8 @@ RETSIGTYPE serv_die()
|
||||||
*
|
*
|
||||||
* @todo Implement a Rehash function. What can we actually rehash?
|
* @todo Implement a Rehash function. What can we actually rehash?
|
||||||
*/
|
*/
|
||||||
RETSIGTYPE conf_rehash()
|
RETSIGTYPE
|
||||||
|
conf_rehash ()
|
||||||
{
|
{
|
||||||
/* struct sigaction act; */
|
/* struct sigaction act; */
|
||||||
chanalert (s_Services, "Recieved SIGHUP, Attempting to Rehash");
|
chanalert (s_Services, "Recieved SIGHUP, Attempting to Rehash");
|
||||||
|
@ -362,7 +346,8 @@ RETSIGTYPE conf_rehash()
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
RETSIGTYPE serv_segv()
|
RETSIGTYPE
|
||||||
|
serv_segv ()
|
||||||
{
|
{
|
||||||
char name[30];
|
char name[30];
|
||||||
#ifdef HAVE_BACKTRACE
|
#ifdef HAVE_BACKTRACE
|
||||||
|
@ -379,34 +364,20 @@ RETSIGTYPE serv_segv()
|
||||||
* and continue on
|
* and continue on
|
||||||
*/
|
*/
|
||||||
if (strlen (segvinmodule) > 1) {
|
if (strlen (segvinmodule) > 1) {
|
||||||
globops(me.name,
|
globops (me.name, "Oh Damn, Module %s Segv'd, Unloading Module", segvinmodule);
|
||||||
"Oh Damn, Module %s Segv'd, Unloading Module",
|
chanalert (s_Services, "Oh Damn, Module %s Segv'd, Unloading Module", segvinmodule);
|
||||||
segvinmodule);
|
nlog (LOG_CRITICAL, LOG_CORE, "Uh Oh, Segmentation Fault in Modules Code %s", segvinmodule);
|
||||||
chanalert(s_Services,
|
nlog (LOG_CRITICAL, LOG_CORE, "Location could be %s", segv_location);
|
||||||
"Oh Damn, Module %s Segv'd, Unloading Module",
|
nlog (LOG_CRITICAL, LOG_CORE, "Unloading Module and restoring stacks. Doing Backtrace:");
|
||||||
segvinmodule);
|
chanalert (s_Services, "Location *could* be %s. Doing Backtrace:", segv_location);
|
||||||
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
|
#ifdef HAVE_BACKTRACE
|
||||||
for (i = 1; i < size; i++) {
|
for (i = 1; i < size; i++) {
|
||||||
chanalert(s_Services, "Backtrace(%d): %s", i,
|
chanalert (s_Services, "Backtrace(%d): %s", i, strings[i]);
|
||||||
strings[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]);
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Backtrace not available on this platform");
|
||||||
"Backtrace not available on this platform");
|
nlog (LOG_CRITICAL, LOG_CORE, "Backtrace not available on this platform");
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
|
||||||
"Backtrace not available on this platform");
|
|
||||||
#endif
|
#endif
|
||||||
strcpy (name, segvinmodule);
|
strcpy (name, segvinmodule);
|
||||||
strcpy (segvinmodule, "");
|
strcpy (segvinmodule, "");
|
||||||
|
@ -420,32 +391,20 @@ RETSIGTYPE serv_segv()
|
||||||
} else {
|
} else {
|
||||||
/** The segv happened in our core, damn it */
|
/** The segv happened in our core, damn it */
|
||||||
/* Thanks to Stskeeps and Unreal for this stuff :) */
|
/* Thanks to Stskeeps and Unreal for this stuff :) */
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Uh Oh, Segmentation Fault.. Server Terminating");
|
||||||
"Uh Oh, Segmentation Fault.. Server Terminating");
|
nlog (LOG_CRITICAL, LOG_CORE, "Details: Buffer: %s", recbuf);
|
||||||
nlog(LOG_CRITICAL, LOG_CORE, "Details: Buffer: %s",
|
nlog (LOG_CRITICAL, LOG_CORE, "Approx Location: %s Backtrace:", segv_location);
|
||||||
recbuf);
|
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
|
||||||
"Approx Location: %s Backtrace:", segv_location);
|
|
||||||
/* Broadcast it out! */
|
/* Broadcast it out! */
|
||||||
globops(me.name,
|
globops (me.name, "Ohhh Crap, Server Terminating, Segmentation Fault. Buffer: %s, Approx Location %s", recbuf, segv_location);
|
||||||
"Ohhh Crap, Server Terminating, Segmentation Fault. Buffer: %s, Approx Location %s",
|
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);
|
||||||
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
|
#ifdef HAVE_BACKTRACE
|
||||||
for (i = 1; i < size; i++) {
|
for (i = 1; i < size; i++) {
|
||||||
chanalert(s_Services, "Backtrace(%d): %s", i,
|
chanalert (s_Services, "Backtrace(%d): %s", i, strings[i]);
|
||||||
strings[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]);
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Backtrace not available on this platform");
|
||||||
"Backtrace not available on this platform");
|
nlog (LOG_CRITICAL, LOG_CORE, "Backtrace not available on this platform");
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
|
||||||
"Backtrace not available on this platform");
|
|
||||||
#endif
|
#endif
|
||||||
sleep (2);
|
sleep (2);
|
||||||
kill (forked, 3);
|
kill (forked, 3);
|
||||||
|
@ -464,7 +423,8 @@ RETSIGTYPE serv_segv()
|
||||||
* @return Nothing
|
* @return Nothing
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static void setup_signals()
|
static void
|
||||||
|
setup_signals ()
|
||||||
{
|
{
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
act.sa_handler = SIG_IGN;
|
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
|
* @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;
|
static int attempts = 0;
|
||||||
Module *mod_ptr = NULL;
|
Module *mod_ptr = NULL;
|
||||||
|
@ -518,32 +479,27 @@ void start()
|
||||||
strcpy (segv_location, "start");
|
strcpy (segv_location, "start");
|
||||||
|
|
||||||
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE, "Connecting to %s:%d", me.uplink,
|
nlog (LOG_NOTICE, LOG_CORE, "Connecting to %s:%d", me.uplink, me.port);
|
||||||
me.port);
|
|
||||||
if (servsock > 0)
|
if (servsock > 0)
|
||||||
close (servsock);
|
close (servsock);
|
||||||
|
|
||||||
servsock = ConnectTo (me.uplink, me.port);
|
servsock = ConnectTo (me.uplink, me.port);
|
||||||
|
|
||||||
if (servsock <= 0) {
|
if (servsock <= 0) {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Unable to connect to %s",
|
nlog (LOG_WARNING, LOG_CORE, "Unable to connect to %s", me.uplink);
|
||||||
me.uplink);
|
|
||||||
} else {
|
} else {
|
||||||
attempts = 0;
|
attempts = 0;
|
||||||
login ();
|
login ();
|
||||||
read_loop ();
|
read_loop ();
|
||||||
}
|
}
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Reconnecting to the server in %d seconds (Attempt %i)", me.r_time, attempts);
|
||||||
"Reconnecting to the server in %d seconds (Attempt %i)",
|
|
||||||
me.r_time, attempts);
|
|
||||||
close (servsock);
|
close (servsock);
|
||||||
|
|
||||||
/* Unload the Modules */
|
/* Unload the Modules */
|
||||||
hash_scan_begin (&ms, mh);
|
hash_scan_begin (&ms, mh);
|
||||||
while ((mn = hash_scan_next (&ms)) != NULL) {
|
while ((mn = hash_scan_next (&ms)) != NULL) {
|
||||||
mod_ptr = hnode_get (mn);
|
mod_ptr = hnode_get (mn);
|
||||||
unload_module(mod_ptr->info->module_name,
|
unload_module (mod_ptr->info->module_name, finduser (s_Services));
|
||||||
finduser(s_Services));
|
|
||||||
}
|
}
|
||||||
sleep (5);
|
sleep (5);
|
||||||
do_exit (2);
|
do_exit (2);
|
||||||
|
@ -557,7 +513,8 @@ void start()
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void login()
|
void
|
||||||
|
login ()
|
||||||
{
|
{
|
||||||
strcpy (segv_location, "login");
|
strcpy (segv_location, "login");
|
||||||
slogin_cmd (me.name, 1, me.infoline, me.pass);
|
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
|
* @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;
|
void *buf;
|
||||||
|
|
||||||
strcpy (segv_location, "smalloc");
|
strcpy (segv_location, "smalloc");
|
||||||
if (!size) {
|
if (!size) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "smalloc(): illegal attempt to allocate 0 bytes!");
|
||||||
"smalloc(): illegal attempt to allocate 0 bytes!");
|
|
||||||
size = 1;
|
size = 1;
|
||||||
}
|
}
|
||||||
buf = malloc (size);
|
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);
|
char *t = strdup (s);
|
||||||
if (!t) {
|
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;
|
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;
|
char *t;
|
||||||
t = malloc (strlen (s));
|
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) {
|
if (*C == 0) {
|
||||||
*List = calloc (sizeof (char *) * 8, 1);
|
*List = calloc (sizeof (char *) * 8, 1);
|
||||||
|
@ -695,7 +656,8 @@ void AddStringToList(char ***List, char S[], int *C)
|
||||||
* @returns Nothing
|
* @returns Nothing
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void FreeList(char **List, int C)
|
void
|
||||||
|
FreeList (char **List, int C)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i == C; 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.
|
* @parm segv 1 = we are exiting because of a segv fault, 0, we are not.
|
||||||
* if 1, we don't prompt to save data
|
* if 1, we don't prompt to save data
|
||||||
*/
|
*/
|
||||||
void do_exit(int segv)
|
void
|
||||||
|
do_exit (int segv)
|
||||||
{
|
{
|
||||||
switch (segv) {
|
switch (segv) {
|
||||||
case 0:
|
case 0:
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Normal shut down SubSystems");
|
||||||
"Normal shut down SubSystems");
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Restarting NeoStats SubSystems");
|
||||||
"Restarting NeoStats SubSystems");
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Shutting Down SubSystems without saving data due to core");
|
||||||
"Shutting Down SubSystems without saving data due to core");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
close_logs ();
|
close_logs ();
|
||||||
|
|
386
mystic.c
386
mystic.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -253,48 +253,52 @@ Oper_Modes usr_mds[] = {
|
||||||
{0, 0, 0}
|
{0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
void init_ircd()
|
void
|
||||||
|
init_ircd ()
|
||||||
{
|
{
|
||||||
/* count the number of commands */
|
/* count the number of commands */
|
||||||
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
|
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,
|
sts (":%s %s %s %d :%s", me.name, (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
||||||
(me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slogin_cmd(const char *name, const int numeric, const char *infoline,
|
int
|
||||||
const char *pass)
|
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", (me.token ? TOK_PASS : MSG_PASS), pass);
|
||||||
sts("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name,
|
sts ("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
|
||||||
numeric, infoline);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssquit_cmd(const char *server)
|
int
|
||||||
|
ssquit_cmd (const char *server)
|
||||||
{
|
{
|
||||||
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
|
sts ("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sprotocol_cmd(const char *option)
|
int
|
||||||
|
sprotocol_cmd (const char *option)
|
||||||
{
|
{
|
||||||
sts ("%s %s", (me.token ? TOK_PROTOCTL : MSG_PROTOCTL), option);
|
sts ("%s %s", (me.token ? TOK_PROTOCTL : MSG_PROTOCTL), option);
|
||||||
return 1;
|
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);
|
sts (":%s %s :%s", who, (me.token ? TOK_QUIT : MSG_QUIT), quitmsg);
|
||||||
DelUser (who);
|
DelUser (who);
|
||||||
return 1;
|
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);
|
sts (":%s %s %s", who, (me.token ? TOK_PART : MSG_PART), chan);
|
||||||
part_chan (finduser (who), (char *) 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);
|
sts (":%s %s %s", who, (me.token ? TOK_JOIN : MSG_JOIN), chan);
|
||||||
join_chan (finduser (who), (char *) chan);
|
join_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int schmode_cmd(const char *who, const char *chan, const char *mode,
|
int
|
||||||
const char *args)
|
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac;
|
int ac;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
|
||||||
sts(":%s %s %s %s %s %lu", me.name,
|
sts (":%s %s %s %s %s %lu", me.name, (me.token ? TOK_MODE : MSG_MODE), chan, mode, args, time (NULL));
|
||||||
(me.token ? TOK_MODE : MSG_MODE), chan, mode, args,
|
|
||||||
time(NULL));
|
|
||||||
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
||||||
ac = split_buf (tmp, &av, 0);
|
ac = split_buf (tmp, &av, 0);
|
||||||
ChanMode ("", av, ac);
|
ChanMode ("", av, ac);
|
||||||
|
@ -326,23 +329,23 @@ int schmode_cmd(const char *who, const char *chan, const char *mode,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
int
|
||||||
const char *realname)
|
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),
|
sts ("%s %s 1 %lu %s %s %s 0 :%s", (me.token ? TOK_NICK : MSG_NICK), nick, time (NULL), ident, host, me.name, realname);
|
||||||
nick, time(NULL), ident, host, me.name, realname);
|
|
||||||
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
||||||
return 1;
|
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,
|
sts (":%s %s %s :%s", from, (me.token ? TOK_PING : MSG_PING), reply, to);
|
||||||
to);
|
|
||||||
return 1;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -356,14 +359,13 @@ int sumode_cmd(const char *who, const char *target, long mode)
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts(":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target,
|
sts (":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target, newmode);
|
||||||
newmode);
|
|
||||||
UserMode (target, newmode, 0);
|
UserMode (target, newmode, 0);
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -374,128 +376,124 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spong_cmd(const char *reply)
|
int
|
||||||
|
spong_cmd (const char *reply)
|
||||||
{
|
{
|
||||||
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
|
sts ("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int snetinfo_cmd()
|
int
|
||||||
|
snetinfo_cmd ()
|
||||||
{
|
{
|
||||||
sts(":%s %s 0 %d %d %s 0 0 0 :%s", me.name, MSG_SNETINFO,
|
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);
|
||||||
time(NULL), ircd_srv.uprot, ircd_srv.cloak, me.netname);
|
|
||||||
return 1;
|
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,
|
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);
|
||||||
ircd_srv.uprot, ircd_srv.nicklg, ircd_srv.modex, ircd_srv.gc,
|
|
||||||
me.netname);
|
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL),
|
sts (":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL), target, buf);
|
||||||
target, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
DelUser (target);
|
DelUser (target);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvskill_cmd(const char *who, const char *reason, ...)
|
int
|
||||||
|
ssvskill_cmd (const char *who, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", me.name, MSG_SVSKILL,
|
sts (":%s %s %s :%s", me.name, MSG_SVSKILL, who, buf);
|
||||||
who, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
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,
|
notice (s_Services, "Warning, Module %s tried to SMO, which is not supported in Mystic", segvinmodule);
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Mystic",
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Mystic", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Mystic",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
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);
|
Change_User (finduser (oldnick), newnick);
|
||||||
sts(":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK),
|
sts (":%s %s %s %d", oldnick, (me.token ? TOK_NICK : MSG_NICK), newnick, time (NULL));
|
||||||
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));
|
|
||||||
return 1;
|
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,
|
notice (s_Services, "Warning Module %s tried to SWHOIS, which is not supported in Mystic", segvinmodule);
|
||||||
chan);
|
nlog (LOG_NOTICE, LOG_CORE, "Warning. Module %s tried to SWHOIS, which is not supported in Mystic", segvinmodule);
|
||||||
return 1;
|
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,
|
sts ("%s %s %s :%d", (me.token ? TOK_SVSNICK : MSG_SVSNICK), target, newnick, time (NULL));
|
||||||
chan);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int skick_cmd(const char *who, const char *target, const char *chan,
|
int
|
||||||
const char *reason)
|
ssvsjoin_cmd (const char *target, const char *chan)
|
||||||
{
|
{
|
||||||
sts(":%s %s %s %s :%s", who, (me.token ? TOK_KICK : MSG_KICK),
|
sts ("%s %s %s", (me.token ? TOK_SVSJOIN : MSG_SVSJOIN), target, chan);
|
||||||
chan, target, (reason ? reason : "No Reason Given"));
|
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);
|
part_chan (finduser (target), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int swallops_cmd(const char *who, const char *msg, ...)
|
|
||||||
|
int
|
||||||
|
swallops_cmd (const char *who, const char *msg, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, msg);
|
va_start (ap, msg);
|
||||||
vsnprintf (buf, 512, msg, ap);
|
vsnprintf (buf, 512, msg, ap);
|
||||||
sts(":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS),
|
sts (":%s %s :%s", who, (me.token ? TOK_WALLOPS : MSG_WALLOPS), buf);
|
||||||
buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvshost_cmd(const char *who, const char *vhost)
|
int
|
||||||
|
ssvshost_cmd (const char *who, const char *vhost)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (who);
|
u = finduser (who);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Can't Find user %s for ssvshost_cmd", who);
|
||||||
"Can't Find user %s for ssvshost_cmd", who);
|
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
strncpy (u->vhost, vhost, MAXHOST);
|
strncpy (u->vhost, vhost, MAXHOST);
|
||||||
|
@ -503,8 +501,8 @@ int ssvshost_cmd(const char *who, const char *vhost)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int sakill_cmd(const char *host, const char *ident, const char *setby,
|
int
|
||||||
const int length, const char *reason, ...)
|
sakill_cmd (const char *host, const char *ident, const char *setby, const int length, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -515,7 +513,8 @@ int sakill_cmd(const char *host, const char *ident, const char *setby,
|
||||||
return 1;
|
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 */
|
/* ultimate2 needs a oper to remove */
|
||||||
sts (":%s %s :%s@%s", s_Services, MSG_REMGLINE, host, ident);
|
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));
|
sts ("SVINFO 5 3 0 :%d", time (NULL));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int sburst_cmd(int b)
|
|
||||||
|
int
|
||||||
|
sburst_cmd (int b)
|
||||||
{
|
{
|
||||||
if (b == 0) {
|
if (b == 0) {
|
||||||
sts ("BURST 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;
|
va_list ap;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
@ -550,14 +553,15 @@ void chanalert(char *who, char *buf, ...)
|
||||||
vsnprintf (tmp, 512, buf, ap);
|
vsnprintf (tmp, 512, buf, ap);
|
||||||
|
|
||||||
if (me.onchan) {
|
if (me.onchan) {
|
||||||
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
|
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
|
||||||
tmp);
|
|
||||||
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
||||||
sts ("%s", out);
|
sts ("%s", out);
|
||||||
}
|
}
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void prefmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
prefmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
@ -565,9 +569,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (me.want_privmsg) {
|
if (me.want_privmsg) {
|
||||||
|
@ -578,15 +580,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
sts ("%s", buf);
|
sts ("%s", buf);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void privmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
privmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -597,15 +599,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void notice(char *to, const char *from, char *fmt, ...)
|
void
|
||||||
|
notice (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
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) {
|
while (*text) {
|
||||||
if (**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;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
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];
|
char nick[MAXNICK];
|
||||||
long mode = 0;
|
long mode = 0;
|
||||||
|
@ -673,22 +677,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
goto nomodes;
|
goto nomodes;
|
||||||
}
|
}
|
||||||
while (*modes) {
|
while (*modes) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
|
|
||||||
i++) {
|
|
||||||
if (*modes == cFlagTab[i].flag) {
|
if (*modes == cFlagTab[i].flag) {
|
||||||
if (cFlagTab[i].parameters) {
|
if (cFlagTab[i].parameters) {
|
||||||
m = smalloc (sizeof (ModesParm));
|
m = smalloc (sizeof (ModesParm));
|
||||||
m->mode = cFlagTab[i].mode;
|
m->mode = cFlagTab[i].mode;
|
||||||
strncpy(m->param, argv[j],
|
strncpy (m->param, argv[j], PARAMSIZE);
|
||||||
PARAMSIZE);
|
|
||||||
mn = lnode_create (m);
|
mn = lnode_create (m);
|
||||||
if (!list_isfull (tl)) {
|
if (!list_isfull (tl)) {
|
||||||
list_append (tl, mn);
|
list_append (tl, mn);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_CRITICAL,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
||||||
LOG_CORE,
|
|
||||||
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
|
@ -704,10 +703,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
modes = argv[j];
|
modes = argv[j];
|
||||||
mode = 0;
|
mode = 0;
|
||||||
while (ok == 1) {
|
while (ok == 1) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
|
||||||
1); i++) {
|
|
||||||
if (cFlagTab[i].sjoin != 0) {
|
if (cFlagTab[i].sjoin != 0) {
|
||||||
if (*modes == cFlagTab[i].sjoin) {
|
if (*modes == cFlagTab[i].sjoin) {
|
||||||
mode |= cFlagTab[i].mode;
|
mode |= cFlagTab[i].mode;
|
||||||
|
@ -720,8 +716,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
join_chan (finduser (nick), argv[1]);
|
join_chan (finduser (nick), argv[1]);
|
||||||
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
|
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
|
||||||
mode);
|
|
||||||
j++;
|
j++;
|
||||||
ok = 1;
|
ok = 1;
|
||||||
}
|
}
|
||||||
|
@ -732,15 +727,15 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
list_transfer (c->modeparms, tl, list_first (tl));
|
list_transfer (c->modeparms, tl, list_first (tl));
|
||||||
} else {
|
} else {
|
||||||
/* eeeeeeek, list is full! */
|
/* eeeeeeek, list is full! */
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
||||||
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list_destroy (tl);
|
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 (argc > 0) {
|
||||||
if (ircd_srv.burst == 1) {
|
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;
|
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;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User! (%s)", origin);
|
||||||
"Recieved a Message from a Unknown User! (%s)",
|
|
||||||
origin);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ShowStats (argv[0], u);
|
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,
|
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
|
||||||
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);
|
ShowMOTD (origin);
|
||||||
}
|
}
|
||||||
void Usr_ShowADMIN(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_ShowADMIN (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ShowADMIN (origin);
|
ShowADMIN (origin);
|
||||||
}
|
}
|
||||||
void Usr_Showcredits(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Showcredits (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Showcredits (origin);
|
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]));
|
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]);
|
DelServer (argv[0]);
|
||||||
}
|
}
|
||||||
void Usr_DelUser(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_DelUser (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
DelUser (origin);
|
DelUser (origin);
|
||||||
}
|
}
|
||||||
void Usr_Smode(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Smode (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
if (!strchr (argv[0], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
/* its user svsmode change */
|
/* its user svsmode change */
|
||||||
|
@ -818,7 +827,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
|
||||||
ChanMode (origin, argv, 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], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", 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);
|
ChanMode (origin, argv, argc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Kill(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kill (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
KillUser (argv[0]);
|
KillUser (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
|
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Vhost(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Vhost (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
|
@ -846,18 +857,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
|
||||||
strncpy (u->vhost, argv[0], MAXHOST);
|
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;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
dopong (s);
|
dopong (s);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Received PONG from unknown server: %s", argv[0]);
|
||||||
"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;
|
char *Buf;
|
||||||
User *u = finduser (origin);
|
User *u = finduser (origin);
|
||||||
|
@ -872,18 +884,19 @@ void Usr_Away(char *origin, char **argv, int argc)
|
||||||
free (Buf);
|
free (Buf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
|
||||||
"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);
|
User *u = finduser (origin);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[0]);
|
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;
|
char *buf;
|
||||||
Chans *c;
|
Chans *c;
|
||||||
|
@ -893,13 +906,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
|
||||||
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
||||||
free (buf);
|
free (buf);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
|
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Usr_Kick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u, *k;
|
User *u, *k;
|
||||||
u = finduser (argv[1]);
|
u = finduser (argv[1]);
|
||||||
|
@ -907,12 +920,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
|
||||||
if ((u) && (k)) {
|
if ((u) && (k)) {
|
||||||
kick_chan (u, argv[0], k);
|
kick_chan (u, argv[0], k);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
|
||||||
"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;
|
char *s, *t;
|
||||||
t = argv[0];
|
t = argv[0];
|
||||||
|
@ -923,16 +935,20 @@ void Usr_Join(char *origin, char **argv, int argc)
|
||||||
join_chan (finduser (origin), s);
|
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]);
|
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]);
|
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.uprot = atoi (argv[0]);
|
||||||
ircd_srv.nicklg = atoi (argv[1]);
|
ircd_srv.nicklg = atoi (argv[1]);
|
||||||
|
@ -942,12 +958,14 @@ void Srv_Vctrl(char *origin, char **argv, int argc)
|
||||||
vctrl_cmd ();
|
vctrl_cmd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Svinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Svinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ssvinfo_cmd ();
|
ssvinfo_cmd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Netinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Netinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
me.onchan = 1;
|
me.onchan = 1;
|
||||||
ircd_srv.uprot = atoi (argv[2]);
|
ircd_srv.uprot = atoi (argv[2]);
|
||||||
|
@ -967,10 +985,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
|
||||||
me.synced = 1;
|
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;
|
Server *s;
|
||||||
if (*origin == 0) {
|
if (*origin == 0) {
|
||||||
|
@ -981,27 +1001,28 @@ void Srv_Server(char *origin, char **argv, int argc)
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
me.s = s;
|
me.s = s;
|
||||||
}
|
}
|
||||||
void Srv_Squit(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Srv_Squit (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
DelServer (argv[0]);
|
DelServer (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
|
||||||
"Waring, Squit from Unknown Server %s", argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
|
/* 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;
|
char *realname;
|
||||||
#if MYSTIC
|
#if MYSTIC
|
||||||
AddUser(argv[0], argv[3], argv[4], argv[5], 0,
|
AddUser (argv[0], argv[3], argv[4], argv[5], 0, strtoul (argv[2], NULL, 10));
|
||||||
strtoul(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 7);
|
realname = joinbuf (argv, argc, 7);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (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;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[1]);
|
Change_User (u, argv[1]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for SVSNICK", argv[0]);
|
||||||
"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,
|
int
|
||||||
const char *host, const char *rname, long Umode)
|
SignOn_NewBot (const char *nick, const char *ident, const char *host, const char *rname, long Umode)
|
||||||
{
|
{
|
||||||
snewnick_cmd (nick, ident, host, rname);
|
snewnick_cmd (nick, ident, host, rname);
|
||||||
sumode_cmd (nick, nick, Umode);
|
sumode_cmd (nick, nick, Umode);
|
||||||
|
|
2
mystic.h
2
mystic.h
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
|
#ifndef MYSTIC_H
|
||||||
#define MYSTIC_H
|
#define MYSTIC_H
|
||||||
|
|
339
neoircd.c
339
neoircd.c
|
@ -18,7 +18,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -178,28 +178,31 @@ Oper_Modes usr_mds[] = {
|
||||||
{0, 0, 0}
|
{0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
void init_ircd()
|
void
|
||||||
|
init_ircd ()
|
||||||
{
|
{
|
||||||
/* count the number of commands */
|
/* count the number of commands */
|
||||||
ircd_srv.cmdcount = ((sizeof (cmd_list) / sizeof (cmd_list[0])) - 1);
|
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);
|
sts (":%s %s", server, MSG_EOB);
|
||||||
return 1;
|
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);
|
sts (":%s %s %s 2 0 :%s", me.name, MSG_SERVER, name, infoline);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slogin_cmd(const char *name, const int numeric, const char *infoline,
|
int
|
||||||
const char *pass)
|
slogin_cmd (const char *name, const int numeric, const char *infoline, const char *pass)
|
||||||
{
|
{
|
||||||
sts ("%s %s :TS", MSG_PASS, pass);
|
sts ("%s %s :TS", MSG_PASS, pass);
|
||||||
sts ("CAPAB :TS EOB HUB PARA");
|
sts ("CAPAB :TS EOB HUB PARA");
|
||||||
|
@ -207,56 +210,60 @@ int slogin_cmd(const char *name, const int numeric, const char *infoline,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssquit_cmd(const char *server)
|
int
|
||||||
|
ssquit_cmd (const char *server)
|
||||||
{
|
{
|
||||||
sts ("%s %s", MSG_SQUIT, server);
|
sts ("%s %s", MSG_SQUIT, server);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sprotocol_cmd(const char *option)
|
int
|
||||||
|
sprotocol_cmd (const char *option)
|
||||||
{
|
{
|
||||||
return 1;
|
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);
|
sts (":%s %s :%s", who, MSG_QUIT, quitmsg);
|
||||||
DelUser (who);
|
DelUser (who);
|
||||||
return 1;
|
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);
|
sts (":%s %s %s", who, MSG_PART, chan);
|
||||||
part_chan (finduser (who), (char *) chan);
|
part_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
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,
|
sts (":%s %s %d %s + :%s", me.name, MSG_SJOIN, time (NULL), chan, who);
|
||||||
who);
|
|
||||||
join_chan (finduser (who), (char *) chan);
|
join_chan (finduser (who), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int schmode_cmd(const char *who, const char *chan, const char *mode,
|
int
|
||||||
const char *args)
|
schmode_cmd (const char *who, const char *chan, const char *mode, const char *args)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac;
|
int ac;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
|
||||||
sts(":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args,
|
sts (":%s %s %s %s %s %lu", who, MSG_MODE, chan, mode, args, time (NULL));
|
||||||
time(NULL));
|
|
||||||
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
snprintf (tmp, 512, "%s %s %s", chan, mode, args);
|
||||||
ac = split_buf (tmp, &av, 0);
|
ac = split_buf (tmp, &av, 0);
|
||||||
ChanMode ("", av, ac);
|
ChanMode ("", av, ac);
|
||||||
free (av);
|
free (av);
|
||||||
return 1;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -270,20 +277,21 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
||||||
|
|
||||||
}
|
}
|
||||||
newmode[j] = '\0';
|
newmode[j] = '\0';
|
||||||
sts("%s %s 1 %lu %s %s %s * %s 0 :%s", MSG_NICK, nick, time(NULL),
|
sts ("%s %s 1 %lu %s %s %s * %s 0 :%s", MSG_NICK, nick, time (NULL), newmode, ident, host, me.name, realname);
|
||||||
newmode, ident, host, me.name, realname);
|
|
||||||
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
AddUser (nick, ident, host, me.name, 0, time (NULL));
|
||||||
UserMode (nick, newmode, 0);
|
UserMode (nick, newmode, 0);
|
||||||
return 1;
|
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;
|
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;
|
int i, j;
|
||||||
char newmode[20];
|
char newmode[20];
|
||||||
|
@ -302,8 +310,8 @@ int sumode_cmd(const char *who, const char *target, long mode)
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -314,15 +322,16 @@ int snumeric_cmd(const int numeric, const char *target, const char *data,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spong_cmd(const char *reply)
|
int
|
||||||
|
spong_cmd (const char *reply)
|
||||||
{
|
{
|
||||||
sts ("%s %s", MSG_PONG, reply);
|
sts ("%s %s", MSG_PONG, reply);
|
||||||
return 1;
|
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;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -334,14 +343,14 @@ int skill_cmd(const char *from, const char *target, const char *reason,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvskill_cmd(const char *who, const char *reason, ...)
|
int
|
||||||
|
ssvskill_cmd (const char *who, const char *reason, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s %s %s :%s", me.name, MSG_KILL,
|
sts (":%s %s %s :%s", me.name, MSG_KILL, who, buf);
|
||||||
who, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
/* neoircd doesn't have svskill, so this is handled just like a normal kill */
|
/* neoircd doesn't have svskill, so this is handled just like a normal kill */
|
||||||
DelUser (who);
|
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,
|
notice (s_Services, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
|
nlog (LOG_NORMAL, LOG_CORE, "Warning, Module %s tried to SMO, which is not supported in Hybrid", segvinmodule);
|
||||||
segvinmodule);
|
|
||||||
nlog(LOG_NORMAL, LOG_CORE,
|
|
||||||
"Warning, Module %s tried to SMO, which is not supported in Hybrid",
|
|
||||||
segvinmodule);
|
|
||||||
return 1;
|
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);
|
Change_User (finduser (oldnick), newnick);
|
||||||
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
|
sts (":%s %s %s %d", oldnick, MSG_NICK, newnick, time (NULL));
|
||||||
return 1;
|
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);
|
sts (":%s SWHOIS %s :%s", me.name, target, swhois);
|
||||||
return 1;
|
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,
|
sts (":%s SVSNICK %s %s :%lu", me.name, target, newnick, time (NULL));
|
||||||
time(NULL));
|
|
||||||
return 1;
|
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);
|
sts (":%s SVSJOIN %s %s", me.name, target, chan);
|
||||||
return 1;
|
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);
|
sts (":%s SVSPART %s %s", me.name, target, chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int skick_cmd(const char *who, const char *target, const char *chan,
|
int
|
||||||
const char *reason)
|
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,
|
sts (":%s %s %s %s :%s", who, MSG_KICK, chan, target, (reason ? reason : "No Reason Given"));
|
||||||
(reason ? reason : "No Reason Given"));
|
|
||||||
part_chan (finduser (target), (char *) chan);
|
part_chan (finduser (target), (char *) chan);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int swallops_cmd(const char *who, const char *msg, ...)
|
|
||||||
|
int
|
||||||
|
swallops_cmd (const char *who, const char *msg, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -409,7 +422,8 @@ int swallops_cmd(const char *who, const char *msg, ...)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvshost_cmd(const char *who, const char *vhost)
|
int
|
||||||
|
ssvshost_cmd (const char *who, const char *vhost)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (who);
|
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);
|
sts (":%s SVSHOST %s :%s", me.name, who, vhost);
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Can't Find user %s for ssvshost_cmd", who);
|
||||||
"Can't Find user %s for ssvshost_cmd", who);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ssvinfo_cmd()
|
int
|
||||||
|
ssvinfo_cmd ()
|
||||||
{
|
{
|
||||||
sts ("SVINFO 5 3 0 :%d", time (NULL));
|
sts ("SVINFO 5 3 0 :%d", time (NULL));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int sburst_cmd(int b)
|
|
||||||
|
int
|
||||||
|
sburst_cmd (int b)
|
||||||
{
|
{
|
||||||
if (b == 0) {
|
if (b == 0) {
|
||||||
sts ("BURST 0");
|
sts ("BURST 0");
|
||||||
|
@ -440,8 +456,8 @@ int sburst_cmd(int b)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sakill_cmd(const char *host, const char *ident, const char *setby,
|
int
|
||||||
const int length, const char *reason, ...)
|
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! */
|
/* there isn't a akill on Hybrid, so we send a kline to all servers! */
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -454,20 +470,21 @@ int sakill_cmd(const char *host, const char *ident, const char *setby,
|
||||||
char buf[512];
|
char buf[512];
|
||||||
va_start (ap, reason);
|
va_start (ap, reason);
|
||||||
vsnprintf (buf, 512, reason, ap);
|
vsnprintf (buf, 512, reason, ap);
|
||||||
sts(":%s GLINE %s %s %d :%s", me.name, ident, host,
|
sts (":%s GLINE %s %s %d :%s", me.name, ident, host, time (NULL) + length, buf);
|
||||||
time(NULL) + length, buf);
|
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
return 1;
|
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);
|
sts (":%s UNGLINE %s@%s", me.name, ident, host);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void chanalert(char *who, char *buf, ...)
|
void
|
||||||
|
chanalert (char *who, char *buf, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
@ -476,14 +493,15 @@ void chanalert(char *who, char *buf, ...)
|
||||||
vsnprintf (tmp, 512, buf, ap);
|
vsnprintf (tmp, 512, buf, ap);
|
||||||
|
|
||||||
if (me.onchan) {
|
if (me.onchan) {
|
||||||
snprintf(out, 512, ":%s PRIVMSG %s :%s", who, me.chan,
|
snprintf (out, 512, ":%s PRIVMSG %s :%s", who, me.chan, tmp);
|
||||||
tmp);
|
|
||||||
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
nlog (LOG_DEBUG3, LOG_CORE, "SENT: %s", out);
|
||||||
sts ("%s", out);
|
sts ("%s", out);
|
||||||
}
|
}
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void prefmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
prefmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
@ -491,9 +509,7 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
vsnprintf (buf2, sizeof (buf2), fmt, ap);
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (me.want_privmsg) {
|
if (me.want_privmsg) {
|
||||||
|
@ -504,15 +520,15 @@ void prefmsg(char *to, const char *from, char *fmt, ...)
|
||||||
sts ("%s", buf);
|
sts ("%s", buf);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
void privmsg(char *to, const char *from, char *fmt, ...)
|
|
||||||
|
void
|
||||||
|
privmsg (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -523,15 +539,14 @@ void privmsg(char *to, const char *from, char *fmt, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void notice(char *to, const char *from, char *fmt, ...)
|
void
|
||||||
|
notice (char *to, const char *from, char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
char buf[512], buf2[512];
|
||||||
|
|
||||||
if (findbot (to)) {
|
if (findbot (to)) {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "Message From our Bot(%s) to Our Bot(%s), Dropping Message", from, to);
|
||||||
"Message From our Bot(%s) to Our Bot(%s), Dropping Message",
|
|
||||||
from, to);
|
|
||||||
return;
|
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) {
|
while (*text) {
|
||||||
if (**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;
|
va_list ap;
|
||||||
char buf[512], buf2[512];
|
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*/
|
/* 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];
|
char nick[MAXNICK];
|
||||||
long mode = 0;
|
long mode = 0;
|
||||||
|
@ -607,22 +625,17 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
goto nomodes;
|
goto nomodes;
|
||||||
}
|
}
|
||||||
while (*modes) {
|
while (*modes) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
|
|
||||||
i++) {
|
|
||||||
if (*modes == cFlagTab[i].flag) {
|
if (*modes == cFlagTab[i].flag) {
|
||||||
if (cFlagTab[i].parameters) {
|
if (cFlagTab[i].parameters) {
|
||||||
m = smalloc (sizeof (ModesParm));
|
m = smalloc (sizeof (ModesParm));
|
||||||
m->mode = cFlagTab[i].mode;
|
m->mode = cFlagTab[i].mode;
|
||||||
strncpy(m->param, argv[j],
|
strncpy (m->param, argv[j], PARAMSIZE);
|
||||||
PARAMSIZE);
|
|
||||||
mn = lnode_create (m);
|
mn = lnode_create (m);
|
||||||
if (!list_isfull (tl)) {
|
if (!list_isfull (tl)) {
|
||||||
list_append (tl, mn);
|
list_append (tl, mn);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_CRITICAL,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
||||||
LOG_CORE,
|
|
||||||
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
|
@ -638,10 +651,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
modes = argv[j];
|
modes = argv[j];
|
||||||
mode = 0;
|
mode = 0;
|
||||||
while (ok == 1) {
|
while (ok == 1) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (cFlagTab) / sizeof (cFlagTab[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
|
||||||
1); i++) {
|
|
||||||
if (cFlagTab[i].sjoin != 0) {
|
if (cFlagTab[i].sjoin != 0) {
|
||||||
if (*modes == cFlagTab[i].sjoin) {
|
if (*modes == cFlagTab[i].sjoin) {
|
||||||
mode |= cFlagTab[i].mode;
|
mode |= cFlagTab[i].mode;
|
||||||
|
@ -654,8 +664,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
join_chan (finduser (nick), argv[1]);
|
join_chan (finduser (nick), argv[1]);
|
||||||
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
|
ChangeChanUserMode (findchan (argv[1]), finduser (nick), 1, mode);
|
||||||
mode);
|
|
||||||
j++;
|
j++;
|
||||||
ok = 1;
|
ok = 1;
|
||||||
}
|
}
|
||||||
|
@ -666,8 +675,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||||
list_transfer (c->modeparms, tl, list_first (tl));
|
list_transfer (c->modeparms, tl, list_first (tl));
|
||||||
} else {
|
} else {
|
||||||
/* eeeeeeek, list is full! */
|
/* eeeeeeek, list is full! */
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
||||||
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
|
||||||
do_exit (0);
|
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 (argc > 0) {
|
||||||
if (ircd_srv.burst == 1) {
|
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;
|
int i;
|
||||||
for (i = 0; i < argc; 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;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Recieved a Message from a Unknown User!");
|
||||||
"Recieved a Message from a Unknown User!");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ShowStats (argv[0], u);
|
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,
|
snumeric_cmd (351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR, REV, version, me.name, version_date, version_time);
|
||||||
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);
|
ShowMOTD (origin);
|
||||||
}
|
}
|
||||||
void Usr_ShowADMIN(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_ShowADMIN (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ShowADMIN (origin);
|
ShowADMIN (origin);
|
||||||
}
|
}
|
||||||
void Usr_Showcredits(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Showcredits (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Showcredits (origin);
|
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]));
|
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]);
|
DelServer (argv[0]);
|
||||||
}
|
}
|
||||||
void Usr_DelUser(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_DelUser (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
DelUser (origin);
|
DelUser (origin);
|
||||||
}
|
}
|
||||||
void Usr_Smode(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Usr_Smode (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
if (!strchr (argv[0], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
/* its user svsmode change */
|
/* its user svsmode change */
|
||||||
|
@ -754,7 +778,8 @@ void Usr_Smode(char *origin, char **argv, int argc)
|
||||||
ChanMode (origin, argv, 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], '#')) {
|
if (!strchr (argv[0], '#')) {
|
||||||
nlog (LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", 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);
|
ChanMode (origin, argv, argc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Kill(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kill (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
KillUser (argv[0]);
|
KillUser (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Can't find user %s for Kill",
|
nlog (LOG_WARNING, LOG_CORE, "Can't find user %s for Kill", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Usr_Vhost(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Vhost (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
u = finduser (origin);
|
u = finduser (origin);
|
||||||
|
@ -782,18 +808,19 @@ void Usr_Vhost(char *origin, char **argv, int argc)
|
||||||
strncpy (u->vhost, argv[0], MAXHOST);
|
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;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
dopong (s);
|
dopong (s);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Recieved PONG from unknown Server %s", argv[0]);
|
||||||
"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;
|
char *buf;
|
||||||
User *u;
|
User *u;
|
||||||
|
@ -809,18 +836,19 @@ void Usr_Away(char *origin, char **argv, int argc)
|
||||||
free (buf);
|
free (buf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_NOTICE, LOG_CORE,
|
nlog (LOG_NOTICE, LOG_CORE, "Warning, Unable to find User %s for Away", origin);
|
||||||
"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);
|
User *u = finduser (origin);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[0]);
|
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;
|
char *buf;
|
||||||
Chans *c;
|
Chans *c;
|
||||||
|
@ -830,13 +858,13 @@ void Usr_Topic(char *origin, char **argv, int argc)
|
||||||
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
Change_Topic (argv[1], c, atoi (argv[2]), buf);
|
||||||
free (buf);
|
free (buf);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
|
nlog (LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s", argv[0]);
|
||||||
argv[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Usr_Kick(char *origin, char **argv, int argc)
|
void
|
||||||
|
Usr_Kick (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
User *u, *k;
|
User *u, *k;
|
||||||
u = finduser (argv[1]);
|
u = finduser (argv[1]);
|
||||||
|
@ -844,12 +872,11 @@ void Usr_Kick(char *origin, char **argv, int argc)
|
||||||
if (u) {
|
if (u) {
|
||||||
kick_chan (u, argv[0], k);
|
kick_chan (u, argv[0], k);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
|
||||||
"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;
|
char *s, *t;
|
||||||
t = argv[0];
|
t = argv[0];
|
||||||
|
@ -860,22 +887,27 @@ void Usr_Join(char *origin, char **argv, int argc)
|
||||||
join_chan (finduser (origin), s);
|
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]);
|
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]);
|
spong_cmd (argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Srv_Svinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Svinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
ssvinfo_cmd ();
|
ssvinfo_cmd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Srv_Netinfo(char *origin, char **argv, int argc)
|
void
|
||||||
|
Srv_Netinfo (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
me.onchan = 1;
|
me.onchan = 1;
|
||||||
ircd_srv.uprot = atoi (argv[2]);
|
ircd_srv.uprot = atoi (argv[2]);
|
||||||
|
@ -890,10 +922,12 @@ void Srv_Netinfo(char *origin, char **argv, int argc)
|
||||||
me.synced = 1;
|
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;
|
Server *s;
|
||||||
if (*origin == 0) {
|
if (*origin == 0) {
|
||||||
|
@ -904,26 +938,27 @@ void Srv_Server(char *origin, char **argv, int argc)
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
me.s = s;
|
me.s = s;
|
||||||
}
|
}
|
||||||
void Srv_Squit(char *origin, char **argv, int argc)
|
|
||||||
|
void
|
||||||
|
Srv_Squit (char *origin, char **argv, int argc)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
s = findserver (argv[0]);
|
s = findserver (argv[0]);
|
||||||
if (s) {
|
if (s) {
|
||||||
DelServer (argv[0]);
|
DelServer (argv[0]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Waring, Squit from Unknown Server %s", argv[0]);
|
||||||
"Waring, Squit from Unknown Server %s", argv[0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
|
/* 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;
|
char *realname;
|
||||||
User *u;
|
User *u;
|
||||||
AddUser(argv[0], argv[4], argv[5], argv[7], 0,
|
AddUser (argv[0], argv[4], argv[5], argv[7], 0, strtoul (argv[2], NULL, 10));
|
||||||
strtoul(argv[2], NULL, 10));
|
|
||||||
realname = joinbuf (argv, argc, 9);
|
realname = joinbuf (argv, argc, 9);
|
||||||
AddRealName (argv[0], realname);
|
AddRealName (argv[0], realname);
|
||||||
free (realname);
|
free (realname);
|
||||||
|
@ -935,28 +970,29 @@ void Srv_Nick(char *origin, char **argv, int argc)
|
||||||
UserMode (argv[0], argv[3], 0);
|
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;
|
User *u;
|
||||||
u = finduser (argv[0]);
|
u = finduser (argv[0]);
|
||||||
if (u) {
|
if (u) {
|
||||||
Change_User (u, argv[1]);
|
Change_User (u, argv[1]);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Can't Find User %s for SVSNICK", argv[0]);
|
||||||
"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,
|
nlog (LOG_WARNING, LOG_CORE, "Got Srv_Kill, but its un-handled (%s)", recbuf);
|
||||||
"Got Srv_Kill, but its un-handled (%s)", recbuf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Topic Bursting for NeoIRCD */
|
/* Topic Bursting for NeoIRCD */
|
||||||
/* R: :fish.dynam.ac TBURST 1034639893 #ircop 1034652780 ChanServ!services@neostats.net :NeoIRCd Test Oper Channel */
|
/* 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;
|
char *buf;
|
||||||
Chans *c;
|
Chans *c;
|
||||||
|
@ -966,15 +1002,14 @@ void Srv_Tburst(char *origin, char **argv, int argc)
|
||||||
Change_Topic (argv[3], c, atoi (argv[2]), buf);
|
Change_Topic (argv[3], c, atoi (argv[2]), buf);
|
||||||
free (buf);
|
free (buf);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "TopicBurst: Ehhh, Can't find Channel %s", argv[1]);
|
||||||
"TopicBurst: Ehhh, Can't find Channel %s", argv[1]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int SignOn_NewBot(const char *nick, const char *user,
|
extern int
|
||||||
const char *host, const char *rname, long Umode)
|
SignOn_NewBot (const char *nick, const char *user, const char *host, const char *rname, long Umode)
|
||||||
{
|
{
|
||||||
|
|
||||||
snewnick_cmd (nick, user, host, rname, Umode);
|
snewnick_cmd (nick, user, host, rname, Umode);
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,12 +22,13 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
|
||||||
void init_ns_help()
|
void
|
||||||
|
init_ns_help ()
|
||||||
{
|
{
|
||||||
if (usr_mds);
|
if (usr_mds);
|
||||||
}
|
}
|
||||||
|
|
38
server.c
38
server.c
|
@ -22,7 +22,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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>
|
#include <fnmatch.h>
|
||||||
|
@ -35,12 +35,14 @@ int fnmatch(const char *, const char *, int flags);
|
||||||
Server *new_server (char *);
|
Server *new_server (char *);
|
||||||
|
|
||||||
|
|
||||||
void init_server()
|
void
|
||||||
|
init_server ()
|
||||||
{
|
{
|
||||||
if (usr_mds);
|
if (usr_mds);
|
||||||
}
|
}
|
||||||
|
|
||||||
Server *new_server(char *name)
|
Server *
|
||||||
|
new_server (char *name)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
hnode_t *sn;
|
hnode_t *sn;
|
||||||
|
@ -54,15 +56,15 @@ Server *new_server(char *name)
|
||||||
nlog (LOG_WARNING, LOG_CORE, "Eeek, Hash is broken\n");
|
nlog (LOG_WARNING, LOG_CORE, "Eeek, Hash is broken\n");
|
||||||
}
|
}
|
||||||
if (hash_isfull (sh)) {
|
if (hash_isfull (sh)) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Eeek, Server Hash is full!\n");
|
||||||
"Eeek, Server Hash is full!\n");
|
|
||||||
} else {
|
} else {
|
||||||
hash_insert (sh, sn, s->name);
|
hash_insert (sh, sn, s->name);
|
||||||
}
|
}
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddServer(char *name, char *uplink, int hops)
|
void
|
||||||
|
AddServer (char *name, char *uplink, int hops)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
char **av;
|
char **av;
|
||||||
|
@ -88,7 +90,8 @@ void AddServer(char *name, char *uplink, int hops)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DelServer(char *name)
|
void
|
||||||
|
DelServer (char *name)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
hnode_t *sn;
|
hnode_t *sn;
|
||||||
|
@ -100,8 +103,7 @@ void DelServer(char *name)
|
||||||
}
|
}
|
||||||
sn = hash_lookup (sh, name);
|
sn = hash_lookup (sh, name);
|
||||||
if (!sn) {
|
if (!sn) {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "DelServer(): %s not found!",
|
nlog (LOG_DEBUG1, LOG_CORE, "DelServer(): %s not found!", name);
|
||||||
name);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
s = hnode_get (sn);
|
s = hnode_get (sn);
|
||||||
|
@ -116,7 +118,8 @@ void DelServer(char *name)
|
||||||
free (s);
|
free (s);
|
||||||
}
|
}
|
||||||
|
|
||||||
Server *findserver(const char *name)
|
Server *
|
||||||
|
findserver (const char *name)
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
hnode_t *sn;
|
hnode_t *sn;
|
||||||
|
@ -126,13 +129,13 @@ Server *findserver(const char *name)
|
||||||
s = hnode_get (sn);
|
s = hnode_get (sn);
|
||||||
return s;
|
return s;
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_DEBUG2, LOG_CORE, "FindServer(): %s not found!",
|
nlog (LOG_DEBUG2, LOG_CORE, "FindServer(): %s not found!", name);
|
||||||
name);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerDump()
|
void
|
||||||
|
ServerDump ()
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
hscan_t ss;
|
hscan_t ss;
|
||||||
|
@ -148,18 +151,19 @@ void ServerDump()
|
||||||
sendcoders ("End of Listing.");
|
sendcoders ("End of Listing.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void init_server_hash()
|
void
|
||||||
|
init_server_hash ()
|
||||||
{
|
{
|
||||||
sh = hash_create (S_TABLE_SIZE, 0, 0);
|
sh = hash_create (S_TABLE_SIZE, 0, 0);
|
||||||
if (!sh) {
|
if (!sh) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Create Server Hash Failed\n");
|
||||||
"Create Server Hash Failed\n");
|
|
||||||
do_exit (1);
|
do_exit (1);
|
||||||
}
|
}
|
||||||
AddServer (me.name, NULL, 0);
|
AddServer (me.name, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TimerPings()
|
void
|
||||||
|
TimerPings ()
|
||||||
{
|
{
|
||||||
Server *s;
|
Server *s;
|
||||||
hscan_t ss;
|
hscan_t ss;
|
||||||
|
|
276
services.c
276
services.c
|
@ -22,7 +22,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -47,7 +47,8 @@ static void ns_chan_dump(User *, char *);
|
||||||
static void ns_uptime (User *);
|
static void ns_uptime (User *);
|
||||||
static void ns_version (User *);
|
static void ns_version (User *);
|
||||||
|
|
||||||
void servicesbot(char *nick, char **av, int ac)
|
void
|
||||||
|
servicesbot (char *nick, char **av, int ac)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
int rval;
|
int rval;
|
||||||
|
@ -55,34 +56,27 @@ void servicesbot(char *nick, char **av, int ac)
|
||||||
|
|
||||||
u = finduser (nick);
|
u = finduser (nick);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "Unable to finduser %s (%s)",
|
nlog (LOG_WARNING, LOG_CORE, "Unable to finduser %s (%s)", nick, s_Services);
|
||||||
nick, s_Services);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
me.requests++;
|
me.requests++;
|
||||||
|
|
||||||
if (me.onlyopers && (UserLevel (u) < 40)) {
|
if (me.onlyopers && (UserLevel (u) < 40)) {
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "This service is only available to IRCops.");
|
||||||
"This service is only available to IRCops.");
|
chanalert (s_Services, "%s Requested %s, but he is Not a Operator!", u->nick, av[1]);
|
||||||
chanalert(s_Services,
|
|
||||||
"%s Requested %s, but he is Not a Operator!",
|
|
||||||
u->nick, av[1]);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!strcasecmp (av[1], "HELP")) {
|
if (!strcasecmp (av[1], "HELP")) {
|
||||||
if (ac > 2) {
|
if (ac > 2) {
|
||||||
chanalert(s_Services, "%s Requested %s Help on %s",
|
chanalert (s_Services, "%s Requested %s Help on %s", u->nick, s_Services, av[2]);
|
||||||
u->nick, s_Services, av[2]);
|
|
||||||
} else {
|
} else {
|
||||||
chanalert(s_Services, "%s Requested %s Help",
|
chanalert (s_Services, "%s Requested %s Help", u->nick, s_Services);
|
||||||
u->nick, s_Services);
|
|
||||||
}
|
}
|
||||||
if (ac < 3) {
|
if (ac < 3) {
|
||||||
privmsg_list (nick, s_Services, ns_help);
|
privmsg_list (nick, s_Services, ns_help);
|
||||||
if (UserLevel (u) >= 180)
|
if (UserLevel (u) >= 180)
|
||||||
privmsg_list(nick, s_Services,
|
privmsg_list (nick, s_Services, ns_myuser_help);
|
||||||
ns_myuser_help);
|
|
||||||
} else if (!strcasecmp (av[2], "VERSION"))
|
} else if (!strcasecmp (av[2], "VERSION"))
|
||||||
privmsg_list (nick, s_Services, ns_version_help);
|
privmsg_list (nick, s_Services, ns_version_help);
|
||||||
else if (!strcasecmp (av[2], "SHUTDOWN")
|
else if (!strcasecmp (av[2], "SHUTDOWN")
|
||||||
|
@ -123,177 +117,135 @@ void servicesbot(char *nick, char **av, int ac)
|
||||||
else if (!strcasecmp (av[2], "LEVEL"))
|
else if (!strcasecmp (av[2], "LEVEL"))
|
||||||
privmsg_list (nick, s_Services, ns_level_help);
|
privmsg_list (nick, s_Services, ns_level_help);
|
||||||
else
|
else
|
||||||
prefmsg(nick, s_Services,
|
prefmsg (nick, s_Services, "Unknown Help Topic: \2%s\2", av[2]);
|
||||||
"Unknown Help Topic: \2%s\2", av[2]);
|
|
||||||
} else if (!strcasecmp (av[1], "LEVEL")) {
|
} else if (!strcasecmp (av[1], "LEVEL")) {
|
||||||
prefmsg(nick, s_Services, "Your Level is %d",
|
prefmsg (nick, s_Services, "Your Level is %d", UserLevel (u));
|
||||||
UserLevel(u));
|
|
||||||
} else if (!strcasecmp (av[1], "LOAD")) {
|
} else if (!strcasecmp (av[1], "LOAD")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to LOAD, but is not at least a NetAdmin", nick);
|
||||||
"%s Tried to LOAD, but is not at least a NetAdmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ac <= 2) {
|
if (ac <= 2) {
|
||||||
prefmsg(nick, s_Services,
|
prefmsg (nick, s_Services, "Please Specify a Module");
|
||||||
"Please Specify a Module");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
rval = load_module (av[2], u);
|
rval = load_module (av[2], u);
|
||||||
if (!rval) {
|
if (!rval) {
|
||||||
chanalert(s_Services, "%s Loaded Module %s",
|
chanalert (s_Services, "%s Loaded Module %s", u->nick, av[2]);
|
||||||
u->nick, av[2]);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to Load Module %s, but Failed", u->nick, av[2]);
|
||||||
"%s Tried to Load Module %s, but Failed",
|
|
||||||
u->nick, av[2]);
|
|
||||||
}
|
}
|
||||||
} else if (!strcasecmp (av[1], "MODLIST")) {
|
} else if (!strcasecmp (av[1], "MODLIST")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to MODLIST, but is not a Techadmin", nick);
|
||||||
"%s Tried to MODLIST, but is not a Techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
list_module (u);
|
list_module (u);
|
||||||
} else if (!strcasecmp (av[1], "UNLOAD")) {
|
} else if (!strcasecmp (av[1], "UNLOAD")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to UNLOAD, but is not a Techadmin", nick);
|
||||||
"%s Tried to UNLOAD, but is not a Techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ac <= 2) {
|
if (ac <= 2) {
|
||||||
prefmsg(nick, s_Services,
|
prefmsg (nick, s_Services, " Please Specify a Module Name");
|
||||||
" Please Specify a Module Name");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
rval = unload_module (av[2], u);
|
rval = unload_module (av[2], u);
|
||||||
if (rval > 0) {
|
if (rval > 0) {
|
||||||
chanalert(s_Services, "%s Unloaded Module %s",
|
chanalert (s_Services, "%s Unloaded Module %s", u->nick, av[2]);
|
||||||
u->nick, av[2]);
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} else if (!strcasecmp (av[1], "MODBOTLIST")) {
|
} else if (!strcasecmp (av[1], "MODBOTLIST")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to MODBOTLIST, but is not a Techadmin", nick);
|
||||||
"%s Tried to MODBOTLIST, but is not a Techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
list_module_bots (u);
|
list_module_bots (u);
|
||||||
} else if (!strcasecmp (av[1], "MODSOCKLIST")) {
|
} else if (!strcasecmp (av[1], "MODSOCKLIST")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to MODSOCKLIST, but is not a Techadmin", nick);
|
||||||
"%s Tried to MODSOCKLIST, but is not a Techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
list_sockets (u);
|
list_sockets (u);
|
||||||
} else if (!strcasecmp (av[1], "MODTIMERLIST")) {
|
} else if (!strcasecmp (av[1], "MODTIMERLIST")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to MODTIMERLIST, but is not a Techadmin", nick);
|
||||||
"%s Tried to MODTIMERLIST, but is not a Techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
list_module_timer (u);
|
list_module_timer (u);
|
||||||
} else if (!strcasecmp (av[1], "MODBOTCHANLIST")) {
|
} else if (!strcasecmp (av[1], "MODBOTCHANLIST")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s tried to MODBOTCHANLIST, but is not a techadmin", nick);
|
||||||
"%s tried to MODBOTCHANLIST, but is not a techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
botchandump (u);
|
botchandump (u);
|
||||||
} else if (!strcasecmp (av[1], "INFO")) {
|
} else if (!strcasecmp (av[1], "INFO")) {
|
||||||
ns_uptime (u);
|
ns_uptime (u);
|
||||||
chanalert(s_Services, "%s Wanted to see %s's info",
|
chanalert (s_Services, "%s Wanted to see %s's info", u->nick, me.name);
|
||||||
u->nick, me.name);
|
|
||||||
} else if (!strcasecmp (av[1], "SHUTDOWN")) {
|
} else if (!strcasecmp (av[1], "SHUTDOWN")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to SHUTDOWN, but is not a Techadmin", nick);
|
||||||
"%s Tried to SHUTDOWN, but is not a Techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Wants me to Go to BED!!! Good Night!", u->nick);
|
||||||
"%s Wants me to Go to BED!!! Good Night!",
|
|
||||||
u->nick);
|
|
||||||
tmp = joinbuf (av, ac, 2);
|
tmp = joinbuf (av, ac, 2);
|
||||||
ns_shutdown (u, tmp);
|
ns_shutdown (u, tmp);
|
||||||
free (tmp);
|
free (tmp);
|
||||||
} else if (!strcasecmp (av[1], "VERSION")) {
|
} else if (!strcasecmp (av[1], "VERSION")) {
|
||||||
ns_version (u);
|
ns_version (u);
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Wanted to know our version number ", u->nick);
|
||||||
"%s Wanted to know our version number ",
|
|
||||||
u->nick);
|
|
||||||
} else if (!strcasecmp (av[1], "RELOAD")) {
|
} else if (!strcasecmp (av[1], "RELOAD")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to RELOAD, but is not a Techadmin", nick);
|
||||||
"%s Tried to RELOAD, but is not a Techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ac <= 2) {
|
if (ac <= 2) {
|
||||||
prefmsg(nick, s_Services,
|
prefmsg (nick, s_Services, "You must supply a Reason to Reload");
|
||||||
"You must supply a Reason to Reload");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
tmp = joinbuf (av, ac, 2);
|
tmp = joinbuf (av, ac, 2);
|
||||||
chanalert(s_Services, "%s Wants me to RELOAD! for %s",
|
chanalert (s_Services, "%s Wants me to RELOAD! for %s", u->nick, tmp);
|
||||||
u->nick, tmp);
|
|
||||||
ns_reload (u, tmp);
|
ns_reload (u, tmp);
|
||||||
free (tmp);
|
free (tmp);
|
||||||
} else if (!strcasecmp (av[1], "LOGS")) {
|
} else if (!strcasecmp (av[1], "LOGS")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to view LOGS, but is not a Techadmin", nick);
|
||||||
"%s Tried to view LOGS, but is not a Techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ns_logs (u);
|
ns_logs (u);
|
||||||
chanalert(s_Services, "%s Wants to Look at my Logs!!",
|
chanalert (s_Services, "%s Wants to Look at my Logs!!", u->nick);
|
||||||
u->nick);
|
|
||||||
} else if (!strcasecmp (av[1], "JUPE")) {
|
} else if (!strcasecmp (av[1], "JUPE")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to JUPE, but is not a Techadmin", nick);
|
||||||
"%s Tried to JUPE, but is not a Techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ac <= 2) {
|
if (ac <= 2) {
|
||||||
prefmsg(nick, s_Services,
|
prefmsg (nick, s_Services, "You must supply a ServerName to Jupe");
|
||||||
"You must supply a ServerName to Jupe");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ns_jupe (u, av[2]);
|
ns_jupe (u, av[2]);
|
||||||
chanalert(s_Services, "%s Wants to JUPE this Server %s",
|
chanalert (s_Services, "%s Wants to JUPE this Server %s", u->nick, av[2]);
|
||||||
u->nick, av[2]);
|
|
||||||
} else if (!strcasecmp (av[1], "DEBUG")) {
|
} else if (!strcasecmp (av[1], "DEBUG")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Permission Denied, you need to be a Techadmin to Enable Debug Mode!");
|
||||||
"Permission Denied, you need to be a Techadmin to Enable Debug Mode!");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ns_debug_to_coders (u->nick);
|
ns_debug_to_coders (u->nick);
|
||||||
} else if (!strcasecmp (av[1], "USERDUMP")) {
|
} else if (!strcasecmp (av[1], "USERDUMP")) {
|
||||||
if (!me.coder_debug) {
|
if (!me.coder_debug) {
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "\2Error:\2 Debug Mode Disabled");
|
||||||
"\2Error:\2 Debug Mode Disabled");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ac <= 2) {
|
if (ac <= 2) {
|
||||||
|
@ -303,8 +255,7 @@ void servicesbot(char *nick, char **av, int ac)
|
||||||
}
|
}
|
||||||
} else if (!strcasecmp (av[1], "CHANDUMP")) {
|
} else if (!strcasecmp (av[1], "CHANDUMP")) {
|
||||||
if (!me.coder_debug) {
|
if (!me.coder_debug) {
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "\2Error:\2 Debug Mode Disabled");
|
||||||
"\2Error:\2 Debug Mode Disabled");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ac < 3) {
|
if (ac < 3) {
|
||||||
|
@ -314,17 +265,14 @@ void servicesbot(char *nick, char **av, int ac)
|
||||||
}
|
}
|
||||||
} else if (!strcasecmp (av[1], "SERVERDUMP")) {
|
} else if (!strcasecmp (av[1], "SERVERDUMP")) {
|
||||||
if (!me.coder_debug) {
|
if (!me.coder_debug) {
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "\2Error:\2 Debug Mode Disabled");
|
||||||
"\2Error:\2 Debug Mode Disabled");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ns_server_dump (u);
|
ns_server_dump (u);
|
||||||
} else if (!strcasecmp (av[1], "RAW")) {
|
} else if (!strcasecmp (av[1], "RAW")) {
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg (nick, s_Services, "Permission Denied");
|
prefmsg (nick, s_Services, "Permission Denied");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "%s Tried to use RAW, but is not a Techadmin", nick);
|
||||||
"%s Tried to use RAW, but is not a Techadmin",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#ifdef USE_RAW
|
#ifdef USE_RAW
|
||||||
|
@ -337,16 +285,14 @@ void servicesbot(char *nick, char **av, int ac)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
prefmsg(nick, s_Services, "Unknown Command: \2%s\2",
|
prefmsg (nick, s_Services, "Unknown Command: \2%s\2", av[1]);
|
||||||
av[1]);
|
chanalert (s_Services, "%s Reqested %s, but that is a Unknown Command", u->nick, 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;
|
Module *mod_ptr = NULL;
|
||||||
hscan_t ms;
|
hscan_t ms;
|
||||||
|
@ -358,43 +304,37 @@ extern void ns_shutdown(User * u, char *reason)
|
||||||
hash_scan_begin (&ms, mh);
|
hash_scan_begin (&ms, mh);
|
||||||
while ((mn = hash_scan_next (&ms)) != NULL) {
|
while ((mn = hash_scan_next (&ms)) != NULL) {
|
||||||
mod_ptr = hnode_get (mn);
|
mod_ptr = hnode_get (mn);
|
||||||
chanalert(s_Services, "Module %s Unloaded by %s",
|
chanalert (s_Services, "Module %s Unloaded by %s", mod_ptr->info->module_name, u->nick);
|
||||||
mod_ptr->info->module_name, u->nick);
|
|
||||||
unload_module (mod_ptr->info->module_name, u);
|
unload_module (mod_ptr->info->module_name, u);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
globops(s_Services, "%s requested \2SHUTDOWN\2 for %s", u->nick,
|
globops (s_Services, "%s requested \2SHUTDOWN\2 for %s", u->nick, reason);
|
||||||
reason);
|
snprintf (quitmsg, 255, "%s Set SHUTDOWN: %s", u->nick, (reason ? reason : "No Reason"));
|
||||||
snprintf(quitmsg, 255, "%s Set SHUTDOWN: %s", u->nick,
|
|
||||||
(reason ? reason : "No Reason"));
|
|
||||||
squit_cmd (s_Services, quitmsg);
|
squit_cmd (s_Services, quitmsg);
|
||||||
ssquit_cmd (me.name);
|
ssquit_cmd (me.name);
|
||||||
sleep (1);
|
sleep (1);
|
||||||
close (servsock);
|
close (servsock);
|
||||||
remove ("neostats.pid");
|
remove ("neostats.pid");
|
||||||
nlog(LOG_NOTICE, LOG_CORE, "%s [%s](%s) requested SHUTDOWN.",
|
nlog (LOG_NOTICE, LOG_CORE, "%s [%s](%s) requested SHUTDOWN.", u->nick, u->username, u->hostname);
|
||||||
u->nick, u->username, u->hostname);
|
|
||||||
do_exit (0);
|
do_exit (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ns_reload(User * u, char *reason)
|
static void
|
||||||
|
ns_reload (User * u, char *reason)
|
||||||
{
|
{
|
||||||
Module *mod_ptr = NULL;
|
Module *mod_ptr = NULL;
|
||||||
hscan_t ms;
|
hscan_t ms;
|
||||||
hnode_t *mn;
|
hnode_t *mn;
|
||||||
char quitmsg[255];
|
char quitmsg[255];
|
||||||
strcpy (segv_location, "ns_reload");
|
strcpy (segv_location, "ns_reload");
|
||||||
globops(s_Services, "%s requested \2RELOAD\2 for %s", u->nick,
|
globops (s_Services, "%s requested \2RELOAD\2 for %s", u->nick, reason);
|
||||||
reason);
|
nlog (LOG_NOTICE, LOG_CORE, "%s requested RELOAD. -> reason", u->nick);
|
||||||
nlog(LOG_NOTICE, LOG_CORE, "%s requested RELOAD. -> reason",
|
|
||||||
u->nick);
|
|
||||||
snprintf (quitmsg, 255, "%s Sent RELOAD: %s", u->nick, reason);
|
snprintf (quitmsg, 255, "%s Sent RELOAD: %s", u->nick, reason);
|
||||||
hash_scan_begin (&ms, mh);
|
hash_scan_begin (&ms, mh);
|
||||||
while ((mn = hash_scan_next (&ms)) != NULL) {
|
while ((mn = hash_scan_next (&ms)) != NULL) {
|
||||||
mod_ptr = hnode_get (mn);
|
mod_ptr = hnode_get (mn);
|
||||||
chanalert(s_Services, "Module %s Unloaded by %s",
|
chanalert (s_Services, "Module %s Unloaded by %s", mod_ptr->info->module_name, u->nick);
|
||||||
mod_ptr->info->module_name, u->nick);
|
|
||||||
unload_module (mod_ptr->info->module_name, u);
|
unload_module (mod_ptr->info->module_name, u);
|
||||||
}
|
}
|
||||||
squit_cmd (s_Services, quitmsg);
|
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
|
#ifdef DEBUG
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "This command is disabled while in DEBUG.");
|
||||||
"This command is disabled while in DEBUG.");
|
|
||||||
#else
|
#else
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
@ -417,8 +357,7 @@ static void ns_logs(User * u)
|
||||||
|
|
||||||
fp = fopen ("logs/NeoStats.log", "r");
|
fp = fopen ("logs/NeoStats.log", "r");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Unable to open neostats.log");
|
||||||
"Unable to open neostats.log");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
while (fgets (buf, sizeof (buf), fp)) {
|
while (fgets (buf, sizeof (buf), fp)) {
|
||||||
|
@ -429,24 +368,24 @@ static void ns_logs(User * u)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ns_jupe(User * u, char *server)
|
static void
|
||||||
|
ns_jupe (User * u, char *server)
|
||||||
{
|
{
|
||||||
char infoline[255];
|
char infoline[255];
|
||||||
strcpy (segv_location, "ns_jupe");
|
strcpy (segv_location, "ns_jupe");
|
||||||
snprintf (infoline, 255, "[Jupitered by %s]", u->nick);
|
snprintf (infoline, 255, "[Jupitered by %s]", u->nick);
|
||||||
sserver_cmd (server, 1, infoline);
|
sserver_cmd (server, 1, infoline);
|
||||||
nlog(LOG_NOTICE, LOG_CORE, "%s!%s@%s jupitered %s", u->nick,
|
nlog (LOG_NOTICE, LOG_CORE, "%s!%s@%s jupitered %s", u->nick, u->username, u->hostname, server);
|
||||||
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");
|
strcpy (segv_location, "ns_debug_to_coders");
|
||||||
if (!me.coder_debug) {
|
if (!me.coder_debug) {
|
||||||
me.coder_debug = 1;
|
me.coder_debug = 1;
|
||||||
if (u) {
|
if (u) {
|
||||||
globops(me.name, "\2DEBUG MODE\2 Activated by %s",
|
globops (me.name, "\2DEBUG MODE\2 Activated by %s", u);
|
||||||
u);
|
|
||||||
prefmsg (u, s_Services, "Debuging Mode Enabled!");
|
prefmsg (u, s_Services, "Debuging Mode Enabled!");
|
||||||
} else {
|
} else {
|
||||||
globops (me.name, "\2DEBUG MODE\3 Active");
|
globops (me.name, "\2DEBUG MODE\3 Active");
|
||||||
|
@ -454,8 +393,7 @@ void ns_debug_to_coders(char *u)
|
||||||
} else {
|
} else {
|
||||||
me.coder_debug = 0;
|
me.coder_debug = 0;
|
||||||
if (!u) {
|
if (!u) {
|
||||||
globops(me.name,
|
globops (me.name, "\2DEBUG MODE\2 Deactivated by %s", u);
|
||||||
"\2DEBUG MODE\2 Deactivated by %s", u);
|
|
||||||
prefmsg (u, s_Services, "Debuging Mode Disabled");
|
prefmsg (u, s_Services, "Debuging Mode Disabled");
|
||||||
} else {
|
} else {
|
||||||
globops (me.name, "\2DEBUG MODE\2 Deactivated");
|
globops (me.name, "\2DEBUG MODE\2 Deactivated");
|
||||||
|
@ -464,15 +402,13 @@ void ns_debug_to_coders(char *u)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_RAW
|
#ifdef USE_RAW
|
||||||
static void ns_raw(User * u, char *message)
|
static void
|
||||||
|
ns_raw (User * u, char *message)
|
||||||
{
|
{
|
||||||
int sent;
|
int sent;
|
||||||
strcpy (segv_location, "ns_raw");
|
strcpy (segv_location, "ns_raw");
|
||||||
chanalert(s_Services,
|
chanalert (s_Services, "\2RAW COMMAND\2 \2%s\2 Issued a Raw Command!(%s)", u->nick, message);
|
||||||
"\2RAW COMMAND\2 \2%s\2 Issued a Raw Command!(%s)",
|
nlog (LOG_INFO, LOG_CORE, "RAW COMMAND %sIssued a Raw Command!(%s)", u->nick, message);
|
||||||
u->nick, message);
|
|
||||||
nlog(LOG_INFO, LOG_CORE, "RAW COMMAND %sIssued a Raw Command!(%s)",
|
|
||||||
u->nick, message);
|
|
||||||
strcat (message, "\n");
|
strcat (message, "\n");
|
||||||
sent = write (servsock, message, strlen (message));
|
sent = write (servsock, message, strlen (message));
|
||||||
if (sent == -1) {
|
if (sent == -1) {
|
||||||
|
@ -483,95 +419,73 @@ static void ns_raw(User * u, char *message)
|
||||||
me.SendBytes = me.SendBytes + sent;
|
me.SendBytes = me.SendBytes + sent;
|
||||||
}
|
}
|
||||||
#endif
|
#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");
|
strcpy (segv_location, "ns_user_dump");
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
|
||||||
"Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
chanalert(s_Services, "\2DEBUG\2 \2%s\2 Requested a UserDump!",
|
chanalert (s_Services, "\2DEBUG\2 \2%s\2 Requested a UserDump!", u->nick);
|
||||||
u->nick);
|
|
||||||
UserDump (nick);
|
UserDump (nick);
|
||||||
}
|
}
|
||||||
static void ns_server_dump(User * u)
|
static void
|
||||||
|
ns_server_dump (User * u)
|
||||||
{
|
{
|
||||||
strcpy (segv_location, "ns_server_dump");
|
strcpy (segv_location, "ns_server_dump");
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
|
||||||
"Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
chanalert(s_Services, "\2DEBUG\2 \2%s\2 Requested a ServerDump!",
|
chanalert (s_Services, "\2DEBUG\2 \2%s\2 Requested a ServerDump!", u->nick);
|
||||||
u->nick);
|
|
||||||
ServerDump ();
|
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");
|
strcpy (segv_location, "ns_chan_dump");
|
||||||
if (!(UserLevel (u) >= 180)) {
|
if (!(UserLevel (u) >= 180)) {
|
||||||
|
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
|
||||||
"Permission Denied, you need to be at least a NetAdmin to Enable Debug Mode!");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
chanalert(s_Services, "\2DEBUG\2 \2%s\2 Requested a ChannelDump!",
|
chanalert (s_Services, "\2DEBUG\2 \2%s\2 Requested a ChannelDump!", u->nick);
|
||||||
u->nick);
|
|
||||||
chandump (chan);
|
chandump (chan);
|
||||||
}
|
}
|
||||||
static void ns_uptime(User * u)
|
static void
|
||||||
|
ns_uptime (User * u)
|
||||||
{
|
{
|
||||||
int uptime = time (NULL) - me.t_start;
|
int uptime = time (NULL) - me.t_start;
|
||||||
strcpy (segv_location, "ns_uptime");
|
strcpy (segv_location, "ns_uptime");
|
||||||
|
|
||||||
prefmsg (u->nick, s_Services, "Statistics Information:");
|
prefmsg (u->nick, s_Services, "Statistics Information:");
|
||||||
if (uptime > 86400) {
|
if (uptime > 86400) {
|
||||||
prefmsg(u->nick, s_Services,
|
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);
|
||||||
"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) {
|
} else if (uptime > 3600) {
|
||||||
prefmsg(u->nick, s_Services,
|
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");
|
||||||
"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) {
|
} else if (uptime > 60) {
|
||||||
prefmsg(u->nick, s_Services,
|
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");
|
||||||
"Statistics up \2%ld minute%s, %ld second%s\2",
|
|
||||||
uptime / 60, uptime / 60 == 1 ? "" : "s",
|
|
||||||
uptime % 60, uptime % 60 == 1 ? "" : "s");
|
|
||||||
} else {
|
} else {
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Statistics up \2%ld second%s\2", uptime, uptime == 1 ? "" : "s");
|
||||||
"Statistics up \2%ld second%s\2", uptime,
|
|
||||||
uptime == 1 ? "" : "s");
|
|
||||||
}
|
}
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Sent %ld Messages Totaling %ld Bytes", me.SendM, me.SendBytes);
|
||||||
"Sent %ld Messages Totaling %ld Bytes", me.SendM,
|
prefmsg (u->nick, s_Services, "Recieved %ld Messages, Totaling %ld Bytes", me.RcveM, me.RcveBytes);
|
||||||
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, "Reconnect Time: %d", me.r_time);
|
||||||
prefmsg(u->nick, s_Services, "Statistic Requests: %d",
|
prefmsg (u->nick, s_Services, "Statistic Requests: %d", me.requests);
|
||||||
me.requests);
|
prefmsg (u->nick, s_Services, "Max Sockets: %d (in use: %d)", me.maxsocks, me.cursocks);
|
||||||
prefmsg(u->nick, s_Services, "Max Sockets: %d (in use: %d)",
|
prefmsg (u->nick, s_Services, "Use SMO for Debug?: %s", (me.usesmo) ? "Enabled" : "Disabled");
|
||||||
me.maxsocks, me.cursocks);
|
|
||||||
prefmsg(u->nick, s_Services, "Use SMO for Debug?: %s",
|
|
||||||
(me.usesmo) ? "Enabled" : "Disabled");
|
|
||||||
if (me.coder_debug)
|
if (me.coder_debug)
|
||||||
prefmsg (u->nick, s_Services, "Debugging Mode is \2ON!\2");
|
prefmsg (u->nick, s_Services, "Debugging Mode is \2ON!\2");
|
||||||
else
|
else
|
||||||
prefmsg(u->nick, s_Services,
|
prefmsg (u->nick, s_Services, "Debugging Mode is Disabled!");
|
||||||
"Debugging Mode is Disabled!");
|
|
||||||
prefmsg (u->nick, s_Services, "End of Information.");
|
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");
|
strcpy (segv_location, "ns_version");
|
||||||
prefmsg (u->nick, s_Services, "\2NeoStats Version Information\2");
|
prefmsg (u->nick, s_Services, "\2NeoStats Version Information\2");
|
||||||
prefmsg(u->nick, s_Services, "NeoStats Version: %d.%d.%d%s", MAJOR,
|
prefmsg (u->nick, s_Services, "NeoStats Version: %d.%d.%d%s", MAJOR, MINOR, REV, version);
|
||||||
MINOR, REV, version);
|
|
||||||
prefmsg (u->nick, s_Services, "http://www.neostats.net");
|
prefmsg (u->nick, s_Services, "http://www.neostats.net");
|
||||||
}
|
}
|
||||||
|
|
160
sock.c
160
sock.c
|
@ -22,7 +22,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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>
|
#include <fcntl.h>
|
||||||
|
@ -37,7 +37,8 @@ void recvlog(char *line);
|
||||||
struct sockaddr_in lsa;
|
struct sockaddr_in lsa;
|
||||||
int dobind;
|
int dobind;
|
||||||
|
|
||||||
int ConnectTo(char *host, int port)
|
int
|
||||||
|
ConnectTo (char *host, int port)
|
||||||
{
|
{
|
||||||
struct hostent *hp;
|
struct hostent *hp;
|
||||||
struct sockaddr_in sa;
|
struct sockaddr_in sa;
|
||||||
|
@ -48,12 +49,9 @@ int ConnectTo(char *host, int port)
|
||||||
memset (&lsa, 0, sizeof (lsa));
|
memset (&lsa, 0, sizeof (lsa));
|
||||||
if (strlen (me.local) > 1) {
|
if (strlen (me.local) > 1) {
|
||||||
if ((hp = gethostbyname (me.local)) == NULL) {
|
if ((hp = gethostbyname (me.local)) == NULL) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Couldn't bind to IP address %s", me.local);
|
||||||
"Warning, Couldn't bind to IP address %s",
|
|
||||||
me.local);
|
|
||||||
} else {
|
} else {
|
||||||
memcpy((char *) &lsa.sin_addr, hp->h_addr,
|
memcpy ((char *) &lsa.sin_addr, hp->h_addr, hp->h_length);
|
||||||
hp->h_length);
|
|
||||||
lsa.sin_family = hp->h_addrtype;
|
lsa.sin_family = hp->h_addrtype;
|
||||||
dobind = 1;
|
dobind = 1;
|
||||||
}
|
}
|
||||||
|
@ -69,9 +67,7 @@ int ConnectTo(char *host, int port)
|
||||||
return (-1);
|
return (-1);
|
||||||
if (dobind > 0) {
|
if (dobind > 0) {
|
||||||
if (bind (s, (struct sockaddr *) &lsa, sizeof (lsa)) < 0) {
|
if (bind (s, (struct sockaddr *) &lsa, sizeof (lsa)) < 0) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "bind(): Warning, Couldn't bind to IP address %s", strerror (errno));
|
||||||
"bind(): Warning, Couldn't bind to IP address %s",
|
|
||||||
strerror(errno));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +85,8 @@ int ConnectTo(char *host, int port)
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
void read_loop()
|
void
|
||||||
|
read_loop ()
|
||||||
{
|
{
|
||||||
register int i, j, SelectResult;
|
register int i, j, SelectResult;
|
||||||
struct timeval *TimeOut, tvbuf;
|
struct timeval *TimeOut, tvbuf;
|
||||||
|
@ -127,17 +124,13 @@ void read_loop()
|
||||||
++me.cursocks;
|
++me.cursocks;
|
||||||
}
|
}
|
||||||
/* adns stuff... whats its interested in */
|
/* adns stuff... whats its interested in */
|
||||||
adns_beforeselect(ads, &me.maxsocks, &readfds, &writefds,
|
adns_beforeselect (ads, &me.maxsocks, &readfds, &writefds, &errfds, &TimeOut, &tvbuf, 0);
|
||||||
&errfds, &TimeOut, &tvbuf, 0);
|
|
||||||
/* adns may change this, but we tell it to go away!!! */
|
/* adns may change this, but we tell it to go away!!! */
|
||||||
TimeOut->tv_sec = 1;
|
TimeOut->tv_sec = 1;
|
||||||
TimeOut->tv_usec = 0;
|
TimeOut->tv_usec = 0;
|
||||||
SelectResult =
|
SelectResult = select (FD_SETSIZE, &readfds, &writefds, &errfds, TimeOut);
|
||||||
select(FD_SETSIZE, &readfds, &writefds, &errfds,
|
|
||||||
TimeOut);
|
|
||||||
if (SelectResult > 0) {
|
if (SelectResult > 0) {
|
||||||
adns_afterselect(ads, me.maxsocks, &readfds,
|
adns_afterselect (ads, me.maxsocks, &readfds, &writefds, &errfds, 0);
|
||||||
&writefds, &errfds, 0);
|
|
||||||
|
|
||||||
/* do and dns related callbacks now */
|
/* do and dns related callbacks now */
|
||||||
do_dns ();
|
do_dns ();
|
||||||
|
@ -151,80 +144,35 @@ void read_loop()
|
||||||
if ((c == '\n')
|
if ((c == '\n')
|
||||||
|| (c == '\r')) {
|
|| (c == '\r')) {
|
||||||
me.RcveM++;
|
me.RcveM++;
|
||||||
me.lastmsg =
|
me.lastmsg = time (NULL);
|
||||||
time(NULL);
|
|
||||||
if (config.recvlog)
|
if (config.recvlog)
|
||||||
recvlog
|
recvlog (buf);
|
||||||
(buf);
|
|
||||||
parse (buf);
|
parse (buf);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "read returned a Error");
|
||||||
"read returned a Error");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* this checks if there is any data waiting on a socket for a module */
|
/* this checks if there is any data waiting on a socket for a module */
|
||||||
hash_scan_begin (&ss, sockh);
|
hash_scan_begin (&ss, sockh);
|
||||||
while ((sn =
|
while ((sn = hash_scan_next (&ss)) != NULL) {
|
||||||
hash_scan_next(&ss)) !=
|
|
||||||
NULL) {
|
|
||||||
mod_sock = hnode_get (sn);
|
mod_sock = hnode_get (sn);
|
||||||
strcpy(segvinmodule,
|
strcpy (segvinmodule, mod_sock->modname);
|
||||||
mod_sock->modname);
|
if (FD_ISSET (mod_sock->sock_no, &readfds)) {
|
||||||
if (FD_ISSET
|
nlog (LOG_DEBUG3, LOG_CORE, "Running module %s readsock function for %s", mod_sock->modname, mod_sock->sockname);
|
||||||
(mod_sock->sock_no,
|
if (mod_sock->readfnc (mod_sock->sock_no, mod_sock->sockname) < 0)
|
||||||
&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;
|
break;
|
||||||
}
|
}
|
||||||
if (FD_ISSET
|
if (FD_ISSET (mod_sock->sock_no, &writefds)) {
|
||||||
(mod_sock->sock_no,
|
nlog (LOG_DEBUG3, LOG_CORE, "Running module %s writesock function for %s", mod_sock->modname, mod_sock->sockname);
|
||||||
&writefds)) {
|
if (mod_sock->writefnc (mod_sock->sock_no, mod_sock->sockname) < 0)
|
||||||
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;
|
break;
|
||||||
}
|
}
|
||||||
if (FD_ISSET
|
if (FD_ISSET (mod_sock->sock_no, &errfds)) {
|
||||||
(mod_sock->sock_no,
|
nlog (LOG_DEBUG3, LOG_CORE, "Running module %s errorsock function for %s", mod_sock->modname, mod_sock->sockname);
|
||||||
&errfds)) {
|
if (mod_sock->errfnc (mod_sock->sock_no, mod_sock->sockname) < 0)
|
||||||
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -240,21 +188,16 @@ void read_loop()
|
||||||
hash_scan_begin (&ms, mh);
|
hash_scan_begin (&ms, mh);
|
||||||
while ((mn = hash_scan_next (&ms)) != NULL) {
|
while ((mn = hash_scan_next (&ms)) != NULL) {
|
||||||
mod_ptr = hnode_get (mn);
|
mod_ptr = hnode_get (mn);
|
||||||
unload_module(mod_ptr->info->
|
unload_module (mod_ptr->info->module_name, finduser (s_Services));
|
||||||
module_name,
|
|
||||||
finduser
|
|
||||||
(s_Services));
|
|
||||||
}
|
}
|
||||||
close (servsock);
|
close (servsock);
|
||||||
sleep (5);
|
sleep (5);
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Eeek, Zombie Server, Reconnecting");
|
||||||
"Eeek, Zombie Server, Reconnecting");
|
|
||||||
do_exit (2);
|
do_exit (2);
|
||||||
}
|
}
|
||||||
} else if (SelectResult == -1) {
|
} else if (SelectResult == -1) {
|
||||||
if (errno != EINTR) {
|
if (errno != EINTR) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Lost connection to server.");
|
||||||
"Lost connection to server.");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -262,7 +205,8 @@ void read_loop()
|
||||||
nlog (LOG_NORMAL, LOG_CORE, "hu, how did we get here");
|
nlog (LOG_NORMAL, LOG_CORE, "hu, how did we get here");
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int getmaxsock()
|
extern int
|
||||||
|
getmaxsock ()
|
||||||
{
|
{
|
||||||
struct rlimit *lim;
|
struct rlimit *lim;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -273,7 +217,8 @@ extern int getmaxsock()
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void recvlog(char *line)
|
void
|
||||||
|
recvlog (char *line)
|
||||||
{
|
{
|
||||||
FILE *logfile;
|
FILE *logfile;
|
||||||
if ((logfile = fopen ("logs/recv.log", "a")) == NULL)
|
if ((logfile = fopen ("logs/recv.log", "a")) == NULL)
|
||||||
|
@ -285,7 +230,8 @@ void recvlog(char *line)
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
void log(char *fmt, ...)
|
void
|
||||||
|
log (char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
FILE *logfile;
|
FILE *logfile;
|
||||||
|
@ -315,7 +261,8 @@ void log(char *fmt, ...)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char *sctime(time_t stuff)
|
char *
|
||||||
|
sctime (time_t stuff)
|
||||||
{
|
{
|
||||||
char *s, *c;
|
char *s, *c;
|
||||||
|
|
||||||
|
@ -328,7 +275,8 @@ char *sctime(time_t stuff)
|
||||||
|
|
||||||
char fmtime[80];
|
char fmtime[80];
|
||||||
|
|
||||||
char *sftime(time_t stuff)
|
char *
|
||||||
|
sftime (time_t stuff)
|
||||||
{
|
{
|
||||||
struct tm *ltm = localtime (&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,
|
int
|
||||||
char *sockname, char *module, char *func_read,
|
sock_connect (int socktype, unsigned long ipaddr, int port, char *sockname, char *module, char *func_read, char *func_write, char *func_error)
|
||||||
char *func_write, char *func_error)
|
|
||||||
{
|
{
|
||||||
struct sockaddr_in sa;
|
struct sockaddr_in sa;
|
||||||
int s;
|
int s;
|
||||||
|
@ -354,9 +301,7 @@ int sock_connect(int socktype, unsigned long ipaddr, int port,
|
||||||
/* bind to a IP address */
|
/* bind to a IP address */
|
||||||
if (dobind > 0) {
|
if (dobind > 0) {
|
||||||
if (bind (s, (struct sockaddr *) &lsa, sizeof (lsa)) < 0) {
|
if (bind (s, (struct sockaddr *) &lsa, sizeof (lsa)) < 0) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "sock_connect(): Warning, Couldn't bind to IP address %s", strerror (errno));
|
||||||
"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 */
|
/* set non blocking */
|
||||||
|
|
||||||
if ((i = fcntl (s, F_SETFL, O_NONBLOCK)) < 0) {
|
if ((i = fcntl (s, F_SETFL, O_NONBLOCK)) < 0) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "can't set socket %s(%s) non-blocking: %s", sockname, module, strerror (i));
|
||||||
"can't set socket %s(%s) non-blocking: %s", sockname,
|
|
||||||
module, strerror(i));
|
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -379,9 +322,7 @@ int sock_connect(int socktype, unsigned long ipaddr, int port,
|
||||||
case EINPROGRESS:
|
case EINPROGRESS:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Socket %s(%s) cant connect %s", sockname, module, strerror (errno), i);
|
||||||
"Socket %s(%s) cant connect %s", sockname,
|
|
||||||
module, strerror(errno), i);
|
|
||||||
close (s);
|
close (s);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
@ -391,7 +332,8 @@ int sock_connect(int socktype, unsigned long ipaddr, int port,
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sock_disconnect(char *sockname)
|
int
|
||||||
|
sock_disconnect (char *sockname)
|
||||||
{
|
{
|
||||||
Sock_List *sock;
|
Sock_List *sock;
|
||||||
fd_set fds;
|
fd_set fds;
|
||||||
|
@ -400,8 +342,7 @@ int sock_disconnect(char *sockname)
|
||||||
|
|
||||||
sock = findsock (sockname);
|
sock = findsock (sockname);
|
||||||
if (!sock) {
|
if (!sock) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can not find Socket %s in list", sockname);
|
||||||
"Warning, Can not find Socket %s in list", sockname);
|
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -413,19 +354,18 @@ int sock_disconnect(char *sockname)
|
||||||
tv.tv_usec = 0;
|
tv.tv_usec = 0;
|
||||||
i = select (1, &fds, NULL, NULL, &tv);
|
i = select (1, &fds, NULL, NULL, &tv);
|
||||||
if (!i && errno == EBADF) {
|
if (!i && errno == EBADF) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Bad File Descriptor %s in list", sockname);
|
||||||
"Warning, Bad File Descriptor %s in list", sockname);
|
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
nlog(LOG_DEBUG3, LOG_CORE, "Closing Socket %s with Number %d",
|
nlog (LOG_DEBUG3, LOG_CORE, "Closing Socket %s with Number %d", sockname, sock->sock_no);
|
||||||
sockname, sock->sock_no);
|
|
||||||
close (sock->sock_no);
|
close (sock->sock_no);
|
||||||
del_socket (sockname);
|
del_socket (sockname);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void sts(char *fmt, ...)
|
void
|
||||||
|
sts (char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
|
2
sock.h
2
sock.h
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
|
#ifndef SOCK_H
|
||||||
|
|
15
stats.h
15
stats.h
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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
|
#ifndef STATS_H
|
||||||
|
@ -179,6 +179,7 @@ struct me {
|
||||||
long RcveM;
|
long RcveM;
|
||||||
long RcveBytes;
|
long RcveBytes;
|
||||||
time_t lastmsg;
|
time_t lastmsg;
|
||||||
|
int pingtime;
|
||||||
} me;
|
} me;
|
||||||
|
|
||||||
|
|
||||||
|
@ -263,9 +264,7 @@ extern void ResetLogs();
|
||||||
extern char *sctime (time_t);
|
extern char *sctime (time_t);
|
||||||
extern char *sftime (time_t);
|
extern char *sftime (time_t);
|
||||||
extern int getmaxsock ();
|
extern int getmaxsock ();
|
||||||
extern int sock_connect(int socktype, unsigned long ipaddr, int port,
|
extern int sock_connect (int socktype, unsigned long ipaddr, int port, char *sockname, char *module, char *func_read, char *func_write, char *func_error);
|
||||||
char *sockname, char *module, char *func_read,
|
|
||||||
char *func_write, char *func_error);
|
|
||||||
extern int sock_disconnect (char *sockname);
|
extern int sock_disconnect (char *sockname);
|
||||||
/* conf.c */
|
/* conf.c */
|
||||||
extern void strip (char *);
|
extern void strip (char *);
|
||||||
|
@ -310,8 +309,7 @@ extern void TimerMidnight();
|
||||||
extern int is_midnight ();
|
extern int is_midnight ();
|
||||||
|
|
||||||
extern MyUser *myuhead;
|
extern MyUser *myuhead;
|
||||||
extern void AddUser(const char *, const char *, const char *, const char *,
|
extern void AddUser (const char *, const char *, const char *, const char *, const unsigned long ip, const unsigned long TS);
|
||||||
const unsigned long ip, const unsigned long TS);
|
|
||||||
extern void DelUser (const char *);
|
extern void DelUser (const char *);
|
||||||
void AddRealName (const char *, const char *);
|
void AddRealName (const char *, const char *);
|
||||||
extern void Change_User (User *, 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);
|
extern int CheckChanMode (Chans * c, long mode);
|
||||||
|
|
||||||
/* dns.c */
|
/* dns.c */
|
||||||
extern int dns_lookup(char *str, adns_rrtype type,
|
extern int dns_lookup (char *str, adns_rrtype type, void (*callback) (char *data, adns_answer * a), char *data);
|
||||||
void (*callback) (char *data, adns_answer * a),
|
|
||||||
char *data);
|
|
||||||
extern int init_dns ();
|
extern int init_dns ();
|
||||||
extern void do_dns ();
|
extern void do_dns ();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
48
timer.c
48
timer.c
|
@ -20,7 +20,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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"
|
#include "stats.h"
|
||||||
|
@ -33,52 +33,52 @@ static time_t last_cache_save;
|
||||||
static int midnight = 0;
|
static int midnight = 0;
|
||||||
|
|
||||||
|
|
||||||
void chk()
|
void
|
||||||
|
chk ()
|
||||||
{
|
{
|
||||||
Mod_Timer *mod_ptr = NULL;
|
Mod_Timer *mod_ptr = NULL;
|
||||||
time_t current = time (NULL);
|
time_t current = time (NULL);
|
||||||
hscan_t ts;
|
hscan_t ts;
|
||||||
hnode_t *tn;
|
hnode_t *tn;
|
||||||
|
|
||||||
strcpy(segv_location, "chk");
|
|
||||||
/* First, lets see if any modules have a function that is due to run..... */
|
/* First, lets see if any modules have a function that is due to run..... */
|
||||||
hash_scan_begin (&ts, th);
|
hash_scan_begin (&ts, th);
|
||||||
while ((tn = hash_scan_next (&ts)) != NULL) {
|
while ((tn = hash_scan_next (&ts)) != NULL) {
|
||||||
|
strcpy (segv_location, "chk");
|
||||||
mod_ptr = hnode_get (tn);
|
mod_ptr = hnode_get (tn);
|
||||||
if (current - mod_ptr->lastrun > mod_ptr->interval) {
|
if (current - mod_ptr->lastrun > mod_ptr->interval) {
|
||||||
strcpy (segv_location, mod_ptr->modname);
|
strcpy (segv_location, mod_ptr->modname);
|
||||||
strcpy (segvinmodule, mod_ptr->modname);
|
strcpy (segvinmodule, mod_ptr->modname);
|
||||||
if (setjmp (sigvbuf) == 0) {
|
if (setjmp (sigvbuf) == 0) {
|
||||||
mod_ptr->function();
|
if (mod_ptr->function () < 0) {
|
||||||
mod_ptr->lastrun = (int) time(NULL);
|
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 {
|
} else {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
mod_ptr->lastrun = (int) time (NULL);
|
||||||
"setjmp() Failed, Can't call Module %s\n",
|
}
|
||||||
mod_ptr->modname);
|
} else {
|
||||||
|
nlog (LOG_CRITICAL, LOG_CORE, "setjmp() Failed, Can't call Module %s\n", mod_ptr->modname);
|
||||||
}
|
}
|
||||||
strcpy (segvinmodule, "");
|
strcpy (segvinmodule, "");
|
||||||
strcpy(segv_location, "Module_Event_Return");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (current - ping.last_sent > 60) {
|
if (current - ping.last_sent > me.pingtime) {
|
||||||
TimerPings ();
|
TimerPings ();
|
||||||
ping.last_sent = time (NULL);
|
ping.last_sent = time (NULL);
|
||||||
if (hash_verify (sockh) == 0) {
|
if (hash_verify (sockh) == 0) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, Corruption of the socket hash");
|
||||||
"Eeeek, Corruption of the socket hash");
|
|
||||||
}
|
}
|
||||||
if (hash_verify (mh) == 0) {
|
if (hash_verify (mh) == 0) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, Corruption of the Module hash");
|
||||||
"Eeeek, Corruption of the Module hash");
|
|
||||||
}
|
}
|
||||||
if (hash_verify (bh) == 0) {
|
if (hash_verify (bh) == 0) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, Corruption of the Bot hash");
|
||||||
"Eeeek, Corruption of the Bot hash");
|
|
||||||
}
|
}
|
||||||
if (hash_verify (th) == 0) {
|
if (hash_verify (th) == 0) {
|
||||||
nlog(LOG_CRITICAL, LOG_CORE,
|
nlog (LOG_CRITICAL, LOG_CORE, "Eeeek, Corruption of the Timer hash");
|
||||||
"Eeeek, Corruption of the Timer hash");
|
|
||||||
}
|
}
|
||||||
/* flush log files */
|
/* flush log files */
|
||||||
fflush (NULL);
|
fflush (NULL);
|
||||||
|
@ -92,7 +92,8 @@ void chk()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TimerReset()
|
void
|
||||||
|
TimerReset ()
|
||||||
{
|
{
|
||||||
time_t current = time (NULL);
|
time_t current = time (NULL);
|
||||||
last_stats_save = current;
|
last_stats_save = current;
|
||||||
|
@ -104,14 +105,15 @@ void TimerReset()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TimerMidnight()
|
void
|
||||||
|
TimerMidnight ()
|
||||||
{
|
{
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "Its midnight!!! -> %s",
|
nlog (LOG_DEBUG1, LOG_CORE, "Its midnight!!! -> %s", sctime (time (NULL)));
|
||||||
sctime(time(NULL)));
|
|
||||||
ResetLogs ();
|
ResetLogs ();
|
||||||
}
|
}
|
||||||
|
|
||||||
int is_midnight()
|
int
|
||||||
|
is_midnight ()
|
||||||
{
|
{
|
||||||
time_t current = time (NULL);
|
time_t current = time (NULL);
|
||||||
struct tm *ltm = localtime (¤t);
|
struct tm *ltm = localtime (¤t);
|
||||||
|
|
131
users.c
131
users.c
|
@ -22,7 +22,7 @@
|
||||||
** USA
|
** USA
|
||||||
**
|
**
|
||||||
** NeoStats CVS Identification
|
** 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>
|
#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;
|
User *u;
|
||||||
hnode_t *un;
|
hnode_t *un;
|
||||||
|
@ -68,21 +69,16 @@ User *new_user(const char *nick)
|
||||||
return (u);
|
return (u);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddUser(const char *nick, const char *user, const char *host,
|
void
|
||||||
const char *server, const unsigned long ipaddr,
|
AddUser (const char *nick, const char *user, const char *host, const char *server, const unsigned long ipaddr, const unsigned long TS)
|
||||||
const unsigned long TS)
|
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
|
|
||||||
nlog(LOG_DEBUG2, LOG_CORE,
|
nlog (LOG_DEBUG2, LOG_CORE, "AddUser(): %s (%s@%s)(%lu) -> %s at %lu", nick, user, host, htonl (ipaddr), server, TS);
|
||||||
"AddUser(): %s (%s@%s)(%lu) -> %s at %lu", nick, user, host,
|
|
||||||
htonl(ipaddr), server, TS);
|
|
||||||
strcpy (segv_location, "AddUser");
|
strcpy (segv_location, "AddUser");
|
||||||
u = finduser (nick);
|
u = finduser (nick);
|
||||||
if (u) {
|
if (u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "trying to add a user that already exists? (%s)", nick);
|
||||||
"trying to add a user that already exists? (%s)",
|
|
||||||
nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +101,9 @@ void AddUser(const char *nick, const char *user, const char *host,
|
||||||
u->ipaddr.s_addr = htonl (ipaddr);
|
u->ipaddr.s_addr = htonl (ipaddr);
|
||||||
u->TS = TS;
|
u->TS = TS;
|
||||||
}
|
}
|
||||||
void AddRealName(const char *nick, const char *realname)
|
|
||||||
|
void
|
||||||
|
AddRealName (const char *nick, const char *realname)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac = 0;
|
int ac = 0;
|
||||||
|
@ -113,8 +111,7 @@ void AddRealName(const char *nick, const char *realname)
|
||||||
User *u = finduser (nick);
|
User *u = finduser (nick);
|
||||||
|
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Can not find User %s for Realname", nick);
|
||||||
"Warning, Can not find User %s for Realname", nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
nlog (LOG_DEBUG2, LOG_CORE, "RealName(%s): %s", nick, realname);
|
nlog (LOG_DEBUG2, LOG_CORE, "RealName(%s): %s", nick, realname);
|
||||||
|
@ -124,20 +121,27 @@ void AddRealName(const char *nick, const char *realname)
|
||||||
free (av);
|
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;
|
User *u = v;
|
||||||
part_chan (u, lnode_get (node));
|
part_chan (u, lnode_get (node));
|
||||||
}
|
}
|
||||||
void KillUser(const char *nick)
|
|
||||||
|
void
|
||||||
|
KillUser (const char *nick)
|
||||||
{
|
{
|
||||||
doDelUser (nick, 1);
|
doDelUser (nick, 1);
|
||||||
}
|
}
|
||||||
void DelUser(const char *nick)
|
|
||||||
|
void
|
||||||
|
DelUser (const char *nick)
|
||||||
{
|
{
|
||||||
doDelUser (nick, 0);
|
doDelUser (nick, 0);
|
||||||
}
|
}
|
||||||
void doDelUser(const char *nick, int i)
|
|
||||||
|
void
|
||||||
|
doDelUser (const char *nick, int i)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
hnode_t *un;
|
hnode_t *un;
|
||||||
|
@ -180,7 +184,8 @@ void doDelUser(const char *nick, int i)
|
||||||
free (u);
|
free (u);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Do_Away(User * u, const char *awaymsg)
|
void
|
||||||
|
Do_Away (User * u, const char *awaymsg)
|
||||||
{
|
{
|
||||||
char **av;
|
char **av;
|
||||||
int ac = 0;
|
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;
|
hnode_t *un;
|
||||||
lnode_t *cm;
|
lnode_t *cm;
|
||||||
|
@ -207,18 +213,15 @@ void Change_User(User * u, const char *newnick)
|
||||||
char *oldnick;
|
char *oldnick;
|
||||||
|
|
||||||
strcpy (segv_location, "Change_User");
|
strcpy (segv_location, "Change_User");
|
||||||
nlog(LOG_DEBUG2, LOG_CORE, "Change_User(%s, %s)", u->nick,
|
nlog (LOG_DEBUG2, LOG_CORE, "Change_User(%s, %s)", u->nick, newnick);
|
||||||
newnick);
|
|
||||||
un = hash_lookup (uh, u->nick);
|
un = hash_lookup (uh, u->nick);
|
||||||
if (!un) {
|
if (!un) {
|
||||||
nlog(LOG_WARNING, LOG_CORE, "ChangeUser(%s) Failed!",
|
nlog (LOG_WARNING, LOG_CORE, "ChangeUser(%s) Failed!", u->nick);
|
||||||
u->nick);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cm = list_first (u->chans);
|
cm = list_first (u->chans);
|
||||||
while (cm) {
|
while (cm) {
|
||||||
change_user_nick(findchan(lnode_get(cm)), (char *) newnick,
|
change_user_nick (findchan (lnode_get (cm)), (char *) newnick, u->nick);
|
||||||
u->nick);
|
|
||||||
cm = list_next (u->chans, cm);
|
cm = list_next (u->chans, cm);
|
||||||
}
|
}
|
||||||
strcpy (segv_location, "Change_User_Return");
|
strcpy (segv_location, "Change_User_Return");
|
||||||
|
@ -234,7 +237,9 @@ void Change_User(User * u, const char *newnick)
|
||||||
free (av);
|
free (av);
|
||||||
free (oldnick);
|
free (oldnick);
|
||||||
}
|
}
|
||||||
void sendcoders(char *message, ...)
|
|
||||||
|
void
|
||||||
|
sendcoders (char *message, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char tmp[512];
|
char tmp[512];
|
||||||
|
@ -249,7 +254,8 @@ void sendcoders(char *message, ...)
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
User *finduser(const char *nick)
|
User *
|
||||||
|
finduser (const char *nick)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
hnode_t *un;
|
hnode_t *un;
|
||||||
|
@ -259,21 +265,22 @@ User *finduser(const char *nick)
|
||||||
u = hnode_get (un);
|
u = hnode_get (un);
|
||||||
return u;
|
return u;
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_DEBUG2, LOG_CORE, "FindUser(%s) -> NOTFOUND",
|
nlog (LOG_DEBUG2, LOG_CORE, "FindUser(%s) -> NOTFOUND", nick);
|
||||||
nick);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void init_user_hash()
|
void
|
||||||
|
init_user_hash ()
|
||||||
{
|
{
|
||||||
uh = hash_create (U_TABLE_SIZE, 0, 0);
|
uh = hash_create (U_TABLE_SIZE, 0, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserDump(char *nick)
|
void
|
||||||
|
UserDump (char *nick)
|
||||||
{
|
{
|
||||||
User *u;
|
User *u;
|
||||||
hnode_t *un;
|
hnode_t *un;
|
||||||
|
@ -288,8 +295,7 @@ void UserDump(char *nick)
|
||||||
sendcoders ("User: %s", u->nick);
|
sendcoders ("User: %s", u->nick);
|
||||||
cm = list_first (u->chans);
|
cm = list_first (u->chans);
|
||||||
while (cm) {
|
while (cm) {
|
||||||
sendcoders(" Chans: %s",
|
sendcoders (" Chans: %s", (char *) lnode_get (cm));
|
||||||
(char *) lnode_get(cm));
|
|
||||||
cm = list_next (u->chans, cm);
|
cm = list_next (u->chans, cm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -300,8 +306,7 @@ void UserDump(char *nick)
|
||||||
sendcoders ("User: %s", u->nick);
|
sendcoders ("User: %s", u->nick);
|
||||||
cm = list_first (u->chans);
|
cm = list_first (u->chans);
|
||||||
while (cm) {
|
while (cm) {
|
||||||
sendcoders(" Chans: %s",
|
sendcoders (" Chans: %s", (char *) lnode_get (cm));
|
||||||
(char *) lnode_get(cm));
|
|
||||||
cm = list_next (u->chans, cm);
|
cm = list_next (u->chans, cm);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -310,7 +315,8 @@ void UserDump(char *nick)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int UserLevel(User * u)
|
int
|
||||||
|
UserLevel (User * u)
|
||||||
{
|
{
|
||||||
int i, tmplvl = 0;
|
int i, tmplvl = 0;
|
||||||
#ifdef EXTAUTH
|
#ifdef EXTAUTH
|
||||||
|
@ -324,21 +330,18 @@ int UserLevel(User * u)
|
||||||
tmplvl = usr_mds[i].level;
|
tmplvl = usr_mds[i].level;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "Umode Level for %s is %d", u->nick,
|
nlog (LOG_DEBUG1, LOG_CORE, "Umode Level for %s is %d", u->nick, tmplvl);
|
||||||
tmplvl);
|
|
||||||
|
|
||||||
/* I hate SMODEs damn it */
|
/* I hate SMODEs damn it */
|
||||||
#ifdef ULTIMATE3
|
#ifdef ULTIMATE3
|
||||||
for (i = 0; i < ((sizeof(susr_mds) / sizeof(susr_mds[0])) - 1);
|
for (i = 0; i < ((sizeof (susr_mds) / sizeof (susr_mds[0])) - 1); i++) {
|
||||||
i++) {
|
|
||||||
if (u->Smode & susr_mds[i].umodes) {
|
if (u->Smode & susr_mds[i].umodes) {
|
||||||
if (susr_mds[i].level > tmplvl)
|
if (susr_mds[i].level > tmplvl)
|
||||||
tmplvl = susr_mds[i].level;
|
tmplvl = susr_mds[i].level;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "Smode Level for %s is %d", u->nick,
|
nlog (LOG_DEBUG1, LOG_CORE, "Smode Level for %s is %d", u->nick, tmplvl);
|
||||||
tmplvl);
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#ifdef CODERHACK
|
#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 :) */
|
/* 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,
|
nlog (LOG_DEBUG1, LOG_CORE, "UserLevel for %s is %d (%d)", u->nick, tmplvl, i);
|
||||||
tmplvl, i);
|
|
||||||
return tmplvl;
|
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 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..
|
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");
|
strcpy (segv_location, "UserMode");
|
||||||
u = finduser (nick);
|
u = finduser (nick);
|
||||||
if (!u) {
|
if (!u) {
|
||||||
nlog(LOG_WARNING, LOG_CORE,
|
nlog (LOG_WARNING, LOG_CORE, "Warning, Changing Modes for a Unknown User %s!", nick);
|
||||||
"Warning, Changing Modes for a Unknown User %s!",
|
|
||||||
nick);
|
|
||||||
nlog (LOG_DEBUG1, LOG_CORE, "Recbuf: %s", recbuf);
|
nlog (LOG_DEBUG1, LOG_CORE, "Recbuf: %s", recbuf);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -415,39 +416,25 @@ void UserMode(const char *nick, const char *modes, int smode)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (smode > 0) {
|
if (smode > 0) {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (susr_mds) / sizeof (susr_mds[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(susr_mds) /
|
|
||||||
sizeof(susr_mds[0])) - 1); i++) {
|
|
||||||
if (susr_mds[i].mode == tmpmode) {
|
if (susr_mds[i].mode == tmpmode) {
|
||||||
if (add) {
|
if (add) {
|
||||||
u->Smode |=
|
u->Smode |= susr_mds[i].umodes;
|
||||||
susr_mds[i].
|
|
||||||
umodes;
|
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
u->Smode &=
|
u->Smode &= ~susr_mds[i].umodes;
|
||||||
~susr_mds[i].
|
|
||||||
umodes;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i = 0;
|
for (i = 0; i < ((sizeof (usr_mds) / sizeof (usr_mds[0])) - 1); i++) {
|
||||||
i <
|
|
||||||
((sizeof(usr_mds) /
|
|
||||||
sizeof(usr_mds[0])) - 1); i++) {
|
|
||||||
if (usr_mds[i].mode == tmpmode) {
|
if (usr_mds[i].mode == tmpmode) {
|
||||||
if (add) {
|
if (add) {
|
||||||
u->Umode |=
|
u->Umode |= usr_mds[i].umodes;
|
||||||
usr_mds[i].
|
|
||||||
umodes;
|
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
u->Umode &=
|
u->Umode &= ~usr_mds[i].umodes;
|
||||||
~usr_mds[i].
|
|
||||||
umodes;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -457,12 +444,10 @@ void UserMode(const char *nick, const char *modes, int smode)
|
||||||
tmpmode = *modes++;
|
tmpmode = *modes++;
|
||||||
}
|
}
|
||||||
if (smode > 0) {
|
if (smode > 0) {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "SMODE for %s is are now %p",
|
nlog (LOG_DEBUG1, LOG_CORE, "SMODE for %s is are now %p", u->nick, u->Smode);
|
||||||
u->nick, u->Smode);
|
|
||||||
Module_Event ("SMODE", av, ac);
|
Module_Event ("SMODE", av, ac);
|
||||||
} else {
|
} else {
|
||||||
nlog(LOG_DEBUG1, LOG_CORE, "Modes for %s are now %p",
|
nlog (LOG_DEBUG1, LOG_CORE, "Modes for %s are now %p", u->nick, u->Umode);
|
||||||
u->nick, u->Umode);
|
|
||||||
Module_Event ("UMODE", av, ac);
|
Module_Event ("UMODE", av, ac);
|
||||||
}
|
}
|
||||||
free (av);
|
free (av);
|
||||||
|
|
Reference in a new issue