#!/bin/sh # $Id$ # Defaults # TIME=`date +"%H:%M:%S %Z"` DATE=`date +"%a, %b %e %Y"` IRCDCONF="ircd.conf" SERVNAME="Server.IRC.net" COMMENT="IRC server!" ADMIN="Admin-name" ADMNICK="Admin" ADMADDR="admin@no.where.com" OPERNAME="admin" OPERADDR="*@*" OPERPASS="password" PORT="6667" OPRT="default" LINKPASS="linkpass" VIRTUAL="1.2.3.4" ENCRYPT="Yes" FLAGS="OAZHWe" RESTARTPASS="restartpass" DIEPASS="diepass" SERVICES="Services.ShadowNet.Org" # these are so I can use stuff like $1 without it replacing it...like by # using $dlrsgn$uno for $1 dlrsgn="$" uno="1" dos="2" # remove the temp file if it exists rm -f mkconf.tmp # make a quick script for replacing one line with another cat > repl_str << __EOF__ sed -e "s@^$dlrsgn$uno\(.*\)@$dlrsgn$dos" $IRCDCONF > mkconf.tmp cp mkconf.tmp $IRCDCONF rm mkconf.tmp __EOF__ # mark repl_str as an executable chmod +x repl_str rm -f repl_str # Checking out how to specify not to make a new line with the current OS c='' n='' 2>/dev/null if [ "`eval echo -n 'a'`" = "-n a" ]; then c='\c' else n='-n' fi # If Settings exist, load the info, otherwise tell them to run Config. if [ -r Settings ]; then . Settings else echo "Hmm, you need to run Config first!" echo "Type ./Config" echo "If you have run Config, make sure you are in the directory" echo "you ran it from." exit 1 fi CONF=$IRCDCONF if [ -r "$CONF" ]; then echo "$IRCDCONF found" echo " " echo " I don't suggest running this with the conf file already" echo "existing, since you will lose all the data in your conf file." echo "This script is just for creating one. If you want to recreate" echo "a conf file, type 'recreate'." echo $n " [exit] -> $c" read cc if [ "$cc" != "recreate" ]; then echo " " echo " OK, do you want to edit $IRCDCONF using an editor?" echo "If so, specify the editor you want to use. Otherwise," echo "type 'exit'." EDITFND="not found" if [ -r /usr/bin/pico ]; then EDITFND="pico" fi if [ -r /usr/bin/joe ]; then EDITFND="joe" fi if [ -r /usr/bin/vi ]; then EDITFND="vi" fi if [ -r /usr/bin/vim ]; then EDITFND="vim" fi while [ "c" = "c" ]; do echo $n " [$EDITFND] -> $c" read EDITOR if [ -z "$EDITOR" ]; then EDITOR="$EDITFND" fi if [ "$EDITOR" = "exit" ]; then echo "Have a nice day." exit 1 fi if [ -f $EDITOR ]; then $EDITOR $CONF exit 1 fi if [ -f /usr/bin/$EDITOR ]; then /usr/bin/$EDITOR $CONF exit 1 fi echo " Editor not found. Specify a valid editor or" echo "type 'exit' to quit this script." done fi mv $CONF "$CONF.saved" rm $CONF echo "$IRCDCONF has been renamed to ircd.conf.saved" else echo "$IRCDCONF is not found. (good)" fi clear echo "|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|" echo "| Welcome to the $IRCDCONF generator. |" echo "|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|" echo " " echo "What will your server name be? (ie: $SERVNAME)" echo $n " [$SERVNAME] -> $c" read cc if [ ! -z "$cc" ]; then SERVNAME="$cc" fi echo " " echo "What is your IRC server's IP? (ie: $VIRTUAL)" echo "Use * to bind to all interfaces" echo $n " [$VIRTUAL] -> $c" read cc if [ ! -z "$cc" ]; then VIRTUAL="$cc" fi echo " " echo "Server comment? (ie: Main Hub Server)" echo $n " [$COMMENT] -> $c" read cc if [ ! -z "$cc" ]; then COMMENT="$cc" fi echo " " echo "Main port? (ie: 6667)" echo $n " [$PORT] -> $c" read cc if [ ! -z "$cc" ]; then PORT="$cc" fi echo " " echo "What is your real name? (ie: John Doe)" echo $n " [$ADMIN] -> $c" read cc if [ ! -z "$cc" ]; then ADMIN="$cc" fi echo " " echo "What is your IRC nickname? (ie: JD)" echo $n " [$ADMNICK] -> $c" read cc if [ ! -z "$cc" ]; then ADMNICK="$cc" fi echo " " echo "What is your e-mail address? (ie: john@doe.com)" echo $n " [$ADMADDR] -> $c" read cc if [ ! -z "$cc" ]; then ADMADDR="$cc" fi echo " " OPERNAME="$ADMNICK" echo "What will your opername be for your O:line? (ie: johndoe)" echo $n " [$OPERNAME] -> $c" read cc if [ ! -z "$cc" ]; then OPERNAME="$cc" fi echo " " echo "What oper flags do you want to have? (ie: OAWZ)" echo "Some flags to choose from:" echo " o = local oper" echo " O = global oper" echo " N = network administrator" echo " A = server administrator" echo " C = co administrator" echo " T = technical administrator" echo " read unrealircd.doc for more info about O:line flags)" echo $n " [$FLAGS] -> $c" read cc if [ ! -z "$cc" ]; then FLAGS="$cc" fi echo " " ENCRYPT="" ENCRYPT="bad" while [ "$ENCRYPT" = "bad" ]; do echo "Do you use encrypted oper passwords?" echo $n " [Yes] -> $c" read cc if [ -z "$cc" ]; then cc="Yes" fi case "$cc" in [Yy]*) ENCRYPT="Yes" ;; [Nn]*) ENCRYPT="No" ;; *) echo "Please specify yes or no." ENCRYPT="bad" ;; esac done if [ "$ENCRYPT" = "Yes" ] ; then echo "Compile the file called mkpasswd.c in the 'crypt' directory" echo "Then run it (./mkpasswd) and input the passwd to be encrypted" echo "Then copy the output into the passwd slot in the O:line" echo "NOTE: You can encrypt on irc via /mkpasswd " fi echo " " echo "What will your /oper password be? (ie: snoopy67)" echo $n " [$OPERPASS] -> $c" read cc if [ ! -z "$cc" ]; then OPERPASS="$cc" fi echo " " echo "What is your user@host mask on IRC? (ie: *@*.toronto.globalserve.net)" echo $n " [$OPERADDR] -> $c" read cc if [ ! -z "$cc" ]; then OPERADDR="$cc" fi echo " " echo "What do you want your die password to be?" echo $n " [$DIEPASS] -> $c" read cc if [ ! -z "$cc" ]; then DIEPASS="$cc" fi echo " " echo "What do you want your restart password to be?" echo $n " [$RESTARTPASS] -> $c" read cc if [ ! -z "$cc" ]; then RESTARTPASS="$cc" fi echo " " echo "If your running services, or linking to a network that has" echo "services, please state the services servername." echo "If you are running a non-services network, just type 'next'" echo $n " [$SERVICES] -> $c" read cc #if [ ! -z "$cc" ]; then # SERVICES="$cc" #fi if [ "$cc" = "next" ]; then SERVICES="No.Services.Selected" elif [ ! -z "$cc" ]; then SERVICES="$cc" fi cat > $CONF << __EOF__ ######################## # # Filename: $IRCDCONF # Created: $DATE - $TIME # ######################## ############ Server Info ############ M:$SERVNAME:$VIRTUAL:$COMMENT:$PORT ##################################### ############ Administrator Information ############# A:$ADMIN:$ADMNICK:$ADMADDR #################################################### ############ Y-lines ############# # Client Y:lines Y:1:90:0:$MAXCONNECTIONS:100000 # Server Y:lines Y:50:300:600:1:1000000 ################################## ############ I/Access Lines ############# I:*@*::*@*::1 ######################################### ############ X:LINE Die/Restart Password ############ X:$DIEPASS:$RESTARTPASS ##################################################### ## O-line (O:hostmask:password:opername:flags:1) ## O:$OPERADDR:$OPERPASS:$OPERNAME:$FLAGS:1 ################################################### __EOF__ echo " " echo " Would you like to configure any servers for linking?" echo "Type the servername, or type 'done' when finished." echo $n " [done] -> $c" read cc if [ -z "$cc" ]; then cc="done" fi while [ "$cc" != "done" ]; do THESERV="$cc" SHOST="none" while [ "$SHOST" = "none" ]; do echo " " echo "Hostname or ip for the other server? Must be specified." echo $n " [] -> $c" read SHOST done echo " " echo "Password to send to the other server?" echo $n " [$LINKPASS] -> $c" read CLP if [ -z "$CLP" ]; then CLP="$LINKPASS" fi echo " " AUTOPORT="" AUTOCONN="bad" while [ "$AUTOCONN" = "bad" ]; do echo " " echo "Should we autconnect to this server?" echo $n " [Yes] -> $c" read cc if [ -z "$cc" ]; then cc="Yes" fi case "$cc" in [Yy]*) AUTOCONN="yes" echo "What port should we autoconnect to?" echo $n " [7029] -> $c" read AUTOPORT if [ -z "$AUTOPORT" ]; then AUTOPORT="7029" fi ;; [Nn]*) AUTOCONN="no" ;; *) echo "Please specify yes or no." AUTOCONN="bad" ;; esac done echo " " HUB="bad" while [ "$HUB" = "bad" ]; do echo " " echo "Will this server be a hub?" echo $n " [Yes] -> $c" read cc if [ -z "$cc" ]; then cc="Yes" fi case "$cc" in [Yy]*) HUB="Yes" ;; [Nn]*) HUB="no" ;; *) echo "Please specify yes or no." HUB="bad" ;; esac done if [ "$HUB" = "Yes" ]; then echo "############ HUB LINES #############" >> $CONF echo "H:*:*:$THESERV" >> $CONF echo "####################################" >> $CONF echo "" >> $CONF fi echo "############ C/N LINES #############" >> $CONF echo "C:$SHOST:$CLP:$THESERV:$AUTOPORT:50" >> $CONF echo "N:$SHOST:$CLP:$THESERV::50" >> $CONF echo "####################################" >> $CONF echo "" >> $CONF echo " " echo "Type the servername, or type 'done' when finished." echo $n " [done] -> $c" read cc if [ -z "$cc" ]; then cc="done" fi done cat >> $CONF << __EOF__ ############ Uline for Services ############ U:$SERVICES:*:* ############################################ ############ Q-Lined NickNames ############ Q::Reserved for services:*C*h*a*n*S*e*r*v* Q::Reserved for services:*N*i*c*k*S*e*r*v* Q::Reserved for services:*M*e*m*o*S*e*r*v* Q::Reserved for services:*H*e*l*p*S*e*r*v* Q::Reserved for services:*O*p*e*r*S*e*r*v* Q::Reserved for services:*I*n*f*o*S*e*r*v* Q::Reserved for Administrator:*Admin* Q::Reserved for ircops:*IRC*op* Q::Reserved for ircops:*Oper* Q::Bug in mIRC:Status ########################################### ############ PORT LINES ############# __EOF__ cc="blank" echo " " echo " " echo " Would you like any extra ports, other than 6667? Enter them here." echo "Type 'done' when you are finished. Type 'default' to use 6665-6669/7000." while [ "$cc" != "done" ]; do echo $n " [$OPRT] -> $c" read cc if [ -z "$cc" ]; then cc="$OPRT" fi if [ "$cc" = "default" ]; then echo "P:$VIRTUAL:*:*:6660" >> $CONF echo "P:$VIRTUAL:*:*:6661" >> $CONF echo "P:$VIRTUAL:*:*:6662" >> $CONF echo "P:$VIRTUAL:*:*:6663" >> $CONF echo "P:$VIRTUAL:*:*:6664" >> $CONF echo "P:$VIRTUAL:*:*:6665" >> $CONF echo "P:$VIRTUAL:*:*:6666" >> $CONF echo "P:$VIRTUAL:*:*:6668" >> $CONF echo "P:$VIRTUAL:*:*:6669" >> $CONF echo "P:$VIRTUAL:*:*:7000" >> $CONF echo "P:$VIRTUAL:*:*:7029" >> $CONF echo "#####################################" >> $CONF cc="done" fi if [ "$cc" != "done" ]; then if [ $cc = "$PORT" ]; then echo " No, $PORT is already defined in the M:line," echo "please use a port other than $PORT." else echo "P:$VIRTUAL:*:*:$cc" >> $CONF fi fi case "$OPRT" in 6660) OPRT="done" ;; 6661) OPRT="6660" ;; 6662) OPRT="6661" ;; 6663) OPRT="6662" ;; 6664) OPRT="6663" ;; 6665) OPRT="6664" ;; 6666) OPRT="6665" ;; 6669) OPRT="6666" ;; 6668) OPRT="6669" ;; 6667) OPRT="6668" ;; *) OPRT="done" ;; esac done # Make it so ONLY the one who created the conf can read or write. chmod 700 $IRCDCONF cat << __EOF__ OK, $IRCDCONF has been generated according to what you specified. Make sure you double check for errors in $IRCDCONF. We recommend that you take a look at your $IRCDCONF right now. Thanks for using UnrealIRCd __EOF__ echo "Have a nice day." echo "" exit 1