3 # By Carlo Wood (carlo@runaway.xs4all.nl)
5 # For a description of the syntax of this configuration file,
6 # see the config/Configure script.
8 # TO CONFIGURE THE SERVER, TYPE: 'make config' in the top level directory !
11 #### Start of system configuration section. ####
14 exec_prefix=@exec_prefix@
18 CFLAGS_DEFAULT="@CFLAGS@"
19 CPPFLAGS_DEFAULT="@CPPFLAGS@"
20 LDFLAGS_DEFAULT="@LDFLAGS@"
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@
26 #### End of system configuration section. ####
28 if [ -z "$CONFIG_BATCH" ]; then
29 echo "**************************************************************************"
30 echo "Error: Please run 'make config' that resides in the top level directory!"
31 echo "**************************************************************************"
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 '?'"
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."
60 mainmenu_option next_comment
61 comment 'Compile stuff'
62 if [ "$prefix" = "NONE" ]; then
65 if [ "$exec_prefix" = "NONE" ]; then
66 eval exec_prefix="$prefix"
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 '?'):"
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
84 eval LDFLAGS_DEFAULT="$LDFLAGS_DEFAULT"
86 string 'Which linker flags do you need [none]' LDFLAGS "$LDFLAGS_DEFAULT"
87 if [ -z "$LIBS" ]; then
90 string 'Which extra libraries do you need [none]' IRCDLIBS "$LIBS"
92 string 'In which directory should I install the ircd binary' BINDIR $bindir
93 if [ ! -d "$BINDIR" ]; then
94 echo "$BINDIR : No such directory"
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`"
101 string 'Where should I install the man page' MANDIR $mandir
102 if [ "$CFLAGS" = "none" ]; then
105 if [ "$EXTRA_INCLUDEDIRS" = "none" ]; then
108 if [ "$LDFLAGS" = "none" ]; then
111 if [ "$IRCDLIBS" = "none" ]; then
115 if [ -n "$EXTRA_INCLUDEDIRS" ]; then
116 for i in $EXTRA_INCLUDEDIRS; do
117 if [ -z "$EXTRA_CPPFLAGS" ]; then
120 EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -I$i"
124 if [ -z "$EXTRA_CPPFLAGS" ]; then
125 CPPFLAGS=-I../include
127 CPPFLAGS="-I../include $EXTRA_CPPFLAGS"
129 echo "EXTRA_CPPFLAGS=\"$EXTRA_CPPFLAGS\"" >>$CONFIG
130 echo "CPPFLAGS=\"$CPPFLAGS\"" >>$CONFIG
131 bool 'Use inlining for a few crucial functions' FORCEINLINE y
134 if [ "$ac_cv_header_poll_h" = "yes" ]; then
135 if [ "$unet_cv_func_poll_syscall" = "yes" ]; then
136 define_bool USE_POLL y
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
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`"
150 string 'What is the domain name of your network' DOMAINNAME $DOMAINNAME_DEFAULT
151 if [ -z "$DOMAINNAME" ]; then
154 string 'Please give a random seed of eight characters' RANDOM_SEED 12345678
155 bool 'Does your host have a reliable clock' RELIABLE_CLOCK
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
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 !"
173 bool 'Set up a Unix domain socket to connect clients/servers' UNIXPORT
174 bool 'Do you need virtual hosting' VIRTUAL_HOST
176 bool 'Will you connect to more then one server at a time' HUB
177 if [ "$PREV_HUB" != "$HUB" ]; then
182 mainmenu_option next_comment
183 comment 'Debugging (do not define this on production servers)'
184 bool 'Do you want to enable debugging output' DEBUGMODE
185 bool 'Do you want memory- allocation and/or leak checking' DEBUGMALLOC
186 if [ "$DEBUGMALLOC" = "y" ]; then
187 bool 'Do you want to have boundary checking' MEMMAGICNUMS
188 bool 'Do you want memory leak testing (stats M)' MEMLEAKSTATS y
189 if [ "$MEMLEAKSTATS" = "y" ]; then
190 if [ "$MEMMAGICNUMS" = "y" ]; then
191 echo "You will have extra info on allocated sizes too (MEMSIZESTATS)"
192 define_bool MEMSIZESTATS $MEMSIZESTATS
194 bool 'Do you want extra info on allocated sizes' MEMSIZESTATS y
196 bool 'Do you want support for a time interval with /stats M' MEMTIMESTATS y
199 define_bool MEMMAGICNUMS $MEMMAGICNUMS
200 define_bool MEMLEAKSTATS $MEMLEAKSTATS
201 define_bool MEMSIZESTATS $MEMSIZESTATS
202 define_bool MEMTIMESTATS $MEMTIMESTATS
204 bool 'Are you testing on a host without DNS' NODNS
207 mainmenu_option next_comment
208 comment 'Paths and files'
209 eval DPATH_DEFAULT="${prefix}/lib/ircd"
210 string 'Directory where all ircd stuff resides' DPATH $DPATH_DEFAULT
211 define_string SPATH "$BINDIR/ircd"
212 echo "The following filenames are either full paths or files within DPATH"
213 string 'Server configuration file' CPATH 'ircd.conf'
214 string 'Server MOTD file' MPATH 'ircd.motd'
215 string 'Server remote MOTD file (3 lines max)' RPATH 'remote.motd'
216 if [ "$DEBUGMODE" = "y" ]; then
217 string 'Debug file if DEBUGMODE' LPATH '/tmp/ircd.log'
219 define_string LPATH "$LPATH"
221 string 'File for server pid' PPATH 'ircd.pid'
224 mainmenu_option next_comment
225 comment 'Logging (filenames are either full paths or files within DPATH)'
226 bool 'Do you want to log the use of /WHO x% (recommended)' CONFIG_LOG_WHOX y
227 if [ "$CONFIG_LOG_WHOX" = "y" ]; then
228 string ' Give the path and(or) filename of this log file' WPATH 'whox.log'
231 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'
232 bool 'Do you want to enable Bad Channel G-lines' BADCHAN y
233 if [ "$BADCHAN" = "y" ]; then
235 echo " WARNING DO _NOT_ USE LOCAL BADCHANNEL GLINES ON UNDERNET"
236 echo " Use of LOCAL BAD Channel G-Lines can be cause for REMOVAL"
237 bool 'Allow LOCAL BAD Channel G-lines' LOCAL_BADCHAN
240 bool 'Do you want to log G-lines to a separate file' CONFIG_LOG_GLINES
241 if [ "$CONFIG_LOG_GLINES" = "y" ]; then
242 string ' Give the path and(or) filename of this log file' GPATH 'gline.log'
244 bool 'Do you want to log connecting users to a separate file' CONFIG_LOG_USERS
245 if [ "$CONFIG_LOG_USERS" = "y" ]; then
246 string ' Give the path and(or) filename of this log file' FNAME_USERLOG $DPATH/users
248 bool 'Do you want to log Opers to a separate file' CONFIG_LOG_OPERS
249 if [ "$CONFIG_LOG_OPERS" = "y" ]; then
250 string ' Give the path and(or) filename of this log file' FNAME_OPERLOG $DPATH/opers
252 if [ "$ac_cv_header_syslog_h" = "yes" ]; then
253 bool 'Do you want to use syslog' USE_SYSLOG
257 if [ "$USE_SYSLOG" = "y" ]; then
258 bool ' Log all operator kills to syslog' SYSLOG_KILL
259 bool ' Log all remote squits for all servers to syslog' SYSLOG_SQUIT
260 bool ' Log remote connect messages for other all servs' SYSLOG_CONNECT
261 bool ' Log all users who successfully become an Oper' SYSLOG_OPER
262 bool ' Send userlog stuff to syslog' SYSLOG_USERS
263 if [ "$SYSLOG_KILL" = "n" -a "$SYSLOG_SQUIT" = "n" -a \
264 "$SYSLOG_CONNECT" = "n" -a "$SYSLOG_OPER" = "n" -a \
265 "$SYSLOG_USERS" = "n" ]; then
266 define_macro LOG_FACILITY $LOG_FACILITY
267 define_bool USE_SYSLOG n
269 choice ' Log facility' \
270 "daemon CONFIG_DAEMON \
272 local0-7 CONFIG_LOCAL" daemon
273 if [ "$CONFIG_DAEMON" = "y" ]; then
274 define_macro LOG_FACILITY LOG_DAEMON
276 if [ "$CONFIG_USER" = "y" ]; then
277 define_macro LOG_FACILITY LOG_USER
279 int ' Which local facility (0-7)' INT_LOCAL
280 define_macro LOG_FACILITY LOG_LOCAL$INT_LOCAL
283 echo " Using log facility $LOG_FACILITY"
286 define_bool SYSLOG_KILL $SYSLOG_KILL
287 define_bool SYSLOG_SQUIT $SYSLOG_SQUIT
288 define_bool SYSLOG_CONNECT $SYSLOG_CONNECT
289 define_bool SYSLOG_OPER $SYSLOG_OPER
290 define_bool SYSLOG_USERS $SYSLOG_USERS
291 define_macro LOG_FACILITY $LOG_FACILITY
295 mainmenu_option next_comment
296 comment 'Configuration'
297 bool 'Use crypted passwords for N: lines' CRYPT_LINK_PASSWORD y
298 bool 'Use crypted passwords for operators' CRYPT_OPER_PASSWORD y
299 DUMMY=`echo "$BUFFERPOOL" | sed -e 's/[0-9]//g'`
300 if [ "$DUMMY" != "" ]; then
303 if [ "$HUB" = "y" ]; then
304 int 'Max size of the total of of all sendqs (bytes)' BUFFERPOOL 27000000
306 int 'Max size of the total of of all sendqs (bytes)' BUFFERPOOL 9000000
308 int 'Max receive queue for clients (bytes)' CLIENT_FLOOD 1024
309 int 'Maximum number of network connections (23 - (FD_SETSIZE-4))' MAXCONNECTIONS 252
310 int 'Default client listen port' PORTNUM 6667
311 int 'Nickname history length' NICKNAMEHISTORYLENGTH 800
312 bool 'Allow Opers to see (dis)connects of local clients' ALLOW_SNO_CONNEXIT
313 if [ "$ALLOW_SNO_CONNEXIT" = "y" ]; then
314 bool 'Show IP address in client connection notices' SNO_CONNEXIT_IP
316 bool 'Do you want to use R: lines in your configuration file' R_LINES
317 if [ "$R_LINES" = "y" ]; then
318 bool 'Process R: lines every rehash' R_LINES_REHASH y
319 bool 'Process R: lines always' R_LINES_OFTEN
321 define_bool R_LINES_REHASH $R_LINES_REHASH
322 define_bool R_LINES_OFTEN $R_LINES_OFTEN
324 bool 'Do you want support for the old I:*:ONE:*:: construct (read help text!)' USEONE n
325 bool 'Send a short message instead of the MOTD to connecting clients' NODEFAULTMOTD y
328 mainmenu_option next_comment
329 comment 'Oper commands'
330 bool 'Allow (local) Opers to see all local invisible users' SHOW_INVISIBLE_USERS y
331 if [ "$SHOW_INVISIBLE_USERS" = "y" ]; then
332 bool 'Allow Opers to see all invisible users' SHOW_ALL_INVISIBLE_USERS y
334 bool 'Allow global Opers (O:) to see inside secret channels' OPERS_SEE_IN_SECRET_CHANNELS y
335 if [ "$OPERS_SEE_IN_SECRET_CHANNELS" = "y" ]; then
336 bool 'Allow local Opers (o:) to see inside secret channels' LOCOP_SEE_IN_SECRET_CHANNELS n
338 bool 'Do not truncate obnoxiously long /who output for opers' UNLIMIT_OPER_QUERY
339 bool 'Allow Opers to use the KILL command' OPER_KILL y
340 bool 'Allow Opers to use the REHASH command' OPER_REHASH y
341 bool 'Allow Opers to use the RESTART command' OPER_RESTART y
342 bool 'Allow Opers to use the DIE command' OPER_DIE y
343 bool 'Allow Opers to add local G-lines' OPER_LGLINE y
344 bool 'Allow Opers to connect from a remote site' OPER_REMOTE y
345 bool 'Allow local opers to use the REHASH command' LOCOP_REHASH y
346 bool 'Allow local opers to use the RESTART command' LOCOP_RESTART
347 bool 'Allow local opers to use the DIE command' LOCOP_DIE
348 bool 'Allow local opers to add local G-lines' LOCOP_LGLINE y
349 bool 'Allow local/global opers to be on any number of channels' OPER_NO_CHAN_LIMIT y
350 bool 'Allow local/global opers to set modes on local channels' OPER_MODE_LCHAN y
351 bool 'Allow local/global opers to walk through local channels modes' OPER_WALK_THROUGH_LMODES n
352 bool 'Prevent local/global opers from being kicked or deoped on local channels' NO_OPER_DEOP_LCHAN n
355 mainmenu_option next_comment
356 comment 'Server characteristics'
357 bool 'Do you want to have a default LIST parameter' CONFIG_LIST y
358 if [ "$CONFIG_LIST" = "y" ]; then
359 string 'Give default LIST parameter' DEFAULT_LIST 'T<10'
360 define_string DEFAULT_LIST_PARAM "$DEFAULT_LIST"
362 define_string DEFAULT_LIST "$DEFAULT_LIST"
363 define_bool DEFAULT_LIST_PARAM n
365 bool 'K: line comments treated as a file by default' COMMENT_IS_FILE y
366 bool 'Only nullify idle-time on PRIVMSG' IDLE_FROM_MSG y
369 mainmenu_option next_comment
370 comment 'Mandatory defines (you should leave these untouched)'
371 int 'Max auto connects per class (1!)' MAXIMUM_LINKS 1
372 echo '* Never define this on a production server:'
373 bool 'Enable message logging' MSGLOG_ENABLED
374 if [ "$MSGLOG_ENABLED" = "y" ]; then
375 int 'Message log size' MSGLOG_SIZE 128
377 if [ "$OPER_KILL" = "y" ]; then
378 bool 'Only allow KILLs of local clients' LOCAL_KILL_ONLY
380 define_bool LOCAL_KILL_ONLY $LOCAL_KILL_ONLY
382 int 'KILL nick chase time limit (30)' KILLCHASETIMELIMIT 30
383 int 'Max number of channels per user (recommended: 5)' MAXCHANNELSPERUSER 10
384 int 'Max number of silence masks (15!)' MAXSILES 15
385 int 'Expected average banmask length (40!)' AVBANLEN 40
386 eval define_macro MAXSILELENGTH \'\($AVBANLEN * MAXSILES\)\'
387 echo '* These are default values, used for class 0:'
388 int 'Max server idle time (60)' TIMESEC 60
389 int 'Class 0 ping frequency (120)' PINGFREQUENCY 120
390 int 'Class 0 connect frequency (600)' CONNECTFREQUENCY 600
391 int 'Min time before a link is good (300)' HANGONGOODLINK 300
392 int 'Wait before reconnecting to good link (10!)' HANGONRETRYDELAY 10
393 int 'connect(2) timeout (90!)' CONNECTTIMEOUT 90
394 int 'Max send queue (40000)' DEFAULTMAXSENDQLENGTH 40000