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   bool 'Generate debug symbols?' DEBUGSYMBOLS "y"
107   bool 'Compile in profiling support (gcc and maybe SUNpro)?' IRCUPROFILE "n"
108   unset ZSTEMP
109   if [ "$DEBUGSYMBOLS" = "y" ] ; then
110     ZSTEMP="-g"
111   fi
112   if [ "$IRCUPROFILE" = "y" ] ; then
113     ZSTEMP="-pg $ZSTEMP"
114   fi
115   define_string DEBUGFLAGS "$ZSTEMP"
116   eval bindir="$bindir"
117   string 'In which directory should I install the ircd binary' BINDIR $bindir
118   if [ ! -d "$BINDIR" ]; then
119     echo "$BINDIR : No such directory"
120   fi
121   string 'What should the name of the installed symbolic link to the exectuable be' SYMLINK ircd
122   string 'Which permissions do you want the binary to have' IRCDMODE 711
123   string 'Which owner do you want the binary to have' IRCDOWN "`id | sed -e 's/.*uid=[0-9]*(//' -e 's/).*//' 2> /dev/null`"
124   string 'Which group do you want the binary to have' IRCDGRP "`id | sed -e 's/.*gid=[0-9]*(//' -e 's/).*//' 2> /dev/null`"
125   eval mandir=$mandir
126   string 'Where should I install the man page' MANDIR $mandir
127   if [ "$CFLAGS" = "none" ]; then
128     CFLAGS=""
129   fi
130   if [ "$EXTRA_INCLUDEDIRS" = "none" ]; then
131     EXTRA_INCLUDEDIRS=""
132   fi
133   if [ "$LDFLAGS" = "none" ]; then
134     LDFLAGS=""
135   fi
136   if [ "$IRCDLIBS" = "none" ]; then
137     IRCDLIBS=""
138   fi
139   if [ -n "$EXTRA_INCLUDEDIRS" ]; then
140     for i in $EXTRA_INCLUDEDIRS; do
141       if [ -z "$EXTRA_CPPFLAGS" ]; then
142         EXTRA_CPPFLAGS=-I$i
143       else
144         EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -I$i"
145       fi
146     done
147   fi
148   if [ -z "$EXTRA_CPPFLAGS" ]; then
149     CPPFLAGS="-I../include -I../config"
150   else
151     CPPFLAGS="-I../include -I../config $EXTRA_CPPFLAGS"
152   fi
153   echo "EXTRA_CPPFLAGS=\"$EXTRA_CPPFLAGS\"" >>$CONFIG
154   echo "CPPFLAGS=\"$CPPFLAGS\"" >>$CONFIG
155   bool 'Use inlining for a few crucial functions' FORCEINLINE y
156 endmenu
157
158 if [ "$ac_cv_header_poll_h" = "yes" ]; then
159   if [ "$unet_cv_func_poll_syscall" = "yes" ]; then
160     define_bool USE_POLL y
161   else
162     mainmenu_option next_comment
163     comment 'Operating System specific defines.'
164       bool 'You have poll(), but do you want to use it' USE_POLL n
165     endmenu
166   fi
167 fi
168
169 mainmenu_option next_comment
170 comment 'Host specific defines'
171   if [ -f /etc/resolv.conf ]; then
172     DOMAINNAME_DEFAULT="`awk '/^domain/ { print $2; exit }' /etc/resolv.conf`"
173   fi
174   string 'What is the domain name of your network' DOMAINNAME $DOMAINNAME_DEFAULT
175   if [ -z "$DOMAINNAME" ]; then
176     DOMAINNAME=none
177   fi
178   string 'Please give a random seed of eight characters' RANDOM_SEED 12345678
179   bool 'Does your host have a reliable clock' RELIABLE_CLOCK
180 endmenu
181
182 mainmenu_option next_comment
183 comment 'General defines'
184   bool 'Do you want the daemon set its own uid/gid (say yes for chroot!)' CONFIG_SETUGID
185   if [ "$CONFIG_SETUGID" = "y" ]; then
186     int '   UID of irc daemon' IRC_UID
187     int '   GID of irc daemon' IRC_GID
188     bool '   Change root ('/') after start of daemon' CHROOTDIR
189   else
190     define_bool CHROOTDIR n
191     define_int IRC_UID $IRC_UID
192     define_int IRC_GID $IRC_GID
193     bool 'Allow to specify configuration file on command line' CMDLINE_CONFIG
194     if [ "$CMDLINE_CONFIG" = "y" ]; then
195       echo "   SECURITY: Then don't install the daemon SUID or SGID !"
196     fi
197   fi
198   bool 'Do you need virtual hosting' VIRTUAL_HOST
199   PREV_HUB=$HUB
200   bool 'Will you connect to more then one server at a time' HUB
201   if [ "$PREV_HUB" != "$HUB" ]; then
202     BUFFERPOOL=
203   fi
204 endmenu
205
206
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   if [ "$CHROOTDIR" = "y" ] ; then
212     define_string SPATH "/$SYMLINK"
213   else
214     define_string SPATH "$BINDIR/$SYMLINK"
215   fi
216   echo "The following filenames are either full paths or files within DPATH"
217   string 'Server configuration file' CPATH 'ircd.conf'
218   string 'Server MOTD file' MPATH 'ircd.motd'
219   string 'Server remote MOTD file (3 lines max)' RPATH 'remote.motd'
220   if [ "$DEBUGMODE" = "y" ]; then
221     string 'Debug file if DEBUGMODE' LPATH '/tmp/ircd.log'
222   else
223     define_string LPATH "$LPATH"
224   fi
225   string 'File for server pid' PPATH 'ircd.pid'
226 endmenu
227
228 mainmenu_option next_comment
229 comment 'Logging (filenames are either full paths or files within DPATH)'
230
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
234       echo " "
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
238     fi
239 endmenu
240
241 mainmenu_option next_comment
242 comment 'Configuration'
243   bool 'Use crypted passwords for operators' CRYPT_OPER_PASSWORD y
244   DUMMY=`echo "$BUFFERPOOL" | sed -e 's/[0-9]//g'`
245   if [ "$DUMMY" != "" ]; then
246     BUFFERPOOL=
247   fi
248   if [ "$HUB" = "y" ]; then
249     int 'Max size of the total of of all sendqs (bytes)' BUFFERPOOL 27000000
250   else
251     int 'Max size of the total of of all sendqs (bytes)' BUFFERPOOL 9000000
252   fi
253   bool 'Aggressively empty the sendqpool (Read Help!)' HAS_FERGUSON_FLUSHER n
254   int 'Max receive queue for clients (bytes)' CLIENT_FLOOD 1024
255   int 'Maximum number of network connections (23 - (FD_SETSIZE-4))' MAXCONNECTIONS 252
256   int 'Default port for connections to other servers' SERVER_PORT 4400
257   int 'Nickname history length' NICKNAMEHISTORYLENGTH 800
258   bool 'Do you want to use R: lines in your configuration file' R_LINES
259   if [ "$R_LINES" = "y" ]; then
260     bool 'Process R: lines every rehash' R_LINES_REHASH y
261     bool 'Process R: lines always' R_LINES_OFTEN
262   else
263     define_bool R_LINES_REHASH $R_LINES_REHASH
264     define_bool R_LINES_OFTEN $R_LINES_OFTEN
265   fi
266   bool 'Send a short message instead of the MOTD to connecting clients' NODEFAULTMOTD y
267   bool 'Kill connecting clients when forward and reverse DNS mismatch' KILL_IPMISMATCH n
268 endmenu
269
270 mainmenu_option next_comment
271 comment 'Oper commands'
272   bool 'Allow (local) Opers to see all local invisible users' SHOW_INVISIBLE_USERS y
273   if [ "$SHOW_INVISIBLE_USERS" = "y" ]; then
274     bool 'Allow Opers to see all invisible users' SHOW_ALL_INVISIBLE_USERS y
275   fi
276   bool 'Allow global Opers (O:) to see inside secret channels' OPERS_SEE_IN_SECRET_CHANNELS y
277   if [ "$OPERS_SEE_IN_SECRET_CHANNELS" = "y" ]; then
278     bool 'Allow local Opers (o:) to see inside secret channels' LOCOP_SEE_IN_SECRET_CHANNELS n
279   fi
280   bool 'Do not truncate obnoxiously long /who output for opers' UNLIMIT_OPER_QUERY
281   bool 'Allow Opers to use the KILL command' OPER_KILL y
282   bool 'Allow Opers to use the REHASH command' OPER_REHASH y
283   bool 'Allow Opers to use the RESTART command' OPER_RESTART y
284   bool 'Allow Opers to use the DIE command' OPER_DIE y
285   bool 'Allow Opers to add local G-lines' OPER_LGLINE y
286   bool 'Allow Opers to connect from a remote site' OPER_REMOTE y
287   bool 'Allow local opers to use the REHASH command' LOCOP_REHASH y
288   bool 'Allow local opers to use the RESTART command' LOCOP_RESTART
289   bool 'Allow local opers to use the DIE command' LOCOP_DIE
290   bool 'Allow local opers to add local G-lines' LOCOP_LGLINE y
291   bool 'Allow local/global opers to be on any number of channels' OPER_NO_CHAN_LIMIT y
292   bool 'Allow local/global opers to set modes on local channels' OPER_MODE_LCHAN y
293   bool 'Allow local/global opers to walk through local channels modes' OPER_WALK_THROUGH_LMODES n
294   bool 'Prevent local/global opers from being kicked or deoped on local channels' NO_OPER_DEOP_LCHAN n
295
296 endmenu
297
298 mainmenu_option next_comment
299 comment 'Server characteristics'
300   bool 'Do you want to have a default LIST parameter' CONFIG_LIST y
301   if [ "$CONFIG_LIST" = "y" ]; then
302     string 'Give default LIST parameter' DEFAULT_LIST 'T<10'
303     define_string DEFAULT_LIST_PARAM "$DEFAULT_LIST"
304   else
305     define_string DEFAULT_LIST "$DEFAULT_LIST"
306     define_bool DEFAULT_LIST_PARAM n
307   fi
308   bool 'K: line comments treated as a file by default' COMMENT_IS_FILE y
309   bool 'Only nullify idle-time on PRIVMSG' IDLE_FROM_MSG y
310 endmenu
311
312 mainmenu_option next_comment
313 comment 'Mandatory defines (you should leave these untouched)'
314   int 'Max auto connects per class (1!)' MAXIMUM_LINKS 1
315   if [ "$OPER_KILL" = "y" ]; then
316     bool 'Only allow KILLs of local clients' LOCAL_KILL_ONLY
317   else
318     define_bool LOCAL_KILL_ONLY $LOCAL_KILL_ONLY
319   fi
320   int 'KILL nick chase time limit (30)' KILLCHASETIMELIMIT 30
321   int 'Max number of channels per user' MAXCHANNELSPERUSER 10
322   int 'Max number of silence masks (15!)' MAXSILES 15
323   int 'Expected average banmask length (40!)' AVBANLEN 40
324   eval define_macro MAXSILELENGTH \'\($AVBANLEN * MAXSILES\)\'
325   echo '* These are default values, used for class 0:'
326   int 'Max server idle time (60)' TIMESEC 60
327   int 'Class 0 ping frequency (120)' PINGFREQUENCY 120
328   int 'Class 0 connect frequency (600)' CONNECTFREQUENCY 600
329   int 'Min time before a link is good (300)' HANGONGOODLINK 300
330   int 'Wait before reconnecting to good link (10!)' HANGONRETRYDELAY 10
331   int 'connect(2) timeout (90!)' CONNECTTIMEOUT 90
332   int 'Max send queue (40000)' DEFAULTMAXSENDQLENGTH 40000
333 endmenu
334
335 mainmenu_option next_comment
336 comment 'Experimental options (Do you know what you'\''re doing?)'
337   bool 'Use new MODE implementation' CONFIG_NEW_MODE y
338   bool 'Use new oper commands (JUPE, CLEARMODE, OPMODE, GLINE)' CONFIG_OPERCMDS y
339 endmenu