This repository has been archived on 2025-02-12. You can view files and clone it, but cannot push or open issues or pull requests.
NeoStats/ircd.h

239 lines
9.6 KiB
C
Raw Permalink Normal View History

2003-06-10 12:51:56 +00:00
/* NeoStats - IRC Statistical Services
2004-01-14 11:36:37 +00:00
** Copyright (c) 1999-2004 Adam Rutter, Justin Hammond
2003-06-10 12:51:56 +00:00
** http://www.neostats.net/
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
** USA
**
** NeoStats CVS Identification
** $Id$
2003-06-10 12:51:56 +00:00
*/
#ifndef IRCD_H
#define IRCD_H
2004-01-19 20:03:09 +00:00
typedef void (*ircd_cmd_handler) (char *origin, char **argv, int argc, int srv);
2003-12-09 22:17:09 +00:00
typedef struct ircd_cmd{
2003-12-09 22:17:09 +00:00
const char *name;
#ifdef GOTTOKENSUPPORT
const char *token;
#endif
2004-01-19 20:03:09 +00:00
ircd_cmd_handler function;
2003-07-30 13:58:22 +00:00
int usage;
}ircd_cmd;
typedef struct ChanModes {
2003-12-04 23:33:44 +00:00
long mode;
char flag;
unsigned nickparam:1; /* 1 = yes 0 = no */
unsigned parameters:1;
char sjoin;
} ChanModes;
2003-12-04 23:33:44 +00:00
2003-12-08 22:53:59 +00:00
typedef struct {
unsigned long umode;
2003-12-08 22:53:59 +00:00
char mode;
int level;
} UserModes;
2003-12-08 22:53:59 +00:00
typedef struct ircd_server {
int burst;
int unkline;
int uprot;
int modex;
int nicklen;
int gc;
int nickip;
2004-07-06 10:58:05 +00:00
/* unreal cloak keys are md5, so we need at least 34+1 */
char cloak[CLOAKKEYLEN];
2004-01-25 23:38:53 +00:00
int maxglobalcnt;
int tsendsync;
2004-02-04 22:59:41 +00:00
unsigned int token:1;
unsigned int noquit;
} ircd_server;
extern UserModes user_umodes[];
2003-12-08 22:53:59 +00:00
#ifdef GOTUSERSMODES
extern UserModes user_smodes[];
2003-12-08 22:53:59 +00:00
#endif
extern ircd_server ircd_srv;
extern ircd_cmd cmd_list[];
extern ChanModes chan_modes[];
extern const int ircd_cmdcount;
extern const int ircd_umodecount;
extern const int ircd_smodecount;
extern const int ircd_cmodecount;
extern long services_bot_umode;
char* UmodeMaskToString(const long Umode);
long UmodeStringToMask(const char* UmodeString, long Umode);
char* SmodeMaskToString(const long Umode);
long SmodeStringToMask(const char* UmodeString, long Smode);
int init_services_bot (void);
void m_private (char* origin, char **av, int ac, int cmdptr);
void m_notice (char* origin, char **av, int ac, int cmdptr);
2004-01-25 23:38:53 +00:00
void do_motd (const char* nick, const char *remoteserver);
void do_admin (const char* nick, const char *remoteserver);
void do_credits (const char* nick, const char *remoteserver);
void do_stats (const char* nick, const char *what);
void do_ping (const char* origin, const char *destination);
void do_pong (const char* origin, const char* destination);
void do_version (const char* nick, const char *remoteserver);
void do_protocol (char *origin, char **argv, int argc);
2004-01-28 20:52:37 +00:00
void do_sjoin (char* tstime, char* channame, char *modes, char *sjoinnick, char **argv, int argc);
2004-01-25 23:38:53 +00:00
void do_netinfo (const char* maxglobalcnt, const char* tsendsync, const char* prot, const char* cloak, const char* netname);
void do_snetinfo (const char* maxglobalcnt, const char* tsendsync, const char* prot, const char* cloak, const char* netname);
void do_join (const char* nick, const char* chanlist, const char* keys);
2004-01-25 23:38:53 +00:00
void do_part (const char* nick, const char* chan, const char* reason);
2004-01-28 22:20:28 +00:00
void do_nick (const char *nick, const char *hopcount, const char *TS,
const char *user, const char *host, const char *server,
const char *ip, const char *servicestamp, const char *modes,
const char *vhost, const char *realname, const char *numeric
#ifdef GOTUSERSMODES
2004-01-28 22:20:28 +00:00
, const char *smodes
#endif
);
2004-01-28 22:20:28 +00:00
void do_client (const char *nick, const char *arg1, const char *TS,
const char *modes, const char *smodes,
const char *user, const char *host, const char *vhost,
const char *server, const char *arg9,
const char *ip, const char *realname);
void do_quit (const char *nick, const char *quitmsg);
void do_kill (const char *nick, const char *killmsg);
void do_squit (const char *name, const char* reason);
void do_kick (const char *kickby, const char *chan, const char *kicked, const char *kickreason);
#ifdef MSG_SVINFO
void do_svinfo (void);
#endif
#ifdef MSG_VCTRL
void do_vctrl (const char* uprot, const char* nicklen, const char* modex, const char* gc, const char* netname);
#endif
2004-01-28 22:20:28 +00:00
#ifdef GOTUSERSMODES
void do_smode (const char* nick, const char* modes);
#endif
void do_mode_user (const char* nick, const char* modes);
void do_mode_channel (char *origin, char **argv, int argc);
2004-03-10 22:31:20 +00:00
void do_svsmode_user (const char* nick, const char* modes, const char* ts);
/* These are the same for now but we might need to be different in the
* future so use macros
*/
#define do_svsmode_channel do_mode_channel
2004-01-28 22:20:28 +00:00
void do_away (const char* nick, const char *reason);
void do_vhost (const char* nick, const char *vhost);
void do_nickchange (const char * oldnick, const char *newnick, const char * ts);
void do_topic (const char* chan, const char *owner, const char* ts, const char *topic);
void do_server (const char *name, const char *uplink, const char* hops, const char *numeric, const char *infoline, int srv);
#ifdef MSG_BURST
void do_burst (char *origin, char **argv, int argc);
#endif
#ifdef MSG_SWHOIS
void do_swhois (char *who, char *swhois);
#endif
2004-02-07 21:32:26 +00:00
#ifdef MSG_TKL
void do_tkl(const char *add, const char *type, const char *user, const char *host, const char *setby, const char *tsexpire, const char *tsset, const char *reason);
#endif
#ifdef MSG_EOS
void do_eos(const char *name);
#endif
2003-06-10 12:51:56 +00:00
/* Defined in ircd specific files but common to all */
2003-12-08 22:53:59 +00:00
void init_ircd (void);
void send_privmsg (const char *from, const char *to, const char *buf);
void send_notice (const char *from, const char *to, const char *buf);
2004-01-25 23:38:53 +00:00
void send_globops (const char *from, const char *buf);
void send_wallops (const char *who, const char *buf);
void send_numeric (const char *from, const int numeric, const char *target, const char *buf);
2003-12-14 23:40:22 +00:00
void send_umode (const char *who, const char *target, const char *mode);
2004-02-04 22:59:41 +00:00
void send_join (const char *sender, const char *who, const char *chan, const unsigned long ts);
2004-03-26 20:25:33 +00:00
void send_sjoin (const char *sender, const char *who, const char *chan, const unsigned long ts);
2003-12-14 23:40:22 +00:00
void send_part (const char *who, const char *chan);
2004-02-04 22:59:41 +00:00
void send_nickchange (const char *oldnick, const char *newnick, const unsigned long ts);
void send_cmode (const char *sender, const char *who, const char *chan, const char *mode, const char *args, unsigned long ts);
2003-12-14 23:40:22 +00:00
void send_quit (const char *who, const char *quitmsg);
2003-12-15 00:05:05 +00:00
void send_kill (const char *from, const char *target, const char *reason);
void send_kick (const char *who, const char *chan, const char *target, const char *reason);
2003-12-15 23:47:21 +00:00
void send_invite(const char *from, const char *to, const char *chan);
#ifdef GOTSVSKILL
2004-02-04 22:59:41 +00:00
void send_svskill (const char *sender, const char *target, const char *reason);
2003-12-15 23:47:21 +00:00
#endif
#ifdef GOTSVSMODE
2004-02-04 22:59:41 +00:00
void send_svsmode (const char *sender, const char *target, const char *modes);
2003-12-15 23:47:21 +00:00
#endif
#ifdef GOTSVSHOST
2004-02-04 22:59:41 +00:00
void send_svshost (const char *sender, const char *who, const char *vhost);
2003-12-15 23:47:21 +00:00
#endif
#ifdef GOTSVSJOIN
2004-02-04 22:59:41 +00:00
void send_svsjoin (const char *sender, const char *target, const char *chan);
2003-12-15 23:47:21 +00:00
#endif
#ifdef GOTSVSPART
2004-02-04 22:59:41 +00:00
void send_svspart (const char *sender, const char *target, const char *chan);
2003-12-15 23:47:21 +00:00
#endif
#ifdef GOTSVSNICK
2004-02-04 22:59:41 +00:00
void send_svsnick (const char *sender, const char *target, const char *newnick, const unsigned long ts);
2003-12-15 23:47:21 +00:00
#endif
#ifdef GOTSWHOIS
2004-02-04 22:59:41 +00:00
void send_swhois (const char *sender, const char *target, const char *swhois);
2003-12-15 23:47:21 +00:00
#endif
#ifdef GOTSMO
void send_smo (const char *from, const char *umodetarget, const char *msg);
#endif
2004-02-04 22:59:41 +00:00
void send_akill (const char *sender, const char *host, const char *ident, const char *setby, const int length, const char *reason, unsigned long ts);
void send_rakill (const char *sender, const char *host, const char *ident);
2004-01-13 21:11:05 +00:00
void send_ping (const char *from, const char *reply, const char *to);
void send_pong (const char *reply);
2004-02-04 22:59:41 +00:00
void send_server (const char *sender, const char *name, const int numeric, const char *infoline);
2004-01-13 21:11:05 +00:00
void send_squit (const char *server, const char *quitmsg);
2004-02-04 22:59:41 +00:00
void send_nick (const char *nick, const unsigned long ts, const char* newmode, const char *ident, const char *host, const char* server, const char *realname);
void send_server_connect (const char *name, const int numeric, const char *infoline, const char *pass, unsigned long tsboot, unsigned long tslink);
2004-02-04 22:59:41 +00:00
void send_netinfo (const char* from, const int prot, const char* cloak, const char* netname, const unsigned long ts);
void send_snetinfo (const char* from, const int prot, const char* cloak, const char* netname, const unsigned long ts);
#ifdef MSG_SVINFO
2004-02-04 22:59:41 +00:00
void send_svinfo (const int tscurrent, const int tsmin, const unsigned long tsnow);
#endif
#ifdef MSG_VCTRL
void send_vctrl (const int uprot, const int nicklen, const int modex, const int gc, const char* netname);
#endif
2004-01-28 22:20:28 +00:00
#ifdef MSG_BURST
void send_burst (int b);
#endif
#ifdef GOTSVSTIME
2004-02-04 22:59:41 +00:00
void send_svstime (const char *sender, const unsigned long ts);
#endif
2003-12-15 21:50:51 +00:00
int sserver_cmd (const char *name, const int numeric, const char *infoline);
2004-01-11 21:00:15 +00:00
int ssquit_cmd (const char *server, const char *quitmsg);
2004-01-25 23:38:53 +00:00
2004-01-13 21:15:01 +00:00
/*int snetinfo_cmd (void);*/
/*int ssvinfo_cmd (void);*/
2004-01-15 19:18:27 +00:00
/*int sburst_cmd (int b);*/
/*int seob_cmd (const char *server);*/
2003-12-15 21:50:51 +00:00
int ssmo_cmd (const char *from, const char *umodetarget, const char *msg);
2004-02-04 22:59:41 +00:00
void send_cmd (char *fmt, ...) __attribute__((format(printf,1,2))); /* 2=format 3=params */
#ifdef BASE64SERVERNAME
void setserverbase64 (const char *name, const char* num);
char* servertobase64 (const char* name);
char* base64toserver (const char* num);
#endif
#ifdef BASE64NICKNAME
void setnickbase64 (const char *nick, const char* num);
char* nicktobase64 (const char* nick);
char* base64tonick (const char* num);
#endif
2003-06-10 12:51:56 +00:00
#endif