mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-07-02 12:33:15 +02:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b2e402231d |
-75
@@ -1,75 +0,0 @@
|
||||
# Ignore configure step
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
config.log
|
||||
conftest.*
|
||||
config.settings
|
||||
extras/pcre2*
|
||||
extras/c-ares*
|
||||
config.status
|
||||
extras/ircdcron/ircd.cron
|
||||
extras/ircdcron/ircdchk
|
||||
src/modules/snomasks/Makefile
|
||||
src/modules/chanmodes/Makefile
|
||||
src/modules/extbans/Makefile
|
||||
src/modules/usermodes/Makefile
|
||||
src/modules/Makefile
|
||||
src/modules/third/Makefile
|
||||
/Makefile
|
||||
/src/Makefile
|
||||
/unrealircd
|
||||
include/setup.h
|
||||
|
||||
# Ignore tags file
|
||||
tags
|
||||
|
||||
# Ignore editor files
|
||||
*\#*
|
||||
*~
|
||||
|
||||
# Ignore SSL Stuff
|
||||
server.cert.pem
|
||||
server.key.pem
|
||||
server.req.pem
|
||||
tls.rnd
|
||||
|
||||
# Ignores for platform stuff
|
||||
.DS_Store
|
||||
|
||||
# Ignores for build artifacts
|
||||
*.so
|
||||
*.o
|
||||
*.dSYM
|
||||
*.dylib
|
||||
src/ircd
|
||||
src/version.c
|
||||
src/include
|
||||
|
||||
# Ignores for mac stuff
|
||||
## Various settings
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
|
||||
## Other
|
||||
*.xccheckout
|
||||
*.moved-aside
|
||||
*.xcuserstate
|
||||
*.xcscmblueprint
|
||||
|
||||
## Obj-C/Swift specific
|
||||
*.hmap
|
||||
*.ipa
|
||||
|
||||
src/macosx/build/
|
||||
DerivedData
|
||||
src/macosx/pods/
|
||||
|
||||
# Doxygen generated files
|
||||
doc/doxygen/
|
||||
@@ -1,5 +0,0 @@
|
||||
Help out and make UnrealIRCd a better product!
|
||||
|
||||
You can do so by reporting issues, testing, programming, documenting,
|
||||
translating, helping others, and more.
|
||||
See https://www.unrealircd.org/docs/Contributing
|
||||
@@ -1,839 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Config script for UnrealIRCd
|
||||
# (C) 2001-2019 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" -o -z "$PRIVATELIBDIR" ]; 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 UnrealIRCd 5.0.0)."
|
||||
echo ""
|
||||
echo "Please run './Config' without -quick and answer all questions."
|
||||
echo ""
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
mkdir -p $TMPDIR
|
||||
mkdir -p $PRIVATELIBDIR
|
||||
|
||||
# Do this even if we're not in advanced mode
|
||||
if [ "$SHOWLISTMODES" = "1" ] ; then
|
||||
ARG="$ARG--with-showlistmodes "
|
||||
fi
|
||||
if [ "$ADVANCED" = "1" ] ; then
|
||||
if [ "$NOOPEROVERRIDE" = "1" ] ; then
|
||||
ARG="$ARG--with-no-operoverride "
|
||||
fi
|
||||
if [ "$OPEROVERRIDEVERIFY" = "1" ] ; then
|
||||
ARG="$ARG--with-operoverride-verify "
|
||||
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
|
||||
if [ "$MAXCONNECTIONS_REQUEST" != "auto" ]; then
|
||||
ARG="$ARG--with-maxconnections=$MAXCONNECTIONS_REQUEST "
|
||||
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-privatelibdir=$PRIVATELIBDIR "
|
||||
ARG="$ARG--with-scriptdir=$BASEPATH "
|
||||
ARG="$ARG--with-nick-history=$NICKNAMEHISTORYLENGTH "
|
||||
ARG="$ARG--with-permissions=$DEFPERM "
|
||||
ARG="$ARG--enable-dynamic-linking "
|
||||
ARG="$ARG $EXTRAPARA "
|
||||
CONF="./configure $ARG"
|
||||
# remove possibly old instances of curl in ~/unrealircd/lib/
|
||||
rm -f $PRIVATELIBDIR/*curl* 1>/dev/null 2>&1
|
||||
# Ensure we install curl even if someone does ./Config -quick...
|
||||
if [ "x$CURLDIR" = "x$UNREALCWD/extras/curl" ]; then
|
||||
INSTALLCURL=1
|
||||
fi
|
||||
if [ "x$INSTALLCURL" = "x1" ]; then
|
||||
extras/curlinstall "$PRIVATELIBDIR" || exit 1
|
||||
fi
|
||||
# At least do SOME parallel compiling by default, IF:
|
||||
# - the MAKE environment variable is not set
|
||||
# - the MAKEFLAGS environment variable is not set
|
||||
# - we are using GNU Make
|
||||
if [ "x$MAKE" = "x" ]; then
|
||||
if [ "x$MAKEFLAGS" = "x" ]; then
|
||||
if make --version 2>&1|grep -q "GNU Make"; then
|
||||
LOWMEM=0
|
||||
if [ -f /proc/meminfo ]; then
|
||||
FREEKB="`cat /proc/meminfo |grep MemAvailable|awk '{ print $2 }'`"
|
||||
if [ "$FREEKB" != "" -a "$FREEKB" -lt 768000 ]; then
|
||||
LOWMEM=1
|
||||
fi
|
||||
fi
|
||||
if [ "$LOWMEM" = 0 ]; then
|
||||
echo "Running with 4 concurrent build processes by default (make -j4)."
|
||||
export MAKE='make -j4'
|
||||
else
|
||||
echo "System detected with less than 750MB available memory, not forcing parallel build."
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo $CONF
|
||||
$CONF || exit 1
|
||||
cd "$UNREALCWD"
|
||||
|
||||
if [ "$QUICK" != "1" ] ; then
|
||||
if [ ! -f $CONFDIR/tls/server.cert.pem -a ! -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 "UnrealIRCd requires an SSL certificate in order to work."
|
||||
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
|
||||
echo
|
||||
echo "*******************************************************************************"
|
||||
echo "Next you will be asked some questions in order to generate the SSL certificate."
|
||||
echo "IMPORTANT: If you don't own a domain or don't know what to answer, then you can"
|
||||
echo " simply press ENTER or use fictional names for each question!"
|
||||
echo "*******************************************************************************"
|
||||
echo "Press ENTER to continue"
|
||||
read cc
|
||||
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/tls/server.cert.pem and conf/tls/server.key.pem prior to starting the IRCd."
|
||||
fi
|
||||
else
|
||||
echo "SSL certificate already exists in configuration directory, no need to regenerate."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Silently force a 'make clean' as otherwise part (or whole) of the
|
||||
# compiled source could be using different settings than the user
|
||||
# just requested when re-running ./Config.
|
||||
make clean 1>/dev/null 2>&1
|
||||
}
|
||||
|
||||
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 [ "$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 [ "$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
|
||||
|
||||
}
|
||||
c=""
|
||||
n=""
|
||||
UNREALCWD="`pwd`"
|
||||
BASEPATH="$HOME/unrealircd"
|
||||
DEFPERM="0600"
|
||||
SSLDIR=""
|
||||
NICKNAMEHISTORYLENGTH="2000"
|
||||
MAXCONNECTIONS_REQUEST="auto"
|
||||
REMOTEINC=""
|
||||
CURLDIR=""
|
||||
PREFIXAQ="1"
|
||||
SHOWLISTMODES="1"
|
||||
NOOPEROVERRIDE=""
|
||||
OPEROVERRIDEVERIFY=""
|
||||
GENCERTIFICATE="1"
|
||||
EXTRAPARA=""
|
||||
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
|
||||
c="\c"
|
||||
else
|
||||
n="-n"
|
||||
fi
|
||||
|
||||
date|egrep '2021|2022' 1>/dev/null 2>&1
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "*** WARNING ***"
|
||||
echo "UnrealIRCd 5.x will no longer be supported after June 1, 2023."
|
||||
echo "You should upgrade to a newer UnrealIRCd version before that date."
|
||||
echo "See https://www.unrealircd.org/docs/UnrealIRCd_5_EOL"
|
||||
echo $n . $c
|
||||
sleep 1
|
||||
echo $n . $c
|
||||
sleep 1
|
||||
echo $n . $c
|
||||
echo ""
|
||||
sleep 1
|
||||
echo "Press ENTER to continue"
|
||||
read xyz
|
||||
fi
|
||||
|
||||
#parse arguments
|
||||
IMPORTEDSETTINGS=""
|
||||
NOINTRO=""
|
||||
QUICK=""
|
||||
ADVANCED=""
|
||||
while [ $# -ge 1 ] ; do
|
||||
if [ $1 = "--help" ] ; then
|
||||
echo "Config utility for UnrealIRCd"
|
||||
echo "-----------------------------"
|
||||
echo "Syntax: ./Config [options]"
|
||||
echo "-nointro Skip intro (release notes, etc)"
|
||||
echo "-quick Skip questions, go straight to configure"
|
||||
echo "-advanced Include additional advanced questions"
|
||||
exit 0
|
||||
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 = "-advanced" ] ; then
|
||||
PREADVANCED="1"
|
||||
fi
|
||||
shift 1
|
||||
done
|
||||
|
||||
if [ "$PREADVANCED" = "1" ] ; then
|
||||
ADVANCED="1"
|
||||
elif [ "$ADVANCED" = "1" ]; then
|
||||
ADVANCED=""
|
||||
fi
|
||||
|
||||
if [ "`id -u`" = "0" ]; then
|
||||
echo "ERROR: You cannot build or run UnrealIRCd as root"
|
||||
echo ""
|
||||
echo "Please create a separate account for building and running UnrealIRCd."
|
||||
echo "See https://www.unrealircd.org/docs/Do_not_run_as_root"
|
||||
exit
|
||||
fi
|
||||
|
||||
clear
|
||||
|
||||
if [ -f "doc/Config.header" -a -z "$NOINTRO" ] ; then
|
||||
more doc/Config.header
|
||||
echo ""
|
||||
echo $n "[Press Enter to continue]"
|
||||
read cc
|
||||
clear
|
||||
fi
|
||||
|
||||
echo "We will now ask you a number of questions. You can just press ENTER to accept the defaults!"
|
||||
echo ""
|
||||
|
||||
# This needs to be updated each release so auto-upgrading works for settings, modules, etc!!:
|
||||
UNREALRELEASES="unrealircd-5.2.3 unrealircd-5.2.2 unrealircd-5.2.1.1 unrealircd-5.2.1 unrealircd-5.2.1-rc1 unrealircd-5.2.0.2 unrealircd-5.2.0.1 unrealircd-5.2.0 unrealircd-5.2.0-rc1 unrealircd-5.0.9.1 unrealircd-5.0.9 unrealircd-5.0.9-rc1 unrealircd-5.0.8 unrealircd-5.0.8-rc1 unrealircd-5.0.7 unrealircd-5.0.7-rc1 unrealircd-5.0.6 unrealircd-5.0.5.1 unrealircd-5.0.5 unrealircd-5.0.4 unrealircd-5.0.3.1 unrealircd-5.0.3 unrealircd-5.0.2 unrealircd-5.0.1 unrealircd-5.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 [ -d $IMPORTEDSETTINGS/conf ]; then
|
||||
echo "ERROR: Directory $IMPORTEDSETTINGS is an INSTALLATION directory (eg /home/irc/unrealircd)."
|
||||
echo "This question was about a SOURCE directory (eg /home/irc/unrealircd-5.0.0)."
|
||||
exit
|
||||
fi
|
||||
if [ ! -f $IMPORTEDSETTINGS/config.settings ]; then
|
||||
echo "Directory $IMPORTEDSETTINGS does not exist or does not contain a config.settings file"
|
||||
exit
|
||||
fi
|
||||
COPYMODULES="1"
|
||||
if grep -q TOPICNICKISNUH $IMPORTEDSETTINGS/config.settings; then
|
||||
echo "Directory $IMPORTEDSETTINGS seems to be UnrealIRCd 4.x (or older)."
|
||||
echo "I will copy the settings but not any 3rd party modules, as they are incompatible with 5.x."
|
||||
COPYMODULES="0"
|
||||
fi
|
||||
# Actually load the settings
|
||||
. $IMPORTEDSETTINGS/config.settings
|
||||
if [ "$COPYMODULES" = "1" ]; then
|
||||
# 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
|
||||
# If we just imported settings and the curl dir is set to
|
||||
# something like /home/xxx/unrealircd-5.x.y/extras/curl/
|
||||
# (what we call 'local-curl') then remove this setting as
|
||||
# it would refer to the old UnrealIRCd installation.
|
||||
if [ ! -z "$IMPORTEDSETTINGS" ]; then
|
||||
if echo "$CURLDIR"|grep -qi unrealircd; then
|
||||
CURLDIR=""
|
||||
fi
|
||||
fi
|
||||
|
||||
TEST="$BASEPATH"
|
||||
echo ""
|
||||
echo "In what directory do you want to install UnrealIRCd?"
|
||||
echo "(Note: UnrealIRCd 5 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-5.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"
|
||||
PRIVATELIBDIR="$BASEPATH/lib"
|
||||
|
||||
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 \"https://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"
|
||||
SUGGESTCURLDIR=""
|
||||
|
||||
if [ -d "/usr/local/include/curl" ]; then
|
||||
SUGGESTCURLDIR="/usr/local"
|
||||
fi
|
||||
if [ -d "/usr/include/curl" ]; then
|
||||
SUGGESTCURLDIR="/usr"
|
||||
fi
|
||||
# This one also works for /usr/include/x86_64-linux-gnu and friends:
|
||||
if [ -f "/usr/bin/curl-config" ]; 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 [ "x$CURLDIR" = "x$HOME/curl" ]; then
|
||||
if [ "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"
|
||||
else
|
||||
echo ""
|
||||
echo "WARNING: We no longer use $HOME/curl nowadays."
|
||||
echo "Use the automatic download and install feature below."
|
||||
CURLDIR=""
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "x$CURLDIR" = "x" ]; then
|
||||
CURLDIR="$SUGGESTCURLDIR"
|
||||
# NOTE: CURLDIR may still be empty after this
|
||||
|
||||
# System curl has no asyncdns, so install our own.
|
||||
if [ "$GOTASYNC" != "1" ]; then
|
||||
CURLDIR=""
|
||||
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 "x$SUGGESTCURLDIRBAD" != "x" ]; 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
|
||||
|
||||
# Final check
|
||||
if [ "x$CURLDIR" != "x" ]; then
|
||||
"$CURLDIR/bin/curl-config" --features 2>/dev/null | grep -q -e AsynchDNS
|
||||
if [ "$?" != 0 ]; then
|
||||
echo "Curl from $CURLDIR seems unusable ($CURLDIR/bin/curl-config does not exist)"
|
||||
CURLDIR=""
|
||||
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 $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
cc=$TEST
|
||||
fi
|
||||
case "$cc" in
|
||||
[Yy]*)
|
||||
INSTALLCURL="1"
|
||||
CURLDIR="$UNREALCWD/extras/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
|
||||
if [ "x$CURLDIR" != "x" ]; then
|
||||
"$CURLDIR/bin/curl-config" --libs 1>/dev/null 2>&1
|
||||
if [ "$?" != 0 ]; then
|
||||
echo "Curl from $CURLDIR seems unusable ($CURLDIR/bin/curl-config does not exist)"
|
||||
CURLDIR=""
|
||||
fi
|
||||
fi
|
||||
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
|
||||
|
||||
echo ""
|
||||
TEST=""
|
||||
while [ -z "$TEST" ] ; do
|
||||
TEST="$MAXCONNECTIONS_REQUEST"
|
||||
echo ""
|
||||
echo "What is the maximum number of sockets (and file descriptors) that"
|
||||
echo "UnrealIRCd may use?"
|
||||
echo "It is recommended to leave this at the default setting 'auto',"
|
||||
echo "which at present results in a limit of up to 16384, depending on"
|
||||
echo "the system. When you boot UnrealIRCd later you will always see"
|
||||
echo "the effective limit."
|
||||
echo $n "[$TEST] -> $c"
|
||||
read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
MAXCONNECTIONS_REQUEST=$TEST
|
||||
break
|
||||
fi
|
||||
case "$cc" in
|
||||
auto)
|
||||
MAXCONNECTIONS_REQUEST="$cc"
|
||||
;;
|
||||
[1-9][0-9][0-9]*)
|
||||
MAXCONNECTIONS_REQUEST="$cc"
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "You must to enter a number greater than or equal to 100."
|
||||
echo "Or enter 'auto' to leave it at automatic, which is recommended."
|
||||
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 "Most people don't need this and can just press ENTER."
|
||||
echo "Otherwise, 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__
|
||||
#
|
||||
# These are the settings saved from running './Config'.
|
||||
# Note that it is not recommended to edit config.settings by hand!
|
||||
# Chances are you misunderstand what a variable does or what the
|
||||
# supported values are. You better just re-run the ./Config script
|
||||
# and answer appropriately there, to get a correct config.settings
|
||||
# file.
|
||||
#
|
||||
BASEPATH="$BASEPATH"
|
||||
BINDIR="$BINDIR"
|
||||
DATADIR="$DATADIR"
|
||||
CONFDIR="$CONFDIR"
|
||||
MODULESDIR="$MODULESDIR"
|
||||
LOGDIR="$LOGDIR"
|
||||
CACHEDIR="$CACHEDIR"
|
||||
DOCDIR="$DOCDIR"
|
||||
TMPDIR="$TMPDIR"
|
||||
PRIVATELIBDIR="$PRIVATELIBDIR"
|
||||
PREFIXAQ="$PREFIXAQ"
|
||||
MAXCONNECTIONS_REQUEST="$MAXCONNECTIONS_REQUEST"
|
||||
NICKNAMEHISTORYLENGTH="$NICKNAMEHISTORYLENGTH"
|
||||
DEFPERM="$DEFPERM"
|
||||
SSLDIR="$SSLDIR"
|
||||
REMOTEINC="$REMOTEINC"
|
||||
CURLDIR="$CURLDIR"
|
||||
SHOWLISTMODES="$SHOWLISTMODES"
|
||||
NOOPEROVERRIDE="$NOOPEROVERRIDE"
|
||||
OPEROVERRIDEVERIFY="$OPEROVERRIDEVERIFY"
|
||||
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 |
|
||||
| * Gottem gottem@unrealircd.org |
|
||||
| * i i@unrealircd.org |
|
||||
|_______________________________________________________________________|
|
||||
__EOF__
|
||||
|
||||
@@ -1,340 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
-276
@@ -1,276 +0,0 @@
|
||||
#/************************************************************************
|
||||
#* IRC - Internet Relay Chat, Makefile
|
||||
#* Copyright (C) 1990, Jarkko Oikarinen
|
||||
#*
|
||||
#* This program is free software; you can redistribute it and/or modify
|
||||
#* it under the terms of the GNU General Public License as published by
|
||||
#* the Free Software Foundation; either version 1, or (at your option)
|
||||
#* any later version.
|
||||
#*
|
||||
#* This program is distributed in the hope that it will be useful,
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
#* GNU General Public License for more details.
|
||||
#*
|
||||
#* You should have received a copy of the GNU General Public License
|
||||
#* along with this program; if not, write to the Free Software
|
||||
#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#*
|
||||
#* $Id$
|
||||
#*/
|
||||
|
||||
CC=@CC@
|
||||
INCLUDEDIR=@UNRLINCDIR@
|
||||
NETWORKSDIR=
|
||||
FROMDOS=/home/cmunk/bin/4dos
|
||||
|
||||
# [CHANGEME]
|
||||
# Default flags:
|
||||
# Change XCFLAGS if you don't like what Config puts there. Same with
|
||||
# IRCDLIBS.
|
||||
#
|
||||
# If you are configuring by hand, try "-O -g" for XCFLAGS, and leave
|
||||
# IRCDLIBS blank. If that fails, try recomendations below.
|
||||
#
|
||||
|
||||
#XCFLAGS=-O -g -export-dynamic
|
||||
IRCDLIBS=@IRCDLIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @SODIUM_LIBS@ @PTHREAD_LIBS@
|
||||
CRYPTOLIB=@CRYPTOLIB@
|
||||
OPENSSLINCLUDES=
|
||||
|
||||
XCFLAGS=@PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @SODIUM_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
|
||||
#
|
||||
# use the following on MIPS:
|
||||
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
|
||||
# For Irix 4.x (SGI), use the following:
|
||||
#CFLAGS= -g -cckr -I$(INCLUDEDIR)
|
||||
#
|
||||
# on NEXT use:
|
||||
#CFLAGS=-bsd -I$(INCLUDEDIR)
|
||||
#on NeXT other than 2.0:
|
||||
#IRCDLIBS=-lsys_s
|
||||
#
|
||||
# AIX 370 flags
|
||||
#CFLAGS=-D_BSD -Hxa -I$(INCLUDEDIR)
|
||||
#IRCDLIBS=-lbsd
|
||||
#
|
||||
# Dynix/ptx V2.0.x
|
||||
#CFLAGS= -I$(INCLUDEDIR) -O -Xo
|
||||
#IRCDLIBS= -lsocket -linet -lnsl -lseq
|
||||
#
|
||||
# Dynix/ptx V1.x.x
|
||||
#IRCDLIBS= -lsocket -linet -lnsl -lseq
|
||||
#
|
||||
#use the following on SUN OS without nameserver libraries inside libc
|
||||
#IRCDLIBS=-lresolv
|
||||
#
|
||||
# Solaris 2
|
||||
#IRCDLIBS=-lsocket -lnsl -lresolv -L/usr/ucblib -R/usr/ucblib -lgen
|
||||
#
|
||||
# ESIX
|
||||
#CFLAGS=-O -I$(INCLUDEDIR) -I/usr/ucbinclude
|
||||
#IRCDLIBS=-L/usr/ucblib -L/usr/lib -lsocket -lucb -lns -lnsl
|
||||
#
|
||||
# LDFLAGS - flags to send the loader (ld). SunOS users may want to add
|
||||
# -Bstatic here.
|
||||
#
|
||||
#LDFLAGS=-Bstatic
|
||||
#
|
||||
#Dell SVR4
|
||||
#CC=gcc
|
||||
#CFLAGS= -I$(INCLUDEDIR) -O2
|
||||
#IRCDLIBS=-lsocket -lnsl -lucb
|
||||
|
||||
# [CHANGEME]
|
||||
# IRCDMODE is the mode you want the binary to be.
|
||||
# The 4 at the front is important (allows for setuidness)
|
||||
#
|
||||
# WARNING: if you are making ircd SUID or SGID, check config.h to make sure
|
||||
# you are not defining CMDLINE_CONFIG
|
||||
IRCDMODE = 711
|
||||
|
||||
URL=@URL@
|
||||
|
||||
# Where is your openssl binary
|
||||
OPENSSLPATH=@OPENSSLPATH@
|
||||
|
||||
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS)
|
||||
XLDFLAGS=@LDFLAGS_PRIVATELIBS@ @HARDEN_LDFLAGS@ @LDFLAGS@
|
||||
LDFLAGS=$(XLDFLAGS)
|
||||
|
||||
SHELL=/bin/sh
|
||||
SUBDIRS=src
|
||||
BINDIR=@BINDIR@
|
||||
INSTALL=@INSTALL@
|
||||
RM=@RM@
|
||||
CP=@CP@
|
||||
TOUCH=@TOUCH@
|
||||
RES=
|
||||
all: build
|
||||
|
||||
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \
|
||||
'RES=${RES}' 'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
|
||||
'INCLUDEDIR=${INCLUDEDIR}' \
|
||||
'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
|
||||
'SHELL=${SHELL}' \
|
||||
'CRYPTOLIB=${CRYPTOLIB}' \
|
||||
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' \
|
||||
'URL=${URL}'
|
||||
|
||||
custommodule:
|
||||
@if test -z "${MODULEFILE}"; then echo "Please set MODULEFILE when calling \`\`make custommodule''. For example, \`\`make custommodule MODULEFILE=callerid''." >&2; exit 1; fi
|
||||
+cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} 'EXLIBS=${EXLIBS}' custommodule
|
||||
|
||||
server: Makefile
|
||||
build: Makefile
|
||||
-@if [ ! -f include/setup.h ] ; then \
|
||||
echo "Hmm...doesn't look like you've run Config..."; \
|
||||
echo "Doing so now."; \
|
||||
sh Config; \
|
||||
fi
|
||||
@+for i in $(SUBDIRS); do \
|
||||
echo "Building $$i";\
|
||||
( cd $$i; ${MAKE} ${MAKEARGS} build; ) \
|
||||
done
|
||||
@echo ''
|
||||
@echo '* UnrealIRCd compiled successfully'
|
||||
@echo '* YOU ARE NOT DONE YET! Run "make install" to install UnrealIRCd !'
|
||||
@echo ''
|
||||
|
||||
clean:
|
||||
$(RM) -f *~ \#* core *.orig include/*.orig
|
||||
@+for i in $(SUBDIRS); do \
|
||||
echo "Cleaning $$i";\
|
||||
( cd $$i; ${MAKE} ${MAKEARGS} clean; ) \
|
||||
done
|
||||
-@if [ -f include/setup.h ] ; then \
|
||||
echo "To really restart installation, remove include/setup.h" ; \
|
||||
fi
|
||||
|
||||
cleandir: clean
|
||||
rm -rf include/setup.h Makefile Settings
|
||||
|
||||
distclean: cleandir
|
||||
rm -rf extras/*.bak extras/*.tar extras/c-ares
|
||||
rm -rf extras/c-ares-* extras/tre-*
|
||||
rm -rf config.log config.settings *.pem ircd.* unrealircd
|
||||
rm -rf Makefile config.status
|
||||
|
||||
depend:
|
||||
@+for i in $(SUBDIRS); do \
|
||||
echo "Making dependencies in $$i";\
|
||||
( cd $$i; ${MAKE} ${MAKEARGS} depend; ) \
|
||||
done
|
||||
|
||||
install: all
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@BINDIR@
|
||||
$(INSTALL) -m 0700 src/ircd $(DESTDIR)@BINDIR@/unrealircd
|
||||
$(INSTALL) -m 0700 extras/unrealircd-upgrade-script $(DESTDIR)@BINDIR@/unrealircd-upgrade-script
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@DOCDIR@
|
||||
$(INSTALL) -m 0600 doc/Authors doc/coding-guidelines doc/tao.of.irc doc/KEYS doc/RELEASE-NOTES.md $(DESTDIR)@DOCDIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@
|
||||
$(INSTALL) -m 0600 doc/conf/*.default.conf $(DESTDIR)@CONFDIR@
|
||||
$(INSTALL) -m 0600 doc/conf/*.optional.conf $(DESTDIR)@CONFDIR@
|
||||
-@if [ ! -f "$(DESTDIR)@CONFDIR@/modules.sources.list" ] ; then \
|
||||
$(INSTALL) -m 0600 doc/conf/modules.sources.list $(DESTDIR)@CONFDIR@ ; \
|
||||
fi
|
||||
-@if [ ! -f "$(DESTDIR)@CONFDIR@/spamfilter.conf" ] ; then \
|
||||
$(INSTALL) -m 0600 doc/conf/spamfilter.conf $(DESTDIR)@CONFDIR@ ; \
|
||||
fi
|
||||
-@extras/patches/patch_spamfilter_conf "$(DESTDIR)@CONFDIR@"
|
||||
-@if [ ! -f "$(DESTDIR)@CONFDIR@/badwords.conf" ] ; then \
|
||||
$(INSTALL) -m 0600 doc/conf/badwords.conf $(DESTDIR)@CONFDIR@ ; \
|
||||
fi
|
||||
-@if [ ! -f "$(DESTDIR)@CONFDIR@/dccallow.conf" ] ; then \
|
||||
$(INSTALL) -m 0600 doc/conf/dccallow.conf $(DESTDIR)@CONFDIR@ ; \
|
||||
fi
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/aliases
|
||||
$(INSTALL) -m 0600 doc/conf/aliases/*.conf $(DESTDIR)@CONFDIR@/aliases
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/help
|
||||
$(INSTALL) -m 0600 doc/conf/help/*.conf $(DESTDIR)@CONFDIR@/help
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/examples
|
||||
$(INSTALL) -m 0600 doc/conf/examples/*.conf $(DESTDIR)@CONFDIR@/examples
|
||||
$(INSTALL) -m 0700 unrealircd $(DESTDIR)@SCRIPTDIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/*.so $(DESTDIR)@MODULESDIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/usermodes
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/usermodes/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/usermodes/*.so $(DESTDIR)@MODULESDIR@/usermodes
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/chanmodes
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/chanmodes/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/chanmodes/*.so $(DESTDIR)@MODULESDIR@/chanmodes
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/snomasks
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/snomasks/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/snomasks/*.so $(DESTDIR)@MODULESDIR@/snomasks
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/extbans
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/extbans/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/extbans/*.so $(DESTDIR)@MODULESDIR@/extbans
|
||||
@#If the conf/ssl directory exists then rename it here to conf/tls
|
||||
@#and add a symlink for backwards compatibility (so that f.e. certbot
|
||||
@#doesn't randomly fail after an upgrade to U5).
|
||||
-@if [ -d "$(DESTDIR)@CONFDIR@/ssl" ] ; then \
|
||||
mv "$(DESTDIR)@CONFDIR@/ssl" "$(DESTDIR)@CONFDIR@/tls" ; \
|
||||
ln -s "$(DESTDIR)@CONFDIR@/tls" "$(DESTDIR)@CONFDIR@/ssl" ; \
|
||||
fi
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/tls
|
||||
$(INSTALL) -m 0600 doc/conf/tls/curl-ca-bundle.crt $(DESTDIR)@CONFDIR@/tls
|
||||
@# delete modules/cap directory, to avoid confusing with U4 to U5 upgrades:
|
||||
rm -rf $(DESTDIR)@MODULESDIR@/cap
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/third
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/third/*.so 1>/dev/null 2>&1
|
||||
@#This step can fail with zero files, so we ignore exit status:
|
||||
-$(INSTALL) -m 0700 src/modules/third/*.so $(DESTDIR)@MODULESDIR@/third
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@TMPDIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CACHEDIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@PERMDATADIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@LOGDIR@
|
||||
-@if [ ! -f "$(DESTDIR)@CONFDIR@/tls/server.cert.pem" ] ; then \
|
||||
$(INSTALL) -m 0600 server.req.pem $(DESTDIR)@CONFDIR@/tls ; \
|
||||
$(INSTALL) -m 0600 server.key.pem $(DESTDIR)@CONFDIR@/tls ; \
|
||||
$(INSTALL) -m 0600 server.cert.pem $(DESTDIR)@CONFDIR@/tls ; \
|
||||
fi
|
||||
@rm -f $(DESTDIR)@SCRIPTDIR@/source
|
||||
ln -s @BUILDDIR@ $(DESTDIR)@SCRIPTDIR@/source
|
||||
@echo ''
|
||||
@echo '* UnrealIRCd is now installed.'
|
||||
|
||||
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
|
||||
echo '* Leave this directory and run "cd @SCRIPTDIR@" now' ; \
|
||||
fi
|
||||
@echo '* Directory layout:'
|
||||
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
|
||||
echo ' * Base directory: @SCRIPTDIR@' ; \
|
||||
fi
|
||||
@echo ' * Configuration files: @CONFDIR@'
|
||||
@echo ' * Log files: @LOGDIR@'
|
||||
@echo ' * Modules: @MODULESDIR@'
|
||||
@echo '* To start/stop UnrealIRCd run: @SCRIPTDIR@/unrealircd"'
|
||||
@echo ''
|
||||
@echo '* Consult the documentation online at:'
|
||||
@echo ' * https://www.unrealircd.org/docs/'
|
||||
@echo ' * https://www.unrealircd.org/docs/FAQ'
|
||||
@echo '* You may also wish to install a cron job to ensure UnrealIRCd is always running:'
|
||||
@echo ' * https://www.unrealircd.org/docs/Cron_job'
|
||||
@echo ''
|
||||
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
|
||||
echo 'Again, be sure to change to the @SCRIPTDIR@ directory!' ; \
|
||||
fi
|
||||
|
||||
pem: extras/tls.cnf
|
||||
@echo "Generating server key..."
|
||||
$(OPENSSLPATH) ecparam -out server.key.pem -name secp384r1 -genkey
|
||||
@echo "Generating certificate request..."
|
||||
$(OPENSSLPATH) req -new \
|
||||
-config extras/tls.cnf -sha256 -out server.req.pem \
|
||||
-key server.key.pem -nodes
|
||||
@echo "Generating self-signed certificate..."
|
||||
$(OPENSSLPATH) req -x509 -days 3650 -sha256 -nodes -in server.req.pem \
|
||||
-key server.key.pem -out server.cert.pem
|
||||
@echo "Setting permissions on server.*.pem files..."
|
||||
chmod o-rwx server.req.pem server.key.pem server.cert.pem
|
||||
chmod g-rwx server.req.pem server.key.pem server.cert.pem
|
||||
|
||||
Makefile: config.status Makefile.in
|
||||
./config.status
|
||||
-1130
File diff suppressed because it is too large
Load Diff
@@ -1,58 +0,0 @@
|
||||
[](https://twitter.com/Unreal_IRCd)
|
||||
|
||||
## About UnrealIRCd
|
||||
UnrealIRCd is an Open Source IRC Server, serving thousands of networks since 1999.
|
||||
It runs on Linux, OS X and Windows and is currently the most widely deployed IRCd
|
||||
with a market share of 42%. UnrealIRCd is a highly advanced IRCd with a strong
|
||||
focus on modularity, an advanced and highly configurable configuration file.
|
||||
Key features include SSL/TLS, cloaking, its advanced anti-flood and anti-spam systems,
|
||||
swear filtering and module support. We are also particularly proud on our extensive
|
||||
online documentation.
|
||||
|
||||
## How to get started
|
||||
Please consult our excellent online documentation at https://www.unrealircd.org/docs/
|
||||
when setting up the IRCd!
|
||||
|
||||
### Step 1: Installation
|
||||
#### Windows
|
||||
Simply download the UnrealIRCd Windows version from www.unrealircd.org
|
||||
|
||||
Alternatively you can compile UnrealIRCd for Windows yourself. However this is not straightforward and thus not recommended.
|
||||
|
||||
#### *BSD/Linux/macOS
|
||||
Do the following steps under a separate account for running UnrealIRCd,
|
||||
[do NOT compile or run as root](https://www.unrealircd.org/docs/Do_not_run_as_root).
|
||||
|
||||
### Step 1: Compile the IRCd
|
||||
|
||||
* Run `./Config`
|
||||
* Run `make`
|
||||
* Run `make install`
|
||||
* Now change to the directory where you installed UnrealIRCd, e.g. `cd /home/xxxx/unrealircd`
|
||||
|
||||
### Step 2: Configuration
|
||||
Configuration files are stored in the conf/ folder by default (eg: /home/xxxx/unrealircd/conf)
|
||||
|
||||
#### Create a configuration file
|
||||
If you are new, then you need to create your own configuration file:
|
||||
Copy conf/examples/example.conf to conf/ and call it unrealircd.conf.
|
||||
Then open it in an editor and carefully modify it using the documentation and FAQ as a guide (see below).
|
||||
|
||||
### Step 3: Booting
|
||||
|
||||
#### Linux/*BSD/macOS
|
||||
Run `./unrealircd start` in the directory where you installed UnrealIRCd.
|
||||
|
||||
#### Windows
|
||||
Start -> All Programs -> UnrealIRCd -> UnrealIRCd
|
||||
|
||||
## Documentation & FAQ
|
||||
You can find the **documentation** online at: https://www.unrealircd.org/docs/
|
||||
|
||||
We also have a good **FAQ**: https://www.unrealircd.org/docs/FAQ
|
||||
|
||||
## Website, support, and other links ##
|
||||
* https://www.unrealircd.org - Our main website
|
||||
* https://forums.unrealircd.org - Support
|
||||
* https://bugs.unrealircd.org - Bug tracker
|
||||
* ircs://irc.unrealircd.org:6697/unreal-support - IRC support
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
* The latest *stable* release of the 5.x branch (until 2023-07-01)
|
||||
* The latest *stable* release of the 6.x branch
|
||||
|
||||
See [UnrealIRCd releases](https://www.unrealircd.org/docs/UnrealIRCd_releases) for information on older versions and End Of Life dates.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please report issues on the [bug tracker](https://bugs.unrealircd.org) and in the bug submit form **set the 'View Status' to 'private'**.
|
||||
|
||||
Do not report security issues on the forums or in a public IRC channel such as #unreal-support.
|
||||
If you insist on e-mail then you can use syzop@unrealircd.org or security@unrealircd.org. Again, the bug tracker is preferred.
|
||||
|
||||
If you are *unsure* if something is a security issue, then report it at the bug tracker as a 'private' bug anyway. Better safe than sorry.
|
||||
Do not ask around in public channels or forums.
|
||||
|
||||
You should get a response or at least an acknowledgement soon. If you don't hear back within 24 hours, then please try to contact us again.
|
||||
|
||||
## Full policy
|
||||
See https://www.unrealircd.org/docs/Policy:_Handling_of_security_issues for full information.
|
||||
@@ -1,3 +0,0 @@
|
||||
all:
|
||||
@autoconf
|
||||
cp configure ..
|
||||
Vendored
-1438
File diff suppressed because it is too large
Load Diff
Vendored
-1810
File diff suppressed because it is too large
Load Diff
@@ -1,72 +0,0 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's compiler
|
||||
# or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
# force the compiler to issue an error when a bad flag is given.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 2
|
||||
|
||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||
[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_COMPILE_FLAGS
|
||||
@@ -1,71 +0,0 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the linker or gives an error.
|
||||
# (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the linker's default flags
|
||||
# when the check is done. The check is thus made with the flags: "LDFLAGS
|
||||
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
|
||||
# issue an error when a bad flag is given.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 2
|
||||
|
||||
AC_DEFUN([AX_CHECK_LINK_FLAG],
|
||||
[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$LDFLAGS
|
||||
LDFLAGS="$LDFLAGS $4 $1"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM()],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
LDFLAGS=$ax_check_save_flags])
|
||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_LINK_FLAGS
|
||||
@@ -1,332 +0,0 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# This macro figures out how to build C programs using POSIX threads. It
|
||||
# sets the PTHREAD_LIBS output variable to the threads library and linker
|
||||
# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
|
||||
# flags that are needed. (The user can also force certain compiler
|
||||
# flags/libs to be tested by setting these environment variables.)
|
||||
#
|
||||
# Also sets PTHREAD_CC to any special C compiler that is needed for
|
||||
# multi-threaded programs (defaults to the value of CC otherwise). (This
|
||||
# is necessary on AIX to use the special cc_r compiler alias.)
|
||||
#
|
||||
# NOTE: You are assumed to not only compile your program with these flags,
|
||||
# but also link it with them as well. e.g. you should link with
|
||||
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
|
||||
#
|
||||
# If you are only building threads programs, you may wish to use these
|
||||
# variables in your default LIBS, CFLAGS, and CC:
|
||||
#
|
||||
# LIBS="$PTHREAD_LIBS $LIBS"
|
||||
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
# CC="$PTHREAD_CC"
|
||||
#
|
||||
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
|
||||
# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
|
||||
# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
#
|
||||
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
|
||||
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
|
||||
# PTHREAD_CFLAGS.
|
||||
#
|
||||
# ACTION-IF-FOUND is a list of shell commands to run if a threads library
|
||||
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
|
||||
# is not found. If ACTION-IF-FOUND is not specified, the default action
|
||||
# will define HAVE_PTHREAD.
|
||||
#
|
||||
# Please let the authors know if this macro fails on any platform, or if
|
||||
# you have any other suggestions or comments. This macro was based on work
|
||||
# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
|
||||
# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
|
||||
# Alejandro Forero Cuervo to the autoconf macro repository. We are also
|
||||
# grateful for the helpful feedback of numerous users.
|
||||
#
|
||||
# Updated for Autoconf 2.68 by Daniel Richard G.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 21
|
||||
|
||||
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
|
||||
AC_DEFUN([AX_PTHREAD], [
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_LANG_PUSH([C])
|
||||
ax_pthread_ok=no
|
||||
|
||||
# We used to check for pthread.h first, but this fails if pthread.h
|
||||
# requires special compiler flags (e.g. on True64 or Sequent).
|
||||
# It gets checked for in the link test anyway.
|
||||
|
||||
# First of all, check if the user has set any of the PTHREAD_LIBS,
|
||||
# etcetera environment variables, and if threads linking works using
|
||||
# them:
|
||||
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
|
||||
AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
|
||||
AC_MSG_RESULT([$ax_pthread_ok])
|
||||
if test x"$ax_pthread_ok" = xno; then
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
fi
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
fi
|
||||
|
||||
# We must check for the threads library under a number of different
|
||||
# names; the ordering is very important because some systems
|
||||
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
|
||||
# libraries is broken (non-POSIX).
|
||||
|
||||
# Create a list of thread flags to try. Items starting with a "-" are
|
||||
# C compiler flags, and other items are library names, except for "none"
|
||||
# which indicates that we try without any flags at all, and "pthread-config"
|
||||
# which is a program returning the flags for the Pth emulation library.
|
||||
|
||||
ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
|
||||
|
||||
# The ordering *is* (sometimes) important. Some notes on the
|
||||
# individual items follow:
|
||||
|
||||
# pthreads: AIX (must check this before -lpthread)
|
||||
# none: in case threads are in libc; should be tried before -Kthread and
|
||||
# other compiler flags to prevent continual compiler warnings
|
||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
|
||||
# -pthreads: Solaris/gcc
|
||||
# -mthreads: Mingw32/gcc, Lynx/gcc
|
||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||
# doesn't hurt to check since this sometimes defines pthreads too;
|
||||
# also defines -D_REENTRANT)
|
||||
# ... -mt is also the pthreads flag for HP/aCC
|
||||
# pthread: Linux, etcetera
|
||||
# --thread-safe: KAI C++
|
||||
# pthread-config: use pthread-config program (for GNU Pth library)
|
||||
|
||||
case ${host_os} in
|
||||
solaris*)
|
||||
|
||||
# On Solaris (at least, for some versions), libc contains stubbed
|
||||
# (non-functional) versions of the pthreads routines, so link-based
|
||||
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
|
||||
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
|
||||
# a function called by this macro, so we could check for that, but
|
||||
# who knows whether they'll stub that too in a future libc.) So,
|
||||
# we'll just look for -pthreads and -lpthread first:
|
||||
|
||||
ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
|
||||
;;
|
||||
|
||||
darwin*)
|
||||
ax_pthread_flags="-pthread $ax_pthread_flags"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Clang doesn't consider unrecognized options an error unless we specify
|
||||
# -Werror. We throw in some extra Clang-specific options to ensure that
|
||||
# this doesn't happen for GCC, which also accepts -Werror.
|
||||
|
||||
AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
|
||||
save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_extra_flags="-Werror"
|
||||
CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[ax_pthread_extra_flags=
|
||||
AC_MSG_RESULT([no])])
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
if test x"$ax_pthread_ok" = xno; then
|
||||
for flag in $ax_pthread_flags; do
|
||||
|
||||
case $flag in
|
||||
none)
|
||||
AC_MSG_CHECKING([whether pthreads work without any flags])
|
||||
;;
|
||||
|
||||
-*)
|
||||
AC_MSG_CHECKING([whether pthreads work with $flag])
|
||||
PTHREAD_CFLAGS="$flag"
|
||||
;;
|
||||
|
||||
pthread-config)
|
||||
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
|
||||
if test x"$ax_pthread_config" = xno; then continue; fi
|
||||
PTHREAD_CFLAGS="`pthread-config --cflags`"
|
||||
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
||||
;;
|
||||
|
||||
*)
|
||||
AC_MSG_CHECKING([for the pthreads library -l$flag])
|
||||
PTHREAD_LIBS="-l$flag"
|
||||
;;
|
||||
esac
|
||||
|
||||
save_LIBS="$LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
|
||||
|
||||
# Check for various functions. We must include pthread.h,
|
||||
# since some functions may be macros. (On the Sequent, we
|
||||
# need a special flag -Kthread to make this header compile.)
|
||||
# We check for pthread_join because it is in -lpthread on IRIX
|
||||
# while pthread_create is in libc. We check for pthread_attr_init
|
||||
# due to DEC craziness with -lpthreads. We check for
|
||||
# pthread_cleanup_push because it is one of the few pthread
|
||||
# functions on Solaris that doesn't have a non-functional libc stub.
|
||||
# We try pthread_create on general principles.
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
|
||||
static void routine(void *a) { a = 0; }
|
||||
static void *start_routine(void *a) { return a; }],
|
||||
[pthread_t th; pthread_attr_t attr;
|
||||
pthread_create(&th, 0, start_routine, 0);
|
||||
pthread_join(th, 0);
|
||||
pthread_attr_init(&attr);
|
||||
pthread_cleanup_push(routine, 0);
|
||||
pthread_cleanup_pop(0) /* ; */])],
|
||||
[ax_pthread_ok=yes],
|
||||
[])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
AC_MSG_RESULT([$ax_pthread_ok])
|
||||
if test "x$ax_pthread_ok" = xyes; then
|
||||
break;
|
||||
fi
|
||||
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
done
|
||||
fi
|
||||
|
||||
# Various other checks:
|
||||
if test "x$ax_pthread_ok" = xyes; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
|
||||
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
||||
AC_MSG_CHECKING([for joinable pthread attribute])
|
||||
attr_name=unknown
|
||||
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
|
||||
[int attr = $attr; return attr /* ; */])],
|
||||
[attr_name=$attr; break],
|
||||
[])
|
||||
done
|
||||
AC_MSG_RESULT([$attr_name])
|
||||
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
|
||||
AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
|
||||
[Define to necessary symbol if this constant
|
||||
uses a non-standard name on your system.])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([if more special flags are required for pthreads])
|
||||
flag=no
|
||||
case ${host_os} in
|
||||
aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
|
||||
osf* | hpux*) flag="-D_REENTRANT";;
|
||||
solaris*)
|
||||
if test "$GCC" = "yes"; then
|
||||
flag="-D_REENTRANT"
|
||||
else
|
||||
# TODO: What about Clang on Solaris?
|
||||
flag="-mt -D_REENTRANT"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT([$flag])
|
||||
if test "x$flag" != xno; then
|
||||
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT], [
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
|
||||
[[int i = PTHREAD_PRIO_INHERIT;]])],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=no])
|
||||
])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
|
||||
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
# More AIX lossage: compile with *_r variant
|
||||
if test "x$GCC" != xyes; then
|
||||
case $host_os in
|
||||
aix*)
|
||||
AS_CASE(["x/$CC"],
|
||||
[x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
|
||||
[#handle absolute path differently from PATH based program lookup
|
||||
AS_CASE(["x$CC"],
|
||||
[x/*],
|
||||
[AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
|
||||
[AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
|
||||
|
||||
AC_SUBST([PTHREAD_LIBS])
|
||||
AC_SUBST([PTHREAD_CFLAGS])
|
||||
AC_SUBST([PTHREAD_CC])
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test x"$ax_pthread_ok" = xyes; then
|
||||
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
|
||||
:
|
||||
else
|
||||
ax_pthread_ok=no
|
||||
$2
|
||||
fi
|
||||
AC_LANG_POP
|
||||
])dnl AX_PTHREAD
|
||||
@@ -1,314 +0,0 @@
|
||||
#serial 1
|
||||
|
||||
dnl Macro: unreal_CHECK_TYPE_SIZES
|
||||
dnl originally called unet_CHECK_TYPE_SIZES
|
||||
dnl
|
||||
dnl Check the size of several types and define a valid int16_t and int32_t.
|
||||
dnl
|
||||
AC_DEFUN([unreal_CHECK_TYPE_SIZES],
|
||||
[dnl Check type sizes
|
||||
AC_CHECK_SIZEOF(short)
|
||||
AC_CHECK_SIZEOF(int)
|
||||
AC_CHECK_SIZEOF(long)
|
||||
if test "$ac_cv_sizeof_int" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, int)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, short)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned short)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
|
||||
fi
|
||||
if test "$ac_cv_sizeof_int" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, int)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, short)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned short)
|
||||
elif test "$ac_cv_sizeof_long" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, long)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned long)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
|
||||
fi
|
||||
AC_CHECK_SIZEOF(rlim_t)
|
||||
if test "$ac_cv_sizeof_rlim_t" = 8 ; then
|
||||
AC_DEFINE([LONG_LONG_RLIM_T], [], [Define if rlim_t is long long])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_LIBCURL],
|
||||
[
|
||||
AC_ARG_ENABLE(libcurl,
|
||||
[AC_HELP_STRING([--enable-libcurl=DIR],[enable libcurl (remote include) support])],
|
||||
[enable_curl=$enableval],
|
||||
[enable_curl=no])
|
||||
|
||||
AS_IF([test "x$enable_curl" != "xno"],
|
||||
[
|
||||
dnl sane, default directory for Operating System-managed libcURL
|
||||
dnl (when --enable-libcurl is passed without any arguments). On
|
||||
dnl systems with stuff in /usr/local, /usr/local/bin should already
|
||||
dnl be in PATH. On sane systems, this will invoke the curl-config
|
||||
dnl installed by the package manager.
|
||||
CURLCONFIG="curl-config"
|
||||
AS_IF([test "x$enable_curl" != "xyes"],
|
||||
[CURLCONFIG="$enable_curl/bin/curl-config"])
|
||||
|
||||
AC_MSG_CHECKING([$CURLCONFIG])
|
||||
AS_IF([$CURLCONFIG --version 2>/dev/null >/dev/null],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_FAILURE([Could not find curl-config, try editing --enable-libcurl])])
|
||||
|
||||
CURLCFLAG="`$CURLCONFIG --cflags`"
|
||||
CURLLIBS="`$CURLCONFIG --libs`"
|
||||
|
||||
dnl This test must be this way because of #3981
|
||||
AS_IF([$CURLCONFIG --libs | grep -q -e ares],
|
||||
[CURLUSESCARES="1"],
|
||||
[CURLUSESCARES="0"])
|
||||
|
||||
dnl sanity warnings
|
||||
AS_IF([test -z "${CURLLIBS}"],
|
||||
[AC_MSG_WARN([CURLLIBS is empty, that probably means that I could not find $enable_curl/bin/curl-config])])
|
||||
|
||||
dnl Ok this is ugly, basically we need to strip the version of c-ares that curl uses
|
||||
dnl because we want to use our own version (which is hopefully fully binary
|
||||
dnl compatible with the curl one as well).
|
||||
dnl Therefore we need to strip the cares libs in a weird way...
|
||||
dnl If anyone can come up with something better and still portable (no awk!?)
|
||||
dnl then let us know. -- Syzop
|
||||
dnl
|
||||
dnl It is dangerous to mix and match cURL with potentially ABI-incompatible versions of
|
||||
dnl c-ares, just use --with-system-cares.
|
||||
dnl Thus, make sure to use --with-system-cares when using system-cURL. If the user
|
||||
dnl wants bundled c-ares + system libcURL, then we should filter out c-ares
|
||||
dnl flags. _Only_ in that case should we mess with the flags. -- ohnobinki
|
||||
|
||||
AS_IF([test "x$has_system_cares" = "xno" && test "x$BUILDDIR/extras/curl" != "x$enable_curl" && test "$CURLUSESCARES" != "0" ],
|
||||
[
|
||||
AC_MSG_ERROR([[
|
||||
|
||||
You have decided to build unrealIRCd with libcURL (remote includes) support.
|
||||
However, you have system-installed c-ares support has either been disabled
|
||||
(--without-system-cares) or is unavailable.
|
||||
Because UnrealIRCd will use a bundled copy of c-ares which may be incompatible
|
||||
with the system-installed libcURL, this is a bad idea which may result in error
|
||||
messages looking like:
|
||||
|
||||
\`\`[error] unrealircd.conf:9: include: error downloading '(http://example.net/ex.conf)': Could not resolve host: example.net (Successful completion)''
|
||||
|
||||
Or UnrealIRCd might even crash.
|
||||
|
||||
Please build UnrealIRCd with --with-system-cares when enabling --enable-libcurl
|
||||
]])
|
||||
])
|
||||
|
||||
dnl Make sure that linking against cURL works rather than letting the user
|
||||
dnl find out after compiling most of his program. ~ohnobinki
|
||||
IRCDLIBS="$IRCDLIBS $CURLLIBS"
|
||||
CFLAGS="$CFLAGS $CURLCFLAG"
|
||||
AC_DEFINE([USE_LIBCURL], [], [Define if you have libcurl installed to get remote includes and MOTD support])
|
||||
|
||||
AC_MSG_CHECKING([curl_easy_init() in $CURLLIBS])
|
||||
LIBS_SAVEDA="$LIBS"
|
||||
CFLAGS_SAVEDA="$CFLAGS"
|
||||
|
||||
LIBS="$IRCDLIBS $IRCDLIBS_CURL_CARES"
|
||||
CFLAGS="$CFLAGS $CFLAGS_CURL_CARES"
|
||||
AC_LINK_IFELSE(
|
||||
[
|
||||
AC_LANG_PROGRAM(
|
||||
[[#include <curl/curl.h>]],
|
||||
[[CURL *curl = curl_easy_init();]])
|
||||
],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_FAILURE([You asked for libcURL (remote includes) support, but it can't be found at $enable_curl])
|
||||
])
|
||||
LIBS="$LIBS_SAVEDA"
|
||||
CFLAGS="$CFLAGS_SAVEDA"
|
||||
|
||||
URL="url.o"
|
||||
AC_SUBST(URL)
|
||||
]) dnl AS_IF(enable_curl)
|
||||
])
|
||||
|
||||
dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostler@juniper.net>
|
||||
|
||||
AC_DEFUN([CHECK_SSL],
|
||||
[
|
||||
AC_ARG_ENABLE(ssl,
|
||||
[AC_HELP_STRING([--enable-ssl=],[enable ssl will check /usr/local/opt/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr])],
|
||||
[],
|
||||
[enable_ssl=no])
|
||||
AS_IF([test $enable_ssl != "no"],
|
||||
[
|
||||
AC_MSG_CHECKING([for OpenSSL])
|
||||
for dir in $enable_ssl /usr/local/opt/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr; do
|
||||
ssldir="$dir"
|
||||
if test -f "$dir/include/openssl/ssl.h"; then
|
||||
AC_MSG_RESULT([found in $ssldir/include/openssl])
|
||||
found_ssl="yes";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
CFLAGS="$CFLAGS -I$ssldir/include";
|
||||
fi
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/include/ssl.h"; then
|
||||
AC_MSG_RESULT([found in $ssldir/include])
|
||||
found_ssl="yes";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
CFLAGS="$CFLAGS -I$ssldir/include";
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test x_$found_ssl != x_yes; then
|
||||
AC_MSG_RESULT(not found)
|
||||
echo ""
|
||||
echo "Apparently you do not have both the openssl binary and openssl development libraries installed."
|
||||
echo "The following packages are required:"
|
||||
echo "1) The library package is often called 'openssl-dev', 'openssl-devel' or 'libssl-dev'"
|
||||
echo "2) The binary package is usually called 'openssl'."
|
||||
echo "NOTE: you or your system administrator needs to install the library AND the binary package."
|
||||
echo "After doing so, simply re-run ./Config"
|
||||
exit 1
|
||||
else
|
||||
CRYPTOLIB="-lssl -lcrypto";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
LDFLAGS="$LDFLAGS -L$ssldir/lib";
|
||||
dnl check if binary path exists
|
||||
if test -f "$ssldir/bin/openssl"; then
|
||||
OPENSSLPATH="$ssldir/bin/openssl";
|
||||
fi
|
||||
fi
|
||||
dnl linking require -ldl?
|
||||
AC_MSG_CHECKING([OpenSSL linking with -ldl])
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB -ldl"
|
||||
AC_TRY_LINK([#include <openssl/err.h>], [ERR_clear_error();],
|
||||
[
|
||||
AC_MSG_RESULT(yes)
|
||||
CRYPTOLIB="$CRYPTOLIB -ldl"
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(no)
|
||||
|
||||
dnl linking require both -ldl and -lpthread?
|
||||
AC_MSG_CHECKING([OpenSSL linking with -ldl and -lpthread])
|
||||
LIBS="$SAVE_LIBS $CRYPTOLIB -ldl -lpthread"
|
||||
AC_TRY_LINK([#include <openssl/err.h>], [ERR_clear_error();],
|
||||
[
|
||||
AC_MSG_RESULT(yes)
|
||||
CRYPTOLIB="$CRYPTOLIB -ldl -lpthread"
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
||||
LIBS="$SAVE_LIBS"
|
||||
fi
|
||||
])
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_SSL_CTX_SET1_CURVES_LIST],
|
||||
[
|
||||
AC_MSG_CHECKING([for SSL_CTX_set1_curves_list in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[SSL_CTX *ctx = NULL; SSL_CTX_set1_curves_list(ctx, "test");],
|
||||
has_function=1,
|
||||
has_function=0)
|
||||
LIBS="$SAVE_LIBS"
|
||||
AC_LANG_POP(C)
|
||||
if test $has_function = 1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAS_SSL_CTX_SET1_CURVES_LIST], [], [Define if ssl library has SSL_CTX_set1_curves_list])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_SSL_CTX_SET_MIN_PROTO_VERSION],
|
||||
[
|
||||
AC_MSG_CHECKING([for SSL_CTX_set_min_proto_version in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[SSL_CTX *ctx = NULL; SSL_CTX_set_min_proto_version(ctx, TLS1_VERSION);],
|
||||
has_function=1,
|
||||
has_function=0)
|
||||
LIBS="$SAVE_LIBS"
|
||||
AC_LANG_POP(C)
|
||||
if test $has_function = 1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAS_SSL_CTX_SET_MIN_PROTO_VERSION], [], [Define if ssl library has SSL_CTX_set_min_proto_version])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_SSL_CTX_SET_SECURITY_LEVEL],
|
||||
[
|
||||
AC_MSG_CHECKING([for SSL_CTX_set_security_level in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[SSL_CTX *ctx = NULL; SSL_CTX_set_security_level(ctx, 1);],
|
||||
has_function=1,
|
||||
has_function=0)
|
||||
LIBS="$SAVE_LIBS"
|
||||
AC_LANG_POP(C)
|
||||
if test $has_function = 1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAS_SSL_CTX_SET_SECURITY_LEVEL], [], [Define if ssl library has SSL_CTX_set_security_level])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_ASN1_TIME_diff],
|
||||
[
|
||||
AC_MSG_CHECKING([for ASN1_TIME_diff in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[int one, two; ASN1_TIME_diff(&one, &two, NULL, NULL);],
|
||||
has_function=1,
|
||||
has_function=0)
|
||||
LIBS="$SAVE_LIBS"
|
||||
AC_LANG_POP(C)
|
||||
if test $has_function = 1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAS_ASN1_TIME_diff], [], [Define if ssl library has ASN1_TIME_diff])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_X509_get0_notAfter],
|
||||
[
|
||||
AC_MSG_CHECKING([for X509_get0_notAfter in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[X509_get0_notAfter(NULL);],
|
||||
has_function=1,
|
||||
has_function=0)
|
||||
LIBS="$SAVE_LIBS"
|
||||
AC_LANG_POP(C)
|
||||
if test $has_function = 1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAS_X509_get0_notAfter], [], [Define if ssl library has X509_get0_notAfter])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
#!/bin/bash
|
||||
echo "Regenerating 'configure' and headers..."
|
||||
echo "NOTE: Normally only UnrealIRCd developers run this command!!"
|
||||
|
||||
cd "$(dirname "${0}")"
|
||||
|
||||
ACLOCAL_AMFLAGS=(-I autoconf/m4)
|
||||
|
||||
aclocal "${ACLOCAL_AMFLAGS[@]}"
|
||||
autoconf
|
||||
autoheader
|
||||
-801
@@ -1,801 +0,0 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
dnl When updating the version, remember to update the following files
|
||||
dnl appropriately:
|
||||
dnl include/windows/setup.h
|
||||
dnl src/windows/unrealinst.iss
|
||||
dnl doc/Config.header
|
||||
dnl src/version.c.SH
|
||||
|
||||
AC_INIT([unrealircd], [5.2.4], [https://bugs.unrealircd.org/], [], [https://unrealircd.org/])
|
||||
AC_CONFIG_SRCDIR([src/ircd.c])
|
||||
AC_CONFIG_HEADER([include/setup.h])
|
||||
AC_CONFIG_AUX_DIR([autoconf])
|
||||
AC_CONFIG_MACRO_DIR([autoconf/m4])
|
||||
|
||||
if test "x$enable_dynamic_linking" = "x"; then
|
||||
echo "Please use ./Config instead of ./configure"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dnl Save CFLAGS, use this when building the libraries like c-ares
|
||||
orig_cflags="$CFLAGS"
|
||||
|
||||
dnl Save build directory early on (used in our m4 macros too)
|
||||
BUILDDIR_NOW="`pwd`"
|
||||
|
||||
dnl Calculate the versions. Perhaps the use of expr is a little too extravagant
|
||||
# Generation version number (e.g.: X in X.Y.Z)
|
||||
UNREAL_VERSION_GENERATION=["5"]
|
||||
AC_DEFINE_UNQUOTED([UNREAL_VERSION_GENERATION], [$UNREAL_VERSION_GENERATION], [Generation version number (e.g.: X for X.Y.Z)])
|
||||
|
||||
# Major version number (e.g.: Y in X.Y.Z)
|
||||
UNREAL_VERSION_MAJOR=["2"]
|
||||
AC_DEFINE_UNQUOTED([UNREAL_VERSION_MAJOR], [$UNREAL_VERSION_MAJOR], [Major version number (e.g.: Y for X.Y.Z)])
|
||||
|
||||
# Minor version number (e.g.: Z in X.Y.Z)
|
||||
UNREAL_VERSION_MINOR=["4"]
|
||||
AC_DEFINE_UNQUOTED([UNREAL_VERSION_MINOR], [$UNREAL_VERSION_MINOR], [Minor version number (e.g.: Z for X.Y.Z)])
|
||||
|
||||
# The version suffix such as a beta marker or release candidate
|
||||
# marker. (e.g.: -rcX for unrealircd-3.2.9-rcX). This macro is a
|
||||
# string instead of an integer because it contains arbitrary data.
|
||||
UNREAL_VERSION_SUFFIX=[""]
|
||||
AC_DEFINE_UNQUOTED([UNREAL_VERSION_SUFFIX], ["$UNREAL_VERSION_SUFFIX"], [Version suffix such as a beta marker or release candidate marker. (e.g.: -rcX for unrealircd-3.2.9-rcX)])
|
||||
|
||||
AC_PATH_PROG(RM,rm)
|
||||
AC_PATH_PROG(CP,cp)
|
||||
AC_PATH_PROG(TOUCH,touch)
|
||||
AC_PATH_PROG(OPENSSLPATH,openssl)
|
||||
AS_IF([test x"$OPENSSLPATH" = "x"],
|
||||
[
|
||||
echo ""
|
||||
echo "Apparently you do not have both the openssl binary and openssl development libraries installed."
|
||||
echo "The following packages are required:"
|
||||
echo "1) The library package is often called 'openssl-dev', 'openssl-devel' or 'libssl-dev'"
|
||||
echo "2) The binary package is usually called 'openssl'."
|
||||
echo "NOTE: you or your system administrator needs to install the library AND the binary package."
|
||||
echo "After doing so, simply re-run ./Config"
|
||||
exit 1
|
||||
])
|
||||
|
||||
AC_PATH_PROG(INSTALL,install)
|
||||
AC_PATH_PROG(GUNZIP, gunzip)
|
||||
AC_PATH_PROG(PKGCONFIG, pkg-config)
|
||||
|
||||
dnl Check for compiler
|
||||
AC_PROG_CC_C99
|
||||
AS_IF([test "$ac_cv_prog_cc_c99" = "no"],
|
||||
[AC_MSG_ERROR([No C99 compiler was found. Please install gcc or clang and other build tools. Eg, on Debian/Ubuntu you probably want to run the following as root: apt-get install build-essential ])])
|
||||
|
||||
dnl Check for make moved down, so the above compiler check takes precedence.
|
||||
AC_CHECK_PROG(MAKER, gmake, gmake, make)
|
||||
AC_PATH_PROG(GMAKE,gmake)
|
||||
AS_IF([$MAKER --version | grep -q "GNU Make"],
|
||||
[GNUMAKE="0"],
|
||||
[AC_MSG_ERROR([It seems your system does not have make/gmake installed. If you are on Linux then install make, otherwise install gmake.])])
|
||||
|
||||
dnl Checks for libraries.
|
||||
AC_CHECK_LIB(descrypt, crypt,
|
||||
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
|
||||
IRCDLIBS="$IRCDLIBS-ldescrypt "],
|
||||
[AC_CHECK_LIB(crypt, crypt,
|
||||
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
|
||||
IRCDLIBS="$IRCDLIBS-lcrypt "])])
|
||||
|
||||
dnl Check for big-endian system, even though these hardly exist anymore...
|
||||
AS_CASE([$host_cpu],
|
||||
[i?86|amd64|x86_64],
|
||||
[ac_cv_c_bigendian=no]
|
||||
)
|
||||
AC_C_BIGENDIAN(
|
||||
AC_DEFINE(NATIVE_BIG_ENDIAN, 1, [machine is bigendian]),
|
||||
AC_DEFINE(NATIVE_LITTLE_ENDIAN, 1, [machine is littleendian]),
|
||||
AC_MSG_ERROR([unknown endianness]),
|
||||
AC_MSG_ERROR([universal endianness is not supported - compile separately and use lipo(1)])
|
||||
)
|
||||
|
||||
dnl HARDENING START
|
||||
dnl This is taken from https://github.com/kmcallister/autoharden
|
||||
dnl With some very small modifications (to remove C++ checking for instance)
|
||||
# We want to check for compiler flag support, but there is no way to make
|
||||
# clang's "argument unused" warning fatal. So we invoke the compiler through a
|
||||
# wrapper script that greps for this message.
|
||||
saved_CC="$CC"
|
||||
saved_CXX="$CXX"
|
||||
saved_LD="$LD"
|
||||
flag_wrap="$srcdir/extras/wrap-compiler-for-flag-check"
|
||||
CC="$flag_wrap $CC"
|
||||
CXX="$flag_wrap $CXX"
|
||||
LD="$flag_wrap $LD"
|
||||
|
||||
# We use the same hardening flags for C and C++. We must check that each flag
|
||||
# is supported by both compilers.
|
||||
AC_DEFUN([check_cc_flag],
|
||||
[AC_LANG_PUSH(C)
|
||||
AX_CHECK_COMPILE_FLAG([$1], [$2], [$3], [-Werror $4])
|
||||
AC_LANG_POP(C)])
|
||||
|
||||
AC_DEFUN([check_link_flag],
|
||||
[AX_CHECK_LINK_FLAG([$1], [$2], [$3], [-Werror $4])])
|
||||
|
||||
AC_ARG_ENABLE([hardening],
|
||||
[AS_HELP_STRING([--enable-hardening],
|
||||
[Enable compiler and linker options to frustrate memory corruption exploits @<:@yes@:>@])],
|
||||
[hardening="$enableval"],
|
||||
[hardening="yes"])
|
||||
|
||||
HARDEN_CFLAGS=""
|
||||
HARDEN_LDFLAGS=""
|
||||
AS_IF([test x"$hardening" != x"no"], [
|
||||
check_cc_flag([-fno-strict-overflow], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fno-strict-overflow"])
|
||||
|
||||
# This one will likely succeed, even on platforms where it does nothing.
|
||||
check_cc_flag([-D_FORTIFY_SOURCE=2], [HARDEN_CFLAGS="$HARDEN_CFLAGS -D_FORTIFY_SOURCE=2"])
|
||||
|
||||
check_cc_flag([-fstack-protector-all],
|
||||
[check_link_flag([-fstack-protector-all],
|
||||
[HARDEN_CFLAGS="$HARDEN_CFLAGS -fstack-protector-all"
|
||||
check_cc_flag([-Wstack-protector], [HARDEN_CFLAGS="$HARDEN_CFLAGS -Wstack-protector"],
|
||||
[], [-fstack-protector-all])
|
||||
check_cc_flag([--param ssp-buffer-size=1], [HARDEN_CFLAGS="$HARDEN_CFLAGS --param ssp-buffer-size=1"],
|
||||
[], [-fstack-protector-all])])])
|
||||
|
||||
# Added in UnrealIRCd 5.0.5 (default on Ubuntu 19.10)
|
||||
check_cc_flag([-fstack-clash-protection], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fstack-clash-protection"])
|
||||
|
||||
# Control Flow Enforcement (ROP hardening) - requires CPU hardware support
|
||||
check_cc_flag([-fcf-protection], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fcf-protection"])
|
||||
|
||||
# At the link step, we might want -pie (GCC) or -Wl,-pie (Clang on OS X)
|
||||
#
|
||||
# The linker checks also compile code, so we need to include -fPIE as well.
|
||||
check_cc_flag([-fPIE],
|
||||
[check_link_flag([-fPIE -pie],
|
||||
[HARDEN_BINCFLAGS="-fPIE"
|
||||
HARDEN_BINLDFLAGS="-pie"],
|
||||
[check_link_flag([-fPIE -Wl,-pie],
|
||||
[HARDEN_BINCFLAGS="-fPIE"
|
||||
HARDEN_BINLDFLAGS="-Wl,-pie"])])])
|
||||
|
||||
check_link_flag([-Wl,-z,relro],
|
||||
[HARDEN_LDFLAGS="$HARDEN_LDFLAGS -Wl,-z,relro"
|
||||
check_link_flag([-Wl,-z,now], [HARDEN_LDFLAGS="$HARDEN_LDFLAGS -Wl,-z,now"])])])
|
||||
AC_SUBST([HARDEN_CFLAGS])
|
||||
AC_SUBST([HARDEN_LDFLAGS])
|
||||
AC_SUBST([HARDEN_BINCFLAGS])
|
||||
AC_SUBST([HARDEN_BINLDFLAGS])
|
||||
|
||||
# End of flag tests.
|
||||
CC="$saved_CC"
|
||||
CXX="$saved_CXX"
|
||||
LD="$saved_LD"
|
||||
dnl HARDENING END
|
||||
|
||||
dnl UnrealIRCd might not be strict-aliasing safe at this time
|
||||
check_cc_flag([-fno-strict-aliasing], [CFLAGS="$CFLAGS -fno-strict-aliasing"])
|
||||
|
||||
dnl UnrealIRCd should be able to compile with -fno-common
|
||||
dnl This also makes ASan (if it is in use) able to instrument these variables.
|
||||
check_cc_flag([-fno-common], [CFLAGS="$CFLAGS -fno-common"])
|
||||
|
||||
dnl Previously -funsigned-char was in a config check. It would always
|
||||
dnl be enabled with gcc and clang. We now unconditionally enable it,
|
||||
dnl skipping the check. This will cause an error if someone uses a
|
||||
dnl non-gcc/non-clang compiler that does not support -funsigned-char
|
||||
dnl which is good. After all, we really depend on it.
|
||||
dnl UnrealIRCd should never be compiled without char being unsigned.
|
||||
CFLAGS="$CFLAGS -funsigned-char"
|
||||
|
||||
dnl Compiler -W checks...
|
||||
|
||||
dnl We should be able to turn this on unconditionally:
|
||||
CFLAGS="$CFLAGS -Wall"
|
||||
|
||||
dnl More warnings (if the compiler supports it):
|
||||
check_cc_flag([-Wextra], [CFLAGS="$CFLAGS -Wextra"])
|
||||
check_cc_flag([-Waggregate-return], [CFLAGS="$CFLAGS -Waggregate-return"])
|
||||
dnl The following few are more experimental, if they have false positives we'll have
|
||||
dnl to disable them:
|
||||
dnl Can't use this, too bad: check_cc_flag([-Wlogical-op], [CFLAGS="$CFLAGS -Wlogical-op"])
|
||||
check_cc_flag([-Wduplicated-cond], [CFLAGS="$CFLAGS -Wduplicated-cond"])
|
||||
check_cc_flag([-Wduplicated-branches], [CFLAGS="$CFLAGS -Wduplicated-branches"])
|
||||
|
||||
dnl And now to filter out certain warnings:
|
||||
dnl [!] NOTE REGARDING THE check_cc_flag used by these:
|
||||
dnl We check for the -Woption even though we are going to use -Wno-option.
|
||||
dnl This is due to the following (odd) gcc behavior:
|
||||
dnl "When an unrecognized warning option is requested (e.g.,
|
||||
dnl -Wunknown-warning), GCC emits a diagnostic stating that the option is not
|
||||
dnl recognized. However, if the -Wno- form is used, the behavior is slightly
|
||||
dnl different: no diagnostic is produced for -Wno-unknown-warning unless
|
||||
dnl other diagnostics are being produced. This allows the use of new -Wno-
|
||||
dnl options with old compilers, but if something goes wrong, the compiler
|
||||
dnl warns that an unrecognized option is present."
|
||||
dnl Since we don't want to use any unrecognized -Wno-option, we test for
|
||||
dnl -Woption instead.
|
||||
|
||||
dnl Pointer signedness warnings are really a pain and 99.9% of the time
|
||||
dnl they are of absolutely no use whatsoever. IMO the person who decided
|
||||
dnl to enable this without -Wall should be shot on sight.
|
||||
check_cc_flag([-Wpointer-sign], [CFLAGS="$CFLAGS -Wno-pointer-sign"])
|
||||
|
||||
dnl This is purely for charsys.c... I like it so we can easily read
|
||||
dnl this for non-utf8. We can remove it once we ditch non-utf8 some day
|
||||
dnl of course, or decide to ignore me and encode them.
|
||||
check_cc_flag([-Winvalid-source-encoding], [CFLAGS="$CFLAGS -Wno-invalid-source-encoding"])
|
||||
|
||||
check_cc_flag([-Wformat-zero-length], [CFLAGS="$CFLAGS -Wno-format-zero-length"])
|
||||
|
||||
check_cc_flag([-Wformat-truncation], [CFLAGS="$CFLAGS -Wno-format-truncation"])
|
||||
|
||||
dnl While it can be useful to occasionally to compile with warnings about
|
||||
dnl unused variables and parameters, we often 'think ahead' when coding things
|
||||
dnl so they may be useless now but not later. Similarly, for variables, we
|
||||
dnl don't always care about a variable that may still be present in a build
|
||||
dnl without DEBUGMODE. Unused variables are optimized out anyway.
|
||||
check_cc_flag([-Wunused], [CFLAGS="$CFLAGS -Wno-unused"])
|
||||
check_cc_flag([-Wunused-parameter], [CFLAGS="$CFLAGS -Wno-unused-parameter"])
|
||||
check_cc_flag([-Wunused-but-set-parameter], [CFLAGS="$CFLAGS -Wno-unused-but-set-parameter"])
|
||||
|
||||
dnl We use this and this warning is meaningless since 'char' is always unsigned
|
||||
dnl in UnrealIRCd compiles (-funsigned-char).
|
||||
check_cc_flag([-Wchar-subscripts], [CFLAGS="$CFLAGS -Wno-char-subscripts"])
|
||||
|
||||
check_cc_flag([-Wsign-compare], [CFLAGS="$CFLAGS -Wno-sign-compare"])
|
||||
|
||||
dnl Don't warn about empty body, we use this, eg via Debug(()) or in if's.
|
||||
check_cc_flag([-Wempty-body], [CFLAGS="$CFLAGS -Wno-empty-body"])
|
||||
|
||||
dnl This one fails with ircstrdup(var, staticstring)
|
||||
dnl Shame we have to turn it off completely...
|
||||
check_cc_flag([-Waddress], [CFLAGS="$CFLAGS -Wno-address"])
|
||||
|
||||
dnl This one breaks our TO_INTFUNC() that is used in m_tkl for tkl_typetochar
|
||||
check_cc_flag([-Wcast-function-type], [CFLAGS="$CFLAGS -Wno-cast-function-type"])
|
||||
|
||||
AS_IF([$CC --version | grep -q "clang version 3."],
|
||||
[CFLAGS="$CFLAGS -Wno-tautological-compare"])
|
||||
|
||||
dnl End of -W... compiler checks.
|
||||
|
||||
|
||||
dnl module checking based on Hyb7's module checking code
|
||||
AC_DEFUN([AC_ENABLE_DYN],
|
||||
[
|
||||
AC_CHECK_FUNC(dlopen,, [AC_CHECK_LIB(dl, dlopen,IRCDLIBS="$IRCDLIBS -ldl",
|
||||
[
|
||||
AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found)
|
||||
AC_DEFINE(STATIC_LINKING)
|
||||
])])
|
||||
|
||||
hold_cflags=$CFLAGS
|
||||
DYNAMIC_LDFLAGS=""
|
||||
CFLAGS="$CFLAGS -Wl,-export-dynamic"
|
||||
AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [
|
||||
AC_TRY_LINK(, [int i];, ac_cv_export_dynamic=yes, ac_cv_export_dynamic=no)])
|
||||
CFLAGS=$hold_cflags
|
||||
if test "$ac_cv_export_dynamic" = "yes"; then
|
||||
DYNAMIC_LDFLAGS="-Wl,-export-dynamic"
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[
|
||||
if test "$ac_cv_prog_gcc" = "yes"; then
|
||||
ac_cv_pic="-fPIC -DPIC -shared"
|
||||
case `uname -s` in
|
||||
Darwin*[)]
|
||||
ac_cv_pic="-std=gnu89 -bundle -flat_namespace -undefined suppress"
|
||||
;;
|
||||
HP-UX*[)]
|
||||
ac_cv_pic="-fPIC"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case `uname -s` in
|
||||
SunOS*[)]
|
||||
ac_cv_pic="-KPIC -DPIC -G"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[
|
||||
cat >uscore.c << __EOF__
|
||||
int main() {
|
||||
return 0;
|
||||
}
|
||||
__EOF__
|
||||
$CC -o uscore $CFLAGS uscore.c 1>&5
|
||||
if test -z "`strings -a uscore |grep '^_main$'`"; then
|
||||
ac_cv_underscore=no
|
||||
else
|
||||
ac_cv_underscore=yes
|
||||
fi
|
||||
rm -f uscore uscore.c
|
||||
])
|
||||
dnl libtool has built-in tests that determine proper underscorage
|
||||
if test "$ac_cv_underscore" = "yes"; then
|
||||
AC_DEFINE([UNDERSCORE], [], [Define if your system prepends an underscore to symbols])
|
||||
fi
|
||||
|
||||
MODULEFLAGS="$ac_cv_pic $DYNAMIC_LDFLAGS"
|
||||
dnl DYNAMIC_LINKING is not meant to be defined in include/setup.h, it's
|
||||
dnl defined in the Makefiles using -D. Having it defined globally will
|
||||
dnl only cause braindamage and symbol collisions :-D.
|
||||
dnl AC_DEFINE([DYNAMIC_LINKING], [], [Link dynamically as opposed to statically. (Dynamic linking is the only supported method of linking atm)])
|
||||
])
|
||||
|
||||
AC_CACHE_CHECK([if your system has IPv6 support], [ac_cv_ip6], [
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
int main() {
|
||||
int s = socket(AF_INET6, SOCK_STREAM, 0);
|
||||
exit(0); /* We only check if the code compiles, that's enough. We can deal with missing runtime IPv6 */
|
||||
}
|
||||
],
|
||||
[ac_cv_ip6=yes],
|
||||
[ac_cv_ip6=no])
|
||||
])
|
||||
if test "$ac_cv_ip6" = "no"; then
|
||||
AC_MSG_ERROR([Your system does not support IPv6])
|
||||
fi
|
||||
|
||||
AC_CHECK_HEADER(sys/syslog.h,
|
||||
AC_DEFINE([SYSSYSLOGH], [], [Define if you have the <sys/syslog.h> header file.]))
|
||||
AC_CHECK_HEADER(sys/rusage.h,
|
||||
AC_DEFINE([RUSAGEH], [], [Define if you have the <sys/rusage.h> header file.]))
|
||||
AC_CHECK_HEADER(glob.h,
|
||||
AC_DEFINE([GLOBH], [], [Define if you have the <glob.h> header file.]))
|
||||
AC_CHECK_HEADERS([stdint.h inttypes.h])
|
||||
|
||||
dnl Checks for library functions.
|
||||
AC_CHECK_FUNCS(strlcpy,
|
||||
AC_DEFINE([HAVE_STRLCPY], [], [Define if you have strlcpy. Otherwise, an internal implementation will be used!]))
|
||||
AC_CHECK_FUNCS(strlcat,
|
||||
AC_DEFINE([HAVE_STRLCAT], [], [Define if you have strlcat]))
|
||||
AC_CHECK_FUNCS(strlncat,
|
||||
AC_DEFINE([HAVE_STRLNCAT], [], [Define if you have strlncat]))
|
||||
|
||||
AC_CHECK_FUNCS([getrusage],
|
||||
[AC_DEFINE([GETRUSAGE_2], [], [Define if you have getrusage])],
|
||||
[AC_CHECK_FUNCS([times],
|
||||
[AC_DEFINE([TIMES_2], [], [Define if you have times])])])
|
||||
AC_CHECK_FUNCS([setproctitle],
|
||||
[AC_DEFINE([HAVE_SETPROCTITLE], [], [Define if you have setproctitle])],
|
||||
[AC_CHECK_LIB([util],
|
||||
[setproctitle],
|
||||
[AC_DEFINE([HAVE_SETPROCTITLE], [], [Define if you have setproctitle])
|
||||
IRCDLIBS="$IRCDLIBS-lutil"],
|
||||
[
|
||||
AC_EGREP_HEADER([#define.*PS_STRINGS.*],[sys/exec.h],
|
||||
[AC_DEFINE([HAVE_PSSTRINGS],[], [Define if you have PS_STRINGS])],
|
||||
[AC_CHECK_FUNCS([pstat],
|
||||
[AC_DEFINE([HAVE_PSTAT], [], [Define if you have pstat])])])
|
||||
])
|
||||
]
|
||||
)
|
||||
|
||||
AC_CHECK_FUNCS(explicit_bzero,AC_DEFINE([HAVE_EXPLICIT_BZERO], [], [Define if you have explicit_bzero]))
|
||||
AC_CHECK_FUNCS(syslog,AC_DEFINE([HAVE_SYSLOG], [], [Define if you have syslog]))
|
||||
AC_SUBST(CRYPTOLIB)
|
||||
AC_SUBST(MODULEFLAGS)
|
||||
AC_SUBST(DYNAMIC_LDFLAGS)
|
||||
AC_ARG_WITH(nick-history, [AS_HELP_STRING([--with-nick-history=length],[Specify the length of the nickname history])],
|
||||
[AC_DEFINE_UNQUOTED([NICKNAMEHISTORYLENGTH], [$withval], [Set to the nickname history length you want])],
|
||||
[AC_DEFINE([NICKNAMEHISTORYLENGTH], [2000], [Set to the nickname history length you want])])
|
||||
AC_ARG_WITH(permissions, [AS_HELP_STRING([--with-permissions=permissions], [Specify the default permissions for
|
||||
configuration files])],
|
||||
dnl We have an apparently out-of-place 0 here because of a MacOSX bug and because
|
||||
dnl we assume that a user thinks that `chmod 0600 blah' is the same as `chmod 600 blah'
|
||||
dnl (#3189)
|
||||
[AC_DEFINE_UNQUOTED([DEFAULT_PERMISSIONS], [0$withval], [The default permissions for configuration files. Set to 0 to prevent unrealircd from calling chmod() on the files.])],
|
||||
[AC_DEFINE([DEFAULT_PERMISSIONS], [0600], [The default permissions for configuration files. Set to 0 to prevent unrealircd from calling chmod() on the files.])])
|
||||
|
||||
AC_ARG_WITH(bindir, [AS_HELP_STRING([--with-bindir=path],[Specify the directory for the unrealircd binary])],
|
||||
[AC_DEFINE_UNQUOTED([BINDIR], ["$withval"], [Define the directory where the unrealircd binary is located])
|
||||
BINDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([BINDIR], ["$HOME/unrealircd/bin"], [Define the directory where the unrealircd binary is located])
|
||||
BINDIR="$HOME/unrealircd/bin"])
|
||||
|
||||
AC_ARG_WITH(scriptdir, [AS_HELP_STRING([--with-scriptdir=path],[Specify the directory for the unrealircd start-stop script])],
|
||||
[AC_DEFINE_UNQUOTED([SCRIPTDIR], ["$withval"], [Define the directory where the unrealircd start stop scripts is located])
|
||||
SCRIPTDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([SCRIPTDIR], ["$HOME/unrealircd"], [Define the directory where the unrealircd start stop scripts is located])
|
||||
SCRIPTDIR="$HOME/unrealircd"])
|
||||
|
||||
AC_ARG_WITH(confdir, [AS_HELP_STRING([--with-confdir=path],[Specify the directory where configuration files are stored])],
|
||||
[AC_DEFINE_UNQUOTED([CONFDIR], ["$withval"], [Define the location of the configuration files])
|
||||
CONFDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([CONFDIR], ["$HOME/unrealircd/conf"], [Define the location of the configuration files])
|
||||
CONFDIR="$HOME/unrealircd/conf"])
|
||||
|
||||
dnl We have to pass the builddir as well, for the module manager
|
||||
AC_ARG_WITH(builddir, [AS_HELP_STRING([--with-builddir=path],[Specify the build directory])],
|
||||
[AC_DEFINE_UNQUOTED([BUILDDIR], ["$withval"], [Define the build directory])
|
||||
BUILDDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([BUILDDIR], ["$BUILDDIR_NOW"], [Specify the build directory])
|
||||
BUILDDIR="$BUILDDIR_NOW"])
|
||||
|
||||
AC_ARG_WITH(modulesdir, [AS_HELP_STRING([--with-modulesdir=path],[Specify the directory for loadable modules])],
|
||||
[AC_DEFINE_UNQUOTED([MODULESDIR], ["$withval"], [Define the location of the modules])
|
||||
MODULESDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([MODULESDIR], ["$HOME/unrealircd/modules"], [Define the location of the modules])
|
||||
MODULESDIR="$HOME/unrealircd/modules"])
|
||||
|
||||
AC_ARG_WITH(logdir, [AS_HELP_STRING([--with-logdir=path],[Specify the directory where log files are stored])],
|
||||
[AC_DEFINE_UNQUOTED([LOGDIR], ["$withval"], [Define the location of the log files])
|
||||
LOGDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([LOGDIR], ["$HOME/unrealircd/logs"], [Define the location of the log files])
|
||||
LOGDIR="$HOME/unrealircd/logs"])
|
||||
|
||||
AC_ARG_WITH(cachedir, [AS_HELP_STRING([--with-cachedir=path],[Specify the directory where cached files are stored])],
|
||||
[AC_DEFINE_UNQUOTED([CACHEDIR], ["$withval"], [Define the location of the cached remote include files])
|
||||
CACHEDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([CACHEDIR], ["$HOME/unrealircd/cache"], [Define the location of the cached remote include files])
|
||||
CACHEDIR="$HOME/unrealircd/cache"])
|
||||
|
||||
AC_ARG_WITH(tmpdir, [AS_HELP_STRING([--with-tmpdir=path],[Specify the directory where private temporary files are stored. Should not be readable or writable by others, so not /tmp!!])],
|
||||
[AC_DEFINE_UNQUOTED([TMPDIR], ["$withval"], [Define the location of private temporary files])
|
||||
TMPDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([TMPDIR], ["$HOME/unrealircd/tmp"], [Define the location of private temporary files])
|
||||
TMPDIR="$HOME/unrealircd/tmp"])
|
||||
|
||||
AC_ARG_WITH(datadir, [AS_HELP_STRING([--with-datadir=path],[Specify the directory where permanent data is stored])],
|
||||
[AC_DEFINE_UNQUOTED([PERMDATADIR], ["$withval"], [Define the location of permanent data files])
|
||||
PERMDATADIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([DATADIR], ["$HOME/unrealircd/data"], [Define the location of permanent data files])
|
||||
PERMDATADIR="$HOME/unrealircd/data"])
|
||||
|
||||
AC_ARG_WITH(docdir, [AS_HELP_STRING([--with-docdir=path],[Specify the directory where documentation is stored])],
|
||||
[AC_DEFINE_UNQUOTED([DOCDIR], ["$withval"], [Define the location of the documentation])
|
||||
DOCDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([DOCDIR], ["$HOME/unrealircd/doc"], [Define the location of the documentation])
|
||||
DOCDIR="$HOME/unrealircd/doc"])
|
||||
|
||||
AC_ARG_WITH(pidfile, [AS_HELP_STRING([--with-pidfile=path],[Specify the path of the pid file])],
|
||||
[AC_DEFINE_UNQUOTED([PIDFILE], ["$withval"], [Define the path of the pid file])
|
||||
PIDFILE="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([PIDFILE], ["$HOME/unrealircd/data/unrealircd.pid"], [Define the path of the pid file])
|
||||
PIDFILE="$HOME/unrealircd/data/unrealircd.pid"])
|
||||
|
||||
dnl Ensure that this “feature” can be disabled as it makes it harder to package unrealircd.
|
||||
dnl Users have always been able to specify “./configure LDFLAGS=-Wl,-rpath,/path/to/blah”—binki
|
||||
AC_ARG_WITH(privatelibdir, [AS_HELP_STRING([--with-privatelibdir=path],[Specify the directory where private libraries are stored. Disable when building a package for a distro])],
|
||||
[],
|
||||
[with_privatelibdir="yes"])
|
||||
AS_IF([test "x$with_privatelibdir" = "xno"],
|
||||
[PRIVATELIBDIR=],
|
||||
[test "x$with_privatelibdir" = "xyes"],
|
||||
[PRIVATELIBDIR="$HOME/unrealircd/lib"],
|
||||
[PRIVATELIBDIR="$with_privatelibdir"])
|
||||
AS_IF([test "x$PRIVATELIBDIR" = "x"],
|
||||
[LDFLAGS_PRIVATELIBS=""],
|
||||
[AC_DEFINE_UNQUOTED([PRIVATELIBDIR], ["$PRIVATELIBDIR"], [Define the location of private libraries])
|
||||
LDFLAGS_PRIVATELIBS="-Wl,-rpath,$PRIVATELIBDIR"
|
||||
LDFLAGS="$LDFLAGS $LDFLAGS_PRIVATELIBS"
|
||||
export LDFLAGS])
|
||||
|
||||
AC_SUBST(BUILDDIR)
|
||||
AC_SUBST(BINDIR)
|
||||
AC_SUBST(SCRIPTDIR)
|
||||
AC_SUBST(CONFDIR)
|
||||
AC_SUBST(MODULESDIR)
|
||||
AC_SUBST(LOGDIR)
|
||||
AC_SUBST(CACHEDIR)
|
||||
AC_SUBST(TMPDIR)
|
||||
dnl Why o why PERMDATADIR and not DATADIR you ask?
|
||||
dnl well, Because DATADIR conflicts with the Windows SDK header files.. amazing.
|
||||
AC_SUBST(PERMDATADIR)
|
||||
AC_SUBST(DOCDIR)
|
||||
AC_SUBST(PIDFILE)
|
||||
AC_SUBST(LDFLAGS_PRIVATELIBS)
|
||||
|
||||
AC_ARG_WITH(maxconnections, [AS_HELP_STRING([--with-maxconnections=size], [Specify the max file descriptors to use])],
|
||||
[ac_fd=$withval],
|
||||
[ac_fd=0])
|
||||
AC_DEFINE_UNQUOTED([MAXCONNECTIONS_REQUEST], [$ac_fd], [Set to the maximum number of connections you want])
|
||||
|
||||
AC_ARG_ENABLE([prefixaq],
|
||||
[AS_HELP_STRING([--disable-prefixaq],[Disable chanadmin (+a) and chanowner (+q) prefixes])],
|
||||
[],
|
||||
[enable_prefixaq=yes])
|
||||
AS_IF([test $enable_prefixaq = "yes"],
|
||||
[AC_DEFINE([PREFIX_AQ], [], [Define if you want +a/+q prefixes])])
|
||||
|
||||
AC_ARG_WITH(showlistmodes,
|
||||
[AS_HELP_STRING([--with-showlistmodes], [Specify whether modes are shown in /list])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([LIST_SHOW_MODES], [], [Define if you want modes shown in /list])])])
|
||||
AC_ARG_WITH(no-operoverride, [AS_HELP_STRING([--with-no-operoverride], [Disable OperOverride])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([NO_OPEROVERRIDE], [], [Define if you want OperOverride disabled])])])
|
||||
AC_ARG_WITH(operoverride-verify, [AS_HELP_STRING([--with-operoverride-verify], [Require opers to invite themselves to +s/+p channels])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([OPEROVERRIDE_VERIFY], [], [Define if you want opers to have to use /invite to join +s/+p channels])])])
|
||||
AC_ARG_WITH(system-pcre2, [AS_HELP_STRING([--without-system-pcre2], [Use the system pcre2 package instead of bundled, discovered using pkg-config])], [], [with_system_pcre2=yes])
|
||||
AC_ARG_WITH(system-argon2, [AS_HELP_STRING([--without-system-argon2], [Use bundled version instead of system argon2 library. Normally autodetected via pkg-config])], [], [with_system_argon2=yes])
|
||||
AC_ARG_WITH(system-sodium, [AS_HELP_STRING([--without-system-sodium], [Use bundled version instead of system sodium library. Normally autodetected via pkg-config])], [], [with_system_sodium=yes])
|
||||
AC_ARG_WITH(system-cares, [AS_HELP_STRING([--without-system-cares], [Use bundled version instead of system c-ares. Normally autodetected via pkg-config.])], [], [with_system_cares=yes])
|
||||
CHECK_SSL
|
||||
CHECK_SSL_CTX_SET1_CURVES_LIST
|
||||
CHECK_SSL_CTX_SET_MIN_PROTO_VERSION
|
||||
CHECK_SSL_CTX_SET_SECURITY_LEVEL
|
||||
CHECK_ASN1_TIME_diff
|
||||
CHECK_X509_get0_notAfter
|
||||
AC_ARG_ENABLE(dynamic-linking, [AS_HELP_STRING([--disable-dynamic-linking], [Make the IRCd statically link with shared objects rather than dynamically (noone knows if disabling dynamic linking actually does anything or not)])],
|
||||
[enable_dynamic_linking=$enableval], [enable_dynamic_linking="yes"])
|
||||
AS_IF([test $enable_dynamic_linking = "yes"],
|
||||
[AC_ENABLE_DYN],
|
||||
[AC_DEFINE([STATIC_LINKING], [], [Link... statically(?) (defining this macro will probably cause the build tofail)])])
|
||||
|
||||
AC_ARG_ENABLE([werror],
|
||||
[AS_HELP_STRING([--enable-werror],
|
||||
[Turn compilation warnings into errors (-Werror)])],
|
||||
[ac_cv_werror="$enableval"],
|
||||
[ac_cv_werror="no"])
|
||||
|
||||
AC_ARG_ENABLE([asan],
|
||||
[AS_HELP_STRING([--enable-asan],
|
||||
[Enable address sanitizer and other debugging options, not recommended for production servers!])],
|
||||
[ac_cv_asan="$enableval"],
|
||||
[ac_cv_asan="no"])
|
||||
|
||||
AC_CHECK_FUNCS([poll],
|
||||
AC_DEFINE([HAVE_POLL], [], [Define if you have poll]))
|
||||
AC_CHECK_FUNCS([epoll_create epoll_ctl epoll_wait],
|
||||
AC_DEFINE([HAVE_EPOLL], [], [Define if you have epoll]))
|
||||
AC_CHECK_FUNCS([kqueue kevent],
|
||||
AC_DEFINE([HAVE_KQUEUE], [], [Define if you have kqueue]))
|
||||
|
||||
dnl c-ares needs PATH_SEPARATOR set or it will
|
||||
dnl fail on certain solaris boxes. We might as
|
||||
dnl well set it here.
|
||||
export PATH_SEPARATOR
|
||||
|
||||
dnl Use system pcre2 when available, unless --without-system-pcre2.
|
||||
has_system_pcre2="no"
|
||||
AS_IF([test "x$with_system_pcre2" = "xyes"],[
|
||||
PKG_CHECK_MODULES([PCRE2], libpcre2-8 >= 10.00,[has_system_pcre2=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libpcre2*])],[has_system_pcre2=no])])
|
||||
|
||||
AS_IF([test "$has_system_pcre2" = "no"], [
|
||||
dnl REMEMBER TO CHANGE WITH A NEW PCRE2 RELEASE!
|
||||
pcre2_version="10.36"
|
||||
AC_MSG_RESULT(extracting PCRE2 regex library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old pcre2 directory to force a recompile...
|
||||
dnl and remove its installation prefix just to clean things up.
|
||||
rm -rf pcre2-$pcre2_version pcre2
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz pcre2.tar.gz
|
||||
else
|
||||
cp pcre2.tar.gz pcre2.tar.gz.bak
|
||||
gunzip -f pcre2.tar.gz
|
||||
cp pcre2.tar.gz.bak pcre2.tar.gz
|
||||
tar xf pcre2.tar
|
||||
fi
|
||||
AC_MSG_RESULT(configuring PCRE2 regex library)
|
||||
cd pcre2-$pcre2_version
|
||||
./configure --enable-jit --enable-shared --disable-unicode --prefix=$cur_dir/extras/pcre2 --libdir=$PRIVATELIBDIR || exit 1
|
||||
AC_MSG_RESULT(compiling PCRE2 regex library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing PCRE2 regex library)
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
PCRE2_CFLAGS="-I$cur_dir/extras/pcre2/include"
|
||||
AC_SUBST(PCRE2_CFLAGS)
|
||||
PCRE2_LIBS=
|
||||
dnl See c-ares's compilation section for more info on this hack.
|
||||
dnl ensure that we're linking against the bundled version of pcre2
|
||||
dnl (we only reach this code if linking against the bundled version is desired).
|
||||
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
|
||||
[PCRE2_LIBS="`$ac_cv_path_PKGCONFIG --libs libpcre2-8.pc`"])
|
||||
dnl For when pkg-config isn't available -- or for when pkg-config
|
||||
dnl doesn't see the libpcre2-8.pc file somehow... (#3982)
|
||||
AS_IF([test -z "$PCRE2_LIBS"],
|
||||
[PCRE2_LIBS="$PRIVATELIBDIR/libpcre2-8.so"])
|
||||
AC_SUBST(PCRE2_LIBS)
|
||||
cd $cur_dir
|
||||
])
|
||||
|
||||
dnl Use system argon2 when available, unless --without-system-argon2
|
||||
has_system_argon2="no"
|
||||
AS_IF([test "x$with_system_argon2" = "xyes"],[
|
||||
PKG_CHECK_MODULES([ARGON2], [libargon2 >= 0~20161029],[has_system_argon2=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libargon2*])],[has_system_argon2=no])])
|
||||
|
||||
AS_IF([test "$has_system_argon2" = "no"],[
|
||||
dnl REMEMBER TO CHANGE WITH A NEW ARGON2 RELEASE!
|
||||
argon2_version="20181209"
|
||||
AC_MSG_RESULT(extracting Argon2 library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old argon2 directory to force a recompile...
|
||||
dnl and remove its installation prefix just to clean things up.
|
||||
rm -rf argon2-$argon2_version argon2
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz argon2-$argon2_version.tar.gz
|
||||
else
|
||||
cp argon2-$argon2_version.tar.gz argon2-$argon2_version.tar.gz.bak
|
||||
gunzip -f argon2-$argon2_version.tar.gz
|
||||
cp argon2-$argon2_version.tar.gz.bak argon2-$argon2_version.tar.gz
|
||||
tar xf argon2-$argon2_version.tar
|
||||
fi
|
||||
AC_MSG_RESULT(compiling Argon2 library)
|
||||
cd argon2-$argon2_version
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing Argon2 library)
|
||||
$ac_cv_prog_MAKER install PREFIX=$cur_dir/extras/argon2 || exit 1
|
||||
# We need to manually copy the libs to PRIVATELIBDIR because
|
||||
# there is no way to tell make install in libargon2 to do so.
|
||||
# BUT FIRST, delete the old library so it becomes an unlink+create
|
||||
# operation rather than overwriting the existing file which would
|
||||
# lead to a crash of the currently running IRCd.
|
||||
rm -f "$PRIVATELIBDIR/"libargon2*
|
||||
# Now copy the new library files:
|
||||
cp -av $cur_dir/extras/argon2/lib/* $PRIVATELIBDIR/
|
||||
ARGON2_CFLAGS="-I$cur_dir/extras/argon2/include"
|
||||
AC_SUBST(ARGON2_CFLAGS)
|
||||
ARGON2_LIBS="-L$PRIVATELIBDIR -largon2"
|
||||
AC_SUBST(ARGON2_LIBS)
|
||||
cd $cur_dir
|
||||
])
|
||||
|
||||
dnl Use system sodium when available, unless --without-system-sodium
|
||||
has_system_sodium="no"
|
||||
AS_IF([test "x$with_system_sodium" = "xyes"],[
|
||||
PKG_CHECK_MODULES([SODIUM], [libsodium >= 1.0.16],[has_system_sodium=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libsodium*])],[has_system_sodium=no])])
|
||||
|
||||
AS_IF([test "$has_system_sodium" = "no"],[
|
||||
dnl REMEMBER TO CHANGE WITH A NEW SODIUM RELEASE!
|
||||
sodium_version="1.0.18"
|
||||
AC_MSG_RESULT(extracting sodium library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old sodium directory to force a recompile...
|
||||
dnl and remove its installation prefix just to clean things up.
|
||||
rm -rf sodium-$sodium_version sodium
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz libsodium.tar.gz
|
||||
else
|
||||
cp libsodium.tar.gz libsodium.tar.gz.bak
|
||||
gunzip -f libsodium.tar.gz
|
||||
cp libsodium.tar.gz.bak libsodium.tar.gz
|
||||
tar xf libsodium.tar
|
||||
fi
|
||||
AC_MSG_RESULT(compiling sodium library)
|
||||
cd libsodium-$sodium_version
|
||||
save_cflags="$CFLAGS"
|
||||
CFLAGS="$orig_cflags"
|
||||
export CFLAGS
|
||||
./configure --prefix=$cur_dir/extras/sodium --libdir=$PRIVATELIBDIR --enable-shared --disable-static --enable-opt || exit 1
|
||||
CFLAGS="$save_cflags"
|
||||
AC_MSG_RESULT(compiling sodium resolver library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing sodium resolver library)
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
SODIUM_CFLAGS="-I$cur_dir/extras/sodium/include"
|
||||
AC_SUBST(SODIUM_CFLAGS)
|
||||
SODIUM_LIBS=
|
||||
dnl See c-ares's compilation section for more info on this hack.
|
||||
dnl ensure that we're linking against the bundled version
|
||||
dnl (we only reach this code if linking against the bundled version is desired).
|
||||
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
|
||||
[SODIUM_LIBS="`$ac_cv_path_PKGCONFIG --libs libsodium.pc`"])
|
||||
dnl For when pkg-config isn't available
|
||||
AS_IF([test -z "$SODIUM_LIBS"],
|
||||
[SODIUM_LIBS="-L$PRIVATELIBDIR -lsodium"])
|
||||
AC_SUBST(SODIUM_LIBS)
|
||||
cd $cur_dir
|
||||
])
|
||||
|
||||
dnl Use system c-ares when available, unless --without-system-cares.
|
||||
has_system_cares="no"
|
||||
AS_IF([test "x$with_system_cares" = "xyes"],[
|
||||
PKG_CHECK_MODULES([CARES], libcares >= 1.6.0,[has_system_cares=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libcares*])],[has_system_cares=no])])
|
||||
|
||||
AS_IF([test "$has_system_cares" = "no"], [
|
||||
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
|
||||
dnl NOTE: when changing this here, ALSO change it in extras/curlinstall
|
||||
dnl and in the comment in this file around line 400!
|
||||
cares_version="1.17.2"
|
||||
AC_MSG_RESULT(extracting c-ares resolver library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old c-ares directory to force a recompile...
|
||||
rm -rf c-ares-$cares_version c-ares
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz c-ares.tar.gz
|
||||
else
|
||||
cp c-ares.tar.gz c-ares.tar.gz.bak
|
||||
gunzip -f c-ares.tar.gz
|
||||
cp c-ares.tar.gz.bak c-ares.tar.gz
|
||||
tar xf c-ares.tar
|
||||
fi
|
||||
AC_MSG_RESULT(configuring c-ares library)
|
||||
cd c-ares-$cares_version
|
||||
save_cflags="$CFLAGS"
|
||||
CFLAGS="$orig_cflags"
|
||||
export CFLAGS
|
||||
./configure --prefix=$cur_dir/extras/c-ares --libdir=$PRIVATELIBDIR --enable-shared --disable-tests || exit 1
|
||||
CFLAGS="$save_cflags"
|
||||
AC_MSG_RESULT(compiling c-ares resolver library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing c-ares resolver library)
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
CARES_CFLAGS="-I$cur_dir/extras/c-ares/include"
|
||||
AC_SUBST(CARES_CFLAGS)
|
||||
CARES_LIBS="-L$PRIVATELIBDIR"
|
||||
|
||||
dnl Set default library parameters for when pkg-config is not available
|
||||
dnl Ugly cd'ing out of extras/c-ares-xxx ;)
|
||||
dnl Note: must be a full path, not relative path.
|
||||
cd ../..
|
||||
CARESLIBSALT="$PRIVATELIBDIR/libcares.so"
|
||||
cd -
|
||||
case `uname -s` in
|
||||
*FreeBSD*)
|
||||
CARESLIBSALT="$CARESLIBSALT"
|
||||
;;
|
||||
*Linux*)
|
||||
CARESLIBSALT="$CARESLIBSALT -lrt"
|
||||
;;
|
||||
*SunOS*)
|
||||
CARESLIBSALT="$CARESLIBSALT -lrt"
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl Use pkg-config for c-ares libraries, and if not available use defaults
|
||||
dnl from above (also if pkg-config returns an empty result).
|
||||
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
|
||||
CARES_LIBS="$CARES_LIBS $CARESLIBSALT"
|
||||
else
|
||||
CARES_LIBSPRE="$CARES_LIBS"
|
||||
dnl the sed expression forces an absolute path to the .so file to be generated
|
||||
dnl because this is what libtool would do. If this wasn't done and /usr/lib*/libcares.so
|
||||
dnl exists, then unrealircd would still try to link against the system c-ares.
|
||||
dnl The [] quotation is needed because the sed expression has [] in it.
|
||||
[CARES_LIBS="$CARES_LIBS `$ac_cv_path_PKGCONFIG --libs libcares.pc | sed -e 's,-L\([^ ]\+lib\) -lcares,\1/libcares.so,'`"]
|
||||
if test "$CARES_LIBS" = "$CARES_LIBSPRE " ; then
|
||||
CARES_LIBS="$CARES_LIBS $CARESLIBSALT"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(CARES_LIBS)
|
||||
cd $cur_dir
|
||||
])
|
||||
|
||||
AX_PTHREAD()
|
||||
|
||||
CHECK_LIBCURL
|
||||
|
||||
UNRLINCDIR="`pwd`/include"
|
||||
|
||||
dnl Moved to the very end to ensure it doesn't affect any libs or tests.
|
||||
if test "$ac_cv_werror" = "yes" ; then
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
fi
|
||||
|
||||
dnl Address sanitizer build
|
||||
if test "$ac_cv_asan" = "yes" ; then
|
||||
CFLAGS="$CFLAGS -O1 -fno-inline -fsanitize=address -fno-omit-frame-pointer -DNOCLOSEFD"
|
||||
IRCDLIBS="-fsanitize=address $IRCDLIBS"
|
||||
fi
|
||||
|
||||
AC_SUBST(IRCDLIBS)
|
||||
|
||||
AC_SUBST(UNRLINCDIR)
|
||||
|
||||
AC_CONFIG_FILES([Makefile
|
||||
src/Makefile
|
||||
src/modules/Makefile
|
||||
src/modules/chanmodes/Makefile
|
||||
src/modules/usermodes/Makefile
|
||||
src/modules/snomasks/Makefile
|
||||
src/modules/extbans/Makefile
|
||||
src/modules/third/Makefile
|
||||
extras/unrealircd-upgrade-script
|
||||
unrealircd])
|
||||
AC_OUTPUT
|
||||
chmod 0700 unrealircd
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
ALN, Alphanumeric System
|
||||
(C) Stskeeps 2000
|
||||
|
||||
ALN is a quick hack to short down usage of bandwidth-using servernames
|
||||
in prefixes, NICK commands, etc etc. It replaces the name with a
|
||||
1 or 2 byte prefix in a system, look at src/aln.c for the prefix
|
||||
types/values. It will be an PROTOCTL, and used in NICK messages and so on,
|
||||
and introduce a new prefix server<->server called |server. The value of the
|
||||
server is calculated by a hash value, the scache system, so that the server
|
||||
can lookup with a new scache function, scache_find_by_hash(int i). The
|
||||
question of it will conflict in similar-hash server names, is a wonder to me
|
||||
:P, we will find out, but scache will fail at same time then.
|
||||
|
||||
|
||||
Examples:
|
||||
& Medb 4 957458466 ~Medb bservice.org D2 0 +iwrx *
|
||||
:BotService Bot - bservice.org - Owner: terri{J}
|
||||
|
||||
where D2 is the hash value of oxygen.phrozen.org (/stats s on a
|
||||
#define DEVELOP server). irc.flirt.org has hash 96 (ALN code AX) for
|
||||
instance.
|
||||
|
||||
@D2 GLOBOPS :message
|
||||
will be a message from server with hash D2, found find-by-hash(256)
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From cmunk@draconic.fyremoon.net Wed Apr 5 18:09:55 2000
|
||||
Date: Wed, 5 Apr 2000 18:07:55 +0100 (BST)
|
||||
From: "The Nightwalker (Stskeeps)" <cmunk@draconic.fyremoon.net>
|
||||
To: unreal-dev@lists.sourceforge.net
|
||||
Subject: [Unreal-dev] P:Lines
|
||||
|
||||
|
||||
Some stuff i got ideas about.. stripping the IP and port from the M:Line
|
||||
and enforcing the main port to be in a M:line
|
||||
|
||||
M:irc.fyremoon.net:*:Forever is gonna start tonight:*
|
||||
|
||||
P:ip:flags:password1,password2,password3:port
|
||||
| | | \- port to bind to
|
||||
| | |
|
||||
| | \- Commaseperated lists of accepted passwords
|
||||
| | * if none
|
||||
| |
|
||||
| \--- C = Allow clients
|
||||
| S = Allow servers
|
||||
| R = ONLY allow our remote admin connections
|
||||
| (may only be on a P:line of its own)
|
||||
| J = Clients that connect here are counted as Java(Confroomhack)
|
||||
| * = CS
|
||||
|
|
||||
\--- IP to bind to, * = INADDR_ANY (all interfaces)
|
||||
|
||||
Will make P:Lines more efficent
|
||||
|
||||
---------------------------------------------------------------------
|
||||
Carsten V. Munk - The Nightwalker, known on IRC as Stskeeps or techie
|
||||
* ICQ: 16465977 - E-Mail: stskeeps@tspre.org
|
||||
* Author of UnrealIRCd (http://unreal.tspre.org)
|
||||
* Technical Admin @ irc.roxnet.org, server admin of irc.fyremoon.net
|
||||
"To understand a program you must become both the machine and the program."
|
||||
----------------------------------------------------------------------
|
||||
|
||||
-----BEGIN GEEK CODE BLOCK-----
|
||||
Version: 3.1
|
||||
GCS/CC d- s: a--- C+++ UL P L++ E-- W++ N+ o-- K- w--- O- M V-- PS+ PE- Y+
|
||||
PGP t+ 5 X R- tv- b+ DI++ D++ G e-- h! r z**
|
||||
------END GEEK CODE BLOCK------
|
||||
|
||||
|
||||
_______________________________________________
|
||||
Unreal-dev mailing list
|
||||
Unreal-dev@lists.sourceforge.net
|
||||
http://lists.sourceforge.net/mailman/listinfo/unreal-dev
|
||||
-148
@@ -1,148 +0,0 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, doc/AUTHORS
|
||||
* Copyright (C) 1990
|
||||
*
|
||||
* AUTHORS FILE:
|
||||
* This file attempts to remember all contributors to the IRC
|
||||
* developement. Names can be only added this file, no name
|
||||
* should never be removed. This file must be included into all
|
||||
* distributions of IRC and derived works.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
IRC was conceived of and written by Jarkko Oikarinen <jto@tolsun.oulu.fi>.
|
||||
IRC was originally written in University of Oulu, Computing Center.
|
||||
Jan 1991 - IRC 2.6 jto@tolsun.oulu.fi
|
||||
- Multiple Channels and protocol changes
|
||||
|
||||
Contributions were made by a cast of dozens, including the following:
|
||||
|
||||
Markku Jarvinen <mta@tut.fi>: Emacs-like editing facility for the client
|
||||
|
||||
Kimmo Suominen <kim@kannel.lut.fi>: HP-UX port
|
||||
|
||||
Jeff Trim <jtrim@orion.cair.du.edu>: enhancements and advice
|
||||
|
||||
Vijay Subramaniam <vijay@lll-winken.llnl.gov>: advice and ruthless publicity
|
||||
|
||||
Karl Kleinpaste <karl@cis.ohio-state.edu>: user's manual
|
||||
|
||||
Greg Lindahl <gl8f@virginia.edu>: AUTOMATON code, the Wumpus GM automaton,
|
||||
myriad bug fixes
|
||||
|
||||
Bill Wisner <wisner@hayes.fai.alaska.edu>: numerous bug fixes and code
|
||||
enhancements
|
||||
|
||||
Tom Davis <conslt16@zeus.unl.edu> and Tim Russell <russell@zeus.unl.edu>:
|
||||
VMS modifications
|
||||
|
||||
Markku Savela <msa@tel4.tel.vtt.fi>: advice, support, and being the
|
||||
incentive to do some of our *own* coding. :)
|
||||
|
||||
Tom Hopkins <hoppie@buengf.bu.edu>: bug fixes, quarantine lines,
|
||||
consolidation of various patches.
|
||||
|
||||
Christopher Davis <ckd@cs.bu.edu>: EFnet/Anet gateway coding,
|
||||
many automata ;), documentation fixing.
|
||||
|
||||
Helen Rose <hrose@cs.bu.edu>: documentation updating, and fixing.
|
||||
|
||||
Tom Hinds <rocker@bucsf.bu.edu>: emacs client updating.
|
||||
|
||||
Tim Miller <cerebus@bu-pub.bu.edu>: various server and client-breaking
|
||||
features.
|
||||
|
||||
Darren Reed <avalon@coombs.anu.edu.au>: various bug fixes and enhancements.
|
||||
Introduced nickname and channelname hash tables into the server.
|
||||
|
||||
The version 2.2 release was coordinated by Mike Bolotski
|
||||
<mikeb@salmon.ee.ubc.ca>.
|
||||
|
||||
The version 2.4 release was coordinated by Markku Savela and
|
||||
Chelsea Ashley Dyerman
|
||||
|
||||
The version 2.5.2 release was coordinated by Christopher Davis, Helen Rose,
|
||||
and Tom Hopkins.
|
||||
|
||||
The versions 2.6.2, 2.7 and 2.8 releases were coordinated by Darren Reed.
|
||||
|
||||
Contributions for the 2.8 release from the following people:
|
||||
Matthew Green <phone@coombs.anu.edu.au>
|
||||
Chuck Kane <ckane@ece.uiuc.edu>
|
||||
Matt Lyle <matt@oc.com>
|
||||
Vesa Ruokonen <ruokonen@lut.fi>
|
||||
|
||||
Markku Savela <Markku.Savela@vtt.fi> / April 1990
|
||||
Fixed various bugs in 2.2PL1 release server (2.2msa.4) and changed
|
||||
sockets to use non-blocking mode (2.2msa.9). [I have absolutely
|
||||
nothing to do with clients :-]
|
||||
|
||||
Chelsea Ashley Dyerman <chelsea@earth.cchem.berkeley.edu> / April 1990
|
||||
Rewrote the Makefiles, restructuring of source tree. Added libIrcd.a to
|
||||
the Makefile macros, numerous reformatting of server text messages, and
|
||||
added mkversion.sh to keep track of compilation statistics. Numerous
|
||||
bug fixes and enhancements, and co-coordinator of the 2.4 release.
|
||||
|
||||
Jarle Lyngaas (nmijl@alf.uib.no) added Note functions to ircd.
|
||||
|
||||
Armin Gruner <gruner@informatik.tu-muenchen.de> / May, June 1990:
|
||||
* Patched KILL-line feature for ircd.conf, works now.
|
||||
Enhancement: Time intervals can be specified in passwd-field.
|
||||
Result: KILL-Line is only active during these intervals
|
||||
* Patched PRIVMSG handling, now OPER can specify masks for sending
|
||||
private messages, advantage: msg to all at a specified server or host.
|
||||
* Little tests on irc 2.5 alpha, fixed some little typos in client code.
|
||||
Change: common/debug.c has been moved to ircd/s_debug.c, and a
|
||||
irc/c_debug.c has been created, for the benefit that wrong server msg
|
||||
are displayed if client does not recognize them. (strange, if a server
|
||||
sends an 'unknown command', isn't it?)
|
||||
|
||||
Tom Hopkins <hoppie@buengf.bu.edu> / September, October 1990:
|
||||
* Patched msa's K lines for servers (Q lines).
|
||||
* Consolidated several patches, including Stealth's logging patch.
|
||||
* Fixed several minor bugs.
|
||||
* Has done lots of other stuff that I can't seem to remember, but he
|
||||
always works on code, so he has to have done alot more than three
|
||||
lines worth. :)
|
||||
|
||||
UnrealIRCd Coders
|
||||
Carsten Munk <stskeeps@unrealircd.com> / May 1999 - December 2008
|
||||
Dominick Meglio <codemastr@unrealircd.com> / June 1999 - August 2005
|
||||
David Flynn / March 2000 - June 2000
|
||||
McSkaf / June 2001 - September 2001
|
||||
Finny Merrill <griever@unrealircd.com> / November 2001 - December 2002
|
||||
Bram Matthys <syzop@unrealircd.com> / January 2002 - date
|
||||
This list is incomplete, type /INFO on IRC to find the updated list.
|
||||
|
||||
Thanks go to those persons not mentioned here who have added their advice,
|
||||
opinions, and code to IRC.
|
||||
|
||||
Various modifications, bugreports, cleanups and testing by:
|
||||
|
||||
Hugo Calendar <hugo@ucscb.ucsc.edu>
|
||||
Bo Adler <adler@csvax.cs.caltech.edu>
|
||||
Michael Sandrof <ms5n+@andrew.cmu.edu>
|
||||
Jon Solomon <jsol@cs.bu.edu>
|
||||
Jan Peterson <jlp@hamblin.math.byu.edu>
|
||||
Nathan Glasser <nathan@brokaw.lcs.mit.edu>
|
||||
Helen Rose <hrose@eff.org>
|
||||
Mike Pelletier <stealth@caen.engin.umich.edu>
|
||||
Basalat Ali Raja <gwydion@tavi.rice.edu>
|
||||
Eric P. Scott <eps@toaster.sfsu.edu>
|
||||
Dan Goodwin <fornax@wpi.wpi.edu>
|
||||
Noah Friedman <friedman@ai.mit.edu>
|
||||
|
||||
[ $Id$ ]
|
||||
@@ -1,31 +0,0 @@
|
||||
|
||||
_ _ _ ___________ _____ _
|
||||
| | | | | |_ _| ___ \/ __ \ | |
|
||||
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
|
||||
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
|
||||
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Configuration Program
|
||||
for UnrealIRCd 5.2.4
|
||||
|
||||
This program will help you to compile your IRC server, and ask you
|
||||
questions regarding the compile-time settings of it during the process.
|
||||
|
||||
A short installation guide is available online at:
|
||||
https://www.unrealircd.org/docs/Installing_from_source
|
||||
|
||||
Full documentation is available at:
|
||||
https://www.unrealircd.org/docs/UnrealIRCd_5_documentation
|
||||
|
||||
--------------------------------------------------------------------------------------
|
||||
|
||||
The full release notes are available in doc/RELEASE-NOTES.md
|
||||
For easier viewing, check out the latest online release notes at:
|
||||
https://github.com/unrealircd/unrealircd/blob/unreal52/doc/RELEASE-NOTES.md
|
||||
|
||||
UnrealIRCd 5 is compatible with the following services:
|
||||
* anope with the "unreal4" protocol module - version 2.0.7 or higher required!
|
||||
* atheme with the "unreal4" protocol module - tested with version 7.2.9
|
||||
|
||||
--------------------------------------------------------------------------------------
|
||||
@@ -1,14 +0,0 @@
|
||||
Although UnrealIRCd is a free program, we do put a great deal of time,
|
||||
effort, and money into keeping UnrealIRCd alive. If you like UnrealIRCd and
|
||||
want to support us then please consider making a donation.
|
||||
|
||||
PayPal Donation Link: https://unrealircd.org/index/donations
|
||||
|
||||
If you don't want to use PayPal, or you want to donate something other than
|
||||
money, then please contact Syzop (syzop@unrealircd.com).
|
||||
|
||||
All those who donate at least a certain minimum amount will have their name
|
||||
and/or company listed in /CREDITS and will be listed on the website.
|
||||
|
||||
Thank you for your support,
|
||||
The UnrealIRCd Team
|
||||
@@ -0,0 +1,129 @@
|
||||
[ $Id$ ]
|
||||
Take this with a grain of salt.. it's heaps old and this isn't Elite anymore
|
||||
|
||||
|
||||
---------------------------
|
||||
Version Elite2.0 ==========
|
||||
===========================
|
||||
- Since +x was rewritten, the ban bug is 100% fixed. :)
|
||||
- Rewrote +x hidden host function completely.
|
||||
- Fixed FUNNY bug with hiddenhost and /who (Reported by Prod|gy)
|
||||
- Added/Removed irc networks
|
||||
- Fixed bug in /watch (Reported/Fixed by Despise)
|
||||
- Added nick-change flood protection.
|
||||
- Added an awesome manual... ./manual to run
|
||||
- Removed /who notice for opers.
|
||||
- Added protection of /akill *@* :)
|
||||
- Removed java stuff completely. (Java clients are like normal IRC clients...right?)
|
||||
- Added new +a mode. This mode can only be set by +q channel owners. When you are +a in a
|
||||
channel, you cannot be deopped or kicked. (Syntax: /mode #chan +a <nick>)
|
||||
- Added new +q channel mode. ChanServ must set the channel founder +q so they are also
|
||||
known as channel owners via the ircd. Channel owners are protected and may set
|
||||
other users +a which they will also be protected (but not chan owners).
|
||||
(Syntax: /mode #chan +q <nick>)
|
||||
- Re-coded /MAP
|
||||
- Changed GLINE notices from sendto_ops to send to all opers with +e flag on.
|
||||
- Added (addnet) script, you can run this to add your net settings to the next release.
|
||||
- Changed <server> to <ircnetwork> in whois "Blah is an oper on <server>"
|
||||
- Added new +L channel mode. If a #chat has a limit (+l) of 10 users, and +L set to channel
|
||||
#chat2, when a user trys to join #chat, they won't get "#chat is full", they will be
|
||||
auto-joined to #chat2 - (Linked channels in other words).
|
||||
(Syntax: /mode #chan +L <linked chan>)
|
||||
- Changes user@shadow-33.com to user@user-33.one.com (noone will know one.com is the realhost)
|
||||
- Changed +x for IP's from (x.x.x.***) to (x.x.x.network-#)
|
||||
- In oline flags * will introduce +e on oper up. (before: required +e in oline flag)
|
||||
- Removed +t usermode (UMODE_ALL) - wasn't used.
|
||||
- Made 'create your own network setting' feature more stable.
|
||||
- Added new channel mode (+x) to disable colored text in channel.
|
||||
- Added +C (Co Administrator)
|
||||
- Added +T (Technical Administrator)
|
||||
- Changed /map to numerics...
|
||||
- Made startup message when booting more stable.
|
||||
|
||||
Version Elite1.3 (02/23/99)
|
||||
============================
|
||||
- Cleaned up version.c.SH
|
||||
- Added new net settings (netdomain & helpchan)
|
||||
- Added new net config creator in ./Config
|
||||
- Made ./Config more easier...
|
||||
- Created new usermode +j (Java user)
|
||||
- New hostname (java.shadownet.org) for java users.
|
||||
- Removed RUN_SERVICES code from entire ircd.
|
||||
|
||||
Version Elite1.2.4 (02/14/99)
|
||||
============================
|
||||
- Fixed the nick crash bug! (damn m_kill small error)
|
||||
- New network(s) added.
|
||||
- Changed one thing in m_gline (nothing big)
|
||||
|
||||
Version Elite1.2.3 (02/10/99)
|
||||
============================
|
||||
- Removed SOCKS checking. (possibly cause of crashing)
|
||||
- Added new networks
|
||||
|
||||
Version Elite1.2.2 (02/02/99)
|
||||
============================
|
||||
- Fixed the crashing bug. (Changing nicks with linked servers)
|
||||
- Modified AceStar net settings.
|
||||
- Q-line notices are back (except for ULined clients).
|
||||
- Fixed /kill bug with services.
|
||||
|
||||
Version Elite1.2.1 (01/29/99)
|
||||
============================
|
||||
- Fixed multiple notices from +N / -N
|
||||
- Added some text to s_err.c
|
||||
- Possibly fixed the odd crashing... ?
|
||||
|
||||
Version Elite1.2 (01/24/99)
|
||||
============================
|
||||
- Netadmin can be used via +N in the oline slot now.
|
||||
- When +N is executed, net-wide oper msg's are sent about it.
|
||||
- Completely removed the freeze function (it's a toy unlike a command)
|
||||
- Changed abit of the GLINE adding notice.
|
||||
- Added logging to a file for glines (gline.log)
|
||||
- Implemented SOCKS checking (thx Rhom).
|
||||
- Changed channel lists only when 2 ppl in chan to 1.
|
||||
- Changed sendto_ops function in many places in s_user.c/s_serv.c to
|
||||
sendto_locfailops.
|
||||
- Changed GNOTICE in s_user.c/s_serv.c to GLOBOPS
|
||||
- Fixed hiddenhost bug with /kill (+w could see real host of oper)
|
||||
- Fixed hiddenhost bug with /oper (+s could see real host of oper)
|
||||
|
||||
[Special thanks goes out to Rhom for reporting/help patch bugs]
|
||||
|
||||
Version Elite1.1.1 (12/12/98)
|
||||
=============================
|
||||
- Fixed /whois bug (had problems with mIRC clients *sigh*)
|
||||
- Fixed /topic bug (didn't allow topic changes at all.)
|
||||
|
||||
Version Elite1.1 (12/6/98)
|
||||
============================
|
||||
- Fixed ./Config script (Net select)
|
||||
- Fixed /remgline bug.
|
||||
- If ULined clients, channels are not shown which they are in.
|
||||
- Fixed +e / +t / +b (non-opers could get +et before)
|
||||
- Fixed OperMode notice.
|
||||
- Fixed Gline sending extra Global on expire.
|
||||
- Fixed /whowas wrong hostname bug (by Thiago)
|
||||
- Fixed chkconf ZLINE error (by matt)
|
||||
- Added PhazeNet configuration
|
||||
- Added option for auto +x in ./Config
|
||||
- Freeze was disabled in this version (It will be back in 1.2)
|
||||
|
||||
Version Elite1.0 (09/20/98)
|
||||
============================
|
||||
- Changed Shadow3.9 to Elite1.0 (Starting a new IRCD)
|
||||
- Changed some numeric's around in src/s_err.c
|
||||
- Auto +x on Oper up.
|
||||
- Fixed small error in ./ircd script.
|
||||
- Made ./Config more Linux-redhat friendly.
|
||||
- Added RelicNet to the ircd.
|
||||
- include/config.h is much more compatible with all IRC nets.
|
||||
- Added /gline (works 100%) [/gline <user@host> <seconds> <reason>].
|
||||
- Fixed up /map.
|
||||
- Added UMODE's +e & +t
|
||||
* e: EYES [Can see ppl who /whois, and other notices.]
|
||||
* t: ALL [See's all net notices ie: See's all Client connectings...]
|
||||
- Fixed the hiddenhost bug with IP's...
|
||||
- Fixed major bug with hiddenhost which caused coredump.
|
||||
- Made a new script (makeconf) -- generates the ircd.conf file.
|
||||
@@ -1,47 +0,0 @@
|
||||
pub rsa4096 2015-07-02 [SC] [expires: 2025-06-29]
|
||||
1D2D2B03A0B68ED11D68A24BA7A21B0A108FF4A9
|
||||
uid UnrealIRCd releases (for verification of software downloads only!) <releases@unrealircd.org>
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBFWVOFYBEACsWFWM25VDaGXq22GSTJo1O53bgAMCZsqj9VKDriUmj7uvozlp
|
||||
BGHgYFVM4ZT1FUAsWedeIP2aLLkYGmH4odVaAk7IeUa7HfpE45/F6+End6bCpYGe
|
||||
1UdVQM/Bu3VHoUtVvtIFg788JwbplroapA/D0pi/EAN8WYnN9etgLM2lvzwbjBz9
|
||||
xTOefwvgRsKbCH63VW7NCyquEcdEJxnMHB7JZUEuzrOUvhAiIkwKw8wbcn36zX0i
|
||||
wcAFtVO5uVTA/Tdu6nWsZvqVc6R1E3usJzWSwbmoUtPUM5Mk9I9gL73EsqEbgs5N
|
||||
trT00r75RcfiThNEP8NtDtB8AFum6OCSg/+8bdJmKcWVKpuB+lUvP0d4UAqm5vmH
|
||||
/KQh/nyHXKvAvhWqHizozP1WGevpxLFHMjm/+1T167Iil/3UcUyn9qd0CuYSszJw
|
||||
y5Vp6iJHkVo8qxI89rkzSDRi+ppLCBTwuN01ducftDxvIQMVrphdKZLPGzQrltkh
|
||||
lIN4XNS6cOOsrbbk5+Kc2xih6qt+DyiRHaNFQnoMdRVeIrmf4u4ClMcHlzELV8gF
|
||||
D+s0BbVqhVwAhbKMfKaVmvVlj8bSET0z2s0vhZODwlgANpDBLNsIU6leiYRAzub5
|
||||
WY5Hz1m7P8ZXSMPh4/vGh1kg3E9IRKLZDZ65gEYr8nNCzbAYmDQ3IkplIwARAQAB
|
||||
tFxVbnJlYWxJUkNkIHJlbGVhc2VzIChmb3IgdmVyaWZpY2F0aW9uIG9mIHNvZnR3
|
||||
YXJlIGRvd25sb2FkcyBvbmx5ISkgPHJlbGVhc2VzQHVucmVhbGlyY2Qub3JnPokC
|
||||
PgQTAQIAKAUCVZU4VgIbAwUJEswDAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AA
|
||||
CgkQp6IbChCP9KlFzQ/+ObuBgCtXvLcbpq7C2usHxgtEB1rV9khLGugJXevjMaf3
|
||||
+vo4d5cd5go665po8oqDnSUfq+8LPDj/nnroKQcS5Kb4KdHz6rn+53rHWtw6PPGN
|
||||
KswFS05Vy2AkYg4nVXvrGm0oV173qOms2REoStP0mEm7F7ZTJ6k1qgmZ8tcFgfMm
|
||||
fqEl94O5zDWycaJx7K0h3n+xUyhh+lT9Zl3duzVzCc+YI+dD6UOIXBF9TF9fIb8m
|
||||
300MBLwTTHq64nGsZbhfzCHNHAO6hTy5XmE+d1g4R87rKim6lP0V1LTbvhOhYhZg
|
||||
0JrVOr9dhHY4tw1xglz++nMM24t2O9zoRoZjDMHBzzBm3gJq3G160kxVZKKcVaQd
|
||||
nfYvPOBNtyEyaIIJD8vs2Z9jiJLjpoz0LhnE2TmE4M6YqBsSWfFuPrHE+PJQyEQg
|
||||
2zEoTRCSFSLaq+5kl3vKM/cblwkQeKkNe8u6bDNk7bEPUCQstyOqcvoTWE2gs3f2
|
||||
n7wI7BzW3uX5YUp1CcdPig1XxveI4XaKKrhRacvGvvNHdXw1scj1K0SCXvy4EPpf
|
||||
dLthTC6BHwO2P56wlxK0MRL/GD72ttBCcsyLWYdL9OIT6Lx4bZVhvEjKDapWAL04
|
||||
X1mXMHUK1iO4lunbqP3lu6F8qsuI/B2sIiJK7aSjv4bjVRw/jcESrhmCvnN3B3mI
|
||||
RgQQEQIABgUCVZU9NQAKCRBpsoj7n/A5N4E2AJ4i5z98+mA8Ug9utdslGvHFRq+s
|
||||
PgCeILJ7/dJFYZFz1YpaNTbRCHIesaWIXgQQEQgABgUCVZU9ZwAKCRBuZ21Ff+GZ
|
||||
pueXAP9bJ1hPWa3ITIoapW9eTT1eNv+17KqcclwZzxCopbUkFAD+NptTuXpeivM+
|
||||
USWsQJFpFlLdDckcv8QzLQwgzZ8TXtKJAhwEEAEIAAYFAlg796cACgkQ3pO4tH50
|
||||
XrMyWQ/+NJyhO5yibAhN4RgCJ+qFdp9Llm+SQGFjVtw8L7nv3M0Us8xspmVlX7TZ
|
||||
/OK6AhUyaqAmg3ZXruaetrBVIAlP675cXJ1NIPfyT+PvMUbupvqBhyPZKqdnh2WT
|
||||
ZMYdQrvw503h+BlyjGeAWd34tLhtiM1A69tntFu2A7bKhkoxE7KoyCjKmLgUb30M
|
||||
r5guxb6DCUXK8m5ooHl58kLtJrTpW9l3YYXpKe/POYPIK6ULZN7TChtFOTJ+ebx1
|
||||
2LaQGGdRKaCSM1OX7mfvBG8GtljQcGoP+f5TmvRbCGGfiR9r6MdgG6LYTuYf7pR7
|
||||
NBwxveqwJV4iOmd9b+doIra5tRX0TqEKdEqpVHhm4UTZlHVyIpg97Lc/7WiWS1Z5
|
||||
UIhT4YxlztPUvWmCXlleNEqBYK86OsVFqryHDVKtPbH65k/xKfu8w/hHkv7TQ23r
|
||||
eoMs1uBlaUWe3orgUOr0tnFLXz809SAwC9sxQq9TWTm50NqiaQvBVInSUssFYPkG
|
||||
qBljIXtdUzFGBn3sTpFRY6p2yzIo54EQmQAvMQPEJkQ8JQJ47au82DxFUBZYKci5
|
||||
lsJfRueGnn5A36eUZdkhZ6Dm61M3YldYcpRa4Xfi0AWbg5yW/uUipc36Ey+vwWyl
|
||||
x+1IZgjnIIMsyDLuq2tm5p1tiJK2N9L0rxQb/DIK7j8+ZvmlFZQ=
|
||||
=foLZ
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,123 +0,0 @@
|
||||
Rules about patches & modifications to UnrealIRCd
|
||||
|
||||
1. When making a change, always add a small description in the commit log.
|
||||
Don't forget to mention the bug# and credit the reporter (if any).
|
||||
|
||||
2. If new files are made, they must contain proper copyright headers.
|
||||
|
||||
3. Each bug or feature should have a bug# so people can have a discussion
|
||||
about it. This has a few implications (read!!):
|
||||
* People must report bugs/feature requests to bugs.unrealircd.org and
|
||||
not on IRC, e-mail, etc.
|
||||
* That means other people can see the bug# and comment on it. This means
|
||||
discussion is easy to read back for each issue and not spread between
|
||||
several IRC logs.
|
||||
Furthermore, by using the bugtracker instead of directly committing,
|
||||
people could point out that there might be a better way to do things
|
||||
than you originally thought, or it might be that other devs don't like
|
||||
it at all.
|
||||
* If a head coder has 'acknowledged' or 'confirmed' the issue or stated
|
||||
in a comment that it's OK to implement, then any dev may take the issue.
|
||||
The dev should change the status to 'assigned' and work on it, then
|
||||
commit and change it to 'resolved', set 'fixed in version' to the
|
||||
correct release, and add a comment pasting the relevant commit log.
|
||||
Of course other guidelines, in particular rule #7, still applies.
|
||||
|
||||
4. If you don't have direct write access to the repository then you can
|
||||
submit changes as as PR on github. It is very much preferred to also
|
||||
have a bugs.unrealircd.org entry for it as well (see previous item).
|
||||
|
||||
5. For the stable branch, in general, only commit changes that have an
|
||||
associated bugid# and/or were discussed.
|
||||
For branches currently in development (alpha/beta) there's more freedom
|
||||
and if you think the change will be small and is fine without a
|
||||
discussion then feel free to commit.
|
||||
|
||||
6. Regarding reidenting, restructuring or other major code cleanups: please
|
||||
discuss before doing so. The other devs might not agree with you on the
|
||||
particular cleanup you have in mind which would result in another
|
||||
clean-up-the-cleanup commit.
|
||||
You may, however reindent and clean up individual sections when you are
|
||||
working on fixing a particular bug# or implementing a new feature. In fact
|
||||
you're encouraged to do so if the code is confusing without it. However,
|
||||
obey the style of Unreal's code (mostly outlined in this document)
|
||||
and do not introduce yet another (new) style. Also, be careful with doing
|
||||
any cleanup: if you're unsure in any way about the use of something,
|
||||
or something that looks redundant on first sight, then look more
|
||||
carefully... it might indeed be useless and/or redundant, but it might
|
||||
also be a subtle thing that can create great bugs when 'cleaned up'.
|
||||
|
||||
7. During the Release Candidate stage (from RC1 until the final release)
|
||||
only the head coder may commit directly, all others should ask and
|
||||
present their patch before committing. Yes, even if you are changing
|
||||
only 1 line of code or text.
|
||||
|
||||
9. UnrealIRCd should compile on all supported operating systems and
|
||||
platforms, using GCC 3 or higher on *NIX, and Visual Studio 2008 or
|
||||
higher on Windows. This means you cannot blindly use all C99 extensions.
|
||||
|
||||
10. Coders must test their code before committing.
|
||||
|
||||
11. /*
|
||||
* These kind of comments
|
||||
*/
|
||||
|
||||
NOT
|
||||
|
||||
// These kind of comments
|
||||
|
||||
12. if (something == 1)
|
||||
{
|
||||
moo; /* comment */
|
||||
/* This does what what what */
|
||||
cow(go(moo));
|
||||
}
|
||||
|
||||
NOT
|
||||
|
||||
if (something == 1) {
|
||||
}
|
||||
|
||||
13. Do not touch version.c.SH or version.h, unless you are a head coder.
|
||||
If you need a credit in, contact us
|
||||
|
||||
14. Protocol changes must be discussed before making patches for it.
|
||||
|
||||
15. We do NOT rip people off. If we use other people's code, it MUST be
|
||||
properly credited.
|
||||
|
||||
16. We use tabsize 8 and we use tabs AND NOT SPACES.
|
||||
Some code is old and horrible and has a mix of tabs and spaces used for
|
||||
spacing, that's something we do not want to have ;)
|
||||
|
||||
17. Be careful about overflows. Do not do any unchecked string copies.
|
||||
Instead of strcpy, strcat and sprintf/ircsprintf, use the following
|
||||
functions: strlcpy, strlcat, snprintf/ircnsprintf.
|
||||
If you are copying/writing character-by-character or word-by-word in a
|
||||
loop, eg using *p++ = x; then be very sure about your size counting.
|
||||
Often it's better to avoid such code altogether, by simply using
|
||||
strlcat for everything.
|
||||
|
||||
18. Speed. When optimizing or writing code, keep in mind that readability and
|
||||
stability comes FIRST, and after that comes speed. So we'd rather prefer some
|
||||
readable code (even if difficult) over some odd highly optimized routine which
|
||||
nobody understands, is difficult to extend, and might have several bugs.
|
||||
As mentioned earlier: use ircsnprintf, not snprintf (this is because
|
||||
ircsnprintf is optimized for simple strings like the ones we use).
|
||||
ircsnprintf calls snprintf when it finds a (non-simple) format specifier it
|
||||
can't handle. Simple format specifiers do not have prefixes other than
|
||||
h and l.
|
||||
|
||||
19. Initialize your structs and use the proper memory calls.
|
||||
In UnrealIRCd we use safe_alloc, safe_free, safe_strdup and safe_strldup.
|
||||
Do NOT use malloc, calloc or strdup.
|
||||
|
||||
20. Comment your code! This should speak for itself...
|
||||
Put comments wherever you think they are needed, to aid any further coders
|
||||
with reading your code.. and, in fact, it will aid yourself as well if you
|
||||
would look back at your code 2 years later.
|
||||
If there's some obscure pitfall, DO mention it! Don't just "hope" a next
|
||||
author will see it like you did.
|
||||
|
||||
21. Use enums whenever possible, rather than #define constants. Besides making
|
||||
things more clean, it also aids debugging.
|
||||
@@ -1,2 +0,0 @@
|
||||
For information on how to compile UnrealIRCd (modules) on Windows, see:
|
||||
https://www.unrealircd.org/docs/Compiling_UnrealIRCd_on_Windows
|
||||
@@ -1,43 +0,0 @@
|
||||
/* Standard Aliases */
|
||||
|
||||
alias identify {
|
||||
format "^#" {
|
||||
target chanserv;
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
}
|
||||
format "^[^#]" {
|
||||
target nickserv;
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
}
|
||||
type command;
|
||||
}
|
||||
|
||||
alias services {
|
||||
format "^#" {
|
||||
target chanserv;
|
||||
type services;
|
||||
parameters "%1-";
|
||||
}
|
||||
format "^[^#]" {
|
||||
target nickserv;
|
||||
type services;
|
||||
parameters "%1-";
|
||||
}
|
||||
type command;
|
||||
}
|
||||
|
||||
alias register {
|
||||
format "^#" {
|
||||
target chanserv;
|
||||
type services;
|
||||
parameters "REGISTER %1-";
|
||||
}
|
||||
format "^[^#]" {
|
||||
target nickserv;
|
||||
type services;
|
||||
parameters "REGISTER %1-";
|
||||
}
|
||||
type command;
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
/* Anope Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias botserv { type services; }
|
||||
alias bs { target botserv; type services; }
|
||||
alias hostserv { type services; }
|
||||
alias hs { target hostserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
/* Atheme Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias helpserv { type services; }
|
||||
alias botserv { type services; }
|
||||
alias bs { target botserv; type services; }
|
||||
alias hostserv { type services; }
|
||||
alias hs { target hostserv; type services; }
|
||||
alias saslserv { type services; }
|
||||
alias sss { target saslserv; type services; }
|
||||
alias gameserv { type services; }
|
||||
alias gms { target gameserv; type services; }
|
||||
alias groupserv { type services; }
|
||||
alias grs { target groupserv; type services; }
|
||||
alias alis { type services; }
|
||||
alias ls { target alis; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/* Auspice Aliases */
|
||||
|
||||
/* Uncomment this, if you have enabled "MassServ, W and X" in auspice */
|
||||
# alias massserv { type services; }
|
||||
# alias ma { target massserv; type services; }
|
||||
# alias W { type services; }
|
||||
# alias X { type services; }
|
||||
|
||||
/* Uncomment this, if you have enabled "WebServ" in auspice */
|
||||
# alias webserv { type services; }
|
||||
# alias ws { target webserv; type services; }
|
||||
|
||||
alias agent { type services; }
|
||||
alias adminserv { type services; }
|
||||
alias as { target adminserv; type services; }
|
||||
alias botserv { type services; }
|
||||
alias bs { target botserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias helpserv { type services; }
|
||||
alias hs { target helpserv; type services; }
|
||||
alias hostserv { type services; }
|
||||
alias ho { target hostserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias rootserv { type services; }
|
||||
alias rs { target rootserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -1,12 +0,0 @@
|
||||
/* Cygnus Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias rootserv { type services; }
|
||||
alias rs { target rootserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -1,16 +0,0 @@
|
||||
/* Epona Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias helpserv { type services; }
|
||||
alias hs { target helpserv; type services; }
|
||||
alias botserv { type services; }
|
||||
alias bs { target botserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -1,14 +0,0 @@
|
||||
/* Generic Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias helpserv { type services; }
|
||||
alias hs { target helpserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -1,4 +0,0 @@
|
||||
/* Generic StatServ Aliases */
|
||||
|
||||
alias statserv { type stats; }
|
||||
alias ss { target statserv; type stats; }
|
||||
@@ -1,17 +0,0 @@
|
||||
/* IRCServices Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias helpserv { type services; }
|
||||
alias hs { target helpserv; type services; }
|
||||
alias irciihelp { type services; }
|
||||
alias statserv { type services; }
|
||||
alias ss { target statserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -1,6 +0,0 @@
|
||||
/* OperStats Aliases */
|
||||
|
||||
alias operserv { type stats; }
|
||||
alias os { target operserv; type stats; }
|
||||
alias statserv { type stats; }
|
||||
alias ss { target statserv; type stats; }
|
||||
@@ -1,51 +0,0 @@
|
||||
/*
|
||||
Unreal Internet Relay Chat Daemon
|
||||
Copyright (C) Carsten V. Munk 2000
|
||||
|
||||
NOTE: Those words are not meant to insult you (the user)
|
||||
but is meant to be a list of words so that the +G channel/user mode
|
||||
will work properly. You can easily modify this file at your will.
|
||||
If you got words to add to this file, please mail badwords@tspre.org
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
This is some filling space, scroll down to see the words
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
badword all { word "pussy"; }
|
||||
badword all { word "fuck"; }
|
||||
badword all { word "whore"; }
|
||||
badword all { word "slut"; }
|
||||
badword all { word "shit"; }
|
||||
badword all { word "asshole"; }
|
||||
badword all { word "bitch"; }
|
||||
badword all { word "cunt"; }
|
||||
badword all { word "vagina"; }
|
||||
badword all { word "penis"; }
|
||||
badword all { word "jackass"; }
|
||||
badword all { word "*fucker*"; }
|
||||
badword all { word "faggot"; }
|
||||
badword all { word "fag"; }
|
||||
badword all { word "horny"; }
|
||||
badword all { word "dickhead"; }
|
||||
badword all { word "sonuvabitch"; }
|
||||
badword all { word "*fuck*"; }
|
||||
badword all { word "tits"; }
|
||||
@@ -1,42 +0,0 @@
|
||||
/* Example of a possible semi-secure /DCCALLOW configuration written by Syzop.
|
||||
* $Id$
|
||||
*
|
||||
* Actually nothing is *100% secure*... there could still be
|
||||
* bugs in the software itself (think: a winamp bug that can
|
||||
* be exploited via an mp3, or: a wmplayer bug that can be
|
||||
* exploited via a specially crafted .wmv, etc..).
|
||||
* If you are really that paranoid you could just remove
|
||||
* all 'allow dcc'-blocks and prompt the user for EVERY file ;).
|
||||
*
|
||||
* Still, I think this file is a good tradeoff between userfriendlyness
|
||||
* and security. Note that when you try to only DENY specific
|
||||
* file type (exe, com, etc) you are *guaranteed* to miss ones
|
||||
* (like: did you know .r17 gets treated as a rar archive?
|
||||
* and that an exe can be disguished as .cmd which is executable
|
||||
* on nt/w2k/xp?)
|
||||
*/
|
||||
|
||||
/* first.. deny everything, then allow known-good stuff... */
|
||||
deny dcc { filename "*"; reason "Possible executable content"; soft yes; }
|
||||
/* common image formats */
|
||||
allow dcc { filename "*.jpg"; soft yes; }
|
||||
allow dcc { filename "*.jpeg"; soft yes; }
|
||||
allow dcc { filename "*.gif"; soft yes; }
|
||||
allow dcc { filename "*.png"; soft yes; }
|
||||
allow dcc { filename "*.bmp"; soft yes; }
|
||||
/* audio / video (but not scripted/playlists!) */
|
||||
allow dcc { filename "*.mp1"; soft yes; }
|
||||
allow dcc { filename "*.mp2"; soft yes; }
|
||||
allow dcc { filename "*.mp3"; soft yes; }
|
||||
allow dcc { filename "*.mpg"; soft yes; }
|
||||
allow dcc { filename "*.mpeg"; soft yes; }
|
||||
allow dcc { filename "*.m1v"; soft yes; }
|
||||
allow dcc { filename "*.m2v"; soft yes; }
|
||||
allow dcc { filename "*.vob"; soft yes; }
|
||||
allow dcc { filename "*.wav"; soft yes; }
|
||||
/* text / misc */
|
||||
allow dcc { filename "*.txt"; soft yes; }
|
||||
allow dcc { filename "*.log"; soft yes; }
|
||||
allow dcc { filename "*.pdf"; soft yes; }
|
||||
allow dcc { filename "*.c"; soft yes; }
|
||||
allow dcc { filename "*.cpp"; soft yes; }
|
||||
@@ -1,592 +0,0 @@
|
||||
/* Configuration file for UnrealIRCd 5
|
||||
*
|
||||
* Simply copy this file to your conf/ directory, call it
|
||||
* 'unrealircd.conf' and walk through it line by line (edit it!)
|
||||
*
|
||||
* Important: All lines, except { and } end with an ;
|
||||
* This is very important, if you miss a ; somewhere then the
|
||||
* configuration file parser will complain and the file will not
|
||||
* be processed correctly!
|
||||
* If this is your first experience with an UnrealIRCd configuration
|
||||
* file then we really recommend you to read a little about the syntax,
|
||||
* this only takes a few minutes and will help you a lot:
|
||||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||||
*
|
||||
* UnrealIRCd 5 documentation (very extensive!):
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_5_documentation
|
||||
*
|
||||
* Frequently Asked Questions:
|
||||
* https://www.unrealircd.org/docs/FAQ
|
||||
*
|
||||
*/
|
||||
|
||||
/* This is a comment, all text here is ignored (comment type #1) */
|
||||
// This is also a comment, this line is ignored (comment type #2)
|
||||
# This is also a comment, again this line is ignored (comment type #3)
|
||||
|
||||
/* UnrealIRCd makes heavy use of modules. Modules allow you to completely
|
||||
* customize the featureset you wish to enable in UnrealIRCd.
|
||||
* See: https://www.unrealircd.org/docs/Modules
|
||||
*
|
||||
* By using the include below we instruct the IRCd to read the file
|
||||
* 'modules.default.conf' which will load more than 150 modules
|
||||
* shipped with UnrealIRCd. In other words: this will simply load
|
||||
* all the available features in UnrealIRCd.
|
||||
* If you are setting up UnrealIRCd for the first time we suggest you
|
||||
* use this. Then, when everything is up and running you can come
|
||||
* back later to customize the list (if you wish).
|
||||
*/
|
||||
include "modules.default.conf";
|
||||
|
||||
/* Now let's include some other files as well:
|
||||
* - help/help.conf for our on-IRC /HELPOP system
|
||||
* - badwords.conf for channel and user mode +G
|
||||
* - spamfilter.conf as an example for spamfilter usage
|
||||
* (commented out)
|
||||
* - operclass.default.conf contains some good operclasses which
|
||||
* you can use in your oper blocks.
|
||||
*/
|
||||
include "help/help.conf";
|
||||
include "badwords.conf";
|
||||
//include "spamfilter.conf";
|
||||
include "operclass.default.conf";
|
||||
|
||||
/* This is the me { } block which basically says who we are.
|
||||
* It defines our server name, some information line and an unique "sid".
|
||||
* The server id (sid) must start with a digit followed by two digits or
|
||||
* letters. The sid must be unique for your IRC network (each server should
|
||||
* have it's own sid).
|
||||
*/
|
||||
me {
|
||||
name "irc.example.org";
|
||||
info "ExampleNET Server";
|
||||
sid "001";
|
||||
}
|
||||
|
||||
/* The admin { } block defines what users will see if they type /ADMIN.
|
||||
* It normally contains information on how to contact the administrator.
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"email@example.org";
|
||||
}
|
||||
|
||||
/* Clients and servers are put in class { } blocks, we define them here.
|
||||
* Class blocks consist of the following items:
|
||||
* - pingfreq: how often to ping a user / server (in seconds)
|
||||
* - connfreq: how often we try to connect to this server (in seconds)
|
||||
* - sendq: the maximum queue size for a connection
|
||||
* - recvq: maximum receive queue from a connection (flood control)
|
||||
*/
|
||||
|
||||
/* Client class with good defaults */
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 1000;
|
||||
sendq 200k;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Special class for IRCOps with higher limits */
|
||||
class opers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 50;
|
||||
sendq 1M;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Server class with good defaults */
|
||||
class servers
|
||||
{
|
||||
pingfreq 60;
|
||||
connfreq 15; /* try to connect every 15 seconds */
|
||||
maxclients 10; /* max servers */
|
||||
sendq 20M;
|
||||
}
|
||||
|
||||
/* Allow blocks define which clients may connect to this server.
|
||||
* This allows you to add a server password or restrict the server to
|
||||
* specific IP's only. You also configure the maximum connections
|
||||
* allowed per IP here.
|
||||
* See also: https://www.unrealircd.org/docs/Allow_block
|
||||
*/
|
||||
|
||||
/* Allow everyone in, but only 3 connections per IP */
|
||||
allow {
|
||||
mask *;
|
||||
class clients;
|
||||
maxperip 3;
|
||||
}
|
||||
|
||||
/* Example of a special allow block on a specific IP:
|
||||
* Requires users on that IP to connect with a password. If the password
|
||||
* is correct then it permits 20 connections on that IP.
|
||||
*/
|
||||
allow {
|
||||
mask 192.0.2.1;
|
||||
class clients;
|
||||
password "somesecretpasswd";
|
||||
maxperip 20;
|
||||
}
|
||||
|
||||
/* Oper blocks define your IRC Operators.
|
||||
* IRC Operators are people who have "extra rights" compared to others,
|
||||
* for example they may /KILL other people, initiate server linking,
|
||||
* /JOIN channels even though they are banned, etc.
|
||||
*
|
||||
* For more information about becoming an IRCOp and how to do admin
|
||||
* tasks, see: https://www.unrealircd.org/docs/IRCOp_guide
|
||||
*
|
||||
* For details regarding the oper { } block itself, see
|
||||
* https://www.unrealircd.org/docs/Oper_block
|
||||
*/
|
||||
|
||||
/* Here is an example oper block for 'bobsmith' with password 'test'.
|
||||
* You MUST change this!!
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
password "test";
|
||||
/* Oper permissions are defined in an 'operclass' block.
|
||||
* See https://www.unrealircd.org/docs/Operclass_block
|
||||
* UnrealIRCd ships with a number of default blocks, see
|
||||
* the article for a full list. We choose 'netadmin' here.
|
||||
*/
|
||||
operclass netadmin;
|
||||
swhois "is a Network Administrator";
|
||||
vhost netadmin.example.org;
|
||||
}
|
||||
|
||||
/* Listen blocks define the ports where the server should listen on.
|
||||
* In other words: the ports that clients and servers may use to
|
||||
* connect to this server.
|
||||
*
|
||||
* Syntax:
|
||||
* listen {
|
||||
* {
|
||||
* ip <ip>;
|
||||
* port <port>;
|
||||
* options {
|
||||
* <options....>;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
/* Standard IRC port 6667 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6667;
|
||||
}
|
||||
|
||||
/* Standard IRC SSL/TLS port 6697 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6697;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Special SSL/TLS servers-only port for linking */
|
||||
listen {
|
||||
ip *;
|
||||
port 6900;
|
||||
options { tls; serversonly; }
|
||||
}
|
||||
|
||||
/* NOTE: If you are on an IRCd shell with multiple IP's and you use
|
||||
* the above listen { } blocks then you will likely get an
|
||||
* 'Address already in use' error and the ircd won't start.
|
||||
* This means you MUST bind to a specific IP instead of '*' like:
|
||||
* listen { ip 1.2.3.4; port 6667; }
|
||||
* Of course, replace the IP with the IP that was assigned to you.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Link blocks allow you to link multiple servers together to form a network.
|
||||
* See https://www.unrealircd.org/docs/Tutorial:_Linking_servers
|
||||
*/
|
||||
link hub.example.org
|
||||
{
|
||||
incoming {
|
||||
mask *@something;
|
||||
}
|
||||
|
||||
outgoing {
|
||||
bind-ip *; /* or explicitly an IP */
|
||||
hostname hub.example.org;
|
||||
port 6900;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* We use the SPKI fingerprint of the other server for authentication.
|
||||
* Run './unrealircd spkifp' on the other side to get it.
|
||||
*/
|
||||
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* The link block for services is usually much simpler.
|
||||
* For more information about what Services are,
|
||||
* see https://www.unrealircd.org/docs/Services
|
||||
*/
|
||||
link services.example.org
|
||||
{
|
||||
incoming {
|
||||
mask 127.0.0.1;
|
||||
}
|
||||
|
||||
password "changemeplease";
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* U-lines give other servers (even) more power/commands.
|
||||
* If you use services you must add them here.
|
||||
* NEVER put the name of an UnrealIRCd server here!!!
|
||||
*/
|
||||
ulines {
|
||||
services.example.org;
|
||||
}
|
||||
|
||||
/* Here you can add a password for the IRCOp-only /DIE and /RESTART commands.
|
||||
* This is mainly meant to provide a little protection against accidental
|
||||
* restarts and server kills.
|
||||
*/
|
||||
drpass {
|
||||
restart "restart";
|
||||
die "die";
|
||||
}
|
||||
|
||||
/* The log block defines what should be logged and to what file.
|
||||
* See also https://www.unrealircd.org/docs/Log_block
|
||||
*/
|
||||
|
||||
/* This is a good default, it logs everything */
|
||||
log "ircd.log" {
|
||||
flags {
|
||||
oper;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
flood;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
tkl;
|
||||
spamfilter;
|
||||
}
|
||||
}
|
||||
|
||||
/* With "aliases" you can create an alias like /SOMETHING to send a message to
|
||||
* some user or bot. They are usually used for services.
|
||||
*
|
||||
* We have a number of pre-set alias files, check out the alias/ directory.
|
||||
* As an example, here we include all aliases used for anope services.
|
||||
*/
|
||||
include "aliases/anope.conf";
|
||||
|
||||
/* Ban nick names so they cannot be used by regular users */
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Reserved for Services";
|
||||
}
|
||||
|
||||
/* Ban ip.
|
||||
* Note that you normally use /KLINE, /GLINE and /ZLINE for this.
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Hate you";
|
||||
}
|
||||
|
||||
/* Ban server - if we see this server linked to someone then we delink */
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Get out of here.";
|
||||
}
|
||||
|
||||
/* Ban user - just as an example, you normally use /KLINE or /GLINE for this */
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiot";
|
||||
}
|
||||
|
||||
/* Ban realname allows you to ban clients based on their 'real name'
|
||||
* or 'gecos' field.
|
||||
*/
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
}
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
}
|
||||
|
||||
/* Ban and TKL exceptions. Allows you to exempt users / machines from
|
||||
* KLINE, GLINE, etc.
|
||||
* If you are an IRCOp with a static IP (and no untrusted persons on that IP)
|
||||
* then we suggest you add yourself here. That way you can always get in
|
||||
* even if you accidentally place a *LINE ban on yourself.
|
||||
*/
|
||||
|
||||
/* except ban protects you from KLINE and ZLINE */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
// you may add more mask entries here..
|
||||
}
|
||||
|
||||
/* except ban with type 'all' protects you from GLINE, GZLINE, QLINE, SHUN */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
type all;
|
||||
}
|
||||
|
||||
/* With deny dcc blocks you can ban filenames for DCC */
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Possible Sub7 Virus";
|
||||
}
|
||||
|
||||
/* deny channel allows you to ban a channel (mask) entirely */
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez is illegal";
|
||||
class "clients";
|
||||
}
|
||||
|
||||
/* VHosts (Virtual Hosts) allow users to acquire a different host.
|
||||
* See https://www.unrealircd.org/docs/Vhost_block
|
||||
*/
|
||||
|
||||
/* Example vhost which you can use. On IRC type: /VHOST test test
|
||||
* NOTE: only people with an 'unrealircd.com' host may use it so
|
||||
* be sure to change the vhost::mask before you test.
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
mask *@unrealircd.com;
|
||||
login "test";
|
||||
password "test";
|
||||
}
|
||||
|
||||
/* Blacklist blocks will query an external DNS Blacklist service
|
||||
* whenever a user connects, to see if the IP address is known
|
||||
* to cause drone attacks, is a known hacked machine, etc.
|
||||
* Documentation: https://www.unrealircd.org/docs/Blacklist_block
|
||||
* Or just have a look at the blocks below.
|
||||
*/
|
||||
|
||||
/* DroneBL, probably the most popular blacklist used by IRC Servers.
|
||||
* See https://dronebl.org/ for their documentation and the
|
||||
* meaning of the reply types. At time of writing we use types:
|
||||
* 3: IRC Drone, 5: Bottler, 6: Unknown spambot or drone,
|
||||
* 7: DDoS Drone, 8: SOCKS Proxy, 9: HTTP Proxy, 10: ProxyChain,
|
||||
* 11: Web Page Proxy, 12: Open DNS Resolver, 13: Brute force attackers,
|
||||
* 14: Open Wingate Proxy, 15: Compromised router / gateway,
|
||||
* 16: Autorooting worms.
|
||||
*/
|
||||
blacklist dronebl {
|
||||
dns {
|
||||
name dnsbl.dronebl.org;
|
||||
type record;
|
||||
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone detected. Check https://dronebl.org/lookup?ip=$ip for details.";
|
||||
}
|
||||
|
||||
/* EFnetRBL, see https://rbl.efnetrbl.org/ for documentation
|
||||
* and the meaning of the reply types.
|
||||
* At time of writing: 1 is open proxy, 4 is TOR, 5 is drones/flooding.
|
||||
*
|
||||
* NOTE: If you want to permit TOR proxies on your server, then
|
||||
* you need to remove the '4;' below in the reply section.
|
||||
*/
|
||||
blacklist efnetrbl {
|
||||
dns {
|
||||
name rbl.efnetrbl.org;
|
||||
type record;
|
||||
reply { 1; 4; 5; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone/TOR detected. Check https://rbl.efnetrbl.org/?i=$ip for details.";
|
||||
}
|
||||
|
||||
/* You can include other configuration files */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Network configuration */
|
||||
set {
|
||||
network-name "ExampleNET";
|
||||
default-server "irc.example.org";
|
||||
services-server "services.example.org";
|
||||
stats-server "stats.example.org";
|
||||
help-channel "#Help";
|
||||
hiddenhost-prefix "Clk";
|
||||
prefix-quit "Quit";
|
||||
|
||||
/* Cloak keys should be the same at all servers on the network.
|
||||
* They are used for generating masked hosts and should be kept secret.
|
||||
* The keys should be 3 random strings of 50-100 characters
|
||||
* and must consist of lowcase (a-z), upcase (A-Z) and digits (0-9).
|
||||
* HINT: On *NIX, you can run './unrealircd gencloak' in your shell to let
|
||||
* UnrealIRCd generate 3 random strings for you.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"and another one";
|
||||
"and another one";
|
||||
}
|
||||
}
|
||||
|
||||
/* Server specific configuration */
|
||||
|
||||
set {
|
||||
kline-address "set.this.to.email.address"; /* e-mail or URL shown when a user is banned */
|
||||
modes-on-connect "+ixw"; /* when users connect, they will get these user modes */
|
||||
modes-on-oper "+xws"; /* when someone becomes IRCOp they'll get these modes */
|
||||
modes-on-join "+nt"; /* default channel modes when a new channel is created */
|
||||
oper-auto-join "#opers"; /* IRCOps are auto-joined to this channel */
|
||||
options {
|
||||
hide-ulines; /* hide U-lines in /MAP and /LINKS */
|
||||
show-connect-info; /* show "looking up your hostname" messages on connect */
|
||||
}
|
||||
|
||||
maxchannelsperuser 10; /* maximum number of channels a user may /JOIN */
|
||||
|
||||
/* The minimum time a user must be connected before being allowed to
|
||||
* use a QUIT message. This will hopefully help stop spam.
|
||||
*/
|
||||
anti-spam-quit-message-time 10s;
|
||||
|
||||
/* Or simply set a static quit, meaning any /QUIT reason is ignored */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* static-part does the same for /PART */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Flood protection:
|
||||
* There are lots of settings for this and most have good defaults.
|
||||
* See https://www.unrealircd.org/docs/Set_block#set::anti-flood
|
||||
*/
|
||||
anti-flood {
|
||||
}
|
||||
|
||||
/* Settings for spam filter */
|
||||
spamfilter {
|
||||
ban-time 1d; /* default duration of a *LINE ban set by spamfilter */
|
||||
ban-reason "Spam/Advertising"; /* default reason */
|
||||
virus-help-channel "#help"; /* channel to use for 'viruschan' action */
|
||||
/* except "#help"; channel to exempt from Spamfilter */
|
||||
}
|
||||
|
||||
/* Restrict certain commands.
|
||||
* See https://www.unrealircd.org/docs/Set_block#set::restrict-commands
|
||||
*/
|
||||
restrict-commands {
|
||||
list {
|
||||
connect-delay 60;
|
||||
exempt-identified yes;
|
||||
exempt-reputation-score 24;
|
||||
}
|
||||
invite {
|
||||
connect-delay 120;
|
||||
exempt-identified yes;
|
||||
exempt-reputation-score 24;
|
||||
}
|
||||
/* In addition to the ability to restrict any command,
|
||||
* such as shown above. There are also 4 special types
|
||||
* that you can restrict. These are "private-message",
|
||||
* "private-notice", "channel-message" and "channel-notice".
|
||||
* They are commented out (disabled) in this example:
|
||||
*/
|
||||
//private-message {
|
||||
// connect-delay 10;
|
||||
//}
|
||||
//private-notice {
|
||||
// connect-delay 10;
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The following will configure connection throttling of "unknown users".
|
||||
*
|
||||
* When UnrealIRCd detects a high number of users connecting from IP addresses
|
||||
* that have not been seen before, then connections from new IP's are rejected
|
||||
* above the set rate. For example at 10:60 only 10 users per minute can connect
|
||||
* that have not been seen before. Known IP addresses can always get in,
|
||||
* regardless of the set rate. Same for users who login using SASL.
|
||||
*
|
||||
* See also https://www.unrealircd.org/docs/Connthrottle for details.
|
||||
* Or just keep reading the default configuration settings below:
|
||||
*/
|
||||
|
||||
set {
|
||||
connthrottle {
|
||||
/* First we must configure what we call "known users".
|
||||
* By default these are users on IP addresses that have
|
||||
* a score of 24 or higher. A score of 24 means that the
|
||||
* IP was connected to this network for at least 2 hours
|
||||
* in the past month (or minimum 1 hour if registered).
|
||||
* The sasl-bypass option is another setting. It means
|
||||
* that users who authenticate to services via SASL
|
||||
* are considered known users as well.
|
||||
* Users in the "known-users" group (either by reputation
|
||||
* or by SASL) are always allowed in by this module.
|
||||
*/
|
||||
known-users {
|
||||
minimum-reputation-score 24;
|
||||
sasl-bypass yes;
|
||||
}
|
||||
|
||||
/* New users are all users that do not belong in the
|
||||
* known-users group. They are considered "new" and in
|
||||
* case of a high number of such new users connecting
|
||||
* they are subject to connection rate limiting.
|
||||
* By default the rate is 20 new local users per minute
|
||||
* and 30 new global users per minute.
|
||||
*/
|
||||
new-users {
|
||||
local-throttle 20:60;
|
||||
global-throttle 30:60;
|
||||
}
|
||||
|
||||
/* This configures when this module will NOT be active.
|
||||
* The default settings will disable the module when:
|
||||
* - The reputation module has been running for less than
|
||||
* a week. If running less than 1 week then there is
|
||||
* insufficient data to consider who is a "known user".
|
||||
* - The server has just been booted up (first 3 minutes).
|
||||
*/
|
||||
disabled-when {
|
||||
reputation-gathering 1w;
|
||||
start-delay 3m;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Finally, you may wish to have a MOTD (Message of the Day), this can be
|
||||
* done by creating an 'ircd.motd' text file in your conf/ directory.
|
||||
* This file will be shown to your users on connect.
|
||||
* For more information see https://www.unrealircd.org/docs/MOTD_and_Rules
|
||||
*/
|
||||
|
||||
/*
|
||||
* Problems or need more help?
|
||||
* 1) https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
|
||||
* 2) https://www.unrealircd.org/docs/FAQ <- answers 80% of your questions!
|
||||
* 3) If you are still having problems then you can get support:
|
||||
* - Forums: https://forums.unrealircd.org/
|
||||
* - IRC: irc.unrealircd.org (SSL on port 6697) / #unreal-support
|
||||
* Note that we require you to read the documentation and FAQ first!
|
||||
*/
|
||||
@@ -1,610 +0,0 @@
|
||||
/* Archivo de configuración para UnrealIRCd 5
|
||||
*
|
||||
* Simplemente copie este archivo a su directorio conf /, llámelo
|
||||
* 'unrealircd.conf' y recorrerlo línea por línea (¡edítalo!)
|
||||
*
|
||||
* Importante: Todas las líneas, excepto { y } terminan con un;
|
||||
* Esto es muy importante, si pierde un; en algún lugar entonces el
|
||||
* el analizador de archivos de configuración se quejará y el archivo no
|
||||
* ¡será procesado correctamente!
|
||||
* Si esta es su primera experiencia con una configuración de UnrealIRCd
|
||||
* entonces realmente le recomendamos que lea un poco sobre la sintaxis,
|
||||
* esto solo toma unos minutos y te ayudará mucho:
|
||||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||||
*
|
||||
* Documentación de UnrealIRCd 5 (¡muy extensa!):
|
||||
* https://www.unrealircd.org/docs/Main_Page/es
|
||||
*
|
||||
* Preguntas frecuentes:
|
||||
* https://www.unrealircd.org/docs/FAQ
|
||||
*
|
||||
*/
|
||||
|
||||
/* Esto es un comentario, todo el texto aquí se ignora (tipo de comentario #1) */
|
||||
// Esto también es un comentario, esta línea se ignora (tipo de comentario #2)
|
||||
#Esto también es un comentario, nuevamente esta línea se ignora (tipo de comentario # 3)
|
||||
|
||||
/* UnrealIRCd hace un uso intensivo de módulos. Los módulos le permiten
|
||||
* personalizar el conjunto de funciones que desea habilitar en UnrealIRCd.
|
||||
* Vea más: https://www.unrealircd.org/docs/Modules
|
||||
*
|
||||
* Al usar la inclusión a continuación, le indicamos al IRCd que lea el archivo
|
||||
* 'modules.default.conf' este cargará más de 150 módulos
|
||||
* cargados con UnrealIRCd. En otras palabras: esto simplemente cargará
|
||||
* todas las funciones disponibles en UnrealIRCd.
|
||||
* Si está configurando UnrealIRCd por primera vez, le sugerimos
|
||||
* utilizar este. Entonces, cuando todo esté en funcionamiento, puedes venir
|
||||
* volver más tarde para personalizar la lista (si así lo desea).
|
||||
*/
|
||||
include "modules.default.conf";
|
||||
|
||||
/* Ahora incluyamos algunos otros archivos:
|
||||
* - help / help.conf para nuestro sistema on-IRC /HELPOP
|
||||
* - badwords.conf para canal y modo de usuario +G
|
||||
* - spamfilter.conf como ejemplo de uso de filtro de texto.
|
||||
* (comentado)
|
||||
* - operclass.default.conf contiene algunas buenas operclasses que
|
||||
* puedes usarlo en tus bloques operativos.
|
||||
*/
|
||||
include "help/help.conf";
|
||||
include "badwords.conf";
|
||||
//include "spamfilter.conf";
|
||||
include "operclass.default.conf";
|
||||
|
||||
/* Este es el bloque me {} que básicamente dice quiénes somos.
|
||||
* Define el nombre de nuestro servidor, alguna línea de información y un "sid" único.
|
||||
* La identificación del servidor (sid) debe comenzar con un dígito seguido de dos dígitos o
|
||||
* letras. El sid debe ser único para su red IRC (cada servidor debe
|
||||
* tiene su propio sid).
|
||||
*/
|
||||
me {
|
||||
name "irc.ejemplo.org";
|
||||
info "Servidor EjemploNET";
|
||||
sid "001";
|
||||
}
|
||||
|
||||
/* El bloque admin {} define lo que los usuarios verán si escriben /ADMIN.
|
||||
* Normalmente contiene información sobre cómo contactar al administrador.
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"correo-electrónico@ejemplo.org";
|
||||
}
|
||||
|
||||
/* Los clientes y servidores se colocan en bloques de clase {}, los definimos aquí.
|
||||
* Los bloques de clase constan de los siguientes elementos:
|
||||
* - pingfreq: con qué frecuencia hacer ping a un usuario /servidor (en segundos)
|
||||
* - connfreq: con qué frecuencia intentamos conectarnos a este servidor (en segundos)
|
||||
* - sendq: el tamaño máximo de cola para una conexión
|
||||
* - recvq: cola de recepción máxima de una conexión (control de inundaciones)
|
||||
*/
|
||||
|
||||
/* Clase de cliente con buenos valores predeterminados */
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 1000;
|
||||
sendq 200k;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Clase especial para IRCOps con límites superiores */
|
||||
class opers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 50;
|
||||
sendq 1M;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Clase de servidor con buenos valores predeterminados */
|
||||
class servers
|
||||
{
|
||||
pingfreq 60;
|
||||
connfreq 15; /* intenta conectarte cada 15 segundos */
|
||||
maxclients 10; /* máximo de servidores */
|
||||
sendq 20M;
|
||||
}
|
||||
|
||||
/* Bloques de permitir definen qué clientes pueden conectarse a este servidor.
|
||||
* Esto le permite agregar una contraseña de servidor o restringir el servidor a
|
||||
* IP específicas únicamente. También configuras las conexiones máximas
|
||||
* permitido por IP aquí.
|
||||
* Ver también: https://www.unrealircd.org/docs/Allow_block
|
||||
*/
|
||||
|
||||
/* Permitir que todos entren, pero solo 3 conexiones por IP */
|
||||
allow {
|
||||
mask *;
|
||||
class clients;
|
||||
maxperip 3;
|
||||
}
|
||||
|
||||
/* Ejemplo de un bloque de permiso especial en una IP específica:
|
||||
* Requiere que los usuarios de esa IP se conecten con una contraseña. Si la contraseña
|
||||
* es correcto, entonces permite 20 conexiones en esa IP.
|
||||
*/
|
||||
|
||||
allow {
|
||||
mask 192.0.2.1;
|
||||
class clients;
|
||||
password "algunacontraseña";
|
||||
maxperip 20;
|
||||
}
|
||||
|
||||
/* Los bloques de operaciones definen sus operadores de IRC.
|
||||
* Los operadores de IRC son personas que tienen "derechos adicionales" en comparación con otros,
|
||||
* por ejemplo, pueden /KILL a otras personas, iniciar la vinculación del servidor,
|
||||
* /JOIN a canales aunque estén prohibidos, etc.
|
||||
*
|
||||
* Para obtener más información sobre cómo convertirse en un IRCOp y cómo administrar
|
||||
* tareas, consulte: https://www.unrealircd.org/docs/IRCOp_guide
|
||||
*
|
||||
* Para obtener detalles sobre el bloque oper {} en sí, consulte
|
||||
* https://www.unrealircd.org/docs/Oper_block
|
||||
*/
|
||||
|
||||
/* Aquí hay un ejemplo de bloque de operador para 'bobsmith' con contraseña 'test'.
|
||||
* ¡¡DEBES cambiar esto !!
|
||||
*/
|
||||
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
password "test";
|
||||
/* Los permisos de operador se definen en un bloque 'operclass'.
|
||||
* Ver https://www.unrealircd.org/docs/Operclass_block
|
||||
* UnrealIRCd viene con una serie de bloques predeterminados, consulte
|
||||
* el artículo para una lista completa. Elegimos 'netadmin' aquí.
|
||||
*/
|
||||
operclass netadmin;
|
||||
swhois "es un Administrador de Red";
|
||||
vhost netadmin.ejemplo.org;
|
||||
}
|
||||
|
||||
/* Los bloques de escucha definen los puertos donde el servidor debe escuchar.
|
||||
* En otras palabras: los puertos que los clientes y servidores pueden usar para
|
||||
* conectarse a este servidor.
|
||||
*
|
||||
* Sintaxis:
|
||||
* listen {
|
||||
* {
|
||||
* ip <ip>;
|
||||
* port <puerto>;
|
||||
* options {
|
||||
* <opciones....>;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
/* Puerto estándar para IRC 6667 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6667;
|
||||
}
|
||||
|
||||
/* Puerto estándar para IRC SSL/TLS 6697 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6697;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Puerto especial SSL/TLS servers-only/(Solo servidores) para enlaces */
|
||||
listen {
|
||||
ip *;
|
||||
port 6900;
|
||||
options { tls; serversonly; }
|
||||
}
|
||||
|
||||
/* NOTA: Si está en una shell IRCd con varias IP y usa
|
||||
* los bloques listen {} anteriores, es probable que obtenga un
|
||||
* Error "address is already in use" y el ircd no se inicia.
|
||||
* Esto significa que DEBE vincularse a una IP específica en lugar de '*' como:
|
||||
* escuchar { ip 1.2.3.4; puerto 6667; }
|
||||
* Por supuesto, reemplace la IP con la IP que se le asignó.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Los bloques de enlaces le permiten enlazar varios servidores para formar una red.
|
||||
* Ver https://www.unrealircd.org/docs/Tutorial:_Linking_servers
|
||||
*/
|
||||
|
||||
link hub.ejemplo.org
|
||||
{
|
||||
incoming {
|
||||
mask *@algo;
|
||||
}
|
||||
|
||||
outgoing {
|
||||
bind-ip *; /* o explícitamente una IP */
|
||||
hostname hub.ejemplo.org;
|
||||
port 6900;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Usamos la huella digital SPKI del otro servidor para la autenticación.
|
||||
* Ejecute './unrealircd spkifp' en el otro lado para obtenerlo.
|
||||
*/
|
||||
|
||||
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* El bloqueo de enlaces para servicios suele ser mucho más sencillo.
|
||||
* Para obtener más información sobre qué son los Servicios,
|
||||
* ver https://www.unrealircd.org/docs/Services
|
||||
*/
|
||||
|
||||
link servicios.ejemplo.org
|
||||
{
|
||||
incoming {
|
||||
mask 127.0.0.1;
|
||||
}
|
||||
|
||||
password "cambiameporfavor";
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* Las líneas U dan a otros servidores (incluso) más poder/comandos.
|
||||
* Si utiliza servicios debe agregarlos aquí.
|
||||
* ¡¡¡NUNCA ponga aquí el nombre de un servidor UnrealIRCd !!!
|
||||
*/
|
||||
|
||||
ulines {
|
||||
servicios.ejemplo.org;
|
||||
}
|
||||
|
||||
/* Aquí puede agregar una contraseña para los comandos solo IRCOp /DIE y /RESTART.
|
||||
* Esto está destinado principalmente a proporcionar una pequeña protección contra accidentes
|
||||
* se reinicia y el servidor se mata.
|
||||
*/
|
||||
|
||||
drpass {
|
||||
restart "reiniciar";
|
||||
die "muere";
|
||||
}
|
||||
|
||||
/* El bloque de registros define qué se debe registrar y en qué archivo.
|
||||
* Ver también https://www.unrealircd.org/docs/Log_block
|
||||
*/
|
||||
|
||||
/* Este es un buen valor predeterminado, registra todo */
|
||||
log "ircd.log" {
|
||||
flags {
|
||||
oper;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
flood;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
tkl;
|
||||
spamfilter;
|
||||
}
|
||||
}
|
||||
|
||||
/ * Con "aliases" puedes crear un alias como /ALGO para enviar un mensaje
|
||||
* algún usuario o bot. Suelen utilizarse para servicios.
|
||||
*
|
||||
* Tenemos varios archivos de alias preestablecidos, consulte el directorio alias /.
|
||||
* Como ejemplo, aquí incluimos todos los alias utilizados para los servicios de anope.
|
||||
* /
|
||||
|
||||
include "aliases/anope.conf";
|
||||
|
||||
/* Prohibir los apodos para que no puedan ser utilizados por usuarios habituales. */
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Reservado para Servicios";
|
||||
}
|
||||
|
||||
/* Prohibir ip.
|
||||
* Tenga en cuenta que normalmente se usa /KLINE, /GLINE y /ZLINE para esto.
|
||||
*/
|
||||
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Te odio";
|
||||
}
|
||||
|
||||
/* Ban server - if we see this server linked to someone then we delink */
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Sal de aquí.";
|
||||
}
|
||||
|
||||
/* Banear un user - solo como ejemplo, normalmente usa /KLINE or /GLINE para esto */
|
||||
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiota";
|
||||
}
|
||||
|
||||
/* Banear realname te permite prohibir clientes en función de su 'nombre real'
|
||||
* o campo 'gecos'.
|
||||
*/
|
||||
|
||||
ban realname {
|
||||
mask "Equipo Swat";
|
||||
reason "mIRKFORCE";
|
||||
}
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
}
|
||||
|
||||
/* Excepciones de prohibición y TKL. Le permite eximir a los usuarios/máquinas de
|
||||
* KLINE, GLINE, etc.
|
||||
* Si es un IRCOp con una IP estática (y no hay personas que no sean de confianza en esa IP)
|
||||
* entonces le sugerimos que se agregue aquí. De esa manera siempre puedes entrar
|
||||
* incluso si accidentalmente te aplicas una prohibición de * LINE.
|
||||
*/
|
||||
|
||||
/* Excepciones, te protege de KLINE and ZLINE */
|
||||
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
// puede agregar más entradas de máscara aquí..
|
||||
}
|
||||
|
||||
/* excepto prohibir con tipo 'all' te protege de GLINE, GZLINE, QLINE, SHUN */
|
||||
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
type all;
|
||||
}
|
||||
|
||||
/* Con deny dcc puedes prohibir nombres de archivo para DCC */
|
||||
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Posible Sub7 Virus";
|
||||
}
|
||||
|
||||
/* deny channel te perimte banear un canal entero (mascará) */
|
||||
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez es ilegal";
|
||||
class "clients";
|
||||
}
|
||||
|
||||
/* VHosts (Virtual Hosts) permite a los usuarios adquirir un host diferente.
|
||||
* Ver https://www.unrealircd.org/docs/Vhost_block
|
||||
*/
|
||||
|
||||
/* Ejemplo de vhost que puede usar. En el tipo de IRC: /VHOST test test
|
||||
* NOTA: solo las personas con un host 'unrealircd.com' pueden usarlo así
|
||||
* asegúrese de cambiar vhost :: mask antes de realizar la prueba.
|
||||
*/
|
||||
|
||||
vhost {
|
||||
vhost odio.microsefrs.com;
|
||||
mask *@unrealircd.com;
|
||||
login "testeo";
|
||||
password "testeo";
|
||||
}
|
||||
|
||||
/* Los bloques de lista negra consultarán un servicio de lista negra de DNS externo
|
||||
* cada vez que un usuario se conecta, para ver si se conoce la dirección IP
|
||||
* por causar ataques con drones, es una máquina pirateada conocida, etc.
|
||||
* Documentación: https://www.unrealircd.org/docs/Blacklist_block
|
||||
* O simplemente eche un vistazo a los bloques a continuación.
|
||||
*/
|
||||
|
||||
/* DroneBL, probablemente la lista negra más popular utilizada por los servidores IRC.
|
||||
* Consulte https://dronebl.org/ para obtener su documentación y el
|
||||
* significado de los tipos de respuesta. En el momento de escribir este artículo utilizamos tipos:
|
||||
* 3: IRC Drone, 5: Embotellador, 6: Spambot o drone desconocido,
|
||||
* 7: DDoS Drone, 8: Proxy SOCKS, 9: Proxy HTTP, 10: ProxyChain,
|
||||
* 11: Proxy de página web, 12: Open DNS Resolver, 13: Atacantes de fuerza bruta,
|
||||
* 14: Proxy Wingate abierto, 15: Enrutador / puerta de enlace comprometido,
|
||||
* 16: Gusanos de autorooting.
|
||||
*/
|
||||
|
||||
blacklist dronebl {
|
||||
dns {
|
||||
name dnsbl.dronebl.org;
|
||||
type record;
|
||||
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone detectado. Consulte https://dronebl.org/lookup?ip=$ip para más detalles.";
|
||||
}
|
||||
|
||||
/* EFnetRBL, consulte https://rbl.efnetrbl.org/ para obtener documentación
|
||||
* y el significado de los tipos de respuesta.
|
||||
* Al momento de escribir este artículo: 1 es proxy abierto, 4 es TOR, 5 es drones/flooding.
|
||||
*
|
||||
* NOTA: Si desea permitir proxies TOR en su servidor, entonces
|
||||
* necesita eliminar el '4;' a continuación en la sección de respuesta.
|
||||
*/
|
||||
|
||||
blacklist efnetrbl {
|
||||
dns {
|
||||
name rbl.efnetrbl.org;
|
||||
type record;
|
||||
reply { 1; 4; 5; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone detectado. Consulte https://rbl.efnetrbl.org/?i=$ip para más detalles.";
|
||||
}
|
||||
|
||||
/* Puede incluir otros archivos de configuración */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Configuración de la red */
|
||||
set {
|
||||
network-name "EjemploNET";
|
||||
default-server "irc.ejemplo.org";
|
||||
services-server "services.ejemplo.org";
|
||||
stats-server "stats.ejemplo.org";
|
||||
help-channel "#Ayuda";
|
||||
hiddenhost-prefix "Clk";
|
||||
prefix-quit "Quit";
|
||||
|
||||
/* Las claves de ocultación deben ser las mismas en todos los servidores de la red.
|
||||
* Se utilizan para generar hosts enmascarados y deben mantenerse en secreto.
|
||||
* Las claves deben ser 3 cadenas aleatorias de 50-100 caracteres
|
||||
* y debe constar de minúsculas (a-z), mayúsculas (A-Z) y dígitos (0-9).
|
||||
* SUGERENCIA: en * NIX, puede ejecutar './unrealircd gencloak' en su shell/Vps para
|
||||
* que UnrealIRCd genere 3 cadenas aleatorias para ti.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"uno más";
|
||||
"y otro más";
|
||||
}
|
||||
}
|
||||
|
||||
/* Configuración específica del servidor */
|
||||
|
||||
set {
|
||||
kline-address "setea.un.correo.electrónico"; /* Correo electrónico o URL que se muestra cuando un usuario está baneado */
|
||||
modes-on-connect "+ixw"; /* cuando los usuarios se conectan, obtendrán estos modos de usuario */
|
||||
modes-on-oper "+xws"; /* cuando alguien se convierte en IRCOp obtendrá estos modos */
|
||||
modes-on-join "+nt"; /* modos de canal predeterminados cuando se crea un nuevo canal */
|
||||
oper-auto-join "#opers"; /* Las IRCOps se unen automáticamente a este canal. */
|
||||
options {
|
||||
hide-ulines; /* ocultar las líneas U en /MAP and /LINKS */
|
||||
show-connect-info; /* muestra "looking up your hostname" cuando conectas */
|
||||
}
|
||||
|
||||
maxchannelsperuser 10; /* Número máximo de canales que un usuario puede /JOIN */
|
||||
|
||||
/* El tiempo mínimo que un usuario debe estar conectado antes de que se le permita
|
||||
* usar un mensaje QUIT. Con suerte, esto ayudará a detener el spam.
|
||||
*/
|
||||
anti-spam-quit-message-time 10s;
|
||||
|
||||
/* O simplemente setea un quit estático, significa que cualquier /QUIT es ignorado */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* static-part hace lo mismo para /PART */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Protección contra flood:
|
||||
* Hay muchas configuraciones para esto y la mayoría tienen buenos valores predeterminados.
|
||||
* Ver https://www.unrealircd.org/docs/Set_block#set::anti-flood
|
||||
*/
|
||||
anti-flood {
|
||||
}
|
||||
|
||||
/* Opciones de Filtro de texto */
|
||||
spamfilter {
|
||||
ban-time 1d; /* la duracion por defecto de un *LINE seteado por el filtro de texto */
|
||||
ban-reason "Spam/Publicidad"; /* razón por defecto */
|
||||
virus-help-channel "#ayuda"; /* canal de uso para 'viruschan' */
|
||||
/* except "#ayuda"; inmunidad para el canal Ayuda del filtro de texto */
|
||||
}
|
||||
|
||||
/* Restringir ciertos comandos.
|
||||
* Ver https://www.unrealircd.org/docs/Set_block#set::restrict-commands
|
||||
*/
|
||||
restrict-commands {
|
||||
list {
|
||||
connect-delay 60;
|
||||
exempt-identified yes;
|
||||
exempt-reputation-score 24;
|
||||
}
|
||||
invite {
|
||||
connect-delay 120;
|
||||
exempt-identified yes;
|
||||
exempt-reputation-score 24;
|
||||
}
|
||||
/* Además de la capacidad de restringir cualquier comando,
|
||||
* como se muestra arriba. También hay 4 tipos especiales
|
||||
* que puede restringir. Estos son "private-message",
|
||||
* "private-notice", "channel-message" y "channel-notice".
|
||||
* Están comentados (desactivados) en este ejemplo:
|
||||
*/
|
||||
//private-message {
|
||||
// connect-delay 10;
|
||||
//}
|
||||
//private-notice {
|
||||
// connect-delay 10;
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Lo siguiente configurará la limitación de la conexión de "unknown users".
|
||||
*
|
||||
* Cuando UnrealIRCd detecta una gran cantidad de usuarios que se conectan desde direcciones IP
|
||||
* que no se han visto antes, se rechazan las conexiones de las nuevas IP
|
||||
* por encima de la configuración establecida. Por ejemplo, 10:60 solo pueden conectarse 10 usuarios por minuto
|
||||
* que no se hayan visto antes. Las direcciones IP conocidas siempre pueden ingresar,
|
||||
* independientemente de la configuración establecida. Lo mismo para los usuarios que inician sesión con SASL.
|
||||
*
|
||||
* Consulte también https://www.unrealircd.org/docs/Connthrottle para obtener más detalles.
|
||||
* O simplemente siga leyendo los ajustes de configuración predeterminados a continuación:
|
||||
*/
|
||||
|
||||
set {
|
||||
connthrottle {
|
||||
/* Primero debemos configurar lo que llamamos "known users".
|
||||
* De forma predeterminada, estos son usuarios en direcciones IP que tienen
|
||||
* una puntuación de 24 o más. Una puntuación de 24 significa que
|
||||
* La IP estuvo conectada a esta red durante al menos 2 horas
|
||||
* en el último mes (o mínimo 1 hora si está registrado).
|
||||
* La opción sasl-bypass es otra configuración. Significa
|
||||
* que los usuarios que se autentican en los servicios a través de SASL
|
||||
* también se consideran usuarios conocidos.
|
||||
* Usuarios del grupo "known users" (ya sea por reputación
|
||||
* o por SASL) siempre están permitidos por este módulo.
|
||||
*/
|
||||
known-users {
|
||||
minimum-reputation-score 24;
|
||||
sasl-bypass yes;
|
||||
}
|
||||
|
||||
/* Los nuevos usuarios son todos los usuarios que no pertenecen al
|
||||
* grupo de usuarios conocidos. Se consideran "nuevos" y en
|
||||
* caso de un gran número de nuevos usuarios que se conectan
|
||||
* están sujetos a limitación de velocidad de conexión.
|
||||
* Por defecto, la configuración es de 20 nuevos usuarios locales por minuto.
|
||||
* y 30 nuevos usuarios globales por minuto.
|
||||
*/
|
||||
new-users {
|
||||
local-throttle 20:60;
|
||||
global-throttle 30:60;
|
||||
}
|
||||
|
||||
/* Esta configuración es para cuando este módulo NO este activo.
|
||||
* La configuración predeterminada deshabilitará el módulo cuando:
|
||||
* - El módulo de reputación se ha estado ejecutando durante menos de
|
||||
* una semana. Si se ejecuta menos de 1 semana, entonces hay
|
||||
* Datos insuficientes para considerar quién es un "known users".
|
||||
* - El servidor acaba de iniciarse (primeros 3 minutos).
|
||||
*/
|
||||
disabled-when {
|
||||
reputation-gathering 1w;
|
||||
start-delay 3m;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Finalmente, es posible que desee tener un MOTD (Mensaje del día), esto puede ser
|
||||
* hecho creando un archivo de texto 'ircd.motd' en su directorio conf /.
|
||||
* Este archivo se mostrará a sus usuarios al conectarse.
|
||||
* Para obtener más información, consulte https://www.unrealircd.org/docs/MOTD_and_Rules
|
||||
*/
|
||||
|
||||
/*
|
||||
* ¿Problemas o necesita más ayuda?
|
||||
* 1) https://www.unrealircd.org/docs/Main_Page/es
|
||||
* 2) https://www.unrealircd.org/docs/FAQ <- ¡responde el 80% de sus preguntas!
|
||||
* 3) Si aún tiene problemas, puede obtener asistencia:
|
||||
* - Foros: https://forums.unrealircd.org/
|
||||
* - IRC: irc.unrealircd.org (SSL en el puerto 6697) / #unreal-support
|
||||
* Tenga en cuenta que primero le pedimos que lea la documentación y las preguntas frecuentes.
|
||||
*/
|
||||
@@ -1,455 +0,0 @@
|
||||
/* Fichier de configuration pour UnrealIRCd 5
|
||||
*
|
||||
* Copiez ce fichier dans le répertoire conf/, renommez le
|
||||
* 'unrealircd.conf' et parcourez-le ligne par ligne (modifiez le !)
|
||||
*
|
||||
* Important : Toutes les lignes, sauf celles ne comportant qu'un {
|
||||
* ouvrant, doivent finir par un ; y compris };. C'est très important,
|
||||
* car si vous oubliez un ; quelque part, alors le parser du fichier de
|
||||
* configuration se plaindra et votre fichier ne sera pas lu correctement !
|
||||
* S'il s'agit de votre première expérience avec le fichier de configuration
|
||||
* d'UnrealIRCd, nous vous recommandons de vous documenter un peu à propos
|
||||
* de la syntaxe. Ça ne vous prendra que quelques minutes et vous aidera
|
||||
* beaucoup :
|
||||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||||
*
|
||||
* Documentation pour UnrealIRCd 5 (très complète !) :
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_5_documentation/fr
|
||||
*
|
||||
* Foire Aux Questions :
|
||||
* https://www.unrealircd.org/docs/FAQ
|
||||
*
|
||||
*/
|
||||
|
||||
/* Ceci est un commentaire, ici, tout le texte est ignoré (type #1) */
|
||||
// Ceci est aussi un commentaire, cette ligne est ignorée (type #2)
|
||||
# Ceci est aussi un commentaire, cette ligne est ignorée (type #3)
|
||||
|
||||
/* UnrealIRCd utilise beaucoup les modules. Ceux-ci vous permettent
|
||||
* de personnaliser complètement les fonctionnalités que vous voulez
|
||||
* activer sur UnrealIRCd.
|
||||
* Voir : https://www.unrealircd.org/docs/Modules
|
||||
*
|
||||
* En utilisant la ligne include ci-dessous, nous indiquons à l'IRCd de
|
||||
* lire le fichier 'modules.default.conf' ce qui activera plus de 150
|
||||
* modules fournis avec UnrealIRCd. En d'autres termes, ceci activera
|
||||
* toutes les fonctionnalités disponibles d'UnrealIRCd.
|
||||
* Si vous configurez UnrealIRCd pour la première fois, nous vous
|
||||
* conseillons d'utiliser cette ligne. Après, lorsque tout fonctionnera
|
||||
* vous pourrez revenir personnaliser la liste (si vous le souhaitez).
|
||||
*/
|
||||
include "modules.default.conf";
|
||||
|
||||
/* Incluons aussi d'autres fichiers :
|
||||
* - help/help.conf pour le système d'aide sur IRC via /HELPOP
|
||||
* - badwords.conf pour le mode utilisateur et de salon +G
|
||||
* - spamfilter.conf comme exemple d'utilisation de spamfilter
|
||||
* - operclass.default.conf qui contient les classes d'opérateurs
|
||||
* par défaut à utiliser dans vos blocs oper.
|
||||
*/
|
||||
include "help/help.conf";
|
||||
include "badwords.conf";
|
||||
//include "spamfilter.conf";
|
||||
include "operclass.default.conf";
|
||||
|
||||
/* Le bloc me { } indique qui est le serveur.
|
||||
* Il définit le nom du serveur, une ligne d'informations et un identifiant
|
||||
* "sid" unique. L'id du serveur (sid) doit commencer par un chiffre suivit
|
||||
* de deux chiffres ou lettres. Le sid doit être unique sur votre réseau IRC
|
||||
* (chaque serveur doit avoir un sid différent).
|
||||
*/
|
||||
me {
|
||||
name "irc.example.org";
|
||||
info "Serveur ExampleNET";
|
||||
sid "001";
|
||||
}
|
||||
|
||||
/* Le bloc admin { } définit ce que les utilisateurs verront en faisant
|
||||
* /ADMIN. C'est généralement des infos de contact de l'administrateur.
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"adresse.email@example.org";
|
||||
}
|
||||
|
||||
/* Les clients et serveurs sont placés dans des classes, que nous
|
||||
* définissons dans ces blocs class { }.
|
||||
* Les blocs de classe comportent les éléments suivants :
|
||||
* - pingfreq: à quelle fréquence envoyer un ping à l'utilisateur ou au
|
||||
* serveur (en secondes)
|
||||
* - connfreq: à quelle fréquence on essaye de se connecter à ce serveur
|
||||
* (en secondes)
|
||||
* - sendq: la taille maximale de la queue d'émission pour une connexion
|
||||
* - recvq: la taille maximale de la queue de réception pour une connexion
|
||||
* (contrôle du flood)
|
||||
*/
|
||||
|
||||
/* Classe pour des clients */
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 1000;
|
||||
sendq 200k;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Classe spéciale pour des IRCOps avec des limites plus hautes */
|
||||
class opers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 50;
|
||||
sendq 1M;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Classe pour des serveurs */
|
||||
class servers
|
||||
{
|
||||
pingfreq 60;
|
||||
connfreq 15; /* essayer de se connecter toutes les 15 sec */
|
||||
maxclients 10; /* nombre max de serveurs */
|
||||
sendq 5M;
|
||||
}
|
||||
|
||||
/* Les blocs allow définissent quels clients peuvent se connecter au
|
||||
* serveur. Ils vous permettent d'ajouter un mot de passe ou de restreindre
|
||||
* le serveur à certaines IP seulement. C'est aussi là que vous configurez
|
||||
* le nombre maximum de connexions par IP.
|
||||
* Voir : https://www.unrealircd.org/docs/Allow_block
|
||||
*/
|
||||
|
||||
/* Accepter tout le monde, mais seulement 5 connexions par IP */
|
||||
allow {
|
||||
mask *;
|
||||
class clients;
|
||||
maxperip 5;
|
||||
}
|
||||
|
||||
/* Exemple de bloc allow spécial pour une IP donnée :
|
||||
* Les utilisateurs sur cette IP doivent se connecter avec un mot de passe.
|
||||
* S'il est correct, alors autoriser 20 connexions sur cette IP.
|
||||
*/
|
||||
allow {
|
||||
mask 192.0.2.1;
|
||||
class clients;
|
||||
password "unmotdepassesecret";
|
||||
maxperip 20;
|
||||
}
|
||||
|
||||
/* Les blocs oper définissent vos Opérateurs IRC.
|
||||
* Les Opérateurs IRC sont des utilisateurs avec des "droits en plus"
|
||||
* par rapport aux autres, par exemple, ils peuvent /KILL (déconnecter)
|
||||
* d'autres utilisateurs, faire se connecter des serveurs entre eux,
|
||||
* /JOIN des salons même s'ils sont bannis, etc ...
|
||||
* Voir aussi : https://www.unrealircd.org/docs/Oper_block
|
||||
*/
|
||||
|
||||
/* Voici un exemple de bloc oper pour 'bobsmith' avec le mot de
|
||||
* passe 'test'.
|
||||
* Vous DEVEZ le modifier !!
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
password "test";
|
||||
/* Les permissions Oper sont définies dans un bloc 'operclass'.
|
||||
* Voir https://www.unrealircd.org/docs/Operclass_block
|
||||
* UnrealIRCd est fourni avec des classes par défaut, voir la doc
|
||||
* pour une liste complète. Nous avons choisi 'netadmin' ici.
|
||||
*/
|
||||
operclass netadmin;
|
||||
swhois "est un Administrateur du Réseau";
|
||||
vhost netadmin.example.org;
|
||||
}
|
||||
|
||||
/* Les blocs listen définissent les ports sur lesquels le serveur écoute.
|
||||
* C'est-à-dire les ports que les clients et les serveurs utilisent pour
|
||||
* se connecter à ce serveur.
|
||||
*
|
||||
* Syntaxe :
|
||||
* listen
|
||||
* {
|
||||
* ip <adresse ip>;
|
||||
* port <numéro de port>;
|
||||
* options {
|
||||
* <options....>;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
/* Port standard pour IRC 6667 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6667;
|
||||
}
|
||||
|
||||
/* Port standard pour IRC sur SSL/TLS 6697 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6697;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Port SSL/TLS spécial pour la connexion entre serveurs */
|
||||
listen {
|
||||
ip *;
|
||||
port 6900;
|
||||
options { tls; serversonly; }
|
||||
}
|
||||
|
||||
/* NOTE : Si vous utilisez un serveur IRC avec plusieurs IP et que vous
|
||||
* utilisez les blocs listen ci-dessus, vous aurez peut-être une
|
||||
* erreur 'Address already in use' et l'IRCd ne démarrera pas.
|
||||
* Celle-ci indique que vous devez préciser une IP spécifique
|
||||
* au lieu de '*'. Exemple :
|
||||
* listen 1.2.3.4:6667;
|
||||
* Bien sûr, remplacez 1.2.3.4 par l'IP qui vous est assignée.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Les blocs link vous permettent de connecter plusieurs serveurs ensemble
|
||||
* pour former un réseau IRC.
|
||||
* Voir https://www.unrealircd.org/docs/Tutorial:_Linking_servers
|
||||
*/
|
||||
link hub.example.org
|
||||
{
|
||||
incoming {
|
||||
mask *@something;
|
||||
}
|
||||
|
||||
outgoing {
|
||||
bind-ip *; /* ou une IP précise */
|
||||
hostname hub.example.org;
|
||||
port 6900;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
password "00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF"; /* Empreinte SSL de l'autre serveur */
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* Les U-lines donnent encore plus de pouvoir à certains serveurs.
|
||||
* Si vous utilisez des Services, vous devez les indiquer ici.
|
||||
* NE JAMAIS indiquer le nom d'un serveur UnrealIRCd normal ici !!!
|
||||
* (Si vous ne savez pas ce que sont les Services, voir :
|
||||
* https://www.unrealircd.org/docs/Services )
|
||||
*/
|
||||
ulines {
|
||||
services.example.org;
|
||||
}
|
||||
|
||||
/* Ici vous pouvez indiquer un mot de passe pour les commandes /DIE et
|
||||
* /RESTART, qui sont restreintes aux IRCops.
|
||||
* Il s'agit surtout d'une petite protection contre les redémarrages et
|
||||
* les coupures de serveur accidentels.
|
||||
*/
|
||||
drpass {
|
||||
restart "restart";
|
||||
die "die";
|
||||
}
|
||||
|
||||
/* Le bloc log indique ce qui doit être journalisé et dans quel fichier.
|
||||
* Voir aussi https://www.unrealircd.org/docs/Log_block
|
||||
*/
|
||||
|
||||
/* Ceci est une bonne valeur par défaut, elle journalise presque tout */
|
||||
log "ircd.log" {
|
||||
flags {
|
||||
oper;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
tkl;
|
||||
spamfilter;
|
||||
}
|
||||
}
|
||||
|
||||
/* Avec des "alias", vous pouvez créer un alias comme /UNTRUC pour envoyer
|
||||
* un message à un utilisateur ou à un bot. Ils sont souvent utilisés pour
|
||||
* les services.
|
||||
*
|
||||
* Nous fournissons un certain nombre d'alias par défaut, voir les fichiers
|
||||
* du répertoire aliases/.
|
||||
* Pour exemple, ici nous ajoutons les alias pour les Services Anope.
|
||||
*/
|
||||
include "aliases/anope.conf";
|
||||
|
||||
/* Bannir des nicks pour qu'ils ne soient pas utilisables par des
|
||||
* utilisateurs normaux
|
||||
*/
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Réservé aux Services";
|
||||
}
|
||||
|
||||
/* Bannir une IP.
|
||||
* NB : vous pouvez aussi utiliser /KLINE, /GLINE et /ZLINE pour ça.
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Je vous hais !";
|
||||
}
|
||||
|
||||
/* Bannir un serveur - si ce serveur est connecté au réseau, nous nous
|
||||
* déconnecterons
|
||||
*/
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Va-t-en d'ici.";
|
||||
}
|
||||
|
||||
/* Bannir un utilisateur - juste pour l'exemple, on utilise normalement
|
||||
* /KLINE or /GLINE pour ça
|
||||
*/
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiot";
|
||||
}
|
||||
|
||||
/* Bannir un realname (ou 'gecos') */
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
}
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
}
|
||||
|
||||
/* Exceptions de ban et TKL. Vous permet d'exempter des utilisateurs des
|
||||
* KLINE, GLINE, etc ...
|
||||
* Si vous êtes un IRCOp avec une IP statique (et qu'il n'y a que des
|
||||
* personnes de confiance sur cette IP), alors vous pouvez vous ajouter ici.
|
||||
* Ainsi, vous pourrez toujours vous connecter même si vous vous bannissez
|
||||
* accidentellement.
|
||||
*/
|
||||
|
||||
/* except ban vous protège des KLINE et ZLINE */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
// vous pouvez ajouter d'autres lignes mask à la suite
|
||||
}
|
||||
|
||||
/* except ban avec le type 'all' vous protège des GLINE, GZLINE, QLINE, SHUN */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
type all;
|
||||
}
|
||||
|
||||
/* Avec un bloc deny dcc vous pouvez interdire des noms de fichiers dans
|
||||
* les échanges DCC
|
||||
*/
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Possible virus Sub7";
|
||||
}
|
||||
|
||||
/* deny channel vous permet d'interdire des masques de noms de salons */
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Le warez est illegal";
|
||||
class "clients";
|
||||
}
|
||||
|
||||
/* Les VHosts (Virtual Hosts - Hôtes Virtuels) permettent aux utilisateurs
|
||||
* d'avoir un nom d'hôte différent.
|
||||
* Voir https://www.unrealircd.org/docs/Vhost_block
|
||||
*/
|
||||
|
||||
/* Vhost d'exemple. Sur IRC, entrez /VHOST test test
|
||||
* NOTE : seuls les utilisateurs avec un nom d'hôte 'unrealircd.com'
|
||||
* peuvent l'utiliser, donc modifiez vhost::mask avant de tester.
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
mask *@unrealircd.com;
|
||||
login "test";
|
||||
password "test";
|
||||
}
|
||||
|
||||
/* Vous pouvez inclure d'autres fichiers de configuration */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Configuration du réseau */
|
||||
set {
|
||||
network-name "ExampleNET";
|
||||
default-server "irc.example.org";
|
||||
services-server "services.example.org";
|
||||
stats-server "stats.example.org";
|
||||
help-channel "#Help";
|
||||
hiddenhost-prefix "Clk";
|
||||
prefix-quit "Quit";
|
||||
|
||||
/* Les clés de cloaking doivent être identiques sur tous les serveurs
|
||||
* d'un réseau. Elles sont utilisées pour générer les noms d'hôtes
|
||||
* masqués et doivent être gardées secrètes. Les clés doivent être
|
||||
* 3 chaînes de 5 à 100 caractères aléatoires (entre 10 et 20 suffisent)
|
||||
* et ne comporter que des minuscules (a-z), des majuscules (A-Z) et des
|
||||
* chiffres (0-9). (voir l'exemple)
|
||||
* NB : sur *NIX, vous pouvez exécuter './unreal gencloak' sur votre
|
||||
* serveur pour que Unreal génère 3 clés aléatoires pour vous.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"et une autre";
|
||||
"et une troisième";
|
||||
}
|
||||
}
|
||||
|
||||
/* Configuration spécifique au serveur */
|
||||
|
||||
set {
|
||||
kline-address "indiquez.une.adresse.email"; /* e-mail ou URL indiquée lorsqu'un utilisateur est banni */
|
||||
modes-on-connect "+ixw"; /* modes utilisateur ajoutés lorsqu'un utilisateur se connecte */
|
||||
modes-on-oper "+xws"; /* modes utilisateur ajoutés lorsqu'un utilisateur devient IRCOp */
|
||||
oper-auto-join "#opers"; /* salon que les IRCOps joignent automatiquement */
|
||||
options {
|
||||
hide-ulines; /* cacher les U-lines de /MAP et /LINKS */
|
||||
show-connect-info; /* afficher les messages "looking up your hostname" à la connexion */
|
||||
}
|
||||
|
||||
maxchannelsperuser 10; /* nombre max de salons par utilisateur */
|
||||
|
||||
/* Temps minimum qu'un utilisateur doit rester connecter avant de pouvoir
|
||||
* utiliser un message de QUIT. Le but est pour réduire le spam.
|
||||
*/
|
||||
anti-spam-quit-message-time 10s;
|
||||
|
||||
/* Ou indiquez un message de QUIT constant, ce qui fait que les raisons
|
||||
* de /QUIT sont ignorées.
|
||||
*/
|
||||
/* static-quit "Le client a quitté"; */
|
||||
|
||||
/* static-part fait la même chose pour /PART */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Protections anti-flood.
|
||||
* Voir: https://www.unrealircd.org/docs/Set_block#set::anti-flood
|
||||
*/
|
||||
anti-flood {
|
||||
}
|
||||
|
||||
/* Paramètres de Spamfilter */
|
||||
spamfilter {
|
||||
ban-time 1d; /* durée par défaut des bans *LINE ajoutés par spamfilter */
|
||||
ban-reason "Spam/Publicité"; /* raison par defaut */
|
||||
virus-help-channel "#help"; /* salon par défaut pour l'action 'viruschan' */
|
||||
/* except "#help"; salon à exempter de Spamfilter */
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Un problème ou besoin d'aide supplémentaire ?
|
||||
* 1) https://www.unrealircd.org/docs/UnrealIRCd_4_documentation/fr
|
||||
* 2) https://www.unrealircd.org/docs/FAQ <- répond à 80% des questions !
|
||||
* 3) Si vous avez toujours des problèmes, vous pouvez aller sur
|
||||
* irc.unrealircd.org #unreal-support,
|
||||
* mais nous exigeons que vous lisiez LA DOCUMENTATION et la FAQ d'abord !
|
||||
*/
|
||||
@@ -1,504 +0,0 @@
|
||||
/* UnrealIRCd 5 için yapılandırma dosyası
|
||||
* Türkçe Çeviri: Diablo - (Serkan Sepetçi)
|
||||
* İletişim: irc.trirc.com:6667 - diablo@unrealircd.org
|
||||
*
|
||||
* Biz buna basit bir 'unrealircd.conf' dosyası diyoruz.
|
||||
* Bu dosyası satır satır editleyip conf/ dizinine kopyalayınız. (düzenleyin!)
|
||||
*
|
||||
* Önemli: Satırların hepsi, açılış başına { satır sonuna ;
|
||||
* }; dahil edin. Bu çok önemli, eğer siz ayrıştırıcıyı ;
|
||||
* eksik koyarsanız yapılandırma dosyası hata verecek
|
||||
* ve dosya doğru işlemde olmayacaktır!
|
||||
* Bu sizin UnrealIRCd yapılandırması ile ilk deneyiminiz ise
|
||||
* dosyayı okumanız için birkaç dakika ayırmanızı öneniriz,
|
||||
* bu size bilgi edinmeniz açısından yardımcı olacaktır:
|
||||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||||
*
|
||||
* UnrealIRCd 5 belgeleme (çok geniş!):
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_5_documentation
|
||||
*
|
||||
* Sıkça Sorulan Sorular:
|
||||
* https://www.unrealircd.org/docs/FAQ
|
||||
*
|
||||
*/
|
||||
|
||||
/* Bu bir açıklamadır, burada tüm metin göz ardı edilir (açıklama tipi #1) */
|
||||
// Bu da bir açıklamadır, bu satır göz ardı edilir (açıklama tipi #2)
|
||||
# Bu da bir açıklamadır, bu satır yine göz ardı edilir (açıklama tipi #3)
|
||||
|
||||
/* UnrealIRCd yoğun modul kullanımını kolaylaştırır. UnrealIRCd'de
|
||||
* etkinleştirmek istediğiniz özellikleri tamamen moduller ile aktif edebilirsiniz.
|
||||
* Görmek için; https://www.unrealircd.org/docs/Modules
|
||||
*
|
||||
* Biz 'modules.default.conf' dosyasını okumak için IRCd talimatı altında kullanarak
|
||||
* UnrealIRCd ile birlikte gelen 150'den fazla modülleri yükleyecektir.
|
||||
* Başka bir deyişle: Bu sadece UnrealIRCd'de mevcut tüm özelliklerini yükleyecektir.
|
||||
* İlk kez UnrealIRCd kuruyorsanız size bunu kullanmanızı öneririz.
|
||||
* UnrealIRCd'yi ilk kez kuruyorsanız bunu kullanmanızı öneririz.
|
||||
* Daha sonra her şey hazır olduğunda ve çalışıyorsa (eğer isterseniz)
|
||||
* listeyi özelleştirmek için geri dönebilirsiniz.
|
||||
*/
|
||||
include "modules.default.conf";
|
||||
|
||||
/* Şimdi de diğer bazı dosyaları dahil edelim:
|
||||
* - help/help.conf /HELPOP sistemi
|
||||
* - badwords.conf kanal ve kullanıcı modu için +G
|
||||
* - spamfilter.conf için örnek olarak spamfilter kullanımı
|
||||
* - operclass.default.conf oper bloklarında kullanabileceğiniz
|
||||
* oper sınıflarını görüntüler.
|
||||
*/
|
||||
include "help/help.conf";
|
||||
include "badwords.conf";
|
||||
//include "spamfilter.conf";
|
||||
include "operclass.default.conf";
|
||||
|
||||
/* me { } bloğu genelde kim olduğumuzu belirtir.
|
||||
* Sunucumuz için isim, birkaç satır bazı bilgileri belirler "sid".
|
||||
* Sunucu kimliği (sid) iki basamağı veya harf tarafından izlenen bir rakam ile
|
||||
* başlamalıdır. Sid IRC ağı için benzersiz olmalıdır (her sunucu için
|
||||
* kendi sid olmalıdır).
|
||||
*/
|
||||
me {
|
||||
name "irc.example.org";
|
||||
info "ExampleNET Server";
|
||||
sid "001";
|
||||
}
|
||||
|
||||
/* admin { } bloğu /ADMIN sorgusunda kullanıcılara görüntülenecek metni belirler.
|
||||
* Normalde yöneticiye ulaşma konusunda bilgi içerir.
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"email@example.org";
|
||||
}
|
||||
|
||||
/* Kullanıcılar ve sunucular için class { } bloğu belirtilir.
|
||||
* Class blokları aşağıdaki işlemlerden oluşur:
|
||||
* - pingfreq: kullanıcı/sunucu için ping'ler arası zaman belirtir (saniyede)
|
||||
* - connfreq: sunucuya bağlanmaya çalıştığınızda tekrar için zaman belirtir (saniyede)
|
||||
* - sendq: bir bağlantı için maksimum veri boyutu
|
||||
* - recvq: bir bağlantı için maksimum alınan veri boyutu (flood kontrol)
|
||||
*/
|
||||
|
||||
/* Kullanıcılar için varsayılan class ayarları */
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 1000;
|
||||
sendq 200k;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* IRCOp'lar için varsaylan yüksek limitli özel class ayarları */
|
||||
class opers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 50;
|
||||
sendq 1M;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Sunucular için varsayılan class ayarları */
|
||||
class servers
|
||||
{
|
||||
pingfreq 60;
|
||||
connfreq 15; /* Her 15 saniyede bir bağlanmayı dener */
|
||||
maxclients 10; /* maksimum kullanıcı */
|
||||
sendq 5M;
|
||||
}
|
||||
|
||||
/* Allow blockları sunucunuza kimlerin bağlanabileceğini belirtir.
|
||||
* Bir sunucu şifresi eklenebilir veya belirlitilen bir IP adresi için
|
||||
* giriş izini verilebilir. Ayrıca IP başına ne kadar bağlantıya izin
|
||||
* verileceğini belirtir.
|
||||
* Görmeniz için: https://www.unrealircd.org/docs/Allow_block
|
||||
*/
|
||||
|
||||
/* IP başına sadece 5 bağlantı izini verir */
|
||||
allow {
|
||||
mask *;
|
||||
class clients;
|
||||
maxperip 3;
|
||||
}
|
||||
|
||||
/* Örnek olarak özel bir IP bloğu izini:
|
||||
* Bu IP bir şifre ile bağlantı yapması olduğunu gerektirir.
|
||||
* Şifre doğru ise o zaman bu IP 20 bağlantıya izin verecektir.
|
||||
*/
|
||||
allow {
|
||||
mask 192.0.2.1;
|
||||
class clients;
|
||||
password "somesecretpasswd";
|
||||
maxperip 20;
|
||||
}
|
||||
|
||||
/* Oper bloğu, IRC Operatorleri tanımlar.
|
||||
* IRC Operatörler, diğer kullanıcılara göre "ekstra haklara" sahip kullanıcılardır.
|
||||
* örneğin diğer kullanıcılara /KILL uygulayabilmesi, sunucu birleştirmesinin başlatılması,
|
||||
* /JOIN yaptığı odalardan banlansa bile tekrar giriş yapabilmesi, vs.
|
||||
*
|
||||
* IRCOp olmak ve nasıl Admin olunacağı hakkında daha fazla bilgi için
|
||||
* https://www.unrealircd.org/docs/IRCOp_guide
|
||||
*
|
||||
* Oper {} bloğunun kendisi ile ilgili ayrıntıları görmeniz için
|
||||
* https://www.unrealircd.org/docs/Oper_block
|
||||
*/
|
||||
|
||||
/* Örnek bir oper bloğu için 'bobsmith' ile şifresi 'test'.
|
||||
* Bunu değiştirmeniz GEREKİR!!
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
password "test";
|
||||
/* Oper izinleri bir "operclass 'bloğunda tanımlanır.
|
||||
* Görmeniz için: https://www.unrealircd.org/docs/Operclass_block
|
||||
* UnrealIRCd varsayılan bloklar makalesi için,
|
||||
* tam listesine bakınız. Buradan 'netadmin' seçiyoruz.
|
||||
*/
|
||||
operclass netadmin;
|
||||
swhois "is a Network Administrator";
|
||||
vhost netadmin.example.org;
|
||||
}
|
||||
|
||||
/* Listen blokları sunucu portu için gereken bağlantı noktalarını tanımlar.
|
||||
* Diğer bir deyişle: Bu portlar kullanıcılar ve serverlar için
|
||||
* sunucuya bağlantı kurmasını sağlar.
|
||||
*
|
||||
* Kullanımı:
|
||||
* listen
|
||||
* {
|
||||
* ip <ip numarası>;
|
||||
* port <port numarası>;
|
||||
* options {
|
||||
* <seçenekler....>;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
/* Standard IRC port 6667 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6667;
|
||||
}
|
||||
|
||||
/* Standard IRC SSL/TLS port 6697 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6697;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Özel SSL/TLS sadece sunucuları bağlamak için port */
|
||||
listen {
|
||||
ip *;
|
||||
port 6900;
|
||||
options { tls; serversonly; }
|
||||
}
|
||||
|
||||
/* DiKKAT: Eğer bir çok IP barındıran bir IRCd Shell kullanıyorsanız
|
||||
* logunuzda olası 'Address already in use' hatasını alacaksınız
|
||||
* ve ircd başlamayacaktır.
|
||||
* Bunun anlamı '*' yerine belirli bir IP yazmanız GEREKİR anlamına gelir:
|
||||
* listen 1.2.3.4:6667;
|
||||
* Açıkçası, IP yi önceden koyduğunuz IP ile değiştirin.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Link blockları bir ağ oluşturmak için birden fazla sunucu bağlamaya izin verir.
|
||||
* Görmek için: https://www.unrealircd.org/docs/Tutorial:_Linking_servers
|
||||
*/
|
||||
link hub.example.org
|
||||
{
|
||||
incoming {
|
||||
mask *@something;
|
||||
}
|
||||
|
||||
outgoing {
|
||||
bind-ip *; /* veya açıkça bir IP */
|
||||
hostname hub.example.org;
|
||||
port 6900;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Kimlik doğrulaması için diğer sunucunun SPKI parmak izini kullanıyoruz.
|
||||
* Kullanmamız için diğer tarafda './unrealircd spkifp' uygulayıp çalıştırıyoruz.
|
||||
*/
|
||||
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* Servis'ler için bağlantı bloğu genellikle çok daha basittir.
|
||||
* Servis'lerin ne olduğu hakkında daha fazla bilgi için,
|
||||
* https://www.unrealircd.org/docs/Services
|
||||
*/
|
||||
link services.example.org
|
||||
{
|
||||
incoming {
|
||||
mask 127.0.0.1;
|
||||
}
|
||||
|
||||
password "changemeplease";
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* U-lines satırları sunuculara daha güç/komut kazandırır.
|
||||
* Eğer hizmetlerini kullanmak istiyorsanız onları buraya eklemeniz gerekir.
|
||||
* ASLA buraya (normal) UnrealIRCd sunucunun adını yazmayınız!!!
|
||||
*/
|
||||
ulines {
|
||||
services.example.org;
|
||||
}
|
||||
|
||||
/* Bu blok /DIE ve /RESTART için şifre tanımlamanızı sağlar. Sadece IRCOp'lar içindir.
|
||||
* Bu genelde kazara sunucuyu yeniden başlatma ve kapanmasına karşı biraz
|
||||
* koruma sağlamak içindir.
|
||||
*/
|
||||
drpass {
|
||||
restart "restart";
|
||||
die "die";
|
||||
}
|
||||
|
||||
/* Bu log bloğu hangi dosyaya ve nelerin olması gerektiğini tanımlar.
|
||||
* Görmeniz için: https://www.unrealircd.org/docs/Log_block
|
||||
*/
|
||||
|
||||
/* Varsayılan ayarlar, neredeyse her şeyi kaydedecektir */
|
||||
log "ircd.log" {
|
||||
flags {
|
||||
oper;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
tkl;
|
||||
spamfilter;
|
||||
}
|
||||
}
|
||||
|
||||
/* Bazı kullanıcılara veya botlara bir mesaj göndermek için "aliases"
|
||||
* takma ad oluşturmanızı sağlar. Genellikle servisler için kullanılır.
|
||||
*
|
||||
* Biz önceden ayarlanmış bir takma adı dosyaları dizini oluşturduk, alias/ dizini kontrol ediniz.
|
||||
* Örnek olarak, burada anope servisler ve kullanılan tüm diğer servisler adları bulunmaktadır.
|
||||
*/
|
||||
include "aliases/anope.conf";
|
||||
|
||||
/* Ban nick bloğu bir nickin sunucuda kullanımını yasaklamanıza olanak sağlar */
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Servisler için ayrılmış";
|
||||
}
|
||||
|
||||
/* Ban ip.
|
||||
* Normalde bunun için /KLINE, /GLINE ve /ZLINE kullanıldığını unutmayınız.
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Senden nefret ediyorum";
|
||||
}
|
||||
|
||||
/* Ban server - bir sunucunun bağlanmasını devredışı kılar */
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Defol git buradan.";
|
||||
}
|
||||
|
||||
/* Ban user - normalde /KLINE veya /GLINE kullanıldığını unutmayınız */
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Salak";
|
||||
}
|
||||
|
||||
/* Ban realname bloğu bir kullanıcıyı, GECOS kısmı esas alınarak
|
||||
* banlamanıza olanak sağlar.
|
||||
*/
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
}
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
}
|
||||
|
||||
/* Ban ve TKL istisnaları. Kullanıcıları / makineleri gözetmeksizin
|
||||
* KLINE, GLINE, gibi banlardan muaf tutmanıza olanak sağlar.
|
||||
* Eğer statik IP (ve bu IP üzerinde güvenilmeyen kişiler) ile bir IRCOp
|
||||
* iseniz o zaman kendinizi burada eklemenizi öneririz. Yanlışlıkla kendinize
|
||||
* bir *LINE ban koyarsanız bile yinede muaf tutulacaksınız.
|
||||
*/
|
||||
|
||||
/* except ban bloğu, sizi KLINE ve ZLINE gibi banlardan koruyacaktır */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
// burada daha fazla mask girdileri ekleyebilirsiniz..
|
||||
}
|
||||
|
||||
/* except ban bloğu, sizi 'tüm' GLINE, GZLINE, QLINE, SHUN gibi banlardan koruyacaktır */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
type all;
|
||||
}
|
||||
|
||||
/* Deny dcc bloğu, sunucu üzerinden DCC yoluyla dosya gönderilmesine izin vermeyecektir */
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Olası Sub7 Virüsü";
|
||||
}
|
||||
|
||||
/* Deny channel bloğu, kullanıcıların belirtilen kanallara girmesini engeller */
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez is illegal";
|
||||
class "clients";
|
||||
}
|
||||
|
||||
/* VHosts (Virtual Hosts) bloğu, kullanıcının yeni bir host alabilmesine olanak sağlar.
|
||||
* Görmeniz için; https://www.unrealircd.org/docs/Vhost_block
|
||||
*/
|
||||
|
||||
/* Kullanabileceğiniz örnek vhost. IRC tipi: /VHOST test test
|
||||
* DiKKAT: Güvenlik açısından aşağıdaki vhost::mask yönergesinde
|
||||
* maske 'unrealircd.com' olarak belirlenmiştir.
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
mask *@unrealircd.com;
|
||||
login "test";
|
||||
password "test";
|
||||
}
|
||||
|
||||
/* Blacklist blokları, bir kullanıcı bağlandığında IP adresinin drone saldırılarına
|
||||
* neden olduğunu, bilinen bir saldırıya uğramış bir makine olup olmadığını görmek
|
||||
* için harici bir DNS Kara Liste hizmetinden sorgulayacaktır.
|
||||
* Belgeleme: https://www.unrealircd.org/docs/Blacklist_block
|
||||
* veya aşağıdaki bloklar satırına bakınız.
|
||||
*/
|
||||
|
||||
/* DroneBL, muhtemelen IRC Sunucuları tarafından kullanılan en popüler kara liste.
|
||||
* Belgeler ve cevap (reply) tiplerin anlamlarını görmek için https://dronebl.org/
|
||||
* adresine bakınız. Bu zamanda aşağıdaki cevap (reply) tiplerini kullanıyoruz:
|
||||
* 3: IRC Drone, 5: Bottler, 6: Unknown spambot or drone,
|
||||
* 7: DDoS Drone, 8: SOCKS Proxy, 9: HTTP Proxy, 10: ProxyChain,
|
||||
* 11: Web Page Proxy, 12: Open DNS Resolver, 13: Brute force attackers,
|
||||
* 14: Open Wingate Proxy, 15: Compromised router / gateway,
|
||||
* 16: Autorooting worms.
|
||||
*/
|
||||
blacklist dronebl {
|
||||
dns {
|
||||
name dnsbl.dronebl.org;
|
||||
type record;
|
||||
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone belirlendi. Ayrıntılar için https://dronebl.org/lookup?ip=$ip adresine bakınız.";
|
||||
}
|
||||
|
||||
/* EFnetRBL, belgeler ve cevap (reply) tiplerini görmek için https://rbl.efnetrbl.org/
|
||||
* adresine bakınız.
|
||||
* Yazma sırasında: 1 is open proxy, 4 is TOR, 5 is drones/flooding.
|
||||
*
|
||||
* NOT: Sunucunuzda TOR proxy'lerine izin vermek istiyorsanız,
|
||||
* cevap (reply) tiplerinden '4;' öğesini kaldırmanız gerekiyor.
|
||||
*/
|
||||
blacklist efnetrbl {
|
||||
dns {
|
||||
name rbl.efnetrbl.org;
|
||||
type record;
|
||||
reply { 1; 4; 5; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone/TOR belirlendi. Ayrıntılar için https://rbl.efnetrbl.org/?i=$ip adresine bakınız.";
|
||||
}
|
||||
|
||||
/* Diğer yapılandırma dosyalarını dahil edebilirsiniz */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Ağ yapılandırması */
|
||||
set {
|
||||
network-name "ExampleNET";
|
||||
default-server "irc.example.org";
|
||||
services-server "services.example.org";
|
||||
stats-server "stats.example.org";
|
||||
help-channel "#Help";
|
||||
hiddenhost-prefix "Clk";
|
||||
prefix-quit "Quit";
|
||||
|
||||
/* Gizleme anahtarları ağ üzerindeki bütün sunucularda aynı olmalı.
|
||||
* Bu anahtarlar maskeli hostlar yaratmak ve bunları saklamak için kullanılır.
|
||||
* Anahtarlar 5-100 karakterlik (10-20 karakter yeterli) 3 rastgele diziden oluşmalı ve
|
||||
* küçük harf (a-z), büyük harf (A-Z) ve rakamlardan (0-9) meydana gelmelidirler.. [ilk örneğe bakınız].
|
||||
* IPUCU: './unreal gencloak' Unreal sizin için rastgele 3 adet dizin oluşturur.
|
||||
* Bunu NIX üzerinde çalıştırabilirsiniz.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"ve diğeri";
|
||||
"ve diğeri";
|
||||
}
|
||||
}
|
||||
|
||||
/* Sunucunun kendine özgü yapılandırması */
|
||||
|
||||
set {
|
||||
kline-address "set.this.to.email.address"; /* bir kullanıcı banlandığında e-mail yada URL satırı gösterir */
|
||||
modes-on-connect "+ixw"; /* kullanıcılar bağlandığında, bu modları alacaktır */
|
||||
modes-on-oper "+xws"; /* Birisi IRC Operatör olduğunda bu modları alacaktır */
|
||||
oper-auto-join "#opers"; /* IRCoplar bu kanala otomatik olarak giriş yapacaktır */
|
||||
options {
|
||||
hide-ulines; /* U-lines satırları /MAP ve /LINKS komutunda gözükmez */
|
||||
show-connect-info; /* sunucuya bağlanırken "looking up your hostname" mesajı görüntülenecektir */
|
||||
}
|
||||
|
||||
maxchannelsperuser 10; /* bir kullanıcının maksimum girebileceği kanal sayısı */
|
||||
|
||||
/* QUIT mesajının görüntülenebilmesi için, bir kullanıcının sunucuya bağlı kalması
|
||||
* gereken süre. Bu durum umarım spamları durdurmak için yardımcı olacaktır.
|
||||
*/
|
||||
anti-spam-quit-message-time 10s;
|
||||
|
||||
/* Kullanıcı sunucudan ayrılırken çıkış sebebini sabitler. /QUIT sebeb gözardı edilecektir. */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* static-part /PART komutu ile aynı işi görür */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Anti flood Koruması
|
||||
* Görmeniz için: https://www.unrealircd.org/docs/Set_block#set::anti-flood
|
||||
*/
|
||||
anti-flood {
|
||||
}
|
||||
|
||||
/* Spam filter Ayarları */
|
||||
spamfilter {
|
||||
ban-time 1d; /* varsayılan spamfilter tarafından ban süresini belirtir */
|
||||
ban-reason "Spam/Advertising"; /* varsayılan sebep */
|
||||
virus-help-channel "#help"; /* 'viruschan' eylemi için kullanılacak kanal */
|
||||
/* except "#help"; Spamfilter'den muaf tutulacak kanal */
|
||||
}
|
||||
}
|
||||
/* Son olarak, bir MOTD (Günün Mesajı) oluşturabilirsiniz, bu
|
||||
* conf/ dizininde 'ircd.motd' metin dosyası oluşturarak yapabilirsiniz.
|
||||
* Bu dosyanın içeriği bağlantı kuran kullanıcılara gösterilecektir.
|
||||
* Daha fazla bilgi için https://www.unrealircd.org/docs/MOTD_and_Rules bölümünü inceleyiniz.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Sorununuza veya daha fazla yardımamı ihtiyacınız var?
|
||||
* 1) https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
|
||||
* 2) https://www.unrealircd.org/docs/FAQ <- sorularınızın %80 ini kapsamakta!
|
||||
* 3) Eğer probleminiz hala devam ediyorsa:
|
||||
* - Forums: https://forums.unrealircd.org/
|
||||
* - IRC: irc.unrealircd.org (SSL on port 6697) / #unreal-support
|
||||
* İlk önce Dökümantasyon ve FAQ kısmını okumanızı gerektirdiğini unutmayın!
|
||||
*/
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,237 +0,0 @@
|
||||
/* This file will load (nearly) all modules available on UnrealIRCd.
|
||||
* So all commands, channel modes, user modes, etc..
|
||||
*
|
||||
* If you want to have all UnrealIRCd functionality, then include this
|
||||
* file from your unrealircd.conf by using:
|
||||
* include "modules.default.conf";
|
||||
*
|
||||
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
|
||||
* If you want to customize the modules to load you have two options:
|
||||
* 1) Keep the include for modules.default.conf as usual and make use
|
||||
* of blacklist-module "xyz"; to selectively disable modules.
|
||||
* See https://www.unrealircd.org/docs/Blacklist-module_directive
|
||||
* 2) OR, make a copy of this file (eg: name it modules.custom.conf)
|
||||
* and edit it. Then include that file from your unrealircd.conf
|
||||
* instead of this one.
|
||||
* The downside of option #2 is that you will need to track changes
|
||||
* in the original modules.default.conf with each new UnrealIRCd
|
||||
* release to make sure you don't miss any new functionality (as new
|
||||
* important modules may be added you need to add them to your conf).
|
||||
* You don't have this problem with option #1.
|
||||
*/
|
||||
|
||||
/*** Cloaking (for user mode +x) ***/
|
||||
loadmodule "cloak";
|
||||
|
||||
|
||||
/*** Commands ***/
|
||||
|
||||
// User commands (MINIMAL)
|
||||
// These provide just the minimal set of IRC commands that are
|
||||
// required by RFC1459 along with WATCH and MAP.
|
||||
loadmodule "admin";
|
||||
loadmodule "away";
|
||||
loadmodule "invite";
|
||||
loadmodule "ison";
|
||||
loadmodule "join";
|
||||
loadmodule "kick";
|
||||
loadmodule "links";
|
||||
loadmodule "list";
|
||||
loadmodule "lusers";
|
||||
loadmodule "map";
|
||||
loadmodule "message";
|
||||
loadmodule "mode";
|
||||
loadmodule "motd";
|
||||
loadmodule "names";
|
||||
loadmodule "nick";
|
||||
loadmodule "part";
|
||||
loadmodule "pass";
|
||||
loadmodule "pingpong";
|
||||
loadmodule "protoctl";
|
||||
loadmodule "quit";
|
||||
loadmodule "rules";
|
||||
loadmodule "topic";
|
||||
loadmodule "user";
|
||||
loadmodule "userhost";
|
||||
loadmodule "watch";
|
||||
loadmodule "whox";
|
||||
loadmodule "whois";
|
||||
loadmodule "whowas";
|
||||
|
||||
// User commands (EXTENDED)
|
||||
// These are commands that provide extended functionality.
|
||||
loadmodule "botmotd";
|
||||
loadmodule "cap";
|
||||
loadmodule "cycle";
|
||||
loadmodule "dccallow";
|
||||
loadmodule "help";
|
||||
loadmodule "knock";
|
||||
loadmodule "lag";
|
||||
loadmodule "sasl";
|
||||
loadmodule "setname";
|
||||
loadmodule "silence";
|
||||
loadmodule "starttls";
|
||||
loadmodule "time";
|
||||
loadmodule "userip";
|
||||
loadmodule "vhost";
|
||||
loadmodule "history";
|
||||
|
||||
// IRC Operator commands
|
||||
// Note: several of these like kill are also server-to-server commands
|
||||
// which are required if you link to other servers.
|
||||
loadmodule "addmotd";
|
||||
loadmodule "addomotd";
|
||||
loadmodule "chghost";
|
||||
loadmodule "chgident";
|
||||
loadmodule "chgname";
|
||||
loadmodule "close";
|
||||
loadmodule "connect";
|
||||
loadmodule "squit";
|
||||
loadmodule "dccdeny";
|
||||
loadmodule "globops";
|
||||
loadmodule "kill"; /* also server-to-server */
|
||||
loadmodule "locops";
|
||||
loadmodule "mkpasswd";
|
||||
loadmodule "oper";
|
||||
loadmodule "opermotd";
|
||||
loadmodule "sajoin";
|
||||
loadmodule "samode";
|
||||
loadmodule "sapart";
|
||||
loadmodule "sdesc";
|
||||
loadmodule "sethost";
|
||||
loadmodule "setident";
|
||||
loadmodule "stats";
|
||||
loadmodule "tkl"; /* also server-to-server */
|
||||
loadmodule "trace";
|
||||
loadmodule "tsctl";
|
||||
loadmodule "unsqline";
|
||||
loadmodule "wallops";
|
||||
loadmodule "jumpserver";
|
||||
|
||||
// Server-to-server commands
|
||||
// Don't remove these, unless you never link to other servers.
|
||||
loadmodule "eos";
|
||||
loadmodule "md";
|
||||
loadmodule "netinfo";
|
||||
loadmodule "server";
|
||||
loadmodule "sjoin";
|
||||
loadmodule "sqline";
|
||||
loadmodule "swhois";
|
||||
loadmodule "umode2";
|
||||
loadmodule "sinfo";
|
||||
loadmodule "require-module";
|
||||
|
||||
// Services commands
|
||||
// You could disable these if you don't use Services
|
||||
// https://www.unrealircd.org/docs/Services
|
||||
loadmodule "sendsno";
|
||||
loadmodule "sendumode";
|
||||
loadmodule "svsjoin";
|
||||
loadmodule "svskill";
|
||||
loadmodule "svslusers";
|
||||
loadmodule "svsmode";
|
||||
loadmodule "svsmotd";
|
||||
loadmodule "svsnick";
|
||||
loadmodule "svsnline";
|
||||
loadmodule "svsnolag";
|
||||
loadmodule "svsnoop";
|
||||
loadmodule "svspart";
|
||||
loadmodule "svssilence";
|
||||
loadmodule "svssno";
|
||||
loadmodule "svswatch";
|
||||
|
||||
|
||||
/*** Channel modes ***/
|
||||
loadmodule "chanmodes/floodprot"; /* +f */
|
||||
loadmodule "chanmodes/nocolor"; /* +c */
|
||||
loadmodule "chanmodes/noctcp"; /* +C */
|
||||
loadmodule "chanmodes/stripcolor"; /* +S */
|
||||
loadmodule "chanmodes/issecure"; /* +Z */
|
||||
loadmodule "chanmodes/permanent"; /* +P */
|
||||
loadmodule "chanmodes/link"; /* +L */
|
||||
loadmodule "chanmodes/censor"; /* +G */
|
||||
loadmodule "chanmodes/delayjoin"; /* +D */
|
||||
loadmodule "chanmodes/noknock"; /* +K */
|
||||
loadmodule "chanmodes/noinvite"; /* +V */
|
||||
loadmodule "chanmodes/operonly"; /* +O */
|
||||
loadmodule "chanmodes/nonotice"; /* +T */
|
||||
loadmodule "chanmodes/regonly"; /* +R */
|
||||
loadmodule "chanmodes/nonickchange"; /* +N */
|
||||
loadmodule "chanmodes/nokick"; /* +Q */
|
||||
loadmodule "chanmodes/regonlyspeak"; /* +M */
|
||||
loadmodule "chanmodes/secureonly"; /* +z */
|
||||
loadmodule "chanmodes/history"; /* +H */
|
||||
|
||||
|
||||
/*** User modes ***/
|
||||
loadmodule "usermodes/bot"; /* +B (mark yourself as a bot) */
|
||||
loadmodule "usermodes/servicebot"; /* +S (service bot) */
|
||||
loadmodule "usermodes/noctcp"; /* +T (block CTCP's) */
|
||||
loadmodule "usermodes/censor"; /* +G (censor bad words) */
|
||||
loadmodule "usermodes/showwhois"; /* +W (show if someone does /WHOIS) */
|
||||
loadmodule "usermodes/privacy"; /* +p (privacy, hide channels in /WHOIS) */
|
||||
loadmodule "usermodes/nokick"; /* +q (unkickable oper) */
|
||||
loadmodule "usermodes/regonlymsg"; /* +R (only registered users may private message you) */
|
||||
loadmodule "usermodes/secureonlymsg"; /* +Z (only SSL/TLS users may private message you) */
|
||||
loadmodule "usermodes/privdeaf"; /* +D (don't let other user PM you) */
|
||||
|
||||
|
||||
/*** Server notice masks */
|
||||
loadmodule "snomasks/dccreject"; /* +D (rejected DCC's) */
|
||||
|
||||
|
||||
/*** Extended Bans ***/
|
||||
loadmodule "extbans/join"; /* +b ~j (prevent only joins) */
|
||||
loadmodule "extbans/quiet"; /* +b ~q (prevent only messaging) */
|
||||
loadmodule "extbans/nickchange"; /* +b ~n (prevent only nick changes) */
|
||||
loadmodule "extbans/realname"; /* +b ~r (ban by real name) */
|
||||
loadmodule "extbans/account"; /* +b ~a (ban/exempt if logged in with services account) */
|
||||
loadmodule "extbans/inchannel"; /* +b ~c (ban/exempt if in channel) */
|
||||
loadmodule "extbans/operclass"; /* +b ~O (ban/exempt by operclass) */
|
||||
loadmodule "extbans/certfp"; /* +b ~S (ban/exempt by certfp) */
|
||||
loadmodule "extbans/textban"; /* +b ~T (censor or block text) */
|
||||
loadmodule "extbans/msgbypass"; /* +e ~m (bypass message restrictions) */
|
||||
loadmodule "extbans/timedban"; /* +b ~t (timed bans / temporary bans) */
|
||||
loadmodule "extbans/partmsg"; /* +b ~p (hide part/quit message) */
|
||||
loadmodule "extbans/securitygroup"; /* +b ~G (security group) */
|
||||
|
||||
|
||||
/** IRCv3 extensions */
|
||||
loadmodule "account-notify"; /* send ACCOUNT message upon services account login */
|
||||
loadmodule "message-tags"; /* add tags to messages, required for various IRCv3 features */
|
||||
loadmodule "batch"; /* also required for several IRCv3 features */
|
||||
loadmodule "server-time"; /* adds server timestamp to various messages */
|
||||
loadmodule "message-ids"; /* adds unique msgid to various messages */
|
||||
loadmodule "account-tag"; /* adds services account information to messages */
|
||||
loadmodule "echo-message"; /* shows clients if their messages are altered/filtered */
|
||||
loadmodule "labeled-response"; /* correlate requests and responses easily */
|
||||
loadmodule "bot-tag"; /* indicate the message comes from a bot (draft/bot) */
|
||||
loadmodule "typing-indicator"; /* typing indicator in PM and channels (+typing) */
|
||||
loadmodule "reply-tag"; /* indicate to which message you are responding (+draft/reply) */
|
||||
loadmodule "clienttagdeny"; /* informs clients about supported client-only message tags */
|
||||
loadmodule "sts"; /* strict transport policy (set::tls::sts-policy) */
|
||||
loadmodule "link-security"; /* link-security announce */
|
||||
loadmodule "plaintext-policy"; /* plaintext-policy announce */
|
||||
loadmodule "chathistory"; /* CHATHISTORY client command, 005 and a CAP (draft) */
|
||||
|
||||
|
||||
/*** Other ***/
|
||||
// These are modules that don't fit in any of the previous sections
|
||||
loadmodule "ident_lookup"; /* Ident lookups if set::options::identd-check is set*/
|
||||
loadmodule "certfp"; /* SSL/TLS certificate fingerprint in /WHOIS (& more) */
|
||||
loadmodule "tls_antidos"; /* prevent TLS DoS (renegotiate floods) */
|
||||
loadmodule "webirc"; /* WEBIRC command. See webirc block. */
|
||||
loadmodule "blacklist"; /* Blacklist support (DNSBL). See blacklist block. */
|
||||
loadmodule "jointhrottle"; /* set::anti-flood::join-flood (previously chanmode +j) */
|
||||
loadmodule "charsys"; /* Provides set::allowed-nickchars (must always be loaded!) */
|
||||
loadmodule "authprompt"; /* Authentication prompt, see set::authentication-prompt */
|
||||
loadmodule "history_backend_mem"; /* History storage backend (used by chanmodes/history) */
|
||||
loadmodule "tkldb"; /* Write TKLines to .db file */
|
||||
loadmodule "channeldb"; /* Write channel settings to .db file (+P channels only) */
|
||||
loadmodule "rmtkl"; /* Easily remove *-Lines in bulk with /RMTKL */
|
||||
loadmodule "restrict-commands"; /* Provides set::restrict-commands settings */
|
||||
loadmodule "reputation"; /* used by Connthrottle and others, see next */
|
||||
loadmodule "connthrottle"; /* see https://www.unrealircd.org/docs/Connthrottle */
|
||||
loadmodule "userip-tag"; /* unrealircd.org/userip tag for ircops */
|
||||
loadmodule "userhost-tag"; /* unrealircd.org/userhost tag for ircops */
|
||||
loadmodule "targetfloodprot"; /* set::anti-flood::target-flood protection */
|
||||
@@ -1,183 +0,0 @@
|
||||
/* This file will load all optional modules. These are features that
|
||||
* not everyone will use or are considered experimental.
|
||||
* You can include this file from your unrealircd.conf like this:
|
||||
* include "modules.optional.conf";
|
||||
* OR... and this is probably a better idea... you can copy-paste it
|
||||
* to another file where you do your own customizations.
|
||||
*
|
||||
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
|
||||
* If you want to customize, make a copy of this file (for example
|
||||
* name it modules.custom.conf) and edit it.
|
||||
* Then include that file from your unrealircd.conf instead of this one.
|
||||
*/
|
||||
|
||||
/*** Commands ***/
|
||||
|
||||
// This add the /IRCOPS command: A more visual way for users
|
||||
// to see which IRCOps are online.
|
||||
loadmodule "ircops";
|
||||
|
||||
// This adds the /STAFF command: This command simply displays
|
||||
// a text file that you can configure here:
|
||||
loadmodule "staff";
|
||||
set { staff-file "network.staff"; }
|
||||
|
||||
|
||||
/*** Channel modes ***/
|
||||
|
||||
// The following module ('nocodes') is not a true channel mode.
|
||||
// It simply enhances the existing channel mode +S/+c to include
|
||||
// stripping/blocking of bold, underline and italic text.
|
||||
loadmodule "nocodes";
|
||||
|
||||
|
||||
/*** Other ***/
|
||||
|
||||
// The hideserver module will hide /MAP and /LINKS to regular users.
|
||||
// It does not truly enhance security as server names can still be
|
||||
// seen at other places.
|
||||
// Comment out the following line to enable this:
|
||||
// loadmodule "hideserver";
|
||||
|
||||
// The antirandom module will kill or *line users that have a nick,
|
||||
// ident and/or realname that is considered "random".
|
||||
// This helps to combat simple botnets/drones.
|
||||
// Note that failure to set the right settings may ban innocent users.
|
||||
// This is especially true if you are on a non-English network where
|
||||
// the module may consider a sequence of characters "random" even though
|
||||
// it is a perfectly pronounceable word in your language.
|
||||
loadmodule "antirandom";
|
||||
set {
|
||||
antirandom {
|
||||
/* THRESHOLD:
|
||||
* This is pretty much the most important setting of all.
|
||||
* For every randomly looking ident the user gets a certain amount of
|
||||
* 'points', if this value reaches 'threshold' then the appropriate
|
||||
* action is taken (killed, *lined, see later on).
|
||||
* lower = more randomly looking users will be catched (but also more
|
||||
* innocent users)
|
||||
* higher = less chance of innocent users getting killed, but also less
|
||||
* chance on bots getting catched.
|
||||
* <2: DON'T!!
|
||||
* 4: Works good, probably a few more innocent kills but if you got
|
||||
* quite a bot problem then this might be a useful setting.
|
||||
* 5: Works well with few innocent kills, probably good to begin with.
|
||||
* 6: If you want to be a tad more careful
|
||||
* >6: For the paranoid. Module can still be quite effective, though :)
|
||||
*/
|
||||
threshold 7;
|
||||
|
||||
/* BAN-ACTION:
|
||||
* Action to take whenever the user is catched as random, options:
|
||||
* warn, kill, gline, gzline, kline, zline, shun, tempshun
|
||||
*/
|
||||
ban-action kill;
|
||||
|
||||
/* BAN-TIME:
|
||||
* Time to ban the user (irrelevant for tempshun/kill).
|
||||
* Something between 1 hour and 2 days is recommended.
|
||||
* If you set it higher than 3 or 4 days then you get quite a risk
|
||||
* of catching innocent users due to dynamic IP, not to mention
|
||||
* your *line list gets filled up... so choose it wisely.
|
||||
*/
|
||||
ban-time 4h;
|
||||
|
||||
/* BAN-REASON:
|
||||
* The ban (or kill) reason to use.
|
||||
* You might want to put in an entry to a FAQ or an email address
|
||||
* where users can mail if they have been catched and don't know what to do.
|
||||
* NOTE: One of the various reasons that ""innocent users"" are catched is
|
||||
* if they just randomly type in info for their nick, ident, or realname.
|
||||
*/
|
||||
ban-reason "You look like a bot. Be sure to fill in your nick/ident/realname properly.";
|
||||
|
||||
/* CONVERT-TO-LOWERCASE:
|
||||
* Convert nicks, idents, and realnames to lowercase before doing random checks?
|
||||
* This has not been tested extensively for false positives, but might be (very)
|
||||
* helpful to catch GnStA5FYhiTH51TUkf style random nicks as random.
|
||||
* Enabled by default.
|
||||
*/
|
||||
convert-to-lowercase yes;
|
||||
|
||||
/* FULLSTATUS-ON-LOAD:
|
||||
* If enabled, then upon loading it will check all users that are currently
|
||||
* connected and give a status report about who it would have killed.
|
||||
* Note that it doesn't actually kill any currently connected users, it is for
|
||||
* informative purposes only.
|
||||
* This can be (very) useful if you use the module for the first time.
|
||||
* But you probably want to disable it after a while, since once the module
|
||||
* is actively dealing with randomly looking persons, it shouldn't report any
|
||||
* users anymore on load and then this check only eats useless CPU on /REHASH.
|
||||
* Enabled by default.
|
||||
*/
|
||||
fullstatus-on-load yes;
|
||||
|
||||
/* SHOW-FAILEDCONNECTS:
|
||||
* This will send out a notice whenever a randomly looking user has been catched
|
||||
* during connecting. Obviously this can be pretty noisy.
|
||||
* Especially recommended to enable during the first few days you use this module.
|
||||
*/
|
||||
show-failedconnects yes;
|
||||
|
||||
/* EXCEPT-HOSTS:
|
||||
* Hostmasks on this list are matched against the IP and hostname of the connecting
|
||||
* user. If it matches then we do not check if the nick/ident/realname is random.
|
||||
* NOTE: Use the REAL host or IP here, not any cloaked hosts!
|
||||
*/
|
||||
except-hosts {
|
||||
mask 192.168.0.0/16;
|
||||
mask 127.0.0.0/8;
|
||||
}
|
||||
|
||||
/* EXCEPT-WEBIRC:
|
||||
* This will make antirandom not check connections from WEBIRC gateways.
|
||||
* ( see https://www.unrealircd.org/docs/WebIRC_block )
|
||||
* It seems WEBIRC connections frequently cause false positives so the
|
||||
* default is 'yes'.
|
||||
*/
|
||||
except-webirc yes;
|
||||
}
|
||||
}
|
||||
|
||||
// This module will send a HTTP 301 redirect to any client which sends
|
||||
// a HTTP request to us. This is commented out by default:
|
||||
//loadmodule "webredir";
|
||||
//set {
|
||||
// webredir {
|
||||
// url "https://...";
|
||||
// }
|
||||
//}
|
||||
|
||||
// This adds websocket support. For more information, see:
|
||||
// https://www.unrealircd.org/docs/WebSocket_support
|
||||
loadmodule "websocket";
|
||||
|
||||
// This module will detect and stop spam containing of characters of
|
||||
// mixed "scripts", where (for example) some characters are in
|
||||
// Latin script and other characters are in Cyrillic script.
|
||||
loadmodule "antimixedutf8";
|
||||
set {
|
||||
antimixedutf8 {
|
||||
/* Take action at this 'score' (lower = more sensitive)
|
||||
*
|
||||
* A score of 2 or 3 will catch a lot but also
|
||||
* catch innocent users who are not using a pure
|
||||
* Latin script, such as Russian people who
|
||||
* commonly use a mix of Latin and Cyrillic.
|
||||
*
|
||||
* A score of 8 is a safe default.
|
||||
*/
|
||||
score 8;
|
||||
|
||||
/* Action to take, see:
|
||||
* https://www.unrealircd.org/docs/Actions
|
||||
*/
|
||||
ban-action block;
|
||||
|
||||
/* Block/kill/ban reason (sent to user) */
|
||||
ban-reason "Mixed character spam";
|
||||
|
||||
/* Duration of ban (does not apply to block/kill) */
|
||||
ban-time 4h; // For other types
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
#
|
||||
# This file contains the list of repositories that are used
|
||||
# by the './unrealircd module' command.
|
||||
# Note that 3rd party modules are NOT written by the UnrealIRCd team.
|
||||
# Use such modules at your own risk. In case of problems, contact
|
||||
# the module author. For more information, see:
|
||||
# https://www.unrealircd.org/docs/Module_manager
|
||||
#
|
||||
|
||||
#
|
||||
# This is the unrealircd-contrib repository which is added by default in
|
||||
# UnrealIRCd 5 to make it easy for users to install 3rd party modules.
|
||||
# If you are a module coder and want to add your module to this repository
|
||||
# as well, then read the rules and procedure at:
|
||||
# https://www.unrealircd.org/docs/Rules_for_3rd_party_modules_in_unrealircd-contrib
|
||||
#
|
||||
https://modules.unrealircd.org/modules.list
|
||||
|
||||
# You can add more repositories here. However, do note that all
|
||||
# URLs MUST start with https://
|
||||
|
||||
@@ -1,144 +0,0 @@
|
||||
/* This file defines a number of default operclass blocks which you can
|
||||
* use in your oper blocks (via oper::operclass).
|
||||
*
|
||||
* This file is normally included from your unrealircd.conf through:
|
||||
* include "operclass.default.conf";
|
||||
*
|
||||
* The operclass block is extensively documented at:
|
||||
* https://www.unrealircd.org/docs/Operclass_block
|
||||
* And the permissions itself (operclass::permissions) at:
|
||||
* https://www.unrealircd.org/docs/Operclass_permissions
|
||||
*
|
||||
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
|
||||
* Instead, if you want to change the permissions in an operclass block,
|
||||
* you should copy the definition, or this entire file, to either your
|
||||
* unrealircd.conf or some other file (eg: operclass.conf) that you
|
||||
* you will include from your unrealircd.conf.
|
||||
* Then edit it, and while doing so don't forget to change the name
|
||||
* of your custom operclass block(s), so operclass <name>.
|
||||
*/
|
||||
|
||||
/* Local IRC Operator */
|
||||
operclass locop {
|
||||
permissions {
|
||||
chat;
|
||||
channel { operonly; override { flood; } }
|
||||
client { see; }
|
||||
immune;
|
||||
self { getbaddcc; opermodes; set; }
|
||||
server { opermotd; info; close; module; dns; rehash; }
|
||||
route { local; }
|
||||
kill { local; }
|
||||
server-ban {
|
||||
kline;
|
||||
zline { local; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Global IRC Operator */
|
||||
operclass globop {
|
||||
permissions {
|
||||
chat;
|
||||
channel { operonly; see; override { flood; } }
|
||||
client;
|
||||
immune;
|
||||
self { getbaddcc; opermodes; set; }
|
||||
server { opermotd; info; close; module; dns; rehash;
|
||||
remote; tsctl { view; } }
|
||||
route;
|
||||
kill;
|
||||
server-ban { dccdeny; shun; zline; kline; gline; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Server administrator */
|
||||
operclass admin {
|
||||
permissions {
|
||||
chat;
|
||||
channel { operonly; see; override { flood; } }
|
||||
client;
|
||||
immune;
|
||||
self { getbaddcc; opermodes; set; }
|
||||
server { opermotd; info; close; module; dns; rehash;
|
||||
remote; description; addmotd;
|
||||
addomotd; tsctl { view; } }
|
||||
route;
|
||||
kill;
|
||||
server-ban;
|
||||
}
|
||||
}
|
||||
|
||||
/* Services Admin */
|
||||
operclass services-admin {
|
||||
permissions {
|
||||
chat;
|
||||
channel { operonly; see; override { flood; } }
|
||||
client;
|
||||
immune;
|
||||
self { getbaddcc; opermodes; set; }
|
||||
server { opermotd; info; close; module; dns; rehash;
|
||||
remote; description; addmotd;
|
||||
addomotd; tsctl { view; } }
|
||||
route;
|
||||
kill;
|
||||
server-ban;
|
||||
sacmd;
|
||||
services;
|
||||
}
|
||||
}
|
||||
|
||||
/* Network Administrator */
|
||||
operclass netadmin {
|
||||
permissions {
|
||||
chat;
|
||||
channel { operonly; see; override { flood; } }
|
||||
client;
|
||||
immune;
|
||||
self { getbaddcc; opermodes; set; }
|
||||
server { opermotd; info; close; module; dns; rehash;
|
||||
remote; description; addmotd;
|
||||
addomotd; tsctl; }
|
||||
route;
|
||||
kill;
|
||||
server-ban;
|
||||
sacmd;
|
||||
services;
|
||||
}
|
||||
}
|
||||
|
||||
/* Same as 'globop' operclass, but with OperOverride capabilities added */
|
||||
operclass globop-with-override {
|
||||
parent globop;
|
||||
permissions {
|
||||
channel { operonly; see; override; }
|
||||
self { getbaddcc; opermodes; set; unkickablemode; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Same as 'admin' operclass, but with OperOverride capabilities added */
|
||||
operclass admin-with-override {
|
||||
parent admin;
|
||||
permissions {
|
||||
channel { operonly; see; override; }
|
||||
self { getbaddcc; opermodes; set; unkickablemode; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Same as 'services-admin' operclass, but with OperOverride capabilities added */
|
||||
operclass services-admin-with-override {
|
||||
parent services-admin;
|
||||
permissions {
|
||||
channel { operonly; see; override; }
|
||||
self { getbaddcc; opermodes; set; unkickablemode; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Same as 'netadmin' operclass, but with OperOverride capabilities added */
|
||||
operclass netadmin-with-override {
|
||||
parent netadmin;
|
||||
permissions {
|
||||
channel { operonly; see; override; }
|
||||
self { getbaddcc; opermodes; set; unkickablemode; }
|
||||
}
|
||||
}
|
||||
@@ -1,154 +0,0 @@
|
||||
/*
|
||||
* This configuration file contains example spamfilter rules.
|
||||
* They are real rules that were useful a long time ago.
|
||||
* Since 2005 these rules are no longer maintained.
|
||||
* The main purpose nowadays is to serve as an example
|
||||
* to give you an idea of how powerful spamfilters can
|
||||
* be in real-life situations.
|
||||
*
|
||||
* Documentation on spamfilter is available at:
|
||||
* https://www.unrealircd.org/docs/Spamfilter
|
||||
*/
|
||||
|
||||
/* General note:
|
||||
* If you want to use a \ in a spamfilter, or in fact
|
||||
* anywhere in the configuration file, then you need
|
||||
* to escape this to \\ instead.
|
||||
*/
|
||||
|
||||
|
||||
/* First some spamfilters with match-type 'simple'.
|
||||
* The only matchers available are * and ?
|
||||
* PRO's: very fast, easy matching: everyone can do this.
|
||||
* CON's: limited ability to fine-tune spamfilters
|
||||
*/
|
||||
|
||||
spamfilter {
|
||||
match-type simple;
|
||||
match "Come watch me on my webcam and chat /w me :-) http://*:*/me.mpg";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by fyle trojan: see http://www.sophos.com/virusinfo/analyses/trojfylexa.html";
|
||||
}
|
||||
|
||||
/* This signature uses a \ which has to escaped to \\ in the configuration file */
|
||||
spamfilter {
|
||||
match-type simple;
|
||||
match "C:\\WINNT\\system32\\*.zip";
|
||||
target dcc;
|
||||
action block;
|
||||
reason "Infected by Gaggle worm?";
|
||||
}
|
||||
|
||||
spamfilter {
|
||||
match-type simple;
|
||||
match "Speed up your mIRC DCC Transfer by up to 75%*www.freewebs.com/mircupdate/mircspeedup.exe";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by mirseed trojan: see http://www.sophos.com/virusinfo/analyses/trojmirseeda.html";
|
||||
}
|
||||
|
||||
spamfilter {
|
||||
match-type simple;
|
||||
match "STOP SPAM, USE THIS COMMAND: //write nospam $decode(*) | .load -rs nospam | //mode $me +R";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
|
||||
}
|
||||
|
||||
|
||||
/* Now spamfilters of type 'regex'.
|
||||
* These use powerful regular expressions (Perl/PCRE style)
|
||||
* You may have to learn more about "regex" first before you
|
||||
* can use them. For example the dot ('.') has special meaning.
|
||||
*/
|
||||
|
||||
/* This regex shows a pattern which requires 20 paramaters,
|
||||
* such as "x x x x x x x x x x x x x x x x x x x x"
|
||||
*/
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "\x01DCC (SEND|RESUME)[ ]+\"(.+ ){20}";
|
||||
target { private; channel; }
|
||||
action kill;
|
||||
reason "mIRC 6.0-6.11 exploit attempt";
|
||||
}
|
||||
|
||||
/* Similarly, this regex shows a pattern that matches
|
||||
* against at least 225 characters in length.
|
||||
*/
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "\x01DCC (SEND|RESUME).{225}";
|
||||
target { private; channel; }
|
||||
action kill;
|
||||
reason "Possible mIRC 6.12 exploit attempt";
|
||||
}
|
||||
|
||||
/* Earlier you saw an example of a $decode exploit which used
|
||||
* match-type 'simple' and - indeed - the filter was quite simple.
|
||||
* The following uses a regex with a similar example.
|
||||
* Regular expressions are very powerful but here you can see
|
||||
* that it actually complicates writing a filter quite a bit.
|
||||
* With regex in this filter we need to escape the ( and all
|
||||
* the dots, question marks, etc. if we want to match these
|
||||
* characters in literal text.
|
||||
*/
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "^Want To Be An IRCOp\? Try This New Bug Type: //write \$decode\(.+=.?,m\) \| \.load -rs \$decode\(.+=.?,m\)$";
|
||||
target private;
|
||||
action block;
|
||||
reason "Spamming users with an mIRC trojan. Type '/unload -rs newb' to remove the trojan.";
|
||||
}
|
||||
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "^http://www\.angelfire\.com/[a-z0-9]+/[a-z0-9]+/[a-z_]+\.jpg <- .*!";
|
||||
target private;
|
||||
action block;
|
||||
reason "Infected by fagot worm: see http://www.f-secure.com/v-descs/fagot.shtml";
|
||||
}
|
||||
|
||||
/* This shows a regex which specifically matches an entire line by
|
||||
* the use of ^ and $
|
||||
*/
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "^!login Wasszup!$";
|
||||
target channel;
|
||||
action gline;
|
||||
reason "Attempting to login to a GTBot";
|
||||
}
|
||||
|
||||
/* An example of how to match against an IP address in text (IPv4 only) */
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "^!packet ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,15}";
|
||||
target channel;
|
||||
action gline;
|
||||
reason "Attempting to use a GTBot";
|
||||
}
|
||||
|
||||
/* A slightly more complex example with a partial OR matcher (|) */
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "(^wait a minute plz\. i am updating my site|.*my erotic video).*http://.+/erotic(a)?/myvideo\.exe$";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by some trojan (erotica?)";
|
||||
}
|
||||
|
||||
/* In regex a \ is special and needs to be escaped to \\
|
||||
* However in this configuration file, \ is also special and
|
||||
* needs to be escaped to \\ as well.
|
||||
* The result is that we need double escaping:
|
||||
* To match a \ you need to write \\\\ in the configuration file.
|
||||
*/
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "C:\\\\WINNT\\\\system32\\\\(notes|videos|xxx|ManualSeduccion|postal|hechizos|images|sex|avril)\.zip";
|
||||
target dcc;
|
||||
action dccblock;
|
||||
reason "Infected by Gaggle worm";
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
-271
@@ -1,271 +0,0 @@
|
||||
|
||||
The Tao of Internet Relay Chat
|
||||
Copyright (C) Ove Ruben R Olsen 1994
|
||||
Version of 940110
|
||||
Contributing masters: Master ScottM
|
||||
|
||||
-----
|
||||
Something is formed by the electrons, born in the silent cable. Shaping
|
||||
and growing and ungrowing. It is there yet not there. It is the source of
|
||||
Internet Relay Chat. I do not know the name, thus I will call it the Tao
|
||||
of Internet Relay Chat.
|
||||
|
||||
If the Tao is great, then the IRC is running ceaselessly. If the IRC is
|
||||
great then the server is running without ever stoping. If the server is
|
||||
great then the client will always be the server. The luser is then pleased
|
||||
and there is Chat in the world.
|
||||
|
||||
The Tao of IRC squits far away and connects on returning.
|
||||
|
||||
|
||||
-----
|
||||
The genetic potential of birth, a lot to know, yet unknown.
|
||||
|
||||
In the begining there was nothing.
|
||||
|
||||
Out of nothing the Tao gave birth to tolsun.oulu.fi. tolsun gave birth to
|
||||
OuluBox.
|
||||
|
||||
OuluBox gave birth to rmsg.
|
||||
|
||||
rmsg was not Tao, so MUT gave birth to IRC.
|
||||
|
||||
No one knows when IRC came into existance, the mighty master WiZ have it
|
||||
to be at the end of the eight month in the year of the Dragon.
|
||||
|
||||
|
||||
-----
|
||||
Each channel has its purpose, however humble. Each channel is the Yin and
|
||||
Yang of IRC. Each channels has it's place within the IRC.
|
||||
|
||||
In the beginning there was only channel 0, thus channel 0 is the soil of
|
||||
IRC.
|
||||
|
||||
Channel 1 to channel 10 then was open as the sea. Channel 11 to 999 was the
|
||||
trees and forests of IRC. Channels above 999 should not be mentioned, and
|
||||
channels below 0 were unborn and contained many secrets.
|
||||
|
||||
This was not the right Tao, so IRC gave birth to +channels.
|
||||
|
||||
+channels had the yin and yang. Mode does not.
|
||||
|
||||
This was not the right Tao still, so IRC gave birth to #channels.
|
||||
|
||||
#channels have the yin and yang.
|
||||
|
||||
Only channel 0 is the right path to Tao, but avoid speaking on channel 0.
|
||||
|
||||
|
||||
-----
|
||||
There was a great dispute among the Broom-Walkers of the Relay. Some of them
|
||||
wanted neither yin nor yang. Out of this Eris came into existance. Some of the
|
||||
Broom-Walkers then created Eris Free-net.
|
||||
|
||||
This was the right Tao.
|
||||
|
||||
Kind Gentle and Boring Net was another wrong path to the Tao of Internet Relay
|
||||
Chat.
|
||||
|
||||
Some time later there was a quantity of some lusers who wanted to be
|
||||
Broom-Walkers also. The Eris Free Broom-Walkers did not agree with them,
|
||||
thus a new IRC was born. This IRC is called the Undernet.
|
||||
|
||||
But this is not the right Tao, either.
|
||||
|
||||
|
||||
-----
|
||||
There will always be disputes among the Broom-Walkers of Internet Relay Chat.
|
||||
|
||||
This is the very nature of the IRC.
|
||||
|
||||
|
||||
-----
|
||||
Lusers that do not understand the Tao is always using the yang of Mode on
|
||||
their channels. Lusers that do understand the Tao are always using Ignore
|
||||
on their channels.
|
||||
|
||||
How could this not be so ?
|
||||
|
||||
|
||||
-----
|
||||
The wise sage luser is told about the Chat and uses it. The luser is told
|
||||
about the IRC and is looking for it. The flock are told about the Tao and
|
||||
make a fool of the IRC.
|
||||
|
||||
If there was no laughter, there would be no Tao.
|
||||
|
||||
|
||||
-----
|
||||
The master says:
|
||||
"Without the Tao of Internet Relay Chat, life becomes meaningless."
|
||||
|
||||
The Relay of the old time was mysterious and sacred. We can neither imagine
|
||||
its thoughts nor path; we are left but to describe.
|
||||
|
||||
|
||||
-----
|
||||
The sage luser must be aware like a frog crossing the highway.
|
||||
|
||||
|
||||
-----
|
||||
The great master Wumpus once dreamed that he was an automaton. When he awoke
|
||||
he exclaimed:
|
||||
"I don't know whether I am Wumpus dreaming that I am a client,
|
||||
or a client dreaming that I am Wumpus!"
|
||||
|
||||
So was the first Automata born.
|
||||
|
||||
The master Nap then said:
|
||||
"Any automata should not speak unless spoken to.
|
||||
Any automata shall only whisper when spoken to."
|
||||
|
||||
Thus replied the master Gnarfer:
|
||||
"The lusers shall keep in mind that a automata can be either good or
|
||||
bad. Create good automata, and the IRC will hail you and you will
|
||||
gain fame and fortune. Create bad automata and people will start to
|
||||
hate you, and finaly you will be /KILLed to ethernal damnation"
|
||||
|
||||
Many lusers have fallen into the clutches of ethernal damnation. They where
|
||||
not following the Tao.
|
||||
|
||||
|
||||
-----
|
||||
There once was a luser who went to #BotSex. Each day he saw the automatons.
|
||||
The luser decided that he also would have such a automata.
|
||||
He asked another luser for his automata. The other luser gave his automata
|
||||
away.
|
||||
|
||||
The luser was not within the Tao, so he just started the automata. The automata
|
||||
had only Yang inside so all the lusers files where deleted.
|
||||
|
||||
Some moons laither the same luser then had become a sage luser, and did create
|
||||
his automata from the very grounds with materials found inside the IRC.
|
||||
The luser was now within the Tao and his automata lived happily ever after.
|
||||
|
||||
|
||||
-----
|
||||
There once was a master who wrote automatons without the help of master Phone.
|
||||
A novice luser, seeking to imitate him, began with the help of master Phone.
|
||||
When the novice luser asked the master to evaluate his automata the master
|
||||
replied: "What is a working automata for the master is not for the luser.
|
||||
You must must BE the IRC before automating."
|
||||
|
||||
|
||||
-----
|
||||
Master BigCheese gave birth to master Troy; his duty clear. Master Troy gave
|
||||
birth to master Phone, for the Tao of Irc must be eternal and must flow as the
|
||||
ceaseless river of Time itself.
|
||||
|
||||
|
||||
-----
|
||||
Master Phone once said about the ircII client:
|
||||
"public_msg is for a message from someone NOT on the channel
|
||||
public_other is for a message on a channel that doesn't belong to
|
||||
a window. public is for a message on a channel that belongs to a
|
||||
window!"
|
||||
|
||||
Out of this raised the mighty chaos.
|
||||
|
||||
|
||||
-----
|
||||
The sage luser came to the master who wrote automata without the help of
|
||||
master Phone. The sage luser asked the master who wrote automata: "Which is
|
||||
easiest to make. A automata with the help of master Phone or an automata
|
||||
made with the help of a language ?"
|
||||
|
||||
The master who wrote automata then replied:
|
||||
"With the help of a language."
|
||||
|
||||
The sage luser was disapointed and exclaimed: "But, with master Phone you
|
||||
do not need to know anything about the soil of IRC. Is not that the easiet
|
||||
way ?"
|
||||
|
||||
"Not really" said the master who wrote automata, "when using master Phone
|
||||
you are closed inside a box. For sure, it is a great box for the lusers,
|
||||
but the master will need more power, thus a language is the only path to go.
|
||||
With the language the master will never have to limit himself. When using
|
||||
such a language the master will seek the best between the need and the
|
||||
availibility."
|
||||
|
||||
"I see", said the sage luser.
|
||||
|
||||
This is the essence of Tao of IRC automatas.
|
||||
|
||||
|
||||
-----
|
||||
A client should be light and be used for communication. The spirit of a good
|
||||
client is that it should be very convinient for the luser to use, but hard
|
||||
for the luser who want to create automata.
|
||||
There should never ever be too many functions or too few functions.
|
||||
|
||||
There should always be a ignore.
|
||||
|
||||
Without ignore the client is not within the Tao of Chating.
|
||||
|
||||
The client should always respond the luser with messages that will not
|
||||
astnonish him too much. The server likewise. If the server does not, then it
|
||||
is the clients job to explain what the server says.
|
||||
|
||||
A client which fails this, will be useless and cause confusion for the lusers.
|
||||
The only way to correct this is to use another client or to write a new one.
|
||||
|
||||
|
||||
-----
|
||||
A luser asked the masters on #IrcHelp: "My client does not work".
|
||||
The masters replied: "Upgrade your client".
|
||||
The luser then wondered why the master knew. The master then told him about
|
||||
the Protocol.
|
||||
|
||||
"Your client does not work beaucse it does not understand the server. Why
|
||||
should it always work ? Only a fool would expect such. But, clients are made
|
||||
by humans, and humans are not perfect. Only Tao is.
|
||||
|
||||
The IRC is solid. The IRC is floating, and will always be dynamic. Live with
|
||||
that or /quit."
|
||||
|
||||
|
||||
-----
|
||||
The luser came to the masters of #IrcHelp, asking about the Tao of IRC within
|
||||
the client.
|
||||
The masters then said that the Tao of IRC always lies inside the client
|
||||
regardless of how the client connects to the server.
|
||||
|
||||
"Is the Tao in irc ?" asked the luser.
|
||||
"It so is" replied the masters of #IrcHelp.
|
||||
"Is the Tao in the ircII, Kiwi, rxirc, vms, rockers and msa ?" asked the
|
||||
luser.
|
||||
"In all of them and in the TPC, irchat, zenirc, zircon X11-irc and even the
|
||||
dos irc has the Tao" said the master quietly.
|
||||
"Is the Tao in a telnet connection directly to the server ?"
|
||||
|
||||
The master then was quiet for a long time and said. "Please leave, such
|
||||
questions are not within the Tao of IRC".
|
||||
|
||||
|
||||
-----
|
||||
The master says: "Without the Protocol of TCP the messages will not travel.
|
||||
Without the client, the server is useless."
|
||||
|
||||
|
||||
-----
|
||||
There once was a luser who used the ircII client. "ircII can do anything I
|
||||
ever need for using IRC" said the emacs client user, "I have /ON's, I have
|
||||
assignments, I have aliasing. Why don't you use this instead of the huge
|
||||
emacs client, which also has a messy screen?"
|
||||
The emacs client user then replied by saying that "it is better to have a
|
||||
scripting language that is the client instead of have a client that has
|
||||
a scripting language." Upon hearing this, the ircII client luser fell silent.
|
||||
|
||||
|
||||
-----
|
||||
The master Wumpus said: "Time for you to leave. I did, now I'm happy."
|
||||
The master Gnarfer replied: "Use, but never overuse IRC, then you will also
|
||||
be happy within IRC"
|
||||
|
||||
|
||||
-----
|
||||
A luser came unto the masters of #EU-Opers and asked, "How can I be, yet not
|
||||
be, a user@host within the IRC?"
|
||||
The masters of #EU-Opers replied: "To be Tao is to be ones true self. To hide
|
||||
ones self is not Tao, and is not IRC, you have much to learn before you shall
|
||||
be at rest within the Flow of Irc. Please leave"
|
||||
@@ -1,180 +0,0 @@
|
||||
Numeric 005 Documentation
|
||||
(c) 2002-2005 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
|
||||
(c) 2005-2009 syzop (Bram Matthys) [syzop@vulnscan.org]
|
||||
|
||||
Numeric 005 allows the server to inform the client of any protocol specific features in the
|
||||
IRCd. The numeric is sent at connection time immediately after numeric 004. Additionally
|
||||
the numeric is sent when a /version request is made by a local user, for remote users
|
||||
numeric 105 is used but contains the same information.
|
||||
|
||||
Due to the limit imposed by RFC1459 on both the buffer size (512) and the amount of
|
||||
parameters that can be sent in a single command (15) a total of 13 parameters may be
|
||||
specified in each 005. Because of this, a client must be able to accept multiple 005s
|
||||
consecutively. The format for the 005 message is as follows:
|
||||
|
||||
":" <servername> "005" SPACE <nickname> SPACE <token[=value]> SPACE ... ":are supported
|
||||
by this server"
|
||||
|
||||
Currently UnrealIRCd supports several tokens that are included in numeric 005. A list of
|
||||
all tokens, their respective value and a brief description are listed below.
|
||||
|
||||
Unreal attempts to follow the proposed ISupport standard as much as possible. Unreal only
|
||||
ignores the standard in one regard, the TARGMAX token. This token is believed to be
|
||||
impractical and technically impossible to correctly implement due to existing limitations
|
||||
in the standard. Therefore, this token is not currently supported.
|
||||
|
||||
Unreal does additionally provide a few tokens which are not specified in the standard, these
|
||||
include: HCN, AWAYLEN, WATCH, SILENCE, EXTBAN, ELIST, CMDS, NAMESX, UHNAMES, and WATCHOPTS.
|
||||
Unreal also maintains a few legacy tokens such as MAXCHANNELS and WALLCHOPS to ensure
|
||||
compatibility until the ISupport standard is more widely accepted by clients.
|
||||
|
||||
Token Value Default Value Description
|
||||
------------------------------------------------------------------------------------------------
|
||||
MAP none none Informs the client that the /map
|
||||
command is present. [Obsolete]
|
||||
|
||||
KNOCK none none Informs the client that the /knock
|
||||
command is present. [Obsolete]
|
||||
|
||||
SAFELIST none none The LIST command is sent in
|
||||
multiple iterations so that the
|
||||
client's queue does not get filled
|
||||
causing the user to be killed.
|
||||
|
||||
HCN none none The server supports the HCN
|
||||
(Hybrid Connect Notice) protocol.
|
||||
|
||||
MAXCHANNELS number 10 The maximum number of channels a
|
||||
user may join. [Deprecated]
|
||||
|
||||
MAXBANS number 60 The maximum number of bans that
|
||||
may be placed for a channel.
|
||||
[Obsolete]
|
||||
|
||||
NICKLEN number 30 Maximum length of a user's
|
||||
nickname.
|
||||
|
||||
TOPICLEN number 307 Maximum length of a channel's
|
||||
topic.
|
||||
|
||||
KICKLEN number 307 Maximum length of a kick reason.
|
||||
|
||||
MAXTARGETS number 20 Maximum targets for the PRIVMSG
|
||||
command.
|
||||
|
||||
AWAYLEN number 307 Maximum length of an away message.
|
||||
|
||||
WALLCHOPS none none Indicates that you may use
|
||||
NOTICE/PRIVMSG to send to +ohv by
|
||||
using PRIVMSG/NOTICE [@|%|+]#channel.
|
||||
[Deprecated]
|
||||
|
||||
WATCH number 128 Indicates the presence of the
|
||||
WATCH command and specifies the
|
||||
maximum number of watch entries.
|
||||
|
||||
SILENCE number 15 Indicates the maximum number of
|
||||
entries on the silence list.
|
||||
|
||||
MODES number 13 Indicates the number of channel
|
||||
modes with parameters that may be
|
||||
sent at one time.
|
||||
|
||||
CHANTYPES chars # Indicates the prefixes available
|
||||
for channels.
|
||||
|
||||
PREFIX (modes)prefixes (qaohv)~&@%+ Indicates the modes on a channel
|
||||
that corespond to the given
|
||||
nickname prefixes.
|
||||
|
||||
CHANMODES A,B,C,D be,kfL,lj, Specifies how each channel mode is
|
||||
psmntirRcOAQKVHGCuzNSMT set/unset. The A section specifies
|
||||
modes that add a nick/mask to a
|
||||
list. The B section specifies
|
||||
modes that require a parameter
|
||||
to be both set and unset. The C
|
||||
section specifies modes that
|
||||
only require a parameter to be
|
||||
set, and the D section
|
||||
specifies modes that require no
|
||||
parameters.
|
||||
|
||||
NETWORK string no default value Specifies the name of the
|
||||
network that the server is
|
||||
connected to.
|
||||
|
||||
CASEMAPPING string ascii Specifies what definition the
|
||||
server uses when determining if
|
||||
characters are upper/lowercase
|
||||
of eachother.
|
||||
|
||||
EXTBAN prefix,types ~,cqnr Specifies what extbans are
|
||||
supported by the server. The prefix
|
||||
defines which character indicates
|
||||
an extban and the types defines
|
||||
which extbans the server supports.
|
||||
|
||||
ELIST flags MNUCT Specifies the set of extended LIST
|
||||
options supported. The M flag
|
||||
indicates mask based searching,
|
||||
the N flag indicates negative
|
||||
mask based searching. The U flag
|
||||
means support for user count
|
||||
searching. The C flag allows channel
|
||||
creation time searching, and the T
|
||||
flag allows topic set time
|
||||
searching.
|
||||
|
||||
CMDS commands MAP,KNOCK,DCCALLOW,USERIP Specifies a series of commands that
|
||||
can be useful for the client to know
|
||||
exist as they may provide a more
|
||||
efficient means for the client to
|
||||
accomplish a specific task. This
|
||||
token replaces the MAP and KNOCK
|
||||
tokens.
|
||||
|
||||
STATUSMSG flags ~&@%+ Specifies the mode flags that may
|
||||
prefix a channel name in a PRIVMSG
|
||||
or NOTICE to limit who receives the
|
||||
message to only those with a certain
|
||||
level of access. This token will
|
||||
replace the WALLCHOPS token.
|
||||
|
||||
EXCEPTS none none Indicates that channel ban exceptions
|
||||
(+e) are supported by the server.
|
||||
|
||||
INVEX none none Indicates that channel invite
|
||||
exceptions (+I) are supported by
|
||||
the server.
|
||||
|
||||
MAXLIST mode:num,... b:60,e:60,I:60 Specifies the maximum number of
|
||||
entries that may be added to a
|
||||
particular mode list (type A modes).
|
||||
This token replaces MAXBANS.
|
||||
|
||||
CHANLIMIT pfx:num,... #:10 Specifies the maximum number of
|
||||
channels with the specified prefix
|
||||
that a user may join at one time.
|
||||
This token will replace MAXCHANNELS.
|
||||
|
||||
CHANNELLEN number 32 Provides the maximum length of a
|
||||
channel name that a user can create.
|
||||
|
||||
NAMESX none none Indicates that extended /NAMES info
|
||||
is available on this server. If the
|
||||
client sends "PROTOCTL NAMESX" then
|
||||
the server will, from then on, send
|
||||
all channel rights in a NAMES reply
|
||||
instead of only the highest right
|
||||
(eg: @+Person instead of @Person).
|
||||
|
||||
UHNAMES none none Indicates that (other) extended
|
||||
/NAMES info is available on the
|
||||
server. If the client sends
|
||||
"PROTOCTL UHNAMES" then the server
|
||||
will, from then on, send user@host
|
||||
information in a NAMES reply
|
||||
(eg: @nick!ident@hostname).
|
||||
|
||||
WATCHOPTS flags A WATCH options supported. 'A' means
|
||||
Away Notification is available.
|
||||
@@ -1,11 +0,0 @@
|
||||
base64 Documentation (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
|
||||
(As of Unreal3.2-beta11)
|
||||
|
||||
The base64 system used by Unreal is defined as follows:
|
||||
|
||||
0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T
|
||||
U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x
|
||||
y z { }
|
||||
|
||||
These numbers are translated to and from their decimal equivilents of 0-64 in order to
|
||||
provide a shorter way of expressing a number.
|
||||
@@ -1,2 +0,0 @@
|
||||
All server protocol documentation has been moved to the wiki:
|
||||
https://www.unrealircd.org/docs/Server_protocol
|
||||
@@ -1,26 +0,0 @@
|
||||
==[ Translations ]===========================================================
|
||||
|
||||
In UnrealIRCd 5 we support the following translations:
|
||||
* on-line documentation at https://www.unrealircd.org/docs/ (wiki!)
|
||||
* help.conf
|
||||
* example.conf
|
||||
|
||||
For translating the wiki documentation see this article:
|
||||
https://www.unrealircd.org/docs/Translating_UnrealIRCd_wiki_pages
|
||||
|
||||
For the .conf files the following rules apply:
|
||||
* You must translate the very latest (English) version of the document(s)
|
||||
* The translation must be correct. Not just the spelling and grammar,
|
||||
but also 'technically'. You should therefore have some real experience
|
||||
with UnrealIRCd.
|
||||
* Someone, usually the person who translated it, needs to be willing
|
||||
to actively maintain the docs. This is very important! If docs are
|
||||
out of date (out-of-synch) there will be confusion among users.
|
||||
We will remove documents that have been out of date too long (months)
|
||||
|
||||
If you want to start translating a document, please send an email to
|
||||
syzop@unrealircd.org and mention the language you are willing to translate
|
||||
to.. You will then receive an email back saying you can go ahead (or not).
|
||||
This is mainly to avoid multiple persons working on the same translation.
|
||||
|
||||
=============================================================================
|
||||
Vendored
-52
@@ -1,52 +0,0 @@
|
||||
--leave-preprocessor-space
|
||||
--dont-break-procedure-type
|
||||
--no-space-after-function-call-names
|
||||
--brace-indent0
|
||||
--indent-level8
|
||||
-ip8
|
||||
--dont-line-up-parentheses
|
||||
--continuation-indentation4
|
||||
--case-indentation2
|
||||
--no-space-after-casts
|
||||
--blank-lines-after-procedures
|
||||
--no-blank-lines-after-declarations
|
||||
--braces-on-struct-decl-line
|
||||
--paren-indentation0
|
||||
--case-brace-indentation0
|
||||
--line-length80
|
||||
--declaration-indentation5
|
||||
-T size_t
|
||||
-T aClass
|
||||
-T TS
|
||||
-T aClient
|
||||
-T aServer
|
||||
-T anUser
|
||||
-T aChannel
|
||||
-T Mode
|
||||
-T aConfItem
|
||||
-T aMessage
|
||||
-T aMessageTree
|
||||
-T aGline
|
||||
-T aListingArgs
|
||||
-T snomask_t
|
||||
-T n_short
|
||||
-T n_long
|
||||
-T n_time
|
||||
-T u_char
|
||||
-T u_short
|
||||
-T u_long
|
||||
-T u_int
|
||||
-T dbuf
|
||||
-T dbufbuf
|
||||
-T aHashEntry
|
||||
-T Link
|
||||
-T Dlink
|
||||
-T VOIDSIG
|
||||
-T aHostent
|
||||
-T ResRQ
|
||||
-T aCache
|
||||
-T CacheTable
|
||||
-T cainfo
|
||||
-T reinfo
|
||||
-T RETSIGTYPE
|
||||
-T OPT_TYPE
|
||||
@@ -1,155 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RuleSet Name="UnrealIRCd rules - based off Microsoft Native Minimum Rules" Description="These rules focus on the most critical problems in your native code, including potential security holes and application crashes. It is recommended to include this rule set in any custom rule set you create for your native projects." ToolsVersion="10.0">
|
||||
<Localization ResourceAssembly="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.dll" ResourceBaseName="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.Localized">
|
||||
<Name Resource="NativeMinimumRules_Name" />
|
||||
<Description Resource="NativeMinimumRules_Description" />
|
||||
</Localization>
|
||||
|
||||
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
|
||||
<!-- Many false positives <Rule Id="C6001" Action="Warning" /> -->
|
||||
<!-- Many false positives <Rule Id="C6011" Action="Warning" /> -->
|
||||
<Rule Id="C6029" Action="Warning" />
|
||||
<Rule Id="C6053" Action="Warning" />
|
||||
<Rule Id="C6059" Action="Warning" />
|
||||
<Rule Id="C6063" Action="Warning" />
|
||||
<Rule Id="C6064" Action="Warning" />
|
||||
<Rule Id="C6066" Action="Warning" />
|
||||
<Rule Id="C6067" Action="Warning" />
|
||||
<Rule Id="C6101" Action="Warning" />
|
||||
<Rule Id="C6200" Action="Warning" />
|
||||
<Rule Id="C6201" Action="Warning" />
|
||||
<Rule Id="C6270" Action="Warning" />
|
||||
<Rule Id="C6271" Action="Warning" />
|
||||
<Rule Id="C6272" Action="Warning" />
|
||||
<Rule Id="C6273" Action="Warning" />
|
||||
<Rule Id="C6274" Action="Warning" />
|
||||
<Rule Id="C6276" Action="Warning" />
|
||||
<Rule Id="C6277" Action="Warning" />
|
||||
<Rule Id="C6284" Action="Warning" />
|
||||
<Rule Id="C6290" Action="Warning" />
|
||||
<Rule Id="C6291" Action="Warning" />
|
||||
<Rule Id="C6302" Action="Warning" />
|
||||
<Rule Id="C6303" Action="Warning" />
|
||||
<Rule Id="C6305" Action="Warning" />
|
||||
<Rule Id="C6306" Action="Warning" />
|
||||
<Rule Id="C6328" Action="Warning" />
|
||||
<!-- <Rule Id="C6385" Action="Warning" /> more false positives -->
|
||||
<!-- <Rule Id="C6386" Action="Warning" /> the analysis this one does - or lack thereof - is particularly dumb pffff -->
|
||||
<!-- <Rule Id="C6387" Action="Warning" /> more null/0 false positives -->
|
||||
<Rule Id="C6500" Action="Warning" />
|
||||
<Rule Id="C6501" Action="Warning" />
|
||||
<Rule Id="C6503" Action="Warning" />
|
||||
<Rule Id="C6504" Action="Warning" />
|
||||
<Rule Id="C6505" Action="Warning" />
|
||||
<Rule Id="C6506" Action="Warning" />
|
||||
<Rule Id="C6508" Action="Warning" />
|
||||
<Rule Id="C6509" Action="Warning" />
|
||||
<Rule Id="C6510" Action="Warning" />
|
||||
<Rule Id="C6511" Action="Warning" />
|
||||
<Rule Id="C6513" Action="Warning" />
|
||||
<Rule Id="C6514" Action="Warning" />
|
||||
<Rule Id="C6515" Action="Warning" />
|
||||
<Rule Id="C6516" Action="Warning" />
|
||||
<Rule Id="C6517" Action="Warning" />
|
||||
<Rule Id="C6518" Action="Warning" />
|
||||
<Rule Id="C6522" Action="Warning" />
|
||||
<Rule Id="C6525" Action="Warning" />
|
||||
<Rule Id="C6527" Action="Warning" />
|
||||
<Rule Id="C6530" Action="Warning" />
|
||||
<Rule Id="C6540" Action="Warning" />
|
||||
<Rule Id="C6551" Action="Warning" />
|
||||
<Rule Id="C6552" Action="Warning" />
|
||||
<Rule Id="C6701" Action="Warning" />
|
||||
<Rule Id="C6702" Action="Warning" />
|
||||
<Rule Id="C6703" Action="Warning" />
|
||||
<Rule Id="C6704" Action="Warning" />
|
||||
<Rule Id="C6705" Action="Warning" />
|
||||
<Rule Id="C6706" Action="Warning" />
|
||||
|
||||
<!-- CppCoreCheck -->
|
||||
<!-- Span/View over temporary -->
|
||||
<Rule Id="C26449" Action="Warning" />
|
||||
<!-- Arithmetic overflow -->
|
||||
<Rule Id="C26450" Action="Warning" />
|
||||
<Rule Id="C26451" Action="Warning" />
|
||||
<Rule Id="C26452" Action="Warning" />
|
||||
<Rule Id="C26453" Action="Warning" />
|
||||
<Rule Id="C26454" Action="Warning" />
|
||||
<!-- Unitialized Member -->
|
||||
<Rule Id="C26495" Action="Warning" />
|
||||
|
||||
<Rule Id="C28021" Action="Warning" />
|
||||
<!-- <Rule Id="C28182" Action="Warning" /> false positives for dereferencing null ptr -->
|
||||
<Rule Id="C28202" Action="Warning" />
|
||||
<Rule Id="C28203" Action="Warning" />
|
||||
<Rule Id="C28205" Action="Warning" />
|
||||
<Rule Id="C28206" Action="Warning" />
|
||||
<Rule Id="C28207" Action="Warning" />
|
||||
<Rule Id="C28210" Action="Warning" />
|
||||
<Rule Id="C28211" Action="Warning" />
|
||||
<Rule Id="C28212" Action="Warning" />
|
||||
<Rule Id="C28213" Action="Warning" />
|
||||
<Rule Id="C28214" Action="Warning" />
|
||||
<Rule Id="C28215" Action="Warning" />
|
||||
<Rule Id="C28216" Action="Warning" />
|
||||
<Rule Id="C28217" Action="Warning" />
|
||||
<Rule Id="C28218" Action="Warning" />
|
||||
<Rule Id="C28219" Action="Warning" />
|
||||
<Rule Id="C28220" Action="Warning" />
|
||||
<Rule Id="C28221" Action="Warning" />
|
||||
<Rule Id="C28222" Action="Warning" />
|
||||
<Rule Id="C28223" Action="Warning" />
|
||||
<Rule Id="C28224" Action="Warning" />
|
||||
<Rule Id="C28225" Action="Warning" />
|
||||
<Rule Id="C28226" Action="Warning" />
|
||||
<Rule Id="C28227" Action="Warning" />
|
||||
<Rule Id="C28228" Action="Warning" />
|
||||
<Rule Id="C28229" Action="Warning" />
|
||||
<Rule Id="C28230" Action="Warning" />
|
||||
<Rule Id="C28231" Action="Warning" />
|
||||
<Rule Id="C28232" Action="Warning" />
|
||||
<Rule Id="C28233" Action="Warning" />
|
||||
<Rule Id="C28234" Action="Warning" />
|
||||
<Rule Id="C28235" Action="Warning" />
|
||||
<Rule Id="C28236" Action="Warning" />
|
||||
<Rule Id="C28237" Action="Warning" />
|
||||
<Rule Id="C28238" Action="Warning" />
|
||||
<Rule Id="C28239" Action="Warning" />
|
||||
<Rule Id="C28240" Action="Warning" />
|
||||
<Rule Id="C28241" Action="Warning" />
|
||||
<Rule Id="C28243" Action="Warning" />
|
||||
<Rule Id="C28245" Action="Warning" />
|
||||
<Rule Id="C28246" Action="Warning" />
|
||||
<Rule Id="C28250" Action="Warning" />
|
||||
<!-- <Rule Id="C28251" Action="Warning" /> this may be real but it's damn annoying: inconsistent annotation for function -->
|
||||
<Rule Id="C28252" Action="Warning" />
|
||||
<Rule Id="C28253" Action="Warning" />
|
||||
<Rule Id="C28254" Action="Warning" />
|
||||
<Rule Id="C28262" Action="Warning" />
|
||||
<Rule Id="C28263" Action="Warning" />
|
||||
<Rule Id="C28267" Action="Warning" />
|
||||
<Rule Id="C28272" Action="Warning" />
|
||||
<Rule Id="C28273" Action="Warning" />
|
||||
<Rule Id="C28275" Action="Warning" />
|
||||
<Rule Id="C28279" Action="Warning" />
|
||||
<Rule Id="C28280" Action="Warning" />
|
||||
<Rule Id="C28282" Action="Warning" />
|
||||
<Rule Id="C28285" Action="Warning" />
|
||||
<Rule Id="C28286" Action="Warning" />
|
||||
<Rule Id="C28287" Action="Warning" />
|
||||
<Rule Id="C28288" Action="Warning" />
|
||||
<Rule Id="C28289" Action="Warning" />
|
||||
<Rule Id="C28290" Action="Warning" />
|
||||
<Rule Id="C28291" Action="Warning" />
|
||||
<Rule Id="C28300" Action="Warning" />
|
||||
<Rule Id="C28301" Action="Warning" />
|
||||
<Rule Id="C28302" Action="Warning" />
|
||||
<Rule Id="C28303" Action="Warning" />
|
||||
<Rule Id="C28304" Action="Warning" />
|
||||
<Rule Id="C28305" Action="Warning" />
|
||||
<Rule Id="C28308" Action="Warning" />
|
||||
<Rule Id="C28309" Action="Warning" />
|
||||
<Rule Id="C28350" Action="Warning" />
|
||||
<Rule Id="C28351" Action="Warning" />
|
||||
</Rules>
|
||||
</RuleSet>
|
||||
Binary file not shown.
@@ -1,84 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Exit on any failure:
|
||||
set -e
|
||||
|
||||
# Verbose:
|
||||
set -x
|
||||
|
||||
if [ "$1" != "" ]; then
|
||||
BUILDCONFIG="$*"
|
||||
fi
|
||||
|
||||
if [[ "$OSTYPE" == "freebsd"* ]]; then
|
||||
export MAKE="gmake -j4"
|
||||
else
|
||||
export MAKE="make -j4"
|
||||
fi
|
||||
|
||||
export CPPFLAGS="-DFAKELAG_CONFIGURABLE -DNOREMOVETMP"
|
||||
|
||||
# !! skipped for now: extras/build-tests/nix/select-config $BUILDCONFIG !!
|
||||
# !! temporary use this:
|
||||
cp extras/build-tests/nix/configs/default ./config.settings
|
||||
|
||||
# Debian 8 workaround:
|
||||
if lsb_release -av 2>&1|egrep 'Debian.*jessie'; then
|
||||
echo "Disabling ASan due to false positives on deb8"
|
||||
echo 'EXTRAPARA="--enable-werror --disable-asan"' >>config.settings
|
||||
fi
|
||||
if uname -s|grep -i freebsd; then
|
||||
echo "Disabling ASan on FreeBSD due to 100% CPU loop in OpenSSL initialization routine"
|
||||
echo 'EXTRAPARA="--enable-werror --disable-asan"' >>config.settings
|
||||
fi
|
||||
|
||||
# If SSLDIR is set the environment, this overrides config.settings
|
||||
# Used for example in the openssl3 build tests.
|
||||
if [ "$SSLDIR" != "" ]; then
|
||||
echo 'SSLDIR="'"$SSLDIR"'"' >>config.settings
|
||||
fi
|
||||
|
||||
# Read config.settings, this makes a couple of variables available to us.
|
||||
. ./config.settings
|
||||
if [ "$SSLDIR" != "" ]; then
|
||||
# In case we build local openssl/libressl
|
||||
export LD_LIBRARY_PATH="$SSLDIR/lib"
|
||||
fi
|
||||
./Config -quick || (tail -n 5000 config.log; exit 1)
|
||||
$MAKE
|
||||
yes ''|make pem
|
||||
make
|
||||
./unrealircd module install third/dumpcmds
|
||||
make install
|
||||
|
||||
set +x
|
||||
echo ""
|
||||
echo "***********************************************"
|
||||
echo "UnrealIRCd build & install successful."
|
||||
echo "***********************************************"
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
otool -L ~/unrealircd/bin/unrealircd
|
||||
else
|
||||
ldd ~/unrealircd/bin/unrealircd
|
||||
fi
|
||||
|
||||
if [ "$BUILDCONFIG" = "local-curl" ]; then
|
||||
# We broke the system significantly earlier that build tests
|
||||
# won't work (eg: 'git' is uninstallable). Don't bother
|
||||
# running the tests. I don't expect a 'local-curl' specific
|
||||
# bug anyway.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
# 'rake' doesn't work. have to figure that one out..
|
||||
echo "Not running test on OS X for now"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
#echo "Now running UnrealIRCd test framework..."
|
||||
#set -x
|
||||
#extras/build-tests/nix/run-tests
|
||||
@@ -1,24 +0,0 @@
|
||||
#
|
||||
BASEPATH=$HOME/unrealircd
|
||||
BINDIR=$HOME/unrealircd/bin
|
||||
DATADIR=$HOME/unrealircd/data
|
||||
CONFDIR=$HOME/unrealircd/conf
|
||||
MODULESDIR=$HOME/unrealircd/modules
|
||||
LOGDIR=$HOME/unrealircd/logs
|
||||
CACHEDIR=$HOME/unrealircd/cache
|
||||
DOCDIR=$HOME/unrealircd/doc
|
||||
TMPDIR=$HOME/unrealircd/tmp
|
||||
PRIVATELIBDIR=$HOME/unrealircd/lib
|
||||
PREFIXAQ="1"
|
||||
MAXCONNECTIONS="1024"
|
||||
NICKNAMEHISTORYLENGTH="2000"
|
||||
DEFPERM="0600"
|
||||
SSLDIR=""
|
||||
REMOTEINC=""
|
||||
CURLDIR=""
|
||||
SHOWLISTMODES="1"
|
||||
NOOPEROVERRIDE=""
|
||||
OPEROVERRIDEVERIFY=""
|
||||
GENCERTIFICATE="0"
|
||||
EXTRAPARA="--enable-werror --enable-asan"
|
||||
ADVANCED=""
|
||||
@@ -1,60 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This script fires up a two-server IRC network and runs the test framework
|
||||
#
|
||||
|
||||
# Exit on error:
|
||||
set -e
|
||||
|
||||
# Verbose:
|
||||
set -x
|
||||
|
||||
# Kill old instances
|
||||
killall -9 unrealircd || true
|
||||
# Remove old junk
|
||||
rm -rf cipherscan/ unrealircd-tests/
|
||||
|
||||
if [ ! -d ~/cipherscan ]; then
|
||||
# Install 'cipherscan'
|
||||
git clone -q https://github.com/mozilla/cipherscan
|
||||
fi
|
||||
|
||||
# Install 'unrealircd-tests'
|
||||
git clone -q https://github.com/unrealircd/unrealircd-tests.git
|
||||
cd unrealircd-tests
|
||||
|
||||
# FreeBSD has various issues with the tests from us and others,
|
||||
# better set a flag to keep it simple:
|
||||
FREEBSD=0
|
||||
if uname -a|grep -q FreeBSD; then
|
||||
FREEBSD=1
|
||||
fi
|
||||
|
||||
# Run the test framework, testing both services:
|
||||
if [ "$FREEBSD" = 1 ]; then
|
||||
# FreeBSD runs without services since they fail mysteriously:
|
||||
./run -services none || exit 1
|
||||
else
|
||||
# Linux tests both with anope and atheme services:
|
||||
./run -services anope || exit 1
|
||||
./run -services atheme || exit 1
|
||||
fi
|
||||
|
||||
# Database writing/reading tests
|
||||
## unencrypted:
|
||||
./run -services none -boot tests/db/writing/* || exit 1
|
||||
./run -services none -keepdbs -boot tests/db/reading/* || exit 1
|
||||
## encrypted:
|
||||
./run -services none -include db_crypted.conf -boot tests/db/writing/* || exit 1
|
||||
./run -services none -include db_crypted.conf -keepdbs -boot tests/db/reading/* || exit 1
|
||||
|
||||
# Do cipherscan test at the end
|
||||
# Has problems on non-Linux-64-bit, so we skip there:
|
||||
if [ "$FREEBSD" = 0 -a "$HOSTNAME" != "ub18-ia32" ]; then
|
||||
sleep 2
|
||||
cd ../extras/tests/tls
|
||||
./tls-tests
|
||||
cd -
|
||||
fi
|
||||
|
||||
killall -15 unrealircd atheme-services services anope || true
|
||||
@@ -1,14 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This is a simple wrapper script that will run the tests
|
||||
# When finished, either due to succes or failure,
|
||||
# it will kill the ircd
|
||||
#
|
||||
# Also, it makes sure the job times out (is killed)
|
||||
# in case it misbehaves
|
||||
#
|
||||
set +ex
|
||||
timeout --kill-after=5 600 extras/build-tests/nix/run-tests
|
||||
EX="$?"
|
||||
killall -9 valgrind valgrind.bin memcheck memcheck-amd64-linux memcheck-x86-linux ircd unrealircd val 1>/dev/null 2>&1
|
||||
exit $EX
|
||||
@@ -1,114 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This is a helper script for travis-ci builds and our own FreeBSD test machine.
|
||||
# It is not meant to be used by end-users
|
||||
#
|
||||
|
||||
function fail()
|
||||
{
|
||||
echo "select-config failed: $*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
function build_ssl {
|
||||
DIR="$2"
|
||||
URL="$1/$2.tar.gz"
|
||||
savewd="$PWD"
|
||||
cd ~
|
||||
wget "$URL" || exit 1
|
||||
tar xzf $DIR.tar.gz
|
||||
cd "$DIR"
|
||||
(./configure --prefix=$HOME/ssl 1>/dev/null 2>&1 || ./config --prefix=$HOME/ssl -fPIC 1>/dev/null 2>&1 ) || fail "build_ssl: configure/config failed"
|
||||
(make -j2 1>/dev/null 2>&1 && make install 1>/dev/null 2>&1) || fail "build_ssl: make failed"
|
||||
cd "$savewd"
|
||||
echo "SSLDIR=$HOME/ssl" >>config.settings
|
||||
}
|
||||
|
||||
if [ ! -d extras ]; then
|
||||
echo "This tool is supposed to be run from the source root, so ~/unrealircd-5.0.x or similar"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -x
|
||||
|
||||
# Take default settings as a starter..
|
||||
cp extras/build-tests/nix/configs/default ./config.settings
|
||||
|
||||
# Libtool is required for the other options..
|
||||
# Also for our FreeBSD machine we have to uninstall some stuff since a clean
|
||||
# environment is not guaranteed...
|
||||
if [ "$OSTYPE" = "linux-gnu" ]; then
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get install libtool -qq
|
||||
elif [[ "$OSTYPE" == "freebsd"* ]]; then
|
||||
sudo pkg install -y libtool
|
||||
sudo pkg remove -y c-ares
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
brew update
|
||||
brew install openssl
|
||||
else
|
||||
echo "OS not correctly detected ($OSTYPE). Aborting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "*****************************************************************"
|
||||
echo "SELECTED BUILD OPTIONS: $*"
|
||||
echo "*****************************************************************"
|
||||
|
||||
while [ "$1" ]
|
||||
do
|
||||
echo "Processing option $1..."
|
||||
if [ "$1" = "system-cares" ]; then
|
||||
if [ "$OSTYPE" = "linux-gnu" ]; then
|
||||
sudo apt-get install libc-ares-dev -qq
|
||||
elif [[ "$OSTYPE" == "freebsd"* ]]; then
|
||||
sudo pkg install -y c-ares
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
brew install c-ares
|
||||
fi
|
||||
elif [ "$1" = "system-curl" ]; then
|
||||
echo 'REMOTEINC=1' >>config.settings
|
||||
if [ "$OSTYPE" = "linux-gnu" ]; then
|
||||
sudo apt-get install libcurl4-openssl-dev -qq
|
||||
echo 'CURLDIR=/usr' >>config.settings
|
||||
elif [[ "$OSTYPE" == "freebsd"* ]]; then
|
||||
sudo pkg install -y curl
|
||||
echo 'CURLDIR=/usr/local' >>config.settings
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
brew install c-ares curl
|
||||
echo 'CURLDIR=/usr/local/opt/curl' >>config.settings
|
||||
fi
|
||||
elif [ "$1" = "local-curl" ]; then
|
||||
if [ "$OSTYPE" = "linux-gnu" ]; then
|
||||
sudo apt-get remove libcurl4-openssl-dev libcurl3-gnutls libcurl3 -qq
|
||||
elif [[ "$OSTYPE" == "freebsd"* ]]; then
|
||||
sudo pkg remove -y curl #NOTE: unfortunately this also removes 'git' :D
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
echo "No need to remove curl since it's not installed. Or at least I hope so..."
|
||||
fi
|
||||
echo 'REMOTEINC=1' >>config.settings
|
||||
echo "CURLDIR=`pwd`/extras/curl" >>config.settings
|
||||
elif [ "$1" = "libressl-27" ]; then
|
||||
build_ssl https://ftp.openbsd.org/pub/OpenBSD/LibreSSL libressl-2.7.5
|
||||
elif [ "$1" = "libressl-28" ]; then
|
||||
build_ssl https://ftp.openbsd.org/pub/OpenBSD/LibreSSL libressl-2.8.3
|
||||
elif [ "$1" = "libressl-29" ]; then
|
||||
build_ssl https://ftp.openbsd.org/pub/OpenBSD/LibreSSL libressl-2.9.0
|
||||
elif [ "$1" = "openssl-102" ]; then
|
||||
build_ssl https://www.openssl.org/source openssl-1.0.2q
|
||||
elif [ "$1" = "openssl-110" ]; then
|
||||
build_ssl https://www.openssl.org/source openssl-1.1.0j
|
||||
elif [ "$1" = "openssl-111" ]; then
|
||||
build_ssl https://www.openssl.org/source openssl-1.1.1a
|
||||
else
|
||||
echo "Unknown option $1"
|
||||
exit 1
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
echo "NOTE: Not building with -Werror for now on macOS..."
|
||||
else
|
||||
echo 'EXTRAPARA="--enable-werror"' >>config.settings
|
||||
fi
|
||||
@@ -1,106 +0,0 @@
|
||||
echo on
|
||||
|
||||
rem Temporarily hardcoded:
|
||||
set TARGET=Visual Studio 2019
|
||||
set SHORTNAME=vs2019
|
||||
|
||||
rem Initialize Visual Studio variables
|
||||
if "%TARGET%" == "Visual Studio 2017" call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
|
||||
if "%TARGET%" == "Visual Studio 2019" call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
|
||||
|
||||
rem Installing tools
|
||||
rem only for appveyor:
|
||||
rem cinst unrar -y
|
||||
rem cinst unzip -y
|
||||
rem cinst innosetup -y
|
||||
|
||||
rem Installing UnrealIRCd dependencies
|
||||
cd \projects
|
||||
mkdir unrealircd-5-libs
|
||||
cd unrealircd-5-libs
|
||||
curl -fsS -o unrealircd-libraries-5-devel.zip https://www.unrealircd.org/files/dev/win/libs/unrealircd-libraries-5-devel.zip
|
||||
unzip unrealircd-libraries-5-devel.zip
|
||||
copy dlltool.exe \users\user\worker\unreal5-w10\build /y
|
||||
|
||||
rem for appveyor: cd \projects\unrealircd
|
||||
cd \users\user\worker\unreal5-w10\build
|
||||
|
||||
rem Now the actual build
|
||||
call extras\build-tests\windows\compilecmd\%SHORTNAME%.bat
|
||||
|
||||
rem The above command will fail, due to missing symbol file
|
||||
rem However the symbol file can only be generated after the above command
|
||||
rem So... we create the symbolfile...
|
||||
nmake -f makefile.windows SYMBOLFILE
|
||||
|
||||
rem And we re-run the exact same command:
|
||||
call extras\build-tests\windows\compilecmd\%SHORTNAME%.bat
|
||||
if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
||||
|
||||
rem Compile dependencies for unrealircd-tests -- this doesn't belong here though..
|
||||
curl -fsS -o src\modules\third\fakereputation.c https://raw.githubusercontent.com/unrealircd/unrealircd-tests/master/serverconfig/unrealircd/modules/fakereputation.c
|
||||
call extras\build-tests\windows\compilecmd\%SHORTNAME%.bat CUSTOMMODULE MODULEFILE=fakereputation
|
||||
if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
||||
|
||||
rem Convert c:\dev to c:\projects\unrealircd-5-libs
|
||||
rem TODO: should use environment variable in innosetup script?
|
||||
sed -i "s/c:\\dev\\unrealircd-5-libs/c:\\projects\\unrealircd-5-libs/gi" src\windows\unrealinst.iss
|
||||
|
||||
rem Build installer file
|
||||
"c:\Program Files (x86)\Inno Setup 5\iscc.exe" /Q- src\windows\unrealinst.iss
|
||||
if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
||||
|
||||
rem Show some proof
|
||||
ren mysetup.exe unrealircd-dev-build.exe
|
||||
dir unrealircd-dev-build.exe
|
||||
sha256sum unrealircd-dev-build.exe
|
||||
|
||||
rem Kill any old instances, just to be sure
|
||||
taskkill -im unrealircd.exe -f
|
||||
sleep 2
|
||||
rem Just a safety measure so we don't end up testing
|
||||
rem some old version...
|
||||
del "C:\Program Files\UnrealIRCd 5\bin\unrealircd.exe"
|
||||
|
||||
echo Running installer...
|
||||
start /WAIT unrealircd-dev-build.exe /VERYSILENT /LOG=setup.log
|
||||
if %ERRORLEVEL% NEQ 0 goto installerfailed
|
||||
|
||||
rem Upload artifact
|
||||
rem appveyor PushArtifact unrealircd-dev-build.exe
|
||||
rem if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
||||
|
||||
rem Install 'unrealircd-tests'
|
||||
cd ..
|
||||
rd /q/s unrealircd-tests
|
||||
git clone https://github.com/unrealircd/unrealircd-tests.git
|
||||
if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
||||
cd unrealircd-tests
|
||||
dir
|
||||
|
||||
rem All tests except db:
|
||||
"C:\Program Files\Git\bin\bash.exe" ./runwin
|
||||
if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
||||
|
||||
rem Test unencrypted db's:
|
||||
"C:\Program Files\Git\bin\bash.exe" ./runwin -boot tests/db/writing/*
|
||||
if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
||||
"C:\Program Files\Git\bin\bash.exe" ./runwin -keepdbs -boot tests/db/reading/*
|
||||
if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
||||
|
||||
rem Test encrypted db's:
|
||||
"C:\Program Files\Git\bin\bash.exe" ./runwin -include db_crypted.conf -boot tests/db/writing/*
|
||||
if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
||||
"C:\Program Files\Git\bin\bash.exe" ./runwin -include db_crypted.conf -keepdbs -boot tests/db/reading/*
|
||||
if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
||||
|
||||
goto end
|
||||
|
||||
|
||||
|
||||
:installerfailed
|
||||
type setup.log
|
||||
echo INSTALLATION FAILED
|
||||
EXIT /B 1
|
||||
|
||||
:end
|
||||
@@ -1,21 +0,0 @@
|
||||
rem Build command for Visual Studio 2019
|
||||
|
||||
nmake -f makefile.windows ^
|
||||
LIBRESSL_INC_DIR="c:\projects\unrealircd-5-libs\libressl\include" ^
|
||||
LIBRESSL_LIB_DIR="c:\projects\unrealircd-5-libs\libressl\lib" ^
|
||||
SSLLIB="crypto-46.lib ssl-48.lib" ^
|
||||
USE_REMOTEINC=1 ^
|
||||
LIBCURL_INC_DIR="c:\projects\unrealircd-5-libs\curl\include" ^
|
||||
LIBCURL_LIB_DIR="c:\projects\unrealircd-5-libs\curl\builds\libcurl-vc-x64-release-dll-ssl-dll-cares-dll-ipv6-obj-lib" ^
|
||||
CARES_LIB_DIR="c:\projects\unrealircd-5-libs\c-ares\msvc\cares\dll-release" ^
|
||||
CARES_INC_DIR="c:\projects\unrealircd-5-libs\c-ares\include" ^
|
||||
CARESLIB="cares.lib" ^
|
||||
PCRE2_INC_DIR="c:\projects\unrealircd-5-libs\pcre2\include" ^
|
||||
PCRE2_LIB_DIR="c:\projects\unrealircd-5-libs\pcre2\lib" ^
|
||||
PCRE2LIB="pcre2-8.lib" ^
|
||||
ARGON2_LIB_DIR="c:\projects\unrealircd-5-libs\argon2\vs2015\build" ^
|
||||
ARGON2_INC_DIR="c:\projects\unrealircd-5-libs\argon2\include" ^
|
||||
ARGON2LIB="Argon2RefDll.lib" ^
|
||||
SODIUM_LIB_DIR="c:\projects\unrealircd-5-libs\libsodium\bin\x64\Release\v142\dynamic" ^
|
||||
SODIUM_INC_DIR="c:\projects\unrealircd-5-libs\libsodium\src\libsodium\include" ^
|
||||
SODIUMLIB="libsodium.lib" %*
|
||||
Binary file not shown.
@@ -1,98 +0,0 @@
|
||||
#!/bin/sh
|
||||
URL="https://www.unrealircd.org/files/curl-latest.tar.gz"
|
||||
OUTF="curl-latest.tar.gz"
|
||||
OUTD="curl-latest"
|
||||
ARESPATH="`pwd`/extras/c-ares"
|
||||
UNREALDIR="`pwd`"
|
||||
CARESVERSION="1.17.2"
|
||||
LIBDIR="$1"
|
||||
|
||||
if [ "x$1" = "x" ]; then
|
||||
echo "You should (no longer) run this program directly."
|
||||
echo "It will be invoked by ./Config"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f src/parse.c ]; then
|
||||
if [ -f ../src/parse.c ]; then
|
||||
cd ..
|
||||
else
|
||||
echo "Please run this program from your UnrealIRCd directory"
|
||||
echo "(usually $HOME/unrealircd-5.0.X or something like that)"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
wget --version 1>/dev/null 2>&1
|
||||
if [ "$?" = 0 ]; then
|
||||
FETCHER="wget"
|
||||
else
|
||||
fetch --version 1>/dev/null 2>&1
|
||||
if [ "$?" = 0 ]; then
|
||||
FETCHER="fetch"
|
||||
else
|
||||
lynx --version 1>/dev/null 2>&1
|
||||
if [ "$?" = 0 ]; then
|
||||
FETCHER="lynx"
|
||||
else
|
||||
echo "ERROR: unable to find wget/fetch/lynx, please install at least one of these programs"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d tmp ]; then
|
||||
mkdir tmp || exit 1
|
||||
fi
|
||||
|
||||
cd tmp || exit 1
|
||||
|
||||
rm -f "$OUTF"
|
||||
|
||||
if [ "$FETCHER" = "wget" ]; then
|
||||
wget -O "$OUTF" "$URL"
|
||||
elif [ "$FETCHER" = "lynx" ]; then
|
||||
lynx -dump "$URL" >"$OUTF"
|
||||
elif [ "$FETCHER" = "fetch" ]; then
|
||||
cd tmp #todo: find out the cmd line parameter ;)
|
||||
fetch "$URL"
|
||||
fi
|
||||
|
||||
if [ "$?" != 0 ]; then
|
||||
echo "ERROR: Something went wrong while trying to download $URL"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -rf "$OUTD" # remove old directory prior to extracting
|
||||
tar xzf "$OUTF" || exit 1
|
||||
|
||||
|
||||
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
|
||||
c="\c"
|
||||
else
|
||||
n="-n"
|
||||
fi
|
||||
|
||||
if [ ! -d "$ARESPATH/lib" ]; then
|
||||
echo "c-ares has not been build yet, let's do that now..."
|
||||
cd ../extras/
|
||||
tar xzf c-ares.tar.gz || exit 1
|
||||
cd c-ares-$CARESVERSION || exit 1
|
||||
./configure --prefix=$ARESPATH || exit 1
|
||||
(make && make install) || exit 1
|
||||
cd ../../tmp/
|
||||
echo "c-ares built."
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# We assume curl has been packaged in a way it will extract to "$OUTD"/
|
||||
cd "$OUTD" || exit 1
|
||||
|
||||
echo "Building and installing libcurl"
|
||||
CPPFLAGS="-I$ARESPATH/include" ./configure --prefix=$UNREALDIR/extras/curl --libdir=$LIBDIR --enable-shared \
|
||||
--enable-ares=$ARESPATH --with-openssl
|
||||
cp -R $ARESPATH/lib ares
|
||||
make && make install
|
||||
|
||||
#cp $ARESPATH/lib/libcares.a $HOME/curl/lib
|
||||
# that isn't needed anymore as the lib is already in unreal...
|
||||
@@ -1,17 +0,0 @@
|
||||
Welcome to the doxygen-generated documentation for the UnrealIRCd 5.x API.
|
||||
This is intended **for developers only!**
|
||||
|
||||
Note that UnrealIRCd 5 is the **old stable**, it is no longer receiving new
|
||||
features and is bug fix only. If you are developing a new 3rd party module
|
||||
then you are suggested to develop for UnrealIRCd 6 and go to the
|
||||
[UnrealIRCd 6 module api](https://www.unrealircd.org/api/6/) page instead.
|
||||
|
||||
## Wiki documentation ##
|
||||
* Be sure to check the [Module API](https://www.unrealircd.org/docs/Dev:Module_API) article on the wiki
|
||||
as well, which provides a better *overview* of the module API
|
||||
|
||||
## Doxygen docs ##
|
||||
* [Functions and structs ordered by purpose](modules.html) - **this contains most of the module API!**
|
||||
* [The most common structs](group__CommonStructs.html) - like Client, User, Server, Channel, etc.
|
||||
* [All structs](classes.html) - in a simple alphabetical index
|
||||
* [Browse by source file](dir_68267d1309a1af8e8297ef4c3efbcdba.html) - see all src/*.c files and their (documented) functions.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +0,0 @@
|
||||
code {
|
||||
border: 1px solid #C4CFE5;
|
||||
background-color: #FBFCFD;
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
<!-- HTML header for doxygen 1.8.13-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen $doxygenversion"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<!--BEGIN PROJECT_NAME--><title>$projectname Module API: $title</title><!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
|
||||
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="$relpath^jquery.js"></script>
|
||||
<script type="text/javascript" src="$relpath^dynsections.js"></script>
|
||||
$treeview
|
||||
$search
|
||||
$mathjax
|
||||
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
|
||||
$extrastylesheet
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
|
||||
<!--BEGIN TITLEAREA-->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<!--BEGIN PROJECT_LOGO-->
|
||||
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"/></td>
|
||||
<!--END PROJECT_LOGO-->
|
||||
<!--BEGIN PROJECT_NAME-->
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">$projectname
|
||||
<!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">Module API $projectnumber</span><!--END PROJECT_NUMBER-->
|
||||
</div>
|
||||
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
|
||||
</td>
|
||||
<!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME-->
|
||||
<!--BEGIN PROJECT_BRIEF-->
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectbrief">$projectbrief</div>
|
||||
</td>
|
||||
<!--END PROJECT_BRIEF-->
|
||||
<!--END !PROJECT_NAME-->
|
||||
<!--BEGIN DISABLE_INDEX-->
|
||||
<!--BEGIN SEARCHENGINE-->
|
||||
<td>$searchbox</td>
|
||||
<!--END SEARCHENGINE-->
|
||||
<!--END DISABLE_INDEX-->
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!--END TITLEAREA-->
|
||||
<!-- end header part -->
|
||||
Binary file not shown.
@@ -1,40 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This script tries to upgrade spamfilter.conf from an old
|
||||
# version that uses 'posix' spamfilters to a bit more recent
|
||||
# version with examples using 'regex' spamfilters.
|
||||
# This so fewer users end up with a headache when upgrading
|
||||
# to UnrealIRCd 4.2.3+.
|
||||
#
|
||||
|
||||
if [ -f spamfilter.conf.patch ]; then
|
||||
F="`pwd`/spamfilter.conf.patch"
|
||||
elif [ -f extras/patches/spamfilter.conf.patch ]; then
|
||||
F="`pwd`/extras/patches/spamfilter.conf.patch"
|
||||
else
|
||||
echo "WARNING: spamfilter.conf.patch not found"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -f "$F" ]; then
|
||||
echo "WARNING: spamfilter.conf.patch not found in round two"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "" ]; then
|
||||
echo "ERROR: No target confdir specified."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -f "$1/spamfilter.conf" ]; then
|
||||
echo "WARNING: no spamfilter.conf found in $1 -- strange"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cd "$1" || exit 1
|
||||
cat "$F"|patch -p0 --dry-run -N 1>/dev/null 2>&1
|
||||
if [ "$?" = 0 ]; then
|
||||
# Patch succeeded, patch now!
|
||||
echo "Upgrading examples in your spamfilter.conf..."
|
||||
cat "$F"|patch -p0 -N
|
||||
fi
|
||||
@@ -1,328 +0,0 @@
|
||||
--- spamfilter.conf.old 2015-06-27 18:29:01.084559805 +0200
|
||||
+++ spamfilter.conf 2019-04-04 18:29:38.390647262 +0200
|
||||
@@ -1,232 +1,154 @@
|
||||
/*
|
||||
- * This an example spamfilter file, it contains several
|
||||
- * real and useful spamfilters. This should give you an
|
||||
- * idea of how powerful spamfilter can be in real-life
|
||||
- * situations.
|
||||
+ * This configuration file contains example spamfilter rules.
|
||||
+ * They are real rules that were useful a long time ago.
|
||||
+ * Since 2005 these rules are no longer maintained.
|
||||
+ * The main purpose nowadays is to serve as an example
|
||||
+ * to give you an idea of how powerful spamfilters can
|
||||
+ * be in real-life situations.
|
||||
*
|
||||
- * $Id$
|
||||
+ * Documentation on spamfilter is available at:
|
||||
+ * https://www.unrealircd.org/docs/Spamfilter
|
||||
*/
|
||||
|
||||
-/* Guidelines on the 'action' field:
|
||||
- * As a general rule we use 'action block' for any newly added
|
||||
- * spamfilters at first, later on (after knowing about false
|
||||
- * positives) we might change some to viruschan/kill/gline/etc..
|
||||
+/* General note:
|
||||
+ * If you want to use a \ in a spamfilter, or in fact
|
||||
+ * anywhere in the configuration file, then you need
|
||||
+ * to escape this to \\ instead.
|
||||
*/
|
||||
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "\x01DCC (SEND|RESUME)[ ]+\"(.+ ){20}";
|
||||
- target { private; channel; };
|
||||
- action kill;
|
||||
- reason "mIRC 6.0-6.11 exploit attempt";
|
||||
-};
|
||||
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "\x01DCC (SEND|RESUME).{225}";
|
||||
- target { private; channel; };
|
||||
- action kill;
|
||||
- reason "Possible mIRC 6.12 exploit attempt";
|
||||
-};
|
||||
+/* First some spamfilters with match-type 'simple'.
|
||||
+ * The only matchers available are * and ?
|
||||
+ * PRO's: very fast, easy matching: everyone can do this.
|
||||
+ * CON's: limited ability to fine-tune spamfilters
|
||||
+ */
|
||||
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "Come watch me on my webcam and chat /w me :-\) http://.+:\d+/me\.mpg";
|
||||
+ match-type simple;
|
||||
+ match "Come watch me on my webcam and chat /w me :-) http://*:*/me.mpg";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by fyle trojan: see http://www.sophos.com/virusinfo/analyses/trojfylexa.html";
|
||||
};
|
||||
|
||||
+/* This signature uses a \ which has to escaped to \\ in the configuration file */
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "Speed up your mIRC DCC Transfer by up to 75%.*www\.freewebs\.com/mircupdate/mircspeedup\.exe";
|
||||
- target private;
|
||||
- action gline;
|
||||
- reason "Infected by mirseed trojan: see http://www.sophos.com/virusinfo/analyses/trojmirseeda.html";
|
||||
-};
|
||||
-
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "^http://www\.angelfire\.com/[a-z0-9]+/[a-z0-9]+/[a-z_]+\.jpg <- .*!";
|
||||
- target private;
|
||||
+ match-type simple;
|
||||
+ match "C:\\WINNT\\system32\\*.zip";
|
||||
+ target dcc;
|
||||
action block;
|
||||
- reason "Infected by fagot worm: see http://www.f-secure.com/v-descs/fagot.shtml";
|
||||
+ reason "Infected by Gaggle worm?";
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "^FREE PORN: http://free:porn@([0-9]{1,3}\.){3}[0-9]{1,3}:8180$";
|
||||
+ match-type simple;
|
||||
+ match "Speed up your mIRC DCC Transfer by up to 75%*www.freewebs.com/mircupdate/mircspeedup.exe";
|
||||
target private;
|
||||
action gline;
|
||||
- reason "Infected by aplore worm: see http://www.f-secure.com/v-descs/aplore.shtml";
|
||||
-};
|
||||
-
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "^!login Wasszup!$";
|
||||
- target channel;
|
||||
- action gline;
|
||||
- reason "Attempting to login to a GTBot";
|
||||
-};
|
||||
-
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "^!login grrrr yeah baby!$";
|
||||
- target channel;
|
||||
- action gline;
|
||||
- reason "Attempting to login to a GTBot";
|
||||
-};
|
||||
-
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "^!packet ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,15}";
|
||||
- target channel;
|
||||
- action gline;
|
||||
- reason "Attempting to use a GTBot";
|
||||
-};
|
||||
-
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "^!icqpagebomb ([0-9]{1,15} ){2}.+";
|
||||
- target channel;
|
||||
- action gline;
|
||||
- reason "Attempting to use a GTBot";
|
||||
+ reason "Infected by mirseed trojan: see http://www.sophos.com/virusinfo/analyses/trojmirseeda.html";
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "^!pfast [0-9]{1,15} ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,5}$";
|
||||
- target channel;
|
||||
+ match-type simple;
|
||||
+ match "STOP SPAM, USE THIS COMMAND: //write nospam $decode(*) | .load -rs nospam | //mode $me +R";
|
||||
+ target private;
|
||||
action gline;
|
||||
- reason "Attempting to use a GTBot";
|
||||
+ reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
|
||||
};
|
||||
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "^!portscan ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,5} [0-9]{1,5}$";
|
||||
- target channel;
|
||||
- action gline;
|
||||
- reason "Attempting to use a GTBot";
|
||||
-};
|
||||
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "^.u(dp)? ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,15} [0-9]{1,15} [0-9]{1,15}( [0-9])*$";
|
||||
- target channel;
|
||||
- action gline;
|
||||
- reason "Attempting to use an SDBot";
|
||||
-};
|
||||
+/* Now spamfilters of type 'regex'.
|
||||
+ * These use powerful regular expressions (Perl/PCRE style)
|
||||
+ * You may have to learn more about "regex" first before you
|
||||
+ * can use them. For example the dot ('.') has special meaning.
|
||||
+ */
|
||||
|
||||
+/* This regex shows a pattern which requires 20 paramaters,
|
||||
+ * such as "x x x x x x x x x x x x x x x x x x x x"
|
||||
+ */
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "^.syn ((([0-9]{1,3}\.){3}[0-9]{1,3})|([a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\.[a-zA-Z0-9_.-]+)) [0-9]{1,5} [0-9]{1,15} [0-9]{1,15}";
|
||||
- target { channel; private; };
|
||||
- action gline;
|
||||
- reason "Attempting to use a SpyBot";
|
||||
+ match-type regex;
|
||||
+ match "\x01DCC (SEND|RESUME)[ ]+\"(.+ ){20}";
|
||||
+ target { private; channel; };
|
||||
+ action kill;
|
||||
+ reason "mIRC 6.0-6.11 exploit attempt";
|
||||
};
|
||||
|
||||
+/* Similarly, this regex shows a pattern that matches
|
||||
+ * against at least 225 characters in length.
|
||||
+ */
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "^porn! porno! http://.+\/sexo\.exe";
|
||||
- target private;
|
||||
- action gline;
|
||||
- reason "Infected by soex trojan: see http://www.trendmicro.com/vinfo/virusencyclo/default5.asp?VName=TROJ%5FSOEX.A";
|
||||
+ match-type regex;
|
||||
+ match "\x01DCC (SEND|RESUME).{225}";
|
||||
+ target { private; channel; };
|
||||
+ action kill;
|
||||
+ reason "Possible mIRC 6.12 exploit attempt";
|
||||
};
|
||||
|
||||
+/* Earlier you saw an example of a $decode exploit which used
|
||||
+ * match-type 'simple' and - indeed - the filter was quite simple.
|
||||
+ * The following uses a regex with a similar example.
|
||||
+ * Regular expressions are very powerful but here you can see
|
||||
+ * that it actually complicates writing a filter quite a bit.
|
||||
+ * With regex in this filter we need to escape the ( and all
|
||||
+ * the dots, question marks, etc. if we want to match these
|
||||
+ * characters in literal text.
|
||||
+ */
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "(^wait a minute plz\. i am updating my site|.*my erotic video).*http://.+/erotic(a)?/myvideo\.exe$";
|
||||
+ match-type regex;
|
||||
+ match "^Want To Be An IRCOp\? Try This New Bug Type: //write \$decode\(.+=.?,m\) \| \.load -rs \$decode\(.+=.?,m\)$";
|
||||
target private;
|
||||
- action gline;
|
||||
- reason "Infected by some trojan (erotica?)";
|
||||
+ action block;
|
||||
+ reason "Spamming users with an mIRC trojan. Type '/unload -rs newb' to remove the trojan.";
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "^STOP SPAM, USE THIS COMMAND: //write nospam \$decode\(.+\) \| \.load -rs nospam \| //mode \$me \+R$";
|
||||
+ match-type regex;
|
||||
+ match "^http://www\.angelfire\.com/[a-z0-9]+/[a-z0-9]+/[a-z_]+\.jpg <- .*!";
|
||||
target private;
|
||||
- action gline;
|
||||
- reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
|
||||
+ action block;
|
||||
+ reason "Infected by fagot worm: see http://www.f-secure.com/v-descs/fagot.shtml";
|
||||
};
|
||||
|
||||
+/* This shows a regex which specifically matches an entire line by
|
||||
+ * the use of ^ and $
|
||||
+ */
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "^FOR MATRIX 2 DOWNLOAD, USE THIS COMMAND: //write Matrix2 \$decode\(.+=,m\) \| \.load -rs Matrix2 \| //mode \$me \+R$";
|
||||
- target private;
|
||||
+ match-type regex;
|
||||
+ match "^!login Wasszup!$";
|
||||
+ target channel;
|
||||
action gline;
|
||||
- reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
|
||||
+ reason "Attempting to login to a GTBot";
|
||||
};
|
||||
|
||||
+/* An example of how to match against an IP address in text (IPv4 only) */
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "^hey .* to get OPs use this hack in the chan but SHH! //\$decode\(.*,m\) \| \$decode\(.*,m\)$";
|
||||
- target private;
|
||||
+ match-type regex;
|
||||
+ match "^!packet ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,15}";
|
||||
+ target channel;
|
||||
action gline;
|
||||
- reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
|
||||
+ reason "Attempting to use a GTBot";
|
||||
};
|
||||
|
||||
+/* A slightly more complex example with a partial OR matcher (|) */
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match ".*(http://jokes\.clubdepeche\.com|http://horny\.69sexy\.net|http://private\.a123sdsdssddddgfg\.com).*";
|
||||
+ match-type regex;
|
||||
+ match "(^wait a minute plz\. i am updating my site|.*my erotic video).*http://.+/erotic(a)?/myvideo\.exe$";
|
||||
target private;
|
||||
action gline;
|
||||
- reason "Infected by LOI trojan";
|
||||
-};
|
||||
-
|
||||
-/* This is a 'general sig' which might have a tad more false positives, hence just 'block' is used */
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "C:\\WINNT\\system32\\[][0-9a-z_-{|}`]+\.zip";
|
||||
- target dcc;
|
||||
- action block;
|
||||
- reason "Infected by Gaggle worm?";
|
||||
+ reason "Infected by some trojan (erotica?)";
|
||||
};
|
||||
|
||||
+/* In regex a \ is special and needs to be escaped to \\
|
||||
+ * However in this configuration file, \ is also special and
|
||||
+ * needs to be escaped to \\ as well.
|
||||
+ * The result is that we need double escaping:
|
||||
+ * To match a \ you need to write \\\\ in the configuration file.
|
||||
+ */
|
||||
spamfilter {
|
||||
- match-type posix;
|
||||
- match "C:\\WINNT\\system32\\(notes|videos|xxx|ManualSeduccion|postal|hechizos|images|sex|avril)\.zip";
|
||||
+ match-type regex;
|
||||
+ match "C:\\\\WINNT\\\\system32\\\\(notes|videos|xxx|ManualSeduccion|postal|hechizos|images|sex|avril)\.zip";
|
||||
target dcc;
|
||||
action dccblock;
|
||||
reason "Infected by Gaggle worm";
|
||||
};
|
||||
-
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "http://.+\.lycos\..+/[iy]server[0-9]/[a-z]{4,11}\.(gif|jpg|avi|txt)";
|
||||
- target { private; quit; };
|
||||
- action block;
|
||||
- reason "Infected by Gaggle worm";
|
||||
-};
|
||||
-
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "^Free porn pic.? and movies (www\.sexymovies\.da\.ru|www\.girlporn\.org)";
|
||||
- target private;
|
||||
- action block;
|
||||
- reason "Unknown virus. Site causes Backdoor.Delf.lq infection";
|
||||
-};
|
||||
-
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "^LOL! //echo -a \$\(\$decode\(.+,m\),[0-9]\)$";
|
||||
- target channel;
|
||||
- action block;
|
||||
- reason "$decode exploit";
|
||||
-};
|
||||
-
|
||||
-/*
|
||||
-spamfilter {
|
||||
- regex "//write \$decode\(.+\|.+load -rs";
|
||||
- target { private; channel; };
|
||||
- reason "Generic $decode exploit";
|
||||
- action block;
|
||||
-};
|
||||
-*/
|
||||
-
|
||||
-spamfilter {
|
||||
- match-type posix;
|
||||
- match "^Want To Be An IRCOp\? Try This New Bug Type: //write \$decode\(.+=.?,m\) \| \.load -rs \$decode\(.+=.?,m\)$";
|
||||
- target private;
|
||||
- action block;
|
||||
- reason "Spamming users with an mIRC trojan. Type '/unload -rs newb' to remove the trojan.";
|
||||
-};
|
||||
Binary file not shown.
@@ -1,27 +0,0 @@
|
||||
# AppArmor profile for UnrealIRCd 5
|
||||
#
|
||||
# Note that you may still see some DENIED warnings in logs with
|
||||
# operation="chmod". These are harmless and can be safely ignored.
|
||||
#
|
||||
# Tested on Ubuntu 16.04 LTS and Ubuntu 18.04 LTS
|
||||
#
|
||||
# IMPORTANT: you will have to modify the path to executable below
|
||||
# if it's not /home/ircd/unrealircd/bin/unrealircd !
|
||||
|
||||
#include <tunables/global>
|
||||
|
||||
# Change the pathname of your UnrealIRCd executable here:
|
||||
/home/ircd/unrealircd/bin/unrealircd {
|
||||
#include <abstractions/base>
|
||||
#include <abstractions/nameservice>
|
||||
|
||||
@{HOME}/unrealircd/conf/ r,
|
||||
@{HOME}/unrealircd/conf/** r,
|
||||
@{HOME}/unrealircd/data/** rw,
|
||||
@{HOME}/unrealircd/lib/*.so* mr,
|
||||
@{HOME}/unrealircd/logs/* rw,
|
||||
@{HOME}/unrealircd/modules/**.so r,
|
||||
@{HOME}/unrealircd/tmp/ r,
|
||||
@{HOME}/unrealircd/tmp/* mrw,
|
||||
@{HOME}/unrealircd/bin/unrealircd mr,
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
Target: 127.0.0.1:5901
|
||||
|
||||
prio ciphersuite protocols pfs curves
|
||||
1 ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
2 ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
3 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
4 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
5 ECDHE-ECDSA-AES256-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
6 ECDHE-ECDSA-AES128-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
|
||||
Certificate: untrusted, 384 bits, ecdsa-with-SHA256 signature
|
||||
TLS ticket lifetime hint: None
|
||||
NPN protocols: None
|
||||
OCSP stapling: not supported
|
||||
Cipher ordering: server
|
||||
Curves ordering: server - fallback: no
|
||||
Server supports secure renegotiation
|
||||
Server supported compression methods: NONE
|
||||
TLS Tolerance: yes
|
||||
|
||||
Intolerance to:
|
||||
SSL 3.254 : absent
|
||||
TLS 1.0 : absent
|
||||
TLS 1.1 : absent
|
||||
TLS 1.2 : absent
|
||||
TLS 1.3 : absent
|
||||
TLS 1.4 : absent
|
||||
@@ -1,27 +0,0 @@
|
||||
Target: 127.0.0.1:5901
|
||||
|
||||
prio ciphersuite protocols pfs curves
|
||||
1 ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 ECDH,P-256,256bits prime256v1
|
||||
2 ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 ECDH,P-256,256bits prime256v1
|
||||
3 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 ECDH,P-256,256bits prime256v1
|
||||
4 ECDHE-ECDSA-AES256-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-256,256bits prime256v1
|
||||
5 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 ECDH,P-256,256bits prime256v1
|
||||
6 ECDHE-ECDSA-AES128-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-256,256bits prime256v1
|
||||
|
||||
Certificate: untrusted, 384 bits, ecdsa-with-SHA256 signature
|
||||
TLS ticket lifetime hint: None
|
||||
NPN protocols: None
|
||||
OCSP stapling: not supported
|
||||
Cipher ordering: server
|
||||
Curves ordering: server - fallback: no
|
||||
Server supports secure renegotiation
|
||||
Server supported compression methods: NONE
|
||||
TLS Tolerance: yes
|
||||
|
||||
Intolerance to:
|
||||
SSL 3.254 : absent
|
||||
TLS 1.0 : absent
|
||||
TLS 1.1 : absent
|
||||
TLS 1.2 : absent
|
||||
TLS 1.3 : absent
|
||||
TLS 1.4 : absent
|
||||
@@ -1,27 +0,0 @@
|
||||
Target: 127.0.0.1:5901
|
||||
|
||||
prio ciphersuite protocols pfs curves
|
||||
1 ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
2 ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
3 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
4 ECDHE-ECDSA-AES256-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
5 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
6 ECDHE-ECDSA-AES128-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
|
||||
Certificate: untrusted, 384 bits, ecdsa-with-SHA256 signature
|
||||
TLS ticket lifetime hint: None
|
||||
NPN protocols: None
|
||||
OCSP stapling: not supported
|
||||
Cipher ordering: server
|
||||
Curves ordering: server - fallback: no
|
||||
Server supports secure renegotiation
|
||||
Server supported compression methods: NONE
|
||||
TLS Tolerance: yes
|
||||
|
||||
Intolerance to:
|
||||
SSL 3.254 : absent
|
||||
TLS 1.0 : absent
|
||||
TLS 1.1 : absent
|
||||
TLS 1.2 : absent
|
||||
TLS 1.3 : absent
|
||||
TLS 1.4 : absent
|
||||
@@ -1,27 +0,0 @@
|
||||
Target: 127.0.0.1:5901
|
||||
|
||||
prio ciphersuite protocols pfs curves
|
||||
1 ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
2 ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
3 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
4 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
5 ECDHE-ECDSA-AES256-SHA TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
6 ECDHE-ECDSA-AES128-SHA TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1
|
||||
|
||||
Certificate: untrusted, 384 bits, ecdsa-with-SHA256 signature
|
||||
TLS ticket lifetime hint: None
|
||||
NPN protocols: None
|
||||
OCSP stapling: not supported
|
||||
Cipher ordering: server
|
||||
Curves ordering: server - fallback: no
|
||||
Server supports secure renegotiation
|
||||
Server supported compression methods: NONE
|
||||
TLS Tolerance: yes
|
||||
|
||||
Intolerance to:
|
||||
SSL 3.254 : absent
|
||||
TLS 1.0 : PRESENT
|
||||
TLS 1.1 : PRESENT
|
||||
TLS 1.2 : absent
|
||||
TLS 1.3 : absent
|
||||
TLS 1.4 : absent
|
||||
@@ -1,90 +0,0 @@
|
||||
#!/bin/bash
|
||||
# We assume we are executed from extras/tests/tls
|
||||
|
||||
function fail()
|
||||
{
|
||||
echo "TLS TEST ERROR: $*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
CIPHERSCAN="cipherscan"
|
||||
OPENSSL="openssl"
|
||||
if [ -x ~/cipherscan ]; then
|
||||
CIPHERSCAN="$HOME/cipherscan/cipherscan"
|
||||
OPENSSL="$HOME/cipherscan/openssl"
|
||||
elif [ -x /home/travis/build/unrealircd/unrealircd/cipherscan/cipherscan ]; then
|
||||
CIPHERSCAN="/home/travis/build/unrealircd/unrealircd/cipherscan/cipherscan"
|
||||
OPENSSL="/home/travis/build/unrealircd/unrealircd/cipherscan/openssl"
|
||||
elif [ -x ../../../cipherscan/ ]; then
|
||||
CIPHERSCAN="`readlink -f ../../../cipherscan/cipherscan`"
|
||||
OPENSSL="`readlink -f ../../../cipherscan/openssl`"
|
||||
fi
|
||||
|
||||
$CIPHERSCAN --help >/dev/null || exit 1
|
||||
|
||||
|
||||
# This is the basic cipherscan test.
|
||||
# It compares the output against a reference .txt file and alarms us if there
|
||||
# are any changes. These changes may not always be harmful, but at least we
|
||||
# will get warned on any possible changes.
|
||||
$CIPHERSCAN --no-colors 127.0.0.1:5901|grep -vF '.....' >cipherscan.test.txt
|
||||
|
||||
# Now check if profile matches, if so.. everything is ok.
|
||||
# We have 1 or more baseline profiles
|
||||
# And you can optionally add profile-specific, eg openssl-102.txt
|
||||
# Yeah that was a great idea but maintaining that is a bit of a hassle.
|
||||
# TODO: reintroduce it though, see below.
|
||||
##for f in cipherscan_profiles/baseline*txt cipherscan_profiles/$BUILDCONFIG.txt
|
||||
FAILED=1
|
||||
for f in cipherscan_profiles/*.txt
|
||||
do
|
||||
diff -uab $f cipherscan.test.txt 1>/dev/null 2>&1
|
||||
if [ "$?" -eq 0 ]; then
|
||||
FAILED=0
|
||||
echo "Cipherscan profile $f matched."
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$FAILED" -eq 1 ]; then
|
||||
echo "*** Differences found between cipherscan scan and expected output ***"
|
||||
if [ -f cipherscan_profiles/$BUILDCONFIG.txt ]; then
|
||||
COMPARE_PROFILE="cipherscan_profiles/$BUILDCONFIG.txt"
|
||||
else
|
||||
COMPARE_PROFILE="cipherscan_profiles/baseline.txt"
|
||||
fi
|
||||
echo "== EXPECTED OUTPUT ($COMPARE_PROFILE) =="
|
||||
cat $COMPARE_PROFILE
|
||||
echo
|
||||
echo "== ACTUAL TEST OUTPUT =="
|
||||
cat cipherscan.test.txt
|
||||
echo
|
||||
echo "== DIFF =="
|
||||
diff -uab $COMPARE_PROFILE cipherscan.test.txt
|
||||
echo
|
||||
echo "cipherscan test failed."
|
||||
exit 1
|
||||
else
|
||||
echo "*** Cipherscan output was good ***"
|
||||
cat cipherscan.test.txt
|
||||
fi
|
||||
|
||||
# This checks for a couple of old ciphers that should never work:
|
||||
for cipher in 3DES RC4
|
||||
do
|
||||
echo "Testing cipher $cipher (MUST FAIL!).."
|
||||
(echo QUIT|$OPENSSL s_client -connect 127.0.0.1:5901 -cipher $cipher) &&
|
||||
fail "UnrealIRCd allowed us to connect with cipher $cipher, BAD!"
|
||||
done
|
||||
|
||||
# This checks older SSL/TLS versions that should not work:
|
||||
for protocol in ssl2 ssl3
|
||||
do
|
||||
echo "Testing protocol $protocol (MUST FAIL!).."
|
||||
(echo QUIT|$OPENSSL s_client -connect 127.0.0.1:5901 -$protocol) &&
|
||||
fail "UnrealIRCd allowed us to connect with protocol $protocol, BAD!"
|
||||
done
|
||||
|
||||
echo
|
||||
echo "TLS tests ended (no issues)."
|
||||
exit 0
|
||||
@@ -1,31 +0,0 @@
|
||||
# create RSA certs - Server
|
||||
|
||||
[ req ]
|
||||
# Note: RSA bits is ignored, as we use ECC now
|
||||
default_bits = 2048
|
||||
distinguished_name = req_dn
|
||||
x509_extensions = cert_type
|
||||
|
||||
[ req_dn ]
|
||||
countryName = Country Name
|
||||
countryName_default = US
|
||||
countryName_min = 2
|
||||
countryName_max = 2
|
||||
|
||||
stateOrProvinceName = State/Province
|
||||
stateOrProvinceName_default = New York
|
||||
|
||||
localityName = Locality Name (eg, city)
|
||||
|
||||
0.organizationName = Organization Name (eg, company)
|
||||
0.organizationName_default = IRC geeks
|
||||
|
||||
organizationalUnitName = Organizational Unit Name (eg, section)
|
||||
organizationalUnitName_default = IRCd
|
||||
|
||||
0.commonName = Common Name (Full domain of your server)
|
||||
1.commonName_value = localhost
|
||||
|
||||
[ cert_type ]
|
||||
nsCertType = server
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
arc4_rnd1
|
||||
Memcheck:Value8
|
||||
fun:getrandom8
|
||||
}
|
||||
{
|
||||
arc4_rnd2
|
||||
Memcheck:Value8
|
||||
fun:add_entropy_configfile
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# This is stage 1 of the UnrealIRCd upgrade script
|
||||
# It downloads stage 2 online, verifies the integrity, and then
|
||||
# passes control to it to proceed with the rest of the upgrade.
|
||||
#
|
||||
# This is a bash script, so it is less cross-platform than the
|
||||
# rest of UnrealIRCd. We also mostly assume Linux/FreeBSD here.
|
||||
#
|
||||
|
||||
BUILDDIR="@BUILDDIR@"
|
||||
SCRIPTDIR="@SCRIPTDIR@"
|
||||
DOCDIR="@DOCDIR@"
|
||||
TMPDIR="@TMPDIR@"
|
||||
|
||||
function warn()
|
||||
{
|
||||
echo
|
||||
echo "WARNING: $*"
|
||||
echo "This is for your information only. It is possible to continue."
|
||||
echo "Press ENTER to continue, or CTRL+C to abort."
|
||||
echo "If in doubt, see https://www.unrealircd.org/docs/FAQ#upgrade-verify-failed"
|
||||
read xyz
|
||||
}
|
||||
|
||||
function bigwarn()
|
||||
{
|
||||
echo
|
||||
echo "[!!!] WARNING: $*"
|
||||
echo "Check https://www.unrealircd.org/docs/FAQ#upgrade-verify-failed !"
|
||||
echo "Type 'IGNORE' in uppercase to continue if you think it is safe."
|
||||
echo "Type anything else to abort."
|
||||
read answer
|
||||
if [ "$answer" != "IGNORE" ]; then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function fail()
|
||||
{
|
||||
echo
|
||||
echo "ERROR: $*"
|
||||
echo "NOTE: Your existing UnrealIRCd is backed up to $BACKUPDIR"
|
||||
echo "Perhaps check out the FAQ for common problems:"
|
||||
echo "https://www.unrealircd.org/docs/FAQ#upgrade-failed"
|
||||
echo "Otherwise, follow the manual upgrade procedure from"
|
||||
echo "https://www.unrealircd.org/docs/Upgrading"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ ! -d "$BUILDDIR" ]; then
|
||||
echo "UnrealIRCd source not found at $BUILDDIR."
|
||||
echo "Sorry, then it is not possible to know your existing settings and thus we cannot upgrade."
|
||||
echo "Follow the manual upgrade procedure from https://www.unrealircd.org/docs/Upgrading"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FETCHER="wget"
|
||||
if ! wget --help 1>/dev/null 2>&1; then
|
||||
# fetch is a pain: it always returns 1 (false) even for usage info and has no --version
|
||||
fetch 1>/dev/null 2>&1
|
||||
if [ "$?" -ne 1 ]; then
|
||||
echo "The tool 'wget' is missing, which is used by this script."
|
||||
echo "On Linux consider running 'sudo apt install wget' or 'sudo yum install wget'"
|
||||
echo "and run this script again."
|
||||
echo "Or, don't use this script and follow the manual upgrade procedure from"
|
||||
echo "https://www.unrealircd.org/docs/Upgrading"
|
||||
exit 1
|
||||
fi
|
||||
FETCHER="fetch"
|
||||
fi
|
||||
|
||||
# Weird way to get version, but ok.
|
||||
cd "$BUILDDIR" || fail "Could not cd to builddir"
|
||||
UNREALVER="`./configure --version|head -n1|awk '{ print $3 }'`"
|
||||
cd .. || fail "Could not cd back"
|
||||
|
||||
# Set and export all variables with settings
|
||||
export UNREALVER BUILDDIR SCRIPTDIR DOCDIR TMPDIR FETCHER
|
||||
|
||||
# Download the install script
|
||||
if [ "$FETCHER" = "wget" ]; then
|
||||
wget -O unrealircd-upgrade-script.stage2 "https://www.unrealircd.org/downloads/unrealircd-upgrade-script.stage2?from=$UNREALVER" || fail "Could not download online installer"
|
||||
wget -O unrealircd-upgrade-script.stage2.asc "https://www.unrealircd.org/downloads/unrealircd-upgrade-script.stage2.asc" || fail "Could not download online installer signature"
|
||||
else
|
||||
fetch -o unrealircd-upgrade-script.stage2 "https://www.unrealircd.org/downloads/unrealircd-upgrade-script.stage2?from=$UNREALVER" || fail "Could not download online installer"
|
||||
fetch -o unrealircd-upgrade-script.stage2.asc "https://www.unrealircd.org/downloads/unrealircd-upgrade-script.stage2.asc" || fail "Could not download online installer signature"
|
||||
fi
|
||||
|
||||
# GPG verification - if available
|
||||
if gpg --version 1>/dev/null 2>&1; then
|
||||
if [ -f "$DOCDIR/KEYS" ]; then
|
||||
gpg --import "$DOCDIR/KEYS"
|
||||
echo
|
||||
if gpg --batch --exit-on-status-write-error --verify unrealircd-upgrade-script.stage2.asc unrealircd-upgrade-script.stage2; then
|
||||
echo "GPG: Verification succeeded. Download is genuine."
|
||||
export NOGPG=0
|
||||
else
|
||||
bigwarn "GPG/PGP verification failed. This could be a security issue."
|
||||
export NOGPG=1
|
||||
fi
|
||||
else
|
||||
warn "Unable to check download integrity with GPG/PGP. Missing $DOCDIR/KEYS file."
|
||||
export NOGPG=1
|
||||
fi
|
||||
else
|
||||
echo "WARNING: The GnuPG (GPG/PGP) verification tool 'gpg' is not installed."
|
||||
if [[ "$OSTYPE" == "freebsd"* ]] ; then
|
||||
echo "Consider running 'sudo pkg install gnupg'"
|
||||
else
|
||||
echo "Consider running 'sudo apt install gpg' or 'yum install gnupg2'"
|
||||
fi
|
||||
echo "When 'gpg' is installed then the UnrealIRCd upgrade script can"
|
||||
echo "verify the digital signature of the download file."
|
||||
warn "Unable to check download integrity"
|
||||
export NOGPG=1
|
||||
fi
|
||||
|
||||
chmod +x unrealircd-upgrade-script.stage2
|
||||
./unrealircd-upgrade-script.stage2 $*
|
||||
SAVERET="$?"
|
||||
rm -f unrealircd-upgrade-script.stage2 unrealircd-upgrade-script.stage2
|
||||
exit $SAVERET
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# There is no way to make clang's "argument unused" warning fatal. So when
|
||||
# configure checks for supported flags, it runs $CC, $CXX, $LD via this
|
||||
# wrapper.
|
||||
#
|
||||
# Ideally the search string would also include 'clang: ' but this output might
|
||||
# depend on clang's argv[0].
|
||||
|
||||
if out=`"$@" 2>&1`; then
|
||||
echo "$out"
|
||||
if echo "$out" | grep 'warning: argument unused' >/dev/null; then
|
||||
echo "$0: found clang warning"
|
||||
exit 1
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
code=$?
|
||||
echo "$out"
|
||||
exit $code
|
||||
fi
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef __BADWORDS_H
|
||||
#define __BADWORDS_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <regex.h>
|
||||
|
||||
#define MAX_MATCH 1
|
||||
#define MAX_WORDLEN 64
|
||||
#define MAX_WORDS 30
|
||||
|
||||
#define PATTERN "\\w*%s\\w*"
|
||||
#define REPLACEWORD "<censored>"
|
||||
|
||||
char *stripbadwords(char *, int);
|
||||
int loadbadwords(char *, int);
|
||||
void freebadwords(void);
|
||||
|
||||
#endif
|
||||
@@ -1,240 +0,0 @@
|
||||
/************************************************************************
|
||||
* Unreal Internet Relay Chat Daemon, include/common.h
|
||||
* Copyright (C) 1990 Armin Gruner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __common_include__
|
||||
#define __common_include__
|
||||
|
||||
#include <time.h>
|
||||
#ifdef _WIN32
|
||||
#include <malloc.h>
|
||||
#include <winsock2.h>
|
||||
#include <ws2tcpip.h>
|
||||
#include <windows.h>
|
||||
#include <io.h>
|
||||
#include <direct.h>
|
||||
#endif
|
||||
#include "types.h"
|
||||
#include "config.h"
|
||||
#ifndef _WIN32
|
||||
#include <sys/param.h>
|
||||
#include <stdbool.h>
|
||||
#else
|
||||
typedef int bool;
|
||||
#define false 0
|
||||
#define true 1
|
||||
#endif
|
||||
|
||||
#include "sys.h"
|
||||
|
||||
#include "ircsprintf.h"
|
||||
#include "list.h"
|
||||
|
||||
#ifdef DEVELOP_CVS
|
||||
#define ID_Copyright(x) static char id_copyright[] = x
|
||||
#define ID_Notes(x) static char id_notes[] = x
|
||||
#else
|
||||
#define ID_Copyright(x)
|
||||
#define ID_Notes(x)
|
||||
#endif
|
||||
|
||||
#define BMAGIC 0x4675636B596F754661736369737473
|
||||
|
||||
#ifdef _WIN32
|
||||
#define DEADBEEF_ADDR 0xDEADBEEFDEADBEEF
|
||||
#else
|
||||
#define DEADBEEF_ADDR 0xDEADBEEF
|
||||
#endif
|
||||
|
||||
#define BASE_VERSION "UnrealIRCd"
|
||||
#ifndef _WIN32
|
||||
#define FDwrite(x,y,z) write(x, y, z)
|
||||
#else
|
||||
#define FDwrite(x,y,z) send(x, y, z, 0)
|
||||
#endif
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
||||
#ifdef TRUE
|
||||
#undef TRUE
|
||||
#endif
|
||||
|
||||
#ifdef FALSE
|
||||
#undef FALSE
|
||||
#endif
|
||||
|
||||
#define FALSE (0)
|
||||
#define TRUE (!FALSE)
|
||||
|
||||
#ifndef UNSURE
|
||||
#define UNSURE (2)
|
||||
#endif
|
||||
|
||||
#define mycmp(a,b) \
|
||||
( (toupper(a[0])!=toupper(b[0])) || smycmp((a)+1,(b)+1) )
|
||||
extern int smycmp(const char *, const char *);
|
||||
#ifndef GLIBC2_x
|
||||
extern int myncmp(const char *, const char *, int);
|
||||
#endif
|
||||
|
||||
extern char *strtoken(char **, char *, char *);
|
||||
|
||||
extern MODVAR int global_count, max_global_count;
|
||||
extern char *myctime(time_t);
|
||||
#ifdef _WIN32
|
||||
extern int gettimeofday(struct timeval *tp, void *tzp);
|
||||
#endif
|
||||
|
||||
#define PRECISE_CHECK
|
||||
|
||||
#ifndef MAX
|
||||
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||
#endif
|
||||
#ifndef MIN
|
||||
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
extern MODVAR u_char tolowertab[], touppertab[];
|
||||
#undef tolower
|
||||
#define tolower(c) (tolowertab[(u_char)(c)])
|
||||
#undef toupper
|
||||
#define toupper(c) (touppertab[(u_char)(c)])
|
||||
#undef isalpha
|
||||
#undef isdigit
|
||||
#undef isxdigit
|
||||
#undef isalnum
|
||||
#undef isprint
|
||||
#undef isascii
|
||||
#undef isgraph
|
||||
#undef ispunct
|
||||
#undef islower
|
||||
#undef isupper
|
||||
#undef isspace
|
||||
#undef iscntrl
|
||||
extern MODVAR unsigned char char_atribs[];
|
||||
|
||||
#define PRINT 1
|
||||
#define CNTRL 2
|
||||
#define ALPHA 4
|
||||
#define PUNCT 8
|
||||
#define DIGIT 16
|
||||
#define SPACE 32
|
||||
#define ALLOW 64
|
||||
#define ALLOWN 128
|
||||
|
||||
#ifndef KLINE_TEMP
|
||||
#define KLINE_PERM 0
|
||||
#define KLINE_TEMP 1
|
||||
#define KLINE_AKILL 2
|
||||
#define KLINE_EXCEPT 3
|
||||
#endif
|
||||
|
||||
#define isallowed(c) (char_atribs[(u_char)(c)]&ALLOW)
|
||||
#define iscntrl(c) (char_atribs[(u_char)(c)]&CNTRL)
|
||||
#define isalpha(c) (char_atribs[(u_char)(c)]&ALPHA)
|
||||
#define isspace(c) (char_atribs[(u_char)(c)]&SPACE)
|
||||
#define islower(c) ((char_atribs[(u_char)(c)]&ALPHA) && ((u_char)(c) > 0x5f))
|
||||
#define isupper(c) ((char_atribs[(u_char)(c)]&ALPHA) && ((u_char)(c) < 0x60))
|
||||
#define isdigit(c) (char_atribs[(u_char)(c)]&DIGIT)
|
||||
#define isxdigit(c) (isdigit(c) || ('a' <= (c) && (c) <= 'f') || \
|
||||
('A' <= (c) && (c) <= 'F'))
|
||||
#define isalnum(c) (char_atribs[(u_char)(c)]&(DIGIT|ALPHA))
|
||||
#define isprint(c) (char_atribs[(u_char)(c)]&PRINT)
|
||||
#define isascii(c) ((u_char)(c) >= 0 && (u_char)(c) <= 0x7f)
|
||||
#define isgraph(c) ((char_atribs[(u_char)(c)]&PRINT) && ((u_char)(c) != 0x32))
|
||||
#define ispunct(c) (!(char_atribs[(u_char)(c)]&(CNTRL|ALPHA|DIGIT)))
|
||||
#define iswseperator(c) (!isalnum(c) && !((u_char)c >= 128))
|
||||
|
||||
/*
|
||||
* Protocol support text. DO NO CHANGE THIS unless you know what
|
||||
* you are doing.
|
||||
*/
|
||||
|
||||
/* IRCu/Hybrid/Unreal way now :) -Stskeeps */
|
||||
|
||||
#define EXPAR1 extchmstr[0]
|
||||
#define EXPAR2 extchmstr[1]
|
||||
#define EXPAR3 extchmstr[2]
|
||||
#define EXPAR4 extchmstr[3]
|
||||
|
||||
#ifdef PREFIX_AQ
|
||||
#define CHPFIX "(qaohv)~&@%+"
|
||||
#define CHPAR1 "beI"
|
||||
#else
|
||||
#define CHPFIX "(ohv)@%+"
|
||||
#define CHPAR1 "beIqa"
|
||||
#endif /* PREFIX_AQ */
|
||||
|
||||
#define CHPAR2 "k"
|
||||
#define CHPAR3 "l"
|
||||
#define CHPAR4 "psmntir"
|
||||
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
* Used to display a string to the GUI interface.
|
||||
* Windows' internal strerror() function doesn't work with socket errors.
|
||||
*/
|
||||
extern int DisplayString(HWND hWnd, char *InBuf, ...);
|
||||
#else
|
||||
typedef int SOCKET;
|
||||
#define INVALID_SOCKET -1
|
||||
#endif
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__APPLE__)
|
||||
extern char *malloc_options;
|
||||
#endif
|
||||
|
||||
extern int lu_noninv, lu_inv, lu_serv, lu_oper,
|
||||
lu_unknown, lu_channel, lu_lu, lu_lulocal, lu_lserv,
|
||||
lu_clu, lu_mlu, lu_cglobalu, lu_mglobalu;
|
||||
|
||||
extern MODVAR time_t now;
|
||||
|
||||
#ifndef _WIN32
|
||||
#if defined(__STDC__)
|
||||
#define __const const
|
||||
#define __signed signed
|
||||
#define __volatile volatile
|
||||
#ifndef __GNUC__
|
||||
#define __inline
|
||||
#endif
|
||||
|
||||
#else
|
||||
#ifndef __GNUC__
|
||||
#define __const
|
||||
#define __inline
|
||||
#define __signed
|
||||
#define __volatile
|
||||
#ifndef NO_ANSI_KEYWORDS
|
||||
#define const /* delete ANSI C keywords */
|
||||
#define inline
|
||||
#define signed
|
||||
#define volatile
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#define inline __inline
|
||||
#endif
|
||||
|
||||
#define READBUF_SIZE 8192
|
||||
|
||||
#endif /* __common_include__ */
|
||||
@@ -1,327 +0,0 @@
|
||||
/*
|
||||
* Unreal Internet Relay Chat Daemon, include/config.h
|
||||
* Copyright (C) 1990 Jarkko Oikarinen
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef __config_include__
|
||||
#define __config_include__
|
||||
|
||||
#include "setup.h"
|
||||
|
||||
/* IMPORTANT:
|
||||
* Under normal conditions, you should not have to edit this file. Run
|
||||
* the ./Config script in the root directory instead!
|
||||
*
|
||||
* Windows is not a normal condition, edit this file if you use it. :-)
|
||||
*/
|
||||
|
||||
/* Additional flags to give FreeBSD's malloc, only play with this if you
|
||||
* know what you're doing.
|
||||
*/
|
||||
#define MALLOC_FLAGS_EXTRA ""
|
||||
|
||||
/* I/O Engine: determine what method to use.
|
||||
* So, the way this works is we determine using the preprocessor
|
||||
* what polling backend to use for the eventloop. We prefer epoll,
|
||||
* followed by kqueue, followed by poll, and then finally select.
|
||||
* Kind of ugly, but it gets the job done. You can also fiddle with
|
||||
* this to determine what backend is used.
|
||||
*/
|
||||
#ifndef _WIN32
|
||||
# ifdef HAVE_EPOLL
|
||||
# define BACKEND_EPOLL
|
||||
# else
|
||||
# ifdef HAVE_KQUEUE
|
||||
# define BACKEND_KQUEUE
|
||||
# else
|
||||
# ifdef HAVE_POLL
|
||||
# define BACKEND_POLL
|
||||
# else
|
||||
# define BACKEND_SELECT
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
#else
|
||||
# define BACKEND_SELECT
|
||||
#endif
|
||||
|
||||
/* Define the ircd module suffix, should be .so on UNIX, and .dll on Windows. */
|
||||
#ifndef _WIN32
|
||||
# define MODULE_SUFFIX ".so"
|
||||
#else
|
||||
# define MODULE_SUFFIX ".dll"
|
||||
#endif
|
||||
|
||||
/* Permit remote /rehash */
|
||||
#define REMOTE_REHASH
|
||||
|
||||
/*
|
||||
** Freelinks garbage collector -Stskeeps
|
||||
**
|
||||
** GARBAGE_COLLECT_EVERY - how many seconds between every garbage collect
|
||||
** HOW_MANY_FREELINKS_ALLOWED - how many freelinks allowed
|
||||
*/
|
||||
#ifndef GARBAGE_COLLECT_EVERY
|
||||
#define GARBAGE_COLLECT_EVERY 600 /* default: 600 (10 mins) */
|
||||
#endif
|
||||
|
||||
#define HOW_MANY_FREELINKS_ALLOWED 200 /* default: 200 */
|
||||
|
||||
/*
|
||||
* read/write are restarted after signals defining this 1, gets
|
||||
* siginterrupt call compiled, which attempts to remove this
|
||||
* behaviour (apollo sr10.1/bsd4.3 needs this)
|
||||
*/
|
||||
#ifdef APOLLO
|
||||
#define RESTARTING_SYSTEMCALLS
|
||||
#endif
|
||||
|
||||
/* DEBUGMODE: This should only be used when tracing a problem. It creates
|
||||
* an insane amount of log output which can be very useful for debugging.
|
||||
* You should *NEVER* enable this setting on production servers.
|
||||
*/
|
||||
/* #undef DEBUGMODE */
|
||||
|
||||
/* Similarly, DEBUG_IOENGINE can be used to debug the I/O engine. */
|
||||
/* #undef DEBUG_IOENGINE */
|
||||
|
||||
/*
|
||||
* Full pathnames and defaults of irc system's support files.
|
||||
*/
|
||||
#define CPATH CONFDIR"/unrealircd.conf" /* server configuration file */
|
||||
#define MPATH CONFDIR"/ircd.motd" /* server MOTD file */
|
||||
#define SMPATH CONFDIR"/ircd.smotd" /* short MOTD file */
|
||||
#define RPATH CONFDIR"/ircd.rules" /* server rules file */
|
||||
#define OPATH CONFDIR"/oper.motd" /* Operators MOTD file */
|
||||
#define LPATH LOGDIR"/debug.log" /* Where the debug file lives, if DEBUGMODE */
|
||||
#define VPATH CONFDIR"/ircd.svsmotd" /* Services MOTD append. */
|
||||
#define BPATH CONFDIR"/bot.motd" /* Bot MOTD */
|
||||
#define IRCDTUNE PERMDATADIR"/ircd.tune" /* tuning .. */
|
||||
|
||||
/** FAKELAG_CONFIGURABLE makes it possible to make certain classes exempted
|
||||
* from 'fake lag' (that is, the artificial delay that is added by the ircd
|
||||
* to prevent flooding, which causes the messages/commands of the user to
|
||||
* slow down). Naturally, incorrect use of this feature can cause SEVERE
|
||||
* issues, in fact it can easily bring your whole IRCd down if one of the
|
||||
* users with class::options::nofakelag does a good flood at full speed.
|
||||
* Hence, this is disabled by default, and you need to explicitly enable it
|
||||
* here IF YOU KNOW WHAT YOU ARE DOING. People complaining their ircd
|
||||
* ""crashed"" because of this setting will be shot. </DISCLAIMER>
|
||||
* Common usage for this are: a trusted bot ran by an IRCOp, that you only
|
||||
* want to give "flood access" and nothing else, and other such things.
|
||||
*/
|
||||
//#undef FAKELAG_CONFIGURABLE
|
||||
|
||||
/* The default value for class::sendq */
|
||||
#define DEFAULT_SENDQ 3000000
|
||||
/* The default value for class::recvq */
|
||||
#define DEFAULT_RECVQ 8000
|
||||
|
||||
/* You can define the nickname of NickServ here (usually "NickServ").
|
||||
* This is ONLY used for the ""infamous IDENTIFY feature"", which is:
|
||||
* whenever a user connects with a server password but there isn't
|
||||
* a server password set, the password is sent to NickServ in an
|
||||
* 'IDENTIFY <pass>' message.
|
||||
*/
|
||||
#define NickServ "NickServ"
|
||||
|
||||
/* STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP */
|
||||
|
||||
/* You shouldn't change anything below this line, unless absolutely needed. */
|
||||
|
||||
/*
|
||||
* Maximum number of network connections your server will allow.
|
||||
* On *NIX this is configured via ./Config so don't set it here.
|
||||
* The setting below is the Windows (default) setting and isn't actually
|
||||
* the maximum number of network connections but the highest FD (File
|
||||
* Descriptor) that we can deal with.
|
||||
*
|
||||
* 2004-10-13: 1024 -> 4096
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#define MAXCONNECTIONS 10240
|
||||
#else
|
||||
/* Non-Windows: */
|
||||
#if (!defined(MAXCONNECTIONS_REQUEST) || (MAXCONNECTIONS_REQUEST < 1)) && \
|
||||
(defined(HAVE_POLL) || defined(HAVE_EPOLL) || defined(HAVE_KQUEUE))
|
||||
/* Have poll/epoll/kqueue and either no --with-maxconnections or
|
||||
* --with-maxconnections=0, either of which indicates 'automatic' mode.
|
||||
* At the time of writing we will try a limit of 16384.
|
||||
* It will automatically be lowered at boottime if we can only use
|
||||
* 4096, 2048 or 1024. No problem.
|
||||
*/
|
||||
#define MAXCONNECTIONS 16384
|
||||
#elif defined(MAXCONNECTIONS_REQUEST) && (MAXCONNECTIONS_REQUEST >= 1)
|
||||
/* --with-maxconnections=something */
|
||||
#define MAXCONNECTIONS MAXCONNECTIONS_REQUEST
|
||||
#else
|
||||
/* Automatic mode, but we only have select(). Bummer... */
|
||||
#define MAXCONNECTIONS 1024
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Number of file descriptors reserved for non-incoming-clients.
|
||||
* One of which may be used by auth, the rest are really reserved.
|
||||
* They can be used for outgoing server links, listeners, logging, etc.
|
||||
*/
|
||||
#if MAXCONNECTIONS > 1024
|
||||
#define CLIENTS_RESERVE 8
|
||||
#else
|
||||
#define CLIENTS_RESERVE 4
|
||||
#endif
|
||||
|
||||
/*
|
||||
* this defines the length of the nickname history. each time a user changes
|
||||
* nickname or signs off, their old nickname is added to the top of the list.
|
||||
* The following sizes are recommended:
|
||||
* 8MB or less core memory : 500 (at least 1/4 of max users)
|
||||
* 8MB-16MB core memory : 500-750 (1/4 -> 1/2 of max users)
|
||||
* 16MB-32MB core memory : 750-1000 (1/2 -> 3/4 of max users)
|
||||
* 32MB or more core memory : 1000+ (> 3/4 of max users)
|
||||
* where max users is the expected maximum number of users.
|
||||
* (100 nicks/users ~ 25k)
|
||||
* NOTE: this is directly related to the amount of memory ircd will use whilst
|
||||
* resident and running - it hardly ever gets swapped to disk! You can
|
||||
* ignore these recommendations- they only are meant to serve as a guide
|
||||
* NOTE: But the *Minimum* ammount should be 100, in order to make nick
|
||||
* chasing possible for mode and kick.
|
||||
*/
|
||||
#ifndef NICKNAMEHISTORYLENGTH
|
||||
#define NICKNAMEHISTORYLENGTH 2000
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Maximum delay for socket loop (in miliseconds, so 1000 = 1 second).
|
||||
* This means any other events and such may be delayed up to this value
|
||||
* when there is no socket data waiting for us (no clients sending anything).
|
||||
* Was 2000ms in 3.2.x, 1000ms for versions below 3.4-alpha4.
|
||||
* 500ms in UnrealIRCd 4 (?)
|
||||
* 250ms in UnrealIRCd 5.
|
||||
*/
|
||||
#define SOCKETLOOP_MAX_DELAY 250
|
||||
|
||||
/*
|
||||
* Max time from the nickname change that still causes KILL
|
||||
* automaticly to switch for the current nick of that user. (seconds)
|
||||
*/
|
||||
#define KILLCHASETIMELIMIT 30
|
||||
|
||||
/* Detect slow spamfilters? This requires a little more cpu time when processing
|
||||
* any spamfilter (like on text/connect/..) but will save you from slowing down
|
||||
* your IRCd to a near-halt (well, in most cases.. there are still cases like when
|
||||
* it goes into a loop that it will still stall completely... forever..).
|
||||
* This is kinda experimental, and requires getrusage.
|
||||
*/
|
||||
#ifndef _WIN32
|
||||
#define SPAMFILTER_DETECTSLOW
|
||||
#endif
|
||||
|
||||
/* Maximum number of ModData objects that may be attached to an object */
|
||||
/* UnrealIRCd 4.0.0 - 4.0.13: 8, 8, 4, 4
|
||||
* UnrealIRCd 4.0.14+ : 12, 8, 4, 4
|
||||
* UnrealIRCd 5.0.0 : 12, 8, 8, 4, 4, 500, 500
|
||||
*/
|
||||
#define MODDATA_MAX_CLIENT 12
|
||||
#define MODDATA_MAX_LOCAL_CLIENT 8
|
||||
#define MODDATA_MAX_CHANNEL 8
|
||||
#define MODDATA_MAX_MEMBER 4
|
||||
#define MODDATA_MAX_MEMBERSHIP 4
|
||||
#define MODDATA_MAX_LOCAL_VARIABLE 500
|
||||
#define MODDATA_MAX_GLOBAL_VARIABLE 500
|
||||
|
||||
/* If EXPERIMENTAL is #define'd then all users will receive a notice about
|
||||
* this when they connect, along with a pointer to bugs.unrealircd.org where
|
||||
* they can report any problems. This is mainly to help UnrealIRCd development.
|
||||
*/
|
||||
#undef EXPERIMENTAL
|
||||
|
||||
/* Default SSL/TLS cipherlist (except for TLS1.3, see further down).
|
||||
* This can be changed via set::ssl::options::ciphers in the config file.
|
||||
*/
|
||||
#define UNREALIRCD_DEFAULT_CIPHERS "TLS13-CHACHA20-POLY1305-SHA256 TLS13-AES-256-GCM-SHA384 TLS13-AES-128-GCM-SHA256 EECDH+CHACHA20 EECDH+AESGCM EECDH+AES AES256-GCM-SHA384 AES128-GCM-SHA256 AES256-SHA256 AES128-SHA256 AES256-SHA AES128-SHA"
|
||||
|
||||
/* Default TLS 1.3 ciphersuites.
|
||||
* This can be changed via set::ssl::options::ciphersuites in the config file.
|
||||
*/
|
||||
#define UNREALIRCD_DEFAULT_CIPHERSUITES "TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256"
|
||||
|
||||
/* Default SSL/TLS curves for ECDH(E)
|
||||
* This can be changed via set::ssl::options::ecdh-curve in the config file.
|
||||
* NOTE: This requires openssl 1.0.2 or newer, otherwise these defaults
|
||||
* are not applied, due to the missing openssl API call.
|
||||
*/
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
||||
#define UNREALIRCD_DEFAULT_ECDH_CURVES "X25519:secp521r1:secp384r1:prime256v1"
|
||||
#else
|
||||
#define UNREALIRCD_DEFAULT_ECDH_CURVES "secp521r1:secp384r1:prime256v1"
|
||||
#endif
|
||||
|
||||
/* ------------------------- END CONFIGURATION SECTION -------------------- */
|
||||
#define MOTD MPATH
|
||||
#define RULES RPATH
|
||||
#define MYNAME BINDIR "/unrealircd"
|
||||
#define CONFIGFILE CPATH
|
||||
#define IRCD_PIDFILE PIDFILE
|
||||
|
||||
#ifdef DEBUGMODE
|
||||
#define Debug(x) debug x
|
||||
#define LOGFILE LPATH
|
||||
#else
|
||||
#define Debug(x) ;
|
||||
#define LOGFILE "/dev/null"
|
||||
#endif
|
||||
|
||||
#if defined(DEFAULT_RECVQ)
|
||||
# if (DEFAULT_RECVQ < 512)
|
||||
error DEFAULT_RECVQ needs redefining.
|
||||
# endif
|
||||
#else
|
||||
error DEFAULT_RECVQ undefined
|
||||
#endif
|
||||
#if (NICKNAMEHISTORYLENGTH < 100)
|
||||
# define NICKNAMEHISTORYLENGTH 100
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \
|
||||
((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \
|
||||
!defined(__cplusplus)
|
||||
#define GCC_TYPECHECKING
|
||||
|
||||
/* copied from cURL: */
|
||||
|
||||
#define _UNREAL_WARNING(id, message) \
|
||||
static void __attribute__((__warning__(message))) \
|
||||
__attribute__((__unused__)) __attribute__((__noinline__)) \
|
||||
id(void) { __asm__(""); }
|
||||
|
||||
#define _UNREAL_ERROR(id, message) \
|
||||
static void __attribute__((__error__(message))) \
|
||||
__attribute__((__unused__)) __attribute__((__noinline__)) \
|
||||
id(void) { __asm__(""); }
|
||||
#endif
|
||||
|
||||
#ifndef __has_feature
|
||||
#define __has_feature(x) 0 // Compatibility with non-clang compilers.
|
||||
#endif
|
||||
#ifndef __has_extension
|
||||
#define __has_extension __has_feature // Compatibility with pre-3.0 compilers.
|
||||
#endif
|
||||
|
||||
#endif /* __config_include__ */
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
/*
|
||||
* Written by Solar Designer <solar at openwall.com> in 2000-2011.
|
||||
* No copyright is claimed, and the software is hereby placed in the public
|
||||
* domain. In case this attempt to disclaim copyright and place the software
|
||||
* in the public domain is deemed null and void, then the software is
|
||||
* Copyright (c) 2000-2011 Solar Designer and it is hereby released to the
|
||||
* general public under the following terms:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted.
|
||||
*
|
||||
* There's ABSOLUTELY NO WARRANTY, express or implied.
|
||||
*
|
||||
* See crypt_blowfish.c for more information.
|
||||
*/
|
||||
|
||||
#ifndef _CRYPT_BLOWFISH_H
|
||||
#define _CRYPT_BLOWFISH_H
|
||||
|
||||
extern int _crypt_output_magic(const char *setting, char *output, int size);
|
||||
extern char *_crypt_blowfish_rn(const char *key, const char *setting,
|
||||
char *output, int size);
|
||||
extern char *_crypt_gensalt_blowfish_rn(const char *prefix,
|
||||
unsigned long count,
|
||||
const char *input, int size, char *output, int output_size);
|
||||
|
||||
#endif
|
||||
-101
@@ -1,101 +0,0 @@
|
||||
/************************************************************************
|
||||
* Unreal Internet Relay Chat Daemon, include/dbuf.h
|
||||
* Copyright (C) 1990 Markku Savela
|
||||
* Copyright (C) 2013 William Pitcock <nenolod@dereferenced.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __dbuf_include__
|
||||
#define __dbuf_include__
|
||||
|
||||
#include "list.h"
|
||||
|
||||
/* 512 bytes -- 510 character bytes + \r\n, per rfc1459 */
|
||||
#define DBUF_BLOCK_SIZE (512)
|
||||
|
||||
/*
|
||||
** dbuf is a collection of functions which can be used to
|
||||
** maintain a dynamic buffering of a byte stream.
|
||||
** Functions allocate and release memory dynamically as
|
||||
** required [Actually, there is nothing that prevents
|
||||
** this package maintaining the buffer on disk, either]
|
||||
*/
|
||||
|
||||
/*
|
||||
** These structure definitions are only here to be used
|
||||
** as a whole, *DO NOT EVER REFER TO THESE FIELDS INSIDE
|
||||
** THE STRUCTURES*! It must be possible to change the internal
|
||||
** implementation of this package without changing the
|
||||
** interface.
|
||||
*/
|
||||
typedef struct dbuf {
|
||||
u_int length; /* Current number of bytes stored */
|
||||
// u_int offset; /* Offset to the first byte */
|
||||
struct list_head dbuf_list;
|
||||
} dbuf;
|
||||
|
||||
/*
|
||||
** And this 'dbufbuf' should never be referenced outside the
|
||||
** implementation of 'dbuf'--would be "hidden" if C had such
|
||||
** keyword...
|
||||
** If it was possible, this would compile to be exactly 1 memory
|
||||
** page in size. 2048 bytes seems to be the most common size, so
|
||||
** as long as a pointer is 4 bytes, we get 2032 bytes for buffer
|
||||
** data after we take away a bit for malloc to play with. -avalon
|
||||
*/
|
||||
typedef struct dbufbuf {
|
||||
struct list_head dbuf_node;
|
||||
size_t size;
|
||||
char data[DBUF_BLOCK_SIZE];
|
||||
} dbufbuf;
|
||||
|
||||
/*
|
||||
** dbuf_put
|
||||
** Append the number of bytes to the buffer, allocating more
|
||||
** memory as needed. Bytes are copied into internal buffers
|
||||
** from users buffer.
|
||||
*/
|
||||
void dbuf_put(dbuf *, char *, size_t);
|
||||
/* Dynamic buffer header */
|
||||
/* Pointer to data to be stored */
|
||||
/* Number of bytes to store */
|
||||
|
||||
void dbuf_delete(dbuf *, size_t);
|
||||
/* Dynamic buffer header */
|
||||
/* Number of bytes to delete */
|
||||
|
||||
/*
|
||||
** DBufLength
|
||||
** Return the current number of bytes stored into the buffer.
|
||||
** (One should use this instead of referencing the internal
|
||||
** length field explicitly...)
|
||||
*/
|
||||
#define DBufLength(dyn) ((dyn)->length)
|
||||
|
||||
/*
|
||||
** DBufClear
|
||||
** Scratch the current content of the buffer. Release all
|
||||
** allocated buffers and make it empty.
|
||||
*/
|
||||
#define DBufClear(dyn) dbuf_delete((dyn),DBufLength(dyn))
|
||||
|
||||
extern int dbuf_getmsg(dbuf *, char *);
|
||||
extern void dbuf_queue_init(dbuf *dyn);
|
||||
extern void dbuf_init(void);
|
||||
|
||||
#endif /* __dbuf_include__ */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user