1
0
mirror of https://github.com/anope/anope.git synced 2026-06-12 19:14:47 +02:00
Files
anope/Config
T
dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b 5c3ee8a19a BUILD : 1.7.5 (335) BUGS : 142, 152, 154, 155, 156, 157, 158 NOTES : Applied bugfix bundle patch from Trystan.
git-svn-id: svn://svn.anope.org/anope/trunk@335 31f1291d-b8d6-0310-a050-a5561fc1590b


git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@211 5417fbe8-f217-4b02-8779-1006273d7864
2004-08-26 14:26:06 +00:00

383 lines
9.6 KiB
Bash
Executable File

#!/bin/sh
#
# Configuration script for Services.
#
# Anope (c) 2003 Anope team
# Contact us at dev@anope.org
#
# This program is free but copyrighted software; see the file COPYING for
# details.
#
# Based on the original code of Epona by PegSoft.
# Based on the original code of Services by Andy Church.
#
###########################################################################
echo2 () {
$ECHO2 "$*$ECHO2SUF" # these are defined later
}
ECHO2SUF=''
if [ "`echo -n a ; echo -n b`" = "ab" ] ; then
ECHO2='echo -n'
elif [ "`echo 'a\c' ; echo 'b\c'`" = "ab" ] ; then
ECHO2='echo' ; ECHO2SUF='\c'
elif [ "`printf 'a' 2>&1 ; printf 'b' 2>&1`" = "ab" ] ; then
ECHO2='printf "%s"'
else
# oh well...
ECHO2='echo'
fi
export ECHO2 ECHO2SUF
exists () { # because some shells don't have test -e
if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then
return 0
else
return 1
fi
}
###########################################################################
# Init values
###########################################################################
BINDEST=$HOME/services
DATDEST=$HOME/services
RUNGROUP=
UMASK=
IRCTYPE="no default"
ENCRYPTION=
###########################################################################
# Load the cache
###########################################################################
if [ -f config.cache -a -r config.cache -a ! "$IGNORE_CACHE" ] ; then
cat <<EOT
Using defaults from config.cache. To ignore, rm config.cache
EOT
. config.cache
fi
###########################################################################
echo ""
echo "-========================= A N O P E ==========================-"
echo "For more detailed information on the features of Anope1.7 please"
echo "read the self-named documentation found on the 'docs' directory."
echo ""
echo "Anope is a set of IRC Service expanded upon Lara's Epona, based"
echo "on Andy Church's IRC Services. For all your Anope needs please"
echo "visit our portal at http://www.anope.org/"
echo ""
echo "Please read the INSTALL file for install/upgrade instructions."
echo "Reading the FAQ and README files would be a good idea too. (all"
echo "documentation is located on directory 'docs')."
echo "-==============================================================-"
echo ""
echo "Beginning Services configuration."
echo ""
###########################################################################
# Ask the user anything we need to know ahead of time.
export ok INPUT
####
ok=0
echo "Note: press Return for the default, or enter a new value."
echo "In what directory do you want the binaries to be installed?"
while [ $ok -eq 0 ] ; do
echo2 "[$BINDEST] "
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
if [ ! "$INPUT" ] ; then
INPUT=$BINDEST
fi
if [ ! -d "$INPUT" ] ; then
if exists "$INPUT" ; then
echo "$INPUT exists, but is not a directory!"
else
echo "$INPUT does not exist. Create it?"
echo2 "[y] "
read YN
if [ "$YN" != "n" ] ; then
if mkdir -p $INPUT ; then
ok=1
fi
fi
fi
elif exists "$INPUT/include/services.h" ; then
echo "You cannot use the Services source directory as a target directory."
else
ok=1
fi
done
BINDEST=$INPUT
DATDEST=$INPUT
echo ""
####
ok=0
echo "Where do you want the data files to be installed?"
while [ $ok -eq 0 ] ; do
echo2 "[$DATDEST] "
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
if [ ! "$INPUT" ] ; then
INPUT=$DATDEST
fi
if [ ! -d "$INPUT" ] ; then
if exists "$INPUT" ; then
echo "$INPUT exists, but is not a directory!"
else
echo "$INPUT does not exist. Create it?"
echo2 "[y] "
read YN
if [ "$YN" != "n" ] ; then
if mkdir -p $INPUT ; then
ok=1
fi
fi
fi
elif exists "$INPUT/include/services.h" ; then
echo "You cannot use the Services source directory as a target directory."
else
ok=1
fi
done
DATDEST=$INPUT
echo ""
####
OLD_RUNGROUP="$RUNGROUP"
if [ "$RUNGROUP" ] ; then
echo "Which group should all Services data files be owned by? (If Services"
echo "should not force files to be owned by a particular group, type "\"none\"
echo "(without the quotes) and press Return.)"
else
echo "Which group should all Services data files be owned by? (If Services"
echo "should not force files to be owned by a particular group, just press"
echo "Return.)"
fi
echo2 "[$RUNGROUP] "
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
if [ "$INPUT" ] ; then
if [ "$INPUT" = "none" ] ; then
RUNGROUP=""
else
RUNGROUP="$INPUT"
fi
fi
echo ""
####
if [ ! "$UMASK" -o "$RUNGROUP" != "$OLD_RUNGROUP" ] ; then
if [ "$RUNGROUP" ] ; then
UMASK=007
else
UMASK=077
fi
fi
ok=0
echo "What should the default umask for data files be (in octal)?"
echo "(077 = only accessible by owner; 007 = accessible by owner and group)"
while [ $ok -eq 0 ] ; do
echo2 "[$UMASK] "
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
if [ ! "$INPUT" ] ; then
INPUT=$UMASK
fi
if [ `echo "$INPUT" | grep -c '[^0-7]'` -gt 0 ] ; then
echo "$UMASK is not a valid octal number!"
else
if [ "`echo $INPUT | cut -c1`" != "0" ] ; then
INPUT=0$INPUT
fi
ok=1
fi
done
UMASK=$INPUT
echo ""
####
ok=0
echo "Select the closest to the type of server on your IRC network:"
echo " 1) DreamForge 4.6.7 [dated IRCd, upgrade to a current one]"
echo " 2) Bahamut 1.4.27 [or later]"
echo " 3) UnrealIRCd 3.1.1 [or later (not 3.2)]"
echo " 4) UltimateIRCd 2.8.2 [or later]"
echo " 5) UltimateIRCd 3.0.0 [alpha26 or later]"
echo " 6) Hybrid IRCd 7.0 [experimental]"
echo " 7) ViagraIRCd 1.3.x [or later]"
echo " 8) PTlink 6.15.0 [experimental]"
echo " 9) RageIRCd 2.0.0 [beta-6 or later]"
echo " 10) Unreal 3.2 [Unreal 3.2 beta19 or later]"
while [ $ok -eq 0 ] ; do
echo2 "[$IRCTYPE] "
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
if [ ! "$INPUT" ] ; then
INPUT=$IRCTYPE
fi
case $INPUT in
no\ default)
echo "You must specify your IRC server type in order for Services to function"
echo "correctly."
;;
1)
IRCTYPE_DEF="IRC_DREAMFORGE"
ok=1;
;;
2)
IRCTYPE_DEF="IRC_BAHAMUT"
ok=1;
;;
3)
IRCTYPE_DEF="IRC_UNREAL31"
ok=1;
;;
4)
IRCTYPE_DEF="IRC_ULTIMATE"
ok=1;
;;
5)
IRCTYPE_DEF="IRC_ULTIMATE3"
ok=1;
;;
6)
IRCTYPE_DEF="IRC_HYBRID"
ok=1;
;;
7)
IRCTYPE_DEF="IRC_VIAGRA"
ok=1;
;;
8)
IRCTYPE_DEF="IRC_PTLINK"
ok=1;
;;
9)
IRCTYPE_DEF="IRC_RAGE2"
ok=1;
;;
10)
IRCTYPE_DEF="IRC_UNREAL32"
ok=1;
;;
*)
echo "Please enter a valid option number."
;;
esac
done
IRCTYPE=$INPUT
echo ""
####
if [ "$ENCRYPTION" = "ENCRYPT_MD5" ] ; then
DEF=yes
else
DEF=no
fi
ok=0
echo "Do you want to use the MD5 message-digest algorithm to encrypt passwords?"
echo "(Selecting "\"yes\"" protects your passwords from being stolen if someone"
echo "gains access to the Services databases, but makes it impossible to recover"
echo "forgotten passwords. There is no way to reverse this operation, so make"
echo "sure you really want to enable it.)"
while [ $ok -eq 0 ] ; do
echo2 "[$DEF] "
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
if [ ! "$INPUT" ] ; then
INPUT=$DEF
fi
case $INPUT in
n*|N*)
ENCRYPTION=
ok=1
;;
y*|Y*)
ENCRYPTION=ENCRYPT_MD5
ok=1
;;
*)
echo "Please enter 'yes' or 'no'."
;;
esac
done
echo ""
####
################################################################################
# Store values
################################################################################
echo2 "Saving configuration results in config.cache... "
cat <<EOT >config.cache
BINDEST="$BINDEST"
DATDEST="$DATDEST"
RUNGROUP="$RUNGROUP"
UMASK=$UMASK
IRCTYPE=$IRCTYPE
IRCTYPE_DEF="$IRCTYPE_DEF"
ENCRYPTION="$ENCRYPTION"
EOT
echo "done."
################################################################################
# Build the configure string
################################################################################
WITH_BIN=""
WITH_DATA=""
WITH_ENC=""
WITH_IRCD=""
WITH_RUN=""
WITH_PERM=""
if [ "$BINDEST" != "" ] ; then
WITH_BIN=" --with-bindir=$BINDEST"
WITH_DATA=" --with-datadir=$DATDEST"
fi
if [ "$DATDEST" != "" ] ; then
WITH_DATA=" --with-datadir=$DATDEST"
fi
if [ "$ENCRYPTION" != "" ] ; then
WITH_ENC=" --with-encryption"
fi
if [ "$IRCTYPE_DEF" != "" ] ; then
WITH_IRCD=" --with-ircd=$IRCTYPE_DEF"
fi
if [ "$RUNGROUP" != "" ] ; then
WITH_RUN=" --with-rungroup=$RUNGROUP"
fi
if [ "$UMASK" != "" ] ; then
WITH_PERM=" --with-permissions=$UMASK"
fi
./configure $WITH_BIN $WITH_DATA $WITH_ENC $WITH_IRCD $WITH_RUN $WITH_PERM