/* * globals.h * (C) Peter Salanki 2002 * This program is copyright, and covered by the Gnu Public License. * The Natasha bot. * sorcer@linux.se */ #ifndef INCLUDED_globals_h #define INCLUDED_globals_h #include "settings.h" #ifdef DEBUG #include "fda.h" #define DEBUG #else #include "fda.h" #endif #include "bottypes.h" #include #ifdef DEBUG #undef NODEBUG #else #define NODEBUG #endif #define COLORS '\003' #define BOLD '\002' #define UNDERLINE '\031' /* Define some RFC 1459 numerics */ #define ERR_INVITEONLYCHAN "473" #define ERR_BANNEDFROMCHAN "474" #define ERR_BADCHANNELKEY "475" #define ERR_CHANNELISFULL "471" #define ERR_NOSUCHCHANNEL "403" #define ERR_BADCHAN "479" #define RPL_TOPIC "332" #define RPL_NOTOPIC "331" #define RPL_WHOISCHANNELS "319" #define ERR_TOOMANYCHANNELS "405" #define ERR_BADCHANMASK "476" #define ERR_NICKNAMEINUSE "433" #define RPL_WHOISUSER "311" #define RPL_WHOREPLY "352" // [*][@|+] : #define RPL_WHOREPLY2 "354" #define RPL_WHOISCHANNELS "319" #define RPL_WHOISOPERATOR "313" #define RPL_WHOISUSER "311" // * : #define RPL_ENDOFWHO "315" #define RPL_ENDOFWHOIS "318" #define RPL_QAUTH "330" #define RPL_USERHOST "302" /* Level defines */ #define UNAUTHED 0 #define NORMAL 1 #define SERVICE_FRIEND 2 #define HELPER 7 #define QUEUE_WORKER 8 #define TECHNICIAN 20 #define MASTER_TECHNICIAN 21 #define IRC_OPERATOR 22 #define BOT_NORMAL 30 #define BOT_PRIVATE 36 #define BOT_CHECK 40 /* Channel level defines */ #define CHAN_NOACCESS 0 #define CHAN_FRIEND 1 #define CHAN_VOICE 2 #define CHAN_OP 3 #define CHAN_MASTER 4 #define CHAN_OWNER 5 /* Macros */ #define Lock() pthread_mutex_lock(&MainMuteX) #define Unlock() pthread_mutex_unlock(&MainMuteX) extern MYSQL mysql, *sock; extern MYSQL_RES *res; extern MYSQL_ROW row; extern MYSQL logmysql, *logsock; extern MYSQL_RES *logres; extern MYSQL_ROW logrow; extern struct arm *firstarm; extern struct arm *lastarm; extern struct module *firstmodule; extern struct module *lastmodule; extern struct activeuser *firstauser; extern struct activeuser *lastauser; extern struct channel *firstchan; extern struct channel *lastchan; extern struct chanuser *firstchanuser; extern struct chanuser *lastchanuser; extern struct activechanuser *firstacu; extern struct activechanuser *lastacu; extern int lines; extern int rejoint; extern int reloadmsgmod; extern int reloadircmod; extern int hourly; extern short connectarms; extern int armcount; #ifdef SAFEHOME extern char homekey[KEYLEN]; #endif extern char compiledate[]; extern int clicks; extern int htm; extern int autohtmlimit; #ifdef LOGALL extern FILE *fLogAll; #endif extern char *LogQueryBuffer; extern pid_t mainpid; #ifdef Q extern struct activeuser *Qu; #ifdef L extern struct activeuser *Lu; #endif #endif extern pthread_mutex_t mysqlmutex; extern pthread_mutex_t logmysqlmutex; extern pthread_mutex_t MainMuteX; /* bot.c */ char *STR_replace_c (char *source, char *old, char *new, char *dest); int regex_match(char *regex, char *string); void dbconnect (void); void logdbconnect (void); void dbquery (char *query); void logdbquery (char *query); char *escapequery(char *query); void loadmodulesinconf (void); char *loaddatafromfile (char *file); int writedatatofile (char *file, char *data); int appenddatatofile (char *file, char *data); void clickput(void); void puttoserver (char *text, struct arm *a); void linkbreak (struct arm *a); void startlink (struct arm *a); int countargs(char *string); int checkargs(int numargs, int type, char *string, struct arm *a); #ifdef Q_AUTOAUTH void add (struct activeuser *u); #endif #ifdef LOGALL void OpenLogAll(void); #endif #ifdef SAFEHOME void securehome (void); #endif void violation (char *sender, char action[256], char *channel); void quit (char reason[]); char *getline (struct arm *a); void parse (char *buffer, struct arm *a); /* irccommands.c */ void sayf(char *victim, struct arm *a, struct activeuser *u, char *fmt, ...); void say (char *victim, char *words, struct arm *a, struct activeuser *u); void bestsay (char *victim, char *words); #ifdef CNOTICE void cnotice (char *victim, char *words); #endif void serverpong(char data[], struct arm *a); void joinchannel (struct channel *c); void rejoinchannel (char chaname[CHANNELLEN], struct arm *a); void settopic (char *, char *); void ctcpreply (char *victim, char *what, struct arm *a); void partchannel (struct channel *c, char reason[]); void dumpmessage (char *victim, char *message); void pong (struct arm *a); void act (struct channel *c, char *words); void ctcp (char *victim, char *what, struct arm *a); void who (struct channel *c); void cyclechannel (struct channel *c, char *reason); void op (char *channel, char *nick); void deop (char *channel, char *nick); void voice (char *channel, char *nick); void devoice (char *channel, char *nick); void invite (struct channel *c, char *nick); void kick (char *channel, char *nick, char reason[]); void privmsgf(char *victim, char *fmt, ...); void privmsg (char *victim, char *words); void exprivmsg (char *victim, char *words, struct arm *a); #ifdef L void l_getop (struct channel *c); void l_clearbans (struct channel *c); void l_invite (struct channel *c); void l_whoami (struct arm *a); #endif #ifdef Q void q_auth(struct arm *a); void q_getop (struct channel *c); void q_clearbans (struct channel *c); void q_invite (struct channel *c); void o_requestop(struct channel *c); #endif void nick (char *nick, struct arm *a); /* database.c */ void TimerChannelLoop(void); void TimerUserLoop(void); struct activeuser *DelOld(struct activeuser *u); void DelOldChannelBans(struct channel *c); void CloseEndedVote(struct channel *c); #ifdef Q int ChannelServiceCheck(struct channel *c); #endif int ChannelBanEnforce(struct channel *c); void ReJoinChannelCheck(struct channel *c); #ifdef Q_AUTOAUTH int ReCheckAuth(struct activeuser *u); #endif int userlevel (struct activeuser *u); void joinchannels (struct arm *a); char *authtotext(int auth); void chanlevtotext(int level, char *text); int texttochanlev(char *text); int modfunc(char *module, char *function); int amodfunc(char *module, char *function, struct arm *arm); char *RandString(int length); int irc_strcmp(const char *a, const char *b); void loadarms (void); void loadchannellist (); void loadchannel (char *channame); void ReloadChannel(struct channel *c); int chanuserlevel (struct activeuser *u, struct channel *c); char *chanusergreet (struct activeuser *u, struct channel *c); void delallachanusers (struct channel *c); int delallauserchans (struct activeuser *u); struct arm *bestarm(void); void dbchanmode (int id, char *option, char *value); void addlog(char *nick, char *channame, char *action, char *msg, struct arm *arm); void flushlog(void); void LogQueryInit(void); int isOpLessChan(struct channel *c); int ServiceChannelCount (void); int UsersOnChannelCount(struct channel *c); int OnJoinVoteMsg (struct channel *c, struct activeuser *u); time_t UnixtimeFromDate(char *date); int StrDurationToSeconds (char *duration); int SyncChannel (struct channel *c); int dbCount (char *query); int AddRegexBadChan (char *regex, char *reason, int finalduration, int adder); int AddBadChan (char *channel, char *reason, int finalduration, int adder); int AddRegexBadChan (char *regex, char *reason, int finalduration, int adder); int DelBadChan (char *regex); void CleanUpOldBadChans (void); #ifdef SPAMSCAN int SOnChannel(struct channel *c); int SpamChannel(struct channel *c); int SpamChannelWait(struct channel *c); #endif void EndDbQuery(void); void EndLogDbQuery(void); void OutOfChannel(struct channel *c); struct generalinfo GetGeneralInfo (short _arminfo, short _channels, short _totalusers, short _percentused, short _usersonline, short _staffinfo, short _queueinfo); int ItemsInQueue (void); int SendEmail (char *to, char *subject, char *body); int GetUserEmail (int userid, char *ret); int UserHasEmailSet (int userid); int SetUserEmail (int userid, char *email); int HostMatch(const char *mask, const char *string); int BannedUser(struct channel *c, struct activeuser *u); #ifdef L void CheckLWhoaamiRow(struct arm *arm, char *row); #endif #ifdef Q_AUTOAUTH void AuthUser(struct activeuser *u, char *auth); #endif int ActiveStaff(struct activeuser *u); int InActiveStaff(struct activeuser *u); #ifdef MAIN int SetCorrectStaffChannelMode(struct activeuser *u); #endif /* memory.c */ /* Adds */ void addchanuser (struct channel *channel, int uid, int level, char *greet); int addban (struct channel *c, char *host, char *reason, int setby, int expire, struct activeuser *u, char *kickreason, int uid, short mysql); void putserver (char *data, struct arm *a); void addchannel (char *channel, int id, char *modes, char *key, short autoop, short autovoice, short bitch, short ftopic, char *mvoice, short advertise, char *flood, short peak, short greet, short tv, short vote, short infobot, short stats, struct arm *arm, char *onjoin, char service, short suspended, short quotes); void adddbchannel (char *channame, struct arm *a); void addarm (char *nick, char *auth, int aid, int type); struct module *loadmodule (char *path, short fatal); struct activeuser *addauser (char *nick, char *username, char *hostname); struct aculink *addaculink (struct activeuser *u, struct activechanuser *acu); struct activechanuser *addachanuser (struct activeuser *u, struct channel *c); struct vote *AllocateVote(struct channel *c); /* Dels */ void deluser (struct activeuser *u); void delaculink (struct activeuser *u, struct activechanuser *acu); int delachanuser (struct activechanuser *acu, struct activeuser *u); void deldbchannel (char *channame); void deldbarm (char *arm); void delban (struct banlist *ban); void delarm (char *arm); void delsendqueue (struct arm *a); void unloadmodule (char *name); void delchannel (struct channel *c); void delchanuser (struct chanuser *cu); void DelAllChanUsersForChannel(struct channel *c); int FreeVote (struct channel *c); /* Finds */ struct module *findmodule (char *name); struct module *findmodulebypath (char path[100]); struct arm *findarm (char *nick); struct arm *findarmbyid (int id); struct arm *findarmbytype (int type); struct activeuser *findauser (char *nick); struct activeuser *findauserbyid (int id); struct channel *findchannel (char *name); struct channel *findchannelbyid (int id); struct chanuser *findchanuser (int uid, struct channel *c); struct activechanuser *findachanuser (struct activeuser *u, struct channel *c); struct banlist *findban (char *host, struct channel *c); /* channels.c */ void setrightmode(struct activechanuser *acu, struct activeuser *u); int c_join (char *channame, struct arm *a); int c_part (char *channame, char *reason); int c_move (char *from, char *to); void c_setlev (int uid, char *channame, int level); void c_setgreet (int uid, char *channame, char *greet); void PartAllArmChannels(struct arm *a); /* suspends.c */ int SuspendChannel (struct channel *c, char *reason, int finalduration, int setby); int UnsuspendChannel (struct channel *c); void CleanUpOldSuspends (void); int MailChannelOwners(struct channel *c, char *subject, char *message); #endif /* INCLUDED_globals_h */