More updates to CrossIRCD support. a Crazy hack for compiler warning

messages as well
This commit is contained in:
fishwaldo 2002-03-05 12:59:58 +00:00
parent d016d87a46
commit 71c540f825
13 changed files with 157 additions and 102 deletions

View file

@ -15,6 +15,7 @@
void sts(char *fmt,...);
void init_ircd() {
if (usr_mds);
};
@ -82,12 +83,39 @@ int sumode_cmd(const char *who, const char *target, long mode) {
}
}
sts(":%s %s %s :%s", who, (me.token ? TOK_MODE : MSG_MODE), target, newmode);
/* TODO usermode is broken (expects mode to start with :) fix it! */
UserMode(target, newmode);
return 1;
}
int snumeric_cmd(const int numeric, const char *target, const char *data,...) {
va_list ap;
char buf[512];
va_start(ap, data);
vsnprintf(buf, 512, data, ap);
sts(":%s %d %s :%s", me.name, numeric, target, buf);
va_end(ap);
return 1;
}
int spong_cmd(const char *reply) {
sts("%s %s", (me.token ? TOK_PONG : MSG_PONG), reply);
return 1;
}
int snetinfo_cmd() {
sts(":%s %s 0 %d %d %s 0 0 0 %s",me.name,(me.token ? TOK_NETINFO : MSG_NETINFO), time(NULL),ircd_srv.uprot, ircd_srv.cloak,me.netname);
return 1;
}
int skill_cmd(const char *from, const char *target, const char *reason,...) {
va_list ap;
char buf[512];
va_start(ap, reason);
vsnprintf(buf, 512, reason, ap);
sts(":%s %s %s :%s", from, (me.token ? TOK_KILL : MSG_KILL), target, buf);
va_end(ap);
return 1;
}
void sts(char *fmt,...)
{
@ -138,3 +166,49 @@ void notice(char *who, char *buf,...)
}
va_end (ap);
}
void privmsg(char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
va_start(ap, fmt);
vsnprintf(buf2, sizeof(buf2), fmt, ap);
if (me.want_privmsg)
sprintf(buf, ":%s PRIVMSG %s :%s", from, to, buf2);
else
sprintf(buf, ":%s NOTICE %s :%s", from, to, buf2);
sts("%s", buf);
va_end(ap);
}
void privmsg_list(char *to, char *from, const char **text)
{
while (*text) {
if (**text)
privmsg(to, from, "%s", *text);
else
privmsg(to, from, " ");
text++;
}
}
void globops(char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
va_start(ap, fmt);
vsnprintf(buf2, sizeof(buf2), fmt, ap);
/* Shmad - have to get rid of nasty term echos :-) */
/* Fish - now that was crackhead coding! */
if (me.onchan) {
sprintf(buf, ":%s GLOBOPS :%s", from, buf2);
sts("%s", buf);
} else {
log("%s", buf2);
}
va_end(ap);
}

View file

@ -18,7 +18,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: Unreal.h,v 1.8 2002/03/05 11:57:03 fishwaldo Exp $
* $Id: Unreal.h,v 1.9 2002/03/05 12:59:58 fishwaldo Exp $
*/
@ -390,8 +390,7 @@ static Oper_Modes usr_mds[] = {
{UMODE_CHATOP, 'b',0},
{UMODE_WHOIS, 'W',0},
{0, 0, 0 }
};;
};
@ -411,7 +410,12 @@ extern int sjoin_cmd(const char *, const char *);
extern int schmode_cmd(const char *, const char *, const char *, const char *);
extern int snick_cmd(const char *, const char *, const char *, const char *);
extern int sping_cmd(const char *from, const char *reply, const char *to);
/* extern int sumode_cmd(const char *who, const char *target, unsigned long mode); */
extern int sumode_cmd(const char *who, const char *target, long mode);
extern int snumeric_cmd(const int numeric, const char *target, const char *data,...);
extern int spong_cmd(const char *reply);
extern int snetinfo_cmd();
extern int skill_cmd(const char *from, const char *target, const char *reason,...);
#endif /* UNREAL_H Define */

