Ultimate is ported over. NOT TESTED. don't rotate empty log files
This commit is contained in:
parent
ec00409989
commit
dcf8e51d09
6 changed files with 639 additions and 144 deletions
|
@ -10,6 +10,7 @@ NeoStats ChangeLog - Anything we add/remove/fix/change is in here (even our rant
|
|||
- Only opers can stats m
|
||||
- First Pass of Spliting up ircd.c to make IRCD porting easier
|
||||
- Added some Doco Updates from M, and connectserv cleanups
|
||||
- Don't rotate empty log files!
|
||||
|
||||
* NeoStats * Fish * Version 2.5.3
|
||||
- Added ability to turn off StatServ wallops. "/msg statserv set msgthrottle off" - BugID#6
|
||||
|
|
616
Ultimate.c
616
Ultimate.c
|
@ -20,42 +20,118 @@
|
|||
** USA
|
||||
**
|
||||
** NeoStats CVS Identification
|
||||
** $Id: Ultimate.c,v 1.48 2003/06/13 13:11:48 fishwaldo Exp $
|
||||
** $Id: Ultimate.c,v 1.49 2003/06/24 14:12:47 fishwaldo Exp $
|
||||
*/
|
||||
|
||||
#include "stats.h"
|
||||
#include "ircd.h"
|
||||
#include "Ultimate.h"
|
||||
#include "dl.h"
|
||||
#include "log.h"
|
||||
|
||||
void sts(char *fmt, ...);
|
||||
|
||||
IntCommands cmd_list[] = {
|
||||
/* Command Function srvmsg */
|
||||
{MSG_STATS, Usr_Stats, 1, 0},
|
||||
{TOK_STATS, Usr_Stats, 1, 0},
|
||||
{MSG_SETHOST, Usr_Vhost, 1, 0},
|
||||
{TOK_SETHOST, Usr_Vhost, 1, 0},
|
||||
{MSG_VERSION, Usr_Version, 1, 0},
|
||||
{TOK_VERSION, Usr_Version, 1, 0},
|
||||
{MSG_MOTD, Usr_ShowMOTD, 1, 0},
|
||||
{TOK_MOTD, Usr_ShowMOTD, 1, 0},
|
||||
{MSG_CREDITS, Usr_Showcredits, 1, 0},
|
||||
{TOK_CREDITS, Usr_Showcredits, 1, 0},
|
||||
{MSG_SERVER, Usr_AddServer, 1, 0},
|
||||
{TOK_SERVER, Usr_AddServer, 1, 0},
|
||||
{MSG_SQUIT, Usr_DelServer, 1, 0},
|
||||
{TOK_SQUIT, Usr_DelServer, 1, 0},
|
||||
{MSG_QUIT, Usr_DelUser, 1, 0},
|
||||
{TOK_QUIT, Usr_DelUser, 1, 0},
|
||||
{MSG_MODE, Usr_Mode, 1, 0},
|
||||
{TOK_MODE, Usr_Mode, 1, 0},
|
||||
{MSG_SVSMODE, Usr_Smode, 1, 0},
|
||||
{TOK_SVSMODE, Usr_Smode, 1, 0},
|
||||
{MSG_KILL, Usr_Kill, 1, 0},
|
||||
{TOK_KILL, Usr_Kill, 1, 0},
|
||||
{MSG_PONG, Usr_Pong, 1, 0},
|
||||
{TOK_PONG, Usr_Pong, 1, 0},
|
||||
{MSG_AWAY, Usr_Away, 1, 0},
|
||||
{TOK_AWAY, Usr_Away, 1, 0},
|
||||
{MSG_NICK, Usr_Nick, 1, 0},
|
||||
{TOK_NICK, Usr_Nick, 1, 0},
|
||||
{MSG_TOPIC, Usr_Topic, 1, 0},
|
||||
{TOK_TOPIC, Usr_Topic, 1, 0},
|
||||
{MSG_KICK, Usr_Kick, 1, 0},
|
||||
{TOK_KICK, Usr_Kick, 1, 0},
|
||||
{MSG_JOIN, Usr_Join, 1, 0},
|
||||
{TOK_JOIN, Usr_Join, 1, 0},
|
||||
{MSG_PART, Usr_Part, 1, 0},
|
||||
{TOK_PART, Usr_Part, 1, 0},
|
||||
{MSG_PING, Srv_Ping, 0, 0},
|
||||
{TOK_PING, Srv_Ping, 0, 0},
|
||||
#ifndef ULTIMATE3
|
||||
{MSG_SNETINFO, Srv_Netinfo, 0, 0},
|
||||
{TOK_SNETINFO, Srv_Netinfo, 0, 0},
|
||||
|
||||
#endif
|
||||
#ifdef ULTIMATE3
|
||||
{MSG_SVINFO, Srv_Svinfo, 0, 0},
|
||||
{MSG_CAPAB, Srv_Connect, 0, 0},
|
||||
{MSG_BURST, Srv_Burst, 0, 0},
|
||||
{MSG_SJOIN, Srv_Sjoin, 1, 0},
|
||||
{MSG_CLIENT, Srv_Client, 0, 0},
|
||||
{MSG_SMODE, Srv_Smode, 1, 0},
|
||||
#endif
|
||||
{MSG_VCTRL, Srv_Vctrl, 0, 0},
|
||||
{TOK_VCTRL, Srv_Vctrl, 0, 0},
|
||||
{MSG_PASS, Srv_Pass, 0, 0},
|
||||
{TOK_PASS, Srv_Pass, 0, 0},
|
||||
{MSG_SERVER, Srv_Server, 0, 0},
|
||||
{TOK_SERVER, Srv_Server, 0, 0},
|
||||
{MSG_SQUIT, Srv_Squit, 0, 0},
|
||||
{TOK_SQUIT, Srv_Squit, 0, 0},
|
||||
{MSG_NICK, Srv_Nick, 0, 0},
|
||||
{TOK_NICK, Srv_Nick, 0, 0},
|
||||
{MSG_SVSNICK, Srv_Svsnick, 0, 0},
|
||||
{TOK_SVSNICK, Srv_Svsnick, 0, 0},
|
||||
{MSG_KILL, Srv_Kill, 0, 0},
|
||||
{TOK_KILL, Srv_Kill, 0, 0},
|
||||
{MSG_PROTOCTL, Srv_Connect, 0, 0},
|
||||
{TOK_PROTOCTL, Srv_Connect, 0, 0},
|
||||
{NULL, NULL, 0, 0}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
aCtab cFlagTab[] = {
|
||||
{MODE_BAN, 'b', 0, 1},
|
||||
{MODE_EXCEPT, 'e', 0, 1},
|
||||
{MODE_FLOODLIMIT, 'f', 0, 1}, /* Flood limiter */
|
||||
{MODE_HALFOP, 'h', 1, 0},
|
||||
{MODE_CHANADMIN, 'a', 1, 0},
|
||||
{MODE_INVITEONLY, 'i', 0, 0},
|
||||
{MODE_KEY, 'k', 0, 1},
|
||||
{MODE_LIMIT, 'l', 0, 1},
|
||||
{MODE_MODERATED, 'm', 0, 0},
|
||||
{MODE_NOPRIVMSGS, 'n', 0, 0},
|
||||
{MODE_CHANOP, 'o', 1, 0},
|
||||
{MODE_PRIVATE, 'p', 0, 0},
|
||||
{MODE_RGSTR, 'r', 0, 0},
|
||||
{MODE_SECRET, 's', 0, 0},
|
||||
{MODE_TOPICLIMIT, 't', 0, 0},
|
||||
{MODE_VOICE, 'v', 1, 0},
|
||||
{MODE_NOCOLOR, 'x', 0, 0},
|
||||
{MODE_ADMONLY, 'A', 0, 0},
|
||||
{MODE_NOINVITE, 'I', 0, 0}, /* no invites */
|
||||
{MODE_NOKNOCK, 'K', 0, 0}, /* knock knock (no way!) */
|
||||
{MODE_LINK, 'L', 0, 1},
|
||||
{MODE_OPERONLY, 'O', 0, 0},
|
||||
{MODE_RGSTRONLY, 'R', 0, 0},
|
||||
{MODE_STRIP, 'S', 0, 0}, /* works? */
|
||||
{0x0, 0x0, 0x0, 0x0}
|
||||
{MODE_CHANOP, 'o', 1, 0, '@'},
|
||||
{MODE_HALFOP, 'h', 1, 0, '%'},
|
||||
{MODE_CHANADMIN, 'a', 1, 0, '!'},
|
||||
{MODE_VOICE, 'v', 1, 0, '+'},
|
||||
{MODE_BAN, 'b', 0, 1, 0},
|
||||
{MODE_EXCEPT, 'e', 0, 1, 0},
|
||||
{MODE_FLOODLIMIT, 'f', 0, 1, 0}, /* Flood limiter */
|
||||
{MODE_INVITEONLY, 'i', 0, 0, 0},
|
||||
{MODE_KEY, 'k', 0, 1, 0},
|
||||
{MODE_LIMIT, 'l', 0, 1, 0},
|
||||
{MODE_MODERATED, 'm', 0, 0, 0},
|
||||
{MODE_NOPRIVMSGS, 'n', 0, 0, 0},
|
||||
{MODE_PRIVATE, 'p', 0, 0, 0},
|
||||
{MODE_RGSTR, 'r', 0, 0, 0},
|
||||
{MODE_SECRET, 's', 0, 0, 0},
|
||||
{MODE_TOPICLIMIT, 't', 0, 0, 0},
|
||||
{MODE_NOCOLOR, 'x', 0, 0, 0},
|
||||
{MODE_ADMONLY, 'A', 0, 0, 0},
|
||||
{MODE_NOINVITE, 'I', 0, 0, 0}, /* no invites */
|
||||
{MODE_NOKNOCK, 'K', 0, 0, 0}, /* knock knock (no way!) */
|
||||
{MODE_LINK, 'L', 0, 1, 0},
|
||||
{MODE_OPERONLY, 'O', 0, 0, 0},
|
||||
{MODE_RGSTRONLY, 'R', 0, 0, 0},
|
||||
{MODE_STRIP, 'S', 0, 0, 0}, /* works? */
|
||||
{0x0, 0x0, 0x0, 0x0, 0x0}
|
||||
};
|
||||
|
||||
|
||||
|
@ -133,16 +209,11 @@ Oper_Modes usr_mds[] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void init_ircd()
|
||||
{
|
||||
/* count the number of commands */
|
||||
ircd_srv.cmdcount = ((sizeof(cmd_list) / sizeof(cmd_list[0])) -1);
|
||||
};
|
||||
|
||||
int sserver_cmd(const char *name, const int numeric, const char *infoline)
|
||||
{
|
||||
|
@ -282,11 +353,7 @@ int snewnick_cmd(const char *nick, const char *ident, const char *host,
|
|||
(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));
|
||||
#ifdef ULTIMATE3
|
||||
UserMode(nick, newmode, 0);
|
||||
#else
|
||||
UserMode(nick, newmode);
|
||||
#endif
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
@ -314,11 +381,7 @@ int sumode_cmd(const char *who, const char *target, long mode)
|
|||
newmode[j] = '\0';
|
||||
sts(":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target,
|
||||
newmode);
|
||||
#ifdef ULTIMATE3
|
||||
UserMode(target, newmode, 0);
|
||||
#else
|
||||
UserMode(target, newmode);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -631,3 +694,468 @@ void globops(char *from, char *fmt, ...)
|
|||
}
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
|
||||
void Srv_Sjoin(char *origin, char **argv, int argc)
|
||||
{
|
||||
char nick[MAXNICK];
|
||||
long mode = 0;
|
||||
long mode1 = 0;
|
||||
char *modes;
|
||||
int ok = 1, i, j = 3;
|
||||
ModesParm *m;
|
||||
Chans *c;
|
||||
lnode_t *mn = NULL;
|
||||
list_t *tl;
|
||||
if (argc <= 2) {
|
||||
modes = argv[1];
|
||||
} else {
|
||||
modes = argv[2];
|
||||
}
|
||||
|
||||
if (*modes == '#') {
|
||||
join_chan(finduser(origin), modes);
|
||||
return;
|
||||
}
|
||||
tl = list_create(10);
|
||||
|
||||
if (*modes != '+') {
|
||||
goto nomodes;
|
||||
}
|
||||
while (*modes) {
|
||||
for (i = 0;
|
||||
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
|
||||
i++) {
|
||||
if (*modes == cFlagTab[i].flag) {
|
||||
if (cFlagTab[i].parameters) {
|
||||
m = smalloc(sizeof(ModesParm));
|
||||
m->mode = cFlagTab[i].mode;
|
||||
strncpy(m->param, argv[j],
|
||||
PARAMSIZE);
|
||||
mn = lnode_create(m);
|
||||
if (!list_isfull(tl)) {
|
||||
list_append(tl, mn);
|
||||
} else {
|
||||
nlog(LOG_CRITICAL,
|
||||
LOG_CORE,
|
||||
"Eeeek, tl list is full in Svr_Sjoin(ircd.c)");
|
||||
do_exit(0);
|
||||
}
|
||||
j++;
|
||||
} else {
|
||||
mode1 |= cFlagTab[i].mode;
|
||||
}
|
||||
}
|
||||
}
|
||||
modes++;
|
||||
}
|
||||
nomodes:
|
||||
while (argc > j) {
|
||||
modes = argv[j];
|
||||
mode = 0;
|
||||
while (ok == 1) {
|
||||
for (i = 0;i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -1); i++) {
|
||||
if (cFlagTab[i].sjoin != 0) {
|
||||
if (*modes == cFlagTab[i].sjoin) {
|
||||
mode |= cFlagTab[i].mode;
|
||||
modes++;
|
||||
}
|
||||
}
|
||||
}
|
||||
strncpy(nick, modes, MAXNICK);
|
||||
ok = 0;
|
||||
break;
|
||||
}
|
||||
join_chan(finduser(nick), argv[1]);
|
||||
ChangeChanUserMode(findchan(argv[1]), finduser(nick), 1,
|
||||
mode);
|
||||
j++;
|
||||
ok = 1;
|
||||
}
|
||||
c = findchan(argv[1]);
|
||||
c->modes |= mode1;
|
||||
if (!list_isempty(tl)) {
|
||||
if (!list_isfull(c->modeparms)) {
|
||||
list_transfer(c->modeparms, tl, list_first(tl));
|
||||
} else {
|
||||
/* eeeeeeek, list is full! */
|
||||
nlog(LOG_CRITICAL, LOG_CORE,
|
||||
"Eeeek, c->modeparms list is full in Svr_Sjoin(ircd.c)");
|
||||
do_exit(0);
|
||||
}
|
||||
}
|
||||
list_destroy(tl);
|
||||
}
|
||||
|
||||
void Srv_Burst(char *origin, char **argv, int argc)
|
||||
{
|
||||
if (argc > 0) {
|
||||
if (ircd_srv.burst == 1) {
|
||||
sburst_cmd(0);
|
||||
ircd_srv.burst = 0;
|
||||
me.synced = 1;
|
||||
init_ServBot();
|
||||
}
|
||||
} else {
|
||||
ircd_srv.burst = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void Srv_Connect(char *origin, char **argv, int argc)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < argc; i++) {
|
||||
if (!strcasecmp("TOKEN", argv[i])) {
|
||||
me.token = 1;
|
||||
}
|
||||
#ifdef ULTIMATE3
|
||||
if (!strcasecmp("CLIENT", argv[i])) {
|
||||
me.client = 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Usr_Stats(char *origin, char **argv, int argc)
|
||||
{
|
||||
User *u;
|
||||
u = finduser(origin);
|
||||
if (!u) {
|
||||
nlog(LOG_WARNING, LOG_CORE,
|
||||
"Recieved a Message from a Unknown User! (%s)",
|
||||
origin);
|
||||
return;
|
||||
}
|
||||
ShowStats(argv[0], u);
|
||||
}
|
||||
|
||||
void Usr_Version(char *origin, char **argv, int argc)
|
||||
{
|
||||
snumeric_cmd(351, origin, "%d.%d.%d%s :%s -> %s %s", MAJOR, MINOR,
|
||||
REV, version, me.name, version_date, version_time);
|
||||
}
|
||||
void Usr_ShowMOTD(char *origin, char **argv, int argc)
|
||||
{
|
||||
ShowMOTD(origin);
|
||||
}
|
||||
void Usr_ShowADMIN(char *origin, char **argv, int argc)
|
||||
{
|
||||
ShowADMIN(origin);
|
||||
}
|
||||
void Usr_Showcredits(char *origin, char **argv, int argc)
|
||||
{
|
||||
Showcredits(origin);
|
||||
}
|
||||
void Usr_AddServer(char *origin, char **argv, int argc)
|
||||
{
|
||||
AddServer(argv[0], origin, atoi(argv[1]));
|
||||
}
|
||||
void Usr_DelServer(char *origin, char **argv, int argc)
|
||||
{
|
||||
DelServer(argv[0]);
|
||||
}
|
||||
void Usr_DelUser(char *origin, char **argv, int argc)
|
||||
{
|
||||
DelUser(origin);
|
||||
}
|
||||
void Usr_Smode(char *origin, char **argv, int argc)
|
||||
{
|
||||
if (!strchr(argv[0], '#')) {
|
||||
/* its user svsmode change */
|
||||
UserMode(argv[0], argv[2], 0);
|
||||
} else {
|
||||
/* its a channel svsmode change */
|
||||
ChanMode(origin, argv, argc);
|
||||
}
|
||||
}
|
||||
void Usr_Mode(char *origin, char **argv, int argc)
|
||||
{
|
||||
if (!strchr(argv[0], '#')) {
|
||||
nlog(LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[0]);
|
||||
UserMode(argv[0], argv[1], 0);
|
||||
} else {
|
||||
ChanMode(origin, argv, argc);
|
||||
}
|
||||
}
|
||||
void Usr_Kill(char *origin, char **argv, int argc)
|
||||
{
|
||||
User *u;
|
||||
#if 0
|
||||
Mod_User *mod_ptr;
|
||||
#endif
|
||||
char **av;
|
||||
int ac = 0;
|
||||
|
||||
#if 0
|
||||
mod_ptr = findbot(argv[0]);
|
||||
if (mod_ptr) { /* Oh Oh, one of our Bots has been Killed off! */
|
||||
AddStringToList(&av, argv[0], &ac);
|
||||
Module_Event("BOTKILL", av, ac);
|
||||
free(av);
|
||||
// FreeList(av, ac);
|
||||
DelUser(argv[0]);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
u = finduser(argv[0]);
|
||||
if (u) {
|
||||
AddStringToList(&av, u->nick, &ac);
|
||||
Module_Event("KILL", av, ac);
|
||||
free(av);
|
||||
DelUser(argv[0]);
|
||||
}
|
||||
}
|
||||
void Usr_Vhost(char *origin, char **argv, int argc)
|
||||
{
|
||||
User *u;
|
||||
#ifndef ULTIMATE3
|
||||
u = finduser(origin);
|
||||
#else
|
||||
u = finduser(argv[0]);
|
||||
#endif
|
||||
if (u) {
|
||||
#ifndef ULTIMATE3
|
||||
strncpy(u->vhost, argv[0], MAXHOST);
|
||||
#else
|
||||
strncpy(u->vhost, argv[1], MAXHOST);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
void Usr_Pong(char *origin, char **argv, int argc)
|
||||
{
|
||||
Server *s;
|
||||
s = findserver(argv[0]);
|
||||
if (s) {
|
||||
dopong(s);
|
||||
} else {
|
||||
nlog(LOG_NOTICE, LOG_CORE,
|
||||
"Received PONG from unknown server: %s", argv[0]);
|
||||
}
|
||||
}
|
||||
void Usr_Away(char *origin, char **argv, int argc)
|
||||
{
|
||||
char *Buf;
|
||||
User *u = finduser(origin);
|
||||
if (u) {
|
||||
if (argc > 0) {
|
||||
Buf = joinbuf(argv, argc, 0);
|
||||
} else {
|
||||
Buf = NULL;
|
||||
}
|
||||
Do_Away(u, Buf);
|
||||
if (argc > 0) {
|
||||
free(Buf);
|
||||
}
|
||||
} else {
|
||||
nlog(LOG_NOTICE, LOG_CORE,
|
||||
"Warning, Unable to find User %s for Away", origin);
|
||||
}
|
||||
}
|
||||
void Usr_Nick(char *origin, char **argv, int argc)
|
||||
{
|
||||
User *u = finduser(origin);
|
||||
if (u) {
|
||||
Change_User(u, argv[0]);
|
||||
}
|
||||
}
|
||||
void Usr_Topic(char *origin, char **argv, int argc)
|
||||
{
|
||||
char *buf;
|
||||
Chans *c;
|
||||
c = findchan(argv[0]);
|
||||
if (c) {
|
||||
buf = joinbuf(argv, argc, 3);
|
||||
Change_Topic(argv[1], c, atoi(argv[2]), buf);
|
||||
free(buf);
|
||||
} else {
|
||||
nlog(LOG_WARNING, LOG_CORE, "Ehhh, Can't find Channel %s",
|
||||
argv[0]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Usr_Kick(char *origin, char **argv, int argc)
|
||||
{
|
||||
User *u;
|
||||
u = finduser(argv[1]);
|
||||
if (u) {
|
||||
kick_chan(u, argv[0]);
|
||||
} else {
|
||||
nlog(LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for kick %s", argv[1], argv[0]);
|
||||
}
|
||||
}
|
||||
void Usr_Join(char *origin, char **argv, int argc)
|
||||
{
|
||||
char *s, *t;
|
||||
t = argv[0];
|
||||
while (*(s = t)) {
|
||||
t = s + strcspn(s, ",");
|
||||
if (*t)
|
||||
*t++ = 0;
|
||||
join_chan(finduser(origin), s);
|
||||
}
|
||||
}
|
||||
void Usr_Part(char *origin, char **argv, int argc)
|
||||
{
|
||||
part_chan(finduser(origin), argv[0]);
|
||||
}
|
||||
void Srv_Ping(char *origin, char **argv, int argc)
|
||||
{
|
||||
spong_cmd(argv[0]);
|
||||
#ifdef ULTIMATE3
|
||||
if (ircd_srv.burst) {
|
||||
sping_cmd(me.name, argv[0], argv[0]);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void Srv_Vctrl(char *origin, char **argv, int argc)
|
||||
{
|
||||
ircd_srv.uprot = atoi(argv[0]);
|
||||
ircd_srv.nicklg = atoi(argv[1]);
|
||||
ircd_srv.modex = atoi(argv[2]);
|
||||
ircd_srv.gc = atoi(argv[3]);
|
||||
strncpy(me.netname, argv[14], MAXPASS);
|
||||
vctrl_cmd();
|
||||
}
|
||||
|
||||
void Srv_Svinfo(char *origin, char **argv, int argc)
|
||||
{
|
||||
ssvinfo_cmd();
|
||||
}
|
||||
|
||||
#ifndef ULTIMATE3
|
||||
void Srv_Netinfo(char *origin, char **argv, int argc)
|
||||
{
|
||||
me.onchan = 1;
|
||||
ircd_srv.uprot = atoi(argv[2]);
|
||||
strncpy(ircd_srv.cloak, argv[3], 10);
|
||||
strncpy(me.netname, argv[7], MAXPASS);
|
||||
|
||||
snetinfo_cmd();
|
||||
init_ServBot();
|
||||
globops(me.name, "Link with Network \2Complete!\2");
|
||||
#ifdef DEBUG
|
||||
ns_debug_to_coders(me.chan);
|
||||
#endif
|
||||
if (ircd_srv.uprot == 2109) {
|
||||
me.usesmo = 1;
|
||||
}
|
||||
Module_Event("NETINFO", NULL, 0);
|
||||
me.synced = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
void Srv_Pass(char *origin, char **argv, int argc)
|
||||
{
|
||||
}
|
||||
void Srv_Server(char *origin, char **argv, int argc)
|
||||
{
|
||||
Server *s;
|
||||
if (*origin == 0) {
|
||||
AddServer(argv[0], me.name, atoi(argv[1]));
|
||||
} else {
|
||||
AddServer(argv[0], origin, atoi(argv[1]));
|
||||
}
|
||||
s = findserver(argv[0]);
|
||||
me.s = s;
|
||||
}
|
||||
void Srv_Squit(char *origin, char **argv, int argc)
|
||||
{
|
||||
Server *s;
|
||||
s = findserver(argv[0]);
|
||||
if (s) {
|
||||
DelServer(argv[0]);
|
||||
} else {
|
||||
nlog(LOG_WARNING, LOG_CORE,
|
||||
"Waring, Squit from Unknown Server %s", argv[0]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* BE REALLY CAREFULL ABOUT THE ORDER OF THESE ifdef's */
|
||||
|
||||
void Srv_Nick(char *origin, char **argv, int argc)
|
||||
{
|
||||
char *realname;
|
||||
#if ULTIMATE3
|
||||
AddUser(argv[0], argv[4], argv[5], argv[6],
|
||||
strtoul(argv[8], NULL, 10), strtoul(argv[2], NULL, 10));
|
||||
realname = joinbuf(argv, argc, 9);
|
||||
AddRealName(argv[0], realname);
|
||||
free(realname);
|
||||
nlog(LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[3]);
|
||||
UserMode(argv[0], argv[3], 0);
|
||||
#elif ULTIMATE
|
||||
AddUser(argv[0], argv[3], argv[4], argv[5], 0,
|
||||
strtoul(argv[2], NULL, 10));
|
||||
realname = joinbuf(argv, argc, 7);
|
||||
AddRealName(argv[0], realname);
|
||||
free(realname);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Ultimate3 Client Support */
|
||||
#ifdef ULTIMATE3
|
||||
void Srv_Client(char *origin, char **argv, int argc)
|
||||
{
|
||||
char *realname;
|
||||
|
||||
AddUser(argv[0], argv[5], argv[6], argv[8],
|
||||
strtoul(argv[10], NULL, 10), strtoul(argv[2], NULL, 10));
|
||||
realname = joinbuf(argv, argc, 11);
|
||||
AddRealName(argv[0], realname);
|
||||
free(realname);
|
||||
nlog(LOG_DEBUG1, LOG_CORE, "Mode: UserMode: %s", argv[3]);
|
||||
UserMode(argv[0], argv[3], 0);
|
||||
nlog(LOG_DEBUG1, LOG_CORE, "Smode: SMode: %s", argv[4]);
|
||||
UserMode(argv[0], argv[4], 1);
|
||||
|
||||
}
|
||||
|
||||
void Srv_Smode(char *origin, char **argv, int argc)
|
||||
{
|
||||
UserMode(argv[0], argv[1], 1);
|
||||
};
|
||||
/* ultimate 3 */
|
||||
#endif
|
||||
|
||||
void Srv_Svsnick(char *origin, char **argv, int argc)
|
||||
{
|
||||
User *u;
|
||||
u = finduser(argv[0]);
|
||||
if (u) {
|
||||
Change_User(u, argv[1]);
|
||||
} else {
|
||||
nlog(LOG_WARNING, LOG_CORE, "Warning, Can't find user %s for SVSNICK", argv[0]);
|
||||
}
|
||||
|
||||
}
|
||||
void Srv_Kill(char *origin, char **argv, int argc)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern int SignOn_NewBot(const char *nick, const char *user,
|
||||
const char *host, const char *rname, long Umode)
|
||||
{
|
||||
|
||||
#ifdef ULTIMATE3
|
||||
snewnick_cmd(nick, user, host, rname, Umode);
|
||||
#else
|
||||
snewnick_cmd(nick, user, host, rname);
|
||||
sumode_cmd(nick, nick, Umode);
|
||||
#endif
|
||||
if ((me.allbots > 0) || (Umode & UMODE_SERVICES)) {
|
||||
#ifdef ULTIMATE3
|
||||
sjoin_cmd(nick, me.chan, MODE_CHANADMIN);
|
||||
#else /* ulitmate3 */
|
||||
sjoin_cmd(nick, me.chan);
|
||||
#endif
|
||||
schmode_cmd(nick, me.chan, "+a", nick);
|
||||
/* all bots join */
|
||||
}
|
||||
}
|
46
Ultimate.h
46
Ultimate.h
|
@ -20,7 +20,7 @@
|
|||
** USA
|
||||
**
|
||||
** NeoStats CVS Identification
|
||||
** $Id: Ultimate.h,v 1.20 2003/06/10 13:20:59 fishwaldo Exp $
|
||||
** $Id: Ultimate.h,v 1.21 2003/06/24 14:12:47 fishwaldo Exp $
|
||||
*/
|
||||
#ifndef ULTIMATE_H
|
||||
#define ULTIMATE_H
|
||||
|
@ -413,6 +413,7 @@ struct ircd_srv_ {
|
|||
int gc;
|
||||
char cloak[25];
|
||||
int burst;
|
||||
int cmdcount;
|
||||
} ircd_srv;
|
||||
|
||||
typedef struct {
|
||||
|
@ -420,6 +421,7 @@ typedef struct {
|
|||
char flag;
|
||||
unsigned nickparam : 1; /* 1 = yes 0 = no */
|
||||
unsigned parameters : 1;
|
||||
char sjoin;
|
||||
} aCtab;
|
||||
|
||||
|
||||
|
@ -479,5 +481,45 @@ extern int ssvinfo_cmd();
|
|||
extern int sburst_cmd(int b);
|
||||
extern int sakill_cmd(const char *host, const char *ident, const char *setby, const int length, const char *reason,...);
|
||||
extern int srakill_cmd(const char *host, const char *ident);
|
||||
int ssvshost_cmd(const char *who, const char *vhost);
|
||||
extern int ssvshost_cmd(const char *who, const char *vhost);
|
||||
|
||||
void Usr_Version(char *, char **, int argc);
|
||||
void Usr_ShowMOTD(char *, char **, int argc);
|
||||
void Usr_ShowADMIN(char *, char **, int argc);
|
||||
void Usr_Showcredits(char *, char **, int argc);
|
||||
void Usr_AddServer(char *, char **, int argc);
|
||||
void Usr_DelServer(char *, char **, int argc);
|
||||
void Usr_DelUser(char *, char **, int argc);
|
||||
void Usr_Mode(char *, char **, int argc);
|
||||
void Usr_Smode(char *, char **, int argc);
|
||||
void Usr_Kill(char *, char **, int argc);
|
||||
void Usr_Pong(char *, char **, int argc);
|
||||
void Usr_Away(char *, char **, int argc);
|
||||
void Usr_Nick(char *, char **, int argc);
|
||||
void Usr_Topic(char *, char **, int argc);
|
||||
void Usr_Kick(char *, char **, int argc);
|
||||
void Usr_Join(char *, char **, int argc);
|
||||
void Usr_Part(char *, char **, int argc);
|
||||
void Usr_Stats(char *, char **, int argc);
|
||||
void Usr_Vhost(char *, char **, int argc);
|
||||
void Srv_Topic(char *, char **, int argc);
|
||||
void Srv_Ping(char *, char **, int argc);
|
||||
void Srv_Netinfo(char *, char **, int argc);
|
||||
void Srv_Pass(char *, char **, int argc);
|
||||
void Srv_Server(char *, char **, int argc);
|
||||
void Srv_Squit(char *, char **, int argc);
|
||||
void Srv_Nick(char *, char **, int argc);
|
||||
void Srv_Svsnick(char *, char **, int argc);
|
||||
void Srv_Kill(char *, char **, int argc);
|
||||
void Srv_Connect(char *, char **, int argc);
|
||||
void Srv_Svinfo(char *, char **, int argc);
|
||||
void Srv_Burst(char *origin, char **argv, int argc);
|
||||
void Srv_Sjoin(char *origin, char **argv, int argc);
|
||||
void Srv_Tburst(char *origin, char **argv, int argc);
|
||||
void Srv_Vctrl(char *origin, char **argv, int argc);
|
||||
void Srv_Client(char *origin, char **argv, int argc);
|
||||
void Srv_Smode(char *origin, char **argv, int argc);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
|
73
ircd.c
73
ircd.c
|
@ -22,7 +22,7 @@
|
|||
** USA
|
||||
**
|
||||
** NeoStats CVS Identification
|
||||
** $Id: ircd.c,v 1.126 2003/06/20 12:24:27 fishwaldo Exp $
|
||||
** $Id: ircd.c,v 1.127 2003/06/24 14:12:47 fishwaldo Exp $
|
||||
*/
|
||||
#include <setjmp.h>
|
||||
#include "stats.h"
|
||||
|
@ -52,77 +52,6 @@ if "srvmsg" is defined, it means that the command must be prefixed by ":" indica
|
|||
#if defined(HYBRID7) || defined(NEOIRCD)
|
||||
#endif
|
||||
#ifdef ULTIMATE
|
||||
IntCommands cmd_list[] = {
|
||||
/* Command Function srvmsg */
|
||||
{MSG_STATS, Usr_Stats, 1, 0},
|
||||
{TOK_STATS, Usr_Stats, 1, 0},
|
||||
{MSG_SETHOST, Usr_Vhost, 1, 0},
|
||||
{TOK_SETHOST, Usr_Vhost, 1, 0},
|
||||
{MSG_VERSION, Usr_Version, 1, 0},
|
||||
{TOK_VERSION, Usr_Version, 1, 0},
|
||||
{MSG_MOTD, Usr_ShowMOTD, 1, 0},
|
||||
{TOK_MOTD, Usr_ShowMOTD, 1, 0},
|
||||
{MSG_CREDITS, Usr_Showcredits, 1, 0},
|
||||
{TOK_CREDITS, Usr_Showcredits, 1, 0},
|
||||
{MSG_SERVER, Usr_AddServer, 1, 0},
|
||||
{TOK_SERVER, Usr_AddServer, 1, 0},
|
||||
{MSG_SQUIT, Usr_DelServer, 1, 0},
|
||||
{TOK_SQUIT, Usr_DelServer, 1, 0},
|
||||
{MSG_QUIT, Usr_DelUser, 1, 0},
|
||||
{TOK_QUIT, Usr_DelUser, 1, 0},
|
||||
{MSG_MODE, Usr_Mode, 1, 0},
|
||||
{TOK_MODE, Usr_Mode, 1, 0},
|
||||
{MSG_SVSMODE, Usr_Smode, 1, 0},
|
||||
{TOK_SVSMODE, Usr_Smode, 1, 0},
|
||||
{MSG_KILL, Usr_Kill, 1, 0},
|
||||
{TOK_KILL, Usr_Kill, 1, 0},
|
||||
{MSG_PONG, Usr_Pong, 1, 0},
|
||||
{TOK_PONG, Usr_Pong, 1, 0},
|
||||
{MSG_AWAY, Usr_Away, 1, 0},
|
||||
{TOK_AWAY, Usr_Away, 1, 0},
|
||||
{MSG_NICK, Usr_Nick, 1, 0},
|
||||
{TOK_NICK, Usr_Nick, 1, 0},
|
||||
{MSG_TOPIC, Usr_Topic, 1, 0},
|
||||
{TOK_TOPIC, Usr_Topic, 1, 0},
|
||||
{MSG_KICK, Usr_Kick, 1, 0},
|
||||
{TOK_KICK, Usr_Kick, 1, 0},
|
||||
{MSG_JOIN, Usr_Join, 1, 0},
|
||||
{TOK_JOIN, Usr_Join, 1, 0},
|
||||
{MSG_PART, Usr_Part, 1, 0},
|
||||
{TOK_PART, Usr_Part, 1, 0},
|
||||
{MSG_PING, Srv_Ping, 0, 0},
|
||||
{TOK_PING, Srv_Ping, 0, 0},
|
||||
#ifndef ULTIMATE3
|
||||
{MSG_SNETINFO, Srv_Netinfo, 0, 0},
|
||||
{TOK_SNETINFO, Srv_Netinfo, 0, 0},
|
||||
|
||||
#endif
|
||||
#ifdef ULTIMATE3
|
||||
{MSG_SVINFO, Srv_Svinfo, 0, 0},
|
||||
{MSG_CAPAB, Srv_Connect, 0, 0},
|
||||
{MSG_BURST, Srv_Burst, 0, 0},
|
||||
{MSG_SJOIN, Srv_Sjoin, 1, 0},
|
||||
{MSG_CLIENT, Srv_Client, 0, 0},
|
||||
{MSG_SMODE, Srv_Smode, 1, 0},
|
||||
#endif
|
||||
{MSG_VCTRL, Srv_Vctrl, 0, 0},
|
||||
{TOK_VCTRL, Srv_Vctrl, 0, 0},
|
||||
{MSG_PASS, Srv_Pass, 0, 0},
|
||||
{TOK_PASS, Srv_Pass, 0, 0},
|
||||
{MSG_SERVER, Srv_Server, 0, 0},
|
||||
{TOK_SERVER, Srv_Server, 0, 0},
|
||||
{MSG_SQUIT, Srv_Squit, 0, 0},
|
||||
{TOK_SQUIT, Srv_Squit, 0, 0},
|
||||
{MSG_NICK, Srv_Nick, 0, 0},
|
||||
{TOK_NICK, Srv_Nick, 0, 0},
|
||||
{MSG_SVSNICK, Srv_Svsnick, 0, 0},
|
||||
{TOK_SVSNICK, Srv_Svsnick, 0, 0},
|
||||
{MSG_KILL, Srv_Kill, 0, 0},
|
||||
{TOK_KILL, Srv_Kill, 0, 0},
|
||||
{MSG_PROTOCTL, Srv_Connect, 0, 0},
|
||||
{TOK_PROTOCTL, Srv_Connect, 0, 0},
|
||||
{NULL, NULL, 0, 0}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
|
|
36
log.c
36
log.c
|
@ -20,7 +20,7 @@
|
|||
** USA
|
||||
**
|
||||
** NeoStats CVS Identification
|
||||
** $Id: log.c,v 1.8 2003/06/13 13:11:49 fishwaldo Exp $
|
||||
** $Id: log.c,v 1.9 2003/06/24 14:12:47 fishwaldo Exp $
|
||||
*/
|
||||
|
||||
#include "stats.h"
|
||||
|
@ -180,25 +180,25 @@ void ResetLogs()
|
|||
if (logentry->flush > 0) {
|
||||
fflush(logentry->logfile);
|
||||
logentry->flush = 0;
|
||||
}
|
||||
#ifdef DEBUG
|
||||
printf("Closing Logfile %s (%s)\n", logentry->name,
|
||||
(char *) hnode_getkey(hn));
|
||||
printf("Closing Logfile %s (%s)\n", logentry->name,
|
||||
(char *) hnode_getkey(hn));
|
||||
#endif
|
||||
fclose(logentry->logfile);
|
||||
if (!strcasecmp(logentry->name, "core")) {
|
||||
strftime(tmp, 255, "logs/NeoStats-%m-%d.log",
|
||||
localtime(&t));
|
||||
rename("logs/NeoStats.log", tmp);
|
||||
logentry->logfile =
|
||||
fopen("logs/NeoStats.log", "a");
|
||||
} else {
|
||||
strftime(tmp2, 255, "%m-%d.log", localtime(&t));
|
||||
snprintf(tmp, 255, "logs/%s-%s", logentry->name,
|
||||
tmp2);
|
||||
snprintf(tmp2, 255, "logs/%s.log", logentry->name);
|
||||
rename(tmp2, tmp);
|
||||
logentry->logfile = fopen(tmp2, "a");
|
||||
fclose(logentry->logfile);
|
||||
if (!strcasecmp(logentry->name, "core")) {
|
||||
strftime(tmp, 255, "logs/NeoStats-%m-%d.log",
|
||||
localtime(&t));
|
||||
rename("logs/NeoStats.log", tmp);
|
||||
logentry->logfile =
|
||||
fopen("logs/NeoStats.log", "a");
|
||||
} else {
|
||||
strftime(tmp2, 255, "%m-%d.log", localtime(&t));
|
||||
snprintf(tmp, 255, "logs/%s-%s", logentry->name,
|
||||
tmp2);
|
||||
snprintf(tmp2, 255, "logs/%s.log", logentry->name);
|
||||
rename(tmp2, tmp);
|
||||
logentry->logfile = fopen(tmp2, "a");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
11
neoircd.c
11
neoircd.c
|
@ -18,7 +18,7 @@
|
|||
** USA
|
||||
**
|
||||
** NeoStats CVS Identification
|
||||
** $Id: neoircd.c,v 1.15 2003/06/13 13:11:49 fishwaldo Exp $
|
||||
** $Id: neoircd.c,v 1.16 2003/06/24 14:12:47 fishwaldo Exp $
|
||||
*/
|
||||
|
||||
#include "stats.h"
|
||||
|
@ -555,9 +555,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
|||
goto nomodes;
|
||||
}
|
||||
while (*modes) {
|
||||
for (i = 0;
|
||||
i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1);
|
||||
i++) {
|
||||
for (i = 0; i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) - 1); i++) {
|
||||
if (*modes == cFlagTab[i].flag) {
|
||||
if (cFlagTab[i].parameters) {
|
||||
m = smalloc(sizeof(ModesParm));
|
||||
|
@ -586,10 +584,7 @@ void Srv_Sjoin(char *origin, char **argv, int argc)
|
|||
modes = argv[j];
|
||||
mode = 0;
|
||||
while (ok == 1) {
|
||||
for (i = 0;
|
||||
i <
|
||||
((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -
|
||||
1); i++) {
|
||||
for (i = 0;i < ((sizeof(cFlagTab) / sizeof(cFlagTab[0])) -1); i++) {
|
||||
if (cFlagTab[i].sjoin != 0) {
|
||||
if (*modes == cFlagTab[i].sjoin) {
|
||||
mode |= cFlagTab[i].mode;
|
||||
|
|
Reference in a new issue