/*
 * settings.h
 * (C) James Craig 1998, Email: jcraig@mad.scientist.com
 * (C) Christian Magnusson 1999,2000, Email: d1mag@dtek.chalmers.se
 * This program is copyright, and covered by the Gnu Public License.
 * The Q bot.
 */
#ifndef SETTINGS_H
#define SETTINGS_H


/*
  defines for loadable modules
*/
#define HAVE_UNIX_DL
#undef HAVE_WIN32_DLL

/*
  some new code for match() are tested with this flag. Should be faster.
*/
#define NEW_MATCH


/* This is the normal settings for the channel service */
#define VIRTUAL_SERVER_VERSION  "0105010002"

/*
  ONLY_STATBOT could be defined if you only want this bot to connect and create
  stats for mrtg. It will not join any channels.
*/
#undef  ONLY_STATBOT
#ifndef ONLY_STATBOT

/* This will be the nick!user@host when doing /whois */
#define BOT_USERNAME            "TheQBot"
#define BOT_WHOIS               "The Q Bot (C) 1999-2001 James Craig (MadHacker) & Christian Magnusson (Mag) & QuakeNet dev-com"
#define CTCP_VERSION_REPLY      "The Q Bot (C) 1999-2001 James Craig (MadHacker) & Christian Magnusson (Mag) & QuakeNet dev-com"

#else
/* ONLY_STATBOT used for debug only */
#define BOT_USERNAME            "Qstat"
#define BOT_WHOIS               "The Qstat Bot (C) 1999,2000 Mag"
#define CTCP_VERSION_REPLY      "The Qstat Bot (C) 1999,2000 Mag."
#endif

/* ****************************************************************** */
/*
  The following settings settings shouldn't be changed unless you know
  what you are doing.
*/

/*
  DEBUG=1 will give lots of output to the stdout.
  Should be set to 0 to turn off all outputs.
*/
#define DEBUG  1
#define DEBUG2 0

/*
  Debug malloc
  I wrote a package to trace memory leaks. This will slow it down a bit and
  consume some extra Mb RAM.
*/
#undef DMALLOC

/*
  The bot may not be compatible with the 2.9.32 version any more.
  So this flag have to be set now.
*/
#define V2_10_04
#define V2_10_10

/*
  This will force +a flag at channels.
  Implementation of a -a isn't done correctly since there are some problems
  if you remove this define.
*/
#define FORCE_AUTOJOIN




/******************************************************************/
/*
  You shouldn't need to change anything below this row
  (fox) Ouups, i just did! increased maxservers (for 2.10.10 comp.),
        topiclen,glinelen and masklen
*/

#define HOPCOUNT                1
#define MAX_SERVERS             4096
#define BIGBUF                  512
#define SERVERLEN               80
/* (fox) Extended numerics FFS! */
#define YXXLEN                  5
#define NICKLEN                 15
#define HOSTLEN                 63
#define TOPICLEN                250
#define WELCOMELEN              200
#define USERLEN                 10
#define CHANNELLEN              200
#define CHANTYPELEN             15
#define REALLEN                 50
#define PASSLEN                 10
#define EMAILLEN                60
#define UPTIMELEN               20
#define KEYLEN                  40
#define LIMITLEN                20
#define BANLEN                  NICKLEN+USERLEN+HOSTLEN+4
#define GLINELEN                100
#define MASKLEN                 100
#define MAX_ARGS                30
#define AUTH_HISTORY_LEN        10
#define MAX_COMMAND_LEN         30
#define MAX_COMMAND_SUMMARY_LEN 256
#define MAX_COMMAND_HELP_LEN    1024
#define REASONLEN               250
#define USERID_HISTORY_LEN      10
#define SUSPENDREASONLEN        250

/* enable AUTH_HISTORY will take 200 bytes extra for each registered channel */
#define AUTH_HISTORY

#define OPER_O_MASK             0x0001
#define OPER_DEBUG_MASK         0x00F0
#define OPER_DEBUG_BIT          4

#define DEBUG_INFO              1
#define DEBUG_INFO2             2
#define DEBUG_INFO3             3
#define DEBUG_ALL               10

/*
  really don't know where this should be put... perhaps remove it, but could
  be useful to have equal message in all modules.
*/
#define NICK_MESSAGE "The nick parameter can also be given as #idnick where idnick is the nickname the person originally registered under.\n"

/*
  Autosave the channel and user database frequently.
*/
#define SEC_BEFORE_SAVE       300

/*
 * Modes for channel (changed with CHANFLAGS)
 * +a = Bot joines the channel at startup.
 * +f = Force topic
 * +c = Channel limit
 * +b = Bitch mode (only let authed opers get op)
 * +k = Force Key
 * +l = Force Limit
 * +p = Protect mode (force authed opers to regain op)
 * +w = Welcome message
 */
#define CO_AUTO_JOIN   0x01
#define CO_BITCH       0x02
#define CO_CHANLIMIT   0x04
#define CO_FORCE_TOPIC 0x20
#define CO_KEY         0x400
#define CO_LIMIT       0x800
#define CO_PROTECT     0x8000
#define CO_TOPIC_SAVE  0x80000
#define CO_WELCOME     0x400000

/* +anything not listed above */ 
#define CO_ALL (CO_AUTO_JOIN+CO_FORCE_TOPIC+CO_BITCH+CO_KEY+CO_LIMIT+CO_PROTECT+CO_WELCOME+CO_TOPIC_SAVE+CO_CHANLIMIT)
#define CO_MUST_BE_WRONG (~0 - CO_ALL)

/*
 * Modes for a user at a channel (changed with CHANLEV)
 * Eggdrop-like privs.
 * +a = autoop/autovoice on join.
 * +b = banned. (Not usefull at all.. will be removed)
 * +m = master.
 * +n = owner. (Can make masters.)
 * +o = op.
 * +v = voice.
 * +t = can set topic.
 */
#define CHAN_AUTOOP  0x01
#define CHAN_BANNED  0x02
#define CHAN_MASTER  0x1000
#define CHAN_OWNER   0x2000
#define CHAN_OPER    0x4000
#define CHAN_VOICE   0x200000
#define CHAN_TOPIC   0x80000
#define CHAN_NEWLEVS 0x40000000
#define CHAN_ALL     (CHAN_AUTOOP+CHAN_BANNED+CHAN_MASTER+CHAN_OWNER+CHAN_OPER+CHAN_VOICE+CHAN_TOPIC)
#define CHAN_MUST_BE_WRONG (~0 - CHAN_ALL)

/* Define the following for logging stuff to a mysql database */
#undef DOSQLLOGGING

#endif
