Author: Kev <klmitch@mit.edu>
[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 connecting users to a separate file' CONFIG_LOG_USERS
239     if [ "$CONFIG_LOG_USERS" = "y" ]; then
240       string '   Give the path and(or) filename of this log file' FNAME_USERLOG $DPATH/users
241     fi
242   bool 'Do you want to log Opers to a separate file' CONFIG_LOG_OPERS
243     if [ "$CONFIG_LOG_OPERS" = "y" ]; then
244       string '   Give the path and(or) filename of this log file' FNAME_OPERLOG $DPATH/opers
245     fi
246   if [ "$ac_cv_header_syslog_h" = "yes" ]; then
247     bool 'Do you want to use syslog' USE_SYSLOG
248   else
249     USE_SYSLOG=n
250   fi
251     if [ "$USE_SYSLOG" = "y" ]; then
252       bool '   Log all operator kills to syslog' SYSLOG_KILL
253       bool '   Log all remote squits for all servers to syslog' SYSLOG_SQUIT
254       bool '   Log remote connect messages for other all servs' SYSLOG_CONNECT
255       bool '   Log all users who successfully become an Oper' SYSLOG_OPER
256       bool '   Send userlog stuff to syslog' SYSLOG_USERS
257       if [ "$SYSLOG_KILL" = "n" -a "$SYSLOG_SQUIT" = "n" -a \
258            "$SYSLOG_CONNECT" = "n" -a "$SYSLOG_OPER" = "n" -a \
259            "$SYSLOG_USERS" = "n" ]; then
260         define_macro LOG_FACILITY $LOG_FACILITY
261         define_bool USE_SYSLOG n
262       else
263         choice '   Log facility' \
264                 "daemon         CONFIG_DAEMON   \
265                 user            CONFIG_USER     \
266                 local0-7        CONFIG_LOCAL" daemon
267         if [ "$CONFIG_DAEMON" = "y" ]; then
268           define_macro LOG_FACILITY LOG_DAEMON
269         else
270           if [ "$CONFIG_USER" = "y" ]; then
271             define_macro LOG_FACILITY LOG_USER
272           else
273             int '      Which local facility (0-7)' INT_LOCAL
274             define_macro LOG_FACILITY LOG_LOCAL$INT_LOCAL
275           fi
276         fi
277         echo "    Using log facility $LOG_FACILITY"
278       fi
279     else
280       define_bool SYSLOG_KILL $SYSLOG_KILL
281       define_bool SYSLOG_SQUIT $SYSLOG_SQUIT
282       define_bool SYSLOG_CONNECT $SYSLOG_CONNECT
283       define_bool SYSLOG_OPER $SYSLOG_OPER
284       define_bool SYSLOG_USERS $SYSLOG_USERS
285       define_macro LOG_FACILITY $LOG_FACILITY
286     fi
287 endmenu
288
289 mainmenu_option next_comment
290 comment 'Configuration'
291   bool 'Use crypted passwords for operators' CRYPT_OPER_PASSWORD y
292   DUMMY=`echo "$BUFFERPOOL" | sed -e 's/[0-9]//g'`
293   if [ "$DUMMY" != "" ]; then
294     BUFFERPOOL=
295   fi
296   if [ "$HUB" = "y" ]; then
297     int 'Max size of the total of of all sendqs (bytes)' BUFFERPOOL 27000000
298   else
299     int 'Max size of the total of of all sendqs (bytes)' BUFFERPOOL 9000000
300   fi
301   int 'Max receive queue for clients (bytes)' CLIENT_FLOOD 1024
302   int 'Maximum number of network connections (23 - (FD_SETSIZE-4))' MAXCONNECTIONS 252
303   int 'Default port for connections to other servers' SERVER_PORT 4400
304   int 'Nickname history length' NICKNAMEHISTORYLENGTH 800
305   bool 'Allow Opers to see (dis)connects of local clients' ALLOW_SNO_CONNEXIT
306   if [ "$ALLOW_SNO_CONNEXIT" = "y" ]; then
307     bool 'Show IP address in client connection notices' SNO_CONNEXIT_IP
308   fi
309   bool 'Do you want to use R: lines in your configuration file' R_LINES
310   if [ "$R_LINES" = "y" ]; then
311     bool 'Process R: lines every rehash' R_LINES_REHASH y
312     bool 'Process R: lines always' R_LINES_OFTEN
313   else
314     define_bool R_LINES_REHASH $R_LINES_REHASH
315     define_bool R_LINES_OFTEN $R_LINES_OFTEN
316   fi
317   bool 'Do you want support for the old I:*:ONE:*:: construct (read help text!)' USEONE n
318   bool 'Send a short message instead of the MOTD to connecting clients' NODEFAULTMOTD y
319   bool 'Kill connecting clients when forward and reverse DNS mismatch' KILL_IPMISMATCH n
320 endmenu
321
322 mainmenu_option next_comment
323 comment 'Oper commands'
324   bool 'Allow (local) Opers to see all local invisible users' SHOW_INVISIBLE_USERS y
325   if [ "$SHOW_INVISIBLE_USERS" = "y" ]; then
326     bool 'Allow Opers to see all invisible users' SHOW_ALL_INVISIBLE_USERS y
327   fi
328   bool 'Allow global Opers (O:) to see inside secret channels' OPERS_SEE_IN_SECRET_CHANNELS y
329   if [ "$OPERS_SEE_IN_SECRET_CHANNELS" = "y" ]; then
330     bool 'Allow local Opers (o:) to see inside secret channels' LOCOP_SEE_IN_SECRET_CHANNELS n
331   fi
332   bool 'Do not truncate obnoxiously long /who output for opers' UNLIMIT_OPER_QUERY
333   bool 'Allow Opers to use the KILL command' OPER_KILL y
334   bool 'Allow Opers to use the REHASH command' OPER_REHASH y
335   bool 'Allow Opers to use the RESTART command' OPER_RESTART y
336   bool 'Allow Opers to use the DIE command' OPER_DIE y
337   bool 'Allow Opers to add local G-lines' OPER_LGLINE y
338   bool 'Allow Opers to connect from a remote site' OPER_REMOTE y
339   bool 'Allow local opers to use the REHASH command' LOCOP_REHASH y
340   bool 'Allow local opers to use the RESTART command' LOCOP_RESTART
341   bool 'Allow local opers to use the DIE command' LOCOP_DIE
342   bool 'Allow local opers to add local G-lines' LOCOP_LGLINE y
343   bool 'Allow local/global opers to be on any number of channels' OPER_NO_CHAN_LIMIT y
344   bool 'Allow local/global opers to set modes on local channels' OPER_MODE_LCHAN y
345   bool 'Allow local/global opers to walk through local channels modes' OPER_WALK_THROUGH_LMODES n
346   bool 'Prevent local/global opers from being kicked or deoped on local channels' NO_OPER_DEOP_LCHAN n
347
348 endmenu
349
350 mainmenu_option next_comment
351 comment 'Server characteristics'
352   bool 'Do you want to have a default LIST parameter' CONFIG_LIST y
353   if [ "$CONFIG_LIST" = "y" ]; then
354     string 'Give default LIST parameter' DEFAULT_LIST 'T<10'
355     define_string DEFAULT_LIST_PARAM "$DEFAULT_LIST"
356   else
357     define_string DEFAULT_LIST "$DEFAULT_LIST"
358     define_bool DEFAULT_LIST_PARAM n
359   fi
360   bool 'K: line comments treated as a file by default' COMMENT_IS_FILE y
361   bool 'Only nullify idle-time on PRIVMSG' IDLE_FROM_MSG y
362 endmenu
363
364 mainmenu_option next_comment
365 comment 'Mandatory defines (you should leave these untouched)'
366   int 'Max auto connects per class (1!)' MAXIMUM_LINKS 1
367   if [ "$OPER_KILL" = "y" ]; then
368     bool 'Only allow KILLs of local clients' LOCAL_KILL_ONLY
369   else
370     define_bool LOCAL_KILL_ONLY $LOCAL_KILL_ONLY
371   fi
372   int 'KILL nick chase time limit (30)' KILLCHASETIMELIMIT 30
373   int 'Max number of channels per user (recommended: 5)' MAXCHANNELSPERUSER 10
374   int 'Max number of silence masks (15!)' MAXSILES 15
375   int 'Expected average banmask length (40!)' AVBANLEN 40
376   eval define_macro MAXSILELENGTH \'\($AVBANLEN * MAXSILES\)\'
377   echo '* These are default values, used for class 0:'
378   int 'Max server idle time (60)' TIMESEC 60
379   int 'Class 0 ping frequency (120)' PINGFREQUENCY 120
380   int 'Class 0 connect frequency (600)' CONNECTFREQUENCY 600
381   int 'Min time before a link is good (300)' HANGONGOODLINK 300
382   int 'Wait before reconnecting to good link (10!)' HANGONRETRYDELAY 10
383   int 'connect(2) timeout (90!)' CONNECTTIMEOUT 90
384   int 'Max send queue (40000)' DEFAULTMAXSENDQLENGTH 40000
385 endmenu
386