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