2 # InspIRCd Configuration Creator
4 # Copyright 2003 The ChatSpike Development Team
5 # <Craig@chatspike.net>
6 # <brain@chatspike.net>
10 ########################################################
12 echo "Configuring Default Values"
15 if [ "$PERL" = "" ] ; then
16 echo "You require perl to run this program."
21 SERV_NAME="my.server.name"
22 SERV_DESC="My InspIRCd Server"
27 ADMIN_MAIL="My@E-Mail.Address"
30 RESTART_PASS="RestartNow"
34 CONNECT_PASS="ServerPass"
36 VHOST_DOMAIN="inspircd.org"
43 FILES_MOTD="$ME/conf/inspire.motd"
44 FILES_RULE="$ME/conf/inspire.rules"
57 if [ "`eval echo -n 'a'`" = "-n a" ] ; then
64 echo -e "'\033[1;33m####\033[0;37m:'\033[1;33m##\033[0;37m::: \033[1;33m##\033[0;37m::'\033[1;33m######\033[0;37m::'\033[1;33m########\033[0;37m::'\033[1;33m####\033[0;37m:'\033[1;33m########\033[0;37m:::'\033[1;33m######\033[0;37m::'\033[1;33m########\033[0;37m::"
65 echo -e ". \033[1;33m##\033[0;37m:: \033[1;33m###\033[0;37m:: \033[1;33m##\033[0;37m:'\033[1;33m##\033[0;37m... \033[1;33m##\033[0;37m: \033[1;33m##\033[0;37m.... \033[1;33m##\033[0;37m:. \033[1;33m##\033[0;37m:: \033[1;33m##\033[0;37m.... \033[1;33m##\033[0;37m:'\033[1;33m##\033[0;37m... \033[1;33m##\033[0;37m: \033[1;33m##\033[0;37m.... \033[1;33m##\033[0;37m:"
66 echo -e ": \033[1;33m##\033[0;37m:: \033[1;33m####\033[0;37m: \033[1;33m##\033[0;37m: \033[1;33m##\033[0;37m:::..:: \033[1;33m##\033[0;37m:::: \033[1;33m##\033[0;37m:: \033[1;33m##\033[0;37m:: \033[1;33m##\033[0;37m:::: \033[1;33m##\033[0;37m: \033[1;33m##\033[0;37m:::..:: \033[1;33m##\033[0;37m:::: \033[1;33m##\033[0;37m:"
67 echo -e ": \033[1;33m##\033[0;37m:: \033[1;33m##\033[0;37m \033[1;33m##\033[0;37m \033[1;33m##\033[0;37m:. \033[1;33m######\033[0;37m:: \033[1;33m########\033[0;37m::: \033[1;33m##\033[0;37m:: \033[1;33m########\033[0;37m:: \033[1;33m##\033[0;37m::::::: \033[1;33m##\033[0;37m:::: \033[1;33m##\033[0;37m:"
68 echo -e ": \033[1;33m##\033[0;37m:: \033[1;33m##\033[0;37m. \033[1;33m####\033[0;37m::..... \033[1;33m##\033[0;37m: \033[1;33m##\033[0;37m.....:::: \033[1;33m##\033[0;37m:: \033[1;33m##\033[0;37m.. \033[1;33m##\033[0;37m::: \033[1;33m##\033[0;37m::::::: \033[1;33m##\033[0;37m:::: \033[1;33m##\033[0;37m:"
69 echo -e ": \033[1;33m##\033[0;37m:: \033[1;33m##\033[0;37m:. \033[1;33m###\033[0;37m:'\033[1;33m##\033[0;37m::: \033[1;33m##\033[0;37m: \033[1;33m##\033[0;37m::::::::: \033[1;33m##\033[0;37m:: \033[1;33m##\033[0;37m::. \033[1;33m##\033[0;37m:: \033[1;33m##\033[0;37m::: \033[1;33m##\033[0;37m: \033[1;33m##\033[0;37m:::: \033[1;33m##\033[0;37m:"
70 echo -e "'\033[1;33m####\033[0;37m: \033[1;33m##\033[0;37m::. \033[1;33m##\033[0;37m:. \033[1;33m######\033[0;37m:: \033[1;33m##\033[0;37m::::::::'\033[1;33m####\033[0;37m: \033[1;33m##\033[0;37m:::. \033[1;33m##\033[0;37m:. \033[1;33m######\033[0;37m:: \033[1;33m########\033[0;37m::"
71 echo -e "\033[0;37m\033[0;37m....::..::::..:::......:::..:::::::::....::..:::::..:::......:::........:::"
73 echo -e "\033[1;37mWelcome to the inspircd.conf file maker!!"
75 echo -e "*** Although with most values, hitting \033[1;37m<RETURN>\033[0;37m will use the default, ***"
76 echo "*** others are not like this. Where possible, Please fill in all the ***"
77 echo "*** values manually. Once complete, you *WILL* be required to edit ***"
78 echo "*** the created file manually, to ensure values are correct. Enjoy! ***"
79 echo -e "*** Between the [\033[1;32mBRACKETS\033[0;37m] will be default / example values to help ***"
84 echo "The first Part of this is the server Configuration. Here we will take"
85 echo "Details, Such as the servers name, Description, and The administrators"
86 echo "information. Once complete, the Screen will clear, and stage 2 will begin"
89 echo "Enter Servers Name"
90 echo -e $n "[\033[1;32m$SERV_NAME\033[0;37m] -> $c"
98 echo "Enter Server Description"
99 echo -e $n "[\033[1;32m$SERV_DESC\033[0;37m] -> $c"
107 echo "Enter Your Network Name"
108 echo -e $n "[\033[1;32m$SERV_NET\033[0;37m] -> $c"
119 echo "Enter Administrators Full Name"
120 echo -e $n "[\033[1;32m$ADMIN_NAME\033[0;37m] -> $c"
128 echo "Enter Administrators NickName"
129 echo -e $n "[\033[1;32m$ADMIN_NICK\033[0;37m] -> $c"
137 echo "Enter Administrators Email Address"
138 echo -e $n "[\033[1;32m$ADMIN_MAIL\033[0;37m] -> $c"
145 echo "Section Complete, Writing Config File Header."
148 # Config file header Here!
151 echo "########################################################################" >> makeconf.temp
152 echo "# #" >> makeconf.temp
153 echo "# --------------------------- #" >> makeconf.temp
154 echo "# InspIRCd Configuration File #" >> makeconf.temp
155 echo "# --------------------------- #" >> makeconf.temp
156 echo "# #" >> makeconf.temp
157 echo "##################################||####################################" >> makeconf.temp
158 echo " #||#" >> makeconf.temp
159 echo "##################################||####################################" >> makeconf.temp
160 echo "# #" >> makeconf.temp
161 echo "# This is an example of the config file for InspIRCd. #" >> makeconf.temp
162 echo "# Change the options to suit your network #" >> makeconf.temp
163 echo "# #" >> makeconf.temp
164 echo "# Written by : makeconf (Craig@inspircd.org) #" >> makeconf.temp
165 echo "# #" >> makeconf.temp
166 echo "########################################################################" >> makeconf.temp
167 echo "" >> makeconf.temp
168 echo "" >> makeconf.temp
171 # Complete, server tag now
174 echo "#-#-#-#-#-#-#-#-#-#-#-#- SERVER DESCRIPTION -#-#-#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
175 echo "<server name=\"$SERV_NAME\"" >> makeconf.temp
176 echo " description=\"$SERV_DESC\"" >> makeconf.temp
177 echo " network=\"$SERV_NET\">" >> makeconf.temp
178 echo "" >> makeconf.temp
179 echo "" >> makeconf.temp
185 echo "#-#-#-#-#-#-#-#-#-#-#-#- ADMIN INFORMATION -#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
186 echo "<admin name=\"$ADMIN_NAME\"" >> makeconf.temp
187 echo " nick=\"$ADMIN_NICK\"" >> makeconf.temp
188 echo " email=\"$ADMIN_MAIL\">" >> makeconf.temp
189 echo "" >> makeconf.temp
190 echo "" >> makeconf.temp
197 echo "Congratulations, you have successfully Configured your Server and Administrator"
198 echo "Information Correctly. Proceeding to Servers Port Configuration."
203 echo "Now its time to specify which IP and ports you wish to run the IRCd on."
204 echo "When asked please enter the IP Address, and ports. As a note, you may"
205 echo "Leave the IP Address blank to bind to all avaliable interfaces."
207 echo "To end, either type \"done\" as the IP, or leave the Port Blank."
211 # Write Config Header..
214 echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- RTFM LINE -#-#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
215 echo "# #" >> makeconf.temp
216 echo "# Just remove this... Its here to make you read through this file #" >> makeconf.temp
217 echo "# properly after running \"makeconf\" #" >> makeconf.temp
218 echo "" >> makeconf.temp
219 echo "<die value=\"tut tut, someone didnt check their config file properly\">" >> makeconf.temp
220 echo "" >> makeconf.temp
221 echo "" >> makeconf.temp
224 echo "#-#-#-#-#-#-#-#-#-#-#-#- PORT CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
227 # Ok, done.. Proceed :)
233 while [ $ok -eq 0 ] ; do
237 if [ "$cc" == "done" ] ; then
242 if [ "$ok" != "1" ] ; then
243 echo -e "Ports Already Bound: \033[1;32m$BOUND_PORT\033[0;37m"
244 echo "Enter Port to Bind to $BIND_IP"
247 if [ ! "$cc" ] ; then
251 BOUND_PORT="$BOUND_PORT $cc"
252 echo "<bind address=\"$BIND_IP\" port=\"$cc\">" >> makeconf.temp
257 if [ "$default" == "0" ] ; then
258 echo "<bind address=\"\" port=\"6667\">" >> makeconf.temp
262 # OoOok.. Finishing section
265 echo "" >> makeconf.temp
266 echo "" >> makeconf.temp
269 # Finished, Port Configuration Complete :D
274 if [ "$default" == "0" ] ; then
275 echo "<bind address=\"\" port=\"6667\">" >> makeconf.temp
279 echo "See? that wasnt so hard, The next bit is easier, just more important."
283 echo "I now need you to specify Passwords which will shut down, and restart"
284 echo "your server, these are _IMPORTANT_ and i will not allow you to use the"
285 echo "default passwords, you must use your own."
287 while [ $ok -eq 0 ] ; do
289 echo "Enter the password to Kill the IRCd"
290 echo -e $n "[\033[1;32m$DIE_PASS\033[0;37m] -> $c"
292 if [ ! "$cc" ] ; then
294 echo "You _MUST_ specify your Own Password, try again."
304 while [ $ok -eq 0 ] ; do
306 echo "Now Enter the Password you will use to Restart."
307 echo -e $n "[\033[1;32m$RESTART_PASS\033[0;37m] -> $c"
309 if [ ! "$cc" ] ; then
311 echo "You _MUST_ specify your Own Password, try again."
319 echo "Enter the Pause Between Issuing a DIE/RESTART request to the IRCd Actually doing it [in Seconds]"
320 echo -e $n "[\033[1;32m$DIE_WAIT\033[0;37m] -> $c"
327 # Now Write the config.. What phun
330 echo "#-#-#-#-#-#-#-#-#-#- DIE/RESTART CONFIGURATION -#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
331 echo "<power diepass=\"$DIE_PASS\"" >> makeconf.temp
332 echo " restartpass=\"$RESTART_PASS\"" >> makeconf.temp
333 echo " pause=\"$DIE_WAIT\">" >> makeconf.temp
334 echo "" >> makeconf.temp
335 echo "" >> makeconf.temp
338 # <Insert done comment here>
341 echo "ok, seeing as we managed that, we have to Arrange a list of people allowed to connect :)"
345 echo "This section allows you to Specify who is allowed Access to the IRCd. IP Addresses only Please"
346 echo "Although you can choose to use wildcards if you please. The default is * with no password."
347 echo "Type \"done\" at the IP Address, or leave it blank to finish, you do _NOT_ have to specify"
353 # Just another Friendly Header :p
356 echo "#-#-#-#-#-#-#-#-#-#- CONNECTIONS CONFIGURATION -#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
361 while [ $ok -eq 0 ] ; do
363 echo "Enter The IP Address"
364 echo -e $n "[\033[1;32m$CONNECT_ALLOW\033[0;37m] -> $c"
366 if [ "$cc" == "done" ] ; then
368 elif [ ! "$cc" ] ; then
373 if [ "$ok" != "1" ] ; then
374 echo "Enter Password [If Applicable]"
377 if [ ! "$cc" ] ; then
379 echo "<connect allow=\"$ALLOW_IP\">" >> makeconf.temp
381 echo "<connect allow=\"$ALLOW_IP\" password=\"$cc\">" >> makeconf.temp
385 if [ "$default" == "0" ] ; then
386 echo "<connect allow=\"*\">" >> makeconf.temp
390 # Insert Line Break before deny
393 echo "" >> makeconf.temp
400 if [ "$default" == "0" ] ; then
401 echo "No allow lines Specified, using defaults."
405 echo "Now For the denies.. These will prevent users accessing the server, once again,"
406 echo "entering nothing, or \"done\" will complete the cycle, and allow you to continue"
408 echo "Enter the IP Address"
410 while [ $ok -eq 0 ] ; do
411 echo -e $n "[\033[1;32m$CONNECT_ALLOW\033[0;37m] -> $c"
413 if [ "$cc" == "done" ] ; then
415 elif [ ! "$cc" ] ; then
418 echo "<connect deny=\"$cc\">" >> makeconf.temp
426 echo "" >> makeconf.temp
427 echo "" >> makeconf.temp
430 echo "Ok, now thats finished, we come to oper Classes And Compositions. Due to the Nature"
431 echo "of this, this Script will set the default tags, if you wish to change them, you will"
432 echo "have to edit the Finished config manually, in most cases they shouldnt be changed."
436 echo "Before we do that thou, i need to ask for the Domain name of your server, for example,"
437 echo "chatspike.net. This will be used To generate your vhosts."
438 echo -e $n "[\033[1;32m$VHOST_DOMAIN\033[0;37m] -> $c"
444 echo "#-#-#-#-#-#-#-#-#-#-#-#- CLASS CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
445 echo "<class name=\"Shutdown\" commands=\"DIE RESTART REHASH\">" >> makeconf.temp
446 echo "<class name=\"ServerLink\" commands=\"CONNECT SQUIT\">" >> makeconf.temp
447 echo "<class name=\"BanControl\" commands=\"KILL GLINE KLINE ZLINE QLINE SHUN\">" >> makeconf.temp
448 echo "<class name=\"OperChat\" commands=\"WALLOPS CHATOPS\">" >> makeconf.temp
449 echo "<class name=\"HostCloak\" commands=\"SETHOST SETIDENT SETNAME\">" >> makeconf.temp
450 echo "" >> makeconf.temp
451 echo "" >> makeconf.temp
452 echo "#-#-#-#-#-#-#-#-#-#-#-#- OPERATOR COMPOSITION -#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
453 echo "<type name=\"NetAdmin\" classes=\"OperChat BanControl HostCloak Shutdown ServerLink\" host=\"netadmin.$VHOST_DOMAIN\">" >> makeconf.temp
454 echo "<type name=\"GlobalOp\" classes=\"OperChat BanControl HostCloak ServerLink\" host=\"ircop.$VHOST_DOMAIN\">" >> makeconf.temp
455 echo "<type name=\"LocalOp\" classes=\"OperChat BanControl HostCloak\" host=\"local.$VHOST_DOMAIN\">" >> makeconf.temp
456 echo "<type name=\"Helper\" classes=\"HostCloak\" host=\"helper.$VHOST_DOMAIN\">" >> makeconf.temp
457 echo "" >> makeconf.temp
458 echo "" >> makeconf.temp
460 echo "Yay, now comes the fun Part, time to specify Opers."
464 echo "Ok, heres the deal, gonna ask you four questions, all require answering. They are as follows:"
465 echo "1) The Opers Login, This part will replace <login> in /oper <login> <password>"
466 echo "2) The Opers Password, This will replace <password> in /oper <login> <password>"
467 echo "3) The Opers Host, The oper must be connecting from this host for /oper to work [user@host]"
468 echo "4) The Opers Class, currently all avaliable are: \"NetAdmin\", \"GlobalOp\", \"LocalOp\" and \"Helper\""
470 echo "You may re-configure the classes later, and if you enter nothing for part one, we will proceed to the next step"
474 # Stolen another few lines >;)
477 echo "#-#-#-#-#-#-#-#-#-#-#- OPERATOR CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
484 while [ $ok -eq 0 ] ; do
485 echo "Enter the opers login name"
486 echo -e $n "[\033[1;32m$OPER_NICK\033[0;37m] -> $c"
488 if [ ! "$cc" ] ; then
493 if [ $ok -eq 0 ] ; then
495 while [ $ok2 -eq 0 ] ; do
496 echo "Enter the Opers Password"
497 echo -e $n "[\033[1;32m$OPER_PASS\033[0;37m] -> $c"
499 if [ ! "$cc" ] ; then
500 echo "You _MUST_ Enter a password"
506 echo "Enter Opers Host [Format User@host]"
507 echo -e $n "[\033[1;32m$OPER_HOST\033[0;37m] -> $c"
509 if [ ! "$cc" ] ; then
514 echo "Enter Opers Type [Avaliable: NetAdmin, GlobalOp, LocalOp and Helper] CHOOSE ONLY ONE"
515 echo -e $n "[\033[1;32m$OPER_TYPE\033[0;37m] -> $c"
517 if [ ! "$cc" ] ; then
522 echo "Coming for a re-run"
524 echo "<oper name=\"$OPER_LOGIN\"" >> makeconf.temp
525 echo " password=\"$OPER_PASS\"" >> makeconf.temp
526 echo " host=\"$OPER_HOST\"" >> makeconf.temp
527 echo " type=\"$OPER_TYPE\">" >> makeconf.temp
532 echo "" >> makeconf.temp
533 echo "" >> makeconf.temp
535 echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- RTFM LINE -#-#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
536 echo "# You should know what to do here.. if not.. RTFM!! muahahahahaha #" >> makeconf.temp
537 echo "" >> makeconf.temp
538 echo "<die value=\"And god came down from the heavens and smote down the noob.\">" >> makeconf.temp
539 echo "" >> makeconf.temp
540 echo "" >> makeconf.temp
544 echo "Congratulations, Your Opers are configured!"
547 echo "Right, i have guessed where you Message of the Day and Rules Files will be."
548 echo "If these are correct, just hit return, else, type in the correct Location."
550 echo "First The Message of the day."
551 echo -e $n "[\033[1;32m$FILES_MOTD\033[0;37m] -> $c"
557 echo "Right, now the Rules file."
558 echo -e $n "[\033[1;32m$FILES_RULE\033[0;37m] -> $c"
564 echo "#-#-#-#-#-#-#-#-#-#- MISCELLANEOUS CONFIGURATION -#-#-#-#-#-#-#-#-#-" >> makeconf.temp
565 echo "<files motd=\"$FILES_MOTD\"" >> makeconf.temp
566 echo " rules=\"$FILES_RULE\">" >> makeconf.temp
567 echo "" >> makeconf.temp
568 echo "" >> makeconf.temp
573 echo "Enter the Names of the modules you wish to load, one at a time, below."
574 echo "Type in the name, hit return, type in another one, etc. Once complete, just hit return to end."
576 echo "The Following Modules are avaliable:"
579 for module in src/modules/*.cpp ; do
580 mod=`perl -e '$a='$module';print substr($a,0,length($a)-3)'`
581 dmod=`perl -e '$a="'$mod.so'";while (length($a)<30) { $a = "$a ";}; print $a;'`
582 desc=`perl -e 'open (F, "<'$module'");local($/)=undef;$blah=<F>;$blah=~/\$ModDesc(.*)\*\//;print substr($1,13,length($1));close F;'`
583 echo -e "\033[1;32m$dmod\033[0;37m$desc"
591 echo "#-#-#-#-#-#-#-#-#-#-#-#-#- MODULE OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
597 while [ "$ok" -eq 0 ] ; do
601 echo "<module name=\"$cc\">" >> makeconf.temp
607 echo "" >> makeconf.temp
608 echo "" >> makeconf.temp
612 echo "This is it, The final set of Variables.. Then your config is complete."
615 echo "These are just a few tiny Simple things, well explained.. BEGIN!"
617 echo "Quit Prefix, This comes before all users Quits, it can be what you like."
618 echo -e $n "[\033[1;32m$OP_PREFIX\033[0;37m] -> $c"
625 echo "Log level [debug, verbose, default, sparse, none]"
626 echo -e $n "[\033[1;32m$OP_DEBUG\033[0;37m] -> $c"
633 echo "Enable Halfops [Channel Mode +h], [yes/no]"
634 echo -e $n "[\033[1;32m$OP_HALFY\033[0;37m] -> $c"
641 echo "Enable User Channel Protection [Channel Mode +a] [yes/no]"
642 echo -e $n "[\033[1;32m$OP_PROTE\033[0;37m] -> $c"
649 echo "Enable Channel Founder? [Channel Mode +q] [yes/no]"
650 echo -e $n "[\033[1;32m$OP_FOUND\033[0;37m] -> $c"
656 echo "#-#-#-#-#-#-#-#-#-#-#-#-#- SERVER OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
657 echo "<options prefixquit=\"$OP_PREFIX\"" >> makeconf.temp
658 echo " debug=\"$OP_DEBUG\"" >> makeconf.temp
659 echo " allowhalfop=\"$OP_HALFY\"" >> makeconf.temp
660 echo " allowprotect=\"$OP_PROTE\"" >> makeconf.temp
661 echo " allowfounder=\"$OP_FOUND\">" >> makeconf.temp
662 echo "" >> makeconf.temp
663 echo "" >> makeconf.temp
666 DIR=$ME/conf/inspircd.conf
668 echo "LAST QUESTION!!"
669 echo "Where am i gonna be placed? [eg. $DIR]"
670 echo -e $n "[\033[1;32m$DIR\033[0;37m] -> $c"
676 echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- YAWN -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
677 echo "# #" >> makeconf.temp
678 echo "# You should already know what to do here :) #" >> makeconf.temp
679 echo "" >> makeconf.temp
680 echo "<die value=\"All l33t noobs must edit their configs.\">" >> makeconf.temp
681 echo "" >> makeconf.temp
682 echo "" >> makeconf.temp
683 echo "#########################################################################" >> makeconf.temp
684 echo "# #" >> makeconf.temp
685 echo "# -InspIRCd Development and Coding Team- #" >> makeconf.temp
686 echo "# www.inspircd.org #" >> makeconf.temp
687 echo "# #" >> makeconf.temp
688 echo "#########################################################################" >> makeconf.temp
693 mv makeconf.temp $DIR