]> jfr.im git - irc/unrealircd/unrealircd.git/blob - Config
Create branch unreal33.
[irc/unrealircd/unrealircd.git] / Config
1 #!/bin/sh
2 #
3 # Config script for UnrealIRCd
4 # (C) 2001 The UnrealIRCd Team
5 #
6 # This configure script is free software; the UnrealIRCd Team gives
7 # unlimited permission to copy, distribute and modify as long as the
8 # copyright headers stay intact
9 #
10 #
11 # Rewritten completely to be an interface to autoconf by codemastr
12 # This was inspired by the config by Michael Graff (explorer@flame.org)
13 # but was written from scratch
14
15 # In order to be faster than the old Config, this assumes that all information
16 # in the cache file is valid and therefore doesn't check it, so if you messed with
17 # default values thats your problem :P
18
19 # some bits edited by baafie on March 17 2004, every change marked.
20
21
22 RUN_CONFIGURE () {
23 ARG=" "
24 # Do this even if we're not in advanced mode
25 if [ "$SHOWLISTMODES" = "1" ] ; then
26 ARG="$ARG--with-showlistmodes "
27 fi
28 if [ "$ADVANCED" = "1" ] ; then
29 if [ "$TOPICNICKISNUH" = "1" ] ; then
30 ARG="$ARG--with-topicisnuhost "
31 fi
32 if [ "$SHUNNOTICES" = "1" ] ; then
33 ARG="$ARG--with-shunnotices "
34 fi
35 if [ "$NOOPEROVERRIDE" = "1" ] ; then
36 ARG="$ARG--with-no-operoverride "
37 fi
38 if [ "$DISABLEUSERMOD" = "1" ] ; then
39 ARG="$ARG--with-disableusermod "
40 fi
41 if [ "$OPEROVERRIDEVERIFY" = "1" ] ; then
42 ARG="$ARG--with-operoverride-verify "
43 fi
44 if [ "$DISABLEEXTBANSTACKING" = "1" ]; then
45 ARG="$ARG--with-disable-extendedban-stacking ";
46 fi
47 fi
48 if [ "$NOSPOOF" != "1" ] ; then
49 ARG="$ARG--disable-nospoof "
50 fi
51 if [ "$CRYPTOIRCD" = "1" ] ; then
52 if test x"$SSLDIR" = "x" ; then
53 ARG="$ARG--enable-ssl "
54 else
55 ARG="$ARG--enable-ssl=$SSLDIR "
56 fi
57 fi
58 if [ "$ZIPLINKS" = "1" ] ; then
59 if test x"$ZIPLINKSDIR" = "x" ; then
60 ARG="$ARG--enable-ziplinks "
61 else
62 ARG="$ARG--enable-ziplinks=$ZIPLINKSDIR "
63 fi
64 fi
65 if [ "$REMOTEINC" = "1" ] ; then
66 ARG="$ARG--enable-libcurl=$CURLDIR "
67 fi
68 if [ "$INET6" = "1" ] ; then
69 ARG="$ARG--enable-inet6 "
70 fi
71 if [ "$PREFIXAQ" != "1" ]; then
72 ARG="$ARG--disable-prefixaq "
73 fi
74 ARG="$ARG--with-listen=$LISTEN_SIZE "
75 ARG="$ARG--with-dpath=$DPATH "
76 ARG="$ARG--with-spath=$SPATH "
77 ARG="$ARG--with-nick-history=$NICKNAMEHISTORYLENGTH "
78 ARG="$ARG--with-sendq=$MAXSENDQLENGTH "
79 ARG="$ARG--with-bufferpool=$BUFFERPOOL "
80 ARG="$ARG--with-permissions=$DEFPERM "
81 ARG="$ARG--with-fd-setsize=$MAXCONNECTIONS "
82 ARG="$ARG--enable-dynamic-linking "
83 ARG="$ARG $EXTRAPARA "
84 CONF="./configure $ARG"
85 if [ "x$INSTALLCURL" = "x1" ]; then
86 ./curlinstall || exit 1
87 fi
88 echo $CONF
89 $CONF || exit 1
90 cd "$UNREALCWD"
91 if [ "$CRYPTOIRCD" = "1" ] ; then
92 if [ ! -f server.req.pem ]; then
93 export OPENSSLPATH
94 make pem
95 cat .SICI
96 read cc
97 else
98 echo "SSL certificate already existing, no need to regenerate"
99 fi
100 fi
101 }
102
103 RUN_ADVANCED () {
104 TEST=""
105 while [ -z "$TEST" ] ; do
106 if [ "$SHOWLISTMODES" = "1" ] ; then
107 TEST="Yes"
108 else
109 TEST="No"
110 fi
111 echo ""
112 echo "Do you want to show the modes a channel has set in the /list output?"
113 echo $n "[$TEST] -> $c"
114 read cc
115 if [ -z "$cc" ] ; then
116 cc=$TEST
117 fi
118 case "$cc" in
119 [Yy]*)
120 SHOWLISTMODES="1"
121 ;;
122 [Nn]*)
123 SHOWLISTMODES=""
124 ;;
125 *)
126 echo ""
127 echo "You must enter either Yes or No"
128 TEST=""
129 ;;
130 esac
131 done
132
133 TEST=""
134 while [ -z "$TEST" ] ; do
135 if [ "$TOPICNICKISNUH" = "1" ] ; then
136 TEST="Yes"
137 else
138 TEST="No"
139 fi
140 echo ""
141 echo "Do you want the /topic command to show the nick!user@host of the person"
142 echo "who set the topic, rather than just the nickname?"
143 echo $n "[$TEST] -> $c"
144 read cc
145 if [ -z "$cc" ] ; then
146 cc=$TEST
147 fi
148 case "$cc" in
149 [Yy]*)
150 TOPICNICKISNUH="1"
151 ;;
152 [Nn]*)
153 TOPICNICKISNUH=""
154 ;;
155 *)
156 echo ""
157 echo "You must enter either Yes or No"
158 TEST=""
159 ;;
160 esac
161 done
162
163 TEST=""
164 while [ -z "$TEST" ] ; do
165 if [ "$SHUNNOTICES" = "1" ] ; then
166 TEST="Yes"
167 else
168 TEST="No"
169 fi
170 echo ""
171 echo "Should Unreal notify a user when they are no longer shunned?"
172 echo $n "[$TEST] -> $c"
173 read cc
174 if [ -z "$cc" ] ; then
175 cc=$TEST
176 fi
177 case "$cc" in
178 [Yy]*)
179 SHUNNOTICES="1"
180 ;;
181 [Nn]*)
182 SHUNNOTICES=""
183 ;;
184 *)
185 echo ""
186 echo "You must enter either Yes or No"
187 TEST=""
188 ;;
189 esac
190 done
191
192 TEST=""
193 while [ -z "$TEST" ] ; do
194 if [ "$NOOPEROVERRIDE" = "1" ] ; then
195 TEST="Yes"
196 else
197 TEST="No"
198 fi
199 echo ""
200 echo "Do you want to disable oper override?"
201 echo $n "[$TEST] -> $c"
202 read cc
203 if [ -z "$cc" ] ; then
204 cc=$TEST
205 fi
206 case "$cc" in
207 [Yy]*)
208 NOOPEROVERRIDE="1"
209 ;;
210 [Nn]*)
211 NOOPEROVERRIDE=""
212 ;;
213 *)
214 echo ""
215 echo "You must enter either Yes or No"
216 TEST=""
217 ;;
218 esac
219 done
220
221 TEST=""
222 while [ -z "$TEST" ] ; do
223 if [ "$DISABLEUSERMOD" = "1" ] ; then
224 TEST="Yes"
225 else
226 TEST="No"
227 fi
228 echo ""
229 echo "Do you want to disable /sethost, /setident, /chgname,"
230 echo "/chghost, and /chgident?"
231 echo $n "[$TEST] -> $c"
232 read cc
233 if [ -z "$cc" ] ; then
234 cc=$TEST
235 fi
236 case "$cc" in
237 [Yy]*)
238 DISABLEUSERMOD="1"
239 ;;
240 [Nn]*)
241 DISABLEUSERMOD=""
242 ;;
243 *)
244 echo ""
245 echo "You must enter either Yes or No"
246 TEST=""
247 ;;
248 esac
249 done
250
251 TEST=""
252 while [ -z "$TEST" ] ; do
253 if [ "$OPEROVERRIDEVERIFY" = "1" ] ; then
254 TEST="Yes"
255 else
256 TEST="No"
257 fi
258 echo ""
259 echo "Do you want to require opers to /invite themselves into a +s or +p channel?"
260 echo $n "[$TEST] -> $c"
261 read cc
262 if [ -z "$cc" ] ; then
263 cc=$TEST
264 fi
265 case "$cc" in
266 [Yy]*)
267 OPEROVERRIDEVERIFY="1"
268 ;;
269 [Nn]*)
270 OPEROVERRIDEVERIFY=""
271 ;;
272 *)
273 echo ""
274 echo "You must enter either Yes or No"
275 TEST=""
276 ;;
277 esac
278 done
279
280 TEST=""
281 while [ -z "$TEST" ] ; do
282 if [ "$DISABLEEXTBANSTACKING" = "1" ] ; then
283 TEST="Yes"
284 else
285 TEST="No"
286 fi
287 echo ""
288 echo "Do you want to disable extended ban stacking (~q:~c:#test, etc) support?"
289 echo $n "[$TEST] -> $c"
290 read cc
291 if [ -z "$cc" ] ; then
292 cc=$TEST
293 fi
294 case "$cc" in
295 [Yy]*)
296 DISABLEEXTBANSTACKING="1"
297 ;;
298 [Nn]*)
299 DISABLEEXTBANSTACKING="0"
300 ;;
301 *)
302 echo ""
303 echo "You must enter either Yes or No"
304 TEST=""
305 ;;
306 esac
307 done
308
309 }
310 c=""
311 n=""
312 UNREALCWD="`pwd`"
313 NOSPOOF="1"
314 DPATH="`pwd`"
315 SPATH="`pwd`/src/ircd"
316 DEFPERM="0600"
317 CRYPTOIRCD=""
318 SSLDIR=""
319 ZIPLINKS=""
320 ZIPLINKSDIR=""
321 LISTEN_SIZE="5"
322 NICKNAMEHISTORYLENGTH="2000"
323 MAXSENDQLENGTH="3000000"
324 BUFFERPOOL="18"
325 MAXCONNECTIONS="1024"
326 INET6=""
327 REMOTEINC=""
328 CURLDIR=""
329 PREFIXAQ="1"
330 SHOWLISTMODES="1"
331 TOPICNICKISNUH=""
332 SHUNNOTICES=""
333 NOOPEROVERRIDE=""
334 DISABLEUSERMOD=""
335 OPEROVERRIDEVERIFY=""
336 DISABLEEXTBANSTACKING=""
337 EXTRAPARA=""
338 if [ "`eval echo -n 'a'`" = "-n a" ] ; then
339 c="\c"
340 else
341 n="-n"
342 fi
343
344
345 #parse arguments
346 NOCACHE=""
347 NOINTRO=""
348 CLEAN=""
349 ADVANCED=""
350 while [ $# -ge 1 ] ; do
351 if [ $1 = "--help" ] ; then
352 echo "Config utility for UnrealIRCd"
353 echo "-----------------------------"
354 echo "Syntax: ./Config [options]"
355 echo "-nocache Ignore settings saved in config.settings"
356 echo "-nointro Skip intro (release notes, etc)"
357 echo "-quick Skip questions, go straight to configure"
358 echo "-advanced Include additional advanced questions"
359 echo "-clean Clean ./configure cache"
360 exit 0
361 elif [ $1 = "-nocache" ] ; then
362 NOCACHE="1"
363 elif [ $1 = "-nointro" ] ; then
364 NOINTRO="1"
365 elif [ $1 = "-quick" -o $1 = "-q" ] ; then
366 echo "running quick config"
367 if [ -f "config.settings" ] ; then
368 . ./config.settings
369 fi
370 RUN_CONFIGURE
371 cd "$UNREALCWD"
372 exit 0
373 elif [ $1 = "-clean" -o $1 = "-C" ] ; then
374 CLEAN="1"
375 elif [ $1 = "-advanced" ] ; then
376 PREADVANCED="1"
377 fi
378 shift 1
379 done
380
381 if [ -f "config.settings" -a -z "$NOCACHE" ] ; then
382 . ./config.settings
383 fi
384
385 if [ "$PREADVANCED" = "1" ] ; then
386 ADVANCED="1"
387 elif [ "$ADVANCED" = "1" ]; then
388 ADVANCED=""
389 fi
390
391 if [ -n "$CLEAN" ] ; then
392 rm -f config.cache
393 fi
394
395 clear
396
397 if [ -f ".CHANGES.NEW" -a -z "$NOINTRO" ] ; then
398 more .CHANGES.NEW
399 echo $n "[Enter to continue]"
400 read cc
401 clear
402 fi
403 if [ -f ".RELEASE.NOTES" -a -z "$NOINTRO" ] ; then
404 more .RELEASE.NOTES
405 echo $n "[Enter to continue]"
406 read cc
407 clear
408 fi
409
410 TEST=""
411 while [ -z "$TEST" ] ; do
412 if [ "$NOSPOOF" = "1" ] ; then
413 TEST="Yes"
414 else
415 TEST="No"
416 fi
417 echo ""
418 echo "Many older operating systems have an insecure TCP/IP stack"
419 echo "which may be vulnerable to IP spoofing attacks, if you run"
420 echo "an operating system that is vulnerable to such attacks"
421 echo "enable this option."
422 echo "This option also prevents blind proxies (eg: HTTP POST proxies)"
423 echo "and other blind clients from connecting (eg: protects against"
424 echo "the Firefox XPS IRC Attack)."
425 echo ""
426 echo "Do you want to enable the server anti-spoof protection?"
427 echo $n "[$TEST] -> $c"
428 read cc
429 if [ -z "$cc" ] ; then
430 cc=$TEST
431 fi
432 case "$cc" in
433 [Yy]*)
434 NOSPOOF="1"
435 ;;
436 [Nn]*)
437 NOSPOOF=""
438 ;;
439 *)
440 echo ""
441 echo "You must enter either Yes or No"
442 TEST=""
443 ;;
444 esac
445 done
446
447 TEST="$DPATH"
448 echo ""
449 echo "What directory are all the server configuration files in?"
450 echo $n "[$TEST] -> $c"
451 read cc
452 if [ -z "$cc" ] ; then
453 DPATH=$TEST
454 else
455 DPATH=`eval echo $cc` # modified
456 fi
457
458 TEST=""
459 SAVEME="$SPATH"
460 while [ -z "$TEST" ] ; do
461 TEST="$SAVEME"
462 echo ""
463 echo "What is the path to the ircd binary including the name of the binary?"
464 echo $n "[$TEST] -> $c"
465 read cc
466 if [ -z "$cc" ] ; then
467 SPATH=$TEST
468 else
469 SPATH=`eval echo $cc` # modified
470 fi
471 if [ "$SPATH" = "$DPATH" ]; then
472 echo ""
473 echo "You need to specify the path to the BINARY, not to a directory."
474 echo "The answer to this question can never be identical to the previous one."
475 echo "HINT: perhaps you want $DPATH/ircd ?"
476 TEST=""
477 fi
478 done
479
480 TEST=""
481 while [ -z "$TEST" ] ; do
482 TEST="$DEFPERM"
483 echo ""
484 echo "What should the default permissions for your configuration files be? (Set this to 0 to disable)"
485 echo "It is strongly recommended that you use 0600 to prevent unwanted reading of the file"
486 echo $n "[$TEST] -> $c"
487 read cc
488 if [ -z "$cc" ] ; then
489 DEFPERM=$TEST
490 break
491 fi
492 case "$cc" in
493 [0-9]*)
494 DEFPERM="$cc"
495 ;;
496 *)
497 echo ""
498 echo "You must enter a number"
499 TEST=""
500 ;;
501 esac
502
503 done
504
505 TEST=""
506 while [ -z "$TEST" ] ; do
507 if [ "$CRYPTOIRCD" = "1" ] ; then
508 TEST="Yes"
509 else
510 TEST="No"
511 fi
512 echo ""
513 echo "Do you want to support SSL (Secure Sockets Layer) connections?"
514 echo $n "[$TEST] -> $c"
515 read cc
516 if [ -z "$cc" ] ; then
517 cc=$TEST
518 fi
519 case "$cc" in
520 [Yy]*)
521 CRYPTOIRCD="1"
522 ;;
523 [Nn]*)
524 CRYPTOIRCD=""
525 ;;
526 *)
527 echo ""
528 echo "You must enter either Yes or No"
529 TEST=""
530 ;;
531 esac
532 done
533
534 if [ "$CRYPTOIRCD" = "1" ] ; then
535 TEST="$SSLDIR"
536 echo ""
537 echo "If you know the path to OpenSSL on your system, enter it here. If not"
538 echo "leave this blank (in most cases it will be detected automatically)."
539 echo $n "[$TEST] -> $c"
540 read cc
541 if [ -z "$cc" ] ; then
542 SSLDIR="$TEST"
543 else
544 SSLDIR=`eval echo $cc` # modified
545 fi
546 fi
547
548 TEST=""
549 while [ -z "$TEST" ] ; do
550 if [ "$INET6" = "1" ] ; then
551 TEST="Yes"
552 else
553 TEST="No"
554 fi
555 echo ""
556 echo "Do you want to enable IPv6 support?"
557 echo $n "[$TEST] -> $c"
558 read cc
559 if [ -z "$cc" ] ; then
560 cc=$TEST
561 fi
562 case "$cc" in
563 [Yy]*)
564 INET6="1"
565 ;;
566 [Nn]*)
567 INET6=""
568 ;;
569 *)
570 echo ""
571 echo "You must enter either Yes or No"
572 TEST=""
573 ;;
574 esac
575 done
576
577 TEST=""
578 while [ -z "$TEST" ] ; do
579 if [ "$ZIPLINKS" = "1" ] ; then
580 TEST="Yes"
581 else
582 TEST="No"
583 fi
584 echo ""
585 echo "Do you want to enable ziplinks support?"
586 echo $n "[$TEST] -> $c"
587 read cc
588 if [ -z "$cc" ] ; then
589 cc=$TEST
590 fi
591 case "$cc" in
592 [Yy]*)
593 ZIPLINKS="1"
594 ;;
595 [Nn]*)
596 ZIPLINKS=""
597 ;;
598 *)
599 echo ""
600 echo "You must enter either Yes or No"
601 TEST=""
602 ;;
603 esac
604 done
605
606 if [ "$ZIPLINKS" = "1" ] ; then
607 TEST="$ZIPLINKSDIR"
608 echo ""
609 echo "If you know the path to zlib on your system, enter it here. If not"
610 echo "leave this blank"
611 echo $n "[$TEST] -> $c"
612 read cc
613 if [ -z "$cc" ] ; then
614 ZIPLINKSDIR="$TEST"
615 else
616 ZIPLINKSDIR=`eval echo $cc` # modified
617 fi
618 fi
619
620 TEST=""
621 while [ -z "$TEST" ] ; do
622 if [ "$REMOTEINC" = "1" ] ; then
623 TEST="Yes"
624 else
625 TEST="No"
626 fi
627 echo ""
628 echo "Do you want to enable remote includes?"
629 echo "This allows stuff like this in your configuration file:"
630 echo "include \"http://www.somesite.org/files/opers.conf\";"
631 echo $n "[$TEST] -> $c"
632 read cc
633 if [ -z "$cc" ] ; then
634 cc=$TEST
635 fi
636 case "$cc" in
637 [Yy]*)
638 REMOTEINC="1"
639 ;;
640 [Nn]*)
641 REMOTEINC=""
642 CURLDIR=""
643 ;;
644 *)
645 echo ""
646 echo "You must enter either Yes or No"
647 TEST=""
648 ;;
649 esac
650 done
651
652 if [ "$REMOTEINC" = "1" ] ; then
653 if [ ! -d "$CURLDIR" ]; then
654 # Reset any previous CURLDIR if it doesn't exist (anymore)
655 CURLDIR=""
656 fi
657
658
659 INSTALLCURL="0"
660 if [ "x$CURLDIR" = "x" ]; then
661 # There is no reason to support this:
662 if [ -d "/usr/local/include/curl" ]; then
663 CURLDIR="/usr/local"
664 fi
665 # Zeroeth, let's act SANE
666 if [ -d "/usr/include/curl" ]; then
667 CURLDIR="/usr"
668 fi
669 # First, let's make shell admins happy...
670 if [ -d "/usr/share/unreal-curl" ]; then
671 CURLDIR="/usr/share/unreal-curl"
672 fi
673
674 GOTASYNC=0
675 if [ "x$CURLDIR" != "x" ]; then
676 # Check if it's of any use: a curl without async dns (cares) hangs the entire ircd..
677 # normally this is done in ./configure but now we're forced to do it also here..
678 if "$CURLDIR"/bin/curl-config --features | grep -q -e AsynchDNS; then
679 GOTASYNC="1"
680 fi
681 if [ "$GOTASYNC" != "1" ]; then
682 PREVCURLDIR="$CURLDIR"
683 CURLDIR=""
684 fi
685 fi
686
687 # Second, use the local curl if it exists (overrides above)
688 if [ -d "$HOME/curl" ]; then
689 CURLDIR="$HOME/curl"
690
691 # Check if it's recent enough...
692 # But first, check if curl-config can be trusted at all: it depends
693 # on 'bc' for some reason and not all systems have that installed!
694 echo "1+1"|bc 1>/dev/null 2>&1
695 if [ "$?" = 0 ]; then
696 "$CURLDIR"/bin/curl-config --checkfor 7.21.0
697 if [ "$?" != 0 ]; then
698 echo ""
699 echo "Your self-compiled CURL library in $CURLDIR is slightly outdated."
700 echo "This probably means you had the library from a previous installation of UnrealIRCd."
701 echo "Because previous versions may be linked to a previous version to c-ares which"
702 echo "were not ABI compatible it is highly recommended to remove the version"
703 echo "and recompile it. We now have an automatic downloader and installer to compile"
704 echo "and install curl for you (in $CURLDIR). You can choose to do so in the question"
705 echo "after this one."
706 TEST=""
707 while [ -z "$TEST" ] ; do
708 TEST="Yes"
709 echo "Shall I rename $CURLDIR to $CURLDIR.old so it can be rebuild later on?"
710 echo $n "[$TEST] -> $c"
711 read cc
712 if [ -z "$cc" ] ; then
713 cc=$TEST
714 fi
715 case "$cc" in
716 [Yy]*)
717 rm -rf "$CURLDIR".old
718 mv "$CURLDIR" "$CURLDIR".old
719 CURLDIR=""
720 GOTASYNC=1
721 # wow the GOTASYNC=1 is hackish, but we need to prevent the error from later on
722 ;;
723 [Nn]*)
724 echo "Uh, ok... I hope you know what you are doing..."
725 echo ""
726 ;;
727 *)
728 echo ""
729 echo "You must enter either Yes or No"
730 TEST=""
731 ;;
732 esac
733 done
734 fi
735 fi
736 fi
737
738 # Need to output it here, as the HOME check from above may cause this to be no longer relevant.
739 if [ "x$CURLDIR" = "x" -a "$GOTASYNC" != "1" ]; then
740 echo "Curl library was found in $PREVCURLDIR, but it does not support Asynchronous DNS (not compiled with c-ares)"
741 echo "so it's of no use to us."
742 fi
743
744 fi
745 if [ "x$CURLDIR" = "x" ]; then
746 # Still empty?
747 TEST=""
748 while [ -z "$TEST" ] ; do
749 TEST="Yes"
750 echo ""
751 echo "Do you want me to automatically download and install curl for you?"
752 echo "(will install in $HOME/curl)"
753 echo $n "[$TEST] -> $c"
754 read cc
755 if [ -z "$cc" ] ; then
756 cc=$TEST
757 fi
758 case "$cc" in
759 [Yy]*)
760 INSTALLCURL="1"
761 CURLDIR="$HOME/curl"
762 ;;
763 [Nn]*)
764 INSTALLCURL="0"
765 ;;
766 *)
767 echo ""
768 echo "You must enter either Yes or No"
769 TEST=""
770 ;;
771 esac
772 done
773 fi
774
775 if [ "$INSTALLCURL" != "1" ]; then
776 TEST=""
777 while [ -z "$TEST" ] ; do
778 TEST="$CURLDIR"
779 echo ""
780 echo "Specify the directory you installed libcurl to"
781 echo $n "[$TEST] -> $c"
782 read cc
783 if [ -z "$cc" ] ; then
784 cc=$TEST
785 else
786 TEST=$cc
787 CURLDIR=`eval echo $cc` # modified
788 fi
789 done
790 fi
791 fi
792
793
794 TEST=""
795 while [ -z "$TEST" ] ; do
796 if [ "$PREFIXAQ" = "1" ] ; then
797 TEST="Yes"
798 else
799 TEST="No"
800 fi
801 echo ""
802 echo "Do you want to enable prefixes for chanadmin and chanowner?"
803 echo "This will give +a the & prefix and ~ for +q (just like +o is @)"
804 echo "Supported by the major clients (mIRC, xchat, epic, eggdrop, Klient,"
805 echo "PJIRC, irssi, CGI:IRC, etc.)"
806 echo "This feature should be enabled/disabled network-wide."
807 echo $n "[$TEST] -> $c"
808 read cc
809 if [ -z "$cc" ] ; then
810 cc=$TEST
811 fi
812 case "$cc" in
813 [Yy]*)
814 PREFIXAQ="1"
815 ;;
816 [Nn]*)
817 PREFIXAQ=""
818 ;;
819 *)
820 echo ""
821 echo "You must enter either Yes or No"
822 TEST=""
823 ;;
824 esac
825 done
826
827
828 TEST=""
829 while [ -z "$TEST" ] ; do
830 TEST="$LISTEN_SIZE"
831 echo ""
832 echo "What listen() backlog value do you wish to use? Some older servers"
833 echo "have problems with more than 5, others work fine with many more."
834 echo $n "[$TEST] -> $c"
835 read cc
836 if [ -z "$cc" ] ; then
837 LISTEN_SIZE=$TEST
838 break
839 fi
840 case "$cc" in
841 [1-9]*)
842 LISTEN_SIZE="$cc"
843 ;;
844 *)
845 echo ""
846 echo "You must enter a number"
847 TEST=""
848 ;;
849 esac
850 done
851
852 TEST=""
853 while [ -z "$TEST" ] ; do
854 TEST="$NICKNAMEHISTORYLENGTH"
855 echo ""
856 echo "How far back do you want to keep the nickname history?"
857 echo $n "[$TEST] -> $c"
858 read cc
859 if [ -z "$cc" ] ; then
860 NICKNAMEHISTORYLENGTH=$TEST
861 break
862 fi
863 case "$cc" in
864 [1-9]*)
865 NICKNAMEHISTORYLENGTH="$cc"
866 ;;
867 *)
868 echo ""
869 echo "You must enter a number"
870 TEST=""
871 ;;
872 esac
873 done
874
875 TEST=""
876 while [ -z "$TEST" ] ; do
877 TEST="$MAXSENDQLENGTH"
878 echo ""
879 echo "What is the maximum sendq length you wish to have?"
880 echo $n "[$TEST] -> $c"
881 read cc
882 if [ -z "$cc" ] ; then
883 MAXSENDQLENGTH=$TEST
884 break
885 fi
886 case "$cc" in
887 [1-9][0-9][0-9][0-9]*)
888 MAXSENDQLENGTH="$cc"
889 ;;
890 *)
891 echo ""
892 echo "You must enter a number greater than or equal to 1000"
893 TEST=""
894 ;;
895 esac
896 done
897
898 TEST=""
899 while [ -z "$TEST" ] ; do
900 TEST="$BUFFERPOOL"
901 echo ""
902 echo "How many buffer pools would you like?"
903 echo "This number will be multiplied by MAXSENDQLENGTH."
904 echo $n "[$TEST] -> $c"
905 read cc
906 if [ -z "$cc" ] ; then
907 BUFFERPOOL=$TEST
908 break
909 fi
910 case "$cc" in
911 [1-9]*)
912 BUFFERPOOL="$cc"
913 ;;
914 *)
915 echo ""
916 echo "You must enter a number"
917 TEST=""
918 ;;
919 esac
920
921 done
922
923 echo ""
924 TEST=""
925 while [ -z "$TEST" ] ; do
926 TEST="$MAXCONNECTIONS"
927 echo ""
928 echo "How many file descriptors (or sockets) can the IRCd use?"
929 echo $n "[$TEST] -> $c"
930 read cc
931 if [ -z "$cc" ] ; then
932 MAXCONNECTIONS=$TEST
933 break
934 fi
935 case "$cc" in
936 [1-9][0-9][0-9]*)
937 MAXCONNECTIONS="$cc"
938 ;;
939 *)
940 echo ""
941 echo "You must to enter a number greater than or equal to 100"
942 TEST=""
943 ;;
944 esac
945 done
946 if [ -n "$ADVANCED" ] ; then
947 RUN_ADVANCED
948 fi
949
950 TEST="$EXTRAPARA"
951 echo ""
952 echo "Would you like to pass any custom parameters to configure?"
953 echo "See \`./configure --help' and write them here:"
954 echo $n "[$TEST] -> $c"
955 read EXTRAPARA
956 if [ -z "$EXTRAPARA" ]; then
957 EXTRAPARA="$TEST"
958 fi
959
960 rm -f config.settings
961 cat > config.settings << __EOF__
962 #
963 NOSPOOF="$NOSPOOF"
964 DPATH="$DPATH"
965 SPATH="$SPATH"
966 INET6="$INET6"
967 PREFIXAQ="$PREFIXAQ"
968 LISTEN_SIZE="$LISTEN_SIZE"
969 MAXSENDQLENGTH="$MAXSENDQLENGTH"
970 BUFFERPOOL="$BUFFERPOOL"
971 MAXCONNECTIONS="$MAXCONNECTIONS"
972 NICKNAMEHISTORYLENGTH="$NICKNAMEHISTORYLENGTH"
973 DEFPERM="$DEFPERM"
974 CRYPTOIRCD="$CRYPTOIRCD"
975 SSLDIR="$SSLDIR"
976 ZIPLINKS="$ZIPLINKS"
977 ZIPLINKSDIR="$ZIPLINKSDIR"
978 REMOTEINC="$REMOTEINC"
979 CURLDIR="$CURLDIR"
980 SHOWLISTMODES="$SHOWLISTMODES"
981 TOPICNICKISNUH="$TOPICNICKISNUH"
982 SHUNNOTICES="$SHUNNOTICES"
983 NOOPEROVERRIDE="$NOOPEROVERRIDE"
984 DISABLEUSERMOD="$DISABLEUSERMOD"
985 OPEROVERRIDEVERIFY="$OPEROVERRIDEVERIFY"
986 DISABLEEXTBANSTACKING="$DISABLEEXTBANSTACKING"
987 EXTRAPARA="$EXTRAPARA"
988 ADVANCED="$ADVANCED"
989 __EOF__
990 RUN_CONFIGURE
991 cd "$UNREALCWD"
992 cat << __EOF__
993
994 _______________________________________________________________________
995 | |
996 | UnrealIRCd Compile-Time Config |
997 |_______________________________________________________________________|
998 |_______________________________________________________________________|
999 | |
1000 | Now all you have to do is type 'make' and let it compile. When that's |
1001 | done, you will receive other instructions on what to do next. |
1002 | |
1003 |_______________________________________________________________________|
1004 |_______________________________________________________________________|
1005 | - The UnrealIRCd Team - |
1006 | |
1007 | * Syzop syzop@unrealircd.com |
1008 |_______________________________________________________________________|
1009 __EOF__
1010