4
conf.c
View file

@ -38,7 +38,9 @@ static config_option options[] =
};
void init_conf() {
if (usr_mds);
}
void strip(char *line)
{

3
dl.c
View file

@ -19,6 +19,9 @@
#include "config.h"
void init_dl() {
if (usr_mds);
};
void __init_mod_list() {
segv_location = sstrdup("__init_mod_list");

121
ircd.c
View file

@ -193,6 +193,11 @@ IntCommands cmd_list[] = {
};
#endif
void init_main() {
if (usr_mds);
}
int init_bot(char *nick, char *user, char *host, char *rname, char *modes, char *mod_name)
{
User *u;
@ -401,7 +406,6 @@ void init_ServBot()
{
char rname[63];
segv_location = sstrdup("init_ServBot");
sprintf(rname, "/msg %s \2HELP\2", s_Services);
snick_cmd(s_Services, Servbot.user, Servbot.host, rname);
sumode_cmd(s_Services, s_Services, UMODE_SERVICES | UMODE_DEAF | UMODE_KIX);
@ -410,6 +414,7 @@ void init_ServBot()
schmode_cmd(me.name, me.chan, "+oa", rname);
me.onchan = 1;
Module_Event("SIGNON", finduser(s_Services));
}
@ -437,29 +442,28 @@ void Usr_Stats(char *origin, char *coreLine) {
if (!strcasecmp(stats, "u")) {
/* server uptime - Shmad */
int uptime = time (NULL) - me.t_start;
sts(":%s 242 %s :Statistical Server Up %d days, %d:%02d:%02d", me.name,
u->nick, uptime/86400, (uptime/3600) % 24, (uptime/60) % 60,
snumeric_cmd(242, u->nick, "Statistical Server up %d days, %d:%02d:%02d", uptime/86400, (uptime/3600) % 24, (uptime/60) % 60,
uptime % 60);
} else if (!strcasecmp(stats, "c")) {
/* Connections */
sts(":%s 214 %s N *@%s * * %d 50", me.name, u->nick, me.uplink, me.port);
sts(":%s 213 %s C *@%s * * %d 50", me.name, u->nick, me.uplink, me.port);
snumeric_cmd(214, u->nick, "N *@%s * * %d 50", me.uplink, me.port);
snumeric_cmd(213, u->nick, "C *@%s * * %d 50", me.uplink, me.port);
} else if (!strcasecmp(stats, "o")) {
/* Operators */
sts(":%s 243 %s %s :Operators think they are God, but you and I know they are not!", me.name, u->nick, stats);
snumeric_cmd(243, u->nick, "Operators think they are God, but you and I know they are not!");
} else if (!strcasecmp(stats, "l")) {
/* Port Lists */
tmp = time(NULL) - me.lastmsg;
tmp2 = time(NULL) - me.t_start;
sts(":%s 211 %s l SendQ SendM SendBytes RcveM RcveBytes Open_Since CPU :IDLE", me.name, u->nick);
sts(":%s 241 %s %s 0 %d %d %d %d %d 0 :%d", me.name, u->nick, me.uplink, me.SendM, me.SendBytes,me.RcveM , me.RcveBytes, tmp2, tmp);
snumeric_cmd(211, u->nick, "l SendQ SendM SendBytes RcveM RcveBytes Open_Since CPU :IDLE");
snumeric_cmd(241, u->nick, "%s 0 %d %d %d %d %d 0 :%d", me.uplink, me.SendM, me.SendBytes,me.RcveM , me.RcveBytes, tmp2, tmp);
}
sts(":%s 219 %s %s :End of /STATS report", me.name, u->nick, stats);
snumeric_cmd(219, u->nick, "%s :End of /STATS report", stats);
notice(s_Services,"%s Requested Stats %s", u->nick, stats);
}
void Usr_Version(char *origin, char *coreLine) {
sts(":%s 351 %s %s :%s -> %s %s", me.name, origin, version, me.name, version_date, version_time);
snumeric_cmd(351, origin, "%s :%s -> %s %s", version, me.name, version_date, version_time);
}
void Usr_ShowMOTD(char *origin, char *coreLine) {
ShowMOTD(origin);
@ -621,8 +625,7 @@ void Usr_Join(char *origin, char *coreLine) {
void Usr_Part(char *origin, char *coreLine) {
}
void Srv_Ping(char *origin, char *coreLine) {
sts("PONG %s", coreLine);
spong_cmd(coreLine);
}
void Srv_Netinfo(char *origin, char *coreLine) {
char *cmd;
@ -639,7 +642,7 @@ void Srv_Netinfo(char *origin, char *coreLine) {
strcpy(me.netname, strtok(NULL, " "));
#endif
sts(":%s NETINFO 0 %d %d %s 0 0 0 %s",me.name,time(NULL),ircd_srv.uprot, ircd_srv.cloak,me.netname);
snetinfo_cmd();
globops(me.name,"Link with Network \2Complete!\2");
#ifdef DEBUG
ns_debug_to_coders("");
@ -699,51 +702,6 @@ void Srv_Kill(char *origin, char *coreLine) {
}
void privmsg(char *to, const char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
va_start(ap, fmt);
vsnprintf(buf2, sizeof(buf2), fmt, ap);
if (me.want_privmsg)
sprintf(buf, ":%s PRIVMSG %s :%s", from, to, buf2);
else
sprintf(buf, ":%s NOTICE %s :%s", from, to, buf2);
sts("%s", buf);
va_end(ap);
}
void privmsg_list(char *to, char *from, const char **text)
{
while (*text) {
if (**text)
privmsg(to, from, "%s", *text);
else
privmsg(to, from, " ");
text++;
}
}
void globops(char *from, char *fmt, ...)
{
va_list ap;
char buf[512], buf2[512];
va_start(ap, fmt);
vsnprintf(buf2, sizeof(buf2), fmt, ap);
/* Shmad - have to get rid of nasty term echos :-) */
/* Fish - now that was crackhead coding! */
if (me.onchan) {
sprintf(buf, ":%s GLOBOPS :%s", from, buf2);
sts("%s", buf);
} else {
log("%s", buf2);
}
va_end(ap);
}
int flood(User *u)
{
@ -757,8 +715,7 @@ int flood(User *u)
return 0;
}
if (u->flood >= 5) {
sts(":%s KILL %s :%s!%s (Flooding Services.)", s_Services,
u->nick, Servbot.host, s_Services);
skill_cmd(s_Services, u->nick, "%s!%s (Flooding Services.)", Servbot.host, s_Services);
log("FLOODING: %s!%s@%s", u->nick, u->username, u->hostname);
DelUser(u->nick);
return 1;
@ -774,9 +731,9 @@ static void ShowMOTD(char *nick)
FILE *fp;
char buf[BUFSIZE];
sts(":%s 375 %s :- %s Message of the Day -", me.name, nick, me.name);
sts(":%s 372 %s :- %s. Copyright (c) 1999 - 2002 The NeoStats Group", me.name, nick, version);
sts(":%s 372 %s :-", me.name, nick);
snumeric_cmd(375, nick, ":- %s Message of the Day -", me.name);
snumeric_cmd(372, nick, ":- %s. Copyright (c) 1999 - 2002 The NeoStats Group", version);
snumeric_cmd(372, nick, ":-");
fp = fopen ("stats.motd", "r");
@ -785,11 +742,11 @@ static void ShowMOTD(char *nick)
while (fgets (buf, sizeof (buf), fp))
{
buf[strlen (buf) - 1] = 0;
sts(":%s 372 %s :- %s", me.name, nick, buf);
snumeric_cmd(372, nick, ":- %s", buf);
}
fclose (fp);
}
sts(":%s 376 %s :End of /MOTD command.", me.name, nick);
snumeric_cmd(376, nick, ":End of /MOTD command.");
}
@ -799,9 +756,8 @@ static void ShowADMIN(char *nick)
FILE *fp;
char buf[BUFSIZE];
sts(":%s 375 %s :- %s NeoStats Admins -", me.name, nick, me.name);
sts(":%s 372 %s :- %s. Copyright (c) 1999 - 2002 The NeoStats Group", me.name, nick, version);
sts(":%s 372 %s :-", me.name, nick);
snumeric_cmd(256, nick, ":- %s NeoStats Admins -", me.name);
snumeric_cmd(256, nick, ":- %s. Copyright (c) 1999 - 2002 The NeoStats Group", version);
fp = fopen ("stats.admin", "r");
@ -810,27 +766,28 @@ static void ShowADMIN(char *nick)
while (fgets (buf, sizeof (buf), fp))
{
buf[strlen (buf) - 1] = 0;
sts(":%s 372 %s :- %s", me.name, nick, buf);
snumeric_cmd(257, nick, ":- %s", buf);
}
fclose (fp);
}
sts(":%s 376 %s :End of /ADMIN command.", me.name, nick);
snumeric_cmd(258, nick, ":End of /ADMIN command.");
}
static void Showcredits(char *nick)
{
sts(":%s 351 %s :- %s Credits ", me.name, nick, version);
sts(":%s 351 %s :- Now Maintained by Shmad (shmad@neostats.net) and ^Enigma^ (enigma@neostats.net)", me.name, nick);
sts(":%s 351 %s :- For Support, you can find ^Enigma^ or Shmad at", me.name, nick);
sts(":%s 351 %s :- irc.irc-chat.net #NeoStats", me.name, nick);
sts(":%s 351 %s :- Thanks to:", me.name, nick);
sts(":%s 351 %s :- \2Fish\2 still part of the team with patch submissions.", me.name, nick);
sts(":%s 351 %s :- Stskeeps for Writting the best IRCD ever!", me.name, nick);
sts(":%s 351 %s :- chrisv@b0rked.dhs.org for the Code for Dynamically Loading Modules (Hurrican IRCD)",me.name,nick);
sts(":%s 351 %s :- the Users of Global-irc.net and Dreaming.org for being our Guinea Pigs!", me.name, nick);
sts(":%s 351 %s :- Andy For Ideas",me.name,nick);
sts(":%s 351 %s :- HeadBang for BetaTesting, and Ideas, And Hassling us for Beta Copies",me.name,nick);
sts(":%s 351 %s :- sre and Jacob for development systems and access",me.name, nick);
snumeric_cmd(351, nick, ":- %s Credits ",version);
snumeric_cmd(351, nick, ":- Now Maintained by Shmad (shmad@neostats.net) and ^Enigma^ (enigma@neostats.net)");
snumeric_cmd(351, nick, ":- For Support, you can find ^Enigma^ or Shmad at");
snumeric_cmd(351, nick, ":- irc.irc-chat.net #NeoStats");
snumeric_cmd(351, nick, ":- Thanks to:");
snumeric_cmd(351, nick, ":- \2Fish\2 still part of the team with patch submissions.");
snumeric_cmd(351, nick, ":- Stskeeps for Writting the best IRCD ever!");
snumeric_cmd(351, nick, ":- chrisv@b0rked.dhs.org for the Code for Dynamically Loading Modules (Hurrican IRCD)");
snumeric_cmd(351, nick, ":- monkeyIRCD for the Module Segv Catching code");
snumeric_cmd(351, nick, ":- the Users of Global-irc.net and Dreaming.org for being our Guinea Pigs!");
snumeric_cmd(351, nick, ":- Andy For Ideas");
snumeric_cmd(351, nick, ":- HeadBang for BetaTesting, and Ideas, And Hassling us for Beta Copies");
snumeric_cmd(351, nick, ":- sre and Jacob for development systems and access");
}

7
main.c
View file

@ -41,6 +41,7 @@ int main()
segv_location = sstrdup("main");
strcpy(segvinmodule, "");
me.onchan = 0;
if (usr_mds)
printf("\n\n");
printf("%s Loading...\n", version);
printf("-----------------------------------------------\n");
@ -289,12 +290,8 @@ unsigned long HASH(const unsigned char *name, int size_of_table)
return h % size_of_table;
}
char *strlower(const char *s)
char *strlower(char *s)
{
/* char *t = s;
while ((*t++ = tolower(*t)))
; */
char *t = s;
while (*t)
*t++ = tolower (*t);

View file

@ -5,11 +5,16 @@
** Based from GeoStats 1.1.0 by Johnathan George net@lite.net
*
** NetStats CVS Identification
** $Id: ns_help.c,v 1.2 2002/02/27 11:15:16 fishwaldo Exp $
** $Id: ns_help.c,v 1.3 2002/03/05 12:59:58 fishwaldo Exp $
*/
#include "stats.h"
void init_ns_help() {
if (usr_mds);
}
const char *ns_help[] = {
"*** NeoStats Help ***",
"",

View file

@ -5,7 +5,7 @@
** Based from GeoStats 1.1.0 by Johnathan George net@lite.net
*
** NetStats CVS Identification
** $Id: server.c,v 1.4 2002/03/05 08:13:45 fishwaldo Exp $
** $Id: server.c,v 1.5 2002/03/05 12:59:58 fishwaldo Exp $
*/
#include <fnmatch.h>
@ -18,7 +18,9 @@ Server *new_server(char *);
hash_t *sh;
void init_server() {
if (usr_mds);
}
Server *new_server(char *name)
{
@ -87,7 +89,7 @@ Server *findserver(const char *name)
Server *s;
hnode_t *sn;
name = strlower(name);
name = strlower((char *)name);
sn = hash_lookup(sh, name);
if (sn) {
s = hnode_get(sn);

View file

@ -516,3 +516,6 @@ static void ns_roots(User *u)
privmsg(u->nick, s_Services, "These are setable in stats.cfg now");
}
void init_services() {
if (usr_mds);
}

5
sock.c
View file

@ -5,7 +5,7 @@
** Based from GeoStats 1.1.0 by Johnathan George net@lite.net
*
** NetStats CVS Identification
** $Id: sock.c,v 1.12 2002/03/05 06:59:06 fishwaldo Exp $
** $Id: sock.c,v 1.13 2002/03/05 12:59:58 fishwaldo Exp $
*/
#include "stats.h"
@ -13,6 +13,9 @@
fd_set readfds, nullfds;
void init_sock() {
if (usr_mds);
}
int ConnectTo(char *host, int port)
{
struct hostent *hp;

View file

@ -202,7 +202,7 @@ extern void init_ServBot();
extern void *smalloc(long);
extern char *sstrdup(const char *);
extern unsigned long HASH(const unsigned char *, int);
extern char *strlower(const char *);
extern char *strlower(char *);
/* ircd.c */
extern void parse();
@ -238,7 +238,7 @@ extern void Change_User(User *, char *);
extern void sendcoders(char *message,...);
extern User *finduser(const char *);
extern void UserDump();
extern void UserMode(char *, char *);
extern void UserMode(const char *, const char *);
extern void init_user_hash();
extern void init_chan_hash();
extern void AddServer(char *, char *,int);

View file

@ -17,6 +17,11 @@ static time_t last_lag_check;
static time_t last_cache_save;
static int midnight = 0;
void init_timer() {
if (usr_mds);
}
void chk()
{
Mod_Timer *mod_ptr = NULL;

View file

@ -5,7 +5,7 @@
** Based from GeoStats 1.1.0 by Johnathan George net@lite.net
*
** NetStats CVS Identification
** $Id: users.c,v 1.15 2002/03/05 11:57:03 fishwaldo Exp $
** $Id: users.c,v 1.16 2002/03/05 12:59:58 fishwaldo Exp $
*/
#include <fnmatch.h>
@ -195,7 +195,7 @@ int UserLevel(User *u) {
void UserMode(char *nick, char *modes)
void UserMode(const char *nick, const char *modes)
{
/* 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..