238 lines
9.6 KiB
C
238 lines
9.6 KiB
C
/* NeoStats - IRC Statistical Services
|
|
** Copyright (c) 1999-2004 Adam Rutter, Justin Hammond
|
|
** 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$
|
|
*/
|
|
#ifndef IRCD_H
|
|
#define IRCD_H
|
|
|
|
typedef void (*ircd_cmd_handler) (char *origin, char **argv, int argc, int srv);
|
|
|
|
typedef struct ircd_cmd{
|
|
const char *name;
|
|
#ifdef GOTTOKENSUPPORT
|
|
const char *token;
|
|
#endif
|
|
ircd_cmd_handler function;
|
|
int usage;
|
|
}ircd_cmd;
|
|
|
|
typedef struct ChanModes {
|
|
long mode;
|
|
char flag;
|
|
unsigned nickparam:1; /* 1 = yes 0 = no */
|
|
unsigned parameters:1;
|
|
char sjoin;
|
|
} ChanModes;
|
|
|
|
typedef struct {
|
|
unsigned long umode;
|
|
char mode;
|
|
int level;
|
|
} UserModes;
|
|
|
|
typedef struct ircd_server {
|
|
int burst;
|
|
int unkline;
|
|
int uprot;
|
|
int modex;
|
|
int nicklen;
|
|
int gc;
|
|
int nickip;
|
|
/* unreal cloak keys are md5, so we need at least 34+1 */
|
|
char cloak[CLOAKKEYLEN];
|
|
int maxglobalcnt;
|
|
int tsendsync;
|
|
unsigned int token:1;
|
|
unsigned int noquit;
|
|
} ircd_server;
|
|
|
|
extern UserModes user_umodes[];
|
|
#ifdef GOTUSERSMODES
|
|
extern UserModes user_smodes[];
|
|
#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);
|
|
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);
|
|
void do_sjoin (char* tstime, char* channame, char *modes, char *sjoinnick, char **argv, int argc);
|
|
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);
|
|
void do_part (const char* nick, const char* chan, const char* reason);
|
|
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
|
|
, const char *smodes
|
|
#endif
|
|
);
|
|
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
|
|
#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);
|
|
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
|
|
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
|
|
#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
|
|
|
|
/* Defined in ircd specific files but common to all */
|
|
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);
|
|
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);
|
|
void send_umode (const char *who, const char *target, const char *mode);
|
|
void send_join (const char *sender, const char *who, const char *chan, const unsigned long ts);
|
|
void send_sjoin (const char *sender, const char *who, const char *chan, const unsigned long ts);
|
|
void send_part (const char *who, const char *chan);
|
|
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);
|
|
void send_quit (const char *who, const char *quitmsg);
|
|
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);
|
|
void send_invite(const char *from, const char *to, const char *chan);
|
|
#ifdef GOTSVSKILL
|
|
void send_svskill (const char *sender, const char *target, const char *reason);
|
|
#endif
|
|
#ifdef GOTSVSMODE
|
|
void send_svsmode (const char *sender, const char *target, const char *modes);
|
|
#endif
|
|
#ifdef GOTSVSHOST
|
|
void send_svshost (const char *sender, const char *who, const char *vhost);
|
|
#endif
|
|
#ifdef GOTSVSJOIN
|
|
void send_svsjoin (const char *sender, const char *target, const char *chan);
|
|
#endif
|
|
#ifdef GOTSVSPART
|
|
void send_svspart (const char *sender, const char *target, const char *chan);
|
|
#endif
|
|
#ifdef GOTSVSNICK
|
|
void send_svsnick (const char *sender, const char *target, const char *newnick, const unsigned long ts);
|
|
#endif
|
|
#ifdef GOTSWHOIS
|
|
void send_swhois (const char *sender, const char *target, const char *swhois);
|
|
#endif
|
|
#ifdef GOTSMO
|
|
void send_smo (const char *from, const char *umodetarget, const char *msg);
|
|
#endif
|
|
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);
|
|
void send_ping (const char *from, const char *reply, const char *to);
|
|
void send_pong (const char *reply);
|
|
void send_server (const char *sender, const char *name, const int numeric, const char *infoline);
|
|
void send_squit (const char *server, const char *quitmsg);
|
|
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);
|
|
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
|
|
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
|
|
#ifdef MSG_BURST
|
|
void send_burst (int b);
|
|
#endif
|
|
#ifdef GOTSVSTIME
|
|
void send_svstime (const char *sender, const unsigned long ts);
|
|
#endif
|
|
|
|
int sserver_cmd (const char *name, const int numeric, const char *infoline);
|
|
int ssquit_cmd (const char *server, const char *quitmsg);
|
|
|
|
/*int snetinfo_cmd (void);*/
|
|
/*int ssvinfo_cmd (void);*/
|
|
/*int sburst_cmd (int b);*/
|
|
/*int seob_cmd (const char *server);*/
|
|
int ssmo_cmd (const char *from, const char *umodetarget, const char *msg);
|
|
|
|
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
|
|
|
|
#endif
|