home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 5 / CD_Magazyn_EXEC_nr_5.iso / Programy / Internet / IRC / UnrealIRCd-bin.lha / Unreal / makeconf < prev    next >
Encoding:
Text File  |  2000-07-29  |  12.0 KB  |  554 lines

  1. #!/bin/sh
  2. # $Id: makeconf,v 1.1.1.1.4.1.2.1 2000/07/29 13:42:37 stskeeps Exp $
  3. # Defaults
  4. #
  5. TIME=`date +"%H:%M:%S %Z"`
  6. DATE=`date +"%a, %b %e %Y"`
  7. IRCDCONF="ircd.conf"
  8. SERVNAME="Server.IRC.net"
  9. COMMENT="IRC server!"
  10. ADMIN="Admin-name"
  11. ADMNICK="Admin"
  12. ADMADDR="admin@no.where.com"
  13. OPERNAME="admin"
  14. OPERADDR="*@*"
  15. OPERPASS="password"
  16. NUMERIC=""
  17. PORT="6667"
  18. OPRT="default"
  19. LINKPASS="linkpass"
  20. VIRTUAL="1.2.3.4"
  21. ENCRYPT="Yes"
  22. FLAGS="OAZHWe"
  23. RESTARTPASS="restartpass"
  24. DIEPASS="diepass"
  25. SERVICES="Services.IRC-Net.Org"
  26.  
  27. # these are so I can use stuff like $1 without it replacing it...like by
  28. # using $dlrsgn$uno for $1
  29. dlrsgn="$"
  30. uno="1"
  31. dos="2"
  32.  
  33. # remove the temp file if it exists
  34. rm -f mkconf.tmp
  35.  
  36. # make a quick script for replacing one line with another
  37.  
  38. cat > repl_str << __EOF__
  39. sed -e "s@^$dlrsgn$uno\(.*\)@$dlrsgn$dos" $IRCDCONF > mkconf.tmp
  40. cp mkconf.tmp $IRCDCONF
  41. rm mkconf.tmp
  42. __EOF__
  43.  
  44. # mark repl_str as an executable
  45. chmod +x repl_str
  46. rm -f repl_str
  47. # Checking out how to specify not to make a new line with the current OS
  48. c=''
  49. n=''
  50. 2>/dev/null
  51. if [ "`eval echo -n 'a'`" = "-n a" ]; then
  52.     c='\c'
  53. else
  54.     n='-n'
  55. fi
  56.  
  57. # If Settings exist, load the info, otherwise tell them to run Config.
  58.  
  59. if [ -r Settings ]; then
  60.     . Settings
  61. else
  62.     echo "Hmm, you need to run Config first!"
  63.     echo "Type ./Config"
  64.     echo "If you have run Config, make sure you are in the directory"
  65.     echo "you ran it from."
  66.     exit 1
  67. fi
  68.  
  69. CONF=$IRCDCONF
  70.  
  71. if [ -r "$CONF" ]; then
  72.     echo "$IRCDCONF found"
  73.     echo " "
  74.     echo "   I don't suggest running this with the conf file already"
  75.     echo "existing, since you will lose all the data in your conf file."
  76.     echo "This script is just for creating one. If you want to recreate"
  77.     echo "a conf file, type 'recreate'."
  78.     echo $n " [exit] -> $c"
  79.     read cc
  80.  
  81.     if [ "$cc" != "recreate" ]; then
  82.         echo " "
  83.         echo "   OK, do you want to edit $IRCDCONF using an editor?"
  84.         echo "If so, specify the editor you want to use. Otherwise,"
  85.         echo "type 'exit'."
  86.         EDITFND="not found"
  87.  
  88.                 if [ -r /usr/bin/pico ]; then
  89.                         EDITFND="pico"
  90.                 fi
  91.  
  92.                 if [ -r /usr/bin/joe ]; then
  93.                         EDITFND="joe"
  94.                 fi
  95.  
  96.         if [ -r /usr/bin/vi ]; then
  97.             EDITFND="vi"
  98.         fi
  99.  
  100.         if [ -r /usr/bin/vim ]; then
  101.             EDITFND="vim"
  102.         fi
  103.  
  104.         while [ "c" = "c" ]; do
  105.             echo $n " [$EDITFND] -> $c"
  106.             read EDITOR
  107.  
  108.             if [ -z "$EDITOR" ]; then
  109.                 EDITOR="$EDITFND"
  110.             fi
  111.  
  112.             if [ "$EDITOR" = "exit" ]; then
  113.                 echo "Have a nice day."
  114.                 exit 1
  115.             fi
  116.  
  117.             if [ -f $EDITOR ]; then
  118.                 $EDITOR $CONF
  119.                 exit 1
  120.             fi
  121.  
  122.             if [ -f /usr/bin/$EDITOR ]; then
  123.                 /usr/bin/$EDITOR $CONF
  124.                 exit 1
  125.             fi
  126.  
  127.             echo "   Editor not found. Specify a valid editor or"
  128.             echo "type 'exit' to quit this script."
  129.         done
  130.  
  131.     fi
  132.  
  133.     mv $CONF "$CONF.saved"
  134.     rm $CONF
  135.     echo "$IRCDCONF has been renamed to ircd.conf.saved"
  136. else
  137.     echo "$IRCDCONF is not found. (good)"
  138. fi
  139.  
  140. clear
  141. echo "|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|"
  142. echo "| Welcome to the $IRCDCONF generator. |"
  143. echo "|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|"
  144. echo " "
  145. echo "What will your server name be? (ie: $SERVNAME)"
  146. echo $n " [$SERVNAME] -> $c"
  147. read cc
  148. if [ ! -z "$cc" ]; then
  149.     SERVNAME="$cc"
  150. fi
  151.  
  152. echo " "
  153. echo "What is your IRC server's IP? (ie: $VIRTUAL)"
  154. echo "Use * to bind to all interfaces"
  155. echo $n " [$VIRTUAL] -> $c"
  156. read cc
  157. if [ ! -z "$cc" ]; then
  158.         VIRTUAL="$cc"
  159. fi
  160.  
  161. echo " "
  162. echo "Server comment? (ie: Main Hub Server)"
  163. echo $n " [$COMMENT] -> $c"
  164. read cc
  165. if [ ! -z "$cc" ]; then
  166.     COMMENT="$cc"
  167. fi
  168.  
  169. echo " "
  170. echo "Main port? (ie: 6667)"
  171. echo $n " [$PORT] -> $c"
  172. read cc
  173. if [ ! -z "$cc" ]; then
  174.     PORT="$cc"
  175. fi
  176.  
  177. echo " "
  178. echo "What server numeric does the server have (range = 1..256)"
  179. echo "Must NOT be the same as other servers you link with"
  180. echo $n " [] -> $c"
  181. read cc
  182. if [ ! -z "$cc" ]; then
  183.     NUMERIC="$cc"
  184. fi
  185.  
  186. echo " "
  187. echo "What is your real name? (ie: John Doe)"
  188. echo $n " [$ADMIN] -> $c"
  189. read cc
  190. if [ ! -z "$cc" ]; then
  191.     ADMIN="$cc"
  192. fi
  193.  
  194. echo " "
  195. echo "What is your IRC nickname? (ie: JD)"
  196. echo $n " [$ADMNICK] -> $c"
  197. read cc
  198. if [ ! -z "$cc" ]; then
  199.     ADMNICK="$cc"
  200. fi
  201.  
  202. echo " "
  203. echo "What is your e-mail address? (ie: john@doe.com)"
  204. echo $n " [$ADMADDR] -> $c"
  205. read cc
  206. if [ ! -z "$cc" ]; then
  207.     ADMADDR="$cc"
  208. fi
  209.  
  210. echo " "
  211. OPERNAME="$ADMNICK"
  212. echo "What will your opername be for your O:line? (ie: johndoe)"
  213. echo $n " [$OPERNAME] -> $c"
  214. read cc
  215. if [ ! -z "$cc" ]; then
  216.     OPERNAME="$cc"
  217. fi
  218.  
  219. echo " "
  220. echo "What oper flags do you want to have? (ie: OAWZ)"
  221. echo "Some flags to choose from:"
  222. echo "  o = local oper"
  223. echo "  O = global oper"
  224. echo "  N = network administrator"
  225. echo "  A = server administrator"
  226. echo "  C = co administrator"
  227. echo "  T = technical administrator"
  228. echo "  read unrealircd.doc for more info about O:line flags)"
  229. echo $n " [$FLAGS] -> $c"
  230. read cc
  231. if [ ! -z "$cc" ]; then
  232.     FLAGS="$cc"
  233. fi
  234.  
  235.         echo " "
  236.         ENCRYPT=""
  237.         ENCRYPT="bad"
  238.         while [ "$ENCRYPT" = "bad" ]; do
  239.                 echo "Do you use encrypted oper passwords?"
  240.                 echo $n " [Yes] -> $c"
  241.                 read cc
  242.                 if [ -z "$cc" ]; then
  243.                         cc="Yes"
  244.                 fi
  245.                 case "$cc" in
  246.                         [Yy]*)
  247.                                 ENCRYPT="Yes"
  248.                                 ;;
  249.                         [Nn]*)
  250.                                 ENCRYPT="No"
  251.                                 ;;
  252.                         *)
  253.                                 echo "Please specify yes or no."
  254.                                 ENCRYPT="bad"
  255.                                 ;;
  256.                 esac
  257.         done
  258.  
  259. if [ "$ENCRYPT" = "Yes" ] ; then
  260. echo "Compile the file called mkpasswd.c in the 'crypt' directory"
  261. echo "Then run it (./mkpasswd) and input the passwd to be encrypted"
  262. echo "Then copy the output into the passwd slot in the O:line"
  263. echo "NOTE: You can encrypt on irc via /mkpasswd <passwd>"
  264. fi
  265.  
  266. echo " "
  267. echo "What will your /oper password be? (ie: snoopy67)"
  268. echo $n " [$OPERPASS] -> $c"
  269. read cc
  270. if [ ! -z "$cc" ]; then
  271.     OPERPASS="$cc"
  272. fi
  273.  
  274. echo " "
  275. echo "What is your user@host mask on IRC? (ie: *@*.toronto.globalserve.net)"
  276. echo $n " [$OPERADDR] -> $c"
  277. read cc
  278. if [ ! -z "$cc" ]; then
  279.     OPERADDR="$cc"
  280. fi
  281.  
  282. echo " "
  283. echo "What do you want your die password to be?"
  284. echo $n " [$DIEPASS] -> $c"
  285. read cc
  286. if [ ! -z "$cc" ]; then
  287.         DIEPASS="$cc"
  288. fi
  289.  
  290. echo " "
  291. echo "What do you want your restart password to be?"
  292. echo $n " [$RESTARTPASS] -> $c"
  293. read cc
  294. if [ ! -z "$cc" ]; then
  295.         RESTARTPASS="$cc"
  296. fi
  297.  
  298. echo " "
  299. echo "If your running services, or linking to a network that has"
  300. echo "services, please state the services servername."
  301. echo "If you are running a non-services network, just type 'next'"
  302. echo $n " [$SERVICES] -> $c"
  303. read cc
  304.  
  305. #if [ ! -z "$cc" ]; then
  306. #        SERVICES="$cc"
  307. #fi
  308.  
  309. if [ "$cc" = "next" ]; then
  310.         SERVICES="No.Services.Selected"
  311. elif [ ! -z "$cc" ]; then
  312.         SERVICES="$cc"
  313. fi
  314.  
  315. cat > $CONF << __EOF__
  316. ########################
  317. #
  318. # Filename:  $IRCDCONF
  319. #  Created:  $DATE - $TIME
  320. #
  321. ########################
  322.  
  323. ############ Server Info ############
  324. M:$SERVNAME:$VIRTUAL:$COMMENT:$PORT:$NUMERIC
  325. #####################################
  326.  
  327. ############ Administrator Information #############
  328. A:$ADMIN:$ADMNICK:$ADMADDR
  329. ####################################################
  330.  
  331. ############ Y-lines #############
  332. # Client Y:lines
  333. Y:1:90:0:245:100000
  334. # Server Y:lines
  335. Y:50:300:600:1:1000000
  336. ##################################
  337.  
  338. ############ I/Access Lines #############
  339. I:*@*::*@*::1
  340. #########################################
  341.  
  342. ############ X:LINE Die/Restart Password ############
  343. X:$DIEPASS:$RESTARTPASS
  344. #####################################################
  345.  
  346. ## O-line (O:hostmask:password:opername:flags:1) ##
  347. O:$OPERADDR:$OPERPASS:$OPERNAME:$FLAGS:1
  348. ###################################################
  349.  
  350. __EOF__
  351.  
  352.  
  353. echo " "
  354. echo "   Would you like to configure any servers for linking?"
  355. echo "Type the servername, or type 'done' when finished."
  356. echo $n " [done] -> $c"
  357. read cc
  358.  
  359. if [ -z "$cc" ]; then
  360.     cc="done"
  361. fi
  362.  
  363. while [ "$cc" != "done" ]; do
  364.     THESERV="$cc"
  365.  
  366.     SHOST="none"
  367.     while [ "$SHOST" = "none" ]; do
  368.         echo " "
  369.         echo "Hostname or ip for the other server? Must be specified."
  370.         echo $n " [] -> $c"
  371.         read SHOST
  372.     done    
  373.  
  374.     echo " "
  375.     echo "Password to send to the other server?"
  376.     echo $n " [$LINKPASS] -> $c"
  377.     read CLP
  378.     if [ -z "$CLP" ]; then
  379.         CLP="$LINKPASS"
  380.     fi
  381.  
  382.     echo " "
  383.     AUTOPORT=""
  384.     AUTOCONN="bad"
  385.     while [ "$AUTOCONN" = "bad" ]; do
  386.         echo " "
  387.         echo "Should we autconnect to this server?"
  388.         echo $n " [Yes] -> $c"
  389.         read cc
  390.         if [ -z "$cc" ]; then
  391.             cc="Yes"
  392.         fi
  393.         case "$cc" in
  394.             [Yy]*)
  395.                 AUTOCONN="yes"
  396.                 echo "What port should we autoconnect to?"
  397.                 echo $n " [7029] -> $c"
  398.                 read AUTOPORT
  399.                 if [ -z "$AUTOPORT" ]; then
  400.                     AUTOPORT="7029"
  401.                 fi
  402.                 ;;
  403.             [Nn]*)
  404.                 AUTOCONN="no"
  405.                 ;;
  406.             *)
  407.                 echo "Please specify yes or no."
  408.                 AUTOCONN="bad"
  409.                 ;;
  410.         esac
  411.     done
  412.  
  413.     echo " "
  414.     HUB="bad"
  415.     while [ "$HUB" = "bad" ]; do
  416.         echo " "
  417.         echo "Will this server be a hub?"
  418.         echo $n " [Yes] -> $c"
  419.         read cc
  420.         if [ -z "$cc" ]; then
  421.             cc="Yes"
  422.         fi
  423.         case "$cc" in
  424.             [Yy]*)
  425.                 HUB="Yes"
  426.                 ;;
  427.             [Nn]*)
  428.                 HUB="no"
  429.                 ;;
  430.             *)
  431.                 echo "Please specify yes or no."
  432.                 HUB="bad"
  433.                 ;;
  434.         esac
  435.     done
  436.  
  437.     if [ "$HUB" = "Yes" ]; then
  438.         echo "############ HUB LINES #############" >> $CONF
  439.         echo "H:*:*:$THESERV" >> $CONF
  440.         echo "####################################" >> $CONF
  441.         echo "" >> $CONF
  442.     fi
  443.  
  444.         echo "############ C/N LINES #############" >> $CONF
  445.         echo "C:$SHOST:$CLP:$THESERV:$AUTOPORT:50" >> $CONF
  446.         echo "N:$SHOST:$CLP:$THESERV::50" >> $CONF
  447.         echo "####################################" >> $CONF
  448.     echo "" >> $CONF
  449.  
  450.     echo " "
  451.     echo "Type the servername, or type 'done' when finished."
  452.     echo $n " [done] -> $c"
  453.     read cc
  454.     if [ -z "$cc" ]; then
  455.         cc="done"
  456.     fi
  457. done
  458.  
  459. cat >> $CONF << __EOF__
  460. ############ Uline for Services ############
  461. U:$SERVICES:*:*
  462. ############################################
  463.  
  464. ############ Q-Lined NickNames ############
  465. Q::Reserved for services:*C*h*a*n*S*e*r*v*
  466. Q::Reserved for services:*N*i*c*k*S*e*r*v*
  467. Q::Reserved for services:*M*e*m*o*S*e*r*v*
  468. Q::Reserved for services:*H*e*l*p*S*e*r*v*
  469. Q::Reserved for services:*O*p*e*r*S*e*r*v*
  470. Q::Reserved for services:*I*n*f*o*S*e*r*v*
  471. Q::Reserved for Administrator:*Admin*
  472. Q::Reserved for ircops:*IRC*op*
  473. Q::Reserved for ircops:*Oper*
  474. Q::Bug in mIRC:Status
  475. ###########################################
  476.  
  477. ############ PORT LINES #############
  478. __EOF__
  479.  
  480. cc="blank"
  481. echo " "
  482. echo " "
  483. echo "   Would you like any extra ports, other than 6667? Enter them here."
  484. echo "Type 'done' when you are finished. Type 'default' to use 6665-6669/7000."
  485. while [ "$cc" != "done" ]; do
  486.     echo $n " [$OPRT] -> $c"
  487.     read cc
  488.     if [ -z "$cc" ]; then
  489.         cc="$OPRT"
  490.     fi
  491.     if [ "$cc" = "default" ]; then
  492.         echo "P:$VIRTUAL:*:*:6660" >> $CONF
  493.         echo "P:$VIRTUAL:*:*:6661" >> $CONF
  494.         echo "P:$VIRTUAL:*:*:6662" >> $CONF
  495.         echo "P:$VIRTUAL:*:*:6663" >> $CONF
  496.         echo "P:$VIRTUAL:*:*:6664" >> $CONF
  497.                 echo "P:$VIRTUAL:*:*:6665" >> $CONF
  498.                 echo "P:$VIRTUAL:*:*:6666" >> $CONF
  499.                 echo "P:$VIRTUAL:*:*:6668" >> $CONF
  500.                 echo "P:$VIRTUAL:*:*:6669" >> $CONF
  501.                 echo "P:$VIRTUAL:*:*:7000" >> $CONF
  502.         echo "P:$VIRTUAL:*:*:7029" >> $CONF
  503.         echo "#####################################" >> $CONF
  504.         cc="done"
  505.     fi
  506.     if [ "$cc" != "done" ]; then
  507.         if [ $cc = "$PORT" ]; then
  508.             echo "  No, $PORT is already defined in the M:line,"
  509.             echo "please use a port other than $PORT."
  510.         else
  511.             echo "P:$VIRTUAL:*:*:$cc" >> $CONF
  512.         fi
  513.     fi
  514.     case "$OPRT" in
  515.         6660) OPRT="done"
  516.             ;;
  517.         6661) OPRT="6660"
  518.             ;;
  519.         6662) OPRT="6661"
  520.             ;;
  521.         6663) OPRT="6662"
  522.             ;;
  523.         6664) OPRT="6663"
  524.             ;;
  525.         6665) OPRT="6664"
  526.             ;;
  527.         6666) OPRT="6665"
  528.             ;;
  529.         6669) OPRT="6666"
  530.             ;;
  531.         6668) OPRT="6669"
  532.             ;;
  533.         6667) OPRT="6668"
  534.             ;;
  535.         *) OPRT="done"
  536.             ;;
  537.     esac
  538. done
  539.  
  540. # Make it so ONLY the one who created the conf can read or write.
  541. chmod 700 $IRCDCONF
  542.  
  543. cat << __EOF__
  544.  
  545.  
  546.     OK, $IRCDCONF has been generated according to what you specified.
  547. Make sure you double check for errors in $IRCDCONF. We recommend that
  548. you take a look at your $IRCDCONF right now. Thanks for using UnrealIRCd
  549.  
  550. __EOF__
  551.         echo "Have a nice day."
  552.         echo ""
  553.         exit 1
  554.