diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/Makefile | 20 | ||||
| -rw-r--r-- | include/commands.h | 34 | ||||
| -rw-r--r-- | include/config.h | 76 | ||||
| -rw-r--r-- | include/datafiles.h | 71 | ||||
| -rw-r--r-- | include/defs.h | 40 | ||||
| -rw-r--r-- | include/depricated.h | 127 | ||||
| -rw-r--r-- | include/encrypt.h | 22 | ||||
| -rw-r--r-- | include/events.h | 64 | ||||
| -rw-r--r-- | include/extern.h | 1406 | ||||
| -rw-r--r-- | include/makefile.win32 | 25 | ||||
| -rw-r--r-- | include/messages.h | 23 | ||||
| -rw-r--r-- | include/module.h | 16 | ||||
| -rw-r--r-- | include/modules.h | 383 | ||||
| -rw-r--r-- | include/pseudo.h | 20 | ||||
| -rw-r--r-- | include/resource.h | 20 | ||||
| -rw-r--r-- | include/services.h | 1389 | ||||
| -rw-r--r-- | include/slist.h | 50 | ||||
| -rw-r--r-- | include/sockets.h | 47 | ||||
| -rw-r--r-- | include/sysconf.h.in | 227 | ||||
| -rw-r--r-- | include/sysconf.h.win32 | 50 | ||||
| -rw-r--r-- | include/timeout.h | 50 | ||||
| -rw-r--r-- | include/version.sh | 86 | ||||
| -rw-r--r-- | include/version.sh.c | 224 |
23 files changed, 4470 insertions, 0 deletions
diff --git a/include/Makefile b/include/Makefile new file mode 100644 index 000000000..b5641c71b --- /dev/null +++ b/include/Makefile @@ -0,0 +1,20 @@ + +all: services.h extern.h pseudo.h version.h + +version.h: Makefile version.sh services.h pseudo.h messages.h $(SRCS) + sh version.sh + +services.h: sysconf.h config.h extern.h + touch $@ + +extern.h: slist.h + touch $@ + +pseudo.h: commands.h timeout.h encrypt.h datafiles.h slist.h + touch $@ + +clean: + (rm -f language.h) + +distclean: clean + (rm -f sysconf.h version.h) diff --git a/include/commands.h b/include/commands.h new file mode 100644 index 000000000..bff95eb16 --- /dev/null +++ b/include/commands.h @@ -0,0 +1,34 @@ +/* Declarations for command data. + * + * (C) 2003-2008 Anope Team + * Contact us at info@anope.org + * + * Please read COPYING and README for furhter details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * $Id$ + * + */ + + #include "modules.h" + +/*************************************************************************/ + +/* Routines for looking up commands. Command lists are arrays that must be + * terminated with a NULL name. + */ + +extern MDE Command *lookup_cmd(Command *list, char *name); +extern void run_cmd(char *service, User *u, Command *list, + char *name); +extern void help_cmd(char *service, User *u, Command *list, + char *name); +extern void do_run_cmd(char *service, User * u, Command *c,const char *cmd); +extern MDE void do_help_limited(char *service, User * u, Command * c); +extern void do_help_cmd(char *service, User * u, Command *c,const char *cmd); +extern MDE void mod_help_cmd(char *service, User *u, CommandHash *cmdTable[],const char *cmd); +extern MDE void mod_run_cmd(char *service, User *u, CommandHash *cmdTable[],const char *cmd); + +/*************************************************************************/ diff --git a/include/config.h b/include/config.h new file mode 100644 index 000000000..648205e7c --- /dev/null +++ b/include/config.h @@ -0,0 +1,76 @@ +/* Services configuration. + * + * (C) 2003-2008 Anope Team + * Contact us at info@anope.org + * + * Please read COPYING and README for furhter details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * $Id$ + * + */ + +#ifndef CONFIG_H +#define CONFIG_H + +/* Note that most of the options which used to be here have been moved to + * services.conf. */ + +/*************************************************************************/ + +/******* General configuration *******/ + +/* Name of configuration file (in Services directory) */ +#define SERVICES_CONF "services.conf" + +/* Name of log file (in Services directory) */ +#define LOG_FILENAME "services.log" + +/* Maximum amount of data from/to the network to buffer (bytes). */ +#define NET_BUFSIZE 65536 + +/******* OperServ configuration *******/ + +/* Define this to enable OperServ's svs commands (superadmin only). */ + #define USE_OSSVS + +/* Define this to enable OperServ's debugging commands (Services root + * only). These commands are undocumented; "use the source, Luke!" */ +/* #define DEBUG_COMMANDS */ + +/******************* END OF USER-CONFIGURABLE SECTION ********************/ + +/* Size of input buffer (note: this is different from BUFSIZ) + * This must be big enough to hold at least one full IRC message, or messy + * things will happen. */ +#define BUFSIZE 1024 + +/* Extra warning: If you change CHANMAX, your ChanServ database will be + * unusable. + */ + +/* Maximum length of a channel name, including the trailing null. Any + * channels with a length longer than (CHANMAX-1) including the leading # + * will not be usable with ChanServ. */ +#define CHANMAX 64 + +/* Maximum length of a nickname, including the trailing null. This MUST be + * at least one greater than the maximum allowable nickname length on your + * network, or people will run into problems using Services! The default + * (32) works with all servers I know of. */ +#define NICKMAX 32 + +/* Maximum length of a password */ +#define PASSMAX 32 + +/* Maximum length of a username */ +#define USERMAX 10 + +/* Maximum length of a domain */ +#define HOSTMAX 64 + +/**************************************************************************/ + +#endif /* CONFIG_H */ diff --git a/include/datafiles.h b/include/datafiles.h new file mode 100644 index 000000000..71f269252 --- /dev/null +++ b/include/datafiles.h @@ -0,0 +1,71 @@ +/* Database file descriptor structure and file handling routine prototypes. + * + * (C) 2003-2008 Anope Team + * Contact us at info@anope.org + * + * Please read COPYING and README for furhter details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * $Id$ + * + */ + +#ifndef DATAFILES_H +#define DATAFILES_H + +#ifndef _WIN32 +#include <sys/param.h> +#endif + +/*************************************************************************/ + +typedef struct dbFILE_ dbFILE; +struct dbFILE_ { + int mode; /* 'r' for reading, 'w' for writing */ + FILE *fp; /* The normal file descriptor */ + FILE *backupfp; /* Open file pointer to a backup copy of + * the database file (if non-NULL) */ + char filename[MAXPATHLEN]; /* Name of the database file */ + char backupname[MAXPATHLEN]; /* Name of the backup file */ +}; + +/*************************************************************************/ + +/* Prototypes and macros: */ + +E void check_file_version(dbFILE *f); +E int get_file_version(dbFILE *f); +E int write_file_version(dbFILE *f, uint32 version); + +E dbFILE *open_db(const char *service, const char *filename, const char *mode, uint32 version); +E void restore_db(dbFILE *f); /* Restore to state before open_db() */ +E void close_db(dbFILE *f); +E void backup_databases(void); + +#define read_db(f,buf,len) (fread((buf),1,(len),(f)->fp)) +#define write_db(f,buf,len) (fwrite((buf),1,(len),(f)->fp)) +#define getc_db(f) (fgetc((f)->fp)) + +E int read_int16(uint16 *ret, dbFILE *f); +E int write_int16(uint16 val, dbFILE *f); +E int read_int32(uint32 *ret, dbFILE *f); +E int write_int32(uint32 val, dbFILE *f); +E int read_ptr(void **ret, dbFILE *f); +E int write_ptr(const void *ptr, dbFILE *f); +E int read_string(char **ret, dbFILE *f); +E int write_string(const char *s, dbFILE *f); + +#define read_int8(ret,f) ((*(ret)=fgetc((f)->fp))==EOF ? -1 : 0) +#define write_int8(val,f) (fputc((val),(f)->fp)==EOF ? -1 : 0) +#define read_buffer(buf,f) (read_db((f),(buf),sizeof(buf)) == sizeof(buf)) +#define write_buffer(buf,f) (write_db((f),(buf),sizeof(buf)) == sizeof(buf)) +#define read_buflen(buf,len,f) (read_db((f),(buf),(len)) == (len)) +#define write_buflen(buf,len,f) (write_db((f),(buf),(len)) == (len)) +#define read_variable(var,f) (read_db((f),&(var),sizeof(var)) == sizeof(var)) +#define write_variable(var,f) (write_db((f),&(var),sizeof(var)) == sizeof(var)) + +/*************************************************************************/ + +#endif /* DATAFILES_H */ diff --git a/include/defs.h b/include/defs.h new file mode 100644 index 000000000..78371946d --- /dev/null +++ b/include/defs.h @@ -0,0 +1,40 @@ +/* Set default values for any constants that should be in include files but + * + * (C) 2003-2008 Anope Team + * Contact us at info@anope.org + * + * Please read COPYING and README for furhter details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * + * $Id$ + * + */ + +/*************************************************************************/ + +#ifndef NAME_MAX +# define NAME_MAX 255 +#endif + +#ifndef BUFSIZ +# define BUFSIZ 256 +#else +# if BUFSIZ < 256 +# define BUFSIZ 256 +# endif +#endif + +/* Length of an array: */ +#define lenof(a) (sizeof(a) / sizeof(*(a))) + +/* Telling compilers about printf()-like functions: */ +#ifdef __GNUC__ +# define FORMAT(type,fmt,start) __attribute__((format(type,fmt,start))) +#else +# define FORMAT(type,fmt,start) +#endif + +/*************************************************************************/ diff --git a/include/depricated.h b/include/depricated.h new file mode 100644 index 000000000..0d2f7073d --- /dev/null +++ b/include/depricated.h @@ -0,0 +1,127 @@ +/* depricated.h + * + * (C) 2003-2008 Anope Team + * Contact us at info@anope.org + * + * Please read COPYING and README for furhter details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * + */ + +/* + All of these functions were replaced in 1.7.6, you should move your modules + to use the new functions +*/ + +#define change_user_mode(u, modes, arg) common_svsmode(u, modes, arg) +#define GetIdent(x) common_get_vident(x) +#define GetHost(x) common_get_vhost(x) + +#define NEWNICK(nick,user,host,real,modes,qline) \ + anope_cmd_bot_nick(nick,user,host,real,modes) + +#define s_akill(user, host, who, when, expires, reason) \ + anope_cmd_akill(user, host, who, when, expires, reason) + +#define set_umode(user, ac, av) anope_set_umode(user, ac, av) + +#define s_svsnoop(server, set) anope_cmd_svsnoop(server, set) + +#define s_sqline(mask, reason) anope_cmd_sqline(mask, reason) + +#define s_sgline(mask, reason) anope_cmd_sgline(mask, reason) +#define s_szline(mask, reason) anope_cmd_szline(mask, reason) +#define s_unsgline(mask) anope_cmd_unsgline(mask) +#define s_unsqline(mask) anope_cmd_unsqline(mask) +#define s_unszline(mask) anope_cmd_unszline(mask) + +#define s_rakill(user, host) anope_cmd_remove_akill(user, host) + + +# define NICKSERV_MODE ircd->nickservmode +# define CHANSERV_MODE ircd->chanservmode +# define HOSTSERV_MODE ircd->hostservmode +# define MEMOSERV_MODE ircd->memoservmode +# define BOTSERV_MODE ircd->botservmode +# define HELPSERV_MODE ircd->helpservmode +# define OPERSERV_MODE ircd->oprservmode +# define DEVNULL_MODE ircd->devnullmode +# define GLOBAL_MODE ircd->globalmode +# define NICKSERV_ALIAS_MODE ircd->nickservaliasmode +# define CHANSERV_ALIAS_MODE ircd->chanservaliasmode +# define MEMOSERV_ALIAS_MODE ircd->memoservaliasmode +# define BOTSERV_ALIAS_MODE ircd->botservaliasmode +# define HELPSERV_ALIAS_MODE ircd->helpservaliasmode +# define OPERSERV_ALIAS_MODE ircd->operservaliasmode +# define DEVNULL_ALIAS_MODE ircd->devnullaliasmode +# define GLOBAL_ALIAS_MODE ircd->globalaliasmode +# define HOSTSERV_ALIAS_MODE ircd->hostservaliasmode +# define BOTSERV_BOTS_MODE ircd->botserv_bot_mode +#define CHAN_MAX_SYMBOL ircd->max_symbols +#define MODESTOREMOVE ircd->modestoremove + +#ifdef IRC_HYBRID +# define HAS_HALFOP +# define HAS_EXCEPT +#endif + +#ifdef IRC_VIAGRA +# define HAS_HALFOP +# define HAS_VHOST +# define HAS_VIDENT +# define HAS_EXCEPT +#endif + +#ifdef IRC_BAHAMUT +# define HAS_NICKIP +# define HAS_EXCEPT +# define HAS_SVSHOLD +#endif + +#ifdef IRC_RAGE2 +# define HAS_HALFOP +# define HAS_EXCEPT +# define HAS_VHOST +# define HAS_NICKVHOST +#endif + +#ifdef IRC_PTLINK +# define HAS_NICKVHOST +# define HAS_VHOST +# define HAS_FMODE +# define HAS_EXCEPT +#endif + +#ifdef IRC_ULTIMATE2 +# define IRC_ULTIMATE /* gotta do this for old mods */ +# define HAS_FMODE +# define HAS_HALFOP +# define HAS_LMODE +# define HAS_VHOST +# define HAS_VIDENT +# define HAS_EXCEPT +#endif + +#if defined(IRC_UNREAL31) || defined(IRC_UNREAL32) +# define IRC_UNREAL /* gotta do this for old mods */ +# define HAS_FMODE +# define HAS_HALFOP +# define HAS_LMODE +# define HAS_NICKVHOST +# define HAS_VHOST +# define HAS_VIDENT +# define HAS_EXCEPT +#endif + +#ifdef IRC_ULTIMATE3 +# define HAS_HALFOP +# define HAS_VHOST +# define HAS_NICKVHOST +# define HAS_VIDENT +# define HAS_EXCEPT +#endif + + diff --git a/include/encrypt.h b/include/encrypt.h new file mode 100644 index 000000000..7ac3d884a --- /dev/null +++ b/include/encrypt.h @@ -0,0 +1,22 @@ +/* Include file for high-level encryption routines. + * + * (C) 2003-2008 Anope Team + * Contact us at info@anope.org + * + * Please read COPYING and README for furhter details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * $Id$ + * + */ + +typedef struct encryption_ { + int (*encrypt)(const char *src, int len, char *dest, int size); + int (*encrypt_in_place)(char *buf, int size); + int (*encrypt_check_len)(int passlen, int bufsize); + int (*decrypt)(const char *src, char *dest, int size); + int (*check_password)(const char *plaintext, const char *password); +} Encryption; + diff --git a/include/events.h b/include/events.h new file mode 100644 index 000000000..77ec0bf8e --- /dev/null +++ b/include/events.h @@ -0,0 +1,64 @@ +/* Prototypes and external variable declarations. + * + * (C) 2003-2008 Anope Team + * Contact us at info@anope.org + * + * Please read COPYING and README for furhter details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * $Id$ + * + */ + +#define EVENT_START "start" +#define EVENT_STOP "stop" + +#define EVENT_DB_SAVING "db_saving" +#define EVENT_DB_BACKUP "db_backup" +#define EVENT_NEWNICK "newnick" +#define EVENT_BOT_UNASSIGN "bot_unassign" +#define EVENT_BOT_JOIN "bot_join" +#define EVENT_BOT_CREATE "bot_create" +#define EVENT_BOT_CHANGE "bot_change" +#define EVENT_BOT_FANTASY "bot_command" +#define EVENT_BOT_FANTASY_NO_ACCESS "bot_command_no_access" +#define EVENT_BOT_DEL "bot_del" +#define EVENT_BOT_ASSIGN "bot_assign" +#define EVENT_BOT_KICK "bot_kick" +#define EVENT_BOT_BAN "bot_ban" +#define EVENT_TOPIC_UPDATED "chan_topic_updated" +#define EVENT_CHAN_EXPIRE "chan_expire" +#define EVENT_CHAN_REGISTERED "chan_registered" +#define EVENT_CHAN_DROP "chan_dropped" +#define EVENT_CHAN_FORBIDDEN "chan_forbidden" +#define EVENT_CHAN_SUSPENDED "chan_suspended" +#define EVENT_CHAN_UNSUSPEND "chan_unsuspend" +#define EVENT_CONNECT "connect" +#define EVENT_DB_EXPIRE "db_expire" +#define EVENT_RESTART "restart" +#define EVENT_RELOAD "reload" +#define EVENT_SHUTDOWN "shutdown" +#define EVENT_SIGNAL "signal" +#define EVENT_NICK_REGISTERED "nick_registered" +#define EVENT_NICK_DROPPED "nick_dropped" +#define EVENT_NICK_FORBIDDEN "nick_forbidden" +#define EVENT_NICK_EXPIRE "nick_expire" +#define EVENT_CHANGE_NICK "change_nick" +#define EVENT_USER_LOGOFF "user_logoff" +#define EVENT_GROUP "nick_group" +#define EVENT_NICK_IDENTIFY "nick_id" +#define EVENT_SERVER_SQUIT "server_squit" +#define EVENT_SERVER_CONNECT "server_connect" +#define EVENT_DEFCON_LEVEL "defcon_level" +#define EVENT_NICK_SUSPENDED "nick_suspended" +#define EVENT_NICK_UNSUSPEND "nick_unsuspend" +#define EVENT_JOIN_CHANNEL "join_channel" +#define EVENT_PART_CHANNEL "part_channel" +#define EVENT_ACCESS_ADD "access_add" +#define EVENT_ACCESS_CHANGE "access_change" +#define EVENT_ACCESS_DEL "access_del" +#define EVENT_ACCESS_CLEAR "access_clear" +#define EVENT_NICK_LOGOUT "nick_logout" +#define EVENT_CHAN_KICK "chan_kick" diff --git a/include/extern.h b/include/extern.h new file mode 100644 index 000000000..89e03689b --- /dev/null +++ b/include/extern.h @@ -0,0 +1,1406 @@ +/* Prototypes and external variable declarations. + * + * (C) 2003-2008 Anope Team + * Contact us at info@anope.org + * + * Please read COPYING and README for furhter details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * $Id$ + * + */ + +#ifndef EXTERN_H +#define EXTERN_H + +#ifndef _WIN32 +#define E extern +#define EI extern +#else +#ifndef MODULE_COMPILE +#define E extern __declspec(dllexport) +#define EI extern __declspec(dllimport) +#else +#define E extern __declspec(dllimport) +#define EI extern __declspec(dllexport) +#endif +#endif + +#include "slist.h" + +E void ModuleRunTimeDirCleanUp(void); + + +E char *uplink; + +/* IRC Variables */ + +E IRCDVar *ircd; +E IRCDCAPAB *ircdcap; +E char *flood_mode_char_set; +E char *flood_mode_char_remove; +E int UseTSMODE; /* hack to get around bahamut clones that don't send TSMODE */ +EI unsigned long umodes[128]; +E char csmodes[128]; +E CMMode cmmodes[128]; +E CBMode cbmodes[128]; +E CBModeInfo *cbmodeinfos; +E CUMode cumodes[128]; +E char *IRCDModule; +E IRCDProto ircdproto; + +/**** actions.c ****/ + +E void kill_user(char *source, char *user, char *reason); +E void bad_password(User * u); +E void sqline(char *mask, char *reason); +E void common_unban(ChannelInfo * ci, char *nick); +E void common_svsmode(User * u, char *modes, char *arg); + +/**** botserv.c ****/ + +E BotInfo *botlists[256]; +E int nbots; +E void get_botserv_stats(long *nrec, long *memuse); +E void bs_init(void); +E void botserv(User *u, char *buf); +E void botmsgs(User *u, BotInfo *bi, char *buf); +E void botchanmsgs(User *u, ChannelInfo *ci, char *buf); +E void load_bs_dbase(void); +E void save_bs_dbase(void); +E void save_bs_rdb_dbase(void); +E BotInfo *makebot(char *nick); +E BotInfo *findbot(char *nick); +E void bot_join(ChannelInfo *ci); +E void bot_rejoin_all(BotInfo *bi); +E char *normalizeBuffer(char *); +E void unassign(User * u, ChannelInfo * ci); +E void insert_bot(BotInfo * bi); + +E void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick, char *reason); +E void bot_raw_kick(User * requester, ChannelInfo * ci, char *nick, char *reason); +E void bot_raw_mode(User * requester, ChannelInfo * ci, char *mode, char *nick); + +/**** channels.c ****/ + +E Channel *chanlist[1024]; + +E void add_ban(Channel * chan, char *mask); +E void chan_adduser2(User * user, Channel * c); +E void add_invite(Channel * chan, char *mask); +E void chan_delete(Channel * c); +E void del_ban(Channel * chan, char *mask); +E void chan_set_key(Channel * chan, char *value); +E void set_limit(Channel * chan, char *value); +E void del_invite(Channel * chan, char *mask); +E char *get_key(Channel * chan); +E char *get_limit(Channel * chan); +E Channel *chan_create(char *chan, time_t ts); +E Channel *join_user_update(User * user, Channel * chan, char *name, time_t chants); + +E void add_exception(Channel * chan, char *mask); +E void del_exception(Channel * chan, char *mask); +E char *get_flood(Channel * chan); +E void set_flood(Channel * chan, char *value); +E char *get_redirect(Channel * chan); +E void set_redirect(Channel * chan, char *value); + + +E void get_channel_stats(long *nrec, long *memuse); +E Channel *findchan(const char *chan); +E Channel *firstchan(void); +E Channel *nextchan(void); + +E void chan_deluser(User * user, Channel * c); + +E int is_on_chan(Channel * c, User * u); +E User *nc_on_chan(Channel * c, NickCore * nc); + +E char *chan_get_modes(Channel * chan, int complete, int plus); +E void chan_set_modes(const char *source, Channel * chan, int ac, + char **av, int check); + +E int chan_get_user_status(Channel * chan, User * user); +E int chan_has_user_status(Channel * chan, User * user, int16 status); +E void chan_remove_user_status(Channel * chan, User * user, int16 status); +E void chan_set_user_status(Channel * chan, User * user, int16 status); + +E int get_access_level(ChannelInfo * ci, NickAlias * na); +E const char *get_xop_level(int level); + +E void do_cmode(const char *source, int ac, char **av); +E void do_join(const char *source, int ac, char **av); +E void do_kick(const char *source, int ac, char **av); +E void do_part(const char *source, int ac, char **av); +E void do_sjoin(const char *source, int ac, char **av); +E void do_topic(const char *source, int ac, char **av); +E void do_mass_mode(char *modes); + +E void chan_set_correct_modes(User * user, Channel * c, int give_modes); +E void restore_unsynced_topics(void); + +E Entry *entry_create(char *mask); +E Entry *entry_add(EList *list, char *mask); +E void entry_delete(EList *list, Entry *e); +E EList *list_create(); +E int entry_match(Entry *e, char *nick, char *user, char *host, uint32 ip); +E int entry_match_mask(Entry *e, char *mask, uint32 ip); +E Entry *elist_match(EList *list, char *nick, char *user, char *host, uint32 ip); +E Entry *elist_match_mask(EList *list, char *mask, uint32 ip); +E Entry *elist_match_user(EList *list, User *u); +E Entry *elist_find_mask(EList *list, char *mask); +E long get_memuse(EList *list); + + +#define whosends(ci) ((!(ci) || !((ci)->botflags & BS_SYMBIOSIS) || !(ci)->bi || !(ci)->c || (ci)->c->usercount < BSMinUsers) ? s_ChanServ : (ci)->bi->nick) + +/**** chanserv.c ****/ + +E ChannelInfo *chanlists[256]; +E CSModeUtil csmodeutils[]; +E LevelInfo levelinfo[]; + +E void listchans(int count_only, const char *chan); +E void get_chanserv_stats(long *nrec, long *memuse); + +E int delchan(ChannelInfo * ci); +E void alpha_insert_chan(ChannelInfo * ci); +E void reset_levels(ChannelInfo * ci); +E void cs_init(void); +E void chanserv(User * u, char *buf); +E void load_cs_dbase(void); +E void save_cs_dbase(void); +E void save_cs_rdb_dbase(void); +E void expire_chans(void); +E void cs_remove_nick(const NickCore * nc); +E void cs_remove_bot(const BotInfo * bi); + +E int is_real_founder(User * user, ChannelInfo * ci); + +E void check_modes(Channel * c); +E int check_valid_admin(User * user, Channel * chan, int servermode); +E int check_valid_op(User * user, Channel * chan, int servermode); +E int check_should_op(User * user, char *chan); +E int check_should_voice(User * user, char *chan); +E int check_should_halfop(User * user, char *chan); +E int check_should_owner(User * user, char *chan); +E int check_should_protect(User * user, char *chan); +E int check_kick(User * user, char *chan, time_t chants); +E void record_topic(const char *chan); +E void restore_topic(char *chan); +E int check_topiclock(Channel * c, time_t topic_time); + +E ChannelInfo *cs_findchan(const char *chan); +E int check_access(User * user, ChannelInfo * ci, int what); +E int is_founder(User * user, ChannelInfo * ci); +E int get_access(User * user, ChannelInfo * ci); +E ChanAccess *get_access_entry(NickCore * nc, ChannelInfo * ci); +E void update_cs_lastseen(User * user, ChannelInfo * ci); +E int get_idealban(ChannelInfo * ci, User * u, char *ret, int retlen); +E AutoKick *is_stuck(ChannelInfo * ci, char *mask); +E void stick_mask(ChannelInfo * ci, AutoKick * akick); +E void stick_all(ChannelInfo * ci); +E char *cs_get_flood(ChannelInfo * ci); +E void cs_set_flood(ChannelInfo * ci, char *value); +E char *cs_get_key(ChannelInfo * ci); +E void cs_set_key(ChannelInfo * ci, char *value); +E char *cs_get_limit(ChannelInfo * ci); +E void cs_set_limit(ChannelInfo * ci, char *value); +E char *cs_get_redirect(ChannelInfo * ci); +E void cs_set_redirect(ChannelInfo * ci, char *value); + +E int levelinfo_maxwidth; +E ChannelInfo *makechan(const char *chan); +E int is_identified(User * user, ChannelInfo * ci); +E char *get_mlock_modes(ChannelInfo * ci, int complete); + +/**** compat.c ****/ + +#if !HAVE_SNPRINTF +# if BAD_SNPRINTF +# define snprintf my_snprintf +# endif +# define vsnprintf my_vsnprintf +E int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); +E int snprintf(char *buf, size_t size, const char *fmt, ...); +#endif +#if !HAVE_STRICMP && !HAVE_STRCASECMP +E int stricmp(const char *s1, const char *s2); +E int strnicmp(const char *s1, const char *s2, size_t len); +#endif +#if !HAVE_STRDUP +E char *strdup(const char *s); +#endif +#if !HAVE_STRSPN +E size_t strspn(const char *s, const char *accept); +#endif +#if !HAVE_STRERROR +E char *strerror(int errnum); +#endif +#if !HAVE_STRSIGNAL +char *strsignal(int signum); +#endif +#ifdef _WIN32 +char *sockstrerror(int error); +#endif + +/**** config.c ****/ + +E char *RemoteServer; +E int RemotePort; +E char *RemotePassword; +E char *RemoteServer2; +E int RemotePort2; +E char *RemotePassword2; +E char *RemoteServer3; +E int RemotePort3; +E char *RemotePassword3; +E char *LocalHost; +E int LocalPort; + +E char *ServerName; +E char *ServerDesc; +E char *ServiceUser; +E char *ServiceHost; + +E char *HelpChannel; +E char *LogChannel; +E char *NetworkName; +E int NickLen; + +E char *s_NickServ; +E char *s_ChanServ; +E char *s_MemoServ; +E char *s_BotServ; +E char *s_HelpServ; +E char *s_OperServ; +E char *s_GlobalNoticer; +E char *s_DevNull; +E char *desc_NickServ; +E char *desc_ChanServ; +E char *desc_MemoServ; +E char *desc_BotServ; +E char *desc_HelpServ; +E char *desc_OperServ; +E char *desc_GlobalNoticer; +E char *desc_DevNull; + +E char *HostDBName; +E char *desc_HostServ; +E char *s_HostServ; +E void load_hs_dbase(void); +E void save_hs_dbase(void); +E void save_hs_rdb_dbase(void); +E int do_on_id(User * u); +E void delHostCore(char *nick); +E void hostserv(User * u, char *buf); + +E char *s_NickServAlias; +E char *s_ChanServAlias; +E char *s_MemoServAlias; +E char *s_BotServAlias; +E char *s_HelpServAlias; +E char *s_OperServAlias; +E char *s_GlobalNoticerAlias; +E char *s_DevNullAlias; +E char *s_HostServAlias; +E char *desc_NickServAlias; +E char *desc_ChanServAlias; +E char *desc_MemoServAlias; +E char *desc_BotServAlias; +E char *desc_HelpServAlias; +E char *desc_OperServAlias; +E char *desc_GlobalNoticerAlias; +E char *desc_DevNullAlias; +E char *desc_HostServAlias; + +E char *PIDFilename; +E char *MOTDFilename; +E char *NickDBName; +E char *PreNickDBName; +E char *ChanDBName; +E char *BotDBName; +E char *OperDBName; +E char *AutokillDBName; +E char *NewsDBName; + +E int NoBackupOkay; +E int StrictPasswords; +E int BadPassLimit; +E int BadPassTimeout; +E int UpdateTimeout; +E int ExpireTimeout; +E int ReadTimeout; +E int WarningTimeout; +E int TimeoutCheck; +E int KeepLogs; +E int KeepBackups; +E int ForceForbidReason; +E int UsePrivmsg; +E int UseStrictPrivMsg; +E int DumpCore; +E int LogUsers; +E int NickRegDelay; +E int UseSVSHOLD; +E int UseSVS2MODE; +E int RestrictOperNicks; +E int UseTokens; +E int NewsCount; +E char *Numeric; +E int UnRestrictSAdmin; +E int UseTS6; + +E char **HostSetters; +E int HostNumber; + +E int UseMail; +E char *SendMailPath; +E char *SendFrom; +E int RestrictMail; +E int MailDelay; +E int DontQuoteAddresses; + +E int NSDefFlags; +E int NSDefLanguage; +E int NSRegDelay; +E int NSResendDelay; +E int NSExpire; +E int NSRExpire; +E int NSForceEmail; +E int NSMaxAliases; +E int NSAccessMax; +E char *NSEnforcerUser; +E char *NSEnforcerHost; +E int NSReleaseTimeout; +E int NSAllowKillImmed; +E int NSNoGroupChange; +E int NSListOpersOnly; +E int NSListMax; +E char *NSGuestNickPrefix; +E int NSSecureAdmins; +E int NSStrictPrivileges; +E int NSEmailReg; +E int NSModeOnID; +E int NSRestrictGetPass; +E int NSNickTracking; +E int NSAddAccessOnReg; + +E int CSDefFlags; +E int CSMaxReg; +E int CSExpire; +E int CSDefBantype; +E int CSAccessMax; +E int CSAutokickMax; +E char *CSAutokickReason; +E int CSInhabit; +E int CSListOpersOnly; +E int CSListMax; +E int CSRestrictGetPass; +E int CSOpersOnly; + +E int MSMaxMemos; +E int MSSendDelay; +E int MSNotifyAll; +E int MSMemoReceipt; + +E int BSDefFlags; +E int BSKeepData; +E int BSMinUsers; +E int BSBadWordsMax; +E int BSSmartJoin; +E int BSGentleBWReason; +E int BSCaseSensitive; +E char *BSFantasyCharacter; + +E int HideStatsO; +E int GlobalOnCycle; +E int AnonymousGlobal; +E char *GlobalOnCycleMessage; +E char *GlobalOnCycleUP; +E char **ServicesRoots; +E int RootNumber; +E int LogMaxUsers; +E int SuperAdmin; +E int LogBot; +E int AutokillExpiry; +E int ChankillExpiry; +E int SGLineExpiry; +E int SQLineExpiry; +E int SZLineExpiry; +E int AkillOnAdd; +E int KillonSGline; +E int KillonSQline; +E int DisableRaw; +E int WallOper; +E int WallBadOS; +E int WallOSGlobal; +E int WallOSMode; +E int WallOSClearmodes; +E int WallOSKick; +E int WallOSAkill; +E int WallOSSGLine; +E int WallOSSQLine; +E int WallOSSZLine; +E int WallOSNoOp; +E int WallOSJupe; +E int WallOSRaw; +E int WallAkillExpire; +E int WallSGLineExpire; +E int WallSQLineExpire; +E int WallSZLineExpire; +E int WallExceptionExpire; +E int WallDrop; +E int WallForbid; +E int WallGetpass; +E int WallSetpass; +E int AddAkiller; + +E int parse_directive(Directive * d, char *dir, int ac, char *av[MAXPARAMS], int linenum, int reload, char *s); + +/** + * Modules Stuff + **/ +E char **ModulesAutoload; +E int ModulesNumber; +E char **ModulesDelayedAutoload; +E int ModulesDelayedNumber; + +E char **HostServCoreModules; +E int HostServCoreNumber; + +E char **HelpServCoreModules; +E int HelpServCoreNumber; + +E char **MemoServCoreModules; +E int MemoServCoreNumber; + +E char **BotServCoreModules; +E int BotServCoreNumber; + +E char **OperServCoreModules; +E int OperServCoreNumber; + +E char **NickServCoreModules; +E int NickServCoreNumber; + +E char **ChanServCoreModules; +E int ChanServCoreNumber; + +E int LimitSessions; +E int DefSessionLimit; +E int ExceptionExpiry; +E int MaxSessionKill; +E int MaxSessionLimit; |
