7314d2aa8610057c942850e8b73a80d67771cbe5
[ircu2.10.12-pk.git] / config / config-sh.in
1 # @configure_input@
2 #
3 # By Carlo Wood (carlo@runaway.xs4all.nl)
4 #
5 # For a description of the syntax of this configuration file,
6 # see the config/Configure script.
7 #
8 # TO CONFIGURE THE SERVER, TYPE: 'make config' in the top level directory !
9 #
10
11 #### Start of system configuration section. ####
12
13 prefix=@prefix@
14 exec_prefix=@exec_prefix@
15 bindir=@bindir@
16 mandir=@mandir@
17 CC_DEFAULT="@CC@"
18 CFLAGS_DEFAULT="@CFLAGS@"
19 CPPFLAGS_DEFAULT="@CPPFLAGS@"
20 LDFLAGS_DEFAULT="@LDFLAGS@"
21 LIBS="@LIBS@"
22 ac_cv_header_poll_h=@ac_cv_header_poll_h@
23 unet_cv_func_poll_syscall=@unet_cv_func_poll_syscall@
24 ac_cv_header_syslog_h=@ac_cv_header_syslog_h@
25
26 #### End of system configuration section. ####
27
28 if [ -z "$CONFIG_BATCH" ]; then
29   echo "**************************************************************************"
30   echo "Error: Please run 'make config' that resides in the top level directory!"
31   echo "**************************************************************************"
32   exit -1
33 fi
34
35 mainmenu_name "Undernet IRC Daemon Configuration"
36 mainmenu_option next_comment
37   if [ "$CONFIG_BATCH" = "n" ]; then
38     echo "* Welcome to the Undernet IRC Daemon Configuration script."
39     echo "* You can restart this configuration at any time by typing 'make config'."
40     echo "* If you need help with your decision on any question, type a '?'"
41     echo "*"
42     USE_DEFAULT=n
43   else
44     USE_DEFAULT=C
45   fi
46   CHANGE_CONFIG=n
47   if [ "$DEFAULTS" != "none" ]; then
48     bool 'Do you want to change your previous configuration' CHANGE_CONFIG
49     if [ "$CHANGE_CONFIG" = "n" ]; then
50       echo "Ok, I will only prompt you for NEW parameters."
51       USE_DEFAULT=C
52     else
53       USE_DEFAULT=n
54     fi
55   else
56     USE_DEFAULT=n
57   fi
58 endmenu
59
60 mainmenu_option next_comment
61 comment 'Debugging (do not define this on production servers)'
62   bool 'Do you want to enable debugging output' DEBUGMODE
63   bool 'Do you want to enable asserts and memory allocation checking' CONFIG_NDEBUG
64   EXTRA_CPPFLAGS=""
65   if [ "$CONFIG_NDEBUG" = "n" ]; then
66     if [ -z "$EXTRA_CPPFLAGS" ]; then
67       EXTRA_CPPFLAGS="-DNDEBUG"
68     else
69       EXTRA_CPPFLAGS="-DNDEBUG $EXTRA_CPPFLAGS"
70     fi
71   fi
72   bool 'Are you testing on a host without DNS' NODNS
73 endmenu
74
75 mainmenu_option next_comment
76 comment 'Compile stuff'
77   if [ "$prefix" = "NONE" ]; then
78     prefix=/usr/local
79   fi
80   if [ "$exec_prefix" = "NONE" ]; then
81     eval exec_prefix="$prefix"
82   fi
83   string 'Which compiler do you want to use' CC "$CC_DEFAULT"
84   echo "* For the following four questions, specify 'none' when you want it to be empty."
85   if [ -z "$cflags_O3_remark" -a -n "$CFLAGS" ]; then
86     CFLAGS_DEFAULT=`echo "$CFLAGS" | sed -e 's%-O2%-O3%'`
87     if [ "$CFLAGS_DEFAULT" != "$CFLAGS" ]; then
88       echo "You are highly advised to use -O3 instead of -O2 if you're short in cpu cycles!"
89       echo "Please read documentation (press '?'):"
90       CFLAGS=
91     fi
92   fi
93   eval string "'What flags should I pass to $CC [none]'" CFLAGS "'$CFLAGS_DEFAULT'"
94   define_macro cflags_O3_remark done
95   string 'Do you need extra include directories [none]' EXTRA_INCLUDEDIRS none
96   if [ -z "$LDFLAGS_DEFAULT" ]; then
97     LDFLAGS_DEFAULT=none
98   else
99     eval LDFLAGS_DEFAULT="$LDFLAGS_DEFAULT"
100   fi
101   string 'Which linker flags do you need [none]' LDFLAGS "$LDFLAGS_DEFAULT"
102   if [ -z "$LIBS" ]; then
103     LIBS=none
104   fi
105   string 'Which extra libraries do you need [none]' IRCDLIBS "$LIBS"
106   eval bindir="$bindir"
107   string 'In which directory should I install the ircd binary' BINDIR $bindir
108   if [ ! -d "$BINDIR" ]; then
109     echo "$BINDIR : No such directory"
110   fi
111   string 'What should the name of the installed symbolic link to the exectuable be' SYMLINK ircd
112   string 'Which permissions do you want the binary to have' IRCDMODE 711
113   string 'Which owner do you want the binary to have' IRCDOWN "`id | sed -e 's/.*uid=[0-9]*(//' -e 's/).*//' 2> /dev/null`"
114   string 'Which group do you want the binary to have' IRCDGRP "`id | sed -e 's/.*gid=[0-9]*(//' -e 's/).*//' 2> /dev/null`"
115   eval mandir=$mandir
116   string 'Where should I install the man page' MANDIR $mandir
117   if [ "$CFLAGS" = "none" ]; then
118     CFLAGS=""
119   fi
120   if [ "$EXTRA_INCLUDEDIRS" = "none" ]; then
121     EXTRA_INCLUDEDIRS=""
122   fi
123   if [ "$LDFLAGS" = "none" ]; then
124     LDFLAGS=""
125   fi
126   if [ "$IRCDLIBS" = "none" ]; then
127     IRCDLIBS=""
128   fi
129   if [ -n "$EXTRA_INCLUDEDIRS" ]; then
130     for i in $EXTRA_INCLUDEDIRS; do
131       if [ -z "$EXTRA_CPPFLAGS" ]; then
132         EXTRA_CPPFLAGS=-I$i
133       else
134         EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -I$i"
135       fi
136     done
137   fi
138   if [ -z "$EXTRA_CPPFLAGS" ]; then
139     CPPFLAGS="-I../include -I../config"
140   else
141     CPPFLAGS="-I../include -I../config $EXTRA_CPPFLAGS"
142   fi
143   echo "EXTRA_CPPFLAGS=\"$EXTRA_CPPFLAGS\"" >>$CONFIG
144   echo "CPPFLAGS=\"$CPPFLAGS\"" >>$CONFIG
145   bool 'Use inlining for a few crucial functions' FORCEINLINE y
146 endmenu
147
148 if [ "$ac_cv_header_poll_h" = "yes" ]; then
149   if [ "$unet_cv_func_poll_syscall" = "yes" ]; then
150     define_bool USE_POLL y
151   else
152     mainmenu_option next_comment
153     comment 'Operating System specific defines.'
154       bool 'You have poll(), but do you want to use it' USE_POLL n
155     endmenu
156   fi
157 fi
158
159 mainmenu_option next_comment
160 comment 'Host specific defines'
161   if [ -f /etc/resolv.conf ]; then
162     DOMAINNAME_DEFAULT="`awk '/^domain/ { print $2; exit }' /etc/resolv.conf`"
163   fi
164   string 'What is the domain name of your network' DOMAINNAME $DOMAINNAME_DEFAULT
165   if [ -z "$DOMAINNAME" ]; then
166     DOMAINNAME=none
167   fi
168   string 'Please give a random seed of eight characters' RANDOM_SEED 12345678
169   bool 'Does your host have a reliable clock' RELIABLE_CLOCK
170 endmenu
171
172 mainmenu_option next_comment
173 comment 'General defines'
174   bool 'Change root ('/') after start of daemon' CHROOTDIR
175   bool 'Do you want the daemon set its own uid/gid' CONFIG_SETUGID
176   if [ "$CONFIG_SETUGID" = "y" ]; then
177     int '   UID of irc daemon' IRC_UID
178     int '   GID of irc daemon' IRC_GID
179   else
180     define_int IRC_UID $IRC_UID
181     define_int IRC_GID $IRC_GID
182     bool 'Allow to specify configuration file on command line' CMDLINE_CONFIG
183     if [ "$CMDLINE_CONFIG" = "y" ]; then
184       echo "   SECURITY: Then don't install the daemon SUID or SGID !"
185     fi
186   fi
187   bool 'Do you need virtual hosting' VIRTUAL_HOST
188   PREV_HUB=$HUB
189   bool 'Will you connect to more then one server at a time' HUB
190   if [ "$PREV_HUB" != "$HUB" ]; then
191     BUFFERPOOL=
192   fi
193 endmenu
194
195
196 mainmenu_option next_comment
197 comment 'Paths and files'
198   eval DPATH_DEFAULT="${prefix}/lib/ircd"
199   string 'Directory where all ircd stuff resides' DPATH $DPATH_DEFAULT
200   define_string SPATH "$BINDIR/$SYMLINK"
201   echo "The following filenames are either full paths or files within DPATH"
202   string 'Server configuration file' CPATH 'ircd.conf'
203   string 'Server MOTD file' MPATH 'ircd.motd'
204   string 'Server remote MOTD file (3 lines max)' RPATH 'remote.motd'
205   if [ "$DEBUGMODE" = "y" ]; then
206     string 'Debug file if DEBUGMODE' LPATH '/tmp/ircd.log'
207   else
208     define_string LPATH "$LPATH"
209   fi
210   string 'File for server pid' PPATH 'ircd.pid'
211 endmenu
212
213 mainmenu_option next_comment
214 comment 'Logging (filenames are either full paths or files within DPATH)'
215   bool 'Do you want to log the use of /WHO x% (recommended)' CONFIG_LOG_WHOX y
216     if [ "$CONFIG_LOG_WHOX" = "y" ]; then
217       string '   Give the path and(or) filename of this log file' WPATH 'whox.log'
218     fi
219
220 comment 'Bad Channel G-Lines allow operators to add channel masks to a list which prohibits local clients from being able joining channels which match the mask.  Remote BadChan Glines allow Uworld to add or remove channels from the servers internal list of badchans'
221   BADCHAN=y
222   bool 'Do you want to enable Bad Channel G-lines' BADCHAN y
223     if [ "$BADCHAN" = "y" ]; then
224       echo " "
225       echo " WARNING DO _NOT_ USE LOCAL BADCHANNEL GLINES ON UNDERNET"
226       echo " Use of LOCAL BAD Channel G-Lines can be cause for REMOVAL"
227       bool 'Allow LOCAL BAD Channel G-lines' LOCAL_BADCHAN
228     fi
229
230   bool 'Do you want to log G-lines to a separate file' CONFIG_LOG_GLINES
231     if [ "$CONFIG_LOG_GLINES" = "y" ]; then
232       string '   Give the path and(or) filename of this log file' GPATH 'gline.log'
233     fi
234   bool 'Do you want to log JUPEs to a separate file' CONFIG_LOG_JUPES y
235     if [ "$CONFIG_LOG_JUPES" = "y" ]; then
236       string '   Give the path and(or) filename of this log file' JPATH 'jupe.log'
237     fi
238   bool 'Do you want to log OPMODEs and CLEARMODEs to a separate file' CONFIG_LOG_OPMODES y
239     if [ "$CONFIG_LOG_OPMODES" = "y" ]; then
240       string '   Give the path and(or) filename of this log file' OPATH 'opmode.log'
241     fi
242   bool 'Do you want to log connecting users to a separate file' CONFIG_LOG_USERS
243     if [ "$CONFIG_LOG_USERS" = "y" ]; then
244       string '   Give the path and(or) filename of this log file' FNAME_USERLOG $DPATH/users
245     fi
246   bool 'Do you want to log Opers to a separate file' CONFIG_LOG_OPERS
247     if [ "$CONFIG_LOG_OPERS" = "y" ]; then
248       string '   Give the path and(or) filename of this log file' FNAME_OPERLOG $DPATH/opers
249     fi
250   if [ "$ac_cv_header_syslog_h" = "yes" ]; then
251     bool 'Do you want to use syslog' USE_SYSLOG
252   else
253     USE_SYSLOG=n
254   fi
255     if [ "$USE_SYSLOG" = "y" ]; then
256       bool '   Log all operator kills to syslog' SYSLOG_KILL
257       bool '   Log all remote squits for all servers to syslog' SYSLOG_SQUIT
258       bool '   Log remote connect messages for other all servs' SYSLOG_CONNECT
259       bool '   Log all users who successfully become an Oper' SYSLOG_OPER
260       bool '   Send userlog stuff to syslog' SYSLOG_USERS
261       if [ "$SYSLOG_KILL" = "n" -a "$SYSLOG_SQUIT" = "n" -a \
262            "$SYSLOG_CONNECT" = "n" -a "$SYSLOG_OPER" = "n" -a \
263            "$SYSLOG_USERS" = "n" ]; then
264         define_macro LOG_FACILITY $LOG_FACILITY
265         define_bool USE_SYSLOG n
266       else
267         choice '   Log facility' \
268                 "daemon         CONFIG_DAEMON   \
269                 user            CONFIG_USER     \
270                 local0-7        CONFIG_LOCAL" daemon
271         if [ "$CONFIG_DAEMON" = "y" ]; then
272           define_macro LOG_FACILITY LOG_DAEMON
273         else
274           if [ "$CONFIG_USER" = "y" ]; then
275             define_macro LOG_FACILITY LOG_USER
276           else
277             int '      Which local facility (0-7)' INT_LOCAL
278             define_macro LOG_FACILITY LOG_LOCAL$INT_LOCAL
279           fi
280         fi
281         echo "    Using log facility $LOG_FACILITY"
282       fi
283     else
284       define_bool SYSLOG_KILL $SYSLOG_KILL
285       define_bool SYSLOG_SQUIT $SYSLOG_SQUIT
286       define_bool SYSLOG_CONNECT $SYSLOG_CONNECT
287       define_bool SYSLOG_OPER $SYSLOG_OPER
288       define_bool SYSLOG_USERS $SYSLOG_USERS
289       define_macro LOG_FACILITY $LOG_FACILITY
290     fi
291 endmenu
292
293 mainmenu_option next_comment
294 comment 'Configuration'
295   bool 'Use crypted passwords for operators' CRYPT_OPER_PASSWORD y
296   DUMMY=`echo "$BUFFERPOOL" | sed -e 's/[0-9]//g'`
297   if [ "$DUMMY" != "" ]; then
298     BUFFERPOOL=
299   fi
300   if [ "$HUB" = "y" ]; then
301     int 'Max size of the total of of all sendqs (bytes)' BUFFERPOOL 27000000
302   else
303     int 'Max size of the total of of all sendqs (bytes)' BUFFERPOOL 9000000
304   fi
305   int 'Max receive queue for clients (bytes)' CLIENT_FLOOD 1024
306   int 'Maximum number of network connections (23 - (FD_SETSIZE-4))' MAXCONNECTIONS 252
307   int 'Default port for connections to other servers' SERVER_PORT 4400
308   int 'Nickname history length' NICKNAMEHISTORYLENGTH 800
309   bool 'Allow Opers to see (dis)connects of local clients' ALLOW_SNO_CONNEXIT
310   if [ "$ALLOW_SNO_CONNEXIT" = "y" ]; then
311     bool 'Show IP address in client connection notices' SNO_CONNEXIT_IP
312   fi
313   bool 'Do you want to use R: lines in your configuration file' R_LINES
314   if [ "$R_LINES" = "y" ]; then
315     bool 'Process R: lines every rehash' R_LINES_REHASH y
316     bool 'Process R: lines always' R_LINES_OFTEN
317   else
318     define_bool R_LINES_REHASH $R_LINES_REHASH
319     define_bool R_LINES_OFTEN $R_LINES_OFTEN
320   fi
321   bool 'Do you want support for the old I:*:ONE:*:: construct (read help text!)' USEONE n
322   bool 'Send a short message instead of the MOTD to connecting clients' NODEFAULTMOTD y
323   bool 'Kill connecting clients when forward and reverse DNS mismatch' KILL_IPMISMATCH n
324 endmenu
325
326 mainmenu_option next_comment
327 comment 'Oper commands'
328   bool 'Allow (local) Opers to see all local invisible users' SHOW_INVISIBLE_USERS y
329   if [ "$SHOW_INVISIBLE_USERS" = "y" ]; then
330     bool 'Allow Opers to see all invisible users' SHOW_ALL_INVISIBLE_USERS y
331   fi
332   bool 'Allow global Opers (O:) to see inside secret channels' OPERS_SEE_IN_SECRET_CHANNELS y
333   if [ "$OPERS_SEE_IN_SECRET_CHANNELS" = "y" ]; then
334     bool 'Allow local Opers (o:) to see inside secret channels' LOCOP_SEE_IN_SECRET_CHANNELS n
335   fi
336   bool 'Do not truncate obnoxiously long /who output for opers' UNLIMIT_OPER_QUERY
337   bool 'Allow Opers to use the KILL command' OPER_KILL y
338   bool 'Allow Opers to use the REHASH command' OPER_REHASH y
339   bool 'Allow Opers to use the RESTART command' OPER_RESTART y
340   bool 'Allow Opers to use the DIE command' OPER_DIE y
341   bool 'Allow Opers to add local G-lines' OPER_LGLINE y
342   bool 'Allow Opers to connect from a remote site' OPER_REMOTE y
343   bool 'Allow local opers to use the REHASH command' LOCOP_REHASH y
344   bool 'Allow local opers to use the RESTART command' LOCOP_RESTART
345   bool 'Allow local opers to use the DIE command' LOCOP_DIE
346   bool 'Allow local opers to add local G-lines' LOCOP_LGLINE y
347   bool 'Allow local/global opers to be on any number of channels' OPER_NO_CHAN_LIMIT y
348   bool 'Allow local/global opers to set modes on local channels' OPER_MODE_LCHAN y
349   bool 'Allow local/global opers to walk through local channels modes' OPER_WALK_THROUGH_LMODES n
350   bool 'Prevent local/global opers from being kicked or deoped on local channels' NO_OPER_DEOP_LCHAN n
351
352 endmenu
353
354 mainmenu_option next_comment
355 comment 'Server characteristics'
356   bool 'Do you want to have a default LIST parameter' CONFIG_LIST y
357   if [ "$CONFIG_LIST" = "y" ]; then
358     string 'Give default LIST parameter' DEFAULT_LIST 'T<10'
359     define_string DEFAULT_LIST_PARAM "$DEFAULT_LIST"
360   else
361     define_string DEFAULT_LIST "$DEFAULT_LIST"
362     define_bool DEFAULT_LIST_PARAM n
363   fi
364   bool 'K: line comments treated as a file by default' COMMENT_IS_FILE y
365   bool 'Only nullify idle-time on PRIVMSG' IDLE_FROM_MSG y
366 endmenu
367
368 mainmenu_option next_comment
369 comment 'Mandatory defines (you should leave these untouched)'
370   int 'Max auto connects per class (1!)' MAXIMUM_LINKS 1
371   if [ "$OPER_KILL" = "y" ]; then
372     bool 'Only allow KILLs of local clients' LOCAL_KILL_ONLY
373   else
374     define_bool LOCAL_KILL_ONLY $LOCAL_KILL_ONLY
375   fi
376   int 'KILL nick chase time limit (30)' KILLCHASETIMELIMIT 30
377   int 'Max number of channels per user (recommended: 5)' MAXCHANNELSPERUSER 10
378   int 'Max number of silence masks (15!)' MAXSILES 15
379   int 'Expected average banmask length (40!)' AVBANLEN 40
380   eval define_macro MAXSILELENGTH \'\($AVBANLEN * MAXSILES\)\'
381   echo '* These are default values, used for class 0:'
382   int 'Max server idle time (60)' TIMESEC 60
383   int 'Class 0 ping frequency (120)' PINGFREQUENCY 120
384   int 'Class 0 connect frequency (600)' CONNECTFREQUENCY 600
385   int 'Min time before a link is good (300)' HANGONGOODLINK 300
386   int 'Wait before reconnecting to good link (10!)' HANGONRETRYDELAY 10
387   int 'connect(2) timeout (90!)' CONNECTTIMEOUT 90
388   int 'Max send queue (40000)' DEFAULTMAXSENDQLENGTH 40000
389 endmenu
390
391 mainmenu_option next_comment
392 comment 'Experimental options (Do you know what you'\''re doing?)'
393   bool 'Use new MODE implementation' CONFIG_NEW_MODE y
394   bool 'Use new oper commands (JUPE, CLEARMODE, OPMODE, GLINE)' CONFIG_OPERCMDS y
395 endmenu