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 "Enter Password [If Applicable]"
371 if [ ! "$cc" ] ; then
373 echo "<connect allow=\"$ALLOW_IP\">" >> makeconf.temp
375 echo "<connect allow=\"$ALLOW_IP\" password=\"$cc\">" >> makeconf.temp
379 if [ "$default" == "0" ] ; then
380 echo "<connect allow=\"*\">" >> makeconf.temp
384 # Insert Line Break before deny
387 echo "" >> makeconf.temp
394 if [ "$default" == "0" ] ; then
395 echo "No allow lines Specified, using defaults."
399 echo "Now For the denies.. These will prevent users accessing the server, once again,"
400 echo "entering nothing, or \"done\" will complete the cycle, and allow you to continue"
402 echo "Enter the IP Address"
404 while [ $ok -eq 0 ] ; do
405 echo -e $n "[\033[1;32m$CONNECT_ALLOW\033[0;37m] -> $c"
407 if [ "$cc" == "done" ] ; then
409 elif [ ! "$cc" ] ; then
412 echo "<connect deny=\"$cc\">" >> makeconf.temp
420 echo "" >> makeconf.temp
421 echo "" >> makeconf.temp
424 echo "Ok, now thats finished, we come to oper Classes And Compositions. Due to the Nature"
425 echo "of this, this Script will set the default tags, if you wish to change them, you will"
426 echo "have to edit the Finished config manually, in most cases they shouldnt be changed."
430 echo "Before we do that thou, i need to ask for the Domain name of your server, for example,"
431 echo "chatspike.net. This will be used To generate your vhosts."
432 echo -e $n "[\033[1;32m$VHOST_DOMAIN\033[0;37m] -> $c"
438 echo "#-#-#-#-#-#-#-#-#-#-#-#- CLASS CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-" >> makeconf.temp
439 echo "<class name=\"Shutdown\" commands=\"DIE RESTART REHASH\">" >> makeconf.temp
440 echo "<class name=\"ServerLink\" commands=\"CONNECT SQUIT\">" >> makeconf.temp
441 echo "<class name=\"BanControl\" commands=\"KILL GLINE KLINE ZLINE QLINE SHUN\">" >> makeconf.temp
442 echo "<class name=\"OperChat\" commands=\"WALLOPS CHATOPS\">" >> makeconf.temp
443 echo "<class name=\"HostCloak\" commands=\"SETHOST SETIDENT SETNAME\">" >> makeconf.temp
444 echo "" >> makeconf.temp
445 echo "" >> makeconf.temp
446 echo "#-#-#-#-#-#-#-#-#-#-#-#- OPERATOR COMPOSITION -#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
447 echo "<type name=\"NetAdmin\" classes=\"OperChat BanControl HostCloak Shutdown ServerLink\" host=\"netadmin.$VHOST_DOMAIN\">" >> makeconf.temp
448 echo "<type name=\"GlobalOp\" classes=\"OperChat BanControl HostCloak ServerLink\" host=\"ircop.$VHOST_DOMAIN\">" >> makeconf.temp
449 echo "<type name=\"LocalOp\" classes=\"OperChat BanControl HostCloak\" host=\"local.$VHOST_DOMAIN\">" >> makeconf.temp
450 echo "<type name=\"Helper\" classes=\"HostCloak\" host=\"helper.$VHOST_DOMAIN\">" >> makeconf.temp
451 echo "" >> makeconf.temp
452 echo "" >> makeconf.temp
454 echo "Yay, now comes the fun Part, time to specify Opers."
458 echo "Ok, heres the deal, gonna ask you four questions, all require answering. They are as follows:"
459 echo "1) The Opers Login, This part will replace <login> in /oper <login> <password>"
460 echo "2) The Opers Password, This will replace <password> in /oper <login> <password>"
461 echo "3) The Opers Host, The oper must be connecting from this host for /oper to work [user@host]"
462 echo "4) The Opers Class, currently all avaliable are: \"NetAdmin\", \"GlobalOp\", \"LocalOp\" and \"Helper\""
464 echo "You may re-configure the classes later, and if you enter nothing for part one, we will proceed to the next step"
468 # Stolen another few lines >;)
471 echo "#-#-#-#-#-#-#-#-#-#-#- OPERATOR CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
478 while [ $ok -eq 0 ] ; do
479 echo "Enter the opers login name"
480 echo -e $n "[\033[1;32m$OPER_NICK\033[0;37m] -> $c"
482 if [ ! "$cc" ] ; then
487 if [ $ok -eq 0 ] ; then
489 while [ $ok2 -eq 0 ] ; do
490 echo "Enter the Opers Password"
491 echo -e $n "[\033[1;32m$OPER_PASS\033[0;37m] -> $c"
493 if [ ! "$cc" ] ; then
494 echo "You _MUST_ Enter a password"
500 echo "Enter Opers Host [Format User@host]"
501 echo -e $n "[\033[1;32m$OPER_HOST\033[0;37m] -> $c"
503 if [ ! "$cc" ] ; then
508 echo "Enter Opers Type [Avaliable: NetAdmin, GlobalOp, LocalOp and Helper] CHOOSE ONLY ONE"
509 echo -e $n "[\033[1;32m$OPER_TYPE\033[0;37m] -> $c"
511 if [ ! "$cc" ] ; then
516 echo "Coming for a re-run"
518 echo "<oper name=\"$OPER_LOGIN\"" >> makeconf.temp
519 echo " password=\"$OPER_PASS\"" >> makeconf.temp
520 echo " host=\"$OPER_HOST\"" >> makeconf.temp
521 echo " type=\"$OPER_TYPE\">" >> makeconf.temp
526 echo "" >> makeconf.temp
527 echo "" >> makeconf.temp
529 echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- RTFM LINE -#-#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
530 echo "# You should know what to do here.. if not.. RTFM!! muahahahahaha #" >> makeconf.temp
531 echo "" >> makeconf.temp
532 echo "<die value=\"And god came down from the heavens and smote down the noob.\">" >> makeconf.temp
533 echo "" >> makeconf.temp
534 echo "" >> makeconf.temp
538 echo "Congratulations, Your Opers are configured!"
541 echo "Right, i have guessed where you Message of the Day and Rules Files will be."
542 echo "If these are correct, just hit return, else, type in the correct Location."
544 echo "First The Message of the day."
545 echo -e $n "[\033[1;32m$FILES_MOTD\033[0;37m] -> $c"
551 echo "Right, now the Rules file."
552 echo -e $n "[\033[1;32m$FILES_RULE\033[0;37m] -> $c"
558 echo "#-#-#-#-#-#-#-#-#-#- MISCELLANEOUS CONFIGURATION -#-#-#-#-#-#-#-#-#-" >> makeconf.temp
559 echo "<files motd=\"$FILES_MOTD\"" >> makeconf.temp
560 echo " rules=\"$FILES_RULE\">" >> makeconf.temp
561 echo "" >> makeconf.temp
562 echo "" >> makeconf.temp
567 echo "Enter the Names of the modules you wish to load, one at a time, below."
568 echo "Type in the name, hit return, type in another one, etc. Once complete, just hit return to end."
570 echo "The Following Modules are avaliable:"
573 for module in src/modules/*.cpp ; do
574 desc=`grep '$ModDesc:' $module | sed 's/\/\* $ModDesc://' | sed 's/\*\///'`
575 mod=`echo $module | sed 's/.cpp/.so/' | sed 's/src\/modules\///'`
576 echo -e "\033[1;32m$mod\t\t\033[0;37m$desc"
584 echo "#-#-#-#-#-#-#-#-#-#-#-#-#- MODULE OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
590 while [ "$ok" -eq 0 ] ; do
594 echo "<module name=\"$cc\">" >> makeconf.temp
600 echo "" >> makeconf.temp
601 echo "" >> makeconf.temp
605 echo "This is it, The final set of Variables.. Then your config is complete."
608 echo "These are just a few tiny Simple things, well explained.. BEGIN!"
610 echo "Quit Prefix, This comes before all users Quits, it can be what you like."
611 echo -e $n "[\033[1;32m$OP_PREFIX\033[0;37m] -> $c"
618 echo "Log level [debug, verbose, default, sparse, none]"
619 echo -e $n "[\033[1;32m$OP_DEBUG\033[0;37m] -> $c"
626 echo "Enable Halfops [Channel Mode +h], [yes/no]"
627 echo -e $n "[\033[1;32m$OP_HALFY\033[0;37m] -> $c"
634 echo "Enable User Channel Protection [Channel Mode +a] [yes/no]"
635 echo -e $n "[\033[1;32m$OP_PROTE\033[0;37m] -> $c"
642 echo "Enable Channel Founder? [Channel Mode +q] [yes/no]"
643 echo -e $n "[\033[1;32m$OP_FOUND\033[0;37m] -> $c"
649 echo "#-#-#-#-#-#-#-#-#-#-#-#-#- SERVER OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
650 echo "<options prefixquit=\"$OP_PREFIX\"" >> makeconf.temp
651 echo " debug=\"$OP_DEBUG\"" >> makeconf.temp
652 echo " allowhalfop=\"$OP_HALFY\"" >> makeconf.temp
653 echo " allowprotect=\"$OP_PROTE\"" >> makeconf.temp
654 echo " allowfounder=\"$OP_FOUND\">" >> makeconf.temp
655 echo "" >> makeconf.temp
656 echo "" >> makeconf.temp
659 DIR=$ME/conf/inspircd.conf
661 echo "LAST QUESTION!!"
662 echo "Where am i gonna be placed? [eg. $DIR]"
663 echo -e $n "[\033[1;32m$DIR\033[0;37m] -> $c"
669 echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- YAWN -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#" >> makeconf.temp
670 echo "# #" >> makeconf.temp
671 echo "# You should already know what to do here :) #" >> makeconf.temp
672 echo "" >> makeconf.temp
673 echo "<die value=\"All l33t noobs must edit their configs.\">" >> makeconf.temp
674 echo "" >> makeconf.temp
675 echo "" >> makeconf.temp
676 echo "#########################################################################" >> makeconf.temp
677 echo "# #" >> makeconf.temp
678 echo "# -InspIRCd Development and Coding Team- #" >> makeconf.temp
679 echo "# www.inspircd.org #" >> makeconf.temp
680 echo "# #" >> makeconf.temp
681 echo "#########################################################################" >> makeconf.temp
686 mv makeconf.temp $DIR