mirror of
https://github.com/EnergyMech/energymech.git
synced 2025-12-29 16:14:43 +00:00
506 lines
10 KiB
C
506 lines
10 KiB
C
/*
|
|
|
|
EnergyMech, IRC bot software
|
|
Parts Copyright (c) 1997-2018 proton
|
|
|
|
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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
*/
|
|
#ifndef DEFINES_H
|
|
#define DEFINES_H 1
|
|
|
|
/*
|
|
* dont export too many symbols...
|
|
*/
|
|
#ifdef LIBRARY
|
|
#define LS static
|
|
#else /* not LIBRARY */
|
|
#define LS /* nothing */
|
|
#endif /* LIBRARY */
|
|
|
|
/*
|
|
* startup ==
|
|
*/
|
|
#define STARTUP_RUNNING 0
|
|
#define STARTUP_ECHOTOCONSOLE (startup > 1 && startup < 1000)
|
|
#define STARTUP_COMMANDANDEXIT 3
|
|
#define STARTUP_TESTRUN 6
|
|
#define STARTUP_NORMALSTART 1000
|
|
#define STARTUP_SIGSEGV 31337
|
|
|
|
/*
|
|
* Channel Crap
|
|
*/
|
|
|
|
#define CHAN_ANY 0
|
|
#define CHAN_ACTIVE 1
|
|
|
|
#define ANY_CHANNEL NULL
|
|
#define GLOBAL_CHANNEL MATCH_ALL
|
|
|
|
#define COLLECT_TYPE 1
|
|
#define REJOIN_TYPE 2
|
|
#define CYCLE_TYPE 4
|
|
|
|
#define ADD_MODE 1
|
|
#define SUB_MODE 2
|
|
#define MODE_FORCE 3
|
|
|
|
#define MODE_PRIVATE 0x0004
|
|
#define MODE_SECRET 0x0008
|
|
#define MODE_MODERATED 0x0010
|
|
#define MODE_TOPICLIMIT 0x0020
|
|
#define MODE_INVITEONLY 0x0040
|
|
#define MODE_NOPRIVMSGS 0x0080
|
|
#define MODE_KEY 0x0100
|
|
#define MODE_BAN 0x0200
|
|
#define MODE_LIMIT 0x0400
|
|
#define MODE_FLAGS 0x07ff
|
|
|
|
#define CU_VOICE 0x0001
|
|
#define CU_CHANOP 0x0002
|
|
#define CU_VOICETMP 0x0004
|
|
#define CU_NEEDOP 0x0008
|
|
#define CU_MODES 0x00ff
|
|
|
|
#define CU_DEOPPED 0x0100
|
|
#define CU_KICKED 0x0200
|
|
#define CU_BANNED 0x0400
|
|
#define CU_MASSTMP 0x0800
|
|
#define CU_KSWARN 0x1000
|
|
#define CU_CHANBAN 0x2000
|
|
|
|
#define SHIT_NOOP 0 /* do nothing */
|
|
#define SHIT_CHANOP 1 /* not allowed to be chanop */
|
|
#define SHIT_KB 2 /* simple kick and ban */
|
|
#define SHIT_PERMABAN 3 /* permanent ban, re-ban if unbanned */
|
|
#define SHIT_CHANBAN 4
|
|
|
|
#define MAXSHITLEVEL 4
|
|
#define MAXSHITLEVELSTRING "4"
|
|
#define MAXSHITLEVELCHAR '4'
|
|
|
|
#define __STR_ON "on"
|
|
#define __STR_OFF "off"
|
|
|
|
/*
|
|
* channel modequeues
|
|
*/
|
|
#define QM_RAWMODE 0
|
|
#define QM_CHANUSER 1
|
|
|
|
#define QM_PRI_LOW 100
|
|
|
|
/*
|
|
* Bitfield for short_tv being set to 1 or 30 seconds
|
|
*/
|
|
|
|
#define TV_TELNET_NICK 0x0002
|
|
#define TV_UCACHE 0x0004
|
|
#define TV_SERVCONNECT 0x0008
|
|
#define TV_LINEBUF 0x0010
|
|
#define TV_BOTNET 0x0020
|
|
#define TV_REJOIN 0x0040
|
|
#define TV_TRIVIA 0x0080
|
|
|
|
/* Misc Crap: */
|
|
|
|
#define EXTRA_CHAR(q) q==1?"":"s"
|
|
#define SPLIT 1
|
|
|
|
/* Parse Stuff */
|
|
|
|
#define PA_END 1 /* b00000001 */ /* mask for `end' bit */
|
|
#define PA_WHOIS 2 /* b00000010 */
|
|
#define PA_LUSERS 4 /* b00000100 */
|
|
#define PA_STATS 8 /* b00001000 */
|
|
#define PA_USERHOST 16 /* b00010000 */
|
|
#define PA_DNS 32 /* b00100000 */ /* for resolving hosts */
|
|
#define PA_TYPE 62 /* b00111110 */ /* mask for type bits */
|
|
|
|
/* DCC Crap: */
|
|
|
|
#define DCC_SEND 0x0001
|
|
#define DCC_RECV 0x0002
|
|
#define DCC_WAIT 0x0010
|
|
#define DCC_ASYNC 0x0020
|
|
#define DCC_ACTIVE 0x0040
|
|
#define DCC_TELNET 0x0080
|
|
#define DCC_TELNETPASS 0x0100
|
|
#define DCC_DELETE 0x0200
|
|
|
|
/*
|
|
* format_uh()
|
|
*/
|
|
|
|
#define FUH_USERHOST 1
|
|
#define FUH_HOST 2
|
|
|
|
/* Type of Variable: */
|
|
|
|
#define INT_VAR 0x01
|
|
#define STR_VAR 0x02
|
|
#define TOG_VAR 0x04
|
|
#define GLOBAL_VAR 0x08
|
|
#define PROC_VAR 0x10
|
|
#define CHR_VAR (0x20 | INT_VAR)
|
|
#define ANY_VAR 0xff
|
|
|
|
#define INT_GLOBAL INT_VAR|GLOBAL_VAR
|
|
#define TOG_GLOBAL TOG_VAR|GLOBAL_VAR
|
|
#define TOG_PROC TOG_VAR|PROC_VAR|GLOBAL_VAR
|
|
#define INT_PROC INT_VAR|PROC_VAR|GLOBAL_VAR
|
|
#define STR_PROC STR_VAR|PROC_VAR|GLOBAL_VAR
|
|
#define CHR_PROC CHR_VAR|PROC_VAR|GLOBAL_VAR
|
|
#define STR_GLOBAL STR_VAR|GLOBAL_VAR
|
|
#define CHR_GLOBAL CHR_VAR|GLOBAL_VAR
|
|
|
|
#define IsInt(x) (VarName[x].type & INT_VAR)
|
|
#define IsStr(x) (VarName[x].type & STR_VAR)
|
|
#define IsTog(x) (VarName[x].type & TOG_VAR)
|
|
#define IsNum(x) (VarName[x].type & (INT_VAR|TOG_VAR))
|
|
#define IsChar(x) ((VarName[x].type & CHR_VAR) == CHR_VAR)
|
|
#define IsProc(x) (VarName[x].type & PROC_VAR)
|
|
|
|
/*
|
|
* is_safepath
|
|
*/
|
|
#define FILE_IS_SAFE 1
|
|
#define FILE_MUST_EXIST 1
|
|
#define FILE_MAY_EXIST 2
|
|
#define FILE_MUST_NOTEXIST 3
|
|
|
|
/*
|
|
* see settings.h for the actual setting struct
|
|
*/
|
|
enum {
|
|
/*
|
|
* channel settings
|
|
*/
|
|
TOG_ABK,
|
|
TOG_AOP,
|
|
INT_AUB,
|
|
INT_AVOICE,
|
|
#ifdef CHANBAN
|
|
TOG_CHANBAN,
|
|
#endif /* CHANBAN */
|
|
INT_CKL,
|
|
TOG_CTL,
|
|
#ifdef DYNAMODE
|
|
STR_DYNLIMIT,
|
|
#endif /* DYNAMODE */
|
|
TOG_ENFM,
|
|
STR_ENFMODES,
|
|
INT_FL,
|
|
INT_FPL,
|
|
INT_IKT,
|
|
TOG_KS,
|
|
INT_MAL,
|
|
INT_MBL,
|
|
INT_MDL,
|
|
INT_MKL,
|
|
INT_MPL,
|
|
INT_NCL,
|
|
INT_PROT,
|
|
TOG_PUB,
|
|
TOG_RK,
|
|
TOG_SD,
|
|
TOG_SHIT,
|
|
TOG_SO,
|
|
#ifdef STATS
|
|
STR_STATS,
|
|
#endif /* STATS */
|
|
TOG_TOP,
|
|
/*
|
|
* global settings
|
|
* Note: first global setting (now: INT_AAWAY) is used below ...
|
|
*/
|
|
INT_AAWAY,
|
|
STR_ALTNICK,
|
|
#ifdef BOTNET
|
|
TOG_AUTOLINK,
|
|
#endif /* BOTNET */
|
|
#ifdef BOUNCE
|
|
INT_BNCPORT,
|
|
#endif /* BOUNCE */
|
|
TOG_CC,
|
|
CHR_CMDCHAR,
|
|
#ifdef CTCP
|
|
TOG_CTCP,
|
|
#endif /* CTCP */
|
|
INT_CTIMEOUT,
|
|
#ifdef DCC_FILE
|
|
INT_DCCANON,
|
|
STR_DCCFILES,
|
|
INT_DCCUSER,
|
|
#endif /* DCC_FILE */
|
|
TOG_ENFPASS,
|
|
STR_IDENT,
|
|
STR_IRCNAME,
|
|
#ifdef NOTIFY
|
|
INT_ISONDELAY,
|
|
#endif /* NOTIFY */
|
|
#ifdef BOTNET
|
|
STR_LINKPASS,
|
|
INT_LINKPORT,
|
|
#endif /* BOTNET */
|
|
INT_MODES,
|
|
#ifdef BOTNET
|
|
TOG_NETUSERS,
|
|
#endif /* BOTNET */
|
|
TOG_NOIDLE,
|
|
#ifdef NOTIFY
|
|
STR_NOTIFYFILE,
|
|
#endif /* NOTIFY */
|
|
TOG_ONOTICE,
|
|
#ifdef TRIVIA
|
|
CHR_QCHAR,
|
|
INT_QDELAY,
|
|
STR_QFILE,
|
|
#endif /* TRIVIA */
|
|
#ifdef CTCP
|
|
TOG_RF,
|
|
TOG_RV,
|
|
#endif /* CTCP */
|
|
#ifdef SEEN
|
|
STR_SEENFILE,
|
|
#endif /* SEEN */
|
|
STR_SERVERGROUP,
|
|
TOG_SPY,
|
|
STR_UMODES,
|
|
#ifdef UPTIME
|
|
STR_UPHOST,
|
|
STR_UPNICK,
|
|
INT_UPPORT,
|
|
#endif /* UPTIME */
|
|
#ifdef URLCAPTURE
|
|
INT_URLHISTMAX,
|
|
#endif /* URLCAPTURE */
|
|
STR_USERFILE,
|
|
STR_VIRTUAL,
|
|
#ifdef WEB
|
|
INT_WEBPORT,
|
|
#endif /* WEB */
|
|
#ifdef WINGATE
|
|
STR_WINGATE,
|
|
INT_WINGPORT,
|
|
#endif /* WINGATE */
|
|
__NULL_VAR__,
|
|
SIZE_VARS
|
|
};
|
|
|
|
/*
|
|
* why would channel structs contain global vars?
|
|
* they shouldnt! and now they dont! :)
|
|
*/
|
|
#define CHANSET_SIZE INT_AAWAY
|
|
|
|
/*
|
|
* For botlinks
|
|
*/
|
|
|
|
#ifdef BOTNET
|
|
|
|
/* BotNet->status */
|
|
|
|
#define BN_UNKNOWN 0
|
|
#define BN_DEAD 1
|
|
#define BN_LINKSOCK 2
|
|
#define BN_CONNECT 3
|
|
#define BN_BANNERSENT 4
|
|
#define BN_WAITAUTH 5
|
|
#define BN_WAITLINK 6
|
|
#define BN_LINKED 7
|
|
|
|
#define BNAUTH_PLAINTEXT 0
|
|
#define BNAUTH_DES 1
|
|
#define BNAUTH_MD5 2
|
|
#define BNAUTH_SHA 3
|
|
|
|
#endif /* BOTNET */
|
|
|
|
/* for connect status */
|
|
|
|
#define CN_NOSOCK 0
|
|
#define CN_DNSLOOKUP 1
|
|
#define CN_TRYING 2
|
|
#define CN_CONNECTED 3
|
|
#define CN_ONLINE 4
|
|
#define CN_DISCONNECT 5
|
|
#define CN_BOTDIE 6
|
|
#define CN_NEXTSERV 7
|
|
#define CN_WINGATEWAIT 8
|
|
#define CN_SPINNING 9 /* after exhausting serverlist */
|
|
|
|
#define SERVERSILENCETIMEOUT 360 /* server connection idle timeout */
|
|
|
|
/* DCC Kill flags (BYE command) */
|
|
|
|
#define DCC_NULL 0
|
|
#define DCC_COMMAND 1
|
|
#define DCC_KILL 2
|
|
|
|
/* VHOST types */
|
|
|
|
#define VH_ZERO 0
|
|
#define VH_IPALIAS (1 << 1)
|
|
#define VH_IPALIAS_FAIL (1 << 2)
|
|
#define VH_IPALIAS_BOTH (VH_IPALIAS|VH_IPALIAS_FAIL)
|
|
#define VH_WINGATE (1 << 3)
|
|
#define VH_WINGATE_FAIL (1 << 4)
|
|
#define VH_WINGATE_BOTH (VH_WINGATE|VH_WINGATE_FAIL)
|
|
|
|
/* server error types */
|
|
|
|
#define SP_NULL 0
|
|
#define SP_NOAUTH 1
|
|
#define SP_KLINED 2
|
|
#define SP_FULLCLASS 3
|
|
#define SP_TIMEOUT 4
|
|
#define SP_ERRCONN 5
|
|
#define SP_DIFFPORT 6
|
|
#define SP_NO_DNS 7
|
|
#define SP_THROTTLED 8
|
|
|
|
/* check_mass() */
|
|
|
|
#define INDEX_FLOOD 0
|
|
#define INDEX_BAN 1
|
|
#define INDEX_DEOP 2
|
|
#define INDEX_KICK 3
|
|
#define INDEX_NICK 4
|
|
#define INDEX_CAPS 5
|
|
#define INDEX_MAX 6
|
|
|
|
#define CHK_CAPS 0
|
|
#define CHK_PUB 1
|
|
#define CHK_PUBLIC CHK_PUB
|
|
#define CHK_DEOP 2
|
|
#define CHK_BAN 3
|
|
#define CHK_KICK 4
|
|
|
|
/*
|
|
* seen selector types
|
|
*/
|
|
#define SEEN_PARTED 0
|
|
#define SEEN_QUIT 1
|
|
#define SEEN_NEWNICK 2
|
|
#define SEEN_KICKED 3
|
|
|
|
/*
|
|
* spying types, source and target types are mixed
|
|
*/
|
|
#define SPY_FILE 1
|
|
#define SPY_DCC 2
|
|
#define SPY_CHANNEL 3
|
|
#define SPY_STATUS 4
|
|
#define SPY_MESSAGE 5
|
|
#define SPY_RAWIRC 6
|
|
#define SPY_BOTNET 7
|
|
#ifdef URLCAPTURE
|
|
#define SPY_URL 8
|
|
#endif /* URLCAPTURE */
|
|
#ifdef HOSTINFO
|
|
#define SPY_SYSMON 9
|
|
#endif /* HOSTINFO */
|
|
#define SPY_RANDSRC 10
|
|
|
|
#define SPYF_ANY 1
|
|
#define SPYF_CHANNEL (1 << SPY_CHANNEL)
|
|
#define SPYF_STATUS (1 << SPY_STATUS)
|
|
#define SPYF_MESSAGE (1 << SPY_MESSAGE)
|
|
#define SPYF_RAWIRC (1 << SPY_RAWIRC)
|
|
#define SPYF_BOTNET (1 << SPY_BOTNET)
|
|
#define SPYF_URL (1 << SPY_URL)
|
|
#define SPYF_RANDSRC (1 << SPY_RANDSRC)
|
|
/*
|
|
* notify defines
|
|
*/
|
|
#define NF_OFFLINE 0
|
|
#define NF_WHOIS 1
|
|
#define NF_MASKONLINE 2 /* anything above NF_MASKONLINE is "online" */
|
|
#define NF_NOMATCH 3
|
|
|
|
/*
|
|
* uptime defines
|
|
*/
|
|
|
|
#define UPTIME_ENERGYMECH 1 /* http://www.energymech.net */
|
|
#define UPTIME_EGGDROP 2 /* http://www.eggheads.org */
|
|
#define UPTIME_MINIMECH 3 /* http://www.energymech.net */
|
|
#define UPTIME_WINMECH 4 /* http://www.energymech.net */
|
|
#define UPTIME_RACBOT 5 /* http://www.racbot.org */
|
|
#define UPTIME_MIRC 6 /* http://www.mirc.com */
|
|
#define UPTIME_HAL9000 7 /* http://www.2010.org */
|
|
#define UPTIME_ANABOT 8 /* http://www.sirklabs.hu/ana-liza/ */
|
|
#define UPTIME_ANGELBOT 9 /* unknown */
|
|
#define UPTIME_FIRECLAW 10 /* http://www.fireclaw.org */
|
|
#define UPTIME_GARNAX 11 /* http://garnax.mircx.com */
|
|
#define UPTIME_WINEGGDROP 12 /* http://www.eggheads.org */
|
|
#define UPTIME_SUPYBOT 14 /* http://supybot.sourceforge.net */
|
|
|
|
#define UPTIME_GENERICDEATH 5000 /* generic death */
|
|
#define UPTIME_SIGSEGV 5001
|
|
#define UPTIME_SIGBUS 5002
|
|
#define UPTIME_SIGTERM 5003
|
|
#define UPTIME_SIGINT 5004
|
|
|
|
#define UPTIMEHOST "uptime.eggheads.org"
|
|
|
|
#ifdef __CYGWIN__
|
|
#define UPTIME_BOTTYPE UPTIME_WINMECH
|
|
#else
|
|
#define UPTIME_BOTTYPE UPTIME_ENERGYMECH
|
|
#endif /* __CYGWIN__ */
|
|
|
|
/*
|
|
* scripting events
|
|
*/
|
|
#define MEV_PARSE 0
|
|
#define MEV_TIMER 1
|
|
#define MEV_COMMAND 2
|
|
#define MEV_BOTNET 3
|
|
#define MEV_DCC_COMPLETE 4
|
|
#define MEV_DNSRESULT 5
|
|
|
|
/*
|
|
*
|
|
*/
|
|
#define IRCX_WALLCHOPS 1
|
|
#define IRCX_WALLVOICES 2
|
|
#define IRCX_IMODE 4
|
|
#define IRCX_EMODE 8
|
|
|
|
/*
|
|
* stats.c
|
|
*/
|
|
#define CSTAT_PARTIAL 1
|
|
|
|
/*
|
|
* dns.c
|
|
*/
|
|
#define MAX_NAMESERVERS 4
|
|
|
|
/*
|
|
* redirect.c
|
|
*/
|
|
#define R_NOTICE 0
|
|
#define R_PRIVMSG 1
|
|
#define R_FILE 2
|
|
#define R_BOTNET 3
|
|
|
|
#endif /* DEFINES_H */
|
|
|