mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-30 23:26:39 +02:00
23c14e56ad
then change the default value to /usr (or similar) during ./Config and output a warning. We do this since system-wide cURL is under almost all circumstances preferred as it is maintained by your OS/distro and hence receives bug fixes and security updates on a regular basis (or should, anyway). Experience shows that ~/curl is rarely kept up to date since "it works". In the past, many years ago, system wide cURL did not have AsynchDNS. Nowadays nearly all distros build cURL with some sort of AsynchDNS which makes things much more useable.
884 lines
21 KiB
Bash
Executable File
884 lines
21 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Config script for UnrealIRCd
|
|
# (C) 2001-2016 The UnrealIRCd Team
|
|
#
|
|
# This configure script is free software; the UnrealIRCd Team gives
|
|
# unlimited permission to copy, distribute and modify as long as the
|
|
# copyright headers stay intact
|
|
#
|
|
#
|
|
# Rewritten completely to be an interface to autoconf by codemastr
|
|
# This was inspired by the config by Michael Graff (explorer@flame.org)
|
|
# but was written from scratch
|
|
|
|
# In order to be faster than the old Config, this assumes that all information
|
|
# in the cache file is valid and therefore doesn't check it, so if you messed with
|
|
# default values thats your problem :P
|
|
|
|
# some bits edited by baafie on March 17 2004, every change marked.
|
|
|
|
|
|
RUN_CONFIGURE () {
|
|
ARG=" "
|
|
|
|
if [ -z "$BINDIR" -o -z "$DATADIR" -o -z "$CONFDIR" -o -z "$MODULESDIR" -o -z "$LOGDIR" -o -z "$CACHEDIR" -o -z "$DOCDIR" -o -z "$TMPDIR" ]; then
|
|
echo "Sorry './Config -quick' cannot be used because your 'config.settings'"
|
|
echo "file either does not exist or is from an old UnrealIRCd version"
|
|
echo "(older than version 3.4-alpha4)."
|
|
echo ""
|
|
echo "Please run './Config' without -quick and answer all questions."
|
|
echo ""
|
|
exit
|
|
fi
|
|
|
|
|
|
mkdir -p $TMPDIR
|
|
|
|
# Do this even if we're not in advanced mode
|
|
if [ "$SHOWLISTMODES" = "1" ] ; then
|
|
ARG="$ARG--with-showlistmodes "
|
|
fi
|
|
if [ "$ADVANCED" = "1" ] ; then
|
|
if [ "$TOPICNICKISNUH" = "1" ] ; then
|
|
ARG="$ARG--with-topicisnuhost "
|
|
fi
|
|
if [ "$SHUNNOTICES" = "1" ] ; then
|
|
ARG="$ARG--with-shunnotices "
|
|
fi
|
|
if [ "$NOOPEROVERRIDE" = "1" ] ; then
|
|
ARG="$ARG--with-no-operoverride "
|
|
fi
|
|
if [ "$DISABLEUSERMOD" = "1" ] ; then
|
|
ARG="$ARG--with-disableusermod "
|
|
fi
|
|
if [ "$OPEROVERRIDEVERIFY" = "1" ] ; then
|
|
ARG="$ARG--with-operoverride-verify "
|
|
fi
|
|
if [ "$DISABLEEXTBANSTACKING" = "1" ]; then
|
|
ARG="$ARG--with-disable-extendedban-stacking ";
|
|
fi
|
|
fi
|
|
if test x"$SSLDIR" = "x" ; then
|
|
ARG="$ARG--enable-ssl "
|
|
else
|
|
ARG="$ARG--enable-ssl=$SSLDIR "
|
|
fi
|
|
if [ "$REMOTEINC" = "1" ] ; then
|
|
ARG="$ARG--enable-libcurl=$CURLDIR "
|
|
fi
|
|
if [ "$PREFIXAQ" != "1" ]; then
|
|
ARG="$ARG--disable-prefixaq "
|
|
fi
|
|
|
|
ARG="$ARG--with-bindir=$BINDIR "
|
|
ARG="$ARG--with-datadir=$DATADIR "
|
|
ARG="$ARG--with-pidfile=$DATADIR/unrealircd.pid "
|
|
ARG="$ARG--with-confdir=$CONFDIR "
|
|
ARG="$ARG--with-modulesdir=$MODULESDIR "
|
|
ARG="$ARG--with-logdir=$LOGDIR "
|
|
ARG="$ARG--with-cachedir=$CACHEDIR "
|
|
ARG="$ARG--with-docdir=$DOCDIR "
|
|
ARG="$ARG--with-tmpdir=$TMPDIR "
|
|
ARG="$ARG--with-scriptdir=$BASEPATH "
|
|
ARG="$ARG--with-nick-history=$NICKNAMEHISTORYLENGTH "
|
|
ARG="$ARG--with-sendq=$MAXSENDQLENGTH "
|
|
ARG="$ARG--with-permissions=$DEFPERM "
|
|
ARG="$ARG--with-fd-setsize=$MAXCONNECTIONS "
|
|
ARG="$ARG--enable-dynamic-linking "
|
|
ARG="$ARG $EXTRAPARA "
|
|
CONF="./configure $ARG"
|
|
if [ "x$INSTALLCURL" = "x1" ]; then
|
|
extras/curlinstall || exit 1
|
|
fi
|
|
echo $CONF
|
|
$CONF || exit 1
|
|
cd "$UNREALCWD"
|
|
if [ "$QUICK" != "1" ] ; then
|
|
if [ ! -f $CONFDIR/ssl/server.cert.pem ]; then
|
|
export OPENSSLPATH
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
if [ "$GENCERTIFICATE" = "1" ] ; then
|
|
TEST="Yes"
|
|
else
|
|
TEST="No"
|
|
fi
|
|
echo ""
|
|
echo "Do you want to generate an SSL certificate for the IRCd?"
|
|
echo "Only answer No if you already have one."
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
GENCERTIFICATE="1"
|
|
;;
|
|
[Nn]*)
|
|
GENCERTIFICATE=""
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
if [ "$GENCERTIFICATE" = 1 ]; then
|
|
make pem
|
|
echo "Certificate created successfully."
|
|
sleep 1
|
|
else
|
|
echo "Ok, not generating SSL certificate. Make sure that the certificate and key"
|
|
echo "are installed in conf/ssl/server.crt.pem and conf/ssl/server.key.pem prior to starting the IRCd."
|
|
fi
|
|
else
|
|
echo "SSL certificate exists in $CONFDIR/ssl/server.cert.pem, no need to regenerate."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
RUN_ADVANCED () {
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
if [ "$SHOWLISTMODES" = "1" ] ; then
|
|
TEST="Yes"
|
|
else
|
|
TEST="No"
|
|
fi
|
|
echo ""
|
|
echo "Do you want to show the modes a channel has set in the /list output?"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
SHOWLISTMODES="1"
|
|
;;
|
|
[Nn]*)
|
|
SHOWLISTMODES=""
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
if [ "$TOPICNICKISNUH" = "1" ] ; then
|
|
TEST="Yes"
|
|
else
|
|
TEST="No"
|
|
fi
|
|
echo ""
|
|
echo "Do you want the /topic command to show the nick!user@host of the person"
|
|
echo "who set the topic, rather than just the nickname?"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
TOPICNICKISNUH="1"
|
|
;;
|
|
[Nn]*)
|
|
TOPICNICKISNUH=""
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
if [ "$SHUNNOTICES" = "1" ] ; then
|
|
TEST="Yes"
|
|
else
|
|
TEST="No"
|
|
fi
|
|
echo ""
|
|
echo "Should UnrealIRCd notify a user when they are no longer shunned?"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
SHUNNOTICES="1"
|
|
;;
|
|
[Nn]*)
|
|
SHUNNOTICES=""
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
if [ "$NOOPEROVERRIDE" = "1" ] ; then
|
|
TEST="Yes"
|
|
else
|
|
TEST="No"
|
|
fi
|
|
echo ""
|
|
echo "Do you want to disable oper override?"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
NOOPEROVERRIDE="1"
|
|
;;
|
|
[Nn]*)
|
|
NOOPEROVERRIDE=""
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
if [ "$DISABLEUSERMOD" = "1" ] ; then
|
|
TEST="Yes"
|
|
else
|
|
TEST="No"
|
|
fi
|
|
echo ""
|
|
echo "Do you want to disable /sethost, /setident, /chgname,"
|
|
echo "/chghost, and /chgident?"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
DISABLEUSERMOD="1"
|
|
;;
|
|
[Nn]*)
|
|
DISABLEUSERMOD=""
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
if [ "$OPEROVERRIDEVERIFY" = "1" ] ; then
|
|
TEST="Yes"
|
|
else
|
|
TEST="No"
|
|
fi
|
|
echo ""
|
|
echo "Do you want to require opers to /invite themselves into a +s or +p channel?"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
OPEROVERRIDEVERIFY="1"
|
|
;;
|
|
[Nn]*)
|
|
OPEROVERRIDEVERIFY=""
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
if [ "$DISABLEEXTBANSTACKING" = "1" ] ; then
|
|
TEST="Yes"
|
|
else
|
|
TEST="No"
|
|
fi
|
|
echo ""
|
|
echo "Do you want to disable extended ban stacking (~q:~c:#test, etc) support?"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
DISABLEEXTBANSTACKING="1"
|
|
;;
|
|
[Nn]*)
|
|
DISABLEEXTBANSTACKING="0"
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
}
|
|
c=""
|
|
n=""
|
|
UNREALCWD="`pwd`"
|
|
BASEPATH="$HOME/unrealircd"
|
|
DEFPERM="0600"
|
|
SSLDIR=""
|
|
NICKNAMEHISTORYLENGTH="2000"
|
|
MAXSENDQLENGTH="3000000"
|
|
MAXCONNECTIONS="1024"
|
|
REMOTEINC=""
|
|
CURLDIR=""
|
|
PREFIXAQ="1"
|
|
SHOWLISTMODES="1"
|
|
TOPICNICKISNUH=""
|
|
SHUNNOTICES=""
|
|
NOOPEROVERRIDE=""
|
|
DISABLEUSERMOD=""
|
|
OPEROVERRIDEVERIFY=""
|
|
DISABLEEXTBANSTACKING=""
|
|
GENCERTIFICATE="1"
|
|
EXTRAPARA=""
|
|
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
|
|
c="\c"
|
|
else
|
|
n="-n"
|
|
fi
|
|
|
|
|
|
#parse arguments
|
|
NOCACHE=""
|
|
IMPORTEDSETTINGS=""
|
|
NOINTRO=""
|
|
QUICK=""
|
|
CLEAN=""
|
|
ADVANCED=""
|
|
while [ $# -ge 1 ] ; do
|
|
if [ $1 = "--help" ] ; then
|
|
echo "Config utility for UnrealIRCd"
|
|
echo "-----------------------------"
|
|
echo "Syntax: ./Config [options]"
|
|
echo "-nocache Ignore settings saved in config.settings"
|
|
echo "-nointro Skip intro (release notes, etc)"
|
|
echo "-quick Skip questions, go straight to configure"
|
|
echo "-advanced Include additional advanced questions"
|
|
echo "-clean Clean ./configure cache"
|
|
exit 0
|
|
elif [ $1 = "-nocache" ] ; then
|
|
NOCACHE="1"
|
|
elif [ $1 = "-nointro" ] ; then
|
|
NOINTRO="1"
|
|
elif [ $1 = "-quick" -o $1 = "-q" ] ; then
|
|
QUICK="1"
|
|
echo "running quick config"
|
|
if [ -f "config.settings" ] ; then
|
|
. ./config.settings
|
|
fi
|
|
RUN_CONFIGURE
|
|
cd "$UNREALCWD"
|
|
exit 0
|
|
elif [ $1 = "-clean" -o $1 = "-C" ] ; then
|
|
CLEAN="1"
|
|
elif [ $1 = "-advanced" ] ; then
|
|
PREADVANCED="1"
|
|
fi
|
|
shift 1
|
|
done
|
|
|
|
if [ "$PREADVANCED" = "1" ] ; then
|
|
ADVANCED="1"
|
|
elif [ "$ADVANCED" = "1" ]; then
|
|
ADVANCED=""
|
|
fi
|
|
|
|
if [ -n "$CLEAN" ] ; then
|
|
rm -f config.cache
|
|
fi
|
|
|
|
clear
|
|
|
|
if [ -f ".CHANGES.NEW" -a -z "$NOINTRO" ] ; then
|
|
more .CHANGES.NEW
|
|
echo $n "[Enter to continue]"
|
|
read cc
|
|
clear
|
|
fi
|
|
if [ -f "doc/RELEASE-NOTES" -a -z "$NOINTRO" ] ; then
|
|
more doc/RELEASE-NOTES
|
|
echo $n "[Enter to continue]"
|
|
read cc
|
|
clear
|
|
fi
|
|
|
|
echo "We will now ask you a number of questions."
|
|
echo "You can just press ENTER to accept the defaults!"
|
|
echo ""
|
|
|
|
if [ -z "$NOCACHE" ] ; then
|
|
# This needs to be updated each release so auto-upgrading works for settings, modules, etc!!:
|
|
UNREALRELEASES="unrealircd-4.0.7-rc1 unrealircd-4.0.6 unrealircd-4.0.5 unrealircd-4.0.4 unrealircd-4.0.3.1 unrealircd-4.0.3 unrealircd-4.0.3-rc1 unrealircd-4.0.2 unrealircd-4.0.1 unrealircd-4.0.0"
|
|
if [ -f "config.settings" ]; then
|
|
. ./config.settings
|
|
else
|
|
# Try to load a previous config.settings
|
|
for x in $UNREALRELEASES
|
|
do
|
|
if [ -f ../$x/config.settings ]; then
|
|
IMPORTEDSETTINGS="../$x"
|
|
break
|
|
fi
|
|
done
|
|
echo "If you have previously installed UnrealIRCd on this shell then you can specify a"
|
|
echo "directory here so I can import the build settings and third party modules"
|
|
echo "to make your life a little easier."
|
|
if [ ! -z "$IMPORTEDSETTINGS" ]; then
|
|
echo "Found previous installation in: $IMPORTEDSETTINGS."
|
|
echo "You can enter a different path or type 'none' if you don't want to use it."
|
|
echo "Just press Enter to accept the default settings."
|
|
else
|
|
echo "If you install UnrealIRCd for the first time on this shell, then just hit Enter";
|
|
fi
|
|
|
|
TEST="$IMPORTEDSETTINGS"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ]; then
|
|
IMPORTEDSETTINGS="$TEST"
|
|
else
|
|
IMPORTEDSETTINGS="$cc"
|
|
fi
|
|
if [ "$IMPORTEDSETTINGS" = "none" ]; then
|
|
IMPORTEDSETTINGS=""
|
|
fi
|
|
if [ "$IMPORTEDSETTINGS" != "" ]; then
|
|
if [ ! -f $IMPORTEDSETTINGS/config.settings ]; then
|
|
echo "Directory $IMPORTEDSETTINGS does not exist or does not contain a config.settings file"
|
|
exit
|
|
fi
|
|
# Actually load the settings
|
|
. $IMPORTEDSETTINGS/config.settings
|
|
# Copy over 3rd party modules (also deals with 0 file cases, hence the silly looking code)
|
|
for f in $IMPORTEDSETTINGS/src/modules/third/*.c
|
|
do
|
|
[ -e "$f" ] && cp $f src/modules/third/
|
|
done
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
TEST="$BASEPATH"
|
|
echo ""
|
|
echo "In what directory do you want to install UnrealIRCd?"
|
|
echo "(Note: UnrealIRCd 4 will need to be installed somewhere."
|
|
echo " If this directory does not exist it will be created.)"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
BASEPATH=$TEST
|
|
else
|
|
BASEPATH=`eval echo $cc` # modified
|
|
fi
|
|
if [ "$BASEPATH" = "$UNREALCWD" ]; then
|
|
echo ""
|
|
echo "ERROR: The installation directory cannot be the same as the directory"
|
|
echo " containing the source code ($UNREALCWD)."
|
|
echo " HINT: Usually the directory containing the source is $HOME/unrealircd-4.x.y"
|
|
echo " and the installation directory you would need to enter is $HOME/unrealircd"
|
|
exit 1
|
|
fi
|
|
|
|
# TODO: For -advanced we could prompt the user.
|
|
BINDIR="$BASEPATH/bin"
|
|
DATADIR="$BASEPATH/data"
|
|
CONFDIR="$BASEPATH/conf"
|
|
MODULESDIR="$BASEPATH/modules"
|
|
LOGDIR="$BASEPATH/logs"
|
|
CACHEDIR="$BASEPATH/cache"
|
|
DOCDIR="$BASEPATH/doc"
|
|
TMPDIR="$BASEPATH/tmp"
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
TEST="$DEFPERM"
|
|
echo ""
|
|
echo "What should the default permissions for your configuration files be? (Set this to 0 to disable)"
|
|
echo "It is strongly recommended that you use 0600 to prevent unwanted reading of the file"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
DEFPERM=$TEST
|
|
break
|
|
fi
|
|
case "$cc" in
|
|
[0-9]*)
|
|
DEFPERM="$cc"
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter a number"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
echo "If you want, you can manually enter the path to OpenSSL/LibreSSL here."
|
|
echo "In most cases you can leave this blank and it will be detected automatically."
|
|
|
|
if [ -z "$SSLDIR" ]; then
|
|
uname|grep -q Darwin
|
|
if [ "$?" = 0 ]; then
|
|
echo "Looks like you're on a Mac - El Capitan and higher require"
|
|
echo "a 3rd party OpenSSL installation. We recommend using homebrew"
|
|
echo "to install OpenSSL, but you may install it any other way as well."
|
|
echo "We are selecting the default homebrew OpenSSL path - but you can"
|
|
echo "change it to another path if you have installed OpenSSL another way"
|
|
SSLDIR="/usr/local/opt/openssl/"
|
|
fi
|
|
fi
|
|
|
|
TEST="$SSLDIR"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
SSLDIR="$TEST"
|
|
else
|
|
SSLDIR=`eval echo $cc` # modified
|
|
fi
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
if [ "$REMOTEINC" = "1" ] ; then
|
|
TEST="Yes"
|
|
else
|
|
TEST="No"
|
|
fi
|
|
echo ""
|
|
echo "Do you want to enable remote includes?"
|
|
echo "This allows stuff like this in your configuration file:"
|
|
echo "include \"http://www.somesite.org/files/opers.conf\";"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
REMOTEINC="1"
|
|
;;
|
|
[Nn]*)
|
|
REMOTEINC=""
|
|
CURLDIR=""
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ "$REMOTEINC" = "1" ] ; then
|
|
if [ ! -d "$CURLDIR" ]; then
|
|
# Reset any previous CURLDIR if it doesn't exist (anymore)
|
|
CURLDIR=""
|
|
fi
|
|
|
|
|
|
INSTALLCURL="0"
|
|
|
|
if [ -d "/usr/local/include/curl" ]; then
|
|
SUGGESTCURLDIR="/usr/local"
|
|
fi
|
|
if [ -d "/usr/include/curl" ]; then
|
|
SUGGESTCURLDIR="/usr"
|
|
fi
|
|
|
|
GOTASYNC=0
|
|
if [ "x$SUGGESTCURLDIR" != "x" ]; then
|
|
# Check if it's of any use: a curl without async dns (cares) hangs the entire ircd..
|
|
# normally this is done in ./configure but now we're forced to do it also here..
|
|
if "$SUGGESTCURLDIR"/bin/curl-config --features | grep -q -e AsynchDNS; then
|
|
GOTASYNC="1"
|
|
fi
|
|
if [ "$GOTASYNC" != "1" ]; then
|
|
SUGGESTCURLDIRBAD="$CURLDIR"
|
|
SUGGESTCURLDIR=""
|
|
fi
|
|
fi
|
|
|
|
if [ "$CURLDIR" = "$HOME/curl" -a "x$SUGGESTCURLDIR" != "x" ]; then
|
|
# I guess some people will complain about this, but if system wide cURL is available
|
|
# and many people have old defaults then this is much preferred:
|
|
echo ""
|
|
echo "WARNING: Your previous (potentially old) setting is to use cURL from $HOME/curl."
|
|
echo "However, your operating system also provides a working cURL."
|
|
echo "I am therefore changing the setting to: $SUGGESTCURLDIR"
|
|
CURLDIR="$SUGGESTCURLDIR"
|
|
fi
|
|
|
|
if [ "x$CURLDIR" = "x" ]; then
|
|
# Local curl in ~/curl is used if it exists and system has no AsynchDNS
|
|
if [ "$GOTASYNC" != "1" -a -d "$HOME/curl" ]; then
|
|
CURLDIR="$HOME/curl"
|
|
fi
|
|
|
|
# Need to output it here, as the HOME check from above may cause this to be no longer relevant.
|
|
if [ "x$CURLDIR" = "x" -a "$GOTASYNC" != "1" ]; then
|
|
echo "Curl library was found in $SUGGESTCURLDIRBAD, but it does not support Asynchronous DNS (not compiled with c-ares)"
|
|
echo "so it's of no use to us as it would stall the IRCd on REHASH."
|
|
fi
|
|
fi
|
|
|
|
if [ "x$CURLDIR" = "x" ]; then
|
|
# Still empty?
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
TEST="Yes"
|
|
echo ""
|
|
echo "Do you want me to automatically download and install curl for you?"
|
|
echo "(will install in $HOME/curl)"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
INSTALLCURL="1"
|
|
CURLDIR="$HOME/curl"
|
|
;;
|
|
[Nn]*)
|
|
INSTALLCURL="0"
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
fi
|
|
|
|
if [ "$INSTALLCURL" != "1" ]; then
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
TEST="$CURLDIR"
|
|
echo ""
|
|
echo "Specify the directory you installed libcurl to"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
else
|
|
TEST=$cc
|
|
CURLDIR=`eval echo $cc` # modified
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
if [ "$PREFIXAQ" = "1" ] ; then
|
|
TEST="Yes"
|
|
else
|
|
TEST="No"
|
|
fi
|
|
echo ""
|
|
echo "Do you want to enable prefixes for chanadmin and chanowner?"
|
|
echo "This will give +a the & prefix and ~ for +q (just like +o is @)"
|
|
echo "Supported by the major clients (mIRC, xchat, epic, eggdrop, Klient,"
|
|
echo "PJIRC, irssi, CGI:IRC, etc.)"
|
|
echo "This feature should be enabled/disabled network-wide."
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
cc=$TEST
|
|
fi
|
|
case "$cc" in
|
|
[Yy]*)
|
|
PREFIXAQ="1"
|
|
;;
|
|
[Nn]*)
|
|
PREFIXAQ=""
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter either Yes or No"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
TEST="$NICKNAMEHISTORYLENGTH"
|
|
echo ""
|
|
echo "How far back do you want to keep the nickname history?"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
NICKNAMEHISTORYLENGTH=$TEST
|
|
break
|
|
fi
|
|
case "$cc" in
|
|
[1-9]*)
|
|
NICKNAMEHISTORYLENGTH="$cc"
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter a number"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
TEST="$MAXSENDQLENGTH"
|
|
echo ""
|
|
echo "What is the maximum sendq length you wish to have?"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
MAXSENDQLENGTH=$TEST
|
|
break
|
|
fi
|
|
case "$cc" in
|
|
[1-9][0-9][0-9][0-9]*)
|
|
MAXSENDQLENGTH="$cc"
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must enter a number greater than or equal to 1000"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo ""
|
|
TEST=""
|
|
while [ -z "$TEST" ] ; do
|
|
TEST="$MAXCONNECTIONS"
|
|
echo ""
|
|
echo "How many file descriptors (or sockets) can the IRCd use?"
|
|
echo $n "[$TEST] -> $c"
|
|
read cc
|
|
if [ -z "$cc" ] ; then
|
|
MAXCONNECTIONS=$TEST
|
|
break
|
|
fi
|
|
case "$cc" in
|
|
[1-9][0-9][0-9]*)
|
|
MAXCONNECTIONS="$cc"
|
|
;;
|
|
*)
|
|
echo ""
|
|
echo "You must to enter a number greater than or equal to 100"
|
|
TEST=""
|
|
;;
|
|
esac
|
|
done
|
|
if [ -n "$ADVANCED" ] ; then
|
|
RUN_ADVANCED
|
|
fi
|
|
|
|
TEST="$EXTRAPARA"
|
|
echo ""
|
|
echo "Would you like to pass any custom parameters to configure?"
|
|
echo "See \`./configure --help' and write them here:"
|
|
echo $n "[$TEST] -> $c"
|
|
read EXTRAPARA
|
|
if [ -z "$EXTRAPARA" ]; then
|
|
EXTRAPARA="$TEST"
|
|
fi
|
|
|
|
rm -f config.settings
|
|
cat > config.settings << __EOF__
|
|
#
|
|
BASEPATH="$BASEPATH"
|
|
BINDIR="$BINDIR"
|
|
DATADIR="$DATADIR"
|
|
CONFDIR="$CONFDIR"
|
|
MODULESDIR="$MODULESDIR"
|
|
LOGDIR="$LOGDIR"
|
|
CACHEDIR="$CACHEDIR"
|
|
DOCDIR="$DOCDIR"
|
|
TMPDIR="$TMPDIR"
|
|
PREFIXAQ="$PREFIXAQ"
|
|
MAXSENDQLENGTH="$MAXSENDQLENGTH"
|
|
MAXCONNECTIONS="$MAXCONNECTIONS"
|
|
NICKNAMEHISTORYLENGTH="$NICKNAMEHISTORYLENGTH"
|
|
DEFPERM="$DEFPERM"
|
|
SSLDIR="$SSLDIR"
|
|
REMOTEINC="$REMOTEINC"
|
|
CURLDIR="$CURLDIR"
|
|
SHOWLISTMODES="$SHOWLISTMODES"
|
|
TOPICNICKISNUH="$TOPICNICKISNUH"
|
|
SHUNNOTICES="$SHUNNOTICES"
|
|
NOOPEROVERRIDE="$NOOPEROVERRIDE"
|
|
DISABLEUSERMOD="$DISABLEUSERMOD"
|
|
OPEROVERRIDEVERIFY="$OPEROVERRIDEVERIFY"
|
|
DISABLEEXTBANSTACKING="$DISABLEEXTBANSTACKING"
|
|
GENCERTIFICATE="$GENCERTIFICATE"
|
|
EXTRAPARA="$EXTRAPARA"
|
|
ADVANCED="$ADVANCED"
|
|
__EOF__
|
|
RUN_CONFIGURE
|
|
cd "$UNREALCWD"
|
|
cat << __EOF__
|
|
|
|
_______________________________________________________________________
|
|
| |
|
|
| UnrealIRCd Compile-Time Config |
|
|
|_______________________________________________________________________|
|
|
|_______________________________________________________________________|
|
|
| |
|
|
| Now all you have to do is type 'make' and let it compile. When that's |
|
|
| done, you will receive other instructions on what to do next. |
|
|
| |
|
|
|_______________________________________________________________________|
|
|
|_______________________________________________________________________|
|
|
| - The UnrealIRCd Team - |
|
|
| |
|
|
| * Bram Matthys (Syzop) syzop@unrealircd.org |
|
|
| * Travis McArthur (Heero) heero@unrealircd.org |
|
|
|_______________________________________________________________________|
|
|
__EOF__
|
|
|