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 SERV_NAME="my.server.name"
16 SERV_DESC="My InspIRCd Server"
21 ADMIN_MAIL="My@E-Mail.Address"
24 RESTART_PASS="RestartNow"
28 CONNECT_PASS="ServerPass"
30 VHOST_DOMAIN="inspircd.org"
37 FILES_MOTD="$ME/conf/inspire.motd"
38 FILES_RULE="$ME/conf/inspire.rules"
51 if [ "`eval echo -n 'a'`" = "-n a" ] ; then
58 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::"
59 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:"
60 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:"
61 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:"
62 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:"
63 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:"
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:: \033[1;33m########\033[0;37m::"
65 echo -e "\033[0;37m\033[0;37m....::..::::..:::......:::..:::::::::....::..:::::..:::......:::........:::"
67 echo -e "\033[1;37mWelcome to the inspircd.conf file maker!!"
69 echo -e "*** Although with most values, hitting \033[1;37m<RETURN>\033[0;37m will use the default, ***"
70 echo "*** others are not like this. Where possible, Please fill in all the ***"
71 echo "*** values manually. Once complete, you *WILL* be required to edit ***"
72 echo "*** the created file manually, to ensure values are correct. Enjoy! ***"
73 echo -e "*** Between the [\033[1;32mBRACKETS\033[0;37m] will be default / example values to help ***"
78 echo "The first Part of this is the server Configuration. Here we will take"
79 echo "Details, Such as the servers name, Description, and The administrators"
80 echo "information. Once complete, the Screen will clear, and stage 2 will begin"
83 echo "Enter Servers Name"
84 echo -e $n "[\033[1;32m$SERV_NAME\033[0;37m] -> $c"
92 echo "Enter Server Description"
93 echo -e $n "[\033[1;32m$SERV_DESC\033[0;37m] -> $c"
101 echo "Enter Your Network Name"
102 echo -e $n "[\033[1;32m$SERV_NET\033[0;37m] -> $c"
113 echo "Enter Administrators Full Name"
114 echo -e $n "[\033[1;32m$ADMIN_NAME\033[0;37m] -> $c"
122 echo "Enter Administrators NickName"
123 echo -e $n "[\033[1;32m$ADMIN_NICK\033[0;37m] -> $c"
131 echo "Enter Administrators Email Address"
132 echo -e $n "[\033[1;32m$ADMIN_MAIL\033[0;37m] -> $c"
139 echo "Section Complete, Writing Config File Header."
142 # Config file header Here!
145 echo "########################################################################" >> makeconf.temp
146 echo "# #" >> makeconf.temp
147 echo "# --------------------------- #" >> makeconf.temp
148 echo "# InspIRCd Configuration File #" >> makeconf.temp
149 echo "# --------------------------- #" >> makeconf.temp
150 echo "# #" >> makeconf.temp
151 echo "##################################||####################################" >> makeconf.temp
152 echo " #||#" >> makeconf.temp
153 echo "##################################||####################################" >> makeconf.temp
154 echo "# #" >> makeconf.temp
155 echo "# This is an example of the config file for InspIRCd. #" >> makeconf.temp
156 echo "# Change the options to suit your network #" >> makeconf.temp
157 echo "# #" >> makeconf.temp
158 echo "# Written by : makeconf (Craig@inspircd.org) #" >> makeconf.temp
159 echo "# #" >> makeconf.temp
160 echo "########################################################################" >> makeconf.temp
161 echo "" >> makeconf.temp
162 echo "" >> makeconf.temp
165 # Complete, server tag now
168 echo "#-#-#-#-#-#-#-#-#-#-#-#- SERVER DESCRIPTION -#-#-#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
169 echo "<server name=\"$SERV_NAME\"" >> makeconf.temp
170 echo " description=\"$SERV_DESC\"" >> makeconf.temp
171 echo " network=\"$SERV_NET\">" >> makeconf.temp
172 echo "" >> makeconf.temp
173 echo "" >> makeconf.temp
179 echo "#-#-#-#-#-#-#-#-#-#-#-#- ADMIN INFORMATION -#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
180 echo "<admin name=\"$ADMIN_NAME\"" >> makeconf.temp
181 echo " nick=\"$ADMIN_NICK\"" >> makeconf.temp
182 echo " email=\"$ADMIN_MAIL\">" >> makeconf.temp
183 echo "" >> makeconf.temp
184 echo "" >> makeconf.temp
191 echo "Congratulations, you have successfully Configured your Server and Administrator"
192 echo "Information Correctly. Proceeding to Servers Port Configuration."
197 echo "Now its time to specify which IP and ports you wish to run the IRCd on."
198 echo "When asked please enter the IP Address, and ports. As a note, you may"
199 echo "Leave the IP Address blank to bind to all avaliable interfaces."
201 echo "To end, either type \"done\" as the IP, or leave the Port Blank."
205 # Write Config Header..
208 echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- RTFM LINE -#-#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
209 echo "# #" >> makeconf.temp
210 echo "# Just remove this... Its here to make you read through this file #" >> makeconf.temp
211 echo "# properly after running \"makeconf\" #" >> makeconf.temp
212 echo "" >> makeconf.temp
213 echo "<die value=\"tut tut, someone didnt check their config file properly\">" >> makeconf.temp
214 echo "" >> makeconf.temp
215 echo "" >> makeconf.temp
218 echo "#-#-#-#-#-#-#-#-#-#-#-#- PORT CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
221 # Ok, done.. Proceed :)
227 while [ $ok -eq 0 ] ; do
231 if [ "$cc" == "done" ] ; then
236 if [ "$ok" != "1" ] ; then
237 echo -e "Ports Already Bound: \033[1;32m$BOUND_PORT\033[0;37m"
238 echo "Enter Port to Bind to $BIND_IP"
241 if [ ! "$cc" ] ; then
245 BOUND_PORT="$BOUND_PORT $cc"
246 echo "<bind address=\"$BIND_IP\" port=\"$cc\">" >> makeconf.temp
251 if [ "$default" == "0" ] ; then
252 echo "<bind address=\"\" port=\"6667\">" >> makeconf.temp
256 # OoOok.. Finishing section
259 echo "" >> makeconf.temp
260 echo "" >> makeconf.temp
263 # Finished, Port Configuration Complete :D
268 if [ "$default" == "0" ] ; then
269 echo "<bind address=\"\" port=\"6667\">" >> makeconf.temp
273 echo "See? that wasnt so hard, The next bit is easier, just more important."
277 echo "I now need you to specify Passwords which will shut down, and restart"
278 echo "your server, these are _IMPORTANT_ and i will not allow you to use the"
279 echo "default passwords, you must use your own."
281 while [ $ok -eq 0 ] ; do
283 echo "Enter the password to Kill the IRCd"
284 echo -e $n "[\033[1;32m$DIE_PASS\033[0;37m] -> $c"
286 if [ ! "$cc" ] ; then
288 echo "You _MUST_ specify your Own Password, try again."
298 while [ $ok -eq 0 ] ; do
300 echo "Now Enter the Password you will use to Restart."
301 echo -e $n "[\033[1;32m$RESTART_PASS\033[0;37m] -> $c"
303 if [ ! "$cc" ] ; then
305 echo "You _MUST_ specify your Own Password, try again."
313 echo "Enter the Pause Between Issuing a DIE/RESTART request to the IRCd Actually doing it [in Seconds]"
314 echo -e $n "[\033[1;32m$DIE_WAIT\033[0;37m] -> $c"
321 # Now Write the config.. What phun
324 echo "#-#-#-#-#-#-#-#-#-#- DIE/RESTART CONFIGURATION -#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
325 echo "<power diepass=\"$DIE_PASS\"" >> makeconf.temp
326 echo " restartpass=\"$RESTART_PASS\"" >> makeconf.temp
327 echo " pause=\"$DIE_WAIT\">" >> makeconf.temp
328 echo "" >> makeconf.temp
329 echo "" >> makeconf.temp
332 # <Insert done comment here>
335 echo "ok, seeing as we managed that, we have to Arrange a list of people allowed to connect :)"
339 echo "This section allows you to Specify who is allowed Access to the IRCd. IP Addresses only Please"
340 echo "Although you can choose to use wildcards if you please. The default is * with no password."
341 echo "Type \"done\" at the IP Address, or leave it blank to finish, you do _NOT_ have to specify"
347 # Just another Friendly Header :p
350 echo "#-#-#-#-#-#-#-#-#-#- CONNECTIONS CONFIGURATION -#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
355 while [ $ok -eq 0 ] ; do
357 echo "Enter The IP Address"
358 echo -e $n "[\033[1;32m$CONNECT_ALLOW\033[0;37m] -> $c"
360 if [ "$cc" == "done" ] ; then
362 elif [ ! "$cc" ] ; then
367 if [ "$ok" != "1" ] ; then
368 echo "A Registration Timeout is the time it takes before Ping Timeouting"
369 echo "a client trying to connect to the server, which hasnt issued the initial"
370 echo "commands. It is recommended that you set this to 90, if you give no"
371 echo "value, the default will be used."
372 echo "Enter 'registration' timeout"
373 echo $n "[\033[1;32m90\033[0;37m] -> $c"
375 if [ ! "$cc" ] ; then
380 echo "Enter Password [If Applicable]"
383 if [ ! "$cc" ] ; then
385 echo "<connect allow=\"$ALLOW_IP\" timeout=\"$TIMEOUT\">" >> makeconf.temp
387 echo "<connect allow=\"$ALLOW_IP\" password=\"$cc\" timeout=\"$TIMEOUT\>" >> makeconf.temp
391 if [ "$default" == "0" ] ; then
392 echo "<connect allow=\"*\">" >> makeconf.temp
396 # Insert Line Break before deny
399 echo "" >> makeconf.temp
406 if [ "$default" == "0" ] ; then
407 echo "No allow lines Specified, using defaults."
411 echo "Now For the denies.. These will prevent users accessing the server, once again,"
412 echo "entering nothing, or \"done\" will complete the cycle, and allow you to continue"
414 echo "Enter the IP Address"
416 while [ $ok -eq 0 ] ; do
417 echo -e $n "[\033[1;32m$CONNECT_ALLOW\033[0;37m] -> $c"
419 if [ "$cc" == "done" ] ; then
421 elif [ ! "$cc" ] ; then
424 echo "<connect deny=\"$cc\">" >> makeconf.temp
432 echo "" >> makeconf.temp
433 echo "" >> makeconf.temp
436 echo "Ok, now thats finished, we come to oper Classes And Compositions. Due to the Nature"
437 echo "of this, this Script will set the default tags, if you wish to change them, you will"
438 echo "have to edit the Finished config manually, in most cases they shouldnt be changed."
442 echo "Before we do that thou, i need to ask for the Domain name of your server, for example,"
443 echo "chatspike.net. This will be used To generate your vhosts."
444 echo -e $n "[\033[1;32m$VHOST_DOMAIN\033[0;37m] -> $c"
450 echo "#-#-#-#-#-#-#-#-#-#-#-#- CLASS CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
451 echo "<class name=\"Shutdown\" commands=\"DIE RESTART REHASH\">" >> makeconf.temp
452 echo "<class name=\"ServerLink\" commands=\"CONNECT SQUIT\">" >> makeconf.temp
453 echo "<class name=\"BanControl\" commands=\"KILL GLINE KLINE ZLINE QLINE SHUN\">" >> makeconf.temp
454 echo "<class name=\"OperChat\" commands=\"WALLOPS CHATOPS\">" >> makeconf.temp
455 echo "<class name=\"HostCloak\" commands=\"SETHOST SETIDENT SETNAME\">" >> makeconf.temp
456 echo "" >> makeconf.temp
457 echo "" >> makeconf.temp
458 echo "#-#-#-#-#-#-#-#-#-#-#-#- OPERATOR COMPOSITION -#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
459 echo "<type name=\"NetAdmin\" classes=\"OperChat BanControl HostCloak Shutdown ServerLink\" host=\"netadmin.$VHOST_DOMAIN\">" >> makeconf.temp
460 echo "<type name=\"GlobalOp\" classes=\"OperChat BanControl HostCloak ServerLink\" host=\"ircop.$VHOST_DOMAIN\">" >> makeconf.temp
461 echo "<type name=\"LocalOp\" classes=\"OperChat BanControl HostCloak\" host=\"local.$VHOST_DOMAIN\">" >> makeconf.temp
462 echo "<type name=\"Helper\" classes=\"HostCloak\" host=\"helper.$VHOST_DOMAIN\">" >> makeconf.temp
463 echo "" >> makeconf.temp
464 echo "" >> makeconf.temp
466 echo "Yay, now comes the fun Part, time to specify Opers."
470 echo "Ok, heres the deal, gonna ask you four questions, all require answering. They are as follows:"
471 echo "1) The Opers Login, This part will replace <login> in /oper <login> <password>"
472 echo "2) The Opers Password, This will replace <password> in /oper <login> <password>"
473 echo "3) The Opers Host, The oper must be connecting from this host for /oper to work [user@host]"
474 echo "4) The Opers Class, currently all avaliable are: \"NetAdmin\", \"GlobalOp\", \"LocalOp\" and \"Helper\""
476 echo "You may re-configure the classes later, and if you enter nothing for part one, we will proceed to the next step"
480 # Stolen another few lines >;)
483 echo "#-#-#-#-#-#-#-#-#-#-#- OPERATOR CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
490 while [ $ok -eq 0 ] ; do
491 echo "Enter the opers login name"
492 echo -e $n "[\033[1;32m$OPER_NICK\033[0;37m] -> $c"
494 if [ ! "$cc" ] ; then
499 if [ $ok -eq 0 ] ; then
501 while [ $ok2 -eq 0 ] ; do
502 echo "Enter the Opers Password"
503 echo -e $n "[\033[1;32m$OPER_PASS\033[0;37m] -> $c"
505 if [ ! "$cc" ] ; then
506 echo "You _MUST_ Enter a password"
512 echo "Enter Opers Host [Format User@host]"
513 echo -e $n "[\033[1;32m$OPER_HOST\033[0;37m] -> $c"
515 if [ ! "$cc" ] ; then
520 echo "Enter Opers Type [Avaliable: NetAdmin, GlobalOp, LocalOp and Helper] CHOOSE ONLY ONE"
521 echo -e $n "[\033[1;32m$OPER_TYPE\033[0;37m] -> $c"
523 if [ ! "$cc" ] ; then
528 echo "Coming for a re-run"
530 echo "<oper name=\"$OPER_LOGIN\"" >> makeconf.temp
531 echo " password=\"$OPER_PASS\"" >> makeconf.temp
532 echo " host=\"$OPER_HOST\"" >> makeconf.temp
533 echo " type=\"$OPER_TYPE\">" >> makeconf.temp
538 echo "" >> makeconf.temp
539 echo "" >> makeconf.temp
541 echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- RTFM LINE -#-#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
542 echo "# You should know what to do here.. if not.. RTFM!! muahahahahaha #" >> makeconf.temp
543 echo "" >> makeconf.temp
544 echo "<die value=\"And god came down from the heavens and smote down the noob.\">" >> makeconf.temp
545 echo "" >> makeconf.temp
546 echo "" >> makeconf.temp
550 echo "Congratulations, Your Opers are configured!"
553 echo "Right, i have guessed where you Message of the Day and Rules Files will be."
554 echo "If these are correct, just hit return, else, type in the correct Location."
556 echo "First The Message of the day."
557 echo -e $n "[\033[1;32m$FILES_MOTD\033[0;37m] -> $c"
563 echo "Right, now the Rules file."
564 echo -e $n "[\033[1;32m$FILES_RULE\033[0;37m] -> $c"
570 echo "#-#-#-#-#-#-#-#-#-#- MISCELLANEOUS CONFIGURATION -#-#-#-#-#-#-#-#-#-" >> makeconf.temp
571 echo "<files motd=\"$FILES_MOTD\"" >> makeconf.temp
572 echo " rules=\"$FILES_RULE\">" >> makeconf.temp
573 echo "" >> makeconf.temp
574 echo "" >> makeconf.temp
579 echo "Enter the Names of the modules you wish to load, one at a time, below."
580 echo "Type in the name, hit return, type in another one, etc. Once complete, just hit return to end."
582 echo "The Following Modules are avaliable:"
585 for module in src/modules/*.cpp ; do
586 desc=`grep '$ModDesc:' $module | sed 's/\/\* $ModDesc://' | sed 's/\*\///'`
587 mod=`echo $module | sed 's/.cpp/.so/' | sed 's/src\/modules\///'`
588 echo -e "\033[1;32m$mod\t\t\033[0;37m$desc"
596 echo "#-#-#-#-#-#-#-#-#-#-#-#-#- MODULE OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
602 while [ "$ok" -eq 0 ] ; do
606 echo "<module name=\"$cc\">" >> makeconf.temp
612 echo "" >> makeconf.temp
613 echo "" >> makeconf.temp
617 echo "This is it, The final set of Variables.. Then your config is complete."
620 echo "These are just a few tiny Simple things, well explained.. BEGIN!"
622 echo "Quit Prefix, This comes before all users Quits, it can be what you like."
623 echo -e $n "[\033[1;32m$OP_PREFIX\033[0;37m] -> $c"
630 echo "Log level [debug, verbose, default, sparse, none]"
631 echo -e $n "[\033[1;32m$OP_DEBUG\033[0;37m] -> $c"
638 echo "Enable Halfops [Channel Mode +h], [yes/no]"
639 echo -e $n "[\033[1;32m$OP_HALFY\033[0;37m] -> $c"
646 echo "Enable User Channel Protection [Channel Mode +a] [yes/no]"
647 echo -e $n "[\033[1;32m$OP_PROTE\033[0;37m] -> $c"
654 echo "Enable Channel Founder? [Channel Mode +q] [yes/no]"
655 echo -e $n "[\033[1;32m$OP_FOUND\033[0;37m] -> $c"
661 echo "#-#-#-#-#-#-#-#-#-#-#-#-#- SERVER OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
662 echo "<options prefixquit=\"$OP_PREFIX\"" >> makeconf.temp
663 echo " loglevel=\"$OP_DEBUG\"" >> makeconf.temp
664 echo " allowhalfop=\"$OP_HALFY\"" >> makeconf.temp
665 echo " allowprotect=\"$OP_PROTE\"" >> makeconf.temp
666 echo " allowfounder=\"$OP_FOUND\">" >> makeconf.temp
667 echo "" >> makeconf.temp
668 echo "" >> makeconf.temp
671 DIR=$ME/conf/inspircd.conf
673 echo "LAST QUESTION!!"
674 echo "Where am i gonna be placed? [eg. $DIR]"
675 echo -e $n "[\033[1;32m$DIR\033[0;37m] -> $c"
681 echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- YAWN -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
682 echo "# #" >> makeconf.temp
683 echo "# You should already know what to do here :) #" >> makeconf.temp
684 echo "" >> makeconf.temp
685 echo "<die value=\"All l33t noobs must edit their configs.\">" >> makeconf.temp
686 echo "" >> makeconf.temp
687 echo "" >> makeconf.temp
688 echo "#########################################################################" >> makeconf.temp
689 echo "# #" >> makeconf.temp
690 echo "# -InspIRCd Development and Coding Team- #" >> makeconf.temp
691 echo "# www.inspircd.org #" >> makeconf.temp
692 echo "# #" >> makeconf.temp
693 echo "#########################################################################" >> makeconf.temp
698 mv makeconf.temp $DIR