started to update cross ircd support. Moving all sts() functions to special

functions, and will eventually remove sts() all together
This commit is contained in:
fishwaldo 2002-03-05 08:13:45 +00:00
parent b8d69718f1
commit 5a31892cd0
8 changed files with 134 additions and 76 deletions

View file

@ -324,4 +324,10 @@ struct Oper_Modes {
};
/* function declarations */
extern void sts(char *, ...);
extern void notice(char *,char *, ...);
#endif

View file

@ -12,6 +12,64 @@
#include "stats.h"
#include "Unreal.h"
void sts(char *fmt,...);
int sserver_cmd(const char *name, const int numeric, const char *infoline) {
sts("%s %s %s %d :%s", me.name, (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
return 1;
}
int slogin_cmd(const char *name, const int numeric, const char *infoline, const char *pass) {
sts("%s %s %d :%s", (me.token ? TOK_SERVER : MSG_SERVER), name, numeric, infoline);
sts("%s %s", (me.token ? TOK_PASS : MSG_PASS), pass);
return 1;
}
int ssquit_cmd(const char *server) {
sts("%s %s", (me.token ? TOK_SQUIT : MSG_SQUIT), server);
return 1;
}
int sprotocol_cmd(const char *option) {
sts("%s %s", (me.token ? TOK_PROTOCTL : MSG_PROTOCTL), option);
return 1;
}
int squit_cmd(const char *who, const char *quitmsg) {
sts("%s %s :%s", who, (me.token ? TOK_QUIT : MSG_QUIT), quitmsg);
DelUser(who);
return 1;
}
int spart_cmd(const char *who, const char *chan) {
sts("%s %s %s", who, (me.token ? TOK_PART : MSG_PART), chan);
return 1;
}
int sjoin_cmd(const char *who, const char *chan) {
sts("%s %s %s", who, (me.token ? TOK_JOIN : MSG_JOIN), chan);
return 1;
}
int schmode_cmd(const char *who, const char *chan, const char *mode, const char *args) {
sts(":%s %s %s %s %s", who, (me.token ? TOK_MODE : MSG_MODE), chan, mode, args);
return 1;
}
int snick_cmd(const char *nick, const char *ident, const char *host, const char *realname) {
sts("%s %s 1 1 %s %s %s %lu :%s", (me.token ? TOK_NICK : MSG_NICK), nick, ident, host, me.name, time(NULL), realname);
AddUser(nick,ident, host, me.name);
return 1;
}
int sping_cmd(const char *from, const char *reply, const char *to) {
sts(":%s %s %s :%s", from, (me.token ? TOK_NICK : MSG_NICK), reply, to);
return 1;
}
void sts(char *fmt,...)
{
va_list 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.5 2002/03/05 06:59:06 fishwaldo Exp $
* $Id: Unreal.h,v 1.6 2002/03/05 08:13:45 fishwaldo Exp $
*/
@ -351,12 +351,15 @@ struct Oper_Modes {
/* function declarations */
extern void sts(char *, ...);
extern void notice(char *,char *, ...);
extern int sserver_cmd(const char *, const int numeric, const char *);
extern int slogin_cmd(const char *, const int numeric, const char *, const char *);
extern int ssquit_cmd(const char *);
extern int sprotocol_cmd(const char *);
extern int squit_cmd(const char *, const char *);
extern int spart_cmd(const char *, const char *);
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);
#endif /* UNREAL_H Define */

12
main.c
View file

@ -94,7 +94,7 @@ RETSIGTYPE serv_die() {
u = finduser(s_Services);
log("Sigterm Recieved, Shuting Down Server!!!!");
ns_shutdown(u,"SigTerm Recieved");
sts("SQUIT %s",me.name);
ssquit_cmd(me.name);
}
@ -143,7 +143,7 @@ RETSIGTYPE serv_segv() {
kill(forked, 3);
kill(forked, 9);
exit(-1);
sts("SQUIT %s",me.name);
ssquit_cmd(me.name);
}
}
@ -242,10 +242,8 @@ void start()
void login()
{
segv_location = sstrdup("login");
sts("PASS %s", me.pass);
sts("SERVER %s 1 :%s", me.name,me.infoline);
sts("PROTOCTL TOKEN");
slogin_cmd(me.name, 1, me.infoline, me.pass);
sprotocol_cmd("TOKEN");
}
@ -290,7 +288,7 @@ unsigned long HASH(const unsigned char *name, int size_of_table)
return h % size_of_table;
}
char *strlower(char *s)
char *strlower(const char *s)
{
/* char *t = s;
while ((*t++ = tolower(*t)))

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.3 2002/02/27 13:30:59 fishwaldo Exp $
** $Id: server.c,v 1.4 2002/03/05 08:13:45 fishwaldo Exp $
*/
#include <fnmatch.h>
@ -82,7 +82,7 @@ void DelServer(char *name)
free(s);
}
Server *findserver(char *name)
Server *findserver(const char *name)
{
Server *s;
hnode_t *sn;

View file

@ -257,6 +257,7 @@ extern void ns_shutdown(User *u, char *reason)
Module *mod_ptr = NULL;
hscan_t ms;
hnode_t *mn;
char quitmsg[255];
segv_location = sstrdup("ns_shutdown");
if (strcasecmp(u->nick, s_Services)) {
@ -276,8 +277,9 @@ extern void ns_shutdown(User *u, char *reason)
globops(s_Services, "%s requested \2SHUTDOWN\2 for %s", u->nick, reason);
sts(":%s QUIT :%s Sent SHUTDOWN: %s",s_Services,u->nick,reason);
sts("SQUIT %s",me.name);
sprintf(quitmsg, "%s Set SHUTDOWN: %s", u->nick, (reason ? reason : "No Reason"));
squit_cmd(s_Services, quitmsg);
ssquit_cmd(me.name);
sleep(1);
close(servsock);
remove("stats.pid");
@ -288,49 +290,37 @@ extern void ns_shutdown(User *u, char *reason)
static void ns_reload(User *u, char *reason)
{
char quitmsg[255];
segv_location = sstrdup("ns_reload");
if (!(UserLevel(u) >= 190)) {
log("Access Denied (RELOAD) to %s", u->nick);
privmsg(u->nick, s_Services, "Access Denied.");
return;
}
if (reason != NULL) {
globops(s_Services, "%s requested \2RELOAD\2 for %s", u->nick, reason);
log("%s requested RELOAD.", u->nick);
sts("SQUIT %s :Reload", me.name);
sts(":%s QUIT :%s Sent RELOAD: %s",s_Services,u->nick,reason);
} else {
globops(s_Services, "%s requested \2RELOAD\2 for no Reason!", u->nick, reason);
log("%s requested RELOAD.", u->nick);
sts("SQUIT %s :Reload", me.name);
sts(":%s QUIT :%s Sent RELOAD",s_Services,u->nick,reason);
if (!(UserLevel(u) >= 190)) {
log("Access Denied (RELOAD) to %s", u->nick);
privmsg(u->nick, s_Services, "Access Denied.");
return;
}
globops(s_Services, "%s requested \2RELOAD\2 for %s", u->nick, reason);
log("%s requested RELOAD.", u->nick);
sprintf(quitmsg, "%s Sent RELOAD: %s", u->nick, (reason ? reason : "No reason"));
squit_cmd(s_Services, quitmsg);
ssquit_cmd(me.name);
sleep(1);
close(servsock);
init_server_hash();
init_user_hash();
me.onchan = 0;
log("Connecting to %s:%d", me.uplink, me.port);
if (servsock > 0)
close(servsock);
init_server_hash();
init_user_hash();
/* init_tld();
*/
me.onchan = 0;
log("Connecting to %s:%d", me.uplink, me.port);
if (servsock > 0)
close(servsock);
servsock = ConnectTo(me.uplink, me.port);
servsock = ConnectTo(me.uplink, me.port);
if (servsock <= 0) {
log("Unable to connect to %s", me.uplink);
} else {
login();
read_loop();
}
log("Reconnecting to the server in %d seconds", me.r_time);
sleep(me.r_time);
if (servsock <= 0) {
log("Unable to connect to %s", me.uplink);
} else {
login();
read_loop();
}
log("Reconnecting to the server in %d seconds", me.r_time);
sleep(me.r_time);
}
@ -365,6 +355,7 @@ static void ns_logs(User *u)
static void ns_jupe(User *u, char *server)
{
char infoline[255];
segv_location = sstrdup("ns_jupe");
if (!(UserLevel(u) >= 190)) {
privmsg(u->nick, s_Services, "Access Denied.");
@ -375,7 +366,8 @@ static void ns_jupe(User *u, char *server)
s_Services);
return;
}
sts(":%s SERVER %s 1 :[Jupitered] by %s", me.name, server, u->nick);
sprintf(infoline, "[Jupitered by %s]", u->nick);
sserver_cmd(server, 1, infoline);
log("%s!%s@%s jupitered %s", u->nick, u->username, u->hostname, server);
}
@ -394,14 +386,15 @@ static void ns_JOIN(User *u, char *chan)
}
globops(s_Services, "JOINING CHANNEL -\2(%s)\2- Thanks to %s!%s@%s)", chan, u->nick, u->username, u->hostname);
privmsg(me.chan, s_Services, "%s Asked me to Join %s, So, I'm Leaving %s", u->nick, chan, me.chan);
sts(":%s part %s", s_Services, me.chan);
spart_cmd(s_Services, me.chan);
log("%s!%s@%s Asked me to Join %s, I was on %s", u->nick, u->username, u->hostname, chan, me.chan);
sprintf(me.chan,"%s",chan);
sts(":%s JOIN %s",s_Services,chan);
sts(":%s MODE %s +o %s",me.name,chan,s_Services);
sjoin_cmd(s_Services, chan);
schmode_cmd(me.name, chan, "+o", s_Services);
}
void ns_debug_to_coders(char *u)
{
char realname[63];
segv_location = sstrdup("ns_debug_to_coders");
if (!me.coder_debug) {
me.coder_debug = 1;
@ -412,8 +405,8 @@ void ns_debug_to_coders(char *u)
globops(me.name, "\2DEBUG MODE\3 Active");
}
if (me.usesmo) {
sts("NICK %s 1 1 %s %s %s 0 :/msg %s \2HELP\2", s_Debug, Servbot.user, Servbot.host, me.name, s_Services);
AddUser(s_Debug, Servbot.user, Servbot.host, me.name);
sprintf(realname, "/msg %s \2HELP\2", s_Services);
snick_cmd(s_Debug, Servbot.user, Servbot.host, realname);
}
} else {
me.coder_debug = 0;
@ -424,8 +417,8 @@ void ns_debug_to_coders(char *u)
globops(me.name, "\2DEBUG MODE\2 Deactivated");
}
if (me.usesmo) {
sts(":%s QUIT :Debug Mode Deactivated by %s",s_Debug,u);
DelUser(s_Debug);
sprintf("Debug Mode Deactivated by %s", u);
squit_cmd(s_Debug, realname);
}
}
}

12
stats.h
View file

@ -95,6 +95,7 @@ struct me {
unsigned int enable_proxy : 1;
unsigned int coder_debug : 1;
unsigned int noticelag : 1;
unsigned int token : 1;
int action;
char message[BUFSIZE];
char chan[BUFSIZE];
@ -179,7 +180,6 @@ struct ping {
/* sock.c */
extern int ConnectTo(char *, int);
extern void read_loop();
extern void sts(char *, ...);
extern void log(char *, ...);
extern void ResetLogs();
extern char *sctime(time_t);
@ -201,7 +201,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(char *);
extern char *strlower(const char *);
/* ircd.c */
extern void parse();
@ -231,18 +231,18 @@ extern Chans *findchan(char *);
extern void ChanMode(char *, char *);
extern void ChanTopic(char *, char *, char *);
extern void DelChan(char *);
extern void AddUser(char *, char *, char *, char *);
extern void DelUser(char *);
extern void AddUser(const char *, const char *, const char *, const char *);
extern void DelUser(const char *);
extern void Change_User(User *, char *);
extern void sendcoders(char *message,...);
extern User *finduser(char *);
extern User *finduser(const char *);
extern void UserDump();
extern void UserMode(char *, char *);
extern void init_user_hash();
extern void init_chan_hash();
extern void AddServer(char *, char *,int);
extern void DelServer(char *);
extern Server *findserver(char *);
extern Server *findserver(const char *);
extern void ServerDump();
extern void ChanDump();
extern void init_server_hash();

12
users.c
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.13 2002/02/27 16:36:40 fishwaldo Exp $
** $Id: users.c,v 1.14 2002/03/05 08:13:45 fishwaldo Exp $
*/
#include <fnmatch.h>
@ -54,13 +54,13 @@ struct Oper_Modes usr_mds[] = {
MyUser *myuhead;
static User *new_user(char *);
static User *new_user(const char *);
hash_t *uh;
User *new_user(char *nick)
User *new_user(const char *nick)
{
User *u;
hnode_t *un;
@ -84,7 +84,7 @@ User *new_user(char *nick)
return(u);
}
void AddUser(char *nick, char *user, char *host, char *server)
void AddUser(const char *nick, const char *user, const char *host, const char *server)
{
User *u;
@ -110,7 +110,7 @@ void AddUser(char *nick, char *user, char *host, char *server)
}
void DelUser(char *nick)
void DelUser(const char *nick)
{
User *u;
hnode_t *un;
@ -173,7 +173,7 @@ void sendcoders(char *message,...)
va_end (ap);
}
User *finduser(char *nick)
User *finduser(const char *nick)
{
User *u;
hnode_t *un;