Author: Run <carlo@alinoe.com>
[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 'Compile stuff'
62   if [ "$prefix" = "NONE" ]; then
63     prefix=/usr/local
64   fi
65   if [ "$exec_prefix" = "NONE" ]; then
66     eval exec_prefix="$prefix"
67   fi
68   string 'Which compiler do you want to use' CC "$CC_DEFAULT"
69   echo "* For the following four questions, specify 'none' when you want it to be empty."
70   if [ -z "$cflags_O3_remark" -a -n "$CFLAGS" ]; then
71     CFLAGS_DEFAULT=`echo "$CFLAGS" | sed -e 's%-O2%-O3%'`
72     if [ "$CFLAGS_DEFAULT" != "$CFLAGS" ]; then
73       echo "You are highly advised to use -O3 instead of -O2 if you're short in cpu cycles!"
74       echo "Please read documentation (press '?'):"
75       CFLAGS=
76     fi
77   fi
78   eval string "'What flags should I pass to $CC [none]'" CFLAGS "'$CFLAGS_DEFAULT'"
79   define_macro cflags_O3_remark done
80   string 'Do you need extra include directories [none]' EXTRA_INCLUDEDIRS none
81   if [ -z "$LDFLAGS_DEFAULT" ]; then
82     LDFLAGS_DEFAULT=none
83   else
84     eval LDFLAGS_DEFAULT="$LDFLAGS_DEFAULT"
85   fi
86   string 'Which linker flags do you need [none]' LDFLAGS "$LDFLAGS_DEFAULT"
87   if [ -z "$LIBS" ]; then
88     LIBS=none
89   fi
90   string 'Which extra libraries do you need [none]' IRCDLIBS "$LIBS"
91   eval bindir="$bindir"
92   string 'In which directory should I install the ircd binary' BINDIR $bindir
93   if [ ! -d "$BINDIR" ]; then
94     echo "$BINDIR : No such directory"
95   fi
96   string 'What should the name of the installed symbolic link to the exectuable be' SYMLINK ircd
97   string 'Which permissions do you want the binary to have' IRCDMODE 711
98   string 'Which owner do you want the binary to have' IRCDOWN "`id | sed -e 's/.*uid=[0-9]*(//' -e 's/).*//' 2> /dev/null`"
99   string 'Which group do you want the binary to have' IRCDGRP "`id | sed -e 's/.*gid=[0-9]*(//' -e 's/).*//' 2> /dev/null`"
100   eval mandir=$mandir
101   string 'Where should I install the man page' MANDIR $mandir
102   if [ "$CFLAGS" = "none" ]; then
103     CFLAGS=""
104   fi
105   if [ "$EXTRA_INCLUDEDIRS" = "none" ]; then
106     EXTRA_INCLUDEDIRS=""
107   fi
108   if [ "$LDFLAGS" = "none" ]; then
109     LDFLAGS=""
110   fi
111   if [ "$IRCDLIBS" = "none" ]; then
112     IRCDLIBS=""
113   fi
114   EXTRA_CPPFLAGS=""
115   if [ -n "$EXTRA_INCLUDEDIRS" ]; then
116     for i in $EXTRA_INCLUDEDIRS; do
117       if [ -z "$EXTRA_CPPFLAGS" ]; then
118         EXTRA_CPPFLAGS=-I$i
119       else
120         EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -I$i"
121       fi
122     done
123   fi
124   if [ -z "$EXTRA_CPPFLAGS" ]; then
125     CPPFLAGS=-I../include
126   else
127     CPPFLAGS="-I../include $EXTRA_CPPFLAGS"
128   fi
129   echo "EXTRA_CPPFLAGS=\"$EXTRA_CPPFLAGS\"" >>$CONFIG
130   echo "CPPFLAGS=\"$CPPFLAGS\"" >>$CONFIG
131   bool 'Use inlining for a few crucial functions' FORCEINLINE y
132 endmenu
133
134 if [ "$ac_cv_header_poll_h" = "yes" ]; then
135   if [ "$unet_cv_func_poll_syscall" = "yes" ]; then
136     define_bool USE_POLL y
137   else
138     mainmenu_option next_comment
139     comment 'Operating System specific defines.'
140       bool 'You have poll(), but do you want to use it' USE_POLL n
141     endmenu
142   fi
143 fi
144
145 mainmenu_option next_comment
146 comment 'Host specific defines'
147   if [ -f /etc/resolv.conf ]; then
148     DOMAINNAME_DEFAULT="`awk '/^domain/ { print $2; exit }' /etc/resolv.conf`"
149   fi
150   string 'What is the domain name of your network' DOMAINNAME $DOMAINNAME_DEFAULT
151   if [ -z "$DOMAINNAME" ]; then
152     DOMAINNAME=none
153   fi
154   string 'Please give a random seed of eight characters' RANDOM_SEED 12345678
155   bool 'Does your host have a reliable clock' RELIABLE_CLOCK
156 endmenu
157
158 mainmenu_option next_comment
159 comment 'General defines'
160   bool 'Change root ('/') after start of daemon' CHROOTDIR
161   bool 'Do you want the daemon set its own uid/gid' CONFIG_SETUGID
162   if [ "$CONFIG_SETUGID" = "y" ]; then
163     int '   UID of irc daemon' IRC_UID
164     int '   GID of irc daemon' IRC_GID
165   else
166     define_int IRC_UID $IRC_UID
167     define_int IRC_GID $IRC_GID
168     bool 'Allow to specify configuration file on command line' CMDLINE_CONFIG
169     if [ "$CMDLINE_CONFIG" = "y" ]; then
170       echo "   SECURITY: Then don't install the daemon SUID or SGID !"
171     fi
172   fi
173   bool 'Set up a Unix domain socket to connect clients/servers' UNIXPORT
174   PREV_HUB=$HUB
175   bool 'Will you connect to more then one server at a time' HUB
176   if [ "$PREV_HUB" != "$HUB" ]; then
177     BUFFERPOOL=
178   fi
179 endmenu
180
181 mainmenu_option next_comment
182 comment 'Debugging (do not define this on production servers)'
183   bool 'Do you want to enable debugging output' DEBUGMODE
184   bool 'Do you want memory- allocation and/or leak checking' DEBUGMALLOC
185   if [ "$DEBUGMALLOC" = "y" ]; then
186     bool 'Do you want to have boundary checking' MEMMAGICNUMS
187     bool 'Do you want memory leak testing (stats M)' MEMLEAKSTATS y
188     if [ "$MEMLEAKSTATS" = "y" ]; then
189       if [ "$MEMMAGICNUMS" = "y" ]; then
190         echo "You will have extra info on allocated sizes too (MEMSIZESTATS)"
191         define_bool MEMSIZESTATS $MEMSIZESTATS
192       else
193         bool 'Do you want extra info on allocated sizes' MEMSIZESTATS y
194       fi
195       bool 'Do you want support for a time interval with /stats M' MEMTIMESTATS y
196     fi
197   else
198     define_bool MEMMAGICNUMS $MEMMAGICNUMS
199     define_bool MEMLEAKSTATS $MEMLEAKSTATS
200     define_bool MEMSIZESTATS $MEMSIZESTATS
201     define_bool MEMTIMESTATS $MEMTIMESTATS
202   fi
203 endmenu
204
205 mainmenu_option next_comment
206 comment 'Paths and files'
207   eval DPATH_DEFAULT="${prefix}/lib/ircd"
208   string 'Directory where all ircd stuff resides' DPATH $DPATH_DEFAULT
209   define_string SPATH "$BINDIR/$SYMLINK"
210   echo "The following filenames are either full paths or files within DPATH"
211   string 'Server configuration file' CPATH 'ircd.conf'
212   string 'Server MOTD file' MPATH 'ircd.motd'
213   string 'Server remote MOTD file (3 lines max)' RPATH 'remote.motd'
214   if [ "$DEBUGMODE" = "y" ]; then
215     string 'Debug file if DEBUGMODE' LPATH '/tmp/ircd.log'
216   else
217     define_string LPATH "$LPATH"
218   fi
219   string 'File for server pid' PPATH 'ircd.pid'
220 endmenu
221
222 mainmenu_option next_comment
223 comment 'Logging (filenames are either full paths or files within DPATH)'
224   bool 'Do you want to log the use of /WHO x% (recommended)' CONFIG_LOG_WHOX y
225     if [ "$CONFIG_LOG_WHOX" = "y" ]; then
226       string '   Give the path and(or) filename of this log file' WPATH 'whox.log'
227     fi
228
229  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'
230   bool 'Do you want to enable Bad Channel G-lines' BADCHAN y
231     if [ "$BADCHAN" = "y" ]; then
232       echo " "
233       echo " WARNING DO _NOT_ USE LOCAL BADCHANNEL GLINES ON UNDERNET"
234       echo " Use of LOCAL BAD Channel G-Lines can be cause for REMOVAL"
235       bool 'Allow LOCAL BAD Channel G-lines' LOCAL_BADCHAN
236     fi
237
238   bool 'Do you want to log G-lines to a separate file' CONFIG_LOG_GLINES
239     if [ "$CONFIG_LOG_GLINES" = "y" ]; then
240       string '   Give the path and(or) filename of this log file' GPATH 'gline.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 N: lines' CRYPT_LINK_PASSWORD y
296   bool 'Use crypted passwords for operators' CRYPT_OPER_PASSWORD y
297   DUMMY=`echo "$BUFFERPOOL" | sed -e 's/[0-9]//g'`
298   if [ "$DUMMY" != "" ]; then
299     BUFFERPOOL=
300   fi
301   if [ "$HUB" = "y" ]; then
302     int 'Max size of the total of of all sendqs (bytes)' BUFFERPOOL 27000000
303   else
304     int 'Max size of the total of of all sendqs (bytes)' BUFFERPOOL 9000000
305   fi
306   int 'Max receive queue for clients (bytes)' CLIENT_FLOOD 1024
307   int 'Maximum number of network connections (23 - (FD_SETSIZE-4))' MAXCONNECTIONS 252
308   int 'Default client listen port' PORTNUM 6667
309   int 'Nickname history length' NICKNAMEHISTORYLENGTH 800
310   bool 'Allow Opers to see (dis)connects of local clients' ALLOW_SNO_CONNEXIT
311   if [ "$ALLOW_SNO_CONNEXIT" = "y" ]; then
312     bool 'Show IP address in client connection notices' SNO_CONNEXIT_IP
313   fi
314   bool 'Do you want to use R: lines in your configuration file' R_LINES
315   if [ "$R_LINES" = "y" ]; then
316     bool 'Process R: lines every rehash' R_LINES_REHASH y
317     bool 'Process R: lines always' R_LINES_OFTEN
318   else
319     define_bool R_LINES_REHASH $R_LINES_REHASH
320     define_bool R_LINES_OFTEN $R_LINES_OFTEN
321   fi
322   bool 'Do you want support for the old I:*:ONE:*:: construct (read help text!)' USEONE n
323   bool 'Send a short message instead of the MOTD to connecting clients' NODEFAULTMOTD y
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 endmenu
352
353 mainmenu_option next_comment
354 comment 'Server characteristics'
355   bool 'Do you want to have a default LIST parameter' CONFIG_LIST y
356   if [ "$CONFIG_LIST" = "y" ]; then
357     string 'Give default LIST parameter' DEFAULT_LIST 'T<10'
358     define_string DEFAULT_LIST_PARAM "$DEFAULT_LIST"
359   else
360     define_string DEFAULT_LIST "$DEFAULT_LIST"
361     define_bool DEFAULT_LIST_PARAM n
362   fi
363   bool 'K: line comments treated as a file by default' COMMENT_IS_FILE y
364   bool 'Only nullify idle-time on PRIVMSG' IDLE_FROM_MSG y
365 endmenu
366
367 mainmenu_option next_comment
368 comment 'Mandatory defines (you should leave these untouched)'
369   int 'Max auto connects per class (1!)' MAXIMUM_LINKS 1
370   echo '* Never define this on a production server:'
371   bool 'Enable message logging' MSGLOG_ENABLED
372   if [ "$MSGLOG_ENABLED" = "y" ]; then
373     int 'Message log size' MSGLOG_SIZE 128
374   fi
375   if [ "$OPER_KILL" = "y" ]; then
376     bool 'Only allow KILLs of local clients' LOCAL_KILL_ONLY
377   else
378     define_bool LOCAL_KILL_ONLY $LOCAL_KILL_ONLY
379   fi
380   int 'KILL nick chase time limit (30)' KILLCHASETIMELIMIT 30
381   int 'Max number of channels per user (recommended: 5)' MAXCHANNELSPERUSER 10
382   int 'Max number of silence masks (15!)' MAXSILES 15
383   int 'Expected average banmask length (40!)' AVBANLEN 40
384   eval define_macro MAXSILELENGTH \'\($AVBANLEN * MAXSILES\)\'
385   echo '* These are default values, used for class 0:'
386   int 'Max server idle time (60)' TIMESEC 60
387   int 'Class 0 ping frequency (120)' PINGFREQUENCY 120
388   int 'Class 0 connect frequency (600)' CONNECTFREQUENCY 600
389   int 'Min time before a link is good (300)' HANGONGOODLINK 300
390   int 'Wait before reconnecting to good link (10!)' HANGONRETRYDELAY 10
391   int 'connect(2) timeout (90!)' CONNECTTIMEOUT 90
392   int 'Max send queue (40000)' DEFAULTMAXSENDQLENGTH 40000
393 endmenu
394