00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef EXTERN_H
00015 #define EXTERN_H
00016
00017 #ifndef _WIN32
00018 #define E extern
00019 #define EI extern
00020 #else
00021 #ifndef MODULE_COMPILE
00022 #define E extern __declspec(dllexport)
00023 #define EI extern __declspec(dllimport)
00024 #else
00025 #define E extern __declspec(dllimport)
00026 #define EI extern __declspec(dllexport)
00027 #endif
00028 #endif
00029
00030 #include "slist.h"
00031
00032 E void ModuleRunTimeDirCleanUp(void);
00033
00034
00035 E char *uplink;
00036
00037
00038
00039 E IRCDVar *ircd;
00040 E IRCDCAPAB *ircdcap;
00041 E char *flood_mode_char_set;
00042 E char *flood_mode_char_remove;
00043 E int UseTSMODE;
00044 EI unsigned long umodes[128];
00045 E char csmodes[128];
00046 E CMMode cmmodes[128];
00047 E CBMode cbmodes[128];
00048 E CBModeInfo *cbmodeinfos;
00049 E CUMode cumodes[128];
00050 E char *IRCDModule;
00051 E IRCDProto ircdproto;
00052
00053
00054
00055 E void kill_user(char *source, char *user, char *reason);
00056 E void bad_password(User * u);
00057 E void sqline(char *mask, char *reason);
00058 E void common_unban(ChannelInfo * ci, char *nick);
00059 E void common_unban_full(ChannelInfo * ci, char *nick, boolean full);
00060 E void common_svsmode(User * u, char *modes, char *arg);
00061
00062
00063
00064 E BotInfo *botlists[256];
00065 E int nbots;
00066 E void get_botserv_stats(long *nrec, long *memuse);
00067 E void bs_init(void);
00068 E void botserv(User *u, char *buf);
00069 E void botmsgs(User *u, BotInfo *bi, char *buf);
00070 E void botchanmsgs(User *u, ChannelInfo *ci, char *buf);
00071 E void load_bs_dbase(void);
00072 E void save_bs_dbase(void);
00073 E void save_bs_rdb_dbase(void);
00074 E BotInfo *makebot(char *nick);
00075 E BotInfo *findbot(char *nick);
00076 E void bot_join(ChannelInfo *ci);
00077 E void bot_rejoin_all(BotInfo *bi);
00078 E char *normalizeBuffer(char *);
00079 E void unassign(User * u, ChannelInfo * ci);
00080 E void insert_bot(BotInfo * bi);
00081
00082 E void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick, char *reason);
00083 E void bot_raw_kick(User * requester, ChannelInfo * ci, char *nick, char *reason);
00084 E void bot_raw_mode(User * requester, ChannelInfo * ci, char *mode, char *nick);
00085
00086
00087
00088 E Channel *chanlist[1024];
00089
00090 E void add_ban(Channel * chan, char *mask);
00091 E void chan_adduser2(User * user, Channel * c);
00092 E void add_invite(Channel * chan, char *mask);
00093 E void chan_delete(Channel * c);
00094 E void del_ban(Channel * chan, char *mask);
00095 E void chan_set_throttle(Channel * chan, char *value);
00096 E void chan_set_key(Channel * chan, char *value);
00097 E void set_limit(Channel * chan, char *value);
00098 E void del_invite(Channel * chan, char *mask);
00099 E char *get_key(Channel * chan);
00100 E char *get_limit(Channel * chan);
00101 E Channel *chan_create(char *chan, time_t ts);
00102 E Channel *join_user_update(User * user, Channel * chan, char *name, time_t chants);
00103
00104 E void add_exception(Channel * chan, char *mask);
00105 E void del_exception(Channel * chan, char *mask);
00106 E char *get_flood(Channel * chan);
00107 E void set_flood(Channel * chan, char *value);
00108 E char *get_throttle(Channel * chan);
00109 E void set_throttle(Channel * chan, char *value);
00110 E char *get_redirect(Channel * chan);
00111 E void set_redirect(Channel * chan, char *value);
00112 E char *get_unkwn(Channel * chan);
00113 E void set_unkwn(Channel *chan, char *value);
00114
00115
00116 E void get_channel_stats(long *nrec, long *memuse);
00117 E Channel *findchan(const char *chan);
00118 E Channel *firstchan(void);
00119 E Channel *nextchan(void);
00120
00121 E void chan_deluser(User * user, Channel * c);
00122
00123 E int is_on_chan(Channel * c, User * u);
00124 E User *nc_on_chan(Channel * c, NickCore * nc);
00125
00126 E char *chan_get_modes(Channel * chan, int complete, int plus);
00127 E void chan_set_modes(const char *source, Channel * chan, int ac,
00128 char **av, int check);
00129
00130 E int chan_get_user_status(Channel * chan, User * user);
00131 E int chan_has_user_status(Channel * chan, User * user, int16 status);
00132 E void chan_remove_user_status(Channel * chan, User * user, int16 status);
00133 E void chan_set_user_status(Channel * chan, User * user, int16 status);
00134
00135 E int get_access_level(ChannelInfo * ci, NickAlias * na);
00136 E const char *get_xop_level(int level);
00137
00138 E void do_cmode(const char *source, int ac, char **av);
00139 E void do_join(const char *source, int ac, char **av);
00140 E void do_kick(const char *source, int ac, char **av);
00141 E void do_part(const char *source, int ac, char **av);
00142 E void do_sjoin(const char *source, int ac, char **av);
00143 E void do_topic(const char *source, int ac, char **av);
00144 E void do_mass_mode(char *modes);
00145
00146 E void chan_set_correct_modes(User * user, Channel * c, int give_modes);
00147 E void restore_unsynced_topics(void);
00148
00149 E Entry *entry_create(char *mask);
00150 E Entry *entry_add(EList *list, char *mask);
00151 E void entry_delete(EList *list, Entry *e);
00152 E EList *list_create();
00153 E int entry_match(Entry *e, char *nick, char *user, char *host, uint32 ip);
00154 E int entry_match_mask(Entry *e, char *mask, uint32 ip);
00155 E Entry *elist_match(EList *list, char *nick, char *user, char *host, uint32 ip);
00156 E Entry *elist_match_mask(EList *list, char *mask, uint32 ip);
00157 E Entry *elist_match_user(EList *list, User *u);
00158 E Entry *elist_match_user_full(EList *list, User *u, boolean full);
00159 E Entry *elist_find_mask(EList *list, char *mask);
00160 E long get_memuse(EList *list);
00161
00162
00163 #define whosends(ci) ((!(ci) || !((ci)->botflags & BS_SYMBIOSIS) || !(ci)->bi || !(ci)->c || (ci)->c->usercount < BSMinUsers) ? s_ChanServ : (ci)->bi->nick)
00164
00165
00166
00167 E ChannelInfo *chanlists[256];
00168 E CSModeUtil csmodeutils[];
00169 E LevelInfo levelinfo[];
00170
00171 E void listchans(int count_only, const char *chan);
00172 E void get_chanserv_stats(long *nrec, long *memuse);
00173
00174 E int delchan(ChannelInfo * ci);
00175 E void alpha_insert_chan(ChannelInfo * ci);
00176 E void reset_levels(ChannelInfo * ci);
00177 E void cs_init(void);
00178 E void chanserv(User * u, char *buf);
00179 E void load_cs_dbase(void);
00180 E void save_cs_dbase(void);
00181 E void save_cs_rdb_dbase(void);
00182 E void expire_chans(void);
00183 E void cs_remove_nick(const NickCore * nc);
00184 E void cs_remove_bot(const BotInfo * bi);
00185
00186 E int is_real_founder(User * user, ChannelInfo * ci);
00187
00188 E void check_modes(Channel * c);
00189 E int check_valid_admin(User * user, Channel * chan, int servermode);
00190 E int check_valid_op(User * user, Channel * chan, int servermode);
00191 E int check_should_op(User * user, char *chan);
00192 E int check_should_voice(User * user, char *chan);
00193 E int check_should_halfop(User * user, char *chan);
00194 E int check_should_owner(User * user, char *chan);
00195 E int check_should_protect(User * user, char *chan);
00196 E int check_kick(User * user, char *chan, time_t chants);
00197 E void record_topic(const char *chan);
00198 E void restore_topic(char *chan);
00199 E int check_topiclock(Channel * c, time_t topic_time);
00200
00201 E ChannelInfo *cs_findchan(const char *chan);
00202 E int check_access(User * user, ChannelInfo * ci, int what);
00203 E int is_founder(User * user, ChannelInfo * ci);
00204 E int get_access(User * user, ChannelInfo * ci);
00205 E ChanAccess *get_access_entry(NickCore * nc, ChannelInfo * ci);
00206 E void update_cs_lastseen(User * user, ChannelInfo * ci);
00207 E int get_idealban(ChannelInfo * ci, User * u, char *ret, int retlen);
00208 E AutoKick *is_stuck(ChannelInfo * ci, char *mask);
00209 E void stick_mask(ChannelInfo * ci, AutoKick * akick);
00210 E void stick_all(ChannelInfo * ci);
00211 E char *cs_get_flood(ChannelInfo * ci);
00212 E void cs_set_flood(ChannelInfo * ci, char *value);
00213 E char *cs_get_throttle(ChannelInfo * ci);
00214 E void cs_set_throttle(ChannelInfo * ci, char *value);
00215 E char *cs_get_key(ChannelInfo * ci);
00216 E void cs_set_key(ChannelInfo * ci, char *value);
00217 E char *cs_get_limit(ChannelInfo * ci);
00218 E void cs_set_limit(ChannelInfo * ci, char *value);
00219 E char *cs_get_redirect(ChannelInfo * ci);
00220 E void cs_set_redirect(ChannelInfo * ci, char *value);
00221 E char *cs_get_unkwn(ChannelInfo * ci);
00222 E void cs_set_unkwn(ChannelInfo * ci, char *value);
00223
00224 E int levelinfo_maxwidth;
00225 E ChannelInfo *makechan(const char *chan);
00226 E int is_identified(User * user, ChannelInfo * ci);
00227 E char *get_mlock_modes(ChannelInfo * ci, int complete);
00228 E void CleanAccess(ChannelInfo *ci);
00229
00230
00231
00232 #if !HAVE_SNPRINTF
00233 # if BAD_SNPRINTF
00234 # define snprintf my_snprintf
00235 # endif
00236 # define vsnprintf my_vsnprintf
00237 E int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
00238 E int snprintf(char *buf, size_t size, const char *fmt, ...);
00239 #endif
00240 #if !HAVE_STRICMP && !HAVE_STRCASECMP
00241 E int stricmp(const char *s1, const char *s2);
00242 E int strnicmp(const char *s1, const char *s2, size_t len);
00243 #endif
00244 #if !HAVE_STRDUP
00245 E char *strdup(const char *s);
00246 #endif
00247 #if !HAVE_STRSPN
00248 E size_t strspn(const char *s, const char *accept);
00249 #endif
00250 #if !HAVE_STRERROR
00251 E char *strerror(int errnum);
00252 #endif
00253 #if !HAVE_STRSIGNAL
00254 char *strsignal(int signum);
00255 #endif
00256 #ifdef _WIN32
00257 char *sockstrerror(int error);
00258 #endif
00259
00260
00261
00262 E char *RemoteServer;
00263 E int RemotePort;
00264 E char *RemotePassword;
00265 E char *RemoteServer2;
00266 E int RemotePort2;
00267 E char *RemotePassword2;
00268 E char *RemoteServer3;
00269 E int RemotePort3;
00270 E char *RemotePassword3;
00271 E char *LocalHost;
00272 E int LocalPort;
00273
00274 E char *ServerName;
00275 E char *ServerDesc;
00276 E char *ServiceUser;
00277 E char *ServiceHost;
00278
00279 E char *HelpChannel;
00280 E char *LogChannel;
00281 E char *NetworkName;
00282 E int NickLen;
00283
00284 E char *s_NickServ;
00285 E char *s_ChanServ;
00286 E char *s_MemoServ;
00287 E char *s_BotServ;
00288 E char *s_HelpServ;
00289 E char *s_OperServ;
00290 E char *s_GlobalNoticer;
00291 E char *s_DevNull;
00292 E char *desc_NickServ;
00293 E char *desc_ChanServ;
00294 E char *desc_MemoServ;
00295 E char *desc_BotServ;
00296 E char *desc_HelpServ;
00297 E char *desc_OperServ;
00298 E char *desc_GlobalNoticer;
00299 E char *desc_DevNull;
00300
00301 E char *HostDBName;
00302 E char *desc_HostServ;
00303 E char *s_HostServ;
00304 E void load_hs_dbase(void);
00305 E void save_hs_dbase(void);
00306 E void save_hs_rdb_dbase(void);
00307 E int do_on_id(User * u);
00308 E void delHostCore(char *nick);
00309 E void hostserv(User * u, char *buf);
00310
00311 E char *s_NickServAlias;
00312 E char *s_ChanServAlias;
00313 E char *s_MemoServAlias;
00314 E char *s_BotServAlias;
00315 E char *s_HelpServAlias;
00316 E char *s_OperServAlias;
00317 E char *s_GlobalNoticerAlias;
00318 E char *s_DevNullAlias;
00319 E char *s_HostServAlias;
00320 E char *desc_NickServAlias;
00321 E char *desc_ChanServAlias;
00322 E char *desc_MemoServAlias;
00323 E char *desc_BotServAlias;
00324 E char *desc_HelpServAlias;
00325 E char *desc_OperServAlias;
00326 E char *desc_GlobalNoticerAlias;
00327 E char *desc_DevNullAlias;
00328 E char *desc_HostServAlias;
00329
00330 E char *PIDFilename;
00331 E char *MOTDFilename;
00332 E char *NickDBName;
00333 E char *PreNickDBName;
00334 E char *ChanDBName;
00335 E char *BotDBName;
00336 E char *OperDBName;
00337 E char *AutokillDBName;
00338 E char *NewsDBName;
00339
00340 E int NoBackupOkay;
00341 E int StrictPasswords;
00342 E int BadPassLimit;
00343 E int BadPassTimeout;
00344 E int UpdateTimeout;
00345 E int ExpireTimeout;
00346 E int ReadTimeout;
00347 E int WarningTimeout;
00348 E int TimeoutCheck;
00349 E int KeepLogs;
00350 E int KeepBackups;
00351 E int ForceForbidReason;
00352 E int UsePrivmsg;
00353 E int UseStrictPrivMsg;
00354 E int DumpCore;
00355 E int LogUsers;
00356 E int NickRegDelay;
00357 E int UseSVSHOLD;
00358 E int UseSVS2MODE;
00359 E int RestrictOperNicks;
00360 E int UseTokens;
00361 E int NewsCount;
00362 E char *Numeric;
00363 E int UnRestrictSAdmin;
00364 E int UseTS6;
00365
00366 E char **HostSetters;
00367 E int HostNumber;
00368
00369 E int UseMail;
00370 E char *SendMailPath;
00371 E char *SendFrom;
00372 E int RestrictMail;
00373 E int MailDelay;
00374 E int DontQuoteAddresses;
00375 E int ForkForMail;
00376
00377 E int NSDefFlags;
00378 E int NSDefLanguage;
00379 E int NSRegDelay;
00380 E int NSResendDelay;
00381 E int NSExpire;
00382 E int NSRExpire;
00383 E int NSForceEmail;
00384 E int NSMaxAliases;
00385 E int NSAccessMax;
00386 E char *NSEnforcerUser;
00387 E char *NSEnforcerHost;
00388 E int NSReleaseTimeout;
00389 E int NSAllowKillImmed;
00390 E int NSNoGroupChange;
00391 E int NSListOpersOnly;
00392 E int NSListMax;
00393 E char *NSGuestNickPrefix;
00394 E int NSSecureAdmins;
00395 E int NSStrictPrivileges;
00396 E int NSEmailReg;
00397 E int NSModeOnID;
00398 E int NSRestrictGetPass;
00399 E int NSNickTracking;
00400 E int NSAddAccessOnReg;
00401
00402 E int CSDefFlags;
00403 E int CSMaxReg;
00404 E int CSExpire;
00405 E int CSDefBantype;
00406 E int CSAccessMax;
00407 E int CSAutokickMax;
00408 E char *CSAutokickReason;
00409 E int CSInhabit;
00410 E int CSListOpersOnly;
00411 E int CSListMax;
00412 E int CSRestrictGetPass;
00413 E int CSOpersOnly;
00414
00415 E int MSMaxMemos;
00416 E int MSSendDelay;
00417 E int MSNotifyAll;
00418 E int MSMemoReceipt;
00419
00420 E int BSDefFlags;
00421 E int BSKeepData;
00422 E int BSMinUsers;
00423 E int BSBadWordsMax;
00424 E int BSSmartJoin;
00425 E int BSGentleBWReason;
00426 E int BSCaseSensitive;
00427 E char *BSFantasyCharacter;
00428
00429 E int HideStatsO;
00430 E int GlobalOnCycle;
00431 E int AnonymousGlobal;
00432 E char *GlobalOnCycleMessage;
00433 E char *GlobalOnCycleUP;
00434 E char **ServicesRoots;
00435 E int RootNumber;
00436 E int LogMaxUsers;
00437 E int SuperAdmin;
00438 E int LogBot;
00439 E int AutokillExpiry;
00440 E int ChankillExpiry;
00441 E int SGLineExpiry;
00442 E int SQLineExpiry;
00443 E int SZLineExpiry;
00444 E int AkillOnAdd;
00445 E int KillonSGline;
00446 E int KillonSQline;
00447 E int DisableRaw;
00448 E int WallOper;
00449 E int WallBadOS;
00450 E int WallOSGlobal;
00451 E int WallOSMode;
00452 E int WallOSClearmodes;
00453 E int WallOSKick;
00454 E int WallOSAkill;
00455 E int WallOSSGLine;
00456 E int WallOSSQLine;
00457 E int WallOSSZLine;
00458 E int WallOSNoOp;
00459 E int WallOSJupe;
00460 E int WallOSRaw;
00461 E int WallAkillExpire;
00462 E int WallSGLineExpire;
00463 E int WallSQLineExpire;
00464 E int WallSZLineExpire;
00465 E int WallExceptionExpire;
00466 E int WallDrop;
00467 E int WallForbid;
00468 E int WallGetpass;
00469 E int WallSetpass;
00470 E int AddAkiller;
00471
00472 E int parse_directive(Directive * d, char *dir, int ac, char *av[MAXPARAMS], int linenum, int reload, char *s);
00473
00477 E char **ModulesAutoload;
00478 E int ModulesNumber;
00479 E char **ModulesDelayedAutoload;
00480 E int ModulesDelayedNumber;
00481
00482 E char **HostServCoreModules;
00483 E int HostServCoreNumber;
00484
00485 E char **HelpServCoreModules;
00486 E int HelpServCoreNumber;
00487
00488 E char **MemoServCoreModules;
00489 E int MemoServCoreNumber;
00490
00491 E char **BotServCoreModules;
00492 E int BotServCoreNumber;
00493
00494 E char **OperServCoreModules;
00495 E int OperServCoreNumber;
00496
00497 E char **NickServCoreModules;
00498 E int NickServCoreNumber;
00499
00500 E char **ChanServCoreModules;
00501 E int ChanServCoreNumber;
00502
00503 E int LimitSessions;
00504 E int DefSessionLimit;
00505 E int ExceptionExpiry;
00506 E int MaxSessionKill;
00507 E int MaxSessionLimit;
00508 E int SessionAutoKillExpiry;
00509 E char *ExceptionDBName;
00510 E char *SessionLimitDetailsLoc;
00511 E char *SessionLimitExceeded;
00512
00513 E char *UlineServers;
00514 E char **Ulines;
00515 E int NumUlines;
00516
00517 #ifdef USE_RDB
00518 E int rdb_init();
00519 E int rdb_open();
00520 E int rdb_close();
00521 E char *rdb_quote(char *str);
00522 E int rdb_tag_table(char *table);
00523 E int rdb_tag_table_where(char *table, char *clause);
00524 E int rdb_empty_table(char *table);
00525 E int rdb_clean_table(char *table);
00526 E int rdb_clean_table_where(char *table, char *clause);
00527 E int rdb_scrub_table(char *table, char *clause);
00528 E int rdb_direct_query(char *query);
00529 E int rdb_ns_set_display(char *newnick, char *oldnick);
00530 E int rdb_save_ns_core(NickCore * nc);
00531 E int rdb_save_ns_alias(NickAlias * na);
00532 E int rdb_save_ns_req(NickRequest * nr);
00533 E int rdb_save_cs_info(ChannelInfo * ci);
00534 E int rdb_save_bs_core(BotInfo * bi);
00535 E int rdb_save_hs_core(HostCore * hc);
00536 E int rdb_save_os_db(unsigned int maxucnt, unsigned int maxutime,
00537 SList * ak, SList * sgl, SList * sql, SList * szl);
00538 E int rdb_save_news(NewsItem * ni);
00539 E int rdb_save_exceptions(Exception * e);
00540 E int rdb_load_bs_dbase(void);
00541 E int rdb_load_hs_dbase(void);
00542 E int rdb_load_ns_dbase(void);
00543 E int rdb_load_dbases(void);
00544 #endif
00545
00546 #ifdef USE_MYSQL
00547 E char *MysqlHost;
00548 E char *MysqlUser;
00549 E char *MysqlPass;
00550 E char *MysqlName;
00551 E int MysqlPort;
00552 E char *MysqlSock;
00553 E char *MysqlSecure;
00554 E int MysqlRetries;
00555 E int MysqlRetryGap;
00556 E int UseRDB;
00557 #endif
00558
00559 E int read_config(int reload);
00560
00561 E int DefConLevel;
00562 E int DefCon[6];
00563 E int checkDefCon(int level);
00564 E void resetDefCon(int level);
00565 E int DefConSessionLimit;
00566 E char *DefConTimeOut;
00567 E char *DefConAKILL;
00568 E char *DefConChanModes;
00569 E int GlobalOnDefcon;
00570 E int GlobalOnDefconMore;
00571 E char *DefconMessage;
00572 E char *DefConAkillReason;
00573 E char *DefConOffMessage;
00574
00575 E long unsigned int UserKey1;
00576 E long unsigned int UserKey2;
00577 E long unsigned int UserKey3;
00578
00579
00580 E char *EncModule;
00581 E int enc_encrypt(const char *src, int len, char *dest, int size);
00582 E int enc_encrypt_check_len(int passlen, int bufsize);
00583 E int enc_decrypt(const char *src, char *dest, int size);
00584 E int enc_check_password(const char *plaintext, const char *password);
00585 E void encmodule_encrypt(int (*func)(const char *src, int len, char *dest, int size));
00586 E void encmodule_encrypt_check_len(int (*func)(int passlen, int bufsize));
00587 E void encmodule_decrypt(int (*func)(const char *src, char *dest, int size));
00588 E void encmodule_check_password(int (*func)(const char *plaintext, const char *password));
00589
00590
00591 E void helpserv(User * u, char *buf);
00592 E void helpserv_init(void);
00593
00594
00595 E void get_hostserv_stats(long *nrec, long *memuse);
00596 E void hostserv_init(void);
00597 E void addHostCore(char *nick, char *vIdent, char *vhost, char *creator, int32 tmp_time);
00598 E char *getvIdent(char *nick);
00599 E char *getvHost(char *nick);
00600 E int is_host_remover(User * u);
00601 E int is_host_setter(User *u);
00602 E HostCore *hostCoreListHead();
00603 E HostCore *findHostCore(HostCore * head, char *nick, boolean * found);
00604 E HostCore *createHostCorelist(HostCore * next, char *nick, char *vIdent, char *vHost, char *creator, int32 tmp_time);
00605 E HostCore *insertHostCore(HostCore * head, HostCore * prev, char *nick, char *vIdent, char *vHost, char *creator, int32 tmp_time);
00606 E HostCore *deleteHostCore(HostCore * head, HostCore * prev);
00607 E void set_lastmask(User * u);
00608
00609
00610
00611 E void introduce_user(const char *user);
00612 E int init_primary(int ac, char **av);
00613 E int init_secondary(int ac, char **av);
00614 E void init_tertiary();
00615 E int servernum;
00616
00617
00618 E void pmodule_set_mod_current_buffer(void (*func) (int ac, char **av));
00619 E void pmodule_cmd_svsnoop(void (*func) (char *server, int set));
00620 E void pmodule_cmd_remove_akill(void (*func) (char *user, char *host));
00621 E void pmodule_cmd_topic(void (*func) (char *whosets, char *chan, char *whosetit, char *topic, time_t when));
00622 E void pmodule_cmd_vhost_off(void (*func) (User * u));
00623 E void pmodule_cmd_akill(void (*func) (char *user, char *host, char *who, time_t when, time_t expires, char *reason));
00624 E void pmodule_cmd_svskill(void (*func) (char *source, char *user, char *buf));
00625 E void pmodule_cmd_svsmode(void (*func) (User * u, int ac, char **av));
00626 E void pmodule_cmd_372(void (*func) (char *source, char *msg));
00627 E void pmodule_cmd_372_error(void (*func) (char *source));
00628 E void pmodule_cmd_375(void (*func) (char *source));
00629 E void pmodule_cmd_376(void (*func) (char *source));
00630 E void pmodule_cmd_nick(void (*func) (char *nick, char *name, char *modes));
00631 E void pmodule_cmd_guest_nick(void (*func) (char *nick, char *user, char *host, char *real, char *modes));
00632 E void pmodule_cmd_mode(void (*func) (char *source, char *dest, char *buf));
00633 E void pmodule_cmd_bot_nick(void (*func) (char *nick, char *user, char *host, char *real, char *modes));
00634 E void pmodule_cmd_kick(void (*func) (char *source, char *chan, char *user, char *buf));
00635 E void pmodule_cmd_notice_ops(void (*func) (char *source, char *dest, char *buf));
00636 E void pmodule_cmd_notice(void (*func) (char *source, char *dest, char *buf));
00637 E void pmodule_cmd_notice2(void (*func) (char *source, char *dest, char *msg));
00638 E void pmodule_cmd_privmsg(void (*func) (char *source, char *dest, char *buf));
00639 E void pmodule_cmd_privmsg2(void (*func) (char *source, char *dest, char *msg));
00640 E void pmodule_cmd_serv_notice(void (*func) (char *source, char *dest, char *msg));
00641 E void pmodule_cmd_serv_privmsg(void (*func) (char *source, char *dest, char *msg));
00642 E void pmodule_cmd_bot_chan_mode(void (*func) (char *nick, char *chan));
00643 E void pmodule_cmd_351(void (*func) (char *source));
00644 E void pmodule_cmd_quit(void (*func) (char *source, char *buf));
00645 E void pmodule_cmd_pong(void (*func) (char *servname, char *who));
00646 E void pmodule_cmd_join(void (*func) (char *user, char *channel, time_t chantime));
00647 E void pmodule_cmd_unsqline(void (*func) (char *user));
00648 E void pmodule_cmd_invite(void (*func) (char *source, char *chan, char *nick));
00649 E void pmodule_cmd_part(void (*func) (char *nick, char *chan, char *buf));
00650 E void pmodule_cmd_391(void (*func) (char *source, char *timestr));
00651 E void pmodule_cmd_250(void (*func) (char *buf));
00652 E void pmodule_cmd_307(void (*func) (char *buf));
00653 E void pmodule_cmd_311(void (*func) (char *buf));
00654 E void pmodule_cmd_312(void (*func) (char *buf));
00655 E void pmodule_cmd_317(void (*func) (char *buf));
00656 E void pmodule_cmd_219(void (*func) (char *source, char *letter));
00657 E void pmodule_cmd_401(void (*func) (char *source, char *who));
00658 E void pmodule_cmd_318(void (*func) (char *source, char *who));
00659 E void pmodule_cmd_242(void (*func) (char *buf));
00660 E void pmodule_cmd_243(void (*func) (char *buf));
00661 E void pmodule_cmd_211(void (*func) (char *buf));
00662 E void pmodule_cmd_global(void (*func) (char *source, char *buf));
00663 E void pmodule_cmd_global_legacy(void (*func) (char *source, char *fmt));
00664 E void pmodule_cmd_sqline(void (*func) (char *mask, char *reason));
00665 E void pmodule_cmd_squit(void (*func) (char *servname, char *message));
00666 E void pmodule_cmd_svso(void (*func) (char *source, char *nick, char *flag));
00667 E void pmodule_cmd_chg_nick(void (*func) (char *oldnick, char *newnick));
00668 E void pmodule_cmd_svsnick(void (*func) (char *source, char *guest, time_t when));
00669 E void pmodule_cmd_vhost_on(void (*func) (char *nick, char *vIdent, char *vhost));
00670 E void pmodule_cmd_connect(void (*func) (int servernum));
00671 E void pmodule_cmd_bob(void (*func) ());
00672 E void pmodule_cmd_svshold(void (*func) (char *nick));
00673 E void pmodule_cmd_release_svshold(void (*func) (char *nick));
00674 E void pmodule_cmd_unsgline(void (*func) (char *mask));
00675 E void pmodule_cmd_unszline(void (*func) (char *mask));
00676 E void pmodule_cmd_szline(void (*func) (char *mask, char *reason, char *whom));
00677 E void pmodule_cmd_sgline(void (*func) (char *mask, char *reason));
00678 E void pmodule_cmd_unban(void (*func) (char *name, char *nick));
00679 E void pmodule_cmd_svsmode_chan(void (*func) (char *name, char *mode, char *nick));
00680 E void pmodule_cmd_svid_umode(void (*func) (char *nick, time_t ts));
00681 E void pmodule_cmd_nc_change(void (*func) (User * u));
00682 E void pmodule_cmd_svid_umode2(void (*func) (User * u, char *ts));
00683 E void pmodule_cmd_svid_umode3(void (*func) (User * u, char *ts));
00684 E void pmodule_cmd_ctcp(void (*func) (char *source, char *dest, char *buf));
00685 E void pmodule_cmd_svsjoin(void (*func) (char *source, char *nick, char *chan, char *param));
00686 E void pmodule_cmd_svspart(void (*func) (char *source, char *nick, char *chan));
00687 E void pmodule_cmd_swhois(void (*func) (char *source, char *who, char *mask));
00688 E void pmodule_cmd_eob(void (*func) ());
00689 E void pmodule_cmd_jupe(void (*func) (char *jserver, char *who, char *reason));
00690 E void pmodule_set_umode(void (*func) (User * user, int ac, char **av));
00691 E void pmodule_valid_nick(int (*func) (char *nick));
00692 E void pmodule_valid_chan(int (*func) (char *chan));
00693 E void pmodule_flood_mode_check(int (*func) (char *value));
00694 E void pmodule_jointhrottle_mode_check(int (*func) (char *value));
00695 E void pmodule_ircd_var(IRCDVar * ircdvar);
00696 E void pmodule_ircd_cap(IRCDCAPAB * cap);
00697 E void pmodule_ircd_version(char *version);
00698 E void pmodule_ircd_cbmodeinfos(CBModeInfo * modeinfos);
00699 E void pmodule_ircd_cumodes(CUMode modes[128]);
00700 E void pmodule_ircd_flood_mode_char_set(char *mode);
00701 E void pmodule_ircd_flood_mode_char_remove(char *mode);
00702 E void pmodule_ircd_cbmodes(CBMode modes[128]);
00703 E void pmodule_ircd_cmmodes(CMMode modes[128]);
00704 E void pmodule_ircd_csmodes(char mode[128]);
00705 E void pmodule_ircd_useTSMode(int use);
00706 E void pmodule_invis_umode(int mode);
00707 E void pmodule_oper_umode(int mode);
00708 E void pmodule_invite_cmode(int mode);
00709 E void pmodule_secret_cmode(int mode);
00710 E void pmodule_private_cmode(int mode);
00711 E void pmodule_key_mode(int mode);
00712 E void pmodule_limit_mode(int mode);
00713 E void pmodule_permchan_mode(int mode);
00714
00715 E int anope_get_secret_mode();
00716 E int anope_get_invite_mode();
00717 E int anope_get_key_mode();
00718 E int anope_get_limit_mode();
00719 E int anope_get_private_mode();
00720 E int anope_get_invis_mode();
00721 E int anope_get_oper_mode();
00722 E int anope_get_permchan_mode();
00723
00724
00725
00726 E char **langtexts[NUM_LANGS];
00727 E char *langnames[NUM_LANGS];
00728 E int langlist[NUM_LANGS];
00729
00730 E void lang_init(void);
00731 #define getstring(na,index) \
00732 (langtexts[((na)&&((NickAlias*)na)->nc&&!(((NickAlias*)na)->status & NS_VERBOTEN)?((NickAlias*)na)->nc->language:NSDefLanguage)][(index)])
00733 #define getstring2(nc,index) \
00734 (langtexts[((nc)?((NickCore*)nc)->language:NSDefLanguage)][(index)])
00735 E int strftime_lang(char *buf, int size, User * u, int format,
00736 struct tm *tm);
00737 E void syntax_error(char *service, User * u, const char *command,
00738 int msgnum);
00739
00740
00741
00742
00743 E void do_listnicks(int ac, char **av);
00744 E void do_listchans(int ac, char **av);
00745
00746
00747
00748
00749 E int open_log(void);
00750 E void close_log(void);
00751 E void alog(const char *fmt, ...) FORMAT(printf,1,2);
00752 E void log_perror(const char *fmt, ...) FORMAT(printf,1,2);
00753 E void fatal(const char *fmt, ...) FORMAT(printf,1,2);
00754 E void fatal_perror(const char *fmt, ...) FORMAT(printf,1,2);
00755
00756
00757
00758 E MailInfo *MailBegin(User *u, NickCore *nc, char *subject, char *service);
00759 E MailInfo *MailRegBegin(User *u, NickRequest *nr, char *subject, char *service);
00760 E MailInfo *MailMemoBegin(NickCore * nc);
00761 E void MailEnd(MailInfo *mail);
00762 E void MailReset(User *u, NickCore *nc);
00763 E int MailValidate(const char *email);
00764
00765
00766
00767 E const char version_number[];
00768 E const char version_number_dotted[];
00769 E const char version_build[];
00770 E char *version_protocol;
00771 E const char version_flags[];
00772
00773 E char *services_dir;
00774 E char *log_filename;
00775 E int debug;
00776 E int readonly;
00777 E int logchan;
00778 E int skeleton;
00779 E int nofork;
00780 E int forceload;
00781 E int nothird;
00782 E int noexpire;
00783 E int protocoldebug;
00784
00785 #ifdef USE_RDB
00786 E int do_mysql;
00787 #endif
00788
00789 E int is44;
00790 E int quitting;
00791 E int delayed_quit;
00792 E char *quitmsg;
00793 E char inbuf[BUFSIZE];
00794 E int servsock;
00795 E int save_data;
00796 E int got_alarm;
00797 E time_t start_time;
00798
00799 E void save_databases(void);
00800 E void expire_all(void);
00801 E void do_backtrace(int show_segheader);
00802 E void sighandler(int signum);
00803 E void do_restart_services(void);
00804
00805
00806
00807 E void *smalloc(long size);
00808 E void *scalloc(long elsize, long els);
00809 E void *srealloc(void *oldptr, long newsize);
00810 E char *sstrdup(const char *s);
00811
00812
00813
00814
00815 E void ms_init(void);
00816 E void memoserv(User * u, char *buf);
00817 E void check_memos(User * u);
00818 E MemoInfo *getmemoinfo(const char *name, int *ischan, int *isforbid);
00819 E void memo_send(User * u, char *name, char *text, int z);
00820 E void memo_send_from(User * u, char *name, char *text, int z, char *source);
00821 E int delmemo(MemoInfo * mi, int num);
00822
00823
00824
00825 E int m_nickcoll(char *user);
00826 E int m_away(char *source, char *msg);
00827 E int m_kill(char *nick, char *msg);
00828 E int m_motd(char *source);
00829 E int m_privmsg(char *source, char *receiver, char *msg);
00830 E int m_stats(char *source, int ac, char **av);
00831 E int m_whois(char *source, char *who);
00832 E int m_time(char *source, int ac, char **av);
00833 E int m_version(char *source, int ac, char **av);
00834
00835
00836
00837
00838 E int toupper(char);
00839 E int tolower(char);
00840 E char *strscpy(char *d, const char *s, size_t len);
00841 #ifndef HAVE_STRLCPY
00842 E size_t strlcpy(char *, const char *, size_t);
00843 #endif
00844 #ifndef HAVE_STRLCAT
00845 E size_t strlcat(char *, const char *, size_t);
00846 #endif
00847 E char *stristr(char *s1, char *s2);
00848 E char *strnrepl(char *s, int32 size, const char *old, const char *new);
00849 E char *merge_args(int argc, char **argv);
00850 E int match_wild(const char *pattern, const char *str);
00851 E int match_wild_nocase(const char *pattern, const char *str);
00852 E int dotime(const char *s);
00853 E char *duration(NickAlias * na, char *buf, int bufsize, time_t seconds);
00854 E char *expire_left(NickAlias * na, char *buf, int len, time_t expires);
00855 E void protocol_debug(char *source, char *cmd, int argc, char **argv);
00856 E int doValidHost(const char *host, int type);
00857
00858 typedef int (*range_callback_t) (User * u, int num, va_list args);
00859 E int process_numlist(const char *numstr, int *count_ret,
00860 range_callback_t callback, User * u, ...);
00861
00862 E int isValidHost(const char *host, int type);
00863 E int isvalidchar(const char c);
00864
00865 E char *myStrGetToken(const char *str, const char dilim, int token_number);
00866 E char *myStrGetOnlyToken(const char *str, const char dilim,
00867 int token_number);
00868 E char *myStrSubString(const char *src, int start, int end);
00869 E char *myStrGetTokenRemainder(const char *str, const char dilim,
00870 int token_number);
00871 E char *stripModePrefix(const char *str);
00872 E int myNumToken(const char *str, const char dilim);
00873 E void doCleanBuffer(char *str);
00874 E void EnforceQlinedNick(char *nick, char *killer);
00875 E int nickIsServices(char *nick, int bot);
00876
00877 E void add_entropy_userkeys(void);
00878 E void rand_init(void);
00879 E unsigned char getrandom8(void);
00880 E u_int16_t getrandom16(void);
00881 E u_int32_t getrandom32(void);
00882
00883 E char *str_signed(unsigned char *str);
00884
00885 E void ntoa(struct in_addr addr, char *ipaddr, int len);
00886
00887 E char **buildStringList(char *src, int *number);
00888 E void binary_to_hex(unsigned char *bin, char *hex, int length);
00889
00890 E uint32 cidr_to_netmask(uint16 cidr);
00891 E uint16 netmask_to_cidr(uint32 mask);
00892
00893 E int str_is_wildcard(const char *str);
00894 E int str_is_pure_wildcard(const char *str);
00895
00896 E uint32 str_is_ip(char *str);
00897 E int str_is_cidr(char *str, uint32 * ip, uint32 * mask, char **host);
00898
00899
00900
00901 E void modules_core_init(int number, char **list);
00902 E void modules_unload_all(boolean fini, boolean unload_proto);
00903 E void moduleCallBackRun(void);
00904 E void moduleCleanStruct(ModuleData **moduleData);
00905 E void ModuleDatabaseBackup(char *dbname);
00906 E void ModuleRemoveBackups(char *dbname);
00907
00908
00909
00910 E int32 nnews, news_size;
00911 E NewsItem *news;
00912 E void get_news_stats(long *nrec, long *memuse);
00913 E void load_news(void);
00914 E void save_news(void);
00915 E void save_rdb_news(void);
00916 E void display_news(User * u, int16 type);
00917 E int do_logonnews(User * u);
00918 E int do_opernews(User * u);
00919 E int do_randomnews(User * u);
00920
00921
00922
00923 E NickAlias *nalists[1024];
00924 E NickCore *nclists[1024];
00925 E NickRequest *nrlists[1024];
00926 E NickRequest *findrequestnick(const char *nick);
00927 E int delnickrequest(NickRequest * nr);
00928 E unsigned int guestnum;
00929 E void insert_requestnick(NickRequest * nr);
00930 E void alpha_insert_alias(NickAlias * na);
00931 E void insert_core(NickCore * nc);
00932 E void listnicks(int count_only, const char *nick);
00933 E void get_aliases_stats(long *nrec, long *memuse);
00934 E void get_core_stats(long *nrec, long *memuse);
00935 E void collide(NickAlias * na, int from_timeout);
00936 E void del_ns_timeout(NickAlias * na, int type);
00937 E void change_core_display(NickCore * nc, char *newdisplay);
00938 E void release(NickAlias * na, int from_timeout);
00939 E int do_setmodes(User * u);
00940 E int should_mode_change(int16 status, int16 mode);
00941
00942 E void ns_init(void);
00943 E void nickserv(User * u, char *buf);
00944 E void load_ns_dbase(void);
00945 E void load_ns_req_db(void);
00946 E void save_ns_dbase(void);
00947 E void save_ns_req_dbase(void);
00948 E void save_ns_rdb_dbase(void);
00949 E void save_ns_req_rdb_dbase(void);
00950 E int validate_user(User * u);
00951 E void cancel_user(User * u);
00952 E int nick_identified(User * u);
00953 E int nick_recognized(User * u);
00954 E void expire_nicks(void);
00955 E void expire_requests(void);
00956 EI int ns_do_register(User * u);
00957 E int delnick(NickAlias * na);
00958 E NickAlias *findnick(const char *nick);
00959 E NickCore *findcore(const char *nick);
00960 E void clean_ns_timeouts(NickAlias * na);
00961 E void nsStartNickTracking(User * u);
00962 E void nsStopNickTracking(User * u);
00963 E int nsCheckNickTracking(User *u);
00964
00965 E int group_identified(User * u, NickCore * nc);
00966 E int is_on_access(User * u, NickCore * nc);
00967
00968
00969
00970 E SList akills, sglines, sqlines, szlines;
00971 E SList servadmins;
00972 E SList servopers;
00973
00974 E int DefConModesSet;
00975 E uint32 DefConModesOn;
00976 E uint32 DefConModesOff;
00977 E ChannelInfo DefConModesCI;
00978
00979 E void operserv(User *u, char *buf);
00980 E void os_init(void);
00981 E void load_os_dbase(void);
00982 E void save_os_dbase(void);
00983 E void save_os_rdb_dbase(void);
00984
00985 E void os_remove_nick(NickCore *nc);
00986 E int is_services_root(User *u);
00987 E int is_services_admin(User *u);
00988 E int is_services_oper(User *u);
00989 E int nick_is_services_root(NickCore * nc);
00990 E int nick_is_services_admin(NickCore *nc);
00991 E int nick_is_services_oper(NickCore *nc);
00992
00993 E int add_akill(User *u, char *mask, const char *by, const time_t expires, const char *reason);
00994 E int check_akill(char *nick, const char *username, const char *host, const char *vhost, const char *ip);
00995 E void expire_akills(void);
00996 E void oper_global(char *nick, char *fmt, ...);
00997
00998 E int add_sgline(User *u, char *mask, const char *by, const time_t expires, const char *reason);
00999 E int check_sgline(char *nick, const char *realname);
01000 E void expire_sglines(void);
01001
01002 E int add_sqline(User *u, char *mask, const char *by, const time_t expires, const char *reason);
01003 E int check_sqline(char *nick, int nick_change);
01004 E void expire_sqlines(void);
01005 E int check_chan_sqline(const char *chan);
01006
01007 E int add_szline(User * u, char *mask, const char *by,
01008 const time_t expires, const char *reason);
01009 E void expire_szlines(void);
01010 E int check_szline(char *nick, char *ip);
01011
01012 E Server *server_global(Server * s, char *msg);
01013
01014 E int OSOpersOnly;
01015 E time_t DefContimer;
01016 E void runDefCon(void);
01017 E int defconParseModeString(const char *str);
01018
01019
01020
01021 E int allow_ignore;
01022 E IgnoreData *ignore;
01023
01024 E void add_ignore(const char *nick, time_t delta);
01025 E IgnoreData *get_ignore(const char *nick);
01026 E int delete_ignore(const char *nick);
01027 E int clear_ignores();
01028
01029 E int split_buf(char *buf, char ***argv, int colon_special);
01030 E void process(void);
01031
01032
01033
01034 E void send_cmd(const char *source, const char *fmt, ...)
01035 FORMAT(printf,2,3);
01036 E void vsend_cmd(const char *source, const char *fmt, va_list args)
01037 FORMAT(printf,2,0);
01038
01039 E void notice_server(char *source, Server * s, char *fmt, ...)
01040 FORMAT(printf,3,4);
01041 E void notice_user(char *source, User *u, const char *fmt, ...)
01042 FORMAT(printf,3,4);
01043
01044 E void notice_list(char *source, char *dest, char **text);
01045 E void notice_lang(char *source, User *dest, int message, ...);
01046 E void notice_help(char *source, User *dest, int message, ...);
01047
01048
01049
01050
01051 E Server *servlist;
01052 E Server *me_server;
01053 E Server *serv_uplink;
01054 E uint32 uplink_capab;
01055 E CapabInfo capab_info[];
01056
01057 E Server *first_server(int flags);
01058 E Server *next_server(int flags);
01059
01060 E int is_ulined(char *server);
01061 E int is_sync(Server *server);
01062
01063 E Server *new_server(Server * uplink, const char *name, const char *desc,
01064 uint16 flags, char *suid);
01065
01066 E Server *findserver(Server *s, const char *name);
01067
01068 E void do_server(const char *source, char *servername, char *hops, char *descript, char *numeric);
01069 E void do_squit(const char *source, int ac, char **av);
01070 E void capab_parse(int ac, char **av);
01071 E int anope_check_sync(const char *name);
01072
01073 E void finish_sync(Server *serv, int sync_links);
01074
01075 E void ts6_uid_init(void);
01076 E void ts6_uid_increment(unsigned int slot);
01077 E char *ts6_uid_retrieve(void);
01078
01079
01080
01081 E Exception *exceptions;
01082 E int16 nexceptions;
01083
01084 E Session *sessionlist[1024];
01085 E int32 nsessions;
01086
01087 E void get_session_stats(long *nrec, long *memuse);
01088 E void get_exception_stats(long *nrec, long *memuse);
01089
01090 E int do_session(User *u);
01091 E int add_session(char *nick, char *host, char *hostip);
01092 E void del_session(const char *host);
01093
01094 E void load_exceptions(void);
01095 E void save_exceptions(void);
01096 E void save_rdb_exceptions(void);
01097 E int do_exception(User *u);
01098 E void expire_exceptions(void);
01099
01100 E Session *findsession(const char *host);
01101
01102 E Exception *find_host_exception(const char *host);
01103 E Exception *find_hostip_exception(const char *host, const char *hostip);
01104 E int exception_add(User * u, const char *mask, const int limit,
01105 const char *reason, const char *who,
01106 const time_t expires);
01107
01108
01109 E int slist_add(SList *slist, void *item);
01110 E void slist_clear(SList *slist, int free);
01111 E int slist_delete(SList *slist, int index);
01112 E int slist_delete_range(SList *slist, char *range, slist_delcheckcb_t cb, ...);
01113 E int slist_enum(SList *slist, char *range, slist_enumcb_t cb, ...);
01114 E int slist_full(SList *slist);
01115 E int slist_indexof(SList *slist, void *item);
01116 E void slist_init(SList *slist);
01117 E void slist_pack(SList *slist);
01118 E int slist_remove(SList *slist, void *item);
01119 E int slist_setcapacity(SList *slist, int16 capacity);
01120
01121
01122
01123 E int32 total_read, total_written;
01124 E int32 read_buffer_len(void);
01125 E int32 write_buffer_len(void);
01126
01127 E int sgetc(ano_socket_t s);
01128 E char *sgets(char *buf, int len, ano_socket_t s);
01129 E char *sgets2(char *buf, int len, ano_socket_t s);
01130 E int sread(ano_socket_t s, char *buf, int len);
01131 E int sputs(char *str, ano_socket_t s);
01132 E int sockprintf(ano_socket_t s, char *fmt, ...);
01133 E int conn(const char *host, int port, const char *lhost, int lport);
01134 E void disconn(ano_socket_t s);
01135
01136
01137
01138 E User *userlist[1024];
01139
01140 E int32 usercnt, opcnt;
01141 E uint32 maxusercnt;
01142 E time_t maxusertime;
01143
01144 E void delete_user(User *user);
01145
01146 E void get_user_stats(long *nusers, long *memuse);
01147 E User *finduser(const char *nick);
01148 E User *firstuser(void);
01149 E User *nextuser(void);
01150
01151 E User *find_byuid(const char *uid);
01152 E User *first_uid(void);
01153 E User *next_uid(void);
01154 E Uid *new_uid(const char *nick, char *uid);
01155 E Uid *find_uid(const char *nick);
01156 E Uid *find_nickuid(const char *uid);
01157 E Server *findserver_uid(Server * s, const char *name);
01158 E char *TS6SID;
01159 E char *TS6UPLINK;
01160
01161 E void update_host(User * user);
01162 E void change_user_host(User * user, const char *host);
01163 E void change_user_username(User * user, const char *username);
01164 E void change_user_realname(User * user, const char *realname);
01165
01166 E User *do_nick(const char *source, char *nick, char *username, char *host,
01167 char *server, char *realname, time_t ts, uint32 svid, uint32 ip, char *vhost, char *uid);
01168
01169 E void do_umode(const char *source, int ac, char **av);
01170 E void do_umode2(const char *source, int ac, char **av);
01171 E void do_quit(const char *source, int ac, char **av);
01172 E void do_kill(char *source, char *reason);
01173
01174 E int is_oper(User * user);
01175 E int is_protected(User * user);
01176
01177 E int is_excepted(ChannelInfo * ci, User * user);
01178 E int is_excepted_mask(ChannelInfo * ci, char *mask);
01179
01180 E int match_usermask(const char *mask, User * user);
01181 E int match_usermask_full(const char *mask, User * user, boolean full);
01182 E int match_userip(const char *mask, User * user, char *host);
01183 E void split_usermask(const char *mask, char **nick, char **user,
01184 char **host);
01185 E char *create_mask(User * u);
01186
01187 #ifdef USE_MYSQL
01188
01189 E MYSQL *mysql;
01190 E MYSQL_RES *mysql_res;
01191 E MYSQL_FIELD *mysql_fields;
01192 E MYSQL_ROW mysql_row;
01193
01194 E int db_mysql_init();
01195 E int db_mysql_open();
01196 E int db_mysql_close();
01197 E int db_mysql_query(char *sql);
01198 E char *db_mysql_quote(char *sql);
01199 E char *db_mysql_quote_buffer(char *sql, int size);
01200 E int db_mysql_try(const char *fmt, ...);
01201 E int db_mysql_save_ns_core(NickCore * nc);
01202 E int db_mysql_save_ns_alias(NickAlias * na);
01203 E int db_mysql_save_ns_req(NickRequest * nr);
01204 E int db_mysql_save_cs_info(ChannelInfo * ci);
01205 E int db_mysql_save_os_db(unsigned int maxucnt, unsigned int maxutime,
01206 SList * ak, SList * sgl, SList * sql,
01207 SList * szl);
01208 E int db_mysql_save_news(NewsItem * ni);
01209 E int db_mysql_save_exceptions(Exception * e);
01210 E int db_mysql_save_hs_core(HostCore * hc);
01211 E int db_mysql_save_bs_core(BotInfo * bi);
01212 E int db_mysql_load_bs_dbase(void);
01213 E int db_mysql_load_hs_dbase(void);
01214 E int db_mysql_load_ns_dbase(void);
01215 E int db_mysql_load_ns_req_dbase(void);
01216 E int db_mysql_load_cs_dbase(void);
01217 E int db_mysql_load_os_dbase(void);
01218 E int db_mysql_load_exceptions(void);
01219 E int db_mysql_load_news(void);
01220 E unsigned int mysql_rand(void);
01221 #endif
01222
01223 E void privmsg(char *source, char *dest, const char *fmt, ...);
01224 E void notice(char *source, char *dest, const char *fmt, ...);
01225
01226
01227
01228 E int anope_set_mod_current_buffer(int ac, char **av);
01229
01230 E void anope_cmd_211(const char *fmt, ...);
01231 E void anope_cmd_219(char *source, char *who);
01232 E void anope_cmd_242(const char *fmt, ...);
01233 E void anope_cmd_243(const char *fmt, ...);
01234 E void anope_cmd_250(const char *fmt, ...);
01235 E void anope_cmd_307(const char *fmt, ...);
01236 E void anope_cmd_311(const char *fmt, ...);
01237 E void anope_cmd_312(const char *fmt, ...);
01238 E void anope_cmd_317(const char *fmt, ...);
01239 E void anope_cmd_318(char *source, char *who);
01240 E void anope_cmd_351(char *source);
01241 E void anope_cmd_372(char *source, char *msg);
01242 E void anope_cmd_372_error(char *source);
01243 E void anope_cmd_375(char *source);
01244 E void anope_cmd_376(char *source);
01245 E void anope_cmd_391(char *source, char *timestr);
01246 E void anope_cmd_401(char *source, char *who);
01247 E void anope_cmd_akill(char *user, char *host, char *who, time_t when, time_t expires, char *reason);
01248 E void anope_cmd_vhost_on(char *nick, char *vIdent, char *vhost);
01249 E void anope_cmd_vhost_off(User *u);
01250 E void anope_cmd_connect(int servernum);
01251 E void anope_cmd_bob();
01252 E void anope_cmd_global(char *source, const char *fmt, ...);
01253 E void anope_cmd_invite(char *source, char *chan, char *nick);
01254 E void anope_cmd_join(char *user, char *channel, time_t chantime);
01255 E void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt, ...);
01256 E void anope_cmd_mode(char *source, char *dest, const char *fmt, ...);
01257 E void anope_cmd_unban(char *name, char *nick);
01258 E void anope_cmd_bot_chan_mode(char *nick, char *chan);
01259 E void anope_cmd_nick(char *nick, char *name, char *mode);
01260 E void anope_cmd_chg_nick(char *oldnick, char *newnick);
01261 E void anope_cmd_bot_nick(char *nick, char *user,char *host,char *real,char *modes);
01262 E void anope_cmd_guest_nick(char *nick, char *user,char *host,char *real,char *modes);
01263 E void anope_cmd_notice(char *source, char *dest, const char *fmt, ...);
01264 E void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...);
01265 E void anope_cmd_notice2(char *source, char *dest, char *msg);
01266 E void anope_cmd_serv_notice(char *source, char *dest, char *msg);
01267 E void anope_cmd_part(char *nick, char *chan, const char *fmt, ...);
01268 E void anope_cmd_pong(char *servname, char *who);
01269 E void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...);
01270 E void anope_cmd_action(char *source, char *dest, const char *fmt, ...);
01271 E void anope_cmd_privmsg2(char *source, char *dest, char *msg);
01272 E void anope_cmd_serv_privmsg(char *source, char *dest, char *msg);
01273 E void anope_cmd_quit(char *source, const char *fmt, ...);
01274 E void anope_cmd_remove_akill(char *user, char *host);
01275 E void anope_cmd_sgline(char *mask, char *reason);
01276 E void anope_cmd_sqline(char *mask, char *reason);
01277 E void anope_cmd_szline(char *mask, char *reason, char *whom);
01278 E void anope_cmd_squit(char *servname, char *message);
01279 E void anope_cmd_svshold(char *nick);
01280 E void anope_cmd_release_svshold(char *nick);
01281 E void anope_cmd_svsjoin(char *source, char *nick,char *chan, char *param);
01282 E void anope_cmd_svskill(char *source,char *user, const char *fmt, ...);
01283 E void anope_cmd_svsmode(User * u, int ac, char **av);
01284 E void anope_cmd_svsmode_chan(char *name, char *mode, char *nick);
01285 E void anope_cmd_svsnick(char *nick,char *newnick, time_t when);
01286 E void anope_cmd_svsnoop(char *server, int set);
01287 E void anope_cmd_svso(char *source,char *nick, char *flag);
01288 E void anope_cmd_svspart(char *source, char *nick,char *chan);
01289 E void anope_cmd_swhois(char *source, char *who, char *mask);
01290 E void anope_cmd_topic(char *whosets, char *chan, char *whosetit, char *topic, time_t when);
01291 E void anope_cmd_unsgline(char *mask);
01292 E void anope_cmd_unsqline(char *user);
01293 E void anope_cmd_unszline(char *mask);
01294 E void anope_cmd_eob();
01295 E void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...);
01296
01297 EI int anope_event_482(char *source, int ac, char **av);
01298 EI int anope_event_436(char *source, int ac, char **av);
01299 EI int anope_event_away(char *source, int ac, char **av);
01300 EI int anope_event_ping(char *source, int ac, char **av);
01301 EI int anope_event_motd(char *source, int ac, char **av);
01302 EI int anope_event_join(char *source, int ac, char **av);
01303 EI int anope_event_kick(char *source, int ac, char **av);
01304 EI int anope_event_kill(char *source, int ac, char **av);
01305 EI int anope_event_mode(char *source, int ac, char **av);
01306 EI int anope_event_tmode(char *source, int ac, char **av);
01307 EI int anope_event_quit(char *source, int ac, char **av);
01308 EI int anope_event_squit(char *source, int ac, char **av);
01309 EI int anope_event_topic(char *source, int ac, char **av);
01310 EI int anope_event_whois(char *source, int ac, char **av);
01311 EI int anope_event_part(char *source, int ac, char **av);
01312 EI int anope_event_server(char *source, int ac, char **av);
01313 EI int anope_event_sid(char *source, int ac, char **av);
01314 EI int anope_event_nick(char *source, int ac, char **av);
01315 EI int anope_event_bmask(char *source, int ac, char **av);
01316 EI int anope_event_gnotice(char *source, int ac, char **av);
01317 EI int anope_event_privmsg(char *source, int ac, char **av);
01318 EI int anope_event_capab(char *source, int ac, char **av);
01319 EI int anope_event_sjoin(char *source, int ac, char **av);
01320 EI int anope_event_cs(char *source, int ac, char **av);
01321 EI int anope_event_hs(char *source, int ac, char **av);
01322 EI int anope_event_ms(char *source, int ac, char **av);
01323 EI int anope_event_ns(char *source, int ac, char **av);
01324 EI int anope_event_os(char *source, int ac, char **av);
01325 EI int anope_event_vs(char *source, int ac, char **av);
01326 EI int anope_event_svinfo(char *source, int ac, char **av);
01327 EI int anope_event_chghost(char *source, int ac, char **av);
01328 EI int anope_event_sethost(char *source, int ac, char **av);
01329 EI int anope_event_chgident(char *source, int ac, char **av);
01330 EI int anope_event_setident(char *source, int ac, char **av);
01331 EI int anope_event_chgname(char *source, int ac, char **av);
01332 EI int anope_event_setname(char *source, int ac, char **av);
01333 EI int anope_event_svsinfo(char *source, int ac, char **av);
01334 EI int anope_event_snick(char *source, int ac, char **av);
01335 EI int anope_event_vhost(char *source, int ac, char **av);
01336 EI int anope_event_tkl(char *source, int ac, char **av);
01337 EI int anope_event_eos(char *source, int ac, char **av);
01338 EI int anope_event_eob(char *source, int ac, char **av);
01339 EI int anope_event_pass(char *source, int ac, char **av);
01340 EI int anope_event_netinfo(char *source, int ac, char **av);
01341 EI int anope_event_error(char *source, int ac, char **av);
01342 EI int anope_event_netctrl(char *source, int ac, char **av);
01343 EI int anope_event_notice(char *source, int ac, char **av);
01344 EI int anope_event_snotice(char *source, int ac, char **av);
01345 EI int anope_event_sqline(char *source, int ac, char **av);
01346 EI int anope_event_smo(char *source, int ac, char **av);
01347 EI int anope_event_myid(char *source, int ac, char **av);
01348 EI int anope_event_vctrl(char *source, int ac, char **av);
01349 EI int anope_event_tctrl(char *source, int ac, char **av);
01350 EI int anope_event_snetinfo(char *source, int ac, char **av);
01351 EI int anope_event_umode2(char *source, int ac, char **av);
01352 EI int anope_event_globops(char *source, int ac, char **av);
01353 EI int anope_event_swhois(char *source, int ac, char **av);
01354 EI int anope_event_burst(char *source, int ac, char **av);
01355 EI int anope_event_luserslock(char *source, int ac, char **av);
01356 EI int anope_event_admin(char *source, int ac, char **av);
01357 EI int anope_event_credits(char *source, int ac, char **av);
01358 EI int anope_event_rehash(char *source, int ac, char **av);
01359 EI int anope_event_sdesc(char *source, int ac, char **av);
01360 EI int anope_event_netglobal(char *source, int ac, char **av);
01361 EI int anope_event_invite(char *source, int ac, char **av);
01362 E int anope_event_null(char *source, int ac, char **av);
01363
01364 E void anope_set_umode(User * user, int ac, char **av);
01365 E void anope_cmd_svid_umode(char *nick, time_t ts);
01366 E void anope_cmd_svid_umode2(User *u, char *ts);
01367 E void anope_cmd_svid_umode3(User *u, char *ts);
01368 E void anope_cmd_nc_change(User *u);
01369 E int anope_flood_mode_check(char *value);
01370 E int anope_jointhrottle_mode_check(char *value);
01371
01372 E void anope_cmd_jupe(char *jserver, char *who, char *reason);
01373
01374 E void anope_cmd_global_legacy(char *source, char *fmt);
01375 E void wallops(char *source, const char *fmt, ...);
01376
01377 E int anope_valid_nick(char *nick);
01378 E int anope_valid_chan(char *chan);
01379
01380 E char *common_get_vident(User *u);
01381 E char *common_get_vhost(User *u);
01382 E char *send_token(char *token1, char *token2);
01383 E char *base64enc(long i);
01384 E long base64dec(char *b64);
01385 E long base64dects(char *ts);
01386 E int b64_encode(char *src, size_t srclength, char *target, size_t targsize);
01387 E int b64_decode(char *src, char *target, size_t targsize);
01388 E char *encode_ip(unsigned char *ip);
01389 E int decode_ip(char *buf);
01390
01391 #define Anope_Free(x) if ((x) != NULL) free(x)
01392
01393 E char *host_resolve(char *host);
01394
01395 E void event_message_process(char *eventbuf);
01396 E void eventprintf(char *fmt, ...);
01397 E void event_process_hook(const char *name, int argc, char **argv);
01398 E void send_event(const char *name, int argc, ...);
01399
01400 #ifdef _WIN32
01401 E char *GetWindowsVersion(void) ;
01402 E int SupportedWindowsVersion(void);
01403 #endif
01404
01405 #endif