1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-27 08:26:39 +02:00

15 Commits

Author SHA1 Message Date
Bram Matthys 779a427fc7 Updates for new repository name of test framework. 2019-08-18 09:58:24 +02:00
Bram Matthys 6044323d03 Add dot in UNREAL_VERSION_SUFFIX. 2019-07-07 15:39:23 +02:00
Bram Matthys e133b21703 UnrealIRCd 4.2.4.1 2019-07-07 15:05:59 +02:00
Bram Matthys 96ee7083c8 Customizing set::ssl::outdated-protocols and set::ssl::outdated-ciphers
was not possible since the configuration code was missing.
Reported by HeXiLeD in https://bugs.unrealircd.org/view.php?id=5327
2019-07-07 14:57:15 +02:00
Bram Matthys 755ef5b052 Debian 10 effectively overrides our set::ssl::protocols settings
causing UnrealIRCd to only accept SSL/TLS 1.2 and later connections.
We now use SSL_CTX_set_min_proto_version() to set the minimum
protocol version to fix this, only to disable specific SSL/TLS
versions later on via the old API.
It's great that they disabled SSL/TLS <1.2 by default and we have
already been considering doing the same in 2020, laying the
groundwork via set::ssl::outdated-protocols in February 2019.
However, such a chance is unexpected during UnrealIRCd 4.x.
2019-07-07 10:41:55 +02:00
Bram Matthys 8babe4db3f UnrealIRCd 4.2.4 2019-06-30 08:22:15 +02:00
Bram Matthys 58f8943069 More Windows fixes/workarounds.. 2019-06-30 08:10:17 +02:00
Bram Matthys 332135e5b3 Change set::ident::read-timeout from 30 to 15 seconds since otherwise
it exceeds set::handshake-timeout which would be very unfortunate for
those (few) poor users that are affected by this.
2019-06-29 18:49:36 +02:00
Bram Matthys eae47eac5f Fix bug where the Windows version only accepts very few clients. 2019-06-29 17:20:06 +02:00
Bram Matthys 12e1faf417 Fix m_sinfo not marked as an official module. 2019-06-29 16:26:01 +02:00
Bram Matthys f8de9ec78e Windows: duh, update version number there too. 2019-06-29 16:11:17 +02:00
Bram Matthys dc9880ce1e * The Windows version should warn and not error if using old-style regex. 2019-06-29 15:56:53 +02:00
Bram Matthys ac94ef3c85 Preparations for UnrealIRCd 4.2.4 2019-06-29 15:53:40 +02:00
Bram Matthys ce38423b42 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.
2019-06-16 10:15:57 +02:00
Bram Matthys 06df7cba70 Add new ./configure option (last question at ./Config): --enable-asan
This will enable AddressSanitizer which can be used to catch bugs.
It's only meant for (3rd party module) developers or if you are having
crash issues. On production servers it is not recommended, as it
consumes 3-4 times more memory and incurs a slowdown of about x2.
2019-05-12 15:30:00 +02:00
453 changed files with 66504 additions and 78370 deletions
+3 -14
View File
@@ -7,25 +7,14 @@
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Configuration Program
for UnrealIRCd 5.0.10-git
for UnrealIRCd 4.2.4.1
This program will help you to compile your IRC server, and ask you
questions regarding the compile-time settings of it during the process.
regarding the setup 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/unreal50/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
--------------------------------------------------------------------------------------
https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
+3 -4
View File
@@ -6,7 +6,9 @@ conftest.*
config.settings
extras/pcre2*
extras/c-ares*
extras/regexp*
config.status
extras/tre*
extras/ircdcron/ircd.cron
extras/ircdcron/ircdchk
src/modules/snomasks/Makefile
@@ -31,7 +33,7 @@ tags
server.cert.pem
server.key.pem
server.req.pem
tls.rnd
ssl.rnd
# Ignores for platform stuff
.DS_Store
@@ -70,6 +72,3 @@ xcuserdata
src/macosx/build/
DerivedData
src/macosx/pods/
# Doxygen generated files
doc/doxygen/
+6
View File
@@ -0,0 +1,6 @@
[submodule "extras/tests/ircfly"]
path = extras/tests/ircfly
url = https://github.com/unrealircd/ircfly.git
[submodule "extras/tests/functional-tests"]
path = extras/tests/functional-tests
url = https://github.com/unrealircd/unrealircd-tests-old.git
+28
View File
@@ -0,0 +1,28 @@
language: c
os: linux
dist: xenial
compiler:
- clang
- gcc
script: extras/build-tests/nix/build $BUILDCONFIG
env:
- BUILDCONFIG=""
- BUILDCONFIG="system-cares"
- BUILDCONFIG="system-cares system-curl"
- BUILDCONFIG="local-curl"
matrix:
include:
- os: osx
env: BUILDCONFIG=""
- os: osx
env: BUILDCONFIG="system-cares"
- os: osx
env: BUILDCONFIG="system-cares system-curl"
- os: osx
env: BUILDCONFIG="local-curl"
- env: BUILDCONFIG="libressl-27"
- env: BUILDCONFIG="libressl-28"
- env: BUILDCONFIG="libressl-29"
- env: BUILDCONFIG="openssl-102"
- env: BUILDCONFIG="openssl-110"
- env: BUILDCONFIG="openssl-111"
+506 -380
View File
File diff suppressed because it is too large Load Diff
+89 -80
View File
@@ -34,11 +34,11 @@ FROMDOS=/home/cmunk/bin/4dos
#
#XCFLAGS=-O -g -export-dynamic
IRCDLIBS=@IRCDLIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @SODIUM_LIBS@ @PTHREAD_LIBS@
IRCDLIBS=@IRCDLIBS@ @TRE_LIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @PTHREAD_LIBS@
CRYPTOLIB=@CRYPTOLIB@
OPENSSLINCLUDES=
XCFLAGS=@PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @SODIUM_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
XCFLAGS=@PTHREAD_CFLAGS@ @TRE_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
#
# use the following on MIPS:
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
@@ -91,12 +91,25 @@ IRCDMODE = 711
URL=@URL@
# [CHANGEME]
# If you get a link-time error dealing with strtoul, comment out
# this line.
# STRTOUL= strtoul.o
STRTOUL=@STRTOUL@
# [CHANGEME]
# If you get crashes around a specific number of clients, and that
# client load comes close or a little over the system-defined value of
# FD_SETSIZE, override it here and see what happens. You may override
# the system FD_SETSIZE by setting the FD_SETSIZE Makefile variable to
# -DFD_SETSIZE=<some number>.
FD_SETSIZE=@FD_SETSIZE@
# Where is your openssl binary
OPENSSLPATH=@OPENSSLPATH@
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS)
XLDFLAGS=@LDFLAGS_PRIVATELIBS@ @HARDEN_LDFLAGS@ @LDFLAGS@
LDFLAGS=$(XLDFLAGS)
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) $(FD_SETSIZE)
LDFLAGS=@LDFLAGS_PRIVATELIBS@ @HARDEN_LDFLAGS@
SHELL=/bin/sh
SUBDIRS=src
@@ -113,7 +126,7 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
'RES=${RES}' 'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
'INCLUDEDIR=${INCLUDEDIR}' \
'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
'SHELL=${SHELL}' \
'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}' \
'CRYPTOLIB=${CRYPTOLIB}' \
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' \
'URL=${URL}'
@@ -152,7 +165,7 @@ cleandir: clean
rm -rf include/setup.h Makefile Settings
distclean: cleandir
rm -rf extras/*.bak extras/*.tar extras/c-ares
rm -rf extras/*.bak extras/regexp 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
@@ -164,75 +177,58 @@ 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@ ; \
$(INSTALL) -m 0700 -d @BINDIR@
$(INSTALL) -m 0700 src/ircd @BINDIR@/unrealircd
$(INSTALL) -m 0700 -d @DOCDIR@
$(INSTALL) -m 0600 doc/Authors doc/coding-guidelines doc/tao.of.irc @DOCDIR@
$(INSTALL) -m 0700 -d @CONFDIR@
$(INSTALL) -m 0600 doc/conf/*.default.conf @CONFDIR@
$(INSTALL) -m 0600 doc/conf/*.optional.conf @CONFDIR@
-@if [ ! -f "@CONFDIR@/spamfilter.conf" ] ; then \
$(INSTALL) -m 0600 doc/conf/spamfilter.conf @CONFDIR@ ; \
fi
-@if [ ! -f "$(DESTDIR)@CONFDIR@/spamfilter.conf" ] ; then \
$(INSTALL) -m 0600 doc/conf/spamfilter.conf $(DESTDIR)@CONFDIR@ ; \
-@extras/patches/patch_spamfilter_conf "@CONFDIR@"
-@if [ ! -f "@CONFDIR@/badwords.conf" ] ; then \
$(INSTALL) -m 0600 doc/conf/badwords.conf @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@ ; \
-@if [ ! -f "@CONFDIR@/dccallow.conf" ] ; then \
$(INSTALL) -m 0600 doc/conf/dccallow.conf @CONFDIR@ ; \
fi
-@if [ ! -f "$(DESTDIR)@CONFDIR@/dccallow.conf" ] ; then \
$(INSTALL) -m 0600 doc/conf/dccallow.conf $(DESTDIR)@CONFDIR@ ; \
$(INSTALL) -m 0700 -d @CONFDIR@/aliases
$(INSTALL) -m 0600 doc/conf/aliases/*.conf @CONFDIR@/aliases
$(INSTALL) -m 0700 -d @CONFDIR@/help
$(INSTALL) -m 0600 doc/conf/help/*.conf @CONFDIR@/help
$(INSTALL) -m 0700 -d @CONFDIR@/examples
$(INSTALL) -m 0600 doc/conf/examples/*.conf @CONFDIR@/examples
$(INSTALL) -m 0700 -d @CONFDIR@/ssl
$(INSTALL) -m 0600 doc/conf/ssl/curl-ca-bundle.crt @CONFDIR@/ssl
$(INSTALL) -m 0700 unrealircd @SCRIPTDIR@
$(INSTALL) -m 0700 -d @MODULESDIR@
$(INSTALL) -m 0700 src/modules/*.so @MODULESDIR@
$(INSTALL) -m 0700 -d @MODULESDIR@/usermodes
$(INSTALL) -m 0700 src/modules/usermodes/*.so @MODULESDIR@/usermodes
$(INSTALL) -m 0700 -d @MODULESDIR@/chanmodes
$(INSTALL) -m 0700 src/modules/chanmodes/*.so @MODULESDIR@/chanmodes
$(INSTALL) -m 0700 -d @MODULESDIR@/snomasks
$(INSTALL) -m 0700 src/modules/snomasks/*.so @MODULESDIR@/snomasks
$(INSTALL) -m 0700 -d @MODULESDIR@/extbans
$(INSTALL) -m 0700 src/modules/extbans/*.so @MODULESDIR@/extbans
$(INSTALL) -m 0700 -d @MODULESDIR@/cap
$(INSTALL) -m 0700 src/modules/cap/*.so @MODULESDIR@/cap
$(INSTALL) -m 0700 -d @MODULESDIR@/third
@#Ugly stuff to detect 0 files in this directory:
@+for f in src/modules/third/*.so; do \
[ -e $f ] && $(INSTALL) -m 0700 src/modules/third/*.so @MODULESDIR@/third || echo; \
done
$(INSTALL) -m 0700 -d @TMPDIR@
$(INSTALL) -m 0700 -d @CACHEDIR@
$(INSTALL) -m 0700 -d @PERMDATADIR@
$(INSTALL) -m 0700 -d @LOGDIR@
-@if [ ! -f "@CONFDIR@/ssl/server.cert.pem" ] ; then \
$(INSTALL) -m 0600 server.req.pem @CONFDIR@/ssl ; \
$(INSTALL) -m 0600 server.key.pem @CONFDIR@/ssl ; \
$(INSTALL) -m 0600 server.cert.pem @CONFDIR@/ssl ; \
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.'
@@ -258,19 +254,32 @@ install: all
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..."
### TODO: all the stuff below ;) ###
pem: src/ssl.cnf
@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..."
-config src/ssl.cnf -sha256 -out server.req.pem \
-keyout server.key.pem -nodes
@echo "Generating self-signed certificate .. "
$(OPENSSLPATH) req -x509 -days 3650 -sha256 -in server.req.pem \
-key server.key.pem -out server.cert.pem
@echo "Setting permissions on server.*.pem files..."
@echo "Generating fingerprint .."
$(OPENSSLPATH) x509 -subject -dates -sha256 -fingerprint -noout \
-in server.cert.pem
@echo "Setting o-rwx & g-rwx for 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
@echo "Done!. If you want to encrypt the private key, run"
@echo "make encpem"
encpem: server.key.pem
@echo "Encrypting server key .."
$(OPENSSLPATH) rsa -in server.key.pem -out server.key.c.pem -des3
-@if [ -f server.key.c.pem ] ; then \
echo "Replacing unencrypted with encrypted .." ; \
cp server.key.c.pem server.key.pem ; \
rm -f server.key.c.pem ; \
fi
Makefile: config.status Makefile.in
./config.status
-1130
View File
File diff suppressed because it is too large Load Diff
+5 -6
View File
@@ -1,11 +1,13 @@
[![Build Status - *NIX](https://travis-ci.org/unrealircd/unrealircd.svg?branch=unreal42)](https://travis-ci.org/unrealircd/unrealircd)
[![Build Status - Windows](https://ci.appveyor.com/api/projects/status/9kgectl2mfyia0s5/branch/unreal42?svg=true)](https://ci.appveyor.com/project/syzop/unrealircd/branch/unreal42)
[![Twitter Follow](https://img.shields.io/twitter/follow/Unreal_IRCd.svg?style=social&label=Follow)](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
with a market share of over 50%. 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,
Key features include SSL, cloaking, its advanced anti-flood and anti-spam systems,
swear filtering and module support. We are also particularly proud on our extensive
online documentation.
@@ -20,10 +22,7 @@ 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
First you must compile the IRCd:
* Run `./Config`
* Run `make`
-21
View File
@@ -1,21 +0,0 @@
# Security Policy
## Supported Versions
* The latest *stable* release of the 5.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.
+10
View File
@@ -0,0 +1,10 @@
version: 4.2.x-devbuild-{build}
environment:
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: "Visual Studio 2017"
TARGET: "Visual Studio 2017"
SHORTNAME: "vs2017"
init:
- cmd: git config --global core.autocrlf true
build_script:
- cmd: call extras\\build-tests\\windows\\build.bat
+1 -90
View File
@@ -145,7 +145,7 @@ AC_ARG_ENABLE(ssl,
[enable_ssl=no])
AS_IF([test $enable_ssl != "no"],
[
AC_MSG_CHECKING([for OpenSSL])
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
@@ -179,36 +179,7 @@ AS_IF([test $enable_ssl != "no"],
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
])
])
@@ -252,63 +223,3 @@ 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
])
-2
View File
@@ -1,6 +1,4 @@
#!/bin/bash
echo "Regenerating 'configure' and headers..."
echo "NOTE: Normally only UnrealIRCd developers run this command!!"
cd "$(dirname "${0}")"
Vendored
+4344 -2483
View File
File diff suppressed because it is too large Load Diff
+355 -153
View File
@@ -2,12 +2,13 @@ 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
dnl include/win32/setup.h
dnl src/win32/unrealinst.iss
dnl .CHANGES.NEW
dnl src/version.c.SH
AC_INIT([unrealircd], [5.0.10-git], [https://bugs.unrealircd.org/], [], [https://unrealircd.org/])
AC_INIT([unrealircd], [4.2.4.1], [https://bugs.unrealircd.org/], [], [https://unrealircd.org/])
AC_CONFIG_SRCDIR([src/ircd.c])
AC_CONFIG_HEADER([include/setup.h])
AC_CONFIG_AUX_DIR([autoconf])
@@ -22,25 +23,26 @@ 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`"
BUILDDIR="`pwd`"
AC_SUBST(BUILDDIR)
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"]
UNREAL_VERSION_GENERATION=["4"]
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=["0"]
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=["10"]
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=["-git"]
UNREAL_VERSION_SUFFIX=[".1"]
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)
@@ -60,40 +62,30 @@ 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.])])
AC_PATH_PROG(GUNZIP, gunzip)
AC_PATH_PROG(PKGCONFIG, pkg-config)
dnl Checks for libraries.
AC_CHECK_LIB(descrypt, crypt,
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
IRCDLIBS="$IRCDLIBS-ldescrypt "],
IRCDLIBS="$IRCDLIBS-ldescrypt "
MKPASSWDLIBS="-ldescrypt"],
[AC_CHECK_LIB(crypt, crypt,
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
IRCDLIBS="$IRCDLIBS-lcrypt "])])
IRCDLIBS="$IRCDLIBS-lcrypt "
MKPASSWDLIBS="-lcrypt"])])
AC_CHECK_LIB(socket, socket,
[IRCDLIBS="$IRCDLIBS-lsocket "
SOCKLIB="-lsocket"])
AC_CHECK_LIB(nsl, inet_ntoa,
[IRCDLIBS="$IRCDLIBS-lnsl "
INETLIB="-lnsl"])
AC_CHECK_LIB(crypto, RAND_egd,
AC_DEFINE(HAVE_RAND_EGD, 1, [Define if the libcrypto has RAND_egd]))
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)])
)
AC_SUBST(MKPASSWDLIBS)
dnl HARDENING START
dnl This is taken from https://github.com/kmcallister/autoharden
@@ -111,9 +103,13 @@ 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_DEFUN([check_cc_cxx_flag],
[AC_LANG_PUSH(C)
AX_CHECK_COMPILE_FLAG([$1], [$2], [$3], [-Werror $4])
AX_CHECK_COMPILE_FLAG([$1],
[AC_LANG_PUSH(C)
AX_CHECK_COMPILE_FLAG([$1], [$2], [$3], [-Werror $4])
AC_LANG_POP(C)],
[$3], [-Werror $4])
AC_LANG_POP(C)])
AC_DEFUN([check_link_flag],
@@ -128,29 +124,23 @@ AC_ARG_ENABLE([hardening],
HARDEN_CFLAGS=""
HARDEN_LDFLAGS=""
AS_IF([test x"$hardening" != x"no"], [
check_cc_flag([-fno-strict-overflow], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fno-strict-overflow"])
check_cc_cxx_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_cxx_flag([-D_FORTIFY_SOURCE=2], [HARDEN_CFLAGS="$HARDEN_CFLAGS -D_FORTIFY_SOURCE=2"])
check_cc_flag([-fstack-protector-all],
check_cc_cxx_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"],
check_cc_cxx_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"],
check_cc_cxx_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_cc_cxx_flag([-fPIE],
[check_link_flag([-fPIE -pie],
[HARDEN_BINCFLAGS="-fPIE"
HARDEN_BINLDFLAGS="-pie"],
@@ -173,11 +163,7 @@ 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"])
check_cc_cxx_flag([-fno-strict-aliasing], [CFLAGS="$CFLAGS -fno-strict-aliasing"])
dnl Previously -funsigned-char was in a config check. It would always
dnl be enabled with gcc and clang. We now unconditionally enable it,
@@ -193,16 +179,16 @@ 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"])
check_cc_cxx_flag([-Wextra], [CFLAGS="$CFLAGS -Wextra"])
check_cc_cxx_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 Can't use this, too bad: check_cc_cxx_flag([-Wlogical-op], [CFLAGS="$CFLAGS -Wlogical-op"])
check_cc_cxx_flag([-Wduplicated-cond], [CFLAGS="$CFLAGS -Wduplicated-cond"])
check_cc_cxx_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 [!] NOTE REGARDING THE check_cc_cxx_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.,
@@ -218,41 +204,37 @@ 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"])
check_cc_cxx_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_cxx_flag([-Winvalid-source-encoding], [CFLAGS="$CFLAGS -Wno-invalid-source-encoding"])
check_cc_flag([-Wformat-zero-length], [CFLAGS="$CFLAGS -Wno-format-zero-length"])
check_cc_cxx_flag([-Wformat-zero-length], [CFLAGS="$CFLAGS -Wno-format-zero-length"])
check_cc_flag([-Wformat-truncation], [CFLAGS="$CFLAGS -Wno-format-truncation"])
check_cc_cxx_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"])
check_cc_cxx_flag([-Wunused], [CFLAGS="$CFLAGS -Wno-unused"])
check_cc_cxx_flag([-Wunused-parameter], [CFLAGS="$CFLAGS -Wno-unused-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_cxx_flag([-Wchar-subscripts], [CFLAGS="$CFLAGS -Wno-char-subscripts"])
check_cc_flag([-Wsign-compare], [CFLAGS="$CFLAGS -Wno-sign-compare"])
check_cc_cxx_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"])
check_cc_cxx_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"])
check_cc_cxx_flag([-Waddress], [CFLAGS="$CFLAGS -Wno-address"])
dnl End of -W... compiler checks.
@@ -322,6 +304,8 @@ dnl AC_DEFINE([DYNAMIC_LINKING], [], [Link dynamically as opposed to statically.
])
AC_CACHE_CHECK([if your system has IPv6 support], [ac_cv_ip6], [
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB"
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
@@ -336,23 +320,170 @@ exit(0); /* We only check if the code compiles, that's enough. We can deal with
if test "$ac_cv_ip6" = "no"; then
AC_MSG_ERROR([Your system does not support IPv6])
fi
LIBS="$save_libs"
AC_CHECK_HEADER(sys/param.h,
AC_DEFINE([PARAMH], [], [Define if you have the <sys/param.h> header file.]))
AC_CHECK_HEADER(stdlib.h,
AC_DEFINE([STDLIBH], [], [Define if you have the <stdlib.h> header file.]))
AC_CHECK_HEADER(stddef.h,
AC_DEFINE([STDDEFH], [], [Define if you have the <stddef.h> header file.]))
AC_CHECK_HEADER(sys/syslog.h,
AC_DEFINE([SYSSYSLOGH], [], [Define if you have the <sys/syslog.h> header file.]))
AC_CHECK_HEADER(unistd.h,
AC_DEFINE([UNISTDH], [], [Define if you have the <unistd.h> header file.]))
AC_CHECK_HEADER(string.h,
AC_DEFINE([STRINGH], [], [Define if you have the <string.h> header file.]))
AC_CHECK_HEADER(strings.h,
AC_DEFINE([STRINGSH], [], [Define if you have the <strings.h> header file.]))
AC_CHECK_HEADER(malloc.h,
AC_DEFINE([MALLOCH], [<malloc.h>], [Define to <malloc.h> you need malloc.h.]))
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 typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_MODE_T
AC_TYPE_SIZE_T
AC_TYPE_INTPTR_T
AC_HEADER_TIME
AC_HEADER_SYS_WAIT
AC_STRUCT_TM
AC_TYPE_UID_T
unreal_CHECK_TYPE_SIZES
dnl in the future, it would be nice to avoid AC_TRY_RUN to allow
dnl better support for crosscompiling.
AC_CACHE_CHECK([what kind of nonblocking sockets you have], [ac_cv_nonblocking],[
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB"
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(1);
}
int main() {
#ifdef O_NONBLOCK
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, O_NONBLOCK))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
}
],ac_cv_nonblocking=O_NONBLOCK,[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(0);
}
int main() {
#ifdef O_NDELAY
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, O_NDELAY))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
}],ac_cv_nonblocking=O_NDELAY,[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(1);
}
int main() {
#ifdef FIONBIO
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, FIONBIO))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
], ac_cv_nonblocking=FIONBIO,ac_cv_nonblocking=none)])])])
if test "$ac_cv_nonblocking" = "O_NONBLOCK"; then
AC_DEFINE([NBLOCK_POSIX], [], [Define if you have O_NONBLOCK])
elif test "$ac_cv_nonblocking" = "O_NDELAY"; then
AC_DEFINE([NBLOCK_BSD], [], [Define if you have O_NDELAY])
elif test "$ac_cv_nonblocking" = "FIONBIO"; then
AC_DEFINE([NBLOCK_SYSV], [], [Define if you have FIONBIO])
fi
LIBS="$save_libs"
dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_FUNC_SETPGRP
AC_FUNC_SETVBUF_REVERSED
AC_CHECK_FUNCS(snprintf,
AC_DEFINE([HAVE_SNPRINTF], [], [Define if you have snprintf]))
AC_CHECK_FUNCS(vsnprintf,
AC_DEFINE([HAVE_VSNPRINTF], [], [Define if you have vsnprintf]))
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(inet_pton,
AC_DEFINE([HAVE_INET_PTON], [], [Define if you have inet_pton]))
AC_CHECK_FUNCS(inet_ntop,
AC_DEFINE([HAVE_INET_NTOP], [], [Define if you have inet_ntop]))
dnl Check if it supports C99 style variable length arrays
AC_CACHE_CHECK([if C99 variable length arrays are supported], [ac_cv_varlen_arrays], [
AC_TRY_COMPILE(,[
int main() {
int i = 5;
int a[i];
a[0] = 1;
return 0;
}], ac_cv_varlen_arrays=yes, ac_cv_varlen_arrays=no)
])
if test "$ac_cv_varlen_arrays" = "yes" ; then
AC_DEFINE([HAVE_C99_VARLEN_ARRAY], [], [Define if you have a compiler with C99 variable length array support])
fi
AC_CHECK_FUNCS([setrlimit])
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([gettimeofday],
[AC_DEFINE([GETTIMEOFDAY], [], [Define if you have gettimeofday])],
[AC_CHECK_FUNCS([lrand48],
[AC_DEFINE([LRADN48], [], [Define if you have lrand48])])])
AC_CHECK_FUNCS([getrusage],
[AC_DEFINE([GETRUSAGE_2], [], [Define if you have getrusage])],
[AC_CHECK_FUNCS([times],
@@ -372,14 +503,65 @@ AC_CHECK_FUNCS([setproctitle],
]
)
AC_CHECK_FUNCS(explicit_bzero,AC_DEFINE([HAVE_EXPLICIT_BZERO], [], [Define if you have explicit_bzero]))
AC_CACHE_CHECK([what type of signals you have], [ac_cv_sigtype], [
AC_TRY_RUN([
#include <signal.h>
int main() {
sigaction(SIGTERM, (struct sigaction *)0L, (struct sigaction *)0L);
}
], ac_cv_sigtype=POSIX, [
AC_TRY_RUN([
#include <signal.h>
int calls = 0;
void handler()
{
if (calls)
return;
calls++;
kill(getpid(), SIGTERM);
sleep(1);
}
int main() {
signal(SIGTERM, handler);
kill(getpid(), SIGTERM);
exit(0);
}
], ac_cv_sigtype=BSD,ac_cv_sigtype=SYSV)])])
if test "$ac_cv_sigtype" = "POSIX"; then
AC_DEFINE([POSIX_SIGNALS], [], [Define if you have POSIX signals])
elif test "$ac_cv_sigtype" = "BSD"; then
AC_DEFINE([BSD_RELIABLE_SIGNALS], [], [Define if you have BSD signals])
else
AC_DEFINE([SYSV_UNRELIABLE_SIGNALS], [], [Define if you have SYSV signals])
fi
AC_CHECK_FUNCS(strtoken,,AC_DEFINE([NEED_STRTOKEN], [], [Define if you need the strtoken function.]))
AC_CHECK_FUNCS(strtok,,AC_DEFINE([NEED_STRTOK], [], [Define if you need the strtok function.]))
AC_CHECK_FUNCS(strerror,,AC_DEFINE([NEED_STRERROR], [], [Define if you need the strerror function.]))
AC_CHECK_FUNCS(index,,AC_DEFINE([NOINDEX], [], [Define if you do not have the index function.]))
AC_CHECK_FUNCS(strtoul,,STRTOUL="strtoul.o")
AC_CHECK_FUNCS(bcopy,,AC_DEFINE([NEED_BCOPY], [], [Define if you don't have bcopy]))
AC_CHECK_FUNCS(bcmp,,AC_DEFINE([NEED_BCMP], [], [Define if you don't have bcmp]))
AC_CHECK_FUNCS(bzero,,AC_DEFINE([NEED_BZERO], [], [Define if you need bzero]))
AC_CHECK_FUNCS(strcasecmp,AC_DEFINE([GOT_STRCASECMP], [], [Define if you have strcasecmp]))
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB $INETLIB"
AC_CHECK_FUNCS(inet_addr,,AC_DEFINE([NEED_INET_ADDR], [], [Define if you need inet_addr]))
AC_CHECK_FUNCS(inet_ntoa,,AC_DEFINE([NEED_INET_NTOA], [], [Define if you need inet_ntoa]))
LIBS="$save_libs"
AC_CHECK_FUNCS(syslog,AC_DEFINE([HAVE_SYSLOG], [], [Define if you have syslog]))
AC_SUBST(STRTOUL)
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([sendq], [AS_HELP_STRING([--with-sendq=maxsendq],[Specify the max sendq for the server])],
[AC_DEFINE_UNQUOTED([MAXSENDQLENGTH], [$withval], [Set to the max sendq you want])],
[AC_DEFINE([MAXSENDQLENGTH], [3000000], [Set to the max sendq 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
@@ -406,13 +588,6 @@ AC_ARG_WITH(confdir, [AS_HELP_STRING([--with-confdir=path],[Specify the director
[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"],
@@ -472,7 +647,6 @@ AS_IF([test "x$PRIVATELIBDIR" = "x"],
LDFLAGS="$LDFLAGS $LDFLAGS_PRIVATELIBS"
export LDFLAGS])
AC_SUBST(BUILDDIR)
AC_SUBST(BINDIR)
AC_SUBST(SCRIPTDIR)
AC_SUBST(CONFDIR)
@@ -503,22 +677,29 @@ 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(shunnotices, [AS_HELP_STRING([--with-shunnotices], [Notify a user when he/she is no longer shunned])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([SHUN_NOTICES], [], [Define if you want users to be notified when their shun is removed])])])
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(disableusermod, [AS_HELP_STRING([--with-disableusermod], [Disable /set* and /chg*])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([DISABLE_USERMOD], [], [Define if you want to disable /set* and /chg*])])])
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(disable-extendedban-stacking, [AS_HELP_STRING([--with-disable-extendedban-stacking], [Disable extended ban stacking])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([DISABLE_STACKED_EXTBANS], [], [Define to disable extended ban stacking (~q:~c:\#chan, etc)])])])
AC_ARG_WITH(tre, [AS_HELP_STRING([--without-tre], [Do not use the old deprecated TRE regex library])], [with_tre=no], [with_tre=yes])
AC_ARG_WITH(system-tre, [AS_HELP_STRING([--with-system-tre], [Use the system tre package instead of bundled, discovered using pkg-config])], [], [with_system_tre=no])
AC_ARG_WITH(system-pcre2, [AS_HELP_STRING([--with-system-pcre2], [Use the system pcre2 package instead of bundled, discovered using pkg-config])], [], [with_system_pcre2=no])
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"],
@@ -533,10 +714,34 @@ AC_ARG_ENABLE([werror],
AC_ARG_ENABLE([asan],
[AS_HELP_STRING([--enable-asan],
[Enable address sanitizer and other debugging options, not recommended for production servers!])],
[Enable address sanitizer, not recommended for production servers!])],
[ac_cv_asan="$enableval"],
[ac_cv_asan="no"])
AC_MSG_CHECKING([if FD_SETSIZE is large enough to allow $ac_fd file descriptors])
AC_COMPILE_IFELSE([
#include <sys/types.h>
#include <sys/time.h>
int main() {
#if FD_SETSIZE < $ac_fd
#error FD_SETSIZE is smaller than $ac_fd
#endif
exit(0);
}
], AC_MSG_RESULT([yes]), [
# must be passed on the commandline to avoid a ``warning, you redefined something''
FD_SETSIZE="-DFD_SETSIZE=$ac_fd"
AC_MSG_RESULT(no)
])
AC_SUBST([FD_SETSIZE])
case `uname -s` in
*SunOS*|*solaris*)
AC_DEFINE([_SOLARIS], [], [Define if you are compiling unrealircd on Sun's (or Oracle's?) Solaris])
IRCDLIBS="$IRCDLIBS -lresolv "
;;
esac
AC_CHECK_FUNCS([poll],
AC_DEFINE([HAVE_POLL], [], [Define if you have poll]))
AC_CHECK_FUNCS([epoll_create epoll_ctl epoll_wait],
@@ -549,15 +754,62 @@ 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 "x$with_tre" = "xyes"],[
AC_DEFINE([USE_TRE], [], [Use the old deprecated TRE regex library])
])
AS_IF([test "$has_system_pcre2" = "no"], [
AS_IF([test "x$with_system_tre" = "xno"],[
AS_IF([test "x$with_tre" = "xyes"],[
compile_tre="yes"
])
])
AS_IF([test "x$compile_tre" = "xyes"],[
dnl REMEMBER TO CHANGE WITH A NEW TRE RELEASE!
tre_version="0.8.0-git"
AC_MSG_RESULT(extracting TRE regex library)
cur_dir=`pwd`
cd extras
dnl remove old tre directory to force a recompile...
dnl and remove its installation prefix just to clean things up.
rm -rf tre-$tre_version rege[]xp
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz tre.tar.gz
else
cp tre.tar.gz tre.tar.gz.bak
gunzip -f tre.tar.gz
cp tre.tar.gz.bak tre.tar.gz
tar xf tre.tar
fi
AC_MSG_RESULT(configuring TRE regex library)
cd tre-$tre_version
./configure --disable-agrep --enable-shared --disable-system-abi --disable-wchar --disable-multibyte --prefix=$cur_dir/extras/regexp --libdir=$PRIVATELIBDIR || exit 1
AC_MSG_RESULT(compiling TRE regex library)
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing TRE regex library)
$ac_cv_prog_MAKER install || exit 1
TRE_CFLAGS="-I$cur_dir/extras/regexp/include"
AC_SUBST(TRE_CFLAGS)
TRE_LIBS=
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
[TRE_LIBS="`$ac_cv_path_PKGCONFIG --libs tre.pc`"])
dnl For when pkg-config isn't available -- or for when pkg-config
dnl doesn't see the tre.pc file somehow... (#3982)
AS_IF([test -z "$TRE_LIBS"],
[TRE_LIBS="$PRIVATELIBDIR/libtre.so"])
AC_SUBST(TRE_LIBS)
cd $cur_dir
])
AS_IF([test "x$with_system_tre" = "xyes"],[
dnl use pkgconfig for tre:
PKG_CHECK_MODULES([TRE], tre >= 0.7.5)
])
AS_IF([test "x$with_system_pcre2" = "xno"],[
dnl REMEMBER TO CHANGE WITH A NEW PCRE2 RELEASE!
pcre2_version="10.36"
pcre2_version="10.32"
AC_MSG_RESULT(extracting PCRE2 regex library)
cur_dir=`pwd`
cd extras
@@ -581,6 +833,7 @@ 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
@@ -593,6 +846,9 @@ AS_IF([test -z "$PCRE2_LIBS"],
[PCRE2_LIBS="$PRIVATELIBDIR/libpcre2-8.so"])
AC_SUBST(PCRE2_LIBS)
cd $cur_dir
],[
dnl use pkgconfig for pcre2:
PKG_CHECK_MODULES([PCRE2], libpcre2-8 >= 10.00)
])
dnl Use system argon2 when available, unless --without-system-argon2
@@ -625,11 +881,6 @@ 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)
@@ -638,55 +889,6 @@ 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"],[
@@ -697,7 +899,7 @@ 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.1"
cares_version="1.15.0"
AC_MSG_RESULT(extracting c-ares resolver library)
cur_dir=`pwd`
cd extras
@@ -716,7 +918,7 @@ 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
./configure --prefix=$cur_dir/extras/c-ares --libdir=$PRIVATELIBDIR --enable-shared || exit 1
CFLAGS="$save_cflags"
AC_MSG_RESULT(compiling c-ares resolver library)
$ac_cv_prog_MAKER || exit 1
@@ -776,7 +978,7 @@ fi
dnl Address sanitizer build
if test "$ac_cv_asan" = "yes" ; then
CFLAGS="$CFLAGS -O1 -fno-inline -fsanitize=address -fno-omit-frame-pointer -DNOCLOSEFD"
CFLAGS="$CFLAGS -O0 -fno-inline -fsanitize=address -fno-omit-frame-pointer -DNOCLOSEFD"
IRCDLIBS="-fsanitize=address $IRCDLIBS"
fi
@@ -791,8 +993,8 @@ AC_CONFIG_FILES([Makefile
src/modules/usermodes/Makefile
src/modules/snomasks/Makefile
src/modules/extbans/Makefile
src/modules/cap/Makefile
src/modules/third/Makefile
extras/unrealircd-upgrade-script
unrealircd])
AC_OUTPUT
chmod 0700 unrealircd
-47
View 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-----
+66
View File
@@ -0,0 +1,66 @@
UnrealIRCd 4.2.4.1 Release Notes
=================================
This version, 4.2.4.1, fixes an issue with Debian 10. On Debian 10 the
list of permitted SSL/TLS protocols was ignored (set::ssl::protocols).
Other than that, set::ssl::outdated-protocols and set::ssl::outdated-ciphers
are now configurable (rarely needed, though).
Below are the release notes of previous release, 4.2.4.
==[ 4.2.4 release notes ]==
This release fixes a crash issue if UnrealIRCd is configured to use utf8 or
chinese character sets in set::allowed-nickchars. This is not the default.
We don't expect many users to run their IRCd with this enabled, as the utf8
support was tagged as experimental and the chinese/gbk implementation is
incomplete.
In addition to the bug fix from above, this release also contains a number
of other fixes and enhancements. In particular there were some Windows
fixes and the reputation and connthrottle modules are now working better.
Enhancements:
* Improve server linking error messages
* Enhance WHOX to WHO auto-conversion for "WHO +s serv.er.name"
Major issues fixed:
* A crash issue if using utf8 or chinese in set::allowed-nickchars.
* The Windows version only accepted very few clients.
* The Windows version should warn and not error if using old-style regex.
* The Windows version did not save the reputation database.
Minor issues fixed:
* The 'connthrottle' module incorrectly allowed 0 unknown users in when
it was throttling, rather than the set rate.
* The 'reputation' module did not show scores for remote users in /WHOIS,
only after 5 minutes had passed.
* Some users may have experienced a "Registration Timeout" error when
connecting. This happened because their ident server accepted the TCP/IP
connection but after that failed to respond to the ident request. We
have now lowered set::ident::read-timeout to 15 seconds to fix this.
* If successfully logged in using SASL then avoid an "You are already
logged in" error message that could happen due to PASS forwarding.
The message was harmless, but annoying in some setups.
Module coders / Developers:
* If you are debugging or developing modules then we encourage you to
use AddressSanitizer. This does come at a 10x performance slowdown
and can consume a lot more memory, but it is very useful in tracing
common C mistakes such as out of bounds read/writes, double frees,
and so on. You will see exactly where a mistake was made.
To use this, in the last ./Config question you answer: --enable-asan
IRC protocol:
* No changes
Other changes:
* Various HELPOP updates
Future versions:
* We intend to change the default plaintext oper policy from 'warn' to 'deny'
in the summer of 2019. This will deny /OPER when used from a non-SSL
connection. For security, IRC Operators should really use SSL/TLS!
==[ CHANGES IN OLDER RELEASES ]==
For changes in previous UnrealIRCd releases see doc/RELEASE-NOTES.old or
https://raw.githubusercontent.com/unrealircd/unrealircd/unreal42/doc/RELEASE-NOTES.old
-960
View File
@@ -1,960 +0,0 @@
UnrealIRCd 5.X.Y-git Release Notes
===============================
This is the current development version (git) of UnrealIRCd.
This UnrealIRCd release focusses on channel history. A way to store channel
history encrypted on disk has been added (to preserve between server restarts)
and the IRCv3 CHATHISTORY command has been implemented to allow fetching
thousands of lines of channel history.
It also contains a breaking change, meaning (almost) everyone will need
to change a few things in their configuration file.
Breaking change:
* The set::anti-flood block has been redone so you can have different limits
for ''unknown-users'' and ''known-users''.
* As a reminder, by default, "known-users" are users who are identified
to services OR are on an IP that has been connected for over 2 hours
in the past X days. The exact definition of "known-users" is in the
[security-group block](https://www.unrealircd.org/docs/Security-group_block).
* See [here](https://www.unrealircd.org/docs/FAQ#new-anti-flood-block)
for more information on the layout of the new set::anti-flood block.
* All violatons of target-flood, nick-flood, join-flood, away-flood,
invite-flood, knock-flood, max-concurrent-conversations are now
reported to opers with the snomask ```f``` (flood).
Enhancements:
* Add support for database encryption. The way this works
is that you define an encryption password in a
[secret { } block](https://www.unrealircd.org/docs/Secret_block).
Then from the various modules you can refer to this secret
block, from
[set::reputation::db-secret](https://www.unrealircd.org/docs/Set_block#set::reputation),
[set::tkldb::db-secret](https://www.unrealircd.org/docs/Set_block#set::tkldb)
and [set::channeldb::db-secret](https://www.unrealircd.org/docs/Set_block#set::channeldb).
This way you can encrypt the reputation, TKL and channel
database for increased privacy.
* Add optional support for
[persistent channel history](https://www.unrealircd.org/docs/Set_block#Persistent_channel_history):
* This stores channel history on disk for channels that have
both ```+H``` and ```+P``` set.
* If you enable this then we ALWAYS require you to set an
encryption password, as we do not allow storing of
channel history in plain text.
* If you enable the option, then the history is stored in
```data/history/``` in individual .db files. No channel
names are visible in the filenames for optimal privacy.
* See [Persistent channel history](https://www.unrealircd.org/docs/Set_block#Persistent_channel_history)
on how to enable this. By default it is off.
* Add optional support for IRCv3
[draft/chathistory](https://ircv3.net/specs/extensions/chathistory).
This module can be loaded via ```loadmodule "chathistory";```
* The maximums for channel mode ```+H``` have been raised and are now
different for ```+r``` (registered) and ```-r``` channels. For unregistered
channels the limit is now 200 lines / 31 days. For registered channels
the limit is 5000 lines / 31 days. The old limit for both was 200 lines / 7 days.
These maximums can be changed in the now slightly different
[set::history::channel::max-storage-per-channel](https://www.unrealircd.org/docs/Set_block#set::history)
block.
* Add c-ares and libsodium version output to boot screen and /VERSION.
* WHOX now supports displaying the
[reputation score](https://www.unrealircd.org/docs/Reputation_score).
If you are an IRCOp then you can use e.g. ```WHO * %cuhsnfmdaRr```.
* Add ability to [spamfilter](https://www.unrealircd.org/docs/Spamfilter)
message tags via the new 'T' target. Right now it would be unusual
to use this, but some day when we have more
[message tags](https://www.unrealircd.org/docs/Message_tags) it
may come in handy.
* Support [+draft/reply](https://ircv3.net/specs/client-tags/reply) IRCv3
client tag. Can be used by bots (and others) to indicate to what message
people are replying to. This module, reply-tag, is loaded by default.
* Send [draft/bot](https://ircv3.net/specs/extensions/bot-mode) IRCv3
message tag if the user has mode ```+B``` set.
Fixes:
* Forbid using [extended server bans](https://www.unrealircd.org/docs/Extended_server_bans)
in ZLINE/GZLINE since they won't work.
* Extended server ban ```~a:accname``` was not working for shun, and only
partially working for kline/gline.
* More accurate /ELINE error message.
Changed:
* Channel mode ```+H``` always showed time in minutes (```m```) until now.
From now on it will show it in minutes (```m```), hours (```h```) or
days (```d```) depending on the actual value. Eg ```+H 50:7d```.
* If you ran ```./unrealircd stop``` we used to wait only 1 second.
From now on we will wait up to 10 seconds max. This gives UnrealIRCd
plenty of time to write database files.
* If you have zero [log blocks](https://www.unrealircd.org/docs/Log_block)
then we already automatically logged errors to ```ircd.log```.
From now on we will log everything (not only errors) to that file.
Removed:
* Version check for curl and openssl as nowadays they have ABI guarantees.
Module coders / Developers:
* New UnrealDB API and disk format, see
https://www.unrealircd.org/docs/Dev:UnrealDB
* We now use libsodium for file encryption routines as well
as some helpers to lock/clear passwords in memory.
* Updated ```HOOKTYPE_LOCAL_NICKCHANGE``` and
```HOOKTYPE_REMOTE_NICKCHANGE``` to include an
```MessageTag *mtags``` argument in the middle.
You can use ```#if UNREAL_VERSION_TIME>=202115``` to detect this.
* Updated channel mode ```conv_param``` function to
include a ```Channel *channel``` argument at the end.
You can use ```#if UNREAL_VERSION_TIME>=202120``` to detect this.
* New: ```ModuleSetOptions(modinfo->handle, MOD_OPT_UNLOAD_PRIORITY, priority);```.
This can be used for modules to indicate they wish to be unloaded
before or after others. It is used by for example the channel
and history modules so they can save their databases before
chanmode modules or other modules get unloaded.
* New CAP [```draft/chathistory```](https://ircv3.net/specs/extensions/chathistory).
If a client REQ's this CAP then UnrealIRCd won't send history on-join as
it assumes the client will fetch it when they feel the need for it.
* New informative CAP:
[unrealircd.org/history-backend](https://www.unrealircd.org/history-backend)
Reminder: UnrealIRCd 4 is no longer supported
----------------------------------------------
UnrealIRCd 4.x is [no longer supported](https://www.unrealircd.org/docs/UnrealIRCd_4_EOL).
Admins must [upgrade to UnrealIRCd 5](https://www.unrealircd.org/docs/Upgrading_from_4.x).
UnrealIRCd 5.0.9.1
-------------------
The only change between 5.0.9 and 5.0.9.1 is:
* Build improvements on *NIX (faster compiling and lower memory requirements)
* Windows version is unchanged and still 5.0.9
UnrealIRCd 5.0.9
-----------------
The 5.0.9 release comes with several nice feature enhancements. There are no major bug fixes.
Enhancements:
* Changes to the "Client connecting" notice on IRC (for IRCOps):
* The format changed slightly, instead of ```{clients}``` it
now shows ```[class: clients]```
* SSL/TLS information is still shown via ```[secure]```
* New: ```[reputation: NNN]``` to show the current
[reputation score](https://www.unrealircd.org/docs/Reputation_score)
* New: ```[account: abcdef]``` to show the services account,
but only if [SASL](https://www.unrealircd.org/docs/SASL) was used.
* In the log file the format also changed slightly:
* IP information is now added as ```[127.0.0.1]``` in both the
connect and disconnect log messages.
* The vhost is logged as ```[vhost: xyz]``` instead of ```[VHOST xyz]```
* All the other values are now logged as well on-connect,
similar to the "Client connecting" notice, so: secure, reputation,
account (if applicable).
* New option [allow::global-maxperip](https://www.unrealircd.org/docs/Allow_block):
this imposes a global (network-wide) restriction on the number of
connections per IP address.
If you don't have a global-maxperip setting in the allow block then it
will default to maxperip plus one. So, if you currently have an
allow::maxperip of 3 then global-maxperip will be 4.
* [Handshake delay](https://www.unrealircd.org/docs/Set_block#set::handshake-delay)
is automatically disabled for users that are exempt from blacklist checking.
* Always exempt 127.* from gline, kline, etc.
* You can now have dated logfiles thanks to strftime formatting.
For example ```log "ircd.%Y-%m-%d.log" { }``` will create a log
file like called ircd.2020-01-31.log, a new one every day.
* The Windows build now supports TLSv1.3 too.
Fixes:
* Windows: some warnings and error messages on boot were previously
missing.
Changes:
* Add doc/KEYS which contains the public key(s) used to sign UnrealIRCd releases
* The options set::anti-flood::unknown-flood-* have been renamed and
integrated in a new block called
[set::anti-flood::handshake-data-flood](https://www.unrealircd.org/docs/Set_block#set::anti-flood::handshake-data-flood).
The ban-action can now also be changed. Note that almost nobody will have to
change this setting since it has a good default.
* On *NIX bump the default maximum connections from 8192 to 16384.
That is, when in "auto" mode, which is like for 99% of the users.
Note that the system may still limit the actual number of connections
to a lower value, epending on the value of ```ulimit -n -H```.
UnrealIRCd 5.0.8
-----------------
The main purpose of this release is to enhance the
[reputation](https://www.unrealircd.org/docs/Reputation_score)
functionality. There have also been some other changes and minor
bug fixes. For more information, see below.
Enhancements:
* Support for [security groups](https://www.unrealircd.org/docs/Security-group_block),
of which four groups always exist by default: known-users, unknown-users,
tls-users and tls-and-known-users.
* New extended ban ```~G:securitygroupname```. Typical usage would be
```MODE #chan +b ~G:unknown-users``` which will ban all users from the
channel that are not identified to services and have a reputation
score below 25 (by default). The exact settings can be tweaked in the
[security group block](https://www.unrealircd.org/docs/Security-group_block).
* The reputation command (IRCOp-only) has been extended to make it
easier to look for potential troublemakers:
* ```REPUTATION Nick``` shows reputation about the nick name
* ```REPUTATION IP``` shows reputation about the IP address
* ```REPUTATION #channel``` lists users in channel with their reputation score
* ```REPUTATION <NN``` lists users with reputation scores below value NN
* Only send the first 1000 matches on ```STATS gline``` or a
similar command. This to prevent the IRCOp from being flooded off.
This value can be changed via
[set::max-stats-matches](https://www.unrealircd.org/docs/Set_block#set::max-stats-matches)
* Warn when the SSL/TLS server certificate is expired or expires soon
(within 7 days).
* New option allow::options::reject-on-auth-failure if you want to
stop matching on a passworded allow block, see the
[allow password documentation](https://www.unrealircd.org/docs/Allow_block#password)
for more information. Note that most people won't use this.
Fixes:
* The ```WHO``` command searched on nick name even if it was told
to search on a specific account name via WHOX options.
* Some typos in the Config script and a warning
* Counting clients twice in some circumstances
Changes:
* Support for $(DESTDIR) in 'make install' if packaging for a distro
* Mention the ban reason in Q-line server notices
* Add self-test to module manager and improve the error message in case
the IRCd source directory does not exist.
* Print out a more helpful error if you run the unrealircd binary
rather than the unrealircd script with an argument like 'mkpasswd' etc.
* On *NIX create a symlink 'source' to the UnrealIRCd source
Module coders / Developers:
* The [Doxygen module API docs](https://www.unrealircd.org/api/5/index.html)
have been improved, in particular the
[Hook API](https://www.unrealircd.org/api/5/group__HookAPI.html)
is now 100% documented.
UnrealIRCd 5.0.7
-----------------
UnrealIRCd 5.0.7 consists mainly of fixes for the 5.x stable series,
with some minor enhancements.
Enhancements:
* Add support for ```estonian-utf8```, ```latvian-utf8``` and
```lithuanian-utf8``` in
[set::allowed-nickchars](https://www.unrealircd.org/docs/Nick_Character_Sets)
* Add [message tags](https://www.unrealircd.org/docs/Message_tags)
to ```PONG``` to help fix timestamp issues in KiwiIRC.
* Dutch helpop file (conf/help/help.nl.conf)
Fixes:
* When having multiple text bans (```+b ~T:censor```), these caused an empty
message.
* Text bans are now no longer bypassed by voiced users (```+v```).
* [Websockets](https://www.unrealircd.org/docs/WebSocket_support) that used
```labeled-response``` sometimes received multiple IRC messages in one
websocket packet.
* The reputation score of [WEBIRC users](https://www.unrealircd.org/docs/WebIRC_block)
was previously the score of the WEBIRC IP rather than the end-user IP.
* ```STATS badword``` was not working.
* When setting a very high channel limit, it showed a weird MODE ```+l``` value.
* The ```LINKS``` command worked, even when disabled via
```hideserver::disable-links``` in the optional hideserver module.
* In some cases ```WHO``` did not show your own entry, such as when
searching on account name, which was confusing.
* Memory leak when repeatedly using ```./unrealircd reloadtls``` or
```/REHASH -tls```.
Module coders / Developers:
* No changes, only some small additions to the
[Doxygen module API docs](https://www.unrealircd.org/api/5/index.html)
UnrealIRCd 5.0.6
-----------------
UnrealIRCd 5.0.6 is a small maintenance release for the stable 5.x series.
For existing 5.x users there is probably little reason to upgrade.
Enhancements:
* Spanish help conf was added (conf/help/help.es.conf)
Fixes:
* History playback on join was not obeying the limits from
[set::history::channel::playback-on-join](https://www.unrealircd.org/docs/Set_block#set::history).
Note that if you want to see more lines, there is the ```HISTORY```
command. For more information on the different ways to retrieve history, see
[Channel History](https://www.unrealircd.org/docs/Channel_history)
* [Spamfilter](https://www.unrealircd.org/docs/Spamfilter) with the
['tempshun' action](https://www.unrealircd.org/docs/Actions) was letting
the message through.
* In very specific circumstances a ```REHASH -tls``` would cause outgoing
linking to fail with the error "called a function you should not call".
* Crash if empty [set::cloak-method](https://www.unrealircd.org/docs/Set_block#set::cloak-method)
* Issues with labeled-response on websockets (partial fix)
Module coders / Developers:
* In ```RPL_ISUPPORT``` we now announce ```BOT=B``` to indicate the user mode and
```WHO``` status flag for bots.
* ```HOOKTYPE_ACCOUNT_LOGIN``` is called for remote users too now (also on server syncs)
* Send ```RPL_LOGGEDOUT``` when logging out of services account
* Fix double batch in message tags when using both labeled-response
and the ```HISTORY``` command
UnrealIRCd 5.0.5.1
-------------------
5.0.5.1 reverts the previously introduced UTF8 Spamfilter support.
Unfortunately we had to do this, due to a bug in the PCRE2 regex library
that caused a freeze / infinite loop with certain regexes and text.
UnrealIRCd 5.0.5
-----------------
This 5.0.5 release mainly focuses on new features, while also fixing a few bugs.
Fixes:
* [except ban { }](https://www.unrealircd.org/docs/Except_ban_block)
without 'type' was not exempting from gline.
* Channel mode ```+L #forward``` and ```+k key```: should forward
on wrong key, but was also redirecting on correct key.
* Crash on 32-bit machines in tkldb (on start or rehash)
* Crash when saving channeldb when a parameter channel mode is combined
with ```+P``` and that module was loaded after channeldb. This may
happen if you use 3rd party modules that add parameter channel modes.
Enhancements:
* [antimixedutf8](https://www.unrealircd.org/docs/Set_block#set::antimixedutf8)
has been improved to detect CJK and other scripts and this will now
catch more mixed UTF8 spam. Note that, if you previously manually
set the score very tight (much lower than the default of 10) then you
may have to increase it a bit, or not, depending on your network.
* Support for IRCv3 [+typing clienttag](https://ircv3.net/specs/client-tags/typing.html),
which adds "user is typing" support to channels and PM (if the client
supports it).
* New flood countermeasure,
[set::anti-flood::target-flood](https://www.unrealircd.org/docs/Set_block#set%3A%3Aanti-flood%3A%3Atarget-flood),
which limits flooding to channels and users. This is only meant as a
filter for high rate floods. You are still encouraged to use
[channel mode +f](https://www.unrealircd.org/docs/Anti-flood_features#Channel_mode_f)
in channels which give you more customized and fine-grained options
to deal with low- and medium-rate floods.
* If a chanop /INVITEs someone, it will now override ban forwards
such as ```+b ~f:#forward:*!*@*```.
Changes:
* We now do parallel builds by default (```make -j4```) within ./Config,
unless the ```$MAKE``` or ```$MAKEFLAGS``` environment variable is set.
* [set::restrict-commands](https://www.unrealircd.org/docs/Set_block#set%3A%3Arestrict-commands):
* The ```disable``` option is now removed as it is implied. In other words: if
you want to disable a command, then simply don't use ```connect-delay```.
* You can now have a block without ```connect-delay``` but still make
users bypass the restriction with ```exempt-identified``` and/or
```exempt-reputation-score```. Previously this was not possible.
* We now give an error when an IRCOp tries to place an *LINE that already
exists. (Previously we sometimes replaced the existing *LINE and other
times we did not)
* Add Polish HELPOP (help.pl.conf)
Module coders / Developers:
* Breaking API change in ```HOOKTYPE_CAN_SEND_TO_USER``` and
```HOOKTYPE_CAN_SEND_TO_CHANNEL```: the final argument has changed
from ```int notice``` to ```SendType sendtype```, which is an
enum, since we now have 3 message options (PRIVMSG, NOTICE, TAGMSG).
UnrealIRCd 5.0.4
------------------
This new 5.0.4 version fixes quite a number of bugs. It contains only two small feature improvements.
Fixes:
* When placing a SHUN on an online user it was not always effective.
* Channeldb was not properly restoring all channel modes, such as +P.
* When upgrading UnrealIRCd it could sometimes crash the currently
running IRC server (rare), or trigger a crash report on
```./unrealircd restart``` (quite common).
* UnrealIRCd was giving up too easily on ident lookups.
* Crash when unloading a module with moddata.
* Crash if an authenticated server sends wrong information (rare).
* Removing a TEMPSHUN did not work if the user was on another server.
* SAJOIN to 0 (part all channels) resulted in a desync when used on remote users.
* Forced nick change from services was not showing up if the user
was not in any channels.
Enhancements:
* New option [set::hide-idle-time::policy](https://www.unrealircd.org/docs/Set_block#set%3A%3Ahide-idle-time)
by which you can change usermode +I (hide idle time in WHOIS) from
oper-only to settable by users. More options will follow in a future
release.
* In WHOIS you can now see if a user is currently (temp)shunned.
This only works for locally connected users for technical reasons,
so use ```/WHOIS Nick Nick``` to see it for remote users.
Changes:
* The oper notices and logging with regards to server linking have changed
a little. They are more consistent and log more now.
* When an IRCOp tries to oper up from an insecure connection we will now
mention the https://www.unrealircd.org/docs/FAQ#oper-requires-tls page.
This message is customizable through
[set::plaintext-policy::oper-message](https://www.unrealircd.org/docs/Set_block#set::plaintext-policy).
* The French HELPOP text was updated.
UnrealIRCd 5.0.3.1
-------------------
This fixes a crash issue after REHASH in 5.0.3.
UnrealIRCd 5.0.3
-----------------
Fixes:
* Fix serious flood issue in labeled-response implementation.
* An IRCOp SQUIT'ing a far remote server may cause a broken link topology
* In channels that are +D (delayed join), PARTs were not shown correctly to
channel operators.
Enhancements:
* A new HISTORY command for history playback (```HISTORY #channel number-of-lines```)
which allows you to fetch more lines than the on-join history playback.
Of course, taking into account the set limits in the +H channel mode.
This command is one of the [two interfaces](https://www.unrealircd.org/docs/Channel_history#Ways_to_retrieve_history)
to [Channel history](https://www.unrealircd.org/docs/Channel_history).
* Two new [message tags](https://www.unrealircd.org/docs/Message_tags),
```unrealircd.org/userip``` and ```unrealircd.org/userhost```
which communicate the user@ip and real user@host to IRCOps.
Changes:
* Drop the draft/ prefix now that the IRCv3
[labeled-response](https://ircv3.net/specs/extensions/labeled-response.html)
specification is out of draft.
* The operclass permission ```immune:target-limit``` is now called
```immune:max-concurrent-conversations```, since it bypasses
[set::anti-flood::max-concurrent-conversations](https://www.unrealircd.org/docs/Set_block#set::anti-flood::max-concurrent-conversations).
For 99% of the users this change is not important, but it may be
if you use highly customized [operclass blocks](https://www.unrealircd.org/docs/Operclass_block)
Are you upgrading from UnrealIRCd 4.x to UnrealIRCd 5? If so,
then check out the *UnrealIRCd 5* release notes [further down](#unrealircd-5). At the
very least, check out [Upgrading from 4.x](https://www.unrealircd.org/docs/Upgrading_from_4.x).
UnrealIRCd 5.0.2
-----------------
Fixes:
* Halfop users are not synced correctly, resulting in missing users across links.
* [Channel history](https://www.unrealircd.org/docs/Channel_history) used
incorrect time internally, resulting in messages expiring too soon.
The syntax is now really ```/MODE #chan +H lines:time-in-minutes```.
To make clear that the time is in minutes, an 'm' will be added
automatically by the server (eg ```+H 15:1440m```).
* Documentation: to exempt someone from gline via /ELINE you have to use type 'G', not 'g'.
Similarly, to exempt from spamfilter, use type 'F' and not 'f'.
* Exempting IPs from throttling via [except throttle](https://www.unrealircd.org/docs/Except_throttle_block) was not working.
* Unable to customize [set::tls::outdated-protocols](https://www.unrealircd.org/docs/Set_block#set::ssl::outdated-protocols)
and [set::tls::outdated-ciphers](https://www.unrealircd.org/docs/Set_block#set::ssl::outdated-ciphers).
* Specifying multiple channels did not work in [set::auto-join](https://www.unrealircd.org/docs/Set_block#set::auto-join),
[set::oper-auto-join](https://www.unrealircd.org/docs/Set_block#set::oper-auto-join) and
[tld::channel](https://www.unrealircd.org/docs/Tld_block).
Enhancements:
* [Extended server bans](https://www.unrealircd.org/docs/Extended_server_bans) in *LINE and /ELINE allow
you to ban or exempt users on criteria other than host/IP. These use a
similar syntax to extended bans. Currently supported are ~a, ~S and ~r. Examples:
* ```/ELINE ~a:TrustedAccount kG 0 This user can bypass kline/gline when using SASL```
* ```/ELINE ~S:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef kGF 0 Trusted user with this certificate fingerprint```
* ```/GLINE ~r:*some*stupid*real*name*```
* These can also be used in the configuration file, eg: ```except ban { mask ~S:11223344etc; type all; };```
* New options that may not be used much, but can be useful on specific networks:
* The IRCd may add automatic bans, for example due to a blacklist hit,
a spamfilter hit, or because of antirandom or antimixedutf8. The new
option [set::automatic-ban-target](https://www.unrealircd.org/docs/Set_block#set::automatic-ban-target) specifies on *what* the ban should
be placed. The default is *ip*. Other options are: userip, host, userhost, account, certfp.
* Similarly, an oper may type ```/GLINE nickname```. The new option
[set::manual-ban-target](https://www.unrealircd.org/docs/Set_block#set::manual-ban-target) specifies on what the ban should be placed.
By default this is *host* (fallback to *ip*).
* New options to exempt webirc users: [set::connthrottle::webirc-bypass](https://www.unrealircd.org/docs/Connthrottle),
[set::restrict-commands::name-of-command::exempt-webirc](https://www.unrealircd.org/docs/Set_block#set::restrict-commands).
UnrealIRCd 5.0.1
-----------------
Fixes:
* IRCd may hang in rare circumstances
* Windows: fix repeated "ERROR renaming 'data/reputation.db.tmp'" warnings
* Antirandom and blacklist did not deal properly with 'warn' actions
* [Authprompt](https://www.unrealircd.org/docs/Authentication#How_it_looks_like)
did not always work properly
* Line numbers were incorrect in config file warnings/errors when using @if or @define
Enhancements:
* New /ELINE exception type 'm' to bypass allow::maxperip.
Or in the configuration file: ```except ban { mask 203.0.113.0/24; type maxperip; };```
* IRCOps can override MLOCK restrictions when services are down,
if they have the channel:override:mlock operclass permission,
such as opers which use the operclass 'netadmin-with-override'.
Other:
* Gottem and k4be have [uploaded their 3rd party modules](https://modules.unrealircd.org/)
to unrealircd-contrib so *NIX users can now easily install them using the new
[Module manager](https://www.unrealircd.org/docs/Module_manager)
UnrealIRCd 5
-------------
After more than 6 months of hard work, UnrealIRCd 5 is now our new "stable" branch.
In particular I would like to thank Gottem and 'i' for their source code
contributions and PeGaSuS and westor for testing releases.
When we transitioned from 3.2.x to 4.0.0 there were 175,000 lines of source code
added/removed during 3 years of development. This time it was 120,000 lines in
only 6 months, a major effort!
**If you are upgrading from 4.x to 5.x, then it would be wise to read
[Upgrading from 4.x](https://www.unrealircd.org/docs/Upgrading_from_4.x).
In any case, be sure to upgrade your services package first! (if you use any)**
UnrealIRCd 5 is compatible with the following services:
* [anope](https://www.anope.org/) (version 2.0.7 or higher) -
with the "unreal4" protocol module
* [atheme](https://atheme.github.io/atheme.html) (version 7.2.9 or higher) -
with the "unreal4" protocol module
Summary
--------
The most visible change to end-users is channel history. A lot of IRCv3 features were added.
Various modules from Gottem have been integrated and enhanced.
We now have a 3rd party module manager so you can install modules with 1 simple command.
Channel settings of ```+P``` channels and *LINES are saved in a database and
restored on startup (via 'channeldb' and 'tkldb' respectively).
Channel mode ```+L``` has a slight change of meaning, the existing floodprot
mode (```+f```) has a new type to prevent repeated messages and a new drop action.
A few extended bans have been added as well (```~f``` and ```~p```).
IRCOps now have the ability to add ban exceptions via the ```/ELINE``` command.
Advanced admins can use more dynamic configuration options where you can
define variables and use them later in the configuration file.
Finally, there have been speed improvements, we use better defaults and
have added more countermeasures and options against spambots.
Under the hood *a significant amount* of the source code was changed and cleaned up.
Read below for the full list of enhancements, changes and removals (and information for developers too).
Enhancements
-------------
* Support for IRCv3 server generated [message tags](https://ircv3.net/specs/extensions/message-tags), which allows us to communicate
additional information in protocol messages such as in JOIN and PRIVMSG.
Currently implemented and permitted message tags are:
* [account](https://ircv3.net/specs/extensions/account-tag-3.2): communicate the services account that a user uses
* [msgid](https://ircv3.net/specs/extensions/message-ids): assign an unique message id to each message
* [time](https://ircv3.net/specs/extensions/server-time-3.2): assign a time label to each message
The last two are mainly for history playback.
* Support for IRCv3 [echo-message](https://ircv3.net/specs/extensions/echo-message-3.2), which helps clients, among other things,
to see if the message you sent was altered in any way, eg: censored,
stripped from color, etc.
* Support for IRCv3 [draft/labeled-response-0.2](https://ircv3.net/specs/extensions/labeled-response), which helps clients to
correlate commands and responses.
* Support for IRCv3 [BATCH](https://ircv3.net/specs/extensions/batch-3.2), needed for some other features.
* Recording and playback of [channel history](https://www.unrealircd.org/docs/Channel_history) when channel mode +H is set.
The syntax is: ```MODE #chan +H max-lines-to-record:max-time-to-record-in-minutes```.
For example: ```MODE #chan +H 50:1440``` means the last 50 messages will be stored and no
message will be stored longer than 1440 minutes (1 day).
The channel history is then played back when joining such a channel,
but with two things to keep in mind:
1) The client must support the 'server-time' CAP ('time' message tag),
otherwise history is not shown. Any modern IRC client supports this.
2) Only a maximum of 15 lines are played back on-join by default
The reason for the maximum 15 lines on-join playback is that this can
be quite annoying if you rejoin repeatedly and as to not flood the users
screen too much (unwanted). In the future we will support a mechanism
for clients to "fetch" history - rather than sending it on-join - so
they can fetch more than the 15 lines, up to the number of lines and
time configured in the +H channel mode.
You can configure the exact number of lines that are played back and
all the limits that apply to +H via [set::history::channel](https://www.unrealircd.org/docs/Set_block#set::history).
* For saving and retrieving history we currently have the following options:
* *history_backend_mem*: channel history is stored in memory.
This is very fast but also means history is lost on restart.
* *history_backend_null*: don't store channel history at all.
This can be useful to load on servers with no users on it, such as a
hub server, where storing history is unnecessary.
As you can see there is currently no 'disk' backend. However, in the
future more options may be added. Also note that 3rd party modules
can add history backends as well.
* Support for ban exceptions via the new ```/ELINE``` command. This allows you
to add exceptions for regular bans (KLINE/GLINE/ZLINE/etc), but also
for connection throttling and blacklist checking.
For more information, just type ```/ELINE ``` in your IRC client as an IRCOp.
* [Websocket](https://www.unrealircd.org/docs/WebSocket_support) support now includes type 'text'
in addition to 'binary', which should work with [KiwiIRC](https://kiwiirc.com/)'s nextclient.
Also, websockets are no longer active on all ports by default. You have to explicitly
enable the websocket option in the listen block and also specify type *text* or *binary*,
eg: ```listen { ip *; port 6667; options { websocket { type text; } } }```
Also note that websockets require nick names and channels to consist of UTF8
characters only, due to
[WebSocket being incompatible with non-UTF8](https://www.unrealircd.org/docs/WebSocket_support#Problems_with_websockets_and_non-UTF8)
* There's now a [Module manager](https://www.unrealircd.org/docs/Module_manager)
which allows you to install and upgrade 3rd party modules in an easy way:
* ```./unrealircd module list``` - to list all available 3rd party modules
* ```./unrealircd module install third/something``` - to install the specified module.
* You can now test for configuration errors without actually starting the
IRC server. This is ideal if you are upgrading UnrealIRCd to a newer
version: simply run ```./unrealircd configtest``` to make sure it passes
the configuration test, and then you can safely restart the server for
the upgrade (in this example case).
* Channel mode +L now kicks in for any rejected join, so not just for +l but
also for +b, +i, +O, +z, +R and +k. If, for example, the channel is
+L #insecure and also +z then, when an insecure user ties to join, they
will be redirected to #insecure.
* New extended ban ~f to forward users to the specified channel if the ban
matches. Example: ```MODE #chan +b ~f:#badisp:*!*@*.isp.org```
* Channel mode +f now has a 'd' action: drop message. This will send an
error message to the user and not show the message in the channel but
otherwise do nothing (no kick or ban).
For example: ```MODE #chan +f [5t#d]:15``` will limit sending a maximum of
5 messages per 15 seconds per-user and drop any messages sent above that limit.
* Channel mode +f now has 'r' floodtype to prevent repeated lines. This will
compare the current message to the last message and the one before that
the user sent to the channel. If it's a repeat then the user can be
kicked (the default action), the message can be dropped ('d') or the
user can be banned ('b'). Example: ```MODE #chan +f [1r#d]:15```
If you want to permit 1 repeated line but not 2 then use: ```+f [2r#d]:15```
* New module **tkldb** (loaded by default): all *LINES and spamfilters are now
saved across reboots. No need for services for that anymore.
* New module **channeldb** (loaded by default): saves and restores all channel
settings including topic, modes, bans etc. of +P (persistent) channels.
* New module [restrict-commands](https://www.unrealircd.org/docs/Set_block#set::restrict-commands), which allows you to restrict any IRC
command based on criteria such as "how long is this user connected",
"is this user registered (has a services account)" etc.
The example.conf now ships with configuration to disable LIST the
first 60 seconds and disable INVITE the first 120 seconds.
If you are having spambot problems then tweaking this configuration
may be helpful to you.
* New option [set::require-module](https://www.unrealircd.org/docs/Set_block#set::require-module), which allows you to require certain
modules on other UnrealIRCd 5 servers, otherwise the link is rejected.
* New option [set::min-nick-length](https://www.unrealircd.org/docs/Set_block#set::min-nick-length) to set a minimum nick length.
* New module rmtkl (loaded by default): this allows you to remove TKL's
such as GLINEs easily via the /RMTKL command.
* The [reputation and connthrottle](https://www.unrealircd.org/docs/Connthrottle) modules are now loaded by default.
Just as a reminder, what these do is classifying your users in "known
users (known IP's)" and "unknown IP's" for IP's that have not been
seen before (or only for a short amount of time). Then, when there
is a connection flood, unknown/new IP addresses are throttled at
20 connections per minute, while known users are always allowed in.
* Add support for [defines and conditional configuration](https://www.unrealircd.org/docs/Defines_and_conditional_config) via @define and @if.
This is mostly for power users, in particular users who share the same
configuration file across several servers.
* New extban ~p to hide the part/quit message in PART and QUIT.
For example: ```MODE #chan +b ~p:*!*@*.nl```
* You will now see a warning when a server is not responding even
before they time out. How long to wait for a PONG reply upon PING
can be changed via [set::ping-warning](https://www.unrealircd.org/docs/Set_block#set::ping-warning) and defaults to 15 seconds.
If you see the warning frequently then your connection is flakey.
* Add new setting [set::broadcast-channel-messages](https://www.unrealircd.org/docs/Set_block#set::broadcast-channel-messages) which defines when
channel messages are sent across server links. The default setting
is *auto* which is the correct setting for pretty much everyone.
* Add new option [set::part-instead-of-quit-on-comment-change](https://www.unrealircd.org/docs/Set_block#set::part-instead-of-quit-on-comment-change):
when a QUIT message is changed due to channel restrictions, such as
stripping color or censoring a word, we normally change the QUIT
message. This has an effect on ALL channels, not just the one that
imposed the restrictions. While we feel that is the best tradeoff,
there is now also this new option (off by default) that will change
the QUIT into a PART in such a case, so the other channels that
do not have the restrictions (eg: are -S and -G) can still see the
original QUIT message.
* New module [webredir](https://www.unrealircd.org/docs/Set_block#set::webredir::url). Quite some people run their IRCd on port 443 or 80
so their users can avoid firewall restrictions in place. In such a case,
with this module, you can now send a HTTP redirect in case some user
enters your IRC server name in their browser. Eg https://irc.example.org/
can be made to redirect to https://www.example.org/
* We now protect against misbehaving SASL servers and will time out
SASL sessions after
[set::sasl-timeout](https://www.unrealircd.org/docs/Set_block#set::sasl-timeout),
which is 15 seconds by default.
Changed
--------
* Channel mode +L can now be set by chanops (+o and higher) instead of only
by +q (channel owner)
* Channel names must now be valid UTF8 by default.
We actually have 3 possible settings of [set::allowed-channelchars](https://www.unrealircd.org/docs/Set_block#set::allowed-channelchars):
* **utf8**: Channel must be valid UTF8, this is the new default
* **ascii**: A very strict setting, for example in use at freenode,
the channel name may not contain high ascii or UTF8
* **any**: A very loose setting, which allows almost all characters
in the channel name. This was the OLD default, up to and
including UnrealIRCd 4. It is no longer recommended.
For most networks this new default setting of utf8 will be fine, since
by far most IRC clients use UTF8 for many years already.
If you have a network that has a significant portion of chatters
that are on old non-UTF8 clients that use a specific character set
then you may want to use ```set { allowed-nickchars any; }```
Some Russian and Ukrainian networks are known to need this.
* The "except tkl" block is now called [except ban](https://www.unrealircd.org/docs/Except_ban_block#UnrealIRCd_5). If no type
is specified in an except ban { } block then we exempt the entry
from kline, gline, zline, gzline and shun.
* We no longer use a blacklist for stats (set::oper-only-stats).
We use a whitelist now instead: [set::allow-user-starts](https://www.unrealircd.org/docs/Set_block#set::allow-user-stats).
Most users can just remove their old set::oper-only-stats line,
since the new default set::allow-user-starts setting is fine.
* Windows: we now require a 64-bit version, Windows 7 or later.
The new program path is: C:\Program Files\UnrealIRCd 5
and the binaries have been moved to a new subdirectory: bin\
* Modules lost their m_ prefix, so for example m_map is now just map.
Also the modules in cap/ are now directly in modules.
* More modules that were previously PERM (permanent) can now be unloaded
and reloaded on the fly. This allows more "hotfixing" without restart
in case of a bug and also more control for admins at runtime.
Only <5 modules out of 173 are permanent now.
* User mode +T now blocks channel CTCPs as well.
* User mode +q (unkickable) could previously be set by any IRCOp.
This has been changed to require the self:unkickablemode operclass
permission. This is included in the *-with-override operclasses
(eg: netadmin-with-operoverride).
* [set::modes-on-join](https://www.unrealircd.org/docs/Set_block#set::modes-on-join) is now ```+nt``` by default.
* The [authprompt](https://www.unrealircd.org/docs/Authentication#How_it_looks_like) module is now loaded by default. This means that if
you do a soft kline on someone (eg: ```KLINE %*@*.badisp```) then the user
has a chance to [authenticate](https://www.unrealircd.org/docs/Authentication#How_it_looks_like) to services, even without SASL, and
bypass the ban if (s)he is authenticated.
* The WHOX module is now used by default. Previously it was optional.
WHOX enhances the "WHO" output, providing additional information to
IRC clients such as the services account that someone is using.
It is also more universal than standard WHO. Unfortunately this also
means the WHO syntax changed to something less logical.
* At many places the term *SSL* has been changed to *SSL/TLS* or *TLS*.
Configuration items (eg: set::ssl to set::tls) have been renamed
as well and so have directories (eg: conf/ssl to conf/tls).
The old configuration names still work and currently does NOT raise
any warning. Also, when upgrading an existing installation on *NIX,
the conf/tls directory will be symlinked to conf/ssl as to not break
any Let's Encrypt certificate scripts.
* It is now mandatory to have at least one open SSL/TLS port, otherwise
UnrealIRCd will refuse to boot. Previously this was a warning.
* IRCOps now need to use SSL/TLS in order to oper up, as the
[set::plaintext-policy::oper](https://www.unrealircd.org/docs/Set_block#set::plaintext-policy) default setting is now 'deny'.
Similarly, [set::outdated-tls-policy::oper](https://www.unrealircd.org/docs/Set_block#set::outdated-tls-policy) is now also 'deny'.
You can change this, if you want, but it is not recommended.
* [set::outdated-tls-policy::server](https://www.unrealircd.org/docs/Set_block#set::outdated-tls-policy) is now 'deny' as well, since all
servers should use reasonable SSL/TLS protocols and ciphers.
* The default generated certificated has been changed from RSA 4096 bits
to Elliptic Curve Cryptography "384r1". This provides the same amount
of security but at higher speed. This only affects the default self-
signed certificate. You can still use RSA certificates just fine.
* If you do use an RSA certificate, we now require it to be at least
2048 bits otherwise UnrealIRCd will refuse to boot.
* When matching [allow { } blocks](https://www.unrealircd.org/docs/Allow_block), we now always continue with the next
block (if any) if the password did not match or no password was
specified. In other words, allow::options::nopasscont is now the
default and we behave as if there was a ::wrongpasscont too.
* All snomasks are now oper-only. Previously some were not, which
was confusing and could lead to information leaks.
Also removed weird set::snomask-on-connect accordingly.
* The IRCd now uses hash tables that are resilient against hash table
attacks. Also, the hash tables have increased in size to speed things
up when looking up nick names etc.
* Server options in VERSION (eg: Fhin6OoEMR3) are no longer shown to
normal users. They don't mean much nowadays anyway.
* ```./Config``` now asks fewer questions and configure runs faster since
many unnecessary checks have been removed (compatibility with very
old compilers / systems).
* We now default to system libs (eg: ```--with-system-pcre2``` is assumed)
* Spamfilter should catch some more spam evasion techniques.
* All /DCCDENY and deny dcc { } parsing and checking is now moved to
the 'dccdeny' module.
* Windows: If you choose to run UnrealIRCd as a service then it now
runs under the low-privilege NetworkService account rather than
the high-privilege LocalSystem account.
Minor issues fixed
-------------------
* Specifying a custom OpenSSL/LibreSSL path should work now
Removed
--------
* Support for old server protocols has been removed.
This means UnrealIRCd 5.x cannot link to 3.2.x. It also means you need
to use reasonably new services. Generally, if your services can link to
4.x then they should be able to link to 5.x as well. More information
about this change and why it was done
[can be found here](https://www.unrealircd.org/docs/FAQ#old-server-protocol).
* Connecting with a server password will no longer send that password
to NickServ. Use [SASL](https://www.unrealircd.org/docs/SASL) instead!
* Extended ban ~R (registered nick): this was the old method to match
registered users. Everyone should use ~a (services account) instead.
* The old TRE **posix** regex method has been removed because the TRE
library is no longer maintained for over a decade and contains many
bugs. (It was already deprecated in UnrealIRCd 4.2.3).
Use type **regex** instead, which uses the modern PCRE2 regex engine.
* Timesync support has been removed. Use your OS time synchronization
instead. (Note that Timesync was already disabled by default in 2018)
* Changing time offsets via ```TSCTL OFFSET``` and ```TSCTL SVSTIME``` are no longer
supported. Use your OS time synchronization (NTP!). Adjustments via
TSCTL are simply not accurate enough.
* The *nopost* module was removed since it no longer serves any useful
purpose. UnrealIRCd already protects against these kind of attacks
via ping cookies ([set::ping-cookie](https://www.unrealircd.org/docs/Set_block#set::ping-cookie), enabled by default).
Deprecated
-----------
* The set::official-channels block is now deprecated. This provided a
mechanism to pre-configure channels that would have 0 members and
would appear in /LIST with those settings, but once you joined all
those settings would be gone. Rather confusing.
Since UnrealIRCd 4.x we have permanent channels (+P) and since 5.x
we store these permanent channels in a database so all settings are
saved every few minutes and across restarts.
Since permanent channels (+P) are much better, the official-channels
support will be removed in a later version. There's no reason to
use official-channels anymore.
Developers
-----------
* The module header is now as follows:
ModuleHeader MOD_HEADER
= {
"nameofmodule",
"5.0",
"Some description",
"Name of Author",
"unrealircd-5",
};
There's a new author field, the version must start with a digit,
and also the name of the module must match the loadmodule name.
So for example third/funmod must also be named third/funmod.
* The ```MOD_TEST```, ```MOD_INIT```, ```MOD_LOAD``` and ```MOD_UNLOAD``` functions no longer
take a name argument. So: ```MOD_INIT(mymod)``` is now ```MOD_INIT()```
* We now use our own BuildBot infrastructure, so Travis-CI and AppVeyor
have been removed.
* We now use a new test framework.
* ```Auth_Check()``` now returns ```1``` for allow and ```0``` on deny (!!)
* New function ```new_message()``` which should be called when a new message
is sent, or at least for all channel events. It adds (or inherits)
message tags like 'account', 'msgid', 'time', etc.
* Many send functions now take an extra MessageTag *mtags parameter,
including but not limited to: sendto_one() and sendto_server().
* Command functions (CMD_FUNC) have an extra ```MessageTag *mtags```,
on the other hand the ```cptr``` parameter has been removed.
* Command functions no longer return ```int``` but are ```void```,
the same is true for ```exit_client()```. ```FLUSH_BUFFER``` has been removed too.
All this is a consequence of removing this (limited) signaling
of client exits. From now on, if you call ```exit_client()``` it will free
a lot of the client data and exit the user (close socket, send [s]quit),
but it will **not free 'sptr' itself**, so you can simply check if some
upstream function killed the client by checking ```IsDead(sptr)```.
This is highly recommended after running ```do_cmd()``` or calling other
functions that could kill a client. In which case you should return
rather than continue doing anything with ```sptr```.
Ultimately, in the main loop, the client will be freed (normally in less than 1 second).
* New single unified ```sendto_channel()``` and ```sendto_local_common_channels()```
functions that are used by all the channel commands.
* Numerics should now be sent using ```sendnumeric()```. There's also
a format string version ```sendnumericfmt()``` in case you need it,
in which case you need to pass the numeric format string yourself.
In such a case, don't forget the colon character, like ":%s", where needed.
* The parameters in several hooks have changed. Many now have an
extra ```MessageTag *mtags``` parameter. Sometimes there are other changes
as well, for example ```HOOKTYPE_CHANMSG``` now has 4 extra parameters.
* You can call do_cmd() with NULL mtags. Usually this is the correct way.
* If you used ```HOOKTYPE_PRE_USERMSG``` to block a message then you
should now use ```HOOKTYPE_CAN_SEND_TO_USER```. Similarly, the hook
```HOOKTYPE_CAN_SEND``` which deals with channels is now called
```HOOKTYPE_CAN_SEND_TO_CHANNEL```. Some other remarks:
* You CANNOT use HOOKTYPE_PRE_USERMSG anymore.
* The hooks require you to set an error message if you return HOOK_DENY.
* You should not send an error message yourself from these hooks.
In other words: do not use sendnumeric(). This is done by the
hook caller, based on the error message you return.
* Thanks to this, all rejecting of user messages now use generic
numeric 531 and all rejecting of channel messages use numeric 404.
See also under *Client protocol* later in this document.
* If you use CommandOverrideAddEx() to specify a priority value (rare)
then be aware that in 5.0.1 we now use the 4.0.x behavior again to
match the same style of priorities in hooks: overrides with the
lowest priority are run first.
* If you ever send a timestamp in a printf-like function, such as
in ```sendto_server()```, then be sure to use ```%lld``` and cast the timestamp
to *long long* so that it is compatible with both *NIX and Windows.
Example: ```sendnotice(sptr, "Timestamp is %lld", (long long)ts);```
* ```EventAdd()``` changed the order of parameters and expects every_msec now
which specifies the time in milliseconds rather than seconds. This
allows for additional precision, or at least multiple calls per second.
The minimum allowed every_msec value is 100 at this time.
The prototype is now: ```EventAdd(Module *module, char *name,
vFP event, void *data, long every_msec, int count);```
* New ```HOOKTYPE_IS_HANDSHAKE_FINISHED```. If a module returns ```0``` there, then
the ```register_user()``` function will not be called and the user will
not come online (yet). This is used by CAP and some other stuff.
Can be useful if your module needs to "hold" a user in the registration
phase.
* The function ```is_module_loaded()``` now takes a relative path like
"usermodes/noctcp" because with just "ctcp" one could not see the
difference between usermodes/noctcp and chanmodes/noctcp.
* ```CHFL_CHANPROT``` is now ```CHFL_CHANADMIN```, ```is_chanprot()``` is now ```is_chanadmin()```
* All hash tables now use [SipHash](https://en.wikipedia.org/wiki/SipHash), which is a hash function that is
resilient against hash table attacks. If you, as a module dev, too
use any hash tables anywhere (note: this is quite rare), then you
are recommended to use our functions, see the functions siphash()
and siphash_nocase() in src/hash.c.
* The random generator has been updated to use [ChaCha](https://en.wikipedia.org/wiki/Salsa20#ChaCha20_adoption) (more modern).
* You can now save pointers and integers etc. across rehashes by using
```LoadPersistentPointer()``` and ```SavePersistentPointer()```. For an example,
see ```src/modules/chanmodes/floodprot.c``` how this can be used.
Note that there can be no struct or type changes between rehashes.
* New ModData types: ```MODDATA_LOCALVAR``` and ```MODDA_GLOBALVAR```. These are
settings or things that are locally or globally identified by the
variable name only and not attached to any user/channel.
* Various files have been renamed. As previously mentioned, the m_
prefix was dropped in ```src/modules/m_*.c```. Similarly the s_ prefix
was dropped in ```src/s_*.c``` since it no longer had meaning. Also some
files have been deleted and integrated elsewhere or renamed to
have a name that better reflects their true meaning.
Related to this change is that all command functions are now called
```cmd_name``` rather than ```m_name```.
* ```HOOKTYPE_CHECK_INIT``` and ```HOOKTYPE_PRE_LOCAL_CONNECT```
have their return value changed. You should now return ```HOOK_*```, such
as ```HOOK_DENY``` or ```HOOK_CONTINUE```.
Server protocol
----------------
* UnrealIRCd 5 now assumes you support the following PROTOCTL options:
```NOQUIT EAUTH SID NICKv2 SJOIN SJ3 NICKIP TKLEXT2```.
If you fail to use ```SID``` or ```EAUTH``` then you will receive an
error. For the other options, support is *assumed*, no warning or
error is shown when you lack support. These are options that most,
if not all, services support since UnrealIRCd 4.x so it shouldn't be
a problem. More information [here](https://www.unrealircd.org/docs/FAQ#old-server-protocol)
* ```PROTOCTL MTAGS``` indicates that the server is capable of handling
message tags and that the server can cope with 4K lines. (Note that
the ordinary non-message-tag part is still limited to 512 bytes).
* Pseudo ID support in SASL was removed. We now use real UID's.
This breaks services who rely on the old pseudo ID format.
Client protocol
----------------
* Support for message tags and other IRCv3 features. See the IRCv3
specifications for more details.
* When a message is blocked, for whatever reason, we now use a generic
numeric response: ```:server 531 yourname targetname :reason``` for the block
This replaces all the various NOTICEs, ```ERR_NOCTCP```, ```ERR_NONONREG```, etc.
with just one single numeric.
The only other numerics that you may still encounter when PM'ing are
```ERR_NOSUCHNICK```, ```ERR_TOOMANYTARGETS``` and ```ERR_TARGETTOOFAST```, which are
generic errors to any command involving targets. And ```ERR_SERVICESDOWN```.
Note that channel messages already had a generic numeric for signaling
blocked messages for a very long time, ```ERR_CANNOTSENDTOCHAN```.
* The 271 response to the SILENCE command is now:
```:server 271 yournick listentry!*@*```
Previously the nick name appeared twice, which was a mistake.
* The 470 numeric, which is sent on /JOIN #channel redirect to #redirect
now uses the following format:
```:server 470 yournick #channel #redirect :[Link] Cannot join channel...etc..```
* Clients are recommended to implement and enable the
[server-time](https://ircv3.net/specs/extensions/server-time-3.2)
extension by default. When enabled, channel history is played back
on-join (if any) when the channel has channel mode +H.
Otherwise your users will not see channel history.
File diff suppressed because it is too large Load Diff
+143 -123
View File
@@ -1,123 +1,143 @@
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.
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, it must contain proper copyright headers.
3. If you want to submit patches (f.e. if you don't have write access to
the repository), then submit them to https://bugs.unrealircd.org/
using "hg export" or "hg diff". Naturally include a clear description
of what the change does.
4. 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 bug or stated in
a comment that it's OK to implement, then a 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 next
release, and add a comment pasting the relevant Changelog item and the
releaseid (.XYZ).
Of course other guidelines, like #7 and #8 still apply.
5. Do not commit changes that do not have an associated bug# and have not
had any discussion.
3.2.x: Small/tiny bugfixes that do not change any functionality, are
very unlikely to break anything and definitely don't require any prior
discussion may be exempted.
3.4.x: During the alpha & beta stage it is permitted to commit fixes
and code cleanups / restructuring without any discussion.
However in general, and in particular for new features, it is appreciated
if there has been prior discussion on bugs.unrealircd.org (or by mail).
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. Prior to a 3.2.x release: be very careful with any restructuring of a
subsystem or doing any major commits that may break things. Stuff like
this can be perfectly fine if there are many months to go, but are not
good to do a month before release. The head coder may impose additional
restrictions during such a period.
8. 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 generally use tabsize 4 and 8. In any case, 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, be very sure about your size counting. Sometimes it's possible
to avoid such code alltogether by just calling strlcat each time.
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 MyMalloc, MyMallocEx and MyFree (so not malloc/free).
MyMalloc usually maps to malloc, and MyMallocEx is a malloc plus filling
the memory area (eg: the struct) with zero's (a la calloc).
Use of MyMallocEx is suggested. In general you should not be using MyMalloc.
"But MyMalloc is faster!" you might say. This is true, but using MyMallocEx
has very little speed impact and enormous benefits: people tend to forget
to set certain fields in the struct to NULL, or much more common: when
someone later on (eg: 1 year later) adds a field to a struct, there could
be several places he/she needs to update to make sure x->something is NULL
after allocating a new struct. Bad idea.
Little speed impact, huge stability benefits, easy decision ;).
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.
+9 -9
View File
@@ -5,39 +5,39 @@ alias identify {
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;
}
};
+13 -12
View File
@@ -1,17 +1,18 @@
/* 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; }
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; };
include "aliases/aliases.conf";
+21 -21
View File
@@ -1,26 +1,26 @@
/* 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; }
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";
+25 -25
View File
@@ -1,33 +1,33 @@
/* 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; }
# 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 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; }
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";
+8 -8
View File
@@ -1,12 +1,12 @@
/* 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; }
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";
+12 -12
View File
@@ -1,16 +1,16 @@
/* 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; }
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";
+10 -10
View File
@@ -1,14 +1,14 @@
/* 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; }
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";
+2 -2
View File
@@ -1,4 +1,4 @@
/* Generic StatServ Aliases */
alias statserv { type stats; }
alias ss { target statserv; type stats; }
alias statserv { type stats; };
alias ss { target statserv; type stats; };
+13 -13
View File
@@ -1,17 +1,17 @@
/* 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; }
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";
+4 -4
View File
@@ -1,6 +1,6 @@
/* OperStats Aliases */
alias operserv { type stats; }
alias os { target operserv; type stats; }
alias statserv { type stats; }
alias ss { target statserv; type stats; }
alias operserv { type stats; };
alias os { target operserv; type stats; };
alias statserv { type stats; };
alias ss { target statserv; type stats; };
+19 -19
View File
@@ -30,22 +30,22 @@
*/
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"; }
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"; };
+20 -20
View File
@@ -17,26 +17,26 @@
*/
/* first.. deny everything, then allow known-good stuff... */
deny dcc { filename "*"; reason "Possible executable content"; soft yes; }
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; }
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; }
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; }
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; };
+78 -161
View File
@@ -1,19 +1,19 @@
/* Configuration file for UnrealIRCd 5
/* Configuration file for UnrealIRCd 4
*
* 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
* Important: All lines, except the opening { line, end with an ;
* including };. This is very important, if you miss a ; somewhere then
* the configuration file parser will complain and your 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
* UnrealIRCd 4 documentation (very extensive!):
* https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
*
* Frequently Asked Questions:
* https://www.unrealircd.org/docs/FAQ
@@ -58,10 +58,10 @@ include "operclass.default.conf";
* have it's own sid).
*/
me {
name "irc.example.org";
info "ExampleNET Server";
name "irc.foonet.com";
info "FooNet 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.
@@ -69,8 +69,8 @@ me {
admin {
"Bob Smith";
"bob";
"email@example.org";
}
"widely@used.name";
};
/* Clients and servers are put in class { } blocks, we define them here.
* Class blocks consist of the following items:
@@ -87,7 +87,7 @@ class clients
maxclients 1000;
sendq 200k;
recvq 8000;
}
};
/* Special class for IRCOps with higher limits */
class opers
@@ -96,7 +96,7 @@ class opers
maxclients 50;
sendq 1M;
recvq 8000;
}
};
/* Server class with good defaults */
class servers
@@ -105,7 +105,7 @@ class servers
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
@@ -119,7 +119,7 @@ allow {
ip *@*;
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
@@ -130,7 +130,7 @@ allow {
class clients;
password "somesecretpasswd";
maxperip 20;
}
};
/* Oper blocks define your IRC Operators.
* IRC Operators are people who have "extra rights" compared to others,
@@ -158,8 +158,8 @@ oper bobsmith {
*/
operclass netadmin;
swhois "is a Network Administrator";
vhost netadmin.example.org;
}
vhost netadmin.mynet.org;
};
/* Listen blocks define the ports where the server should listen on.
* In other words: the ports that clients and servers may use to
@@ -172,35 +172,35 @@ oper bobsmith {
* port <port>;
* options {
* <options....>;
* }
* }
* };
* };
*/
/* Standard IRC port 6667 */
listen {
ip *;
port 6667;
}
};
/* Standard IRC SSL/TLS port 6697 */
listen {
ip *;
port 6697;
options { tls; }
}
options { ssl; };
};
/* Special SSL/TLS servers-only port for linking */
listen {
ip *;
port 6900;
options { tls; serversonly; }
}
options { ssl; 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; }
* listen { ip 1.2.3.4; port 6667; };
* Of course, replace the IP with the IP that was assigned to you.
*/
@@ -208,49 +208,50 @@ listen {
* 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
link hub.mynet.org
{
incoming {
mask *@something;
}
};
outgoing {
bind-ip *; /* or explicitly an IP */
hostname hub.example.org;
hostname hub.mynet.org;
port 6900;
options { tls; }
}
options { ssl; };
};
/* We use the SPKI fingerprint of the other server for authentication.
* Run './unrealircd spkifp' on the other side to get it.
* NOTE: requires UnrealIRCd 4.0.16 or later.
*/
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
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
link services.mynet.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;
}
services.mynet.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
@@ -259,13 +260,13 @@ ulines {
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 */
/* This is a good default, it logs almost everything */
log "ircd.log" {
flags {
oper;
@@ -273,14 +274,13 @@ log "ircd.log" {
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.
@@ -294,7 +294,7 @@ include "aliases/anope.conf";
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.
@@ -302,19 +302,19 @@ ban nick {
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.
@@ -322,12 +322,12 @@ ban user {
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.
@@ -340,26 +340,26 @@ ban realname {
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 {
/* except tkl with type 'all' protects you from GLINE, GZLINE, QLINE, SHUN */
except tkl {
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
@@ -374,7 +374,7 @@ vhost {
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
@@ -396,12 +396,12 @@ blacklist dronebl {
dns {
name dnsbl.dronebl.org;
type record;
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
}
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.
@@ -414,22 +414,22 @@ blacklist efnetrbl {
dns {
name rbl.efnetrbl.org;
type record;
reply { 1; 4; 5; }
}
reply { 1; 4; 5; };
};
action gline;
ban-time 24h;
reason "Proxy/Drone/TOR detected. Check https://rbl.efnetrbl.org/?i=$ip for details.";
}
reason "Proxy/Drone/TOR detected. Check http://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";
network-name "MYNet";
default-server "irc.mynet.org";
services-server "services.mynet.org";
stats-server "stats.mynet.org";
help-channel "#Help";
hiddenhost-prefix "Clk";
prefix-quit "Quit";
@@ -445,21 +445,20 @@ set {
"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 */
modes-on-oper "+xwgs"; /* when someone becomes IRCOp they'll get these modes */
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 */
@@ -474,12 +473,15 @@ set {
/* static-part does the same for /PART */
/* static-part yes; */
/* Flood protection */
/* Which /STATS to restrict to opers only. We suggest to leave it to * (ALL) */
oper-only-stats "*";
/* Anti flood protection */
anti-flood {
nick-flood 3:60; /* 3 nick changes per 60 seconds (the default) */
connect-flood 3:60; /* 3 connection attempts per 60 seconds (the default) */
away-flood 4:120; /* 4 times per 2 minutes you may use /AWAY (default) */
}
};
/* Settings for spam filter */
spamfilter {
@@ -487,93 +489,8 @@ set {
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.
+62 -57
View File
@@ -1,4 +1,4 @@
/* Fichier de configuration pour UnrealIRCd 5
/* Fichier de configuration pour UnrealIRCd 4
*
* Copiez ce fichier dans le répertoire conf/, renommez le
* 'unrealircd.conf' et parcourez-le ligne par ligne (modifiez le !)
@@ -13,8 +13,8 @@
* 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
* Documentation pour UnrealIRCd 4 (très complète !) :
* https://www.unrealircd.org/docs/UnrealIRCd_4_documentation/fr
*
* Foire Aux Questions :
* https://www.unrealircd.org/docs/FAQ
@@ -59,10 +59,10 @@ include "operclass.default.conf";
* (chaque serveur doit avoir un sid différent).
*/
me {
name "irc.example.org";
info "Serveur ExampleNET";
name "irc.foonet.com";
info "Serveur FooNet";
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.
@@ -70,8 +70,8 @@ me {
admin {
"Bob Smith";
"bob";
"adresse.email@example.org";
}
"adresse.email@foonet.com";
};
/* Les clients et serveurs sont placés dans des classes, que nous
* définissons dans ces blocs class { }.
@@ -92,7 +92,7 @@ class clients
maxclients 1000;
sendq 200k;
recvq 8000;
}
};
/* Classe spéciale pour des IRCOps avec des limites plus hautes */
class opers
@@ -101,7 +101,7 @@ class opers
maxclients 50;
sendq 1M;
recvq 8000;
}
};
/* Classe pour des serveurs */
class servers
@@ -110,7 +110,7 @@ class servers
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
@@ -124,7 +124,7 @@ allow {
ip *@*;
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.
@@ -135,7 +135,7 @@ allow {
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"
@@ -160,8 +160,8 @@ oper bobsmith {
*/
operclass netadmin;
swhois "est un Administrateur du Réseau";
vhost netadmin.example.org;
}
vhost netadmin.mynet.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
@@ -174,29 +174,29 @@ oper bobsmith {
* 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; }
}
options { ssl; };
};
/* Port SSL/TLS spécial pour la connexion entre serveurs */
listen {
ip *;
port 6900;
options { tls; serversonly; }
}
options { ssl; 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
@@ -212,23 +212,23 @@ listen {
* pour former un réseau IRC.
* Voir https://www.unrealircd.org/docs/Tutorial:_Linking_servers
*/
link hub.example.org
link hub.mynet.org
{
incoming {
mask *@something;
}
};
outgoing {
bind-ip *; /* ou une IP précise */
hostname hub.example.org;
hostname hub.mynet.org;
port 6900;
options { tls; }
}
options { ssl; };
};
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.
@@ -237,8 +237,8 @@ link hub.example.org
* https://www.unrealircd.org/docs/Services )
*/
ulines {
services.example.org;
}
services.mynet.org;
};
/* Ici vous pouvez indiquer un mot de passe pour les commandes /DIE et
* /RESTART, qui sont restreintes aux IRCops.
@@ -248,7 +248,7 @@ ulines {
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
@@ -267,8 +267,8 @@ log "ircd.log" {
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
@@ -286,7 +286,7 @@ include "aliases/anope.conf";
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.
@@ -294,7 +294,7 @@ ban nick {
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
@@ -302,7 +302,7 @@ ban ip {
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
@@ -310,18 +310,18 @@ ban server {
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 ...
@@ -335,13 +335,13 @@ ban realname {
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 {
/* except tkl avec le type 'all' vous protège des GLINE, GZLINE, QLINE, SHUN */
except tkl {
mask *@192.0.2.1;
type all;
}
};
/* Avec un bloc deny dcc vous pouvez interdire des noms de fichiers dans
* les échanges DCC
@@ -349,14 +349,14 @@ except ban {
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.
@@ -372,17 +372,17 @@ vhost {
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";
network-name "MYNet";
default-server "irc.mynet.org";
services-server "services.mynet.org";
stats-server "stats.mynet.org";
help-channel "#Help";
hiddenhost-prefix "Clk";
prefix-quit "Quit";
@@ -400,20 +400,20 @@ set {
"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 */
modes-on-oper "+xwgs"; /* 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 */
@@ -430,12 +430,17 @@ set {
/* static-part fait la même chose pour /PART */
/* static-part yes; */
/* Quelles /STATS sont restreintes aux Opérateurs. Nous vous
* conseillons de laisser '*' (toutes)
*/
oper-only-stats "*";
/* Protections anti-flood */
anti-flood {
nick-flood 3:60; /* 3 changements de nick par 60 secondes */
connect-flood 3:60; /* 3 tentatives de connexions par 60 seconds */
away-flood 4:120; /* 4 utilisation de /AWAY par 2 minutes */
}
};
/* Paramètres de Spamfilter */
spamfilter {
@@ -443,8 +448,8 @@ set {
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 ?
+72 -68
View File
@@ -1,4 +1,4 @@
/* UnrealIRCd 5 için yapılandırma dosyası
/* UnrealIRCd 4 için yapılandırma dosyası
* Türkçe Çeviri: Diablo - (Serkan Sepetçi)
* İletişim: irc.trirc.com:6667 - diablo@unrealircd.org
*
@@ -14,8 +14,8 @@
* 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
* UnrealIRCd 4 belgeleme (çok geniş!):
* https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
*
* Sıkça Sorulan Sorular:
* https://www.unrealircd.org/docs/FAQ
@@ -59,10 +59,10 @@ include "operclass.default.conf";
* kendi sid olmalıdır).
*/
me {
name "irc.example.org";
info "ExampleNET Server";
name "irc.foonet.com";
info "FooNet 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.
@@ -70,8 +70,8 @@ me {
admin {
"Bob Smith";
"bob";
"email@example.org";
}
"widely@used.name";
};
/* Kullanıcılar ve sunucular için class { } bloğu belirtilir.
* Class blokları aşağıdaki işlemlerden oluşur:
@@ -88,7 +88,7 @@ class clients
maxclients 1000;
sendq 200k;
recvq 8000;
}
};
/* IRCOp'lar için varsaylan yüksek limitli özel class ayarları */
class opers
@@ -97,7 +97,7 @@ class opers
maxclients 50;
sendq 1M;
recvq 8000;
}
};
/* Sunucular için varsayılan class ayarları */
class servers
@@ -106,7 +106,7 @@ class servers
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
@@ -120,7 +120,7 @@ allow {
ip *@*;
class clients;
maxperip 3;
}
};
/* Örnek olarak özel bir IP bloğu izini:
* Bu IP bir şifre ile bağlantı yapması olduğunu gerektirir.
@@ -131,7 +131,7 @@ allow {
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.
@@ -159,8 +159,8 @@ oper bobsmith {
*/
operclass netadmin;
swhois "is a Network Administrator";
vhost netadmin.example.org;
}
vhost netadmin.mynet.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
@@ -173,29 +173,29 @@ oper bobsmith {
* 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; }
}
options { ssl; };
};
/* Özel SSL/TLS sadece sunucuları bağlamak için port */
listen {
ip *;
port 6900;
options { tls; serversonly; }
}
options { ssl; 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
@@ -209,49 +209,50 @@ listen {
* 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
link hub.mynet.org
{
incoming {
mask *@something;
}
};
outgoing {
bind-ip *; /* veya açıkça bir IP */
hostname hub.example.org;
hostname hub.mynet.org;
port 6900;
options { tls; }
}
options { ssl; };
};
/* 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.
* NOT: UnrealIRCd 4.0.16 veya üzeri versiyonları gerektirir.
*/
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
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
link services.mynet.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;
}
services.mynet.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
@@ -260,7 +261,7 @@ ulines {
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
@@ -279,8 +280,8 @@ log "ircd.log" {
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.
@@ -294,7 +295,7 @@ include "aliases/anope.conf";
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.
@@ -302,19 +303,19 @@ ban nick {
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.
@@ -322,12 +323,12 @@ ban user {
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.
@@ -340,26 +341,26 @@ ban realname {
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 {
/* except tkl bloğu, sizi 'tüm' GLINE, GZLINE, QLINE, SHUN gibi banlardan koruyacaktır */
except tkl {
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
@@ -374,7 +375,7 @@ vhost {
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
@@ -396,12 +397,12 @@ blacklist dronebl {
dns {
name dnsbl.dronebl.org;
type record;
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
}
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.
@@ -414,22 +415,22 @@ blacklist efnetrbl {
dns {
name rbl.efnetrbl.org;
type record;
reply { 1; 4; 5; }
}
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.";
}
reason "Proxy/Drone/TOR belirlendi. Ayrıntılar için http://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";
network-name "MYNet";
default-server "irc.mynet.org";
services-server "services.mynet.org";
stats-server "stats.mynet.org";
help-channel "#Help";
hiddenhost-prefix "Clk";
prefix-quit "Quit";
@@ -445,20 +446,20 @@ set {
"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 */
modes-on-oper "+xwgs"; /* 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ı */
@@ -473,12 +474,15 @@ set {
/* static-part /PART komutu ile aynı işi görür */
/* static-part yes; */
/* /STATS komutunu operler için kısıtlar. Önerilen * (TÜMÜ) */
oper-only-stats "*";
/* Anti flood Koruması */
anti-flood {
nick-flood 3:60; /* Her 60 saniyede 3 nick değişikliği (varsayılan) */
connect-flood 3:60; /* Her 60 saniyede 3 bağlantı girişi izni (varsayılan) */
away-flood 4:120; /* Her 2 dakikada 4 kez /AWAY kullanımı izni (varsayılan) */
}
};
/* Spam filter Ayarları */
spamfilter {
@@ -486,8 +490,8 @@ set {
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.
+183 -276
View File
File diff suppressed because it is too large Load Diff
+129 -126
View File
@@ -1,4 +1,4 @@
/* UnrealIRCd 5 Help Configuration
/* UnrealIRCd 4 Help Configuration
* Based on the original help text written by hAtbLaDe
* Revised by CC (07/2002) and many others
*
@@ -28,7 +28,7 @@ help {
" /HELPOP OFLAGS - liefert eine Liste aller O:Line Flags";
" -";
" ==-------------------------oOo--------------------------==";
}
};
help Usercmds {
" Zur Zeit sind folgende User-Befehle verfügbar.";
@@ -48,7 +48,7 @@ help Usercmds {
" KICK NICK TIME";
" KNOCK NOTICE TOPIC";
" ==-------------------------oOo-------------------------==";
}
};
help Opercmds {
" Dieser Abschnitt führt alle Befehle auf, die nur";
@@ -69,7 +69,7 @@ help Opercmds {
" DCCDENY MKPASSWD SDESC ZLINE";
" DIE MODULE SETHOST";
" ==-------------------------oOo-------------------------==";
}
};
help Svscmds {
" Dieser Abschnitt gibt alle Befehle aus die nur";
@@ -85,7 +85,7 @@ help Svscmds {
" SVSFLINE SVSMOTD SVSO SWHOIS";
" SVSJOIN SVSNICK SVSPART UNSQLINE";
" ==-------------------------oOo-------------------------==";
}
};
help Umodes {
" Hier eine Liste aller User Modi, die benutzt werden können.";
@@ -120,7 +120,7 @@ help Umodes {
" V = Markiert den Client als einen WebTV-User";
" W = User erhält eine NOTICE, wenn und von wem er /WHOISed wird (nur für IRCOPS)";
" ==---------------------------oOo---------------------------==";
}
};
help Snomasks {
" Snomask seht für 'Service NOtice MASK'. Hiermit wird (hauptsächlich)";
@@ -150,7 +150,7 @@ help Snomasks {
" S = Sieht Spamfilter Treffer";
" v = Sieht wenn sich jemand für einen VHOST einloggt.";
" ==-------------------------oOo------------------------==";
}
};
help Chmodes {
" Hier sind alle verfügbaren ChannelModes aufgelistet die man mit /MODE setzen kann.";
@@ -197,7 +197,7 @@ help Chmodes {
" [h] erfordert mindestens HalfOp Staus, [o] erfordert mindestens Op Staus,";
" [q] erfordert Owner Status";
" ==------------------------------oOo----------------------------==";
}
};
help ExtBans {
" Erweiterte Banntypen: ";
@@ -228,7 +228,7 @@ help ExtBans {
" | | Dieser Bann würde auch auf 'Stupid bot script v1.4'. ";
" | | passen. ";
" ==------------------------------------------------------------------------------==";
}
};
help Chmodef {
" Der +f Channel Mode ermöglicht eienn umfangreichen Flood Schutz für einen";
@@ -254,7 +254,7 @@ help Chmodef {
" -";
" Wird eine aktion für einen Modus gewählt, kann eine Zeit (in Minuten)";
" angegeben werden, nach der die gewählte aktion aufgehoben wird.";
}
};
help Oflags {
@@ -292,7 +292,7 @@ help Oflags {
" X (can_addline) Kann /ADDLINE ausführen";
" d (can_dccdeny) Kann /DCCDENY ausführen";
" ==----------------------oOo--------------------==";
}
};
help Nick {
@@ -302,7 +302,7 @@ help Nick {
" -";
" Syntax: NICK <neuer Nickname>";
" Beispiel: NICK hAtbLaDe";
}
};
help Whois {
" Zeigt Informationen über den angegebenen User";
@@ -323,7 +323,7 @@ help Whois {
" + - User ist Voiced (+v)";
" ! - User hat Channels, die für whois verborgen sind (+p) und man selbst ist IRCOp";
" ? - Der Channel ist geheim (+s) und man selbst ist IRCOp";
}
};
help Who {
" Liefert Informationen über User";
@@ -367,7 +367,7 @@ help Who {
" + - User ist Voiced (+v)";
" ! - User ist +H und man selbst ein IRC Operator";
" ? - User ist nur sichtbar, weil man selbst IRC Operator ist";
}
};
help Whowas {
" Liefert Informationen über User, die nicht mehr zum";
@@ -376,7 +376,7 @@ help Whowas {
" Syntax: WHOWAS <nickname>";
" WHOWAS <nickname> <max number of replies>";
" Beispiel: WHOWAS hAtbLaDe";
}
};
help Cycle {
" Der/die angegebene(n) Channel(s)werden verlassen und";
@@ -386,7 +386,7 @@ help Cycle {
" Syntax: CYCLE <chan1>,<chan2>,<chan3>";
" Example: CYCLE #help";
" Example: CYCLE #main,#chat";
}
};
help Dns {
" Liefert Informationen über den DNS Cache des IRC Servers.";
@@ -397,14 +397,14 @@ help Dns {
" 'DNS i' liefert Details über die Nameserver Konfiguration";
" -";
"Syntax: DNS [option]";
}
};
help Names {
" Liefert eine Liste aller User im angegeben Channel.";
" -";
"Syntax: NAMES <channel>";
"Beispiel: NAMES #Support";
}
};
help Ison {
" Überprüfung, ob bestimmte User mit angegebenem Nicknamen";
@@ -412,7 +412,7 @@ help Ison {
" -";
" Syntax: ISON <user> <user2> <user3> <user4>";
" Beispiel: ISON hAtbLaDe Stskeeps OperServ AOLBot";
}
};
help Join {
" Wird verwendet, um einen oder mehrere Channels auf einem";
@@ -427,7 +427,7 @@ help Join {
" Beispiel: JOIN #Support";
" JOIN #Lobby,#IRCd";
" JOIN #IRCd,#Support,#main letmein,somepass,anotherpass";
}
};
help Part {
" Befehl, um einen Channel zu verlassen, in dem man sich momentan";
@@ -438,7 +438,7 @@ help Part {
" Syntax: PART <chan>,<chan2>,<chan3>,<chan4> <reason>";
" Beispiel: PART #Support";
" PART #Lobby,#IRCd See ya later!";
}
};
help Motd {
" Zeigt die Message Of The Day des IRC Servers an, auf dem man ";
@@ -447,21 +447,21 @@ help Motd {
" -";
" Syntax: MOTD";
" MOTD <server>";
}
};
help Rules {
" Zeigt die Regeln des Netzwerkes an, mit dem man verbunden ist.";
" -";
" Syntax: RULES";
" RULES <server>";
}
};
help Lusers {
" Liefert Informationen über die Anzahl lokaler und ";
" globaler User und die maximal erreichte Userzahl..";
" -";
" Syntax: LUSERS [server]";
}
};
help Map {
" Zeigt eine pseude-grafische Netzwerks Karte an, aus der die";
@@ -469,7 +469,7 @@ help Map {
" zu Routing Zwecken benötigt.";
" -";
" Syntax: MAP";
}
};
help Quit {
" Beendet die Verbindung zum IRC Server. Die verbleibenden User in";
@@ -478,7 +478,7 @@ help Quit {
" -";
" Syntax: QUIT <reason>";
" Beispiel: QUIT Leaving!";
}
};
help Ping {
" Der Ping Befehl dient dazu, die Anwesenheit eines Users oder Servers";
@@ -490,10 +490,10 @@ help Ping {
" Zu beachten ist, dass dies unterschiedlich zum CTCP PING Befehl ist.";
" -";
" Syntax: PING <server> <server2>";
" Beispiel: PING irc.example.org";
" Beispiel: PING irc.fyremoon.net";
" PING hAtbLaDe";
" PING hAtbLaDe irc2.dynam.ac";
}
};
help Pong {
" Die PONG Nachricht ist die Antwort auf die PING Nachricht. Wird der";
@@ -502,16 +502,16 @@ help Pong {
" Nachricht geantwortet hat und diese Nachricht erzeugt hat.";
" -";
" Syntax: PONG <server> <server2>";
" Beispiel: PONG irc.example.org irc2.dynam.ac";
" (PONG Nachricht von irc.example.org to irc2.dynam.ac)";
}
" Beispiel: PONG irc.fyremoon.net irc2.dynam.ac";
" (PONG Nachricht von irc.fyremoon.net to irc2.dynam.ac)";
};
help Version {
" Liefert versions Informationen über den benutzten IRCd.";
" -";
" Syntax: VERSION";
" VERSION <server>";
}
};
help Stats {
" Liefert verschiedene statistische Informationen über den Server.";
@@ -521,21 +521,21 @@ help Stats {
" -";
" Gibt man nur /stats ohne Parameter ein, erhält man eine Liste der";
" möglichen Flags.";
}
};
help Links {
" Listet sämtliche Server auf, die momentan zum Netzwerk verbunden";
" sind. Nur IRCops können gelinkte U-lined Servers /Services) sehen.";
" -";
" Syntax: LINKS";
}
};
help Admin {
" Liefert Informationen über die Administration des Servers.";
" -";
" Syntax: ADMIN";
" ADMIN <server>";
}
};
help Userhost {
" Zeigt den userhost des angegebenen Nicknamen an. Wird ";
@@ -543,7 +543,7 @@ help Userhost {
" -";
" Syntax: USERHOST <nickname>";
" Beispiel: USERHOST hAtbLaDe";
}
};
help Userip {
" Liefert die IP des Users zurück, nach dem gefragt wurde.";
@@ -551,7 +551,7 @@ help Userip {
" -";
" Syntax: USERIP <nickname>";
" Beispiel: USERIP codemastr";
}
};
help Topic {
" Setzt oder ändert das Topic des angegebenen Channels";
@@ -561,7 +561,7 @@ help Topic {
" TOPIC <channel> <topic> (Ändert Topic)";
" Beispiel: TOPIC #Operhelp";
" TOPIC #Lobby Welcome to #Lobby!!";
}
};
help Invite {
" Sendet einem User eine Einladung, einen bestimmten Channel zu betreten.";
@@ -572,7 +572,7 @@ help Invite {
" Syntax: INVITE <user> <channel>";
" Beispiel: INVITE hAtbLaDe #Support";
" Beispiel: INVITE";
}
};
help Kick {
" Entfernt einen User aus einem Channel. Kann nur von Operators oder ";
@@ -582,7 +582,7 @@ help Kick {
" Syntax: KICK <channel>[,<channel2>..] <user>[,<user2>..] <reason>";
" Beispiel: KICK #Lobby foobar Lamer..";
" KICK #Lobby,#OperHelp Lamer23,Luser12 Lamers!";
}
};
help Away {
" Stellt den eigenen Online Status auf \"Away\" ein.";
@@ -590,7 +590,7 @@ help Away {
" Syntax: AWAY <Grund> (Setzt eigenen Nick auf Away und zeigt angegebenen Grund an)";
" AWAY (Hebt den Away Status auf)";
" Beispiel: AWAY Essenszeit!";
}
};
help Watch {
" Watch ist ein Benachrichtigungssystem welches schneller und ressourcenschonender";
@@ -604,7 +604,7 @@ help Watch {
" Syntax: WATCH +nick1 +nick2 +nick3 (Fügt Nickname hinzu)";
" WATCH -nick (Löscht Nickname)";
" WATCH (Zeigt die Watch Liste an)";
}
};
help List {
" Liefert eine vollständige Liste sämtlicher Channels im Netzwerk.";
@@ -621,7 +621,7 @@ help List {
" !*mask* Zeigt Channels an, die NICHT zur Maske *mask* passen";
" -";
" Sämtliche Flags können statt einer Standard Maske verwendet werden.";
}
};
help Privmsg {
" Eröffnet eine private Unterhaltung, ein sogenanntes 'Query'";
@@ -638,7 +638,7 @@ help Privmsg {
" Beispiel: PRIVMSG hAtbLaDe :Hello";
" PRIVMSG hAtbLaDe,Somefella,Lamer :Hallo allerseits!";
" PRIVMSG @#hottub Am Samstag haben wir Team Besprechung.";
}
};
help Notice {
" Sendet Nachrichten an bestimmte Empfänger, die nur von diesen gelesen";
@@ -656,7 +656,7 @@ help Notice {
" Beispiel: NOTICE hAtbLaDe :Hello";
" NOTICE hAtbLaDe,Somefella,Lamer :Hallo Leute!";
" NOTICE @#hottub Achtet mal auf diesen Lamer.";
}
};
help Knock {
" In Channels, die auf invite only eingestellt sind, kann man";
@@ -664,14 +664,14 @@ help Knock {
" -";
" Syntax: KNOCK <channel> <message>";
" Beispiel: KNOCK #secret_chan Ich bin Op hier, holt mich mal rein!";
}
};
help Setname {
" Ermöglicht es, dass User ihren \"Real name\" (GECOS) direkt online";
" im IRC, ohne neu zu connecten, ändern können.";
" -";
" Syntax: SETNAME <New Real Name>";
}
};
help Vhost {
" Verbirgt den realen Hostnamen durch Überschreiben mit einem virtuellen,";
@@ -680,7 +680,7 @@ help Vhost {
" -";
" Synatx: VHOST <login> <password>";
" Beispiel: VHOST openbsd ilovecypto";
}
};
help Mode {
" Setzt einen Modus für einen Channel oder einen User. Eine Liste der";
@@ -689,34 +689,34 @@ help Mode {
" Syntax: MODE <channel/user> <mode>";
" Beispiel: MODE #Support +tn";
" MODE #Support +ootn hAtbLaDe XYZ";
}
};
help Credits {
" Zeigt eine Liste aller, die an der Entwicklung von UnrealIRCd mitgewirkt haben.";
" -";
" Syntax: CREDITS";
" CREDITS <server>";
}
};
help Dalinfo {
" Diser Befehl liefert historische Danksagungen (von ircu, etc..)";
" -";
" Syntax: DALINFO";
" Syntax: DALINFO <server>";
}
};
help License {
" Dieser Befehl zeigt die Lizenzinformationen für UnrealIRCd an.";
" Syntax: LICENSE";
" LICENSE <server>";
}
};
help Time {
" Zeigt das aktuelle Datum und die Zeit des Servers an.";
" -";
" Syntax : TIME";
" TIME <server>";
}
};
help Silence {
" Nachrichten von einem User oder einer Liste von Usern werden ignoriert.";
@@ -724,7 +724,7 @@ help Silence {
" Syntax: SILENCE +nickname (Schreibt einen Nicknamen in die SILENCE Liste)";
" SILENCE -nickname (Löscht einen Nicknamen aus der SILENCE Liste)";
" SILENCE (Zeigt die aktuelle SILENCE Liste an)";
}
};
help Oper {
" Bewirkt, dass ein User den IRC Operator Status erhält.";
@@ -734,7 +734,7 @@ help Oper {
" Achtung: Sowohl uid als auch Passwort sind case sensitive ";
" (Groß- und Kleinschreibung beachten!)";
" Beispiel: OPER hAtbLaDe foobar234";
}
};
help Wallops {
" Sendet eine \"Nachricht\" an alle, die den Usermodus +w haben.";
@@ -742,7 +742,7 @@ help Wallops {
" können sie lesen.";
" -";
" Syntax: WALLOPS <nachricht>";
}
};
help Globops {
" Sendet eine globale \"Nachricht\" an alle IRCops. Die Nachricht";
@@ -751,7 +751,7 @@ help Globops {
" -";
" Syntax: GLOBOPS <message>";
" Beispiel: GLOBOPS Lets get em clones ..";
}
};
help Locops {
" Ähnlich, wie GLOBOPS, allerdings empfangen nur IRCops,";
@@ -759,28 +759,28 @@ help Locops {
" -";
" Syntax: LOCOPS <message>";
" Beispiel: LOCOPS Gib dem User mal ne k:line ...";
}
};
help Chatops {
" Sendet eine Nachricht an alle IrcOps (global).";
" -";
" Syntax: CHATOPS <message>";
" Example: CHATOPS Gonna k:line that user ...";
}
};
help Adchat {
" Sendet eine Nachricht an alle Admins, die online sind.";
" -";
" Syntax: ADCHAT <text>";
" Beispiel: ADCHAT Hey guys! I'm finally here.";
}
};
help Nachat {
" Sendet eine Nachricht an alle NetAdmins, die online sind.";
" -";
" Syntax: NACHAT <text>";
" Beispiel: NACHAT Hey guys! How is everything?";
}
};
help Kill {
" Dieser Befehl entfernt User vom Server (anders als KICK";
@@ -790,7 +790,7 @@ help Kill {
" -";
" Syntax: KILL <user1>, <user2>, <user3>,... <reason>";
" Beispiel: KILL Jack16 Werbung für Dialer hier nicht erlaubt";
}
};
help Kline {
" Dieser Befehl erzeugt zeitabhängige K:Line bezogen auf eine";
@@ -806,7 +806,7 @@ help Kline {
" Beispiel: KLINE *@*.aol.com Abuse (setzt eine permanente K:line)";
" KLINE *@*.someisp.com 2d Abuse (setzt eine K:line für 2 Tage)";
" KLINE -*@*.aol.com";
}
};
help Zline {
" Dieser Befehl erzeugt zeitabhängige Z:Line bezogen auf eine";
@@ -824,7 +824,7 @@ help Zline {
" ZLINE -*@127.0.0.1";
" Anmerkung: Gibt man bei zline statt einer IP einen Host an, so wirkt sie wie eine kline.";
" ACHTUNG: Der IrcOp benötigt hierfür das can_gkline oper Flag";
}
};
help Gline {
" Dieser Befehl erzeugt zeitabhängige G:Line bezogen auf eine";
@@ -842,7 +842,7 @@ help Gline {
" GLINE *@*.idiot.net 1d5h :Spammers (Setzt eine 29 std G:line)";
" GLINE -*@*.idiot.net";
" ACHTUNG: Der IrcOp benötigt hierfür das can_gkline oper Flag";
}
};
help Shun {
" Verhindert, dass der User IRGENDEINEN Befehl ausführen kann, ausser";
@@ -860,7 +860,7 @@ help Shun {
" (Shunt foobar@aol.com für 10 Minuten wegen Spamming)";
" SHUN +foobar@aol.com 1d6h :Spamming (Bewirkt einen 30 stündigen SHUN)";
" ACHTUNG: Der IrcOp benötigt hierfür das can_gkline oper Flag";
}
};
help Gzline {
" Dieser Befehl erzeugt zeitabhängige globale Z:Line. Wer eine IP Adresse";
@@ -877,7 +877,7 @@ help Gzline {
" GZLINE *@4.16.200.* 1d5h Spammers (Setzt eine 29 std Globale Z:line)";
" GZLINE -*@4.16.200.* ";
" Anmerkung: Gibt man bei gzline statt einer IP einen Host an, so wirkt sie wie eine gline.";
}
};
help Akill {
" Setzt einen Autokill für die angegebene Host Maske. Das verhindert, ";
@@ -887,14 +887,14 @@ help Akill {
" -";
" Syntax: AKILL <user@host> :<Grund>";
" Beispiel: AKILL foo@aol.com :Spammers!";
}
};
help Rakill {
" Löscht einen durch Service Administrator gesetzten AKILL.";
" DIESER BEFEHL IST NUR SERVERN ERLAUBT";
" -";
" Syntax: RAKILL <user@host>";
}
};
help Rehash {
" Veranlasst den Server, seine Konfigurationsdatei neu einzulesen.";
@@ -922,7 +922,7 @@ help Rehash {
" zur regelmäßigen automatischen Wiederverfügbarmachung von nicht mehr";
" benötigtem Speicherplatz, indem nicht mehr erreichbare Objekte im";
" Speicher automatisch freigegeben werden.";
}
};
help Restart {
" Killt den IRC Prozess und startet ihn neu. Dabei werden alle momentan";
@@ -932,7 +932,7 @@ help Restart {
" Syntax: RESTART";
" RESTART <password>";
" RESTART <password> <reason>";
}
};
help Die {
" Beendet den IRC Prozess. Dabei werden alle momentan zum Server";
@@ -941,17 +941,17 @@ help Die {
" -";
" Syntax: DIE";
" DIE <password>";
}
};
help Lag {
" Dieser Befehl ist ähnlich einem Traceroute für IRC Server.";
" Man gibt beispielsweise /LAG irc.example.org ein und es";
" Man gibt beispielsweise /LAG irc.fyremoon.net ein und es";
" erfolgen Antworten von jedem Server über den der Befehl geleitet wird";
" mit Zeit u.s.w.";
" Hilfreich, um nachzuschauen, wo ein Lag ist.";
" -";
" Syntax: LAG <server>";
}
};
help Sethost {
" Mit diesem Befehl kann man den Virtual host (Vhost) in jeden gewünschten";
@@ -960,7 +960,7 @@ help Sethost {
" -";
" Syntax: SETHOST <new hostname>";
" Beispiel: SETHOST hier.kommt.der.chef";
}
};
help Setident {
" Mit diesem Befehl kann man den Ident (Username) ändern.";
@@ -968,7 +968,7 @@ help Setident {
" -";
" Syntax: SETIDENT <new ident>";
" Beispiel: SETIDENT l33t";
}
};
help Chghost {
" Mit diesem Befehl kann man den Host eines Users, der aktuell";
@@ -977,7 +977,7 @@ help Chghost {
" -";
" Syntax: CHGHOST <nick> <host>";
" Beispiel: CHGHOST hAtbLaDe root.me.com";
}
};
help Chgident {
" Ändert den Ident eines Users im IRC Netzwerk.";
@@ -985,7 +985,7 @@ help Chgident {
" -";
" Syntax: CHGIDENT <nick> <ident>";
" Beispiel: CHGIDENT hAtbLaDe sheep";
}
};
help Chgname {
" Ändert den \"IRC Name\" (oder \"Real Name\") eines Users im IRC Netzwerk.";
@@ -993,7 +993,7 @@ help Chgname {
" -";
" Syntax: CHGNAME <nick> <name>";
" Beispiel: CHGNAME hAtbLaDe Gotta new name :)";
}
};
help Squit {
" Trennt einen IRC Server vom Netzwerk.";
@@ -1002,7 +1002,7 @@ help Squit {
" -";
" Syntax: SQUIT <server>";
" Beispiel: SQUIT leaf.*";
}
};
help Connect {
" Linkt einen anderen IRC Server zu dem, auf dem der Befehl gegeben wird.";
@@ -1013,7 +1013,7 @@ help Connect {
" CONNECT <hub> <port> <leaf>";
" Beispiel: CONNECT leaf.*";
" CONNECT hub.* 6667 leaf.*";
}
};
help Dccdeny {
" Legt ein DCC Verbot für diese Dateimaske fest. Das bedeutet, dass alle";
@@ -1021,7 +1021,7 @@ help Dccdeny {
" Befehl nur für IrcOps.";
" -";
" Syntax: DCCDENY <filename mask> <reason>";
}
};
help Undccdeny {
" Wird EXAKT die angegeben Datei gefunden, wird sie gelöscht, andernfalls";
@@ -1029,7 +1029,7 @@ help Undccdeny {
" Befehl nur für IrcOps.";
" -";
" Syntax: UNDCCDENY <filename mask>";
}
};
help Sajoin {
" Zwingt einen User, einen Channel zu joinen.";
@@ -1038,7 +1038,7 @@ help Sajoin {
" Syntax: SAJOIN <nick> <channel>,[<channel2>..]";
" Beispiel: SAJOIN hAtbLaDe #OperHelp";
" SAJOIN hAtbLaDe #Support,#IRCHelp";
}
};
help Sapart {
" Zwingt einen User, einen Channel zu verlassen.";
@@ -1047,7 +1047,7 @@ help Sapart {
" Syntax: SAPART <nick> <channel>,[<channel2>..]";
" Beispiel: SAPART hAtbLaDe #OperHelp";
" SAPART hAtbLaDe #Support,#IRCHelp";
}
};
help Samode {
" Erlaubt es einem Services Administrator die Modi eines Channels zu ändern,";
@@ -1056,7 +1056,7 @@ help Samode {
" -";
" Syntax: SAMODE <channel> <mode>";
" Beispiel: SAMODE #Support +m";
}
};
help Trace {
" Man kann TRACE auf Server und User anwenden.";
@@ -1067,15 +1067,15 @@ help Trace {
" Befehl nur für IrcOps.";
" -";
" Syntax: TRACE <servername|nickname>";
" Beispiel: TRACE irc.example.org";
}
" Beispiel: TRACE irc.fyremoon.net";
};
help Opermotd {
" Zeigt die Operator MOTD des IRCd an.";
" Befehl nur für IrcOps.";
" -";
" Syntax: OPERMOTD";
}
};
help Sdesc {
" Mit diesem Befehl kann man die Infozeile des Servers ändern,";
@@ -1084,7 +1084,7 @@ help Sdesc {
" -";
" Syntax: SDESC <New description>";
" Beispiel: SDESC Fly High, Fly Free";
}
};
help Mkpasswd {
" Dieser Befehl verschlüsselt den übergebenen String und liefert einen 'hash' zurück.";
@@ -1095,7 +1095,7 @@ help Mkpasswd {
" -";
" Syntax: MKPASSWD <method> <password>";
" Beispiel: MKPASSWD argon2 IamTeh1337";
}
};
help Module {
" Dieser Befehl liefert eine Liste aller geladenen Module.";
@@ -1116,21 +1116,24 @@ help Module {
" [OLD?] Fehlende Modul Version, vergessen, ein altes Beta* Modul neu zu kompilieren?";
" Zusätzlich sieht man eine Liste, welche 'hooks' und Befehlüberschreitungen";
" vorhanden sind (die Nummer der 'hook's' kann in include/modules.h nachgesehen werden.";
}
};
help Close {
" Dieser Befehl schliesst alle unbekannten Verbindungen zum IRC Server";
" IRC server.";
" -";
" Syntax: CLOSE";
}
};
help Tsctl {
" Uhrzeit aller Server anzeigen.";
" Dies ist ein erweiterter Befehl, um die interne IRC Uhrzeit anzupassen.";
" Befehl nur für IrcOps.";
" -";
" Syntax: TSCTL ALLTIME (Zeigt den Zeitstatus aller Server)";
}
" Syntax: TSCTL OFFSET +|- <time> (Stellt interne IRC Uhrzeit)";
" TSCTL TIME (Erzeugt einen Zeitstatus Bericht)";
" TSCTL ALLTIME (Zeigt den Zeitstatus aller Server)";
" TSCTL SVSTIME <timestamp> (Stellt die Uhrzeit auf allen Servern ein)";
};
help Svsnick {
" Ändert den Nicknamen des Users, der angegeben wird.";
@@ -1138,7 +1141,7 @@ help Svsnick {
" -";
" Syntax: SVSNICK <nickname> <new nickname> <timestamp>";
" Beispiel: SVSNICK hAtbLaDe Foobar 963086432";
}
};
help Svsmode {
" Ändert Modi des Users, der angegeben wird.";
@@ -1146,7 +1149,7 @@ help Svsmode {
" -";
" Syntax: SVSMODE <nickname> <usermode>";
" Beispiel: SVSMODE hAtbLaDe +i";
}
};
help Svskill {
" Disconnected einen User vom Netzwerk.";
@@ -1154,7 +1157,7 @@ help Svskill {
" -";
" Syntax: SVSKILL <user> :<reason>";
" Beispiel: SVSKILL Lamer21 :Goodbye";
}
};
help Svsnoop {
" Dieser Befehl aktiviert oder deaktiviert die Möglichkeit";
@@ -1163,7 +1166,7 @@ help Svsnoop {
" -";
" Syntax: SVSNOOP <server> <+/->";
" Beispiel: SVSNOOP leaf.* -";
}
};
help Svsjoin {
" Zwingt einen User, einen Channel zu joinen.";
@@ -1172,7 +1175,7 @@ help Svsjoin {
" Syntax: SVSJOIN <nick> <channel>[,<channel2>..]";
" Beispiel: SVSJOIN hAtbLaDe #jail";
" SVSJOIN hAtbLaDe #jail,#zoo";
}
};
help Svspart {
" Zwingt einen User einen Channel zu verlassen.";
@@ -1182,7 +1185,7 @@ help Svspart {
" Beispiel: SVSPART hAtbLaDe #Hanson";
" SVSPART hAtbLaDe #Hanson,#AOL";
" SVSPART hAtbLaDe #Hanson,#AOL Und weg auch....";
}
};
help Svso {
" Gibt dem Nick Operflags wie die in den O:lines.";
@@ -1192,7 +1195,7 @@ help Svso {
" Syntax: SVSO <nick> <+operflags> (Setzt die Operflags)";
" SVSO <nick> - (Löscht alle O:Line Flags)";
" Beispiel: SVSO SomeNick +bBkK";
}
};
help Swhois {
" Ändert die WHOIS Meldung des Nicknamen.";
@@ -1201,7 +1204,7 @@ help Swhois {
" Syntax: SWHOIS <nick> :<message> (Stellt SWHOIS ein)";
" SWHOIS <nick> : (Reset des SWHOIS)";
" Beispiel: SWHOIS SomeNick :is a lamer";
}
};
help Sqline {
" Bannt den Nicknamen oder ähnliche Namen vom Server.";
@@ -1209,7 +1212,7 @@ help Sqline {
" -";
" Syntax: SQLINE <nickmask> :<Reason>";
" Beispiel: SQLINE *Bot* :No bots";
}
};
help Unsqline {
" Entfernt Bann auf Nickname oder Nickname Maske.";
@@ -1217,7 +1220,7 @@ help Unsqline {
" -";
" Synax: UNSQLINE <nickmask>";
" Beispiel: UNSQLINE *Bot*";
}
};
help Svs2mode {
" Ändert die Usermodi eines Nicknamens.";
@@ -1225,7 +1228,7 @@ help Svs2mode {
" -";
" Syntax: :services.somenet.com SVS2MODE <nickname> +<mode>";
" Beispiel: :services.roxnet.org SVS2MODE hAtbLaDe +h";
}
};
help Svsfline {
" Setzt gegebene Dateimaske auf DCCDENY";
@@ -1234,7 +1237,7 @@ help Svsfline {
" Syntax: :server SVSFLINE + file :grund (Fügt Dateinamen hinzu)";
" :server SVSFLINE - file (löscht den Dateinamen)";
" :server SVSFLINE * (Löscht die DCCDENY Liste)";
}
};
help Svsmotd {
"Ändert die Service Message Of The Day";
@@ -1243,7 +1246,7 @@ help Svsmotd {
" SVSMOTD ! (Löscht die MOTD)";
" SVSMOTD ! :<text> (Löscht Text und fügt neuen hinzu)";
"Beispiel: SVSMOTD # :Services MOTD";
}
};
help Svsnline {
" Setzt einen globalen Bann auf den Realnamen.";
@@ -1256,7 +1259,7 @@ help Svsnline {
" SVSNLINE - (um einen Bann zu löschen)";
" SVSNLINE * (um alle Banns zu löschen)";
" Beispiel: SVSNLINE sub7_drone :*sub7*";
}
};
help Svslusers {
" Ändert die globale und/oder lokale maximalen Userzahl";
@@ -1265,15 +1268,15 @@ help Svslusers {
" Muss durch einen U:Lined Server gesendet werden.";
" -";
" Syntax: SVSLUSERS <server> <globalmax|-1> <localmax|-1>";
" Beispiel: SVSLUSERS irc.example.org -1 200";
}
" Beispiel: SVSLUSERS irc.test.com -1 200";
};
help Svswatch {
" Ändert die WATCH Liste eines Users.";
" Muss durch einen U:Lined Server gesendet werden.";
" Syntax: SVSWATCH <nick> :<watch parameters>";
" Beispiel: SVSWATCH Blah :+Blih!*@* +Bluh!*@* +Bleh!*@*.com";
}
};
help Svssilence {
" Ändert die SILENCE Liste eines Users.";
@@ -1282,7 +1285,7 @@ help Svssilence {
" zum Setzen/Löschen in einer Zeile stehen.";
" Syntax: SVSSILENCE <nick> :<silence parameters>";
" Beispiel: SILENCE Blah :+*!*@*.com +*!*@*.bla.co.uk";
}
};
help Svssno {
" Ändert die snomask des angegebenen Users.";
@@ -1290,7 +1293,7 @@ help Svssno {
" -";
" Syntax: SVSSNO <nickname> <snomasks>";
" Beispiel: SVSSNO joe +Gc";
}
};
help Svs2sno {
" Ändert die snomask eines Nicknamen und zeigt dem";
@@ -1299,7 +1302,7 @@ help Svs2sno {
" -";
" Syntax: SVS2SNO <nickname> <snomasks>";
" Beispiel: SVS2SNO joe +Gc";
}
};
help Svsnolag {
" Aktiviert ein 'kein fake lag' für einen User.";
@@ -1307,7 +1310,7 @@ help Svsnolag {
" -";
" Syntax: SVSNOLAG [+|-] <nickname>";
" Example: SVSNOLAG + joe";
}
};
help Svs2nolag {
" Aktiviert ein 'kein fake lag' für einen User.";
@@ -1315,7 +1318,7 @@ help Svs2nolag {
" -";
" Syntax: SVS2NOLAG [+|-] <nickname>";
" Example: SVS2NOLAG + joe";
}
};
help Spamfilter {
" Diese Befehle setzten oder löschen globale Spam Filter.";
@@ -1332,14 +1335,14 @@ help Spamfilter {
" 'kline', 'gline', 'zline', 'gzline', 'block' (blockiert Nachricht),";
" 'dccblock' (kann keine DCC mehr senden), 'viruschan' (verlässt alle Channels";
" und joint zwangsweise im Virus Help Channel), warn (Warnung für IrcOps).";
" [regex] hier handelt es sich um den Ausdruck in der Nachricht, auf den hin Reaktionen";
" erfolgen sollen.";
" [tkltime] die Zeitdauer, wie lange *LINEs, die durch [action] gesetzt wurden, gelten sollen";
" (ein '-' angeben, um den Default aus set::spamfilter::ban-time zu verwenden,";
" dieser Wert wird für 'block/tempshun' ignoriert).";
" dieser Wert wird für 'block/tempshun' ignoriert).";
" [reason] der Grund für die *LINE oder blocknachricht, DARF KEINE LEERZEICHEN ENTHALTEN,";
" '_' wird in Leerzeichen übersetzt. Auch hier gilt, dass bei Angabe von '-' der";
" Default (set::spamfilter::ban-reason) benutzt wird.";
" [regex] hier handelt es sich um den Ausdruck in der Nachricht, auf den hin Reaktionen";
" erfolgen sollen.";
" - ";
" Einige Beispiele (die möglicherweise länger als eine Zeile sind):";
" /spamfilter add p block - - Come watch me on my webcam";
@@ -1350,7 +1353,7 @@ help Spamfilter {
" /spamfilter add p kill - Please_go_to_www.viruscan.xx/nicepage/virus=blah Come watch me on my webcam";
" /spamfilter del p block - - Come watch me on my webcam*";
" /spamfilter add cN gzline 1d No_advertising_please come to irc\..+\..+";
}
};
help Tempshun {
" Setzt oder löscht 'temoräre Shuns'.";
@@ -1361,25 +1364,25 @@ help Tempshun {
" Syntax: TEMPSHUN [+|-]<nickname> [reason]";
" Example: TEMPSHUN evilguy vermutlich Infektion";
" TEMPSHUN -niceguy";
}
};
help DccAllow {
" Für Hilfe zum DCCALLOW System, gib ein: '/DCCALLOW HELP'";
/* It would be useless and bad to include it here since that
* stuff quickly gets out-of-synch.
*/
}
};
help Addmotd {
" Fügt eine Zeile ans Ende der MOTD an.";
" -";
" Syntax: ADDMOTD <text>";
" Beispiel: ADDMOTD Spielt fair!";
}
};
help Addomotd {
" Fügt eine Zeile ans Ende der OPERMOTD an. ";
" -";
" Syntax: ADDOMOTD <text>";
" Beispiel: ADDOMOTD Abuse it and lose it!";
}
};
File diff suppressed because it is too large Load Diff
+318 -337
View File
File diff suppressed because it is too large Load Diff
+140 -124
View File
@@ -1,4 +1,4 @@
/* UnrealIRCd 5 Help Configuration
/* UnrealIRCd 4 Help Configuration
* Based on the original help text written by hAtbLaDe
* Revised by CC (07/2002) and many others
*
@@ -23,7 +23,7 @@ help {
" /HELPOP CHMODES - Per la lista delle mode per i canali.";
" -";
" ==-------------------------oOo--------------------------==";
}
};
/* note: indexes were generated by cat somecmds|sort|column -c 70
* along with tab->space conversion (tabwidth 8).
@@ -48,7 +48,7 @@ help Usercmds {
" KICK NICK TIME";
" KNOCK NOTICE TOPIC";
" ==-------------------------oOo-------------------------==";
}
};
help Opercmds {
" In questa sezione trovi i comandi disponibili solamente agli Oper.";
@@ -68,7 +68,7 @@ help Opercmds {
" DCCDENY MKPASSWD SDESC ZLINE";
" DIE MODULE SETHOST";
" ==-------------------------oOo-------------------------==";
}
};
help Svscmds {
" In questa sezione sono elencati i comandi che possono essere";
@@ -85,7 +85,7 @@ help Svscmds {
" SVSFLINE SVSMOTD SVSO SWHOIS";
" SVSJOIN SVSNICK SVSPART UNSQLINE";
" ==-------------------------oOo-------------------------==";
}
};
help Umodes {
" Questa è una lista di tutte le mode utente disponibili.";
@@ -112,7 +112,7 @@ help Umodes {
" T = Blocca la ricezione di CTCP.";
" W = Segnala quando qualcuno fa un /WHOIS su di te (disponibile solo allo Staff).";
" ==---------------------------oOo---------------------------==";
}
};
help Snomasks {
" Snomask sta per 'Service NOtice MASK', principalmente controlla quali";
@@ -140,7 +140,7 @@ help Snomasks {
" S = Mostra blocchi dovuti allo Spamfilter.";
" v = Mostra l'utilizzo del comando /VHOST.";
" ==-------------------------oOo------------------------==";
}
};
help Chmodes {
" Questa è una lista di tutte le mode canale disponibili.";
@@ -186,7 +186,7 @@ help Chmodes {
" Z = Indica che tutti gli utenti in canale stanno utilizzando una connessione sicura";
" (Questa mode è modificabile solo dal server e solo se il canale è già +z).";
" ==------------------------------oOo----------------------------==";
}
};
help ExtBans {
" Questi ban di permettono di bannare im naniera diversa dal tradizionale nick!user@host.";
@@ -213,7 +213,11 @@ help ExtBans {
" Questi tipi di ban introducono nuovi criteri per bannare un utente:";
" ==-Type--------Name---------------------------Explanation-----------------------==";
" | | Se un utente è identificato ai services con questo ";
" ~a | account | account, rientrerà nel ban. ";
" | | account, rientrerà nel ban. ";
" | | Questo è leggermente differente da ~R perché un ";
" ~a | account | utente con nick ABC potrebbe essere identificato con ";
" | | l'account XYZ. Non tutti i services supportano questo ";
" | | comando, in tal caso dovrai usare ~R. ";
" | | Esempio: +e ~a:Name ";
"-----------------------------------------------------------------------------------";
" | | Se l'utente è nel canale specificato nel ban, non sarà ";
@@ -235,6 +239,14 @@ help ExtBans {
" | | (' ') che il trattino basso ('_'), quindi rientrerebbe ";
" | | in questo ban anche 'Stupid bot script'. ";
"-----------------------------------------------------------------------------------";
" | | Se un utente è identificato ai services (solitamente ";
" | | NickServ) e il suo nickname è quello indicato, rientrerà";
" | | nel ban. Ciò significa che questo ban è realmente utile ";
" ~R | registered | solo per le eccezioni (+e), ad esempio +e ~R:Nick. ";
" | | Permetterà a <Nick> di stare in canale, a meno che non ";
" | | ci siano altri ban ad impedirlo, se è identificato a ";
" | | NickServ e sta usando il nickname <Nick>. ";
"-----------------------------------------------------------------------------------";
" | | Quando un utente sta usando SSL/TLS con un certificato ";
" | | client puoi far corrispondere all'utente la sua firma ";
" ~S | certfp | digitale (che trovi con /WHOIS). Molto utile per le ";
@@ -246,7 +258,7 @@ help ExtBans {
"ad esempio +b ~q:~c:#lamers impedirà di scrivere a tutti gli utenti che frequentano #lamers.";
"I ban del secondo gruppo possono essere usati anche per le eccezioni agli inviti (+I),";
"come +I ~c:#trusted e +I ~a:accountname.";
}
};
help Chmodef {
" La mode di canale +f fornisce una protezione completa dal flood per il canale.";
@@ -271,7 +283,7 @@ help Chmodef {
" -";
" Se scegli di specificare un'azione per una mode, puoi anche specificare";
" un tempo (in minuti) dopo il quale quell'azione sarà annullata.";
}
};
help Nick {
" Cambia la tua 'identità online' sul server.";
@@ -280,7 +292,7 @@ help Nick {
" -";
" Sintassi: NICK <nuovonick>";
" Esempio: NICK Ugo";
}
};
help Whois {
" Mostra tutte le informazioni possibili sull'utente in questione,";
@@ -300,7 +312,7 @@ help Whois {
" + - L'utente è voice nel canale (+v).";
" ! - L'utente ha nascosto i suoi canali nel whois (+p) e tu lo vedi perché sei un Oper.";
" ? - Il canale è segreto (+s) e tu lo vedi perché sei un Oper.";
}
};
help Who {
" Fornisce informazioni sugli utenti.";
@@ -342,7 +354,7 @@ help Who {
" + - L'utente è voice del canale (+v).";
" ! - L'utente ha nascosto il suo stato di Oper, ma tu puoi vederlo perché sei Oper.";
" ? - L'utente è visibile solamente agli Oper.";
}
};
help Whowas {
" Fornisce informazioni simili al whois (vedi /HELPOP WHOIS)";
@@ -351,7 +363,7 @@ help Whowas {
" Sintassi: WHOWAS <nickname>";
" WHOWAS <nickname> <numero massimo di risultati>";
" Esempio: WHOWAS Ugo";
}
};
help Cycle {
" 'Cicla' dal canale indicato. Questo comando corrisponde";
@@ -360,7 +372,7 @@ help Cycle {
" Sintassi: CYCLE <chan1>,<chan2>,<chan3>";
" Esempio: CYCLE #help";
" Esempio: CYCLE #main,#chat";
}
};
help Dns {
" Restituisce informzioni relative alla cache DNS del server IRC.";
@@ -371,14 +383,14 @@ help Dns {
" 'DNS i' mostrerà informazioni dettagliate sulla configurazione dei nameservers";
" -";
" Sintassi: DNS [opzione]";
}
};
help Names {
" Restituisce la lista degli utenti sul canale indicato.";
" -";
" Sintassi: NAMES <canale>";
" Esempio: NAMES #irchelp";
}
};
help Ison {
" Usato per determinare se un dato utente è";
@@ -386,7 +398,7 @@ help Ison {
" -";
" Sintassi: ISON <utente1> <utente2> <utente3>";
" Esempio: ISON hAtbLaDe Stskeeps AOLBot";
}
};
help Join {
" Usato per accedere ad uno o più canali sul server IRC.";
@@ -399,7 +411,7 @@ help Join {
" Esempio: JOIN #irchelp";
" JOIN #Lobby,#IRCd";
" JOIN #IRCd,#irchelp,#main letmein,somepass,anotherpass";
}
};
help Part {
" Usato per uscire da uno o più canali del server IRC.";
@@ -409,34 +421,34 @@ help Part {
" Sintassi: PART <canale1>,<canale2>,<canale3> <motivo>";
" Example: PART #irchelp";
" PART #Lobby,#IRCd A più tardi!";
}
};
help Motd {
" Mostra il 'Message Of The Day' del server IRC a cui sei connesso.";
" -";
" Sintassi: MOTD";
" MOTD <server>";
}
};
help Rules {
" Mostra il regolamento del server IRC a cui sei connesso.";
" -";
" Sintassi: RULES";
" RULES <server>";
}
};
help Lusers {
" Fornisce informazioni relative agli utenti locali e globali,";
" come numero di utenti massimo e attuale.";
" -";
" Sintassi: LUSERS [server]";
}
};
help Map {
" Restituisce una 'Mappa' grafica della net IRC.";
" -";
" Sintassi: MAP";
}
};
help Quit {
" Ti disconnette dal server IRC.";
@@ -445,7 +457,7 @@ help Quit {
" -";
" Sintassi: QUIT <motivo>";
" Esempio: QUIT Sto uscendo!";
}
};
help Ping {
" Questo comando è utilizzato per verificare la presenza di un client o un";
@@ -457,10 +469,10 @@ help Ping {
" Nota che questo comando è differente dal /CTCP PING.";
" -";
" Sintassi: PING <server> <server2>";
" Esempio: PING irc.example.org";
" Esempio: PING irc.mynet.it";
" PING Ugo";
" PING Ugo irc.example.org";
}
" PING Ugo irc.mynet.it";
};
help Pong {
" Il PONG è una risposta ad un messaggio PING. Se il parametro <server2> è definito,";
@@ -469,16 +481,16 @@ help Pong {
" questo messaggio.";
" -";
" Sintassi: PONG <server> <server2>";
" Esempio: PONG irc.example.org irc.othernet.it";
" (corrisponde a un messaggio PONG da irc.example.org a irc.othernet.it)";
}
" Esempio: PONG irc.mynet.it irc.othernet.it";
" (corrisponde a un messaggio PONG da irc.mynet.it a irc.othernet.it)";
};
help Version {
" Fornisce informazioni relative alla versione del software IRCd in uso.";
" -";
" Sintassi: VERSION";
" VERSION <server>";
}
};
help Stats {
" Fornisce informazioni statistiche relative al server.";
@@ -487,21 +499,21 @@ help Stats {
" Esempio: STATS u";
" -";
" Digita /STATS senza parametri per un elenco delle flag disponibili.";
}
};
help Links {
" Elenca tutti i server attualmente linkati nella net IRC.";
" Solo gli Oper possono vedere i server U:Lined";
" -";
" Sintassi: LINKS";
}
};
help Admin {
" Fornisce informazioni relative agli amministratori del server.";
" -";
" Sintassi: ADMIN";
" ADMIN <server>";
}
};
help Userhost {
" Restituisce la mask user@host dell'utente indicato.";
@@ -509,7 +521,7 @@ help Userhost {
" -";
" Sintassi: USERHOST <nickname>";
" Esempio: USERHOST Ugo";
}
};
help Userip {
" Restituisce l'IP dell'utente indicato";
@@ -517,7 +529,7 @@ help Userip {
" -";
" Sintassi: USERIP <nickname>";
" Esempio: USERIP Ugo";
}
};
help Topic {
" Imposta o cambia il topic del canale indicato.";
@@ -527,7 +539,7 @@ help Topic {
" TOPIC <canale> <messaggio> (Cambia il topic attuale con <messaggio>)";
" Example: TOPIC #Operhelp";
" TOPIC #Lobby Benvenuti su #Lobby!";
}
};
help Invite {
" Manda all'utente indicato un invito per accedere ad un dato canale.";
@@ -539,7 +551,7 @@ help Invite {
" Sintassi: INVITE <utente> <canale>";
" Esempio: INVITE Ugo #irchelp";
" Esempio: INVITE";
}
};
help Kick {
" Espelle un utente da un canale. Può essere utilizzato solo da halfop e superiori.";
@@ -547,7 +559,7 @@ help Kick {
" -";
" Sintassi: KICK <canale> <utente> [motivo]";
" Esempio: KICK #Lobby foobar Lamer";
}
};
help Away {
" Imposta il tuo stato come 'Away' (non al computer).";
@@ -557,7 +569,7 @@ help Away {
" Sintassi: AWAY <motivo> (Ti imposta away con la motivazione fornita)";
" AWAY (Annulla il tuo stato di away)";
" Esempio: AWAY Ora di pranzo!";
}
};
help Watch {
" 'Watch' è un sistema di notifica sul server più veloce e che utilizza";
@@ -571,7 +583,7 @@ help Watch {
" Sintassi: WATCH +nick1 +nick2 +nick3 (Aggiunge i nick indicati alla lista)";
" WATCH -nick (Rimuove i nick indicati dalla lista)";
" WATCH (Controlla quali utenti sono online)";
}
};
help List {
" Fornisce un elenco completo di tutti i canali presenti sulla net IRC.";
@@ -588,7 +600,7 @@ help List {
" !*mask* Elenca i canali che NON corrispondono al parametro indicato";
" -";
" Ciascuno di questi può essere usato al posto dei valori standard.";
}
};
help Privmsg {
" Invia un messaggio ad un utente, canale o server.";
@@ -607,7 +619,7 @@ help Privmsg {
" /PRIVMSG $<mask> <testo>";
" Invia un messaggio a tutti gli utenti sui server che corrispondono a <mask>. Solo per Oper.";
" I client mostrano generalmente questo tipo di messaggi nella finestra di status.";
" Esempio: /PRIVMSG $*.example.org Nelle prossime ore il server subirà un aggiornamento";
" Esempio: /PRIVMSG $*.mynet.it Nelle prossime ore il server subirà un aggiornamento";
" Nota che in molti casi è preferibile utilizzare i services (ad esempio /OS GLOBAL).";
" -";
" Sono supportati anche più destinatari, ad esempio /PRIVMSG <nick1>,<nick2>,<nick3>.";
@@ -615,7 +627,7 @@ help Privmsg {
" Nota: In alcuni vecchi client (ad esempio ircII) non puoi utilizzare /msg o /privmsg";
" per utilizzare le 'funzioni avanzate'. Dovrai invece usare";
" '/QUOTE PRIVMSG @#canale ciao' o un comando simile.";
}
};
help Notice {
" Invia un notice ad un utente, canale o server.";
@@ -634,7 +646,7 @@ help Notice {
" /NOTICE $<mask> <testo>";
" Invia un messaggio a tutti gli utenti sui server che corrispondono a <mask>. Solo per Oper.";
" I client mostrano generalmente questo tipo di messaggi nella finestra di status.";
" Esempio: /NOTICE $*.example.org Nelle prossime ore il server subirà un aggiornamento";
" Esempio: /NOTICE $*.mynet.it Nelle prossime ore il server subirà un aggiornamento";
" Nota che in molti casi è preferibile utilizzare i services (ad esempio /OS GLOBAL).";
" -";
" Sono supportati anche più destinatari, ad esempio /NOTICE <nick1>,<nick2>,<nick3>.";
@@ -642,7 +654,7 @@ help Notice {
" Nota: In alcuni vecchi client (ad esempio ircII) non puoi utilizzare /notice";
" per utilizzare le 'funzioni avanzate'. Dovrai invece usare";
" '/QUOTE NOTICE @#canale ciao' o un comando simile.";
}
};
help Knock {
" Per i canali ad invito, puoi utilizzare questo comando per 'bussare'";
@@ -650,14 +662,14 @@ help Knock {
" -";
" Syntax: KNOCK <canale> <messaggio>";
" Example: KNOCK #canale Fatemi entrare!";
}
};
help Setname {
" Permette agli utenti di cambiare il loro 'Real name' (GECOS)";
" direttamente sul server IRC, senza riconnettersi.";
" -";
" Sintassi: SETNAME <Nuovo Realname>";
}
};
help Vhost {
" Nasconde il tuo hostname reale con uno virtuale";
@@ -665,7 +677,7 @@ help Vhost {
" -";
" Sintassi: VHOST <login> <password>";
" Esempio: VHOST mylogin mypassword";
}
};
help Mode {
" Imposta una mode su un canale o un utente.";
@@ -674,7 +686,7 @@ help Mode {
" Sintassi: MODE <canale/utente> <mode> <parametri>";
" Example: MODE #irchelp +tn";
" MODE #irchelp +ootn hAtbLaDe XYZ";
}
};
help Credits {
" Con questo comando verrà mostrata una lista di utenti";
@@ -682,27 +694,27 @@ help Credits {
" -";
" Sintassi: CREDITS";
" CREDITS <server>";
}
};
help Dalinfo {
" Questo comando mostrerà i crediti storici (da ircu, ecc.).";
" -";
" Sintassi: DALINFO";
" Sintassi: DALINFO <server>";
}
};
help License {
" Questo comando mostra i dettagli relativi alla licenza con cui è rilasciato UnrealIRCd.";
" Sintassi: LICENSE";
" LICENSE <server>";
}
};
help Time {
" Mostra la data e l'ora corrente del server.";
" -";
" Sintassi : TIME";
" TIME <server>";
}
};
help Silence {
" Ignora i messaggi di un utente o di una lista di utenti a livello server.";
@@ -710,7 +722,7 @@ help Silence {
" Sintassi: SILENCE +nickname (Aggiunge un nick alla lista)";
" SILENCE -nickname (Rimuove un nick dalla lista)";
" SILENCE (Elenca i nick attualmente in lista SILENCE)";
}
};
help Oper {
" Utilizzato dagli utenti per ottenere i privilegi di Oper";
@@ -719,28 +731,28 @@ help Oper {
" Sintassi: OPER <utente> <password>";
" Nota: sia <utente> che <password> sono case sensitive.";
" Esempio: OPER Ugo foobar234";
}
};
help Wallops {
" Invia un particolare messaggio a tutti gli utenti con la mode +w impostata.";
" Solo gli Oper possono inviare wallops, mentre chiunque può visualizzarli.";
" -";
" Sintassi: WALLOPS <messaggio>";
}
};
help Locops {
" Invia un messaggio a tutti gli Oper sullo stesso server di chi invia.";
" -";
" Sintassi: LOCOPS <messaggio>";
" Esempio: LOCOPS Dobbiamo bannare quell'utente...";
}
};
help Globops {
" Invia un messaggio a tutti gli Oper.";
" -";
" Sintassi: GLOBOPS <messaggio>";
" Esempio: GLOBOPS Dobbiamo bannare quell'utente...";
}
};
help Kill {
" Disconnette forzatamente un utente dal server IRC.";
@@ -748,7 +760,7 @@ help Kill {
" -";
" Sintassi: KILL <nick1>,<nick2>,<nick3> <motivo>";
" Example: KILL Ugo Non sono ammessi cloni";
}
};
help Kline {
" Questo comando aggiunge una kline a tempo.";
@@ -763,7 +775,7 @@ help Kline {
" KLINE *@*.isp.com 2d Violazione del regolamento (aggiunge una kline di due giorni)";
" KLINE Idiot 1d Utente non gradito";
" KLINE -*@*.aol.com";
}
};
help Zline {
" Questo comando aggiunge una zline a tempo.";
@@ -778,7 +790,7 @@ help Zline {
" ZLINE *@1.2.3.4 2d Violazione del regolamento (aggiunge una kline di due giorni)";
" ZLINE -*@1.2.3.4";
" Nota: questo comando richiede il permesso can_zline nel blocco oper";
}
};
help Gline {
" Questo comando aggiunge una gline a tempo.";
@@ -794,7 +806,7 @@ help Gline {
" GLINE Idiot 1d Violazione del regolamento";
" GLINE -*@*.idiot.net";
" Nota: questo comando richiede il permesso can_gkline nel blocco oper";
}
};
help Shun {
" Impedisce all'utente di eseguire ogni comando ad eccezione di /ADMIN";
@@ -812,7 +824,7 @@ help Shun {
" ('shunna' foobar@aol.com per 10 minuti per Spam)";
" SHUN +foobar@aol.com 1d6h :Spam (Aggiunge uno shun di 30 ore)";
" Nota: questo comando richiede il permesso can_gkline nel blocco oper";
}
};
help Gzline {
" Questo comando aggiunge una zline globale a tempo.";
@@ -826,7 +838,7 @@ help Gzline {
" Esempio: GZLINE *@1.2.3.4 900 Spam (Aggiunge una gzline di 15 minuti)";
" GZLINE *@1.2.3.4 1d5h Spam (Aggiunge una gzline di 29 ore)";
" Nota: questo comando richiede il permesso can_gzline nel blocco oper";
}
};
help Rehash {
" Ricarica i file di configurazione del server.";
@@ -846,8 +858,8 @@ help Rehash {
" -dns - Inizializza e ricarica il risolutore DNS";
" -garbage - Forza la pulizia dei file inutili";
" -motd - Ricarica i file MOTD, BOTMOTD, OPERMOTD e RULES, inclusi quelli nei blocchi tld";
" -tls - Ricarica i certificati SSL/TLS";
}
" -ssl - Ricarica i certificati SSL";
};
help Restart {
" Termina e riavvia il processo IRC, disconnettendo tutti gli utenti attualmente connessi.";
@@ -856,7 +868,7 @@ help Restart {
" Sintassi: RESTART";
" RESTART <password>";
" RESTART <password> <motivo>";
}
};
help Die {
" Termina il processo IRC, disconnettendo tutti gli utenti attualmente connessi.";
@@ -864,16 +876,16 @@ help Die {
" -";
" Sintassi: DIE";
" DIE <password>";
}
};
help Lag {
" Questo comando è come un 'traceroute' per i server IRC.";
" Digitando /LAG irc.example.org otterrai una risposta con l'elenco";
" Digitando /LAG irc.mynet-it otterrai una risposta con l'elenco";
" di tutti i server dai quali è passata la richiesta.";
" Utile per identificare in quale punto si verifica il lag.";
" -";
" Sintassi: LAG <server>";
}
};
help Sethost {
" Permette agli utenti di cambiare il proprio host con un virtualhost";
@@ -882,7 +894,7 @@ help Sethost {
" -";
" Sintassi: SETHOST <nuovo-host>";
" Esempio: SETHOST il.mio.vhost";
}
};
help Setident {
" Permette agli utenti di cambiare la propria ident.";
@@ -890,7 +902,7 @@ help Setident {
" -";
" Sintassi: SETIDENT <nuova-ident>";
" Esempio: SETIDENT l33t";
}
};
help Chghost {
" Cambia l'hostname di un utente attualmente connesso.";
@@ -898,7 +910,7 @@ help Chghost {
" -";
" Sintassi: CHGHOST <nick> <nuovo-host>";
" Esempio: CHGHOST Ugo my.new.host";
}
};
help Chgident {
" Cambia l'ident di un utente attualmente connesso.";
@@ -906,7 +918,7 @@ help Chgident {
" -";
" Sintassi: CHGIDENT <nick> <nuova-ident>";
" Esempio: CHGIDENT Ugo user";
}
};
help Chgname {
" Cambia il 'Realname' di un utente attualmente connesso.";
@@ -914,15 +926,15 @@ help Chgname {
" -";
" Sintassi: CHGNAME <nick> <nuovo-realname>";
" Esempio: CHGNAME Ugo Il mio nuovo nome :)";
}
};
help Squit {
" Disconnette un determinato server IRC dalla net.";
" Questa funzione è utilizzabile solo dagli Oper.";
" -";
" Sintassi: SQUIT <server>";
" Esempio: SQUIT server2.example.org";
}
" Esempio: SQUIT server2.mynet.it";
};
help Connect {
" Connette un determinato server IRC a quello attualmente utilizzato";
@@ -933,7 +945,7 @@ help Connect {
" CONNECT <server1> <porta> <server2>";
" Esempio: CONNECT leaf.server.net";
" CONNECT leaf.server.net 6667 hub.server.net";
}
};
help Dccdeny {
" Aggiunge un blocco DCC per un determinato file.";
@@ -941,14 +953,14 @@ help Dccdeny {
" Questa funzione è utilizzabile solo dagli Oper.";
" -";
" Sintassi: DCCDENY <file> <motivo>";
}
};
help Undccdeny {
" Rimuove il blocco DCC dal file esatto indicato, se esistente. Se non esistente esegue una ricerca.";
" Questa funzione è utilizzabile solo dagli Oper.";
" -";
" Sintassi: UNDCCDENY <file>";
}
};
help Sajoin {
" Forza un utente ad accedere ad un canale.";
@@ -957,7 +969,7 @@ help Sajoin {
" Sintassi: SAJOIN <nick> <canale>,[<canale2>,ecc.]";
" Esempio: SAJOIN Ugo #OperHelp";
" SAJOIN Ugo #OperHelp,#IRCHelp";
}
};
help Sapart {
" Forza un utente a lasciare un canale.";
@@ -967,7 +979,7 @@ help Sapart {
" Esempio: SAPART Ugo #OperHelp";
" SAPART Ugo #OperHelp,#IRCHelp";
" SAPART Ugo #OperHelp,#IRCHelp Utente assente";
}
};
help Samode {
" Permette di modificare le mode di un canale pur non essendone op o superiore.";
@@ -975,7 +987,7 @@ help Samode {
" -";
" Sintassi: SAMODE <canale> <mode>";
" Esempio: SAMODE #irchelp +m";
}
};
help Trace {
" Permette di tracciare un server o un utente.";
@@ -983,15 +995,15 @@ help Trace {
" Se utilizzato su un server ne restituisce classe, versione e informazioni sul collegamento.";
" -";
" Sintassi: TRACE <server/nick>";
" Esempio: TRACE irc.example.org";
}
" Esempio: TRACE irc.mynet.it";
};
help Opermotd {
" Mostra il MOTD per gli Oper";
" Questa funzione è utilizzabile solo dagli Oper.";
" -";
" Sintassi: OPERMOTD";
}
};
help Sdesc {
" Permette di modificare la descrizione del server";
@@ -1000,7 +1012,7 @@ help Sdesc {
" -";
" Sintassi: SDESC <nuova descrizione>";
" Esempio: SDESC Il mio server IRC";
}
};
help Mkpasswd {
" Restituisce un 'hash' della stringa specificata.";
@@ -1011,7 +1023,7 @@ help Mkpasswd {
" -";
" Sintassi: MKPASSWD <metodo> <password>";
" Esempio: MKPASSWD argon2 LaMiaPassword";
}
};
help Module {
" Restituisce un elenco di tutti i moduli caricati sul server.";
@@ -1033,19 +1045,23 @@ help Module {
" [3RD] Il modulo è di terze parti, ovvero non parte del core di UnrealIRCd.";
" In aggiunta vedrai un elenco degli hook e dei comandi di ovverride presenti";
" (il numero di hook può essere visto anche in include/modules.h).";
}
};
help Close {
" Questo comando termina tutte le connessioni sconosciute al server IRC.";
" -";
" Sintassi: CLOSE";
}
};
help Tsctl {
" Questo è un comando avanzato utilizzato per correggere l'orologio interno di IRC.";
" Questa funzione è utilizzabile solo dagli Oper.";
" -";
" Sintassi: TSCTL ALLTIME (Mostra il report TS di tutti i server)";
}
" Sintassi: TSCTL OFFSET +|- <orario> (Modifica l'orologio interno di IRC)";
" TSCTL TIME (Restituisce il report TS)";
" TSCTL ALLTIME (Mostra il report TS di tutti i server)";
" TSCTL SVSTIME <timestamp> (Imposta l'orario di tutti i server)";
};
help Htm {
" Attiva o disattiva la modalità 'High Traffic'.";
@@ -1063,7 +1079,7 @@ help Htm {
" NOISY - Abilita un avviso quando la modalità HTM viene attivata/disattivata";
" QUIET - Disabilita l'avviso quando la modalità HTM viene attivata/disattivata";
" TO <valore> - Imposta il valore oltre il quale attivare HTM";
}
};
help Svsnick {
" Cambia il nickname dell'utente indicato.";
@@ -1071,7 +1087,7 @@ help Svsnick {
" -";
" Sintassi: SVSNICK <nickname> <nuovo-nick> <timestamp>";
" Esempio: SVSNICK Ugo Foobar 963086432";
}
};
help Svsmode {
" Cambia le mode dell'utente indicato.";
@@ -1079,7 +1095,7 @@ help Svsmode {
" -";
" Sintassi: SVSMODE <nickname> <usermode>";
" Esempio: SVSMODE Ugo +i";
}
};
help Svskill {
" Disconnette forzatamente un utente dal server.";
@@ -1087,7 +1103,7 @@ help Svskill {
" -";
" Sintassi: SVSKILL <nickname> :<motivo>";
" Esempio: SVSKILL Lamer21 :Arrivederci";
}
};
help Svsnoop {
" Attiva o disattiva le funzionalità per gli Oper sul server indicato.";
@@ -1095,7 +1111,7 @@ help Svsnoop {
" -";
" Sintassi: SVSNOOP <server> <+/->";
" Esempio: SVSNOOP leaf.server.net -";
}
};
help Svsjoin {
" Forza un utente ad accedere ad un canale.";
@@ -1104,7 +1120,7 @@ help Svsjoin {
" Sintassi: SVSJOIN <nick> <canale1>[,<canale2>,ecc.] [password1[,password2,ecc.]]";
" Esempio: SVSJOIN Ugo #jail";
" SVSJOIN Ugo #jail,#zoo";
}
};
help Svspart {
" Forza un utente a lasciare un canale.";
@@ -1114,7 +1130,7 @@ help Svspart {
" Esempio: SVSPART Ugo #Hanson";
" SVSPART Ugo #Hanson,#AOL";
" SVSPART Ugo #Hanson,#AOL Accesso non ammesso";
}
};
help Svso {
" Assegna all'utente delle operflag come quelle nelle operclass.";
@@ -1124,7 +1140,7 @@ help Svso {
" Sintassi: SVSO <nick> <+operflags> (aggiunge le operflag)";
" SVSO <nick> - (rimuove tutte le operflag)";
" Esempio: SVSO Ugo +bBkK";
}
};
help Swhois {
" Cambia il messaggio di whois dell'utente indicato.";
@@ -1133,7 +1149,7 @@ help Swhois {
" Sintassi: SWHOIS <nick> :<messaggio> (imposta il messaggio di SWHOIS)";
" SWHOIS <nick> : (Resetta il messaggio di SWHOIS)";
" Esempio: SWHOIS Ugo :sono un lamer";
}
};
help Sqline {
" Blocca l'uso di un determinato nick sul server.";
@@ -1141,7 +1157,7 @@ help Sqline {
" -";
" Sintassi: SQLINE <nick> :<motivo>";
" Esempio: SQLINE *Bot* :Bot non ammessi";
}
};
help Unsqline {
" Rimuove il blocco di un nick dal server.";
@@ -1149,7 +1165,7 @@ help Unsqline {
" -";
" Sintassi: UNSQLINE <nick>";
" Esempio: UNSQLINE *Bot*";
}
};
help Svs2mode {
" Cambia le mode di un utente e gli mostra un messaggio di notifica.";
@@ -1157,7 +1173,7 @@ help Svs2mode {
" -";
" Sintassi: SVS2MODE <nickname> <mode>";
" Esempio: SVS2MODE Ugo +h";
}
};
help Svsfline {
" Aggiunge il file indicato alla lista DCCDENY.";
@@ -1166,7 +1182,7 @@ help Svsfline {
" Sintassi: :server SVSFLINE + file :motivo (aggiunge il file alla lista)";
" :server SVSFLINE - file (rimuove il file dalla lista)";
" :server SVSFLINE * (svuota la lista)";
}
};
help Svsmotd {
" Cambia il MOTD dei services.";
@@ -1175,7 +1191,7 @@ help Svsmotd {
" SVSMOTD ! (Cancella il MOTD)";
" SVSMOTD ! :<testo> (Cancella il MOTD attuale e aggiunge il testo)";
" Esempio: SVSMOTD # :Services MOTD";
}
};
help Svsnline {
" Aggiunge un ban sul realname.";
@@ -1187,7 +1203,7 @@ help Svsnline {
" SVSNLINE - :<realname> (rimuove un ban)";
" SVSNLINE * (Rimuove tutti i ban)";
" Esempio: SVSNLINE + sub7_drone :*sub7*";
}
};
help Svslusers {
" Modifica il conteggio degli utenti locali o globali di un server.";
@@ -1195,15 +1211,15 @@ help Svslusers {
" Deve essere inviato tramite un server U:Lined.";
" -";
" Sintassi: SVSLUSERS <server> <globalmax|-1> <localmax|-1>";
" Esempio: SVSLUSERS irc.example.org -1 200";
}
" Esempio: SVSLUSERS irc.mynet.it -1 200";
};
help Svswatch {
" Cambia la lista WATCH di un utente.";
" Deve essere inviato tramite un server U:Lined.";
" Sintassi: SVSWATCH <nick> :<parametri>";
" Esempio: SVSWATCH Ugo :+Blih!*@* +Bluh!*@* +Bleh!*@*.com";
}
};
help Svssilence {
" Cambia la lista SILENCE di un utente.";
@@ -1212,7 +1228,7 @@ help Svssilence {
" più valori in una stessa linea.";
" Sintassi: SVSSILENCE <nick> :<parametri>";
" Esempio: SVSSILENCE Ugo :+*!*@*.com +*!*@*.bla.com";
}
};
help Svssno {
" Cambia le snomask di un utente.";
@@ -1220,7 +1236,7 @@ help Svssno {
" -";
" Sintassi: SVSSNO <nickname> <snomasks>";
" Esempio: SVSSNO Ugo +Gc";
}
};
help Svs2sno {
" Cambia le snomask di un utente e gli mostra un messaggio di notifica";
@@ -1228,7 +1244,7 @@ help Svs2sno {
" -";
" Sintassi: SVS2SNO <nickname> <snomasks>";
" Esempio: SVS2SNO Ugo +Gc";
}
};
help Svsnolag {
" Abilita il 'no fake lag' per un utente";
@@ -1236,7 +1252,7 @@ help Svsnolag {
" -";
" Sintassi: SVSNOLAG [+|-] <nickname>";
" Esempio: SVSNOLAG + Ugo";
}
};
help Svs2nolag {
" Abilita il 'no fake lag' per un utente";
@@ -1244,7 +1260,7 @@ help Svs2nolag {
" -";
" Syntax: SVS2NOLAG [+|-] <nickname>";
" Example: SVS2NOLAG + Ugo";
}
};
help Spamfilter {
" Questo comando aggiunge o rimuove filtri di spamfilter globali.";
@@ -1264,11 +1280,11 @@ help Spamfilter {
" 'kline', 'gline', 'zline', 'gzline', 'block' (blocca il messaggio),";
" 'dccblock' (blocca l'invio di DCC), 'viruschan' (esce da tutti i canali ed entra";
" automaticamente sul 'virus chan' definito nel file di configurazione), 'warn' (avvisa gli Oper).";
" [stringa] La stringa che deve essere bloccata (come espressione regolare o testo semplice)";
" [durata] La durata del ban in caso sia impostata una *line come azione. Usa '-' per utilizzare";
" la durata di default definita nel file di configurazione";
" [motivo] Il motivo da visualizzare nella *line, utilizzando i trattini bassi come spazi.";
" Usa '-' per utilizzare il motivo di default definito nel file di configurazione";
" [stringa] La stringa che deve essere bloccata (come espressione regolare o testo semplice)";
" - ";
" Alcuni esempi:";
" /spamfilter add -simple p block - - Come watch me on my webcam";
@@ -1279,7 +1295,7 @@ help Spamfilter {
" /spamfilter add -simple p kill - Please_go_to_www.viruscan.xx/nicepage/virus=blah Come watch me on my webcam";
" /spamfilter del -simple p block - - Come watch me on my webcam*";
" /spamfilter add -regex cN gzline 1d No_advertising_please /come to irc\..+\..+/";
}
};
help Tempshun {
" Aggiunge o rimuove shun temporanei'.";
@@ -1289,23 +1305,23 @@ help Tempshun {
" Sintassi: TEMPSHUN [+|-]<nickname> [motivo]";
" Example: TEMPSHUN Ugo possibile virus";
" TEMPSHUN -Ugo";
}
};
help DccAllow {
" Per informazioni sul sistema DCCALLOW digita '/DCCALLOW HELP'";
/* Sarebbe inutile inserire qui le informazioni che si possono già trovare altrove */
}
};
help Addmotd {
" Aggiunge una linea alla fine del MOTD ";
" -";
" Sintassi: ADDMOTD <testo>";
" Esempio: ADDMOTD Divertiti!";
}
};
help Addomotd {
" Aggiunge una linea alla fine dell'OperMOTD ";
" -";
" Sintassi: ADDOMOTD <testo>";
" Esempio: ADDOMOTD Fatti non foste a moderare come bruti...";
}
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+137 -126
View File
@@ -1,4 +1,4 @@
/* UnrealIRCd 5 Help Configuration
/* UnrealIRCd 4 Help Configuration
* Based on the original help text written by hAtbLaDe
* Revised by CC (07/2002)
*
@@ -24,7 +24,7 @@ help {
" /HELPOP OFLAGS - Просмотреть флаги в O:line";
" -";
" ==-------------------------oOo--------------------------==";
}
};
help Usercmds {
" Список команд, доступных пользователям на данный момент.";
@@ -44,7 +44,7 @@ help Usercmds {
" KICK NICK TIME";
" KNOCK NOTICE TOPIC";
" ==-------------------------oOo---------------------------==";
}
};
help Opercmds {
" Список команд, доступных только IRC операторам.";
@@ -64,7 +64,7 @@ help Opercmds {
" DCCDENY MKPASSWD SDESC ZLINE";
" DIE MODULE SETHOST";
" ==-------------------------oOo---------------------------==";
}
};
help Svscmds {
" Список команд, которые могут быть посланы";
@@ -81,7 +81,7 @@ help Svscmds {
" SVSFLINE SVSMOTD SVSO SWHOIS";
" SVSJOIN SVSNICK SVSPART UNSQLINE";
" ==-------------------------oOo---------------------------==";
}
};
help Umodes {
" Список режимов пользователя.";
@@ -125,7 +125,7 @@ help Umodes {
" W = Позволяет видеть, когда кто-то делает /WHOIS на Ваш";
" ник (только для IRC операторов)";
" ==---------------------------oOo---------------------------==";
}
};
help Snomasks {
" Snomask - это сокращение от 'Service NOtice MASK'.";
@@ -157,7 +157,7 @@ help Snomasks {
" S = Видны сообщения спам фильтра";
" v = Видны попытки использования команды /VHOST";
" ==-------------------------oOo------------------------==";
}
};
help Chmodes {
" В этой секции приведён список режимов, которые могут быть наложены";
@@ -230,7 +230,7 @@ help Chmodes {
" [h] - минимум требуются права halfop, [o] - минимум требуются права";
" chanop, [q] - требуются права владельца";
" ==------------------------------oOo----------------------------==";
}
};
help ExtBans {
" Данные типы банов позволяют вам банить не только по традиционной маске nick!user@host.";
@@ -272,12 +272,19 @@ help ExtBans {
" ~r | настоящее имя | он не сможет зайти. Пример: +b ~r:*Stupid_bot_script* ";
" | | Дополнение: Подчёркивание ('_') обозначает и ";
" | | пробел (' '), и подчёркивание ('_'). ";
"-----------------------------------------------------------------------------------";
" | | Бан срабатывает, если пользователь идентифицирован ";
" ~R | | на сервисах (обычно Nickserv) и имя совпадает. В ";
" |зарегестрирован| реальности необходим для исключений на канале. ";
" | | Пример: +e ~R:Nick ";
" | | Позволяет Nick находится на канале, независимо от банов,";
" | | если он идентифицирован на сервисах, использует ник Nick";
" ==------------------------------------------------------------------------------==";
" -";
" Вы можете стекировать расширенные типы банов первой и второй группы друг с другом.";
" Пример: +b ~q:~c:#lamers";
" Действием данной команды будет молчание всех пользователей, кто сидит в #lamers";
}
};
help Chmodef {
" Режим канала +f предоставляет гибкий механизм защиты канала от флуда.";
@@ -303,7 +310,7 @@ help Chmodef {
" -";
" Если вы задаёте некое действие в ответ на флуд, вы можете так же указать,";
" как долго (в минутах) будет действовать наказание.";
}
};
help Oflags {
" Описание флагов, помещаемых в O:lines конфигурационного файла сервера";
@@ -340,7 +347,7 @@ help Oflags {
" X (can_addline) Может использовать /ADDLINE";
" d (can_dccdeny) Может использовать /DCCDENY";
" ==----------------------oOo--------------------==";
}
};
help Nick {
" Изменяет виртуальное имя (Ник).";
@@ -349,7 +356,7 @@ help Nick {
" -";
" Синтаксис: NICK <новое имя>";
" Пример: NICK hAtbLaDe";
}
};
help Whois {
" Показывает различную информацию о пользователе:";
@@ -372,7 +379,7 @@ help Whois {
" видите, потому что имеете права оператора IRC";
" ? - Канал является \"Секретным\" (+s), но вы его видите, потому";
" что имеете права оператора IRC";
}
};
help Who {
" Возвращает информацию о пользователях";
@@ -428,7 +435,7 @@ help Who {
" ! - У пользователя установлен флаг +H";
" ? - Вы видите пользователя только потому, что являетесь IRC";
" оператором";
}
};
help Whowas {
" Показывает информацию WHOIS о пользователях";
@@ -437,7 +444,7 @@ help Whowas {
" Синтаксис: WHOWAS <имя пользователя>";
" WHOWAS <имя пользователя> <количество записей>";
" Пример: WHOWAS hAtbLaDe";
}
};
help Cycle {
" Выполнить цикл \"выйти/войти\" в указанном канале. Команда";
@@ -446,7 +453,7 @@ help Cycle {
" Синтаксис: CYCLE <канал1>,<канал2>,<канал3>";
" Пример: CYCLE #help";
" CYCLE #main,#chat";
}
};
help Dns {
" Возвращает информацию из DNS кэша IRC сервера.";
@@ -458,14 +465,14 @@ help Dns {
" 'DNS i' вернёт подробную информацию о конфигурации сервера имён";
" -";
"Синтаксис: DNS [опция]";
}
};
help Names {
" Возвращает список пользователей указанного канала.";
" -";
" Синтаксис: NAMES <канал>";
" Пример: NAMES #Support";
}
};
help Ison {
" Служит для определения состояния Пользователя - в";
@@ -473,7 +480,7 @@ help Ison {
" -";
" Синтаксис: ISON <имя> <имя2> <имя3> <имя4>";
" Пример: ISON hAtbLaDe Stskeeps OperServ AOLBot";
}
};
help Join {
" Используется для входа на канал(ы) IRC сервера.";
@@ -487,7 +494,7 @@ help Join {
" Пример: JOIN #Support";
" JOIN #Lobby,#IRCd";
" JOIN #IRCd,#Support,#main letmein,somepass,anotherpass";
}
};
help Part {
" Используется для того, чтобы покинуть текущий канал.";
@@ -499,7 +506,7 @@ help Part {
" Синтаксис: PART <канал>,<канал2>,<канал3>,<канал4> <причина>";
" Пример: PART #Support";
" PART #Lobby,#IRCd See ya later!";
}
};
help Motd {
" Показывают информационное сообщение IRC сервера, к которому";
@@ -507,28 +514,28 @@ help Motd {
" -";
" Синтаксис: MOTD";
" MOTD <сервер>";
}
};
help Rules {
" Показывает правила пользования сетью.";
" -";
" Синтаксис: RULES";
" RULES <сервер>";
}
};
help Lusers {
" Предоставляет информацию о количестве локальных и глобальных";
" пользователей (текущее и максимальное количество пользователей сети).";
" -";
" Синтаксис: LUSERS [сервер]";
}
};
help Map {
" Предоставляет \"Карту Сети\" список серверов и связи между ними.";
" В основном используется для визуализации маршрутизации в сети.";
" -";
" Синтаксис: MAP";
}
};
help Quit {
" Отключает от IRC сервера. Пользователи каналов, в которых вы";
@@ -538,7 +545,7 @@ help Quit {
" -";
" Синтаксис: QUIT <причина>";
" Пример: QUIT Leaving!";
}
};
help Ping {
" Команда PING используется для определения присутствия клиента или";
@@ -551,10 +558,10 @@ help Ping {
" CTCP PING";
" -";
" Синтаксис: PING <сервер> <сервер2>";
" Пример: PING irc.example.org";
" Пример: PING irc.fyremoon.net";
" PING hAtbLaDe";
" PING hAtbLaDe irc2.dynam.ac";
}
};
help Pong {
" Сообщение PONG - это ответ на запрос PING. Если указан параметр";
@@ -563,16 +570,16 @@ help Pong {
" идёт ответ на запрос PING.";
" -";
" Синтаксис: PONG <сервер> <сервер2>";
" Пример: PONG irc.example.org irc2.dynam.ac";
" (PONG от irc.example.org на irc2.dynam.ac)";
}
" Пример: PONG irc.fyremoon.net irc2.dynam.ac";
" (PONG от irc.fyremoon.net на irc2.dynam.ac)";
};
help Version {
" Возавращает версию ПО на IRC сервере.";
" -";
" Синтаксис: VERSION";
" VERSION <сервер>";
}
};
help Stats {
" Возвращает немного статистической информации с сервера";
@@ -582,7 +589,7 @@ help Stats {
" -";
" Дайте команду /stats без параметров для получения списка доступных";
" флагов.";
}
};
help Links {
" Возвращает список серверов, слинкованных с сетью на данный момент.";
@@ -590,14 +597,14 @@ help Links {
" IRC операторы.";
" -";
" Синтаксис: LINKS";
}
};
help Admin {
" Возвращает административную информацию с указанного сервера.";
" -";
" Синтаксис: ADMIN";
" ADMIN <сервер>";
}
};
help Userhost {
" Возвращает имя хоста для указанного пользователя.";
@@ -605,7 +612,7 @@ help Userhost {
" -";
" Синтаксис: USERHOST <имя>";
" Пример: USERHOST hAtbLaDe";
}
};
help Userip {
" Возвращает IP адрес указанного пользователя.";
@@ -613,7 +620,7 @@ help Userip {
" -";
" Синтаксис: USERIP <имя>";
" Пример: USERIP codemastr";
}
};
help Topic {
" Устанавливает/изменяет тему указанного канала, или просто показывает";
@@ -623,7 +630,7 @@ help Topic {
" TOPIC <канал> <тема> (Изменит тему)";
" Пример: TOPIC #Operhelp";
" TOPIC #Lobby Welcome to #Lobby!!";
}
};
help Invite {
" Посылает указанному пользователю приглашение войти на указанный канал.";
@@ -635,7 +642,7 @@ help Invite {
" -";
" Синтаксис: INVITE [<имя> <канал>]";
" Пример: INVITE";
}
};
help Kick {
" Удаляет пользователя из канала. Может быть использована только";
@@ -644,7 +651,7 @@ help Kick {
" -";
" Синтаксис: KICK <канал> <пользователь> [причина]";
" Пример: KICK #Lobby foobar Lamer..";
}
};
help Away {
" Помечает вас как отсутствующего - \"Away\".";
@@ -653,7 +660,7 @@ help Away {
" указанной причине)";
" AWAY (Снимет статус отсутствующего)";
" Пример: AWAY Lunch time!";
}
};
help Watch {
" Watch - это система уведомлений, более быстрая и использующая меньше";
@@ -668,7 +675,7 @@ help Watch {
" уведомлений)";
" WATCH -имя (Удаление имени из списка)";
" WATCH (Покажет весь список уведомлений)";
}
};
help List {
" Возвращает полный список каналов, доступных в сети IRC на данный";
@@ -688,7 +695,7 @@ help List {
" -";
" Все эти параметры могут быть использованы вместо стандартной";
" строки поиска.";
}
};
help Privmsg {
" Позволяет послать сообщение пользователю, всему каналу или целому";
@@ -712,7 +719,7 @@ help Privmsg {
" [Только для Операторов IRC]";
" Сообщение показывается в окне статуса большинством современных IRC";
" клиентов.";
" Пример: /PRIVMSG $*.example.org We will be upgrading our net in the";
" Пример: /PRIVMSG $*.mynet.net We will be upgrading our net in the";
" next hour";
" Однако, следует заметить, что в большинстве случаев лучше использовать";
" сервисы (/OS GLOBAL).";
@@ -725,7 +732,7 @@ help Privmsg {
" нельзя использовать дополнительные возможности команд /msg или";
" /privmsg, нужно пользоваться ими следующим образом:";
" '/QUOTE PRIVMSG @#channel blah'.";
}
};
help Notice {
" Посылает \"notice\" пользователю, каналу или всем, кто подключен к";
@@ -748,7 +755,7 @@ help Notice {
" Посылает \"notice\" всем пользователям сервера, попадающим под";
" <маска> [Доступно только операторам]";
" Сообщения видны в окне статуса большинства современных клиентов.";
" Пример: /NOTICE $*.example.org We will be upgrading our net in the";
" Пример: /NOTICE $*.mynet.net We will be upgrading our net in the";
" next hour";
" В большинстве случаев сервисы (/OS GLOBAL) будут лучшей";
" альтернативой.";
@@ -759,7 +766,7 @@ help Notice {
" ВАЖНО: В случае использования старых клиентов (ircII, к примеру),";
" чтобы использовать дополнительные возможности, необходимо применять";
" следующий способ: '/QUOTE NOTICE @#channel blah'.";
}
};
help Knock {
" Для каналов с ограничением доступа \"только по приглашению\" вы можете";
@@ -767,14 +774,14 @@ help Knock {
" -";
" Синтаксис: KNOCK <#канал> <сообщение>";
" Пример: KNOCK #secret_chan I'm an op, let me in!";
}
};
help Setname {
" Позволяет пользователю изменить реальное имя (\"Real name\") (GECOS)";
" без отключения от IRC";
" -";
" Синтаксис: SETNAME <новое \"реальное имя\">";
}
};
help Vhost {
" Скрывает реальный hostname пользователя, заменяя его виртуальным";
@@ -782,7 +789,7 @@ help Vhost {
" -";
" Синтаксис: VHOST <логин> <пароль>";
" Пример: VHOST openbsd ilovecypto";
}
};
help Mode {
" Устанавливает режим для пользователя или канала.";
@@ -792,7 +799,7 @@ help Mode {
" Синтаксис: MODE <канал/пользователь> <режим>";
" Пример: MODE #Support +tn";
" MODE #Support +ootn hAtbLaDe XYZ";
}
};
help Credits {
" Эта команда возвращает список людей, так или иначе помогавших в";
@@ -800,28 +807,28 @@ help Credits {
" -";
" Синтаксис: CREDITS";
" CREDITS <сервер>";
}
};
help Dalinfo {
" Историческая справка о создателях сервера (от ircu, и далее...)";
" -";
" Синтаксис: DALINFO";
" DALINFO <сервер>";
}
};
help License {
" Возвращает информацию о лицензии, под которой распространяется";
" UnrealIRCd.";
" Синтаксис: LICENSE";
" LICENSE <сервер>";
}
};
help Time {
" Отображает текущую дату и время на сервере.";
" -";
" Синтаксис: TIME";
" TIME <сервер>";
}
};
help Silence {
" Игнорирует сообщения от пользователя или группы пользователей сервера.";
@@ -829,7 +836,7 @@ help Silence {
" Синтаксис: SILENCE +nickname (Добавляет ник в SILENCE список)";
" SILENCE -nickname (Удаляет ник из SILENCE списка)";
" SILENCE (Отображает текущий SILENCE список)";
}
};
help Oper {
" Позволяет пользователю получить статус IRC оператора.";
@@ -837,7 +844,7 @@ help Oper {
" Синтаксис: OPER <идентификатор> <пароль>";
" ВАЖНО: идентификатор и пароль чувствительны к регистру";
" Пример: OPER hAtbLaDe foobar234";
}
};
help Wallops {
" Посылает сообщение всем пользователям с установленным флагом +w.";
@@ -845,7 +852,7 @@ help Wallops {
" сообщения может любой пользователь с установленным флагом +w";
" -";
" Синтаксис: WALLOPS <сообщение>";
}
};
help Globops {
" Посылает общесетевое сообщение для IRC операторов. Видеть его могут";
@@ -853,35 +860,35 @@ help Globops {
" -";
" Синтаксис: GLOBOPS <сообщение>";
" Пример: GLOBOPS Lets get em clones ..";
}
};
help Locops {
" Посылает сообщение IRC операторам, подключенным к серверу (local).";
" -";
" Синтаксис: LOCOPS <сообщение>";
" Пример: LOCOPS Gonna k:line that user ...";
}
};
help Chatops {
" Посылает сообщение всем IRC операторам (global).";
" -";
" Синтаксис: CHATOPS <message>";
" Пример: CHATOPS Gonna k:line that user ...";
}
};
help Adchat {
" Посылает сообщение всем подключенным администраторам";
" -";
" Синтаксис: ADCHAT <текст>";
" Пример: ADCHAT Hey guys! I'm finally here.";
}
};
help Nachat {
" Посылает сообщение всем подключенным администраторам сети";
" -";
" Синтаксис: NACHAT <текст>";
" Пример: NACHAT Hey guys! How is everything?";
}
};
help Kill {
" Отключает пользователей от сервера IRC.";
@@ -889,7 +896,7 @@ help Kill {
" -";
" Синтаксис: KILL <ник1>,<ник2>,<ник3>,... <причина>";
" Пример: KILL Jack16 Cloning is not allowed";
}
};
help Kline {
" Команда временно добавляет пользователя или хост в K:Lines. ";
@@ -906,7 +913,7 @@ help Kline {
" KLINE *@*.someisp.com 2d Abuse (добавляет K:line на 2 дня)";
" KLINE Idiot 1d Please go away";
" KLINE -*@*.aol.com";
}
};
help Zline {
" Команда временно добавляет пользователя или хост в Z:Lines. ";
@@ -922,7 +929,7 @@ help Zline {
" ZLINE *@127.0.0.1 2d Abuse (Добавляет Z:line на 2 дня)";
" ZLINE -*@127.0.0.1";
" ВАЖНО: для использования требуется флаг, разрешающий zline";
}
};
help Gline {
" Команда временно добавляет пользователя или хост в G:Lines. ";
@@ -939,7 +946,7 @@ help Gline {
" GLINE *@*.idiot.net 1d Spammer (Добавляет G:line на 24 часа)";
" GLINE -*@*.idiot.net";
" ВАЖНО: для использования требуется флаг, разрешающий gline";
}
};
help Shun {
" Запрещает использование любой команды, кроме ADMIN и ответов на";
@@ -959,7 +966,7 @@ help Shun {
" (Shun foobar@aol.com на 10 минут по причине Spamming)";
" SHUN +foobar@aol.com 1d6h :Spamming (SHUN на 30 часов)";
" ВАЖНО: для использования требуется флаг, разрешающий gkline";
}
};
help Gzline {
" Команда накладывает временный глобальный Z:line. Если вы попадаете под";
@@ -977,7 +984,7 @@ help Gzline {
" GZLINE *@4.16.200.* 1d5h Spammers (Действующий 29 часов";
" общесетевой Z:line)";
" ВАЖНО: требует установленного can_gzline флага";
}
};
help Akill {
" Применяет Autokill на указанную маску. Запрещает подключение к сети";
@@ -986,14 +993,14 @@ help Akill {
" -";
" Синтаксис: AKILL <user@host> :<причина>";
" Пример: AKILL foo@aol.com :Spammers!";
}
};
help Rakill {
" Снимает ранее установленный AKILL.";
" ЭТА КОМАНДА МОЖЕТ БЫТЬ ИСПОЛЬЗОВАНА ТОЛЬКО СЕРВЕРАМИ";
" -";
" Синтаксис: RAKILL <user@host>";
}
};
help Rehash {
" Заставляет сервер перечитать файл конфигурации.";
@@ -1014,9 +1021,9 @@ help Rehash {
" -dns - Переинециализация и перезагрузка преобразования адресов";
" -garbage - Активирует \"сборщик мусора\"";
" -motd - Перечитает все файлы MOTD, BOTMOTD, OPERMOTD и RULES (включая tld{})";
" -tls - Перезагрузка сертификатов SSL/TLS";
" -ssl - Перезагрузка сертификатов SSL";
}
};
help Restart {
" Перезапускает IRC демона, с отключением всех пользователей,";
@@ -1026,7 +1033,7 @@ help Restart {
" Синтаксис: RESTART";
" RESTART <пароль>";
" RESTART <пароль> <причина>";
}
};
help Die {
" Убивает IRC демон, отключает от него всех пользователей.";
@@ -1034,16 +1041,16 @@ help Die {
" -";
" Синтаксис: DIE";
" DIE <пароль>";
}
};
help Lag {
" Команда - аналог Traceroute для IRC серверов";
" Вы вводите /LAG irc.example.org и получаете ответ от каждого";
" Вы вводите /LAG irc.fyremoon.net и получаете ответ от каждого";
" сервера, через который она проходит, с указанием времени задержки.";
" Используется для поиска лагов и серверов с нестыковкой по времени";
" -";
" Синтаксис: LAG <server>";
}
};
help Sethost {
" Пользуясь этой командой вы можете сменить свой виртуальный хост";
@@ -1052,7 +1059,7 @@ help Sethost {
" -";
" Синтаксис: SETHOST <новое имя>";
" Пример: SETHOST i.have.hairy.armpits";
}
};
help Setident {
" Этой командой вы можете сменить себе ваш идент (Username).";
@@ -1060,7 +1067,7 @@ help Setident {
" -";
" Синтаксис: SETIDENT <новый ident>";
" Пример: SETIDENT l33t";
}
};
help Chghost {
" Сменяет имя хоста пользователя IRC сети на указанное.";
@@ -1068,7 +1075,7 @@ help Chghost {
" -";
" Синтаксис: CHGHOST <ник> <хост>";
" Пример: CHGHOST hAtbLaDe root.me.com";
}
};
help Chgident {
" Изменяет идентификационную информацию (Ident) о пользователе сети.";
@@ -1076,7 +1083,7 @@ help Chgident {
" -";
" Синтаксис: CHGIDENT <ник> <ident>";
" Пример: CHGIDENT hAtbLaDe sheep";
}
};
help Chgname {
" Изменяет \"IRC Name\" (или \"Real Name\") пользователя сети";
@@ -1084,7 +1091,7 @@ help Chgname {
" -";
" Синтаксис: CHGNAME <ник> <имя>";
" Пример: CHGNAME hAtbLaDe Gotta new name :)";
}
};
help Squit {
" Отключает IRC сервер (или все сервера, попадающие под маску) от сети.";
@@ -1093,7 +1100,7 @@ help Squit {
" -";
" Синтаксис: SQUIT <сервер>";
" Пример: SQUIT leaf.*";
}
};
help Connect {
" Подключает указанный IRC сервер к тому, на котором вы находитесь.";
@@ -1104,21 +1111,21 @@ help Connect {
" CONNECT <leaf> <port> <hub>";
" Пример: CONNECT leaf.*";
" CONNECT leaf.* 6667 hub.*";
}
};
help Dccdeny {
" Запрещает передачу файлов, попадающих под указанную маску, по DCC.";
" Команда доступна только IRC операторам.";
" -";
" Синтаксис: DCCDENY <маска> <причина>";
}
};
help Undccdeny {
" Отменить запрет на передачу файлов по указанной маске.";
" Команда доступна только IRC операторам.";
" -";
" Синтаксис: UNDCCDENY <filename mask>";
}
};
help Sajoin {
" Заставляет пользователя войти в канал.";
@@ -1127,7 +1134,7 @@ help Sajoin {
" Синтаксис: SAJOIN <ник> <канал>,[<канал2>..]";
" Пример: SAJOIN hAtbLaDe #OperHelp";
" SAJOIN hAtbLaDe #Support,#IRCHelp";
}
};
help Sapart {
" Заставляет пользователя покинуть канал.";
@@ -1137,7 +1144,7 @@ help Sapart {
" Пример: SAPART hAtbLaDe #OperHelp";
" SAPART hAtbLaDe #Support,#IRCHelp";
" SAPART hAtbLaDe #Support,#IRCHelp Go away";
}
};
help Samode {
" Позволяет администратору сервисов изменить режимы на указанном канале";
@@ -1146,7 +1153,7 @@ help Samode {
" -";
" Синтаксис: SAMODE <канал> <режим>";
" Пример: SAMODE #Support +m";
}
};
help Trace {
" Команду TRACE можно использовать на сервере или пользователе.";
@@ -1157,15 +1164,15 @@ help Trace {
" используете его в первый раз.";
" -";
" Синтаксис: TRACE <сервер|ник>";
" Пример: TRACE irc.example.org";
}
" Пример: TRACE irc.fyremoon.net";
};
help Opermotd {
" Показывает MOTD сервера для IRC операторов";
" Команда доступна только IRC операторам.";
" -";
" Синтаксис: OPERMOTD";
}
};
help Sdesc {
" Этой командой можно изменить описание сервера без применения squit";
@@ -1174,7 +1181,7 @@ help Sdesc {
" -";
" Синтаксис: SDESC <новое описание>";
" Пример: SDESC Fly High, Fly Free";
}
};
help Mkpasswd {
" Команда возвратит 'hash' указанной строки, который можно";
@@ -1185,7 +1192,7 @@ help Mkpasswd {
" -";
" Синтаксис: MKPASSWD <метод> <пароль>";
" Пример: MKPASSWD argon2 IamTeh1337";
}
};
help Module {
" Покажет список загруженных сервером модулей.";
@@ -1205,20 +1212,24 @@ help Module {
" [OLD?] Отсутствует Mod_Version, забыли перекомпилировать старый";
" модуль";
" Так же будут видны присутствующие hooks и command overrides.";
}
};
help Close {
" Команда позволяет отключить все неизвестные соединения к IRC серверу.";
" -";
" Синтаксис: CLOSE";
}
};
help Tsctl {
" Команда позволяет управлять временем в IRC сети";
" Может использоваться только IRC операторами.";
" -";
" Синтаксис: TSCTL ALLTIME (Покажет время на всех серверах)";
}
" Синтаксис: TSCTL OFFSET +|- <time> (Настройка времени IRC)";
" TSCTL TIME (Покажет время)";
" TSCTL ALLTIME (Покажет время на всех серверах)";
" TSCTL SVSTIME <timestamp> (Установит время на всех";
" серверах)";
};
help Svsnick {
" Меняет ник указанному пользователю.";
@@ -1226,7 +1237,7 @@ help Svsnick {
" -";
" Синтаксис: SVSNICK <старый ник> <новый ник> <timestamp>";
" Пример: SVSNICK hAtbLaDe Foobar 963086432";
}
};
help Svsmode {
" Изменяет режимы указанного пользователя.";
@@ -1234,7 +1245,7 @@ help Svsmode {
" -";
" Синтаксис: SVSMODE <ник> <режим>";
" Пример: SVSMODE hAtbLaDe +i";
}
};
help Svskill {
" Отключает пользователя от сети.";
@@ -1242,7 +1253,7 @@ help Svskill {
" -";
" Синтаксис: SVSKILL <пользователь> :<причина>";
" Пример: SVSKILL Lamer21 :Goodbye";
}
};
help Svsnoop {
" Включает или отключает режим IRC оператора";
@@ -1252,7 +1263,7 @@ help Svsnoop {
" -";
" Синтаксис: SVSNOOP <сервер> <+/->";
" Пример: SVSNOOP leaf.* -";
}
};
help Svsjoin {
" Заставляет пользователя войти в указанный канал.";
@@ -1261,7 +1272,7 @@ help Svsjoin {
" Синтаксис: SVSJOIN <ник> <канал>[,<канал2>..] [ключ1[,ключ2[..]]]";
" Пример: SVSJOIN hAtbLaDe #jail";
" SVSJOIN hAtbLaDe #jail,#zoo";
}
};
help Svspart {
" Заставляет пользователя покинуть канал.";
@@ -1271,7 +1282,7 @@ help Svspart {
" Пример: SVSPART hAtbLaDe #Hanson";
" SVSPART hAtbLaDe #Hanson,#AOL";
" SVSPART hAtbLaDe #Hanson,#AOL You must leave";
}
};
help Svso {
" Даёт пользователю Operflags как описано в O:lines.";
@@ -1281,7 +1292,7 @@ help Svso {
" Синтаксис: SVSO <nick> <+operflags> (Добавляет Operflags)";
" SVSO <nick> - (Снимает все O:Line флаги)";
" Пример: SVSO SomeNick +bBkK";
}
};
help Swhois {
" Изменяет сообщение WHOIS для указанного ника.";
@@ -1290,7 +1301,7 @@ help Swhois {
" Синтаксис: SWHOIS <ник> :<сообщение> (Устанавливает SWHOIS)";
" SWHOIS <ник> : (Сбрасывает SWHOIS)";
" Пример: SWHOIS SomeNick :is a lamer";
}
};
help Sqline {
" Накладывает бан на указанный ник или маску.";
@@ -1298,7 +1309,7 @@ help Sqline {
" -";
" Синтаксис: SQLINE <маска> :<причина>";
" Пример: SQLINE *Bot* :No bots";
}
};
help Unsqline {
" Снимает бан с указанного ника или маски";
@@ -1306,7 +1317,7 @@ help Unsqline {
" -";
" Синтаксис: UNSQLINE <маска>";
" Пример: UNSQLINE *Bot*";
}
};
help Svs2mode {
" Изменяет режимы указанного пользователя и уведомляет его";
@@ -1315,7 +1326,7 @@ help Svs2mode {
" -";
" Синтаксис: SVS2MODE <ник> <режимы>";
" Пример: SVS2MODE hAtbLaDe +h";
}
};
help Svsfline {
" Добавляет маску файла к DCCDENY";
@@ -1324,7 +1335,7 @@ help Svsfline {
" Синтаксис: :server SVSFLINE + file :reason (Добавляет имя файла)";
" :server SVSFLINE - file (Удаляет имя файла)";
" :server SVSFLINE * (Очищает список DCCDENY)";
}
};
help Svsmotd {
" Изменяет MOTD у сервисов.";
@@ -1333,7 +1344,7 @@ help Svsmotd {
" SVSMOTD ! (Удаляет текущий MOTD)";
" SVSMOTD ! :<текст> (Замещает текущий новым MOTD)";
" Пример: SVSMOTD # :Services MOTD";
}
};
help Svsnline {
" Создаёт глобальный бан на основе реального имени.";
@@ -1345,7 +1356,7 @@ help Svsnline {
" SVSNLINE - :<имя> (чтобы удалить бан)";
" SVSNLINE * (очистить все баны)";
" Пример: SVSNLINE + sub7_drone :*sub7*";
}
};
help Svslusers {
" Изменяет общее и/или локальное максимальное количество";
@@ -1354,15 +1365,15 @@ help Svslusers {
" Должно использоваться через сервер, описанный в U:Lines.";
" -";
" Синтаксис: SVSLUSERS <сервер> <globalmax|-1> <localmax|-1>";
" Пример: SVSLUSERS irc.example.org -1 200";
}
" Пример: SVSLUSERS irc.test.com -1 200";
};
help Svswatch {
" Изменяет список WATCH у указанного пользователя.";
" Должно использоваться через сервер, описанный в U:Lines.";
" Синтаксис: SVSWATCH <имя> :<параметры>";
" Пример: SVSWATCH Blah :+Blih!*@* +Bluh!*@* +Bleh!*@*.com";
}
};
help Svssilence {
" Изменяет список SILENCE у указанного пользователя.";
@@ -1371,7 +1382,7 @@ help Svssilence {
" несколько записей одной командой.";
" Синтаксис: SVSSILENCE <имя> :<параметры>";
" Пример: SVSSILENCE Blah :+*!*@*.com +*!*@*.bla.co.uk";
}
};
help Svssno {
" Изменяет snomask для указанного ника.";
@@ -1379,7 +1390,7 @@ help Svssno {
" -";
" Синтаксис: SVSSNO <ник> <snomasks>";
" Пример: SVSSNO joe +Gc";
}
};
help Svs2sno {
" Изменяет snomask для указанного ника и уведомляет пользователя";
@@ -1388,7 +1399,7 @@ help Svs2sno {
" -";
" Синтаксис: SVS2SNO <ник> <snomasks>";
" Пример: SVS2SNO joe +Gc";
}
};
help Svsnolag {
" Включает 'no fake lag' для указанного пользователя.";
@@ -1396,7 +1407,7 @@ help Svsnolag {
" -";
" Синтаксис: SVSNOLAG [+|-] <ник>";
" Пример: SVSNOLAG + joe";
}
};
help Svs2nolag {
" Включает 'no fake lag' для указанного пользователя.";
@@ -1404,7 +1415,7 @@ help Svs2nolag {
" -";
" Синтаксис: SVS2NOLAG [+|-] <ник>";
" Пример: SVS2NOLAG + joe";
}
};
help Spamfilter {
@@ -1426,6 +1437,7 @@ help Spamfilter {
" сообщение), 'dccblock' (блокирует любой dccs), 'viruschan'";
" (покинуть все каналы и войти в канал помощи),";
" 'warn' (уведомляет операторов).";
" [regex] регулярное выражение, блокируемое фильтром";
" [tkltime] длительность применяемого фильтром действия (указание '-'";
" включает значение из set::spamfilter::ban-time, но для";
" block/tempshun этот параметр игнорируется.);";
@@ -1433,7 +1445,6 @@ help Spamfilter {
" ПРОБЕЛОВ, '_' будут преобразованы в пробелы. Если в качестве";
" причины указать '-', будет использовано значение";
" по-умолчанию из set::spamfilter::ban-reason.";
" [regex] регулярное выражение, блокируемое фильтром";
" - ";
" Примеры:";
" /spamfilter add p block - - Come watch me on my webcam";
@@ -1444,7 +1455,7 @@ help Spamfilter {
" /spamfilter add p kill - Please_go_to_www.viruscan.xx/nicepage/virus=blah Come watch me on my webcam";
" /spamfilter del p block - - Come watch me on my webcam*";
" /spamfilter add cN gzline 1d No_advertising_please come to irc\..+\..+";
}
};
help Tempshun {
" Добавляет/удаляет 'временный shun'.";
@@ -1455,23 +1466,23 @@ help Tempshun {
" Синтаксис: TEMPSHUN [+|-]<ник> [причина]";
" Пример: TEMPSHUN evilguy suspected infection";
" TEMPSHUN -niceguy";
}
};
help DccAllow {
" Для получения помощи по системе DCCALLOW, введите '/DCCALLOW HELP'";
}
};
help Addmotd {
" Добавляет линию в конец MOTD (сообщение дня)";
" -";
" Синтаксис: ADDMOTD <текст>";
" Пример: ADDMOTD Удачного общения!";
}
};
help Addomotd {
" Добавляет линию в конец OPERMOTD (сообщение дня для операторов)";
" -";
" Синтаксис: ADDOMOTD <текст>";
" Пример: ADDOMOTD Согрешите и потеряйте операторство!";
}
};
+142 -126
View File
@@ -1,4 +1,4 @@
/* UnrealIRCd 5 Yardım Yapılandırması
/* UnrealIRCd 4 Yardım Yapılandırması
*
* Orjinal yardım metnini yazan by hAtbLaDe
* Gözden geçiren by CC (07/2002) ve diğerleri
@@ -23,7 +23,7 @@ help {
" /HELPOP CHMODES - Kanal modelerini listeler";
" -";
" ==-------------------------oOo--------------------------==";
}
};
/* note: indexes were generated by cat somecmds|sort|column -c 70
* along with tab->space conversion (tabwidth 8).
@@ -48,7 +48,7 @@ help Usercmds {
" KICK NICK TIME";
" KNOCK NOTICE TOPIC";
" ==-------------------------oOo-------------------------==";
}
};
help Opercmds {
" Bu bölümdeki komutları sadece IRC Operatorler kullanabilir.";
@@ -68,7 +68,7 @@ help Opercmds {
" DCCDENY MKPASSWD SDESC ZLINE";
" DIE MODULE SETHOST";
" ==-------------------------oOo-------------------------==";
}
};
help Svscmds {
" Servisler ile uygulanılan komutları listeler.";
@@ -85,7 +85,7 @@ help Svscmds {
" SVSFLINE SVSMOTD SVSO SWHOIS";
" SVSJOIN SVSNICK SVSPART UNSQLINE";
" ==-------------------------oOo-------------------------==";
}
};
help Umodes {
" Aktif olarak kullanılan Kullanıcı modeleri aşağıdakilerdir.";
@@ -114,7 +114,7 @@ help Umodes {
" W = Size /whois çekildiğinde whois çekeni görmenizi sağlar. (Sadece IRCOp statüsündeki kullanıcılar kullanabilir)";
" Z = Sadece güvenli bağlantı kullanan kullanıcılardan/kullanıcılara PRIVMSG'ler alın/gönderin (SSL)";
" ==---------------------------oOo---------------------------==";
}
};
help Snomasks {
" Snomask açılımı 'Server Notice MASK', server bildirilerini kontrol eder.";
@@ -142,7 +142,7 @@ help Snomasks {
" S = Spamfilter uyarılarını görmenizi sağlar";
" v = Vhost kullanım uyarılarını görmenizi sağlar";
" ==-------------------------oOo------------------------==";
}
};
help Chmodes {
" Kullanılabilen mümkün kanal modelerinin hepsini listeler. /MODE";
@@ -189,7 +189,7 @@ help Chmodes {
" -";
" [h] Halfop, [o] Kanal Operator, [q] Kanal Sahibi";
" ==------------------------------oOo----------------------------==";
}
};
help ExtBans {
" Bu banlar, temel alınan geleneksel banlardan başka sana nick!user@host maskesi";
@@ -233,7 +233,11 @@ help ExtBans {
" Bu ban tipleri kullanılabilen yeni kriterleri gösterir:";
" ==-Tip--------İsim------------------------------Açıklama------------------------==";
" | | Bir kullanıcı servislere bu hesap adıyla giriş yaptıysa ";
" ~a | account | bu yasak ile eşleşecektir. ";
" | | bu yasak ile eşleşecektir. ";
" | | Bu ABC harfli bir kullanıcının XYZ hesab altında oturum ";
" ~a | account | açabileceği anlamına gelir ~R'den biraz farklıdır. ";
" | | Tüm servis paketleri bunu desteklemez, bu durumda bunun ";
" | | yerine ~R kullanmanız gerekecektir. ";
" | | Örnek: +e ~a:Name ";
"-----------------------------------------------------------------------------------";
" | | Kullanıcı bu kanaldaysa, diğer kanala giriş yapabilir ";
@@ -255,6 +259,14 @@ help ExtBans {
" | | dolayısı ile ('_') karekteri, bu ban ";
" | | 'Stupid bot script v1.4' ile eşleşir. ";
"-----------------------------------------------------------------------------------";
" | | Eğer bir kullanıcı kendini servislere tanıtmamışsa ";
" | | (Genellikle NickServ) ve nicki eşleşiyorsa bu ban da ";
" | | eşleşir. Yani bu ban çeşidi yalnıca ban yollarında ";
" ~R | registered | geçerlidir (+e). Örnek: +e ~R:Nick ";
" | | Nick veya rumuzlu kullanıcının diğer banlarına ";
" | | bakılmaksızın eğer kendini NickServ'e tanıtmışsa ";
" | | kanalda bulunmasına izin verir. ";
"-----------------------------------------------------------------------------------";
" | | Bir kullanıcı istemci sertifikasına sahip SSL/TLS ";
" | | kullanıyorsa, kullanıcıyı SSL fingerprint iziyle ";
" ~S | certfp | eşletirebilirsiniz (bunu /WHOIS içinde görürüsünüz). ";
@@ -270,7 +282,7 @@ help ExtBans {
" Örnek: +b ~q:~c:#lamers";
" Yukardaki yapılan ban, 'Quiet' olan bütün kullanıcıları #lamers kanalına girmelerini sağlayacaktır.";
" +I ~c:#trusted ve +I ~a:accountname gibi.";
}
};
help Chmodef {
" +f kanal modu kanallar için gelişmiş bir flood koruma sistemi sağlamaktadır.";
@@ -293,7 +305,7 @@ help Chmodef {
" -";
" Eğer olay başına haraket belirlerseniz, aynı zamanda haraketin ne kadar süre(dakika)";
" sonrasında geçerliliğini kaybedeceğini seçebilirsiniz.";
}
};
help Nick {
@@ -303,7 +315,7 @@ help Nick {
" -";
" Kullanımı: NICK <yeni nick>";
" Örnek: NICK hAtbLaDe";
}
};
help Whois {
" Sorgularda kullanıcının hakkında bilgi gösterir,";
@@ -323,7 +335,7 @@ help Whois {
" + - Kullanıcı voice modesine sahip (+v)";
" ! - Kullanıcının, whoisinde (+p) saklanan kanalları var, ve senin bir IRCop olman gerekli";
" ? - Gizlenmiş bir kanal (+s) ve senin bir IRCop olman gerekli";
}
};
help Who {
" Kullanıcıların hakkında durum bilgisi gösterir.";
@@ -367,7 +379,7 @@ help Who {
" + - Kullanıcı bir voice (+v)";
" ! - Kullanıcının IRC Operator olduğunu gizler";
" ? - Kullanıcı online bir IRC Operator";
}
};
help Whowas {
" Kullanıcılar için geçmiş WHOIS bilgilerini listeler.";
@@ -376,7 +388,7 @@ help Whowas {
" Kullanımı: WHOWAS <nick>";
" WHOWAS <nick> <cevapların max sayısı>";
" Örnek: WHOWAS hAtbLaDe";
}
};
help Cycle {
" Kanallarda çık-gir yapmasını sağlar. Bu komut";
@@ -385,7 +397,7 @@ help Cycle {
" Kullanımı: CYCLE <kanal>,<kanal2>,<kanal3>";
" Örnek: CYCLE #help";
" Örnek: CYCLE #main,#chat";
}
};
help Dns {
" IRC Serverının DNS hakkında dönüş bilgisi görüntüler.";
@@ -396,14 +408,14 @@ help Dns {
" 'DNS i' Sana nameserver configin hakkında ayrıntıları verecek";
" -";
" Kullanımı: DNS [seçenek]";
}
};
help Names {
" Belirtilen kanalda kullanıcıların listesini gösterir.";
" -";
" Kullanımı: NAMES <kanal>";
" Örnek: NAMES #Support";
}
};
help Ison {
" Bu komut, bir kullanıcı yada kullanıcıların online";
@@ -411,7 +423,7 @@ help Ison {
" -";
" Kullanımı: ISON <nick> <nick2> <nick3> <nick4>";
" Örnek: ISON hAtbLaDe Stskeeps OperServ AOLBot";
}
};
help Join {
" Bir IRC Server üzerinde bir veya daha çok kanallara girer.";
@@ -424,7 +436,7 @@ help Join {
" Örnek: JOIN #Support";
" JOIN #Lobby,#IRCd";
" JOIN #IRCd,#Support,#main letmein,somepass,anotherpass";
}
};
help Part {
" Belirtilen kanal ya da kanallardan çıkmanızı sağlar.";
@@ -434,35 +446,35 @@ help Part {
" Kullanımı: PART <kanal>,<kanal2>,<kanal3>,<kanal4> <sebeb>";
" Örnek: PART #Support";
" PART #Lobby,#IRCd Sonra görüşürüz!";
}
};
help Motd {
" Bir IRC Serverın gününün mesajının olduğu dosyayı metin olarak gösterir.";
" -";
" Kullanımı: MOTD";
" MOTD <server>";
}
};
help Rules {
" Bir IRC Serverın kurallar dosyasını metin olarak gösterir.";
" -";
" Kullanımı: RULES";
" RULES <server>";
}
};
help Lusers {
" Yerel ve global kullanıcı bilgisini göstermesini sağlar.";
" Bilgiler Yerel ve Network server için geçerlidir.";
" -";
" Kullanımı: LUSERS [server]";
}
};
help Map {
" IRC Serverın grafiksel bir \"Network Map\" (Harita)sını gösterir.";
" Özellikle yönlendirme amaçları için kullanılır.";
" -";
" Kullanımı: MAP";
}
};
help Quit {
" IRC Serverdan bağlantınızı koparır. Kanallardaki kullanıcılar";
@@ -471,7 +483,7 @@ help Quit {
" -";
" Kullanımı: QUIT <sebeb>";
" Örnek: QUIT Leaving!";
}
};
help Ping {
" PING komutu, aktif bir clientin varlığını test etmek için kullanılır veya";
@@ -483,10 +495,10 @@ help Ping {
" Bunun 'CTCP PING' komutundan farklı olduğunu unutmayınız..";
" -";
" Kullanımı: PING <server> <server2>";
" Örnek: PING irc.example.org";
" Örnek: PING irc.fyremoon.net";
" PING hAtbLaDe";
" PING hAtbLaDe irc2.dynam.ac";
}
};
help Pong {
" PONG mesajı sonrasi verilen PING mesajı bir cevaptır.Eğer parametre <server2> ise";
@@ -495,16 +507,16 @@ help Pong {
" ve bu mesajı oluşturan varlığın ismidir.";
" -";
" Kullanımı: PONG <server> <server2>";
" Örnek: PONG irc.example.org irc2.dynam.ac";
" (irc.example.org irc2.dynam.ac giden pong mesajı)";
}
" Örnek: PONG irc.fyremoon.net irc2.dynam.ac";
" (irc.fyremoon.net irc2.dynam.ac giden pong mesajı)";
};
help Version {
" Kullanılan IRCd yazılımının uyarlama bilgisini gösterir.";
" -";
" Kullanımı: VERSION";
" VERSION <server>";
}
};
help Stats {
" Server hakkında kesin istatistiksel bilgiyi gösterir.";
@@ -513,21 +525,21 @@ help Stats {
" Örnek: STATS u";
" -";
" Parametreler olmadan müsait flagların bir listesini görmen için /stats yazmalısın.";
}
};
help Links {
" Serverların hepsinin güncel olarak, şebekeye bağlandığı listeler.";
" U:lined Serverlarını sadece IRCop'lar görebilir.";
" -";
" Kullanımı: LINKS";
}
};
help Admin {
" Server hakkında yönetimsel olarak bilgi satırı gösterir.";
" -";
" Kullanımı: ADMIN";
" ADMIN <server>";
}
};
help Userhost {
" Bir kullanıcının USERHOST satırını gösterir.";
@@ -535,7 +547,7 @@ help Userhost {
" -";
" Kullanımı: USERHOST <nick>";
" Örnek: USERHOST hAtbLaDe";
}
};
help Userip {
" Bir kullanıcının IP adresini gösterir.";
@@ -543,7 +555,7 @@ help Userip {
" -";
" Kullanımı: USERIP <nick>";
" Örnek: USERIP codemastr";
}
};
help Topic {
" Kanalın başlığını değiştirmeyi sağlar veya metin belirtilmez ise";
@@ -553,7 +565,7 @@ help Topic {
" TOPIC <kanal> <metin> (başlığı değiştirir.)";
" Örnek: TOPIC #Operhelp";
" TOPIC #Lobby Hoşgeldiniz #Lobby!!";
}
};
help Invite {
" Özel bir kanala katılması için bir kullanıcıya bir davet yollar.";
@@ -564,7 +576,7 @@ help Invite {
" Kullanımı: INVITE [<nick> <kanal>]";
" Örnek: INVITE hAtbLaDe #Support";
" Örnek: INVITE";
}
};
help Kick {
" Kullanıcı yada Kullanıcıları kanaldan atmaya yarar.";
@@ -572,7 +584,7 @@ help Kick {
" -";
" Kullanımı: KICK <kanal> <nick> <sebeb>";
" Örnek: KICK #Lobby foobar Lamer..";
}
};
help Away {
" Bir sebeb belirttiğinizde sizi \"Away\", yani meşgul olarak gösterir.";
@@ -580,7 +592,7 @@ help Away {
" Kullanımı: AWAY <sebeb> (belirtilen nedenden dolayı sizi away(meşgul) yapar.)";
" AWAY (Awaydan çıkartır.)";
" Örnek: AWAY Öğle yemeği zamanı!";
}
};
help Watch {
" Watch serverde hızlı çalışan bir bildiri sistemidir.";
@@ -593,7 +605,7 @@ help Watch {
" Kullanımı: WATCH +nick +nick2 +nick3 (nickleri ekler.)";
" WATCH -nick (nick siler.)";
" WATCH (Watch listesindeki bağlı kullanıcıları görüntüler.)";
}
};
help List {
" Serverdeki bütün kanalların tam olarak listelemesini sağlar.";
@@ -610,7 +622,7 @@ help List {
" !*maske* içerisinde belirttiğiniz *maske* geçmeyen kanalları listeler.";
" -";
" Bunlar dışında başka flaglar kullanılabilir.";
}
};
help Privmsg {
" Belirlenen hedefe bir metin gönderir. Bu hedef, bir kanal ya da bir nick olabilir.";
@@ -629,7 +641,7 @@ help Privmsg {
" /PRIVMSG $<maske> <mesaj>";
" Belirtilen <maske> de bulunan tüm kullanıcılara mesaj yollamanızı sağlar. [Sadece Operatorler]";
" Bu mesaj genelde status penceresinde gösterilir.";
" Örn: /PRIVMSG $*.example.org Biz, gelecek saat serverımızı yükseltiyor olacağız";
" Örn: /PRIVMSG $*.mynet.net Biz, gelecek saat serverımızı yükseltiyor olacağız";
" Hizmetlerin çoğunu not olarak bildirir. (/OS GLOBAL) daha iyi bir alternatifdir.";
" -";
" Birden fazla hedefe aynı mesajı göndermek isterseniz: /PRIVMSG <nick>,<nick2>,<nick3> <mesaj>.";
@@ -637,7 +649,7 @@ help Privmsg {
" NOT : Bazı eski clientlerde (örneğin: ircll) /msg komutunu";
" gibi gelişmiş özellikleri kullanamazsınız. Kullanabilmeniz için";
" '/QUTOE PRIVMSG @#kanal selam' veya benzeri bir komut uygulamanız gerekir.";
}
};
help Notice {
" Belirtilen hedefe bir metini uyarı modunda gönderir.";
@@ -656,7 +668,7 @@ help Notice {
" /NOTICE $<maske> <mesaj>";
" Belirtilen <maske> de bulunan tüm kullanıcılara notice yollamanızı sağlar. [Sadece Operatorler]";
" Bu mesaj genelde status penceresinde gösterilir.";
" Örn: /NOTICE $*.example.org Gelecek saat, serverımızı yükseltiyor olacağız";
" Örn: /NOTICE $*.mynet.net Gelecek saat, serverımızı yükseltiyor olacağız";
" Hizmetlerin çoğunu not olarak bildirir. (/OS GLOBAL) daha iyi bir alternatifdir.";
" -";
" Birden fazla hedefe aynı mesajı göndermek isterseniz: /NOTICE <nick>,<nick>,<nick>.";
@@ -664,7 +676,7 @@ help Notice {
" NOT : Bazı eski clientlerde (örneğin: ircll) /notice komutunu";
" gibi gelişmiş özellikleri kullanamazsınız. Kullanabilmeniz için";
" '/QUTOE NOTICE @#kanal selam' veya benzeri bir komut uygulamanız gerekir.";
}
};
help Knock {
" Davetsel olan kanallar için, sadece sen \"Knock\" olan bir";
@@ -672,14 +684,14 @@ help Knock {
" -";
" Kullanımı: KNOCK <kanal> <mesaj>";
" Örnek: KNOCK #davetsel_kanal Ben opum, beni davet et!";
}
};
help Setname {
" Tekrar bağlamadan kullanıcıların serverdaki \"Real name\" (GECOS)";
" kısmını internet üzerinde değiştirmesi için kullanıcılara izin verir.";
" -";
" Kullanımı: SETNAME <yeni isim>";
}
};
help Vhost {
" Gerçek hostadını sanal host adı ile değiştirmeye yarar.";
@@ -687,7 +699,7 @@ help Vhost {
" -";
" Kullanımı: VHOST <giriş> <şifre>";
" Örnek: VHOST openbsd ilovecypto";
}
};
help Mode {
" Bir kanal veya nickin modesini değiştirir.";
@@ -696,7 +708,7 @@ help Mode {
" Kullanımı: MODE <kanal/nick> <mode>";
" Örnek: MODE #Support +tn";
" MODE #Support +ootn hAtbLaDe XYZ";
}
};
help Credits {
" Bu komut, UnrealIRCd'yı yapan, yardım eden bütün";
@@ -704,27 +716,27 @@ help Credits {
" -";
" Kullanımı: CREDITS";
" CREDITS <server>";
}
};
help Dalinfo {
" Bu komut, tarihsel kredileri gösterir. (ircu, vs..)";
" -";
" Kullanımı: DALINFO";
" Kullanımı: DALINFO <server>";
}
};
help License {
" Bu komut, UnrealIRCd'ın, altında bırakılan lisans bilgisini gösterir.";
" Kullanımı: LICENSE";
" LICENSE <server>";
}
};
help Time {
" Serverın güncel tarihini ve zamanının olduğu bir bilgi satırı gösterir.";
" -";
" Kullanımı: TIME";
" TIME <server>";
}
};
help Silence {
" Bir kullanıcı eklendiği zaman mesaj gelmesini engeller, veya eklenen nickleri listeler.";
@@ -732,7 +744,7 @@ help Silence {
" Kullanımı: SILENCE +nick (nick ekler.)";
" SILENCE -nick (nick siler.)";
" SILENCE (Silence listteki nickleri listeler.)";
}
};
help Oper {
" Bir kullanıcının IRC operatör konumuna geçmesi için doğru bir";
@@ -741,7 +753,7 @@ help Oper {
" Kullanımı: OPER <nick> <şifre>";
" Not: Hem kullanıcı ID, hem de şifre, hassas bir olaydır.";
" Örnek: OPER hAtbLaDe foobar234";
}
};
help Wallops {
" Umodesi +w olan bütün kullanıcılara mesaj göndermesini sağlar.";
@@ -749,14 +761,14 @@ help Wallops {
" bunları görebilir.";
" -";
" Kullanımı: WALLOPS <mesaj>";
}
};
help Locops {
" Bu komut, serverda bütün IRCop'lara bir mesaj yollamasını sağlar. (Yerel).";
" -";
" Kullanımı: LOCOPS <mesaj>";
" Örnek: LOCOPS Gonna kullanıcısına k:line atın ...";
}
};
help Globops {
" Serverda bütün IRCops'lar global bir mesaj yollayabilir.";
@@ -764,7 +776,7 @@ help Globops {
" -";
" Kullanımı: GLOBOPS <mesaj>";
" Örnek: GLOBOPS Kloneleri almaya izin ver ..";
}
};
help Kill {
" Belirtilen Kullanıcıları IRC serverda bağlantısını kesmek için kullanılan bir komuttur.";
@@ -772,7 +784,7 @@ help Kill {
" -";
" Kullanımı: KILL <nick1>,<nick2>,<nick3>,... <sebeb>";
" Örnek: KILL Jack16 Clone yasak!";
}
};
help Kline {
" Bu komut, bir nicke zamanlı K:Lines atmanızı sağlar.";
@@ -787,7 +799,7 @@ help Kline {
" KLINE *@*.someisp.com 2d Kötü kullanım (2 günlük kline ekler.)";
" KLINE Idiot 1d Kötü kullanım";
" KLINE -*@*.aol.com";
}
};
help Zline {
" Bu komut, bir nicke zamanlı Z:Lines atmanızı sağlar. Eğer bir nick Z:Lines'a uygun";
@@ -802,7 +814,7 @@ help Zline {
" ZLINE *@127.0.0.1 2d Kötü kullanım (2 günlük Zline ekler.)";
" ZLINE -*@127.0.0.1";
" NOT: ZLINE atabilme flağına sahip olmaniz gerekir. (can_zline)";
}
};
help Gline {
" Bu komut, bir nicke zamanlı G:Lines atmanızı sağlar. Eğer bir nick G:Lines'a uygun";
@@ -819,7 +831,7 @@ help Gline {
" GLINE Idiot 1d Kötü kullanım";
" GLINE -*@*.idiot.net";
" NOT: GLINE atabilme flağına sahip olmaniz gerekir. (can_gkline)";
}
};
help Shun {
" ADMIN hariçindeki bir kullanıcının herhangi bir komutu uygulamasını engeller";
@@ -837,7 +849,7 @@ help Shun {
" (Shuns foobar@aol.com adresine Spam nedeni ile 10dk shun ekler.)";
" SHUN +foobar@aol.com 1d6h :Boş mesaj (Spam nedeni ile 30 saat Shun ekler.)";
" NOT: SHUN atabilme flağına sahip olmanız gerekir. (can_gkline)";
}
};
help Gzline {
" Bu komut, bir nicke zamanlı Z:line atmanızı sağlar. Eğer bir nick Z:line'ya uygun";
@@ -852,7 +864,7 @@ help Gzline {
" Örnek: GZLINE *@4.16.200.* 900 Boş mesaj (15 dk Global Z:line ekler.)";
" GZLINE *@4.16.200.* 1d5h Boş mesaj (29 saat Global Z:line ekler.)";
" NOT: Gzline atabilme flağına sahip olmanız gerekir. (can_gzline)";
}
};
help Rehash {
" Yerel bir serverın konfigurasyon dosya(larını) yeniden okumasını sağlar";
@@ -873,8 +885,8 @@ help Rehash {
" -garbage - Değersiz dataların toplanmasını sağlar";
" -motd - Tüm MOTD, BOTMOTD, OPERMOTD ve RULES dosyalarını tekrar okumasını sağlar";
" (tld{}'de onlar dahil bloklar)";
" -tls - SSL/TLS Sertifikaları yeniden okur";
}
" -ssl - SSL Sertifikaları yeniden okur";
};
help Restart {
" Serverın belirtilen şifre ile yeniden başlatılmasını sağlar.";
@@ -884,7 +896,7 @@ help Restart {
" Kullanımı: RESTART";
" RESTART <şifre>";
" RESTART <şifre> <sebeb>";
}
};
help Die {
" IRC Serverını, belirtilen şifre ile tamamen kapatmasını sağlar.";
@@ -893,15 +905,15 @@ help Die {
" -";
" Kullanımı: DIE";
" DIE <şifre>";
}
};
help Lag {
" Bu komut irc serverları için Traceroute benzeri bir komuttur.";
" Eğer /LAG irc.example.org şeklinde kullanırsanız.";
" Eğer /LAG irc.fyremoon.net şeklinde kullanırsanız.";
" Serverın lag durumunu görmüş olacaksınız.";
" -";
" Kullanımı: LAG <server>";
}
};
help Sethost {
" Bu komut, kendinin veya bir kullanıcının virtual host kısmını değiştirmesini sağlar. (Vhost)";
@@ -910,7 +922,7 @@ help Sethost {
" -";
" Kullanımı: SETHOST <yeni host>";
" Örnek: SETHOST i.have.hairy.armpits";
}
};
help Setident {
" Bu komutla, kendinin veya bir kullanıcının Identini değiştirmesini sağlar. (Username.)";
@@ -918,7 +930,7 @@ help Setident {
" -";
" Kullanımı: SETIDENT <yeni ident>";
" Örnek: SETIDENT l33t";
}
};
help Chghost {
" Güncel olarak IRC Serverda bir kullanıcının hostname kısmını değiştirmeyi sağlar.";
@@ -926,7 +938,7 @@ help Chghost {
" -";
" Kullanımı: CHGHOST <nick> <hostismi>";
" Örnek: CHGHOST hAtbLaDe root.me.com";
}
};
help Chgident {
" Güncel olarak IRC Serverda bir kullanıcının IDENT kısmını değiştirmesini sağlar.";
@@ -934,7 +946,7 @@ help Chgident {
" -";
" Kullanımı: CHGIDENT <nick> <ident>";
" Örnek: CHGIDENT hAtbLaDe Koyun";
}
};
help Chgname {
" Güncel olarak IRC Serverda bir kullanıcının \"IRC Name\" veya \"Real Name\" kısmını değiştirmeye yarar.";
@@ -942,7 +954,7 @@ help Chgname {
" -";
" Kullanımı: CHGNAME <nick> <isim>";
" Örnek: CHGNAME hAtbLaDe Gotta yeni isim :)";
}
};
help Squit {
" Network'dan bir IRC Serverın bağlantısının kopmasını sağlar.";
@@ -951,7 +963,7 @@ help Squit {
" -";
" Kullanımı: SQUIT <server>";
" Örnek: SQUIT leaf.*";
}
};
help Connect {
" Bir serverın, güncel olarak üzerinde olduğu başka bir IRC servera bağlar.";
@@ -962,7 +974,7 @@ help Connect {
" CONNECT <server> <port> <ana server>";
" Örnek: CONNECT leaf.*";
" CONNECT leaf.* 6667 hub.*";
}
};
help Dccdeny {
" Belirlenen bir dosya uzantısına, DCC engeli koyar. uzantıyı";
@@ -970,14 +982,14 @@ help Dccdeny {
" Sadece IRCop'lar kullanabilir.";
" -";
" Kullanımı: DCCDENY <dosyaismi maskesi> <sebeb>";
}
};
help Undccdeny {
" Belirlenen bir dosya uzantısında, DCC engeli varsa bu engeli kaldırmasını sağlar.";
" Sadece IRCop'lar kullanabilir.";
" -";
" Kullanımı: UNDCCDENY <dosyaismi maskesi>";
}
};
help Sajoin {
" Bir kullanıcıyı, zorla kanal yada kanallara girmesini sağlar.";
@@ -986,7 +998,7 @@ help Sajoin {
" Kullanımı: SAJOIN <nick> <kanal>,[<kanal2>]";
" Örnek: SAJOIN hAtbLaDe #OperHelp";
" SAJOIN hAtbLaDe #Support,#IRCHelp";
}
};
help Sapart {
" Bir kullanıcıyı, zorla kanal yada kanallardan çıkmasını sağlar.";
@@ -996,7 +1008,7 @@ help Sapart {
" Örnek: SAPART hAtbLaDe #OperHelp";
" SAPART hAtbLaDe #Support,#IRCHelp";
" SAPART hAtbLaDe #Support,#IRCHelp Hoşcakal";
}
};
help Samode {
" Operatör durumuna sahip olmadan bir kanalın";
@@ -1005,24 +1017,24 @@ help Samode {
" -";
" Kullanımı: SAMODE <kanal> <mode>";
" Örnek: SAMODE #Support +m";
}
};
help Trace {
" TRACE komutunu serverlar veya clientler için kullanabilirsiniz.";
" Kullanıcı için uygularsanız size class ını ve lag durumunu gösterir.";
" Server için uygularsanız size class,version ve link bilgisini gösterir.";
" TRACE Komutu bazı zamanlarda karışabilir özellikle ilk defa kullanıyorsanız.";
" -";
" Kullanımı: TRACE <server|nick>";
" Örnek: TRACE irc.example.org";
}
" Kullanıcı için uygularsanız size class ını ve lag durumunu gösterir.";
" Server için uygularsanız size class,version ve link bilgisini gösterir.";
" TRACE Komutu bazı zamanlarda karışabilir özellikle ilk defa kullanıyorsanız.";
" -";
" Kullanımı: TRACE <server|nick>";
" Örnek: TRACE irc.fyremoon.net";
};
help Opermotd {
" IRC Operatorler için hazırlanan günün mesajını göstermeyi sağlar.";
" Sadece IRCop'lar kullanabilir.";
" -";
" Kullanımı: OPERMOTD";
}
};
help Sdesc {
" Bu komutla sen, IRC Serverın bilgi satırını değiştirebilirsin.";
@@ -1031,7 +1043,7 @@ help Sdesc {
" -";
" Kullanımı: SDESC <yeni bilgi>";
" Örnek: SDESC Yüksekten uç";
}
};
help Mkpasswd {
" Bu komut belirlenen bir hash komutu olarak geri döner.";
@@ -1041,7 +1053,7 @@ help Mkpasswd {
" -";
" Kullanımı: MKPASSWD <metod> <şifre>";
" Örnek: MKPASSWD argon2 IamTeh1337";
}
};
help Module {
" Bu komut size yüklü olan modülleri listeler.";
@@ -1062,21 +1074,24 @@ help Module {
" Sen buna ek olarak, farklı komutlar ve modüllerin listesini göreceksin.";
" Ek olarak hookların ve override komutların bir listesini göreceksiniz";
" (hook numarası include/modules.h içerisinden görülebilir).";
}
};
help Close {
" Bu komut, IRC serverından bütün bilinmeyen";
" bağlantılarınızı kesmenizi sağlar.";
" -";
" Kullanımı: CLOSE";
}
};
help Tsctl {
" İleri düzey olan bu komut dahili irc saatini ayarlar.";
" Sadece IRCop'lar kullanabilir.";
" -";
" Kullanımı: TSCTL ALLTIME (Tüm serverın aktif saatini gösterir)";
}
" Kullanımı: TSCTL OFFSET +|- <zaman> (Dahili irc saatini ayarlar)";
" TSCTL TIME (Aktif saati gösterir)";
" TSCTL ALLTIME (Tüm serverın aktif saatini gösterir)";
" TSCTL SVSTIME <timestamp> (Tüm serverın saatini ayarlar)";
};
help Svsnick {
" Bu komut, bir kullanıcının o an kullandığı nickin başka bir nicke dönüştürmesini sağlar.";
@@ -1084,7 +1099,7 @@ help Svsnick {
" -";
" Kullanımı: SVSNICK <nick> <yeni nick> <süre>";
" Örnek: SVSNICK hAtbLaDe Foobar 963086432";
}
};
help Svsmode {
" Bu komut, bir kullanıcının o an kullandığı modelerini değiştirmesini sağlar.";
@@ -1092,7 +1107,7 @@ help Svsmode {
" -";
" Kullanımı: SVSMODE <nick> <mode>";
" Örnek: SVSMODE hAtbLaDe +i";
}
};
help Svskill {
" Bu komut, bir kullanıcının IRC serverındaki bağlantısının zorla kopmasını sağlar.";
@@ -1100,7 +1115,7 @@ help Svskill {
" -";
" Kullanımı: SVSKILL <nick> :<sebeb>";
" Örnek: SVSKILL Lamer21 :Güle Güle";
}
};
help Svsnoop {
" Bu komut, IRC serverındaki IRCop";
@@ -1109,7 +1124,7 @@ help Svsnoop {
" -";
" Kullanımı: SVSNOOP <server> <+/->";
" Örnek: SVSNOOP leaf.* -";
}
};
help Svsjoin {
" Bu komut, bir kullanıcının kanal yada kanallara zorla girmesini sağlar.";
@@ -1118,7 +1133,7 @@ help Svsjoin {
" Kullanımı: SVSJOIN <nick> <kanal>[,<kanal2>..] [şifre[,şifre2[..]]]";
" Örnek: SVSJOIN hAtbLaDe #jail";
" SVSJOIN hAtbLaDe #jail,#zoo";
}
};
help Svspart {
" Bu komut, bir kullanıcının kanal yada kanallardan zorla çıkmasını sağlar.";
@@ -1128,7 +1143,7 @@ help Svspart {
" Örnek: SVSPART hAtbLaDe #Hanson";
" SVSPART hAtbLaDe #Hanson,#AOL";
" SVSPART hAtbLaDe #Hanson,#AOL Sen çıkmalısın";
}
};
help Svso {
" Bu komut, bir kullanıcıya O:lines yetkilisi gibi IRCop flagları verir.";
@@ -1138,7 +1153,7 @@ help Svso {
" Kullanımı: SVSO <nick> <+oper-flagları> (OPER flagları ekler.)";
" SVSO <nick> - (O:Line flaglarını siler.)";
" Örnek: SVSO SomeNick +bBkK";
}
};
help Swhois {
" Bu komut, bir kullanıcının whois bilgisini değiştirmeyi sağlar.";
@@ -1147,7 +1162,7 @@ help Swhois {
" Kullanımı: SWHOIS <nick> :<mesaj> (Swhois ekler.)";
" SWHOIS <nick> : (Swhois'i temizler.)";
" Örnek: SWHOIS SomeNick :is a lamer";
}
};
help Sqline {
" Bu komut, nick veya nick karakterlerini kullanan kullanıcıları yasaklamasını sağlar.";
@@ -1155,7 +1170,7 @@ help Sqline {
" -";
" Kullanımı: SQLINE <nick> :<sebeb>";
" Örnek: SQLINE *Bot* :Botlara Hayır";
}
};
help Unsqline {
" Bu komut, kullanımı yasaklanmış olan nick veya nick karekterlerinin yeniden kullanılmasını sağlar.";
@@ -1163,7 +1178,7 @@ help Unsqline {
" -";
" Kullanımı: UNSQLINE <nick>";
" Örnek: UNSQLINE *Bot*";
}
};
help Svs2mode {
" Bu komut, bir kullanıcının modelerini zorla değiştirmeyi sağlar.";
@@ -1171,7 +1186,7 @@ help Svs2mode {
" -";
" Kullanımı: SVS2MODE <nick> <kullanıcı modesi>";
" Örnek: SVS2MODE hAtbLaDe +h";
}
};
help Svsfline {
" DCCDENY'e verilmiş dosya adı maskesini ekler veya siler.";
@@ -1180,7 +1195,7 @@ help Svsfline {
" Kullanımı: :server SVSFLINE + dosya :sebeb (Dosya adı ekler.)";
" :server SVSFLINE - dosya (Dosya adı siler.)";
" :server SVSFLINE * (DCCDENY listesini temizler.)";
}
};
help Svsmotd {
" Günün Servisler mesajını ekler veya siler.";
@@ -1189,7 +1204,7 @@ help Svsmotd {
" SVSMOTD ! (Motd siler.)";
" SVSMOTD ! :<mesaj> (bulunan mesaji silip, yenisini ekler.)";
" Örnek: SVSMOTD # :Services MOTD";
}
};
help Svsnline {
" Global bir realname (isim) yasağını ekler.";
@@ -1202,7 +1217,7 @@ help Svsnline {
" SVSNLINE - :<isim> (eklenmiş bir banı kaldırır.)";
" SVSNLINE * (eklenmiş tüm banları kaldırır.)";
" Örnek: SVSNLINE + sub7_drone :*sub7*";
}
};
help Svslusers {
" Global ve/veya Yerel maksimum kullanıcı sayısını değiştirir.";
@@ -1210,15 +1225,15 @@ help Svslusers {
" Sadece U:Lined (Servisler)'den gönderilebilir.";
" -";
" Kullanımı: SVSLUSERS <server> <globalmax|-1> <localmax|-1>";
" Örnek: SVSLUSERS irc.example.org -1 200";
}
" Örnek: SVSLUSERS irc.test.com -1 200";
};
help Svswatch {
" Bir kullanıcının, WATCH listesini değiştirmeyi sağlar.";
" Sadece U:Lined (Servis'den) gönderilebilir.";
" Kullanımı: SVSWATCH <nick> :<watch parametresi>";
" Örnek: SVSWATCH Blah :+Blih!*@* +Bluh!*@* +Bleh!*@*.com";
}
};
help Svssilence {
" Bir kullanıcının, SILENCE listesini değiştirmeyi sağlar.";
@@ -1227,7 +1242,7 @@ help Svssilence {
" ekleme/çıkarma yapabilirsiniz.";
" Kullanımı: SVSSILENCE <nick> :<silence parametreleri>";
" Örnek: SVSSILENCE Blah :+*!*@*.com +*!*@*.bla.co.uk";
}
};
help Svssno {
" Bu komut, bir kullanıcının snomasklarını değiştirmesini sağlar.";
@@ -1235,7 +1250,7 @@ help Svssno {
" -";
" Kullanımı: SVSSNO <nick> <snomasklar>";
" Örnek: SVSSNO joe +Gc";
}
};
help Svs2sno {
" Bu komut, bir kullanıcının zorla snomasklarını";
@@ -1244,7 +1259,7 @@ help Svs2sno {
" -";
" Kullanımı: SVS2SNO <nick> <snomasklar>";
" Örnek: SVS2SNO joe +Gc";
}
};
help Svsnolag {
" Bir kullanıcı için 'sahte gecikmeme' olanağı sağlar.";
@@ -1252,14 +1267,14 @@ help Svsnolag {
" -";
" Syntax: SVSNOLAG [+|-] <nickname>";
" Example: SVSNOLAG + joe";
}
};
help Svs2nolag {
" Bir kullanıcı için 'sahte gecikmeme' olanağı sağlar.";
" Sadece U:Lined (Servisler)'den gönderilebilir.";
" -";
" Kullanım: SVS2NOLAG [+|-] <nickname>";
" Örnek: SVS2NOLAG + joe";
}
};
help Spamfilter {
" Bu komut ekleme/temizleme olarak global boş mesajları filtreler.";
@@ -1278,13 +1293,13 @@ help Spamfilter {
" 'kline', 'gline', 'zline', 'gzline', 'block' (mesajı blocklar),";
" 'dccblock' (Dcc'leri herhangi şekilde yollamak mümkün değil.), 'viruschan' ";
" (Bütün kanallardan çıkarır ve virüs yardım kanalına sokar.), 'warn' (IRC Operatorleri uyarır.)";
" [string] Bu engellenmesi gereken gerçek dizedir (regex veya simple örneğine göre yapılır)";
" [tkltime] *LINEs çizgilerin, hareket ile yerleştirdiği süre (süre belirtmek";
" istemezseniz yerine '-' işareti belirtmek zorundasınız";
" set::spamfilter::ban-time, ignore eder veya block/tempshun koyar');";
" [reason] *LINE mesajın blocklanması için sebeb belirtmelisiniz, BOŞLUKLARI İÇERMEZ,";
" '_' işareti boşluklara çevirilecektir. Eğer sen sebeb yerine,";
" '-' işareti kullanırsan, (set::spamfilter::ban-reason) olarak yansıyacaktır.";
" [string] Bu engellenmesi gereken gerçek dizedir (regex veya simple örneğine göre yapılır)";
" - ";
" Birkaç örnek (Not: örnek komutlar satırlara bölünmüş olabilir):";
" /spamfilter add -simple p block - - Hemen seni webcamıma bekliyorum.";
@@ -1295,7 +1310,7 @@ help Spamfilter {
" /spamfilter add -simple p kill - Lütfen_www.viruscan.xx/nicepage/virus=blah_adresine_tıklayın. Hemen seni webcamıma bekliyorum.";
" /spamfilter del -simple p block - - Hemen seni webcamıma bekliyorum*";
" /spamfilter add -regex cN gzline 1d Lütfen_reklam_yapmayınız. irc\..+\..+ adresine bekliyorum.";
}
};
help Tempshun {
" Geçici SHUN ekler/kaldırır.Geçici shun listesine eklenen nick";
@@ -1304,25 +1319,26 @@ help Tempshun {
" Kullanımı: TEMPSHUN [+|-]<nick> [sebeb]";
" Örnek: TEMPSHUN evilguy Rahatsızlık vermeyiniz!";
" TEMPSHUN -niceguy";
}
};
help DccAllow {
" DCCALLOW sistemi hakkında yardım almak için '/DCCALLOW HELP' yazınız.";
/* It would be useless and bad to include it here since that stuff quickly gets out of synch
* stuff quickly gets out-of-synch.
*/
}
};
help Addmotd {
" MOTD sonuna yeni bir dizin ekler.";
" -";
" Kullanımı: ADDMOTD <yazı>";
" Örnek: ADDMOTD Güzel oyna!";
}
};
help Addomotd {
" OPERMOTD sonuna yeni bir dizin ekler.";
" -";
" Kullanımı: ADDOMOTD <yazı>";
" Örnek: ADDOMOTD Onu kötü kullan ve onu kaybet!";
}
};
+105 -130
View File
@@ -29,116 +29,116 @@ loadmodule "cloak";
// 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";
loadmodule "m_admin";
loadmodule "m_away";
loadmodule "m_invite";
loadmodule "m_ison";
loadmodule "m_join";
loadmodule "m_kick";
loadmodule "m_links";
loadmodule "m_list";
loadmodule "m_lusers";
loadmodule "m_map";
loadmodule "m_message";
loadmodule "m_mode";
loadmodule "m_motd";
loadmodule "m_names";
loadmodule "m_nick";
loadmodule "m_part";
loadmodule "m_pass";
loadmodule "m_pingpong";
loadmodule "m_protoctl";
loadmodule "m_quit";
loadmodule "m_rules";
loadmodule "m_topic";
loadmodule "m_user";
loadmodule "m_userhost";
loadmodule "m_watch";
loadmodule "m_who";
loadmodule "m_whois";
loadmodule "m_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";
loadmodule "m_botmotd";
loadmodule "m_cap";
loadmodule "m_cycle";
loadmodule "m_dccallow";
loadmodule "m_help";
loadmodule "m_knock";
loadmodule "m_lag";
loadmodule "m_sasl";
loadmodule "m_setname";
loadmodule "m_silence";
loadmodule "m_starttls";
loadmodule "m_time";
loadmodule "m_userip";
loadmodule "m_vhost";
// IRC Operator commands
// Note: several of these like kill are also server-to-server commands
// Note: several of these like m_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 "m_addmotd";
loadmodule "m_addomotd";
loadmodule "m_chghost";
loadmodule "m_chgident";
loadmodule "m_chgname";
loadmodule "m_close";
loadmodule "m_connect";
loadmodule "m_squit";
loadmodule "m_dccdeny";
loadmodule "m_globops";
loadmodule "m_kill"; /* also server-to-server */
loadmodule "m_locops";
loadmodule "m_mkpasswd";
loadmodule "m_oper";
loadmodule "m_opermotd";
loadmodule "m_sajoin";
loadmodule "m_samode";
loadmodule "m_sapart";
loadmodule "m_sdesc";
loadmodule "m_sethost";
loadmodule "m_setident";
loadmodule "m_stats";
loadmodule "m_tkl"; /* also server-to-server */
loadmodule "m_trace";
loadmodule "m_tsctl";
loadmodule "m_undccdeny";
loadmodule "m_unsqline";
loadmodule "m_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";
loadmodule "m_eos";
loadmodule "m_md";
loadmodule "m_netinfo";
loadmodule "m_server";
loadmodule "m_sjoin";
loadmodule "m_sqline";
loadmodule "m_swhois";
loadmodule "m_umode2";
loadmodule "m_sinfo";
// 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";
loadmodule "m_sendsno";
loadmodule "m_sendumode";
loadmodule "m_svsfline";
loadmodule "m_svsjoin";
loadmodule "m_svskill";
loadmodule "m_svslusers";
loadmodule "m_svsmode";
loadmodule "m_svsmotd";
loadmodule "m_svsnick";
loadmodule "m_svsnline";
loadmodule "m_svsnolag";
loadmodule "m_svsnoop";
loadmodule "m_svspart";
loadmodule "m_svssilence";
loadmodule "m_svssno";
loadmodule "m_svswatch";
/*** Channel modes ***/
@@ -160,7 +160,6 @@ loadmodule "chanmodes/nonickchange"; /* +N */
loadmodule "chanmodes/nokick"; /* +Q */
loadmodule "chanmodes/regonlyspeak"; /* +M */
loadmodule "chanmodes/secureonly"; /* +z */
loadmodule "chanmodes/history"; /* +H */
/*** User modes ***/
@@ -185,6 +184,7 @@ 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/regnick"; /* +b ~R (ban/exempt if using registered nick) */
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) */
@@ -192,45 +192,20 @@ 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 */
/*** CAP modules ***/
loadmodule "cap/sts"; /* strict transport policy (set::ssl::sts-policy) */
loadmodule "cap/plaintext-policy"; /* plaintext-policy announce */
loadmodule "cap/link-security"; /* link-security announce */
/*** 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 "certfp"; /* SSL certificate fingerprint in /WHOIS (& more) */
loadmodule "ssl_antidos"; /* prevent SSL DoS (renegotiate floods) */
loadmodule "m_nopost"; /* Block POST commands (Firefox XPS IRC Attack) */
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 */
+100 -21
View File
@@ -15,12 +15,12 @@
// This add the /IRCOPS command: A more visual way for users
// to see which IRCOps are online.
loadmodule "ircops";
loadmodule "m_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"; }
loadmodule "m_staff";
set { staff-file "network.staff"; };
/*** Channel modes ***/
@@ -36,8 +36,7 @@ loadmodule "nocodes";
// 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";
loadmodule "hideserver";
// The antirandom module will kill or *line users that have a nick,
// ident and/or realname that is considered "random".
@@ -127,7 +126,7 @@ set {
except-hosts {
mask 192.168.*;
mask 127.*;
}
};
/* EXCEPT-WEBIRC:
* This will make antirandom not check connections from WEBIRC gateways.
@@ -136,22 +135,17 @@ set {
* 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 adds support for WHOX
// This is currently experimental!
loadmodule "m_whox";
// 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.
@@ -173,8 +167,93 @@ set {
/* Duration of ban (does not apply to block/kill) */
ban-time 4h; // For other types
}
}
};
};
// Currently incomplete and experimental:
loadmodule "chathistory";
// This provides an authentication prompt if a user is forced to
// authenticate due to a 'require authentication' block or for
// some other reason. It tells them to use SASL or type /AUTH user:pass
// See also the following article for more general information:
// https://www.unrealircd.org/docs/Authentication
// NOTE: This feature is currently experimental.
loadmodule "authprompt";
set {
authentication-prompt {
/* Enabled or not? */
enabled yes;
message "The server requires clients from this IP address to authenticate with a registered nickname and password.";
message "Please reconnect using SASL, or authenticate now by typing: /QUOTE AUTH nick:password";
/* As you can see you can have multiple 'message' items.
* It may be useful to refer to a webpage for more
* information and/or where users can register their nick.
*/
//fail-message "Authentication failed";
/* Multiple fail-message lines are also supported */
};
};
// If you use the authprompt module then you may want to raise the
// timeout in which users must complete the handshake.
// By uncommenting the following, you can raise it from 30 to 60 seconds:
// set { handshake-timeout 60s; };
/*
* 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
* Or just keep reading the default configuration below:
*/
loadmodule "reputation";
loadmodule "connthrottle";
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;
};
};
};
-21
View File
@@ -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://
+43 -47
View File
@@ -22,123 +22,119 @@
operclass locop {
permissions {
chat;
channel { operonly; override { flood; } }
client { see; }
channel { operonly; override { flood; }; };
client { see; };
immune;
self { getbaddcc; opermodes; set; }
server { opermotd; info; close; module; dns; rehash; }
route { local; }
kill { local; }
self;
server { opermotd; info; close; module; dns; rehash; };
route { local; };
kill { local; };
server-ban {
kline;
zline { local; }
}
}
}
zline { local; };
};
};
};
/* Global IRC Operator */
operclass globop {
permissions {
chat;
channel { operonly; see; override { flood; } }
channel { operonly; see; override { flood; }; };
client;
immune;
self { getbaddcc; opermodes; set; }
self;
server { opermotd; info; close; module; dns; rehash;
remote; tsctl { view; } }
remote; tsctl { view; }; };
route;
kill;
server-ban { dccdeny; shun; zline; kline; gline; }
}
}
server-ban { dccdeny; shun; zline; kline; gline; };
};
};
/* Server administrator */
operclass admin {
permissions {
chat;
channel { operonly; see; override { flood; } }
channel { operonly; see; override { flood; }; };
client;
immune;
self { getbaddcc; opermodes; set; }
self;
server { opermotd; info; close; module; dns; rehash;
remote; description; addmotd;
addomotd; tsctl { view; } }
addomotd; tsctl { view; }; };
route;
kill;
server-ban;
}
}
};
};
/* Services Admin */
operclass services-admin {
permissions {
chat;
channel { operonly; see; override { flood; } }
channel { operonly; see; override { flood; }; };
client;
immune;
self { getbaddcc; opermodes; set; }
self;
server { opermotd; info; close; module; dns; rehash;
remote; description; addmotd;
addomotd; tsctl { view; } }
addomotd; tsctl { view; }; };
route;
kill;
server-ban;
sacmd;
services;
}
}
};
};
/* Network Administrator */
operclass netadmin {
permissions {
chat;
channel { operonly; see; override { flood; } }
channel { operonly; see; override { flood; }; };
client;
immune;
self { getbaddcc; opermodes; set; }
self;
server { opermotd; info; close; module; dns; rehash;
remote; description; addmotd;
addomotd; tsctl; }
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; }
}
}
channel { operonly; see; override; };
};
};
/* 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; }
}
}
channel { operonly; see; override; };
};
};
/* 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; }
}
}
channel { operonly; see; override; };
};
};
/* 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; }
}
}
channel { operonly; see; override; };
};
};
+14 -14
View File
@@ -29,7 +29,7 @@ spamfilter {
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 {
@@ -38,7 +38,7 @@ spamfilter {
target dcc;
action block;
reason "Infected by Gaggle worm?";
}
};
spamfilter {
match-type simple;
@@ -46,7 +46,7 @@ spamfilter {
target private;
action gline;
reason "Infected by mirseed trojan: see http://www.sophos.com/virusinfo/analyses/trojmirseeda.html";
}
};
spamfilter {
match-type simple;
@@ -54,7 +54,7 @@ spamfilter {
target private;
action gline;
reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
}
};
/* Now spamfilters of type 'regex'.
@@ -69,10 +69,10 @@ spamfilter {
spamfilter {
match-type regex;
match "\x01DCC (SEND|RESUME)[ ]+\"(.+ ){20}";
target { private; channel; }
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.
@@ -80,10 +80,10 @@ spamfilter {
spamfilter {
match-type regex;
match "\x01DCC (SEND|RESUME).{225}";
target { private; channel; }
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.
@@ -100,7 +100,7 @@ spamfilter {
target private;
action block;
reason "Spamming users with an mIRC trojan. Type '/unload -rs newb' to remove the trojan.";
}
};
spamfilter {
match-type regex;
@@ -108,7 +108,7 @@ spamfilter {
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 $
@@ -119,7 +119,7 @@ spamfilter {
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 {
@@ -128,7 +128,7 @@ spamfilter {
target channel;
action gline;
reason "Attempting to use a GTBot";
}
};
/* A slightly more complex example with a partial OR matcher (|) */
spamfilter {
@@ -137,7 +137,7 @@ spamfilter {
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
@@ -151,4 +151,4 @@ spamfilter {
target dcc;
action dccblock;
reason "Infected by Gaggle worm";
}
};
@@ -1,7 +1,7 @@
##
## Bundle of CA Root Certificates
##
## Certificate data from Mozilla as of: Tue Jan 19 04:12:04 2021 GMT
## Certificate data from Mozilla as of: Wed Jan 23 04:12:09 2019 GMT
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
@@ -13,8 +13,8 @@
## an Apache+mod_ssl webserver for SSL client authentication.
## Just configure this file as the SSLCACertificateFile.
##
## Conversion done with mk-ca-bundle.pl version 1.28.
## SHA256: 3bdc63d1de27058fec943a999a2a8a01fcc6806a611b19221a7727d3d9bbbdfd
## Conversion done with mk-ca-bundle.pl version 1.27.
## SHA256: 18372117493b5b7ec006c31d966143fc95a9464a2b5f8d5188e23c5557b2292d
##
@@ -61,6 +61,30 @@ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
-----END CERTIFICATE-----
Verisign Class 3 Public Primary Certification Authority - G3
============================================================
-----BEGIN CERTIFICATE-----
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
-----END CERTIFICATE-----
Entrust.net Premium 2048 Secure Server CA
=========================================
-----BEGIN CERTIFICATE-----
@@ -106,6 +130,30 @@ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
-----END CERTIFICATE-----
AddTrust External Root
======================
-----BEGIN CERTIFICATE-----
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
-----END CERTIFICATE-----
Entrust Root Certification Authority
====================================
-----BEGIN CERTIFICATE-----
@@ -132,6 +180,87 @@ W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
-----END CERTIFICATE-----
GeoTrust Global CA
==================
-----BEGIN CERTIFICATE-----
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
Mw==
-----END CERTIFICATE-----
GeoTrust Universal CA
=====================
-----BEGIN CERTIFICATE-----
MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
P/rmMuGNG2+k5o7Y+SlIis5z/iw=
-----END CERTIFICATE-----
GeoTrust Universal CA 2
=======================
-----BEGIN CERTIFICATE-----
MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
+/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
-----END CERTIFICATE-----
Comodo AAA Services root
========================
-----BEGIN CERTIFICATE-----
@@ -367,6 +496,36 @@ KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
QBFGmh95DmK/D5fs4C8fF5Q=
-----END CERTIFICATE-----
Taiwan GRCA
===========
-----BEGIN CERTIFICATE-----
MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG
EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv
dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN
w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5
BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O
1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO
htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov
J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7
Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t
B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB
O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV
HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2
09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj
Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz
DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk
Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk
7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ
CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
-----END CERTIFICATE-----
DigiCert Assured ID Root CA
===========================
-----BEGIN CERTIFICATE-----
@@ -433,6 +592,28 @@ mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
-----END CERTIFICATE-----
Certplus Class 2 Primary CA
===========================
-----BEGIN CERTIFICATE-----
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
l7+ijrRU
-----END CERTIFICATE-----
DST Root CA X3
==============
-----BEGIN CERTIFICATE-----
@@ -515,6 +696,78 @@ DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
-----END CERTIFICATE-----
GeoTrust Primary Certification Authority
========================================
-----BEGIN CERTIFICATE-----
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
-----END CERTIFICATE-----
thawte Primary Root CA
======================
-----BEGIN CERTIFICATE-----
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
-----END CERTIFICATE-----
VeriSign Class 3 Public Primary Certification Authority - G5
============================================================
-----BEGIN CERTIFICATE-----
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
-----END CERTIFICATE-----
SecureTrust CA
==============
-----BEGIN CERTIFICATE-----
@@ -623,6 +876,29 @@ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
-----END CERTIFICATE-----
OISTE WISeKey Global Root GA CA
===============================
-----BEGIN CERTIFICATE-----
MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
-----END CERTIFICATE-----
Certigna
========
-----BEGIN CERTIFICATE-----
@@ -645,6 +921,28 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
-----END CERTIFICATE-----
Deutsche Telekom Root CA 2
==========================
-----BEGIN CERTIFICATE-----
MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
Cm26OWMohpLzGITY+9HPBVZkVw==
-----END CERTIFICATE-----
Cybertrust Global Root
======================
-----BEGIN CERTIFICATE-----
@@ -718,6 +1016,70 @@ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
-----END CERTIFICATE-----
GeoTrust Primary Certification Authority - G3
=============================================
-----BEGIN CERTIFICATE-----
MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
-----END CERTIFICATE-----
thawte Primary Root CA - G2
===========================
-----BEGIN CERTIFICATE-----
MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
-----END CERTIFICATE-----
thawte Primary Root CA - G3
===========================
-----BEGIN CERTIFICATE-----
MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
-----END CERTIFICATE-----
GeoTrust Primary Certification Authority - G2
=============================================
-----BEGIN CERTIFICATE-----
@@ -763,6 +1125,27 @@ wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
mJO37M2CYfE45k+XmCpajQ==
-----END CERTIFICATE-----
VeriSign Class 3 Public Primary Certification Authority - G4
============================================================
-----BEGIN CERTIFICATE-----
MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
-----END CERTIFICATE-----
NetLock Arany (Class Gold) Főtanúsítvány
========================================
-----BEGIN CERTIFICATE-----
@@ -787,6 +1170,38 @@ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
-----END CERTIFICATE-----
Staat der Nederlanden Root CA - G2
==================================
-----BEGIN CERTIFICATE-----
MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC
TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ
5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn
vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj
CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil
e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR
OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI
CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65
48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi
trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737
qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB
AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC
ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA
A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz
+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj
f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN
kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk
CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF
URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb
CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h
oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV
IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm
66+KAQ==
-----END CERTIFICATE-----
Hongkong Post Root CA 1
=======================
-----BEGIN CERTIFICATE-----
@@ -1418,6 +1833,30 @@ P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
-----END CERTIFICATE-----
EE Certification Centre Root CA
===============================
-----BEGIN CERTIFICATE-----
MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
dcGWxZ0=
-----END CERTIFICATE-----
D-TRUST Root Class 3 CA 2 2009
==============================
-----BEGIN CERTIFICATE-----
@@ -2174,6 +2613,37 @@ kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C
ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
-----END CERTIFICATE-----
Certinomis - Root CA
====================
-----BEGIN CERTIFICATE-----
MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAbBgNVBAMTFENlcnRpbm9taXMg
LSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMzMTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIx
EzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRD
ZXJ0aW5vbWlzIC0gUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQos
P5L2fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJflLieY6pOo
d5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQVWZUKxkd8aRi5pwP5ynap
z8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDFTKWrteoB4owuZH9kb/2jJZOLyKIOSY00
8B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09x
RLWtwHkziOC/7aOgFLScCbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE
6OXWk6RiwsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJwx3t
FvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SGm/lg0h9tkQPTYKbV
PZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4F2iw4lNVYC2vPsKD2NkJK/DAZNuH
i5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZngWVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGj
YzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I
6tNxIqSSaHh02TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF
AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/0KGRHCwPT5iV
WVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWwF6YSjNRieOpWauwK0kDDPAUw
Pk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZSg081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAX
lCOotQqSD7J6wWAsOMwaplv/8gzjqh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJ
y29SWwNyhlCVCNSNh4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9
Iff/ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8Vbtaw5Bng
DwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwjY/M50n92Uaf0yKHxDHYi
I0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nM
cyrDflOR1m749fPH0FFNjkulW+YZFzvWgQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVr
hkIGuUE=
-----END CERTIFICATE-----
OISTE WISeKey Global Root GB CA
===============================
-----BEGIN CERTIFICATE-----
@@ -2436,6 +2906,37 @@ MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1
AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA==
-----END CERTIFICATE-----
LuxTrust Global Root 2
======================
-----BEGIN CERTIFICATE-----
MIIFwzCCA6ugAwIBAgIUCn6m30tEntpqJIWe5rgV0xZ/u7EwDQYJKoZIhvcNAQELBQAwRjELMAkG
A1UEBhMCTFUxFjAUBgNVBAoMDUx1eFRydXN0IFMuQS4xHzAdBgNVBAMMFkx1eFRydXN0IEdsb2Jh
bCBSb290IDIwHhcNMTUwMzA1MTMyMTU3WhcNMzUwMzA1MTMyMTU3WjBGMQswCQYDVQQGEwJMVTEW
MBQGA1UECgwNTHV4VHJ1c3QgUy5BLjEfMB0GA1UEAwwWTHV4VHJ1c3QgR2xvYmFsIFJvb3QgMjCC
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeFl78RmOnwYoNMPIf5U2o3C/IPPIfOb9wm
Kb3FibrJgz337spbxm1Jc7TJRqMbNBM/wYlFV/TZsfs2ZUv7COJIcRHIbjuend+JZTemhfY7RBi2
xjcwYkSSl2l9QjAk5A0MiWtj3sXh306pFGxT4GHO9hcvHTy95iJMHZP1EMShduxq3sVs35a0VkBC
wGKSMKEtFZSg0iAGCW5qbeXrt77U8PEVfIvmTroTzEsnXpk8F12PgX8zPU/TPxvsXD/wPEx1bvKm
1Z3aLQdjAsZy6ZS8TEmVT4hSyNvoaYL4zDRbIvCGp4m9SAptZoFtyMhk+wHh9OHe2Z7d21vUKpkm
FRseTJIpgp7VkoGSQXAZ96Tlk0u8d2cx3Rz9MXANF5kM+Qw5GSoXtTBxVdUPrljhPS80m8+f9niF
wpN6cj5mj5wWEWCPnolvZ77gR1o7DJpni89Gxq44o/KnvObWhWszJHAiS8sIm7vI+AIpHb4gDEa/
a4ebsypmQjVGbKq6rfmYe+lQVRQxv7HaLe2ArWgk+2mr2HETMOZns4dA/Yl+8kPREd8vZS9kzl8U
ubG/Mb2HeFpZZYiq/FkySIbWTLkpS5XTdvN3JW1CHDiDTf2jX5t/Lax5Gw5CMZdjpPuKadUiDTSQ
MC6otOBttpSsvItO13D8xTiOZCXhTTmQzsmHhFhxAgMBAAGjgagwgaUwDwYDVR0TAQH/BAUwAwEB
/zBCBgNVHSAEOzA5MDcGByuBKwEBAQowLDAqBggrBgEFBQcCARYeaHR0cHM6Ly9yZXBvc2l0b3J5
Lmx1eHRydXN0Lmx1MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBT/GCh2+UgFLKGu8SsbK7JT
+Et8szAdBgNVHQ4EFgQU/xgodvlIBSyhrvErGyuyU/hLfLMwDQYJKoZIhvcNAQELBQADggIBAGoZ
FO1uecEsh9QNcH7X9njJCwROxLHOk3D+sFTAMs2ZMGQXvw/l4jP9BzZAcg4atmpZ1gDlaCDdLnIN
H2pkMSCEfUmmWjfrRcmF9dTHF5kH5ptV5AzoqbTOjFu1EVzPig4N1qx3gf4ynCSecs5U89BvolbW
7MM3LGVYvlcAGvI1+ut7MV3CwRI9loGIlonBWVx65n9wNOeD4rHh4bhY79SV5GCc8JaXcozrhAIu
ZY+kt9J/Z93I055cqqmkoCUUBpvsT34tC38ddfEz2O3OuHVtPlu5mB0xDVbYQw8wkbIEa91WvpWA
VWe+2M2D2RjuLg+GLZKecBPs3lHJQ3gCpU3I+V/EkVhGFndadKpAvAefMLmx9xIX3eP/JEAdemrR
TxgKqpAd60Ae36EeRJIQmvKN4dFLRp7oRUKX6kWZ8+xm1QL68qZKJKrezrnK+T+Tb/mjuuqlPpmt
/f97mfVl7vBZKGfXkJWkE4SphMHozs51k2MavDzq1WQfLSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc
7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31I
iyBMz2TWuJdGsE7RKlY6oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr
-----END CERTIFICATE-----
TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1
=============================================
-----BEGIN CERTIFICATE-----
@@ -2898,331 +3399,3 @@ tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS
aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde
E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0=
-----END CERTIFICATE-----
emSign Root CA - G1
===================
-----BEGIN CERTIFICATE-----
MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET
MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl
ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx
ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk
aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN
LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1
cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW
DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ
6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH
hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2
vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q
NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q
+Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih
U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx
iN66zB+Afko=
-----END CERTIFICATE-----
emSign ECC Root CA - G3
=======================
-----BEGIN CERTIFICATE-----
MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG
A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg
MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4
MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11
ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g
RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc
58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr
MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC
AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D
CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7
jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj
-----END CERTIFICATE-----
emSign Root CA - C1
===================
-----BEGIN CERTIFICATE-----
MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx
EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp
Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE
BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD
ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up
ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/
Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX
OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V
I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms
lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+
XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD
ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp
/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1
NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9
wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ
BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI=
-----END CERTIFICATE-----
emSign ECC Root CA - C3
=======================
-----BEGIN CERTIFICATE-----
MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG
A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF
Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE
BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD
ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd
6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9
SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA
B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA
MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU
ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ==
-----END CERTIFICATE-----
Hongkong Post Root CA 3
=======================
-----BEGIN CERTIFICATE-----
MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQELBQAwbzELMAkG
A1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJSG9uZyBLb25nMRYwFAYDVQQK
Ew1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25na29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2
MDMwMjI5NDZaFw00MjA2MDMwMjI5NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtv
bmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMX
SG9uZ2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz
iNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFOdem1p+/l6TWZ5Mwc50tf
jTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mIVoBc+L0sPOFMV4i707mV78vH9toxdCim
5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOe
sL4jpNrcyCse2m5FHomY2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj
0mRiikKYvLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+TtbNe/
JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZbx39ri1UbSsUgYT2u
y1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+l2oBlKN8W4UdKjk60FSh0Tlxnf0h
+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YKTE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsG
xVd7GYYKecsAyVKvQv83j+GjHno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwID
AQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e
i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEwDQYJKoZIhvcN
AQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG7BJ8dNVI0lkUmcDrudHr9Egw
W62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCkMpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWld
y8joRTnU+kLBEUx3XZL7av9YROXrgZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov
+BS5gLNdTaqX4fnkGMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDc
eqFS3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJmOzj/2ZQw
9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+l6mc1X5VTMbeRRAc6uk7
nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6cJfTzPV4e0hz5sy229zdcxsshTrD3mUcY
hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB
60PZ2Pierc+xYw5F9KBaLJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fq
dBb9HxEGmpv0
-----END CERTIFICATE-----
Entrust Root Certification Authority - G4
=========================================
-----BEGIN CERTIFICATE-----
MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV
BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu
bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1
dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1
dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT
AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv
cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv
cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D
umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV
3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds
8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ
e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7
ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X
xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV
7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8
dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW
Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n
MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q
jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht
7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK
YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt
jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+
m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW
RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA
JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G
+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT
kcpG2om3PVODLAgfi49T3f+sHw==
-----END CERTIFICATE-----
Microsoft ECC Root Certificate Authority 2017
=============================================
-----BEGIN CERTIFICATE-----
MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQgRUND
IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4
MjMxNjA0WjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw
NAYDVQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQ
BgcqhkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZRogPZnZH6
thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYbhGBKia/teQ87zvH2RPUB
eMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIy5lycFIM
+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlf
Xu5gKcs68tvWMoQZP3zVL8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaR
eNtUjGUBiudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M=
-----END CERTIFICATE-----
Microsoft RSA Root Certificate Authority 2017
=============================================
-----BEGIN CERTIFICATE-----
MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBlMQswCQYDVQQG
EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQg
UlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIw
NzE4MjMwMDIzWjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
MTYwNAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcw
ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZNt9GkMml
7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0ZdDMbRnMlfl7rEqUrQ7e
S0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw7
1VdyvD/IybLeS2v4I2wDwAW9lcfNcztmgGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+
dkC0zVJhUXAoP8XFWvLJjEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49F
yGcohJUcaDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaGYaRS
MLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6W6IYZVcSn2i51BVr
lMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4KUGsTuqwPN1q3ErWQgR5WrlcihtnJ
0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJ
ClTUFLkqqNfs+avNJVgyeY+QW5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYw
DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC
NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZCLgLNFgVZJ8og
6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OCgMNPOsduET/m4xaRhPtthH80
dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk
+ONVFT24bcMKpBLBaYVu32TxU5nhSnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex
/2kskZGT4d9Mozd2TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDy
AmH3pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGRxpl/j8nW
ZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiAppGWSZI1b7rCoucL5mxAyE
7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKT
c0QWbej09+CVgI+WXTik9KveCjCHk9hNAHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D
5KbvtwEwXlGjefVwaaZBRA+GsCyRxj3qrg+E
-----END CERTIFICATE-----
e-Szigno Root CA 2017
=====================
-----BEGIN CERTIFICATE-----
MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNVBAYTAkhVMREw
DwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUt
MjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJvb3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZa
Fw00MjA4MjIxMjA3MDZaMHExCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UE
CgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3pp
Z25vIFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtvxie+RJCx
s1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+HWyx7xf58etqjYzBhMA8G
A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSHERUI0arBeAyxr87GyZDv
vzAEwDAfBgNVHSMEGDAWgBSHERUI0arBeAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEA
tVfd14pVCzbhhkT61NlojbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxO
svxyqltZ+efcMQ==
-----END CERTIFICATE-----
certSIGN Root CA G2
===================
-----BEGIN CERTIFICATE-----
MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAlJPMRQw
EgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjAeFw0xNzAy
MDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJBgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lH
TiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAMDFdRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05
N0IwvlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZuIt4Imfk
abBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhpn+Sc8CnTXPnGFiWeI8Mg
wT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKscpc/I1mbySKEwQdPzH/iV8oScLumZfNp
dWO9lfsbl83kqK/20U6o2YpxJM02PbyWxPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91Qqh
ngLjYl/rNUssuHLoPj1PrCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732
jcZZroiFDsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fxDTvf
95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgyLcsUDFDYg2WD7rlc
z8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6CeWRgKRM+o/1Pcmqr4tTluCRVLERL
iohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud
DgQWBBSCIS1mxteg4BXrzkwJd8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOB
ywaK8SJJ6ejqkX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC
b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQlqiCA2ClV9+BB
/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0OJD7uNGzcgbJceaBxXntC6Z5
8hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+cNywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5
BiKDUyUM/FHE5r7iOZULJK2v0ZXkltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklW
atKcsWMy5WHgUyIOpwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tU
Sxfj03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZkPuXaTH4M
NMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE1LlSVHJ7liXMvGnjSG4N
0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MXQRBdJ3NghVdJIgc=
-----END CERTIFICATE-----
Trustwave Global Certification Authority
========================================
-----BEGIN CERTIFICATE-----
MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJV
UzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2
ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9u
IEF1dGhvcml0eTAeFw0xNzA4MjMxOTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJV
UzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2
ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9u
IEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALldUShLPDeS0YLOvR29
zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0XznswuvCAAJWX/NKSqIk4cXGIDtiLK0thAf
LdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4Bq
stTnoApTAbqOl5F2brz81Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9o
WN0EACyW80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotPJqX+
OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1lRtzuzWniTY+HKE40
Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfwhI0Vcnyh78zyiGG69Gm7DIwLdVcE
uE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm
+9jaJXLE9gCxInm943xZYkqcBW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqj
ifLJS3tBEW1ntwiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1UdDwEB/wQEAwIB
BjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W0OhUKDtkLSGm+J1WE2pIPU/H
PinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfeuyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0H
ZJDmHvUqoai7PF35owgLEQzxPy0QlG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla
4gt5kNdXElE1GYhBaCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5R
vbbEsLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPTMaCm/zjd
zyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qequ5AvzSxnI9O4fKSTx+O
856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxhVicGaeVyQYHTtgGJoC86cnn+OjC/QezH
Yj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu
3R3y4G5OBVixwJAWKqQ9EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP
29FpHOTKyeC2nOnOcXHebD8WpHk=
-----END CERTIFICATE-----
Trustwave Global ECC P256 Certification Authority
=================================================
-----BEGIN CERTIFICATE-----
MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER
MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI
b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD
VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy
dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1
NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj
43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm
P62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt
0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz
RM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7
-----END CERTIFICATE-----
Trustwave Global ECC P384 Certification Authority
=================================================
-----BEGIN CERTIFICATE-----
MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER
MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI
b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD
VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy
dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4
NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH
Ba5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr
/TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV
HQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn
ADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl
CrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw==
-----END CERTIFICATE-----
NAVER Global Root Certification Authority
=========================================
-----BEGIN CERTIFICATE-----
MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEMBQAwaTELMAkG
A1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRGT1JNIENvcnAuMTIwMAYDVQQD
DClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4
NDJaFw0zNzA4MTgyMzU5NTlaMGkxCzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVT
UyBQTEFURk9STSBDb3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVAiQqrDZBb
UGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH38dq6SZeWYp34+hInDEW
+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lEHoSTGEq0n+USZGnQJoViAbbJAh2+g1G7
XNr4rRVqmfeSVPc0W+m/6imBEtRTkZazkVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2
aacp+yPOiNgSnABIqKYPszuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4
Yb8ObtoqvC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHfnZ3z
VHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaGYQ5fG8Ir4ozVu53B
A0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo0es+nPxdGoMuK8u180SdOqcXYZai
cdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3aCJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejy
YhbLgGvtPe31HzClrkvJE+2KAQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNV
HQ4EFgQU0p+I36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB
Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoNqo0hV4/GPnrK
21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatjcu3cvuzHV+YwIHHW1xDBE1UB
jCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bx
hYTeodoS76TiEJd6eN4MUZeoIUCLhr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTg
E34h5prCy8VCZLQelHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTH
D8z7p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8piKCk5XQ
A76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLRLBT/DShycpWbXgnbiUSY
qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG
I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg
kpzNNIaRkPpkUZ3+/uul9XXeifdy
-----END CERTIFICATE-----
+1 -1
View File
@@ -1,6 +1,6 @@
==[ Translations ]===========================================================
In UnrealIRCd 5 we support the following translations:
In UnrealIRCd 4 we support the following translations:
* on-line documentation at https://www.unrealircd.org/docs/ (wiki!)
* help.conf
* example.conf
-155
View File
@@ -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>
+4 -20
View File
@@ -10,35 +10,19 @@ 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
export MAKE="make -j3"
export CPPFLAGS="-DFAKELAG_CONFIGURABLE"
extras/build-tests/nix/select-config $BUILDCONFIG
# 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)
./Config -quick || (tail -n 5000 config.log; echo '*** now tre:'; tail -n 5000 extras/tre-0.8.0-git/config.log; echo '** end of tre config.log **'; exit 1)
$MAKE
yes ''|make pem
make
./unrealircd module install third/dumpcmds
make install
set +x
+7 -2
View File
@@ -8,8 +8,9 @@ LOGDIR=$HOME/unrealircd/logs
CACHEDIR=$HOME/unrealircd/cache
DOCDIR=$HOME/unrealircd/doc
TMPDIR=$HOME/unrealircd/tmp
PRIVATELIBDIR=$HOME/unrealircd/lib
LIBDIR=$HOME/unrealircd/lib
PREFIXAQ="1"
MAXSENDQLENGTH="3000000"
MAXCONNECTIONS="1024"
NICKNAMEHISTORYLENGTH="2000"
DEFPERM="0600"
@@ -17,8 +18,12 @@ SSLDIR=""
REMOTEINC=""
CURLDIR=""
SHOWLISTMODES="1"
TOPICNICKISNUH=""
SHUNNOTICES=""
NOOPEROVERRIDE=""
DISABLEUSERMOD=""
OPEROVERRIDEVERIFY=""
DISABLEEXTBANSTACKING=""
GENCERTIFICATE="0"
EXTRAPARA="--enable-werror --enable-asan"
#EXTRAPARA="--enable-werror"
ADVANCED=""
+48 -44
View File
@@ -9,52 +9,56 @@ 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
# Install packages
if [[ "$OSTYPE" == "darwin"* ]]; then
brew install git || true
brew install python || true
gem install bundler || true
gem install rake || true
gem install rspec || true
else
# Linux tests both with anope and atheme services:
./run -services anope || exit 1
./run -services atheme || exit 1
sudo apt-get install git python rake -y
gem install bundler -v "~>1.0"
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 -
# Install 'ircfly'
git clone -q https://github.com/unrealircd/ircfly.git
cd ircfly
bundle install
bundle exec rake build
if [[ "$OSTYPE" == "darwin"* ]]; then
bundle exec rake install
else
sudo rake install
fi
cd ..
killall -15 unrealircd atheme-services services anope || true
# Install 'cipherscan'
git clone -q https://github.com/mozilla/cipherscan
# Install 'unrealircd-tests-old'
git clone -q https://github.com/unrealircd/unrealircd-tests-old.git
cd unrealircd-tests-old
bundle install
mv config.yaml.example config.yaml
# Start the IRC servers
cp ircdconfig/* ~/unrealircd/conf/
cd ~/unrealircd
bin/unrealircd -f hub.conf
bin/unrealircd -f irc1.conf
bin/unrealircd -f irc2.conf
cd -
# Do cipherscan test
sleep 2
cd ../extras/tests/tls
./tls-tests
cd -
# Back in unrealircd-tests-old, run the tests!
if [[ "$OSTYPE" == "darwin"* ]]; then
bundle exec rake
else
rake
fi
@@ -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 -1
View File
@@ -25,7 +25,7 @@ function build_ssl {
}
if [ ! -d extras ]; then
echo "This tool is supposed to be run from the source root, so ~/unrealircd-5.0.x or similar"
echo "This tool is supposed to be run from the source root, so ~/unrealircd-4.2.x or similar"
exit 1
fi
+17 -74
View File
@@ -1,29 +1,23 @@
echo on
rem Temporarily hardcoded:
set TARGET=Visual Studio 2019
set SHORTNAME=vs2019
rem Build script for appveyor
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"
if "%TARGET%" == "Visual Studio 2017" call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"
rem Installing tools
rem only for appveyor:
rem cinst unrar -y
rem cinst unzip -y
rem cinst innosetup -y
cinst unrar -y
cinst unzip -y
cinst innosetup -y
curl -fsS -o dlltool.exe https://www.unrealircd.org/files/dev/win/dlltool.exe
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
mkdir unrealircd-deps
cd unrealircd-deps
curl -fsS -o SetACL.exe https://www.unrealircd.org/files/dev/win/SetACL.exe
curl -fsS -o unrealircd-libraries-devel.zip https://www.unrealircd.org/files/dev/win/libs/unrealircd-libraries-devel.zip
unzip unrealircd-libraries-devel.zip
rem for appveyor: cd \projects\unrealircd
cd \users\user\worker\unreal5-w10\build
cd \projects\unrealircd
rem Now the actual build
call extras\build-tests\windows\compilecmd\%SHORTNAME%.bat
@@ -31,23 +25,18 @@ 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
nmake -f makefile.win32 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 Convert c:\dev to c:\projects\unrealircd-deps
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
sed -i "s/c:\\\\dev/c:\\\\projects\\\\unrealircd-deps/gi" src\win32\unrealinst.iss
rem Build installer file
"c:\Program Files (x86)\Inno Setup 5\iscc.exe" /Q- src\windows\unrealinst.iss
"c:\Program Files (x86)\Inno Setup 5\iscc.exe" /Q- src\win32\unrealinst.iss
if %ERRORLEVEL% NEQ 0 EXIT /B 1
rem Show some proof
@@ -55,52 +44,6 @@ 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
appveyor PushArtifact unrealircd-dev-build.exe
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
@@ -0,0 +1,21 @@
rem Build command for Visual Studio 2017
nmake -f makefile.win32 ^
LIBRESSL_INC_DIR="c:\projects\unrealircd-deps\libressl\include" ^
LIBRESSL_LIB_DIR="c:\projects\unrealircd-deps\libressl\lib" ^
SSLLIB="crypto-44.lib ssl-46.lib" ^
USE_REMOTEINC=1 ^
LIBCURL_INC_DIR="c:\projects\unrealircd-deps\curl-ssl\include" ^
LIBCURL_LIB_DIR="c:\projects\unrealircd-deps\curl-ssl\builds\libcurl-vc-x86-release-dll-ssl-dll-ipv6-sspi-obj-lib" ^
CARES_LIB_DIR="c:\projects\unrealircd-deps\c-ares\msvc\cares\dll-release" ^
CARES_INC_DIR="c:\projects\unrealircd-deps\c-ares" ^
CARESLIB="cares.lib" ^
TRE_LIB_DIR="c:\projects\unrealircd-deps\tre\win32\release" ^
TRE_INC_DIR="c:\projects\unrealircd-deps\tre" ^
TRELIB="tre.lib" ^
PCRE2_INC_DIR="c:\projects\unrealircd-deps\pcre2\include" ^
PCRE2_LIB_DIR="c:\projects\unrealircd-deps\pcre2\lib" ^
PCRE2LIB="pcre2-8.lib" ^
ARGON2_LIB_DIR="c:\projects\unrealircd-deps\argon2\vs2015\build" ^
ARGON2_INC_DIR="c:\projects\unrealircd-deps\argon2\include" ^
ARGON2LIB="Argon2RefDll.lib" %*
@@ -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.
+3 -3
View File
@@ -4,7 +4,7 @@ OUTF="curl-latest.tar.gz"
OUTD="curl-latest"
ARESPATH="`pwd`/extras/c-ares"
UNREALDIR="`pwd`"
CARESVERSION="1.17.1"
CARESVERSION="1.15.0"
LIBDIR="$1"
if [ "x$1" = "x" ]; then
@@ -18,7 +18,7 @@ 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)"
echo "(usually $HOME/unrealircd-4.2.X or something like that)"
exit 1
fi
fi
@@ -90,7 +90,7 @@ 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
--disable-thread --enable-ares=$ARESPATH --disable-ipv6
cp -R $ARESPATH/lib ares
make && make install
-18
View File
@@ -1,18 +0,0 @@
Welcome to the doxygen-generated documentation for the UnrealIRCd 5.x API.
This is intended **for developers only!**
If you are creating a 3rd party module for UnrealIRCd or are interested
in contributing to UnrealIRCd then this is the right place.
Here you should be able to find a lot of information on the data structures
and functions available to you when coding for UnrealIRCd.
## 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
-4
View File
@@ -1,4 +0,0 @@
code {
border: 1px solid #C4CFE5;
background-color: #FBFCFD;
}
-56
View File
@@ -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-->&#160;<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.
Binary file not shown.
+98
View File
@@ -0,0 +1,98 @@
# Makefile for regex.
#
# Copyright (C) 1992, 1993 Free Software Foundation, Inc.
#
# 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, 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.
version = 0.12
# You can define CPPFLAGS on the command line. Aside from system-specific
# flags, you can define:
# -DREGEX_MALLOC to use malloc/realloc/free instead of alloca.
# -DDEBUG to enable the compiled pattern disassembler and execution
# tracing; code runs substantially slower.
# -DEXTRACT_MACROS to use the macros EXTRACT_* (as opposed to
# the corresponding C procedures). If not -DDEBUG, the macros
# are used.
CPPFLAGS =
# Likewise, you can override CFLAGS to optimize, use -Wall, etc.
CFLAGS = -g
# Ditto for LDFLAGS and LOADLIBES.
LDFLAGS =
LOADLIBES =
srcdir = @srcdir@
VPATH = @srcdir@
CC = @CC@
DEFS = @DEFS@
SHELL = /bin/sh
subdirs = moo
default all:: regex.o
.PHONY: default all
regex.o: regex.c regex.h
$(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) -I. -I$(srcdir) -c $<
clean mostlyclean::
rm -f *.o
distclean:: clean
rm -f Makefile config.status
extraclean:: distclean
rm -f patch* *~* *\#* *.orig *.rej *.bak core a.out
configure: configure.in
autoconf
config.status: configure
sh configure --no-create
Makefile: Makefile.in config.status
sh config.status
makeargs = $(MFLAGS) CPPFLAGS='$(CPPFLAGS)' CFLAGS='$(CFLAGS)' CC='$(CC)' \
DEFS='$(DEFS)' LDFLAGS='$(LDFLAGS)' LOADLIBES='$(LOADLIBES)'
default all install \
mostlyclean clean distclean extraclean realclean \
TAGS check::
for d in $(subdirs); do (cd $$d; $(MAKE) $(makeargs) $@); done
.PHONY: install mostlyclean clean distclean extraclean realclean TAGS check
# Prevent GNU make 3 from overflowing arg limit on system V.
.NOEXPORT:
distfiles = AUTHORS ChangeLog COPYING INSTALL NEWS README \
*.in configure regex.c regex.h
distdir = regex-$(version)
distargs = version=$(version) distdir=../$(distdir)/$$d
dist: TAGS configure
@echo "Version numbers in: Makefile.in, ChangeLog, NEWS,"
@echo " regex.c, regex.h,"
@echo " and doc/xregex.texi (if modified)."
rm -rf $(distdir)
mkdir $(distdir)
ln $(distfiles) $(distdir)
for d in $(subdirs); do (cd $$d; $(MAKE) $(distargs) dist); done
tar czhf $(distdir).tar.Z $(distdir)
rm -rf $(distdir)
.PHONY: dist
+60
View File
@@ -0,0 +1,60 @@
This directory contains the GNU regex library. It is compliant with
POSIX.2, except for internationalization features.
See the file NEWS for a list of major changes in the current release.
See the file INSTALL for compilation instructions. (The only thing
installed is the documentation; regex.c is compiled into regex.o, but
not installed anywhere.)
The subdirectory `doc' contains a (programmers') manual for the library.
It's probably out-of-date. Improvements are welcome.
The subdirectory `test' contains the various tests we've written.
We know this code is not as fast as it might be. If you have specific
suggestions, profiling results, or other such useful information to
report, please do.
Emacs 18 is not going use this revised regex (but Emacs 19 will). If
you want to try it with Emacs 18, apply the patch at the end of this
file first.
Mail bug reports to bug-gnu-utils@prep.ai.mit.edu.
Please include an actual regular expression that fails (and the syntax
used to compile it); without that, there's no way to reproduce the bug,
so there's no way we can fix it. Even if you include a patch, also
include the regular expression in error; otherwise, we can't know for
sure what you're trying to fix.
Here is the patch to make this version of regex work with Emacs 18.
*** ORIG/search.c Tue Jan 8 13:04:55 1991
--- search.c Sun Jan 5 10:57:00 1992
***************
*** 25,26 ****
--- 25,28 ----
#include "commands.h"
+
+ #include <sys/types.h>
#include "regex.h"
***************
*** 477,479 ****
/* really needed. */
! && *(searchbuf.buffer) == (char) exactn /* first item is "exact match" */
&& searchbuf.buffer[1] + 2 == searchbuf.used) /*first is ONLY item */
--- 479,482 ----
/* really needed. */
! /* first item is "exact match" */
! && *(searchbuf.buffer) == (char) RE_EXACTN_VALUE
&& searchbuf.buffer[1] + 2 == searchbuf.used) /*first is ONLY item */
***************
*** 1273,1275 ****
searchbuf.allocated = 100;
! searchbuf.buffer = (char *) malloc (searchbuf.allocated);
searchbuf.fastmap = search_fastmap;
--- 1276,1278 ----
searchbuf.allocated = 100;
! searchbuf.buffer = (unsigned char *) malloc (searchbuf.allocated);
searchbuf.fastmap = search_fastmap;
Vendored Executable
+462
View File
@@ -0,0 +1,462 @@
#!/bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated automatically using autoconf.
# Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
# 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, 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.
# Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp] [--no-create]
# [--prefix=PREFIX] [--exec-prefix=PREFIX] [--with-PACKAGE] [TARGET]
# Ignores all args except --srcdir, --prefix, --exec-prefix, --no-create, and
# --with-PACKAGE unless this script has special code to handle it.
for arg
do
# Handle --exec-prefix with a space before the argument.
if test x$next_exec_prefix = xyes; then exec_prefix=$arg; next_exec_prefix=
# Handle --host with a space before the argument.
elif test x$next_host = xyes; then next_host=
# Handle --prefix with a space before the argument.
elif test x$next_prefix = xyes; then prefix=$arg; next_prefix=
# Handle --srcdir with a space before the argument.
elif test x$next_srcdir = xyes; then srcdir=$arg; next_srcdir=
else
case $arg in
# For backward compatibility, also recognize exact --exec_prefix.
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*)
exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e)
next_exec_prefix=yes ;;
-gas | --gas | --ga | --g) ;;
-host=* | --host=* | --hos=* | --ho=* | --h=*) ;;
-host | --host | --hos | --ho | --h)
next_host=yes ;;
-nfp | --nfp | --nf) ;;
-no-create | --no-create | --no-creat | --no-crea | --no-cre | --no-cr | --no-c | --no- | --no)
no_create=1 ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
next_prefix=yes ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*)
srcdir=`echo $arg | sed 's/[-a-z_]*=//'` ;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s)
next_srcdir=yes ;;
-with-* | --with-*)
package=`echo $arg|sed 's/-*with-//'`
# Delete all the valid chars; see if any are left.
if test -n "`echo $package|sed 's/[-a-zA-Z0-9_]*//g'`"; then
echo "configure: $package: invalid package name" >&2; exit 1
fi
eval "with_`echo $package|sed s/-/_/g`=1" ;;
*) ;;
esac
fi
done
trap 'rm -f conftest* core; exit 1' 1 3 15
rm -f conftest*
compile='${CC-cc} $CFLAGS $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1'
# A filename unique to this package, relative to the directory that
# configure is in, which we can look for to find out if srcdir is correct.
unique_file=regex.c
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
srcdirdefaulted=yes
# Try the directory containing this script, then `..'.
prog=$0
confdir=`echo $prog|sed 's%/[^/][^/]*$%%'`
test "X$confdir" = "X$prog" && confdir=.
srcdir=$confdir
if test ! -r $srcdir/$unique_file; then
srcdir=..
fi
fi
if test ! -r $srcdir/$unique_file; then
if test x$srcdirdefaulted = xyes; then
echo "configure: Can not find sources in \`${confdir}' or \`..'." 1>&2
else
echo "configure: Can not find sources in \`${srcdir}'." 1>&2
fi
exit 1
fi
# Preserve a srcdir of `.' to avoid automounter screwups with pwd.
# But we can't avoid them for `..', to make subdirectories work.
case $srcdir in
.|/*|~*) ;;
*) srcdir=`cd $srcdir; pwd` ;; # Make relative path absolute.
esac
if test -z "$CC"; then
echo checking for gcc
saveifs="$IFS"; IFS="${IFS}:"
for dir in $PATH; do
test -z "$dir" && dir=.
if test -f $dir/gcc; then
CC="gcc"
break
fi
done
IFS="$saveifs"
fi
test -z "$CC" && CC="cc"
# Find out if we are using GNU C, under whatever name.
cat > conftest.c <<EOF
#ifdef __GNUC__
yes
#endif
EOF
${CC-cc} -E conftest.c > conftest.out 2>&1
if egrep yes conftest.out >/dev/null 2>&1; then
GCC=1 # For later tests.
fi
rm -f conftest*
# Make sure to not get the incompatible SysV /etc/install and
# /usr/sbin/install, which might be in PATH before a BSD-like install,
# or the SunOS /usr/etc/install directory, or the AIX /bin/install,
# or the AFS install, which mishandles nonexistent args. (Sigh.)
if test -z "$INSTALL"; then
echo checking for install
saveifs="$IFS"; IFS="${IFS}:"
for dir in $PATH; do
test -z "$dir" && dir=.
case $dir in
/etc|/usr/sbin|/usr/etc|/usr/afsws/bin) ;;
*)
if test -f $dir/install; then
if grep dspmsg $dir/install >/dev/null 2>&1; then
: # AIX
else
INSTALL="$dir/install -c"
INSTALL_PROGRAM='$(INSTALL)'
INSTALL_DATA='$(INSTALL) -m 644'
break
fi
fi
;;
esac
done
IFS="$saveifs"
fi
INSTALL=${INSTALL-cp}
INSTALL_PROGRAM=${INSTALL_PROGRAM-'$(INSTALL)'}
INSTALL_DATA=${INSTALL_DATA-'$(INSTALL)'}
echo checking for AIX
echo checking how to run the C preprocessor
if test -z "$CPP"; then
CPP='${CC-cc} -E'
cat > conftest.c <<EOF
#include <stdio.h>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
if test -z "$err"; then
:
else
CPP=/lib/cpp
fi
rm -f conftest*
fi
cat > conftest.c <<EOF
#ifdef _AIX
yes
#endif
EOF
eval "$CPP $DEFS conftest.c > conftest.out 2>&1"
if egrep "yes" conftest.out >/dev/null 2>&1; then
DEFS="$DEFS -D_ALL_SOURCE=1"
fi
rm -f conftest*
echo checking for DYNIX/ptx libseq
cat > conftest.c <<EOF
#if defined(_SEQUENT_)
yes
#endif
EOF
eval "$CPP $DEFS conftest.c > conftest.out 2>&1"
if egrep "yes" conftest.out >/dev/null 2>&1; then
SEQUENT=1
fi
rm -f conftest*
test -n "$SEQUENT" && test -f /usr/lib/libseq.a &&
LIBS="$LIBS -lseq"
echo checking for POSIXized ISC
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
ISC=1 # If later tests want to check for ISC.
DEFS="$DEFS -D_POSIX_SOURCE=1"
if test -n "$GCC"; then
CC="$CC -posix"
else
CC="$CC -Xp"
fi
fi
echo checking for minix/config.h
cat > conftest.c <<EOF
#include <minix/config.h>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
if test -z "$err"; then
MINIX=1
fi
rm -f conftest*
# The Minix shell can't assign to the same variable on the same line!
if test -n "$MINIX"; then
DEFS="$DEFS -D_POSIX_SOURCE=1"
DEFS="$DEFS -D_POSIX_1_SOURCE=2"
DEFS="$DEFS -D_MINIX=1"
fi
echo checking for ANSI C header files
cat > conftest.c <<EOF
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
if test -z "$err"; then
# SunOS string.h does not declare mem*, contrary to ANSI.
echo '#include <string.h>' > conftest.c
eval "$CPP $DEFS conftest.c > conftest.out 2>&1"
if egrep "memchr" conftest.out >/dev/null 2>&1; then
# SGI's /bin/cc from Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
cat > conftest.c <<EOF
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#define XOR(e,f) (((e) && !(f)) || (!(e) && (f)))
int main () { int i; for (i = 0; i < 256; i++)
if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
eval $compile
if test -s conftest && (./conftest; exit) 2>/dev/null; then
DEFS="$DEFS -DSTDC_HEADERS=1"
fi
rm -f conftest*
fi
rm -f conftest*
fi
rm -f conftest*
for hdr in string.h
do
trhdr=HAVE_`echo $hdr | tr '[a-z]./' '[A-Z]__'`
echo checking for ${hdr}
cat > conftest.c <<EOF
#include <${hdr}>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
if test -z "$err"; then
DEFS="$DEFS -D${trhdr}=1"
fi
rm -f conftest*
done
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo checking for working alloca.h
cat > conftest.c <<EOF
#include <alloca.h>
main() { exit(0); }
t() { char *p = alloca(2 * sizeof(int)); }
EOF
if eval $compile; then
DEFS="$DEFS -DHAVE_ALLOCA_H=1"
fi
rm -f conftest*
decl="#ifdef __GNUC__
#define alloca __builtin_alloca
#else
#if HAVE_ALLOCA_H
#include <alloca.h>
#else
#ifdef _AIX
#pragma alloca
#else
char *alloca ();
#endif
#endif
#endif
"
echo checking for alloca
cat > conftest.c <<EOF
$decl
main() { exit(0); }
t() { char *p = (char *) alloca(1); }
EOF
if eval $compile; then
:
else
alloca_missing=1
fi
rm -f conftest*
if test -n "$alloca_missing"; then
# The SVR3 libPW and SVR4 libucb both contain incompatible functions
# that cause trouble. Some versions do not even contain alloca or
# contain a buggy version. If you still want to use their alloca,
# use ar to extract alloca.o from them instead of compiling alloca.c.
ALLOCA=alloca.o
fi
prog='/* Ultrix mips cc rejects this. */
typedef int charset[2]; const charset x;
/* SunOS 4.1.1 cc rejects this. */
char const *const *p;
char **p2;
/* HPUX 7.0 cc rejects these. */
++p;
p2 = (char const* const*) p;'
echo checking for working const
cat > conftest.c <<EOF
main() { exit(0); }
t() { $prog }
EOF
if eval $compile; then
:
else
DEFS="$DEFS -Dconst="
fi
rm -f conftest*
if test -z "$prefix"
then
echo checking for gcc to derive installation directory prefix
saveifs="$IFS"; IFS="$IFS:"
for dir in $PATH; do
test -z "$dir" && dir=.
if test $dir != . && test -f $dir/gcc; then
# Not all systems have dirname.
prefix=`echo $dir|sed 's%/[^/][^/]*$%%'`
break
fi
done
IFS="$saveifs"
fi
if test -n "$prefix"; then
test -z "$exec_prefix" && exec_prefix='${prefix}'
prsub="s%^prefix\\([ ]*\\)=\\([ ]*\\).*$%prefix\\1=\\2$prefix%"
fi
if test -n "$exec_prefix"; then
prsub="$prsub
s%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%\
exec_prefix\\1=\\2$exec_prefix%"
fi
trap 'rm -f config.status; exit 1' 1 3 15
echo creating config.status
rm -f config.status
cat > config.status <<EOF
#!/bin/sh
# Generated automatically by configure.
# Run this file to recreate the current configuration.
# This directory was configured as follows,
# on host `(hostname || uname -n) 2>/dev/null`:
#
# $0 $*
for arg
do
case "\$arg" in
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
exec /bin/sh $0 $* ;;
*) echo "Usage: config.status --recheck" 2>&1; exit 1 ;;
esac
done
trap 'rm -f Makefile; exit 1' 1 3 15
CC='$CC'
INSTALL='$INSTALL'
INSTALL_PROGRAM='$INSTALL_PROGRAM'
INSTALL_DATA='$INSTALL_DATA'
CPP='$CPP'
ALLOCA='$ALLOCA'
LIBS='$LIBS'
srcdir='$srcdir'
DEFS='$DEFS'
prefix='$prefix'
exec_prefix='$exec_prefix'
prsub='$prsub'
EOF
cat >> config.status <<\EOF
top_srcdir=$srcdir
for file in .. Makefile; do if [ "x$file" != "x.." ]; then
srcdir=$top_srcdir
# Remove last slash and all that follows it. Not all systems have dirname.
dir=`echo $file|sed 's%/[^/][^/]*$%%'`
if test "$dir" != "$file"; then
test "$top_srcdir" != . && srcdir=$top_srcdir/$dir
test ! -d $dir && mkdir $dir
fi
echo creating $file
rm -f $file
echo "# Generated automatically from `echo $file|sed 's|.*/||'`.in by configure." > $file
sed -e "
$prsub
s%@CC@%$CC%g
s%@INSTALL@%$INSTALL%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
s%@CPP@%$CPP%g
s%@ALLOCA@%$ALLOCA%g
s%@LIBS@%$LIBS%g
s%@srcdir@%$srcdir%g
s%@DEFS@%$DEFS%
" $top_srcdir/${file}.in >> $file
fi; done
exit 0
EOF
chmod +x config.status
test -n "$no_create" || ./config.status
+23
View File
@@ -0,0 +1,23 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(regex.c)
AC_PROG_CC
AC_PROG_INSTALL
dnl I'm not sure if AC_AIX and AC_DYNIX_SEQ are really necessary. The
dnl Autoconf documentation isn't specific about which BSD functions they
dnl provide.
AC_AIX
AC_DYNIX_SEQ
AC_ISC_POSIX
AC_MINIX
AC_STDC_HEADERS
AC_HAVE_HEADERS(string.h)
AC_ALLOCA
AC_CONST
AC_PREFIX(gcc)
AC_OUTPUT(Makefile doc/Makefile test/Makefile)
+4
View File
@@ -0,0 +1,4 @@
clean:
default:
all:
echo "."
+4940
View File
File diff suppressed because it is too large Load Diff
+490
View File
@@ -0,0 +1,490 @@
/* Definitions for data structures and routines for the regular
expression library, version 0.12.
Copyright (C) 1985, 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
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, 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 __REGEXP_LIBRARY_H__
#define __REGEXP_LIBRARY_H__
/* POSIX says that <sys/types.h> must be included (by the caller) before
<regex.h>. */
#ifdef VMS
/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
should be there. */
#include <stddef.h>
#endif
/* The following bits are used to determine the regexp syntax we
recognize. The set/not-set meanings are chosen so that Emacs syntax
remains the value 0. The bits are given in alphabetical order, and
the definitions shifted by one from the previous bit; thus, when we
add or remove a bit, only one other definition need change. */
typedef unsigned reg_syntax_t;
/* If this bit is not set, then \ inside a bracket expression is literal.
If set, then such a \ quotes the following character. */
#define RE_BACKSLASH_ESCAPE_IN_LISTS (1)
/* If this bit is not set, then + and ? are operators, and \+ and \? are
literals.
If set, then \+ and \? are operators and + and ? are literals. */
#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
/* If this bit is set, then character classes are supported. They are:
[:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
[:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
If not set, then character classes are not supported. */
#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
/* If this bit is set, then ^ and $ are always anchors (outside bracket
expressions, of course).
If this bit is not set, then it depends:
^ is an anchor if it is at the beginning of a regular
expression or after an open-group or an alternation operator;
$ is an anchor if it is at the end of a regular expression, or
before a close-group or an alternation operator.
This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
POSIX draft 11.2 says that * etc. in leading positions is undefined.
We already implemented a previous draft which made those constructs
invalid, though, so we haven't changed the code back. */
#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
/* If this bit is set, then special characters are always special
regardless of where they are in the pattern.
If this bit is not set, then special characters are special only in
some contexts; otherwise they are ordinary. Specifically,
* + ? and intervals are only special when not after the beginning,
open-group, or alternation operator. */
#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
/* If this bit is set, then *, +, ?, and { cannot be first in an re or
immediately after an alternation or begin-group operator. */
#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
/* If this bit is set, then . matches newline.
If not set, then it doesn't. */
#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
/* If this bit is set, then . doesn't match NUL.
If not set, then it does. */
#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
/* If this bit is set, nonmatching lists [^...] do not match newline.
If not set, they do. */
#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
/* If this bit is set, either \{...\} or {...} defines an
interval, depending on RE_NO_BK_BRACES.
If not set, \{, \}, {, and } are literals. */
#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
/* If this bit is set, +, ? and | aren't recognized as operators.
If not set, they are. */
#define RE_LIMITED_OPS (RE_INTERVALS << 1)
/* If this bit is set, newline is an alternation operator.
If not set, newline is literal. */
#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
/* If this bit is set, then `{...}' defines an interval, and \{ and \}
are literals.
If not set, then `\{...\}' defines an interval. */
#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
/* If this bit is set, (...) defines a group, and \( and \) are literals.
If not set, \(...\) defines a group, and ( and ) are literals. */
#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
/* If this bit is set, then \<digit> matches <digit>.
If not set, then \<digit> is a back-reference. */
#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
/* If this bit is set, then | is an alternation operator, and \| is literal.
If not set, then \| is an alternation operator, and | is literal. */
#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
/* If this bit is set, then an ending range point collating higher
than the starting range point, as in [z-a], is invalid.
If not set, then when ending range point collates higher than the
starting range point, the range is ignored. */
#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
/* If this bit is set, then an unmatched ) is ordinary.
If not set, then an unmatched ) is invalid. */
#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
/* This global variable defines the particular regexp syntax to use (for
some interfaces). When a regexp is compiled, the syntax used is
stored in the pattern buffer, so changing this does not affect
already-compiled regexps. */
extern reg_syntax_t re_syntax_options;
/* Define combinations of the above bits for the standard possibilities.
(The [[[ comments delimit what gets put into the Texinfo file, so
don't delete them!) */
/* [[[begin syntaxes]]] */
#define RE_SYNTAX_EMACS 0
#define RE_SYNTAX_AWK \
(RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
| RE_NO_BK_PARENS | RE_NO_BK_REFS \
| RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
| RE_UNMATCHED_RIGHT_PAREN_ORD)
#define RE_SYNTAX_POSIX_AWK \
(RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS)
#define RE_SYNTAX_GREP \
(RE_BK_PLUS_QM | RE_CHAR_CLASSES \
| RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
| RE_NEWLINE_ALT)
#define RE_SYNTAX_EGREP \
(RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
| RE_NEWLINE_ALT | RE_NO_BK_PARENS \
| RE_NO_BK_VBAR)
#define RE_SYNTAX_POSIX_EGREP \
(RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */
#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
/* Syntax bits common to both basic and extended POSIX regex syntax. */
#define _RE_SYNTAX_POSIX_COMMON \
(RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
| RE_INTERVALS | RE_NO_EMPTY_RANGES)
#define RE_SYNTAX_POSIX_BASIC \
(_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this
isn't minimal, since other operators, such as \`, aren't disabled. */
#define RE_SYNTAX_POSIX_MINIMAL_BASIC \
(_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
#define RE_SYNTAX_POSIX_EXTENDED \
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
| RE_NO_BK_PARENS | RE_NO_BK_VBAR \
| RE_UNMATCHED_RIGHT_PAREN_ORD)
/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS
replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */
#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
| RE_NO_BK_PARENS | RE_NO_BK_REFS \
| RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
/* [[[end syntaxes]]] */
/* Maximum number of duplicates an interval can allow. Some systems
(erroneously) define this in other header files, but we want our
value, so remove any previous define. */
#ifdef RE_DUP_MAX
#undef RE_DUP_MAX
#endif
#define RE_DUP_MAX ((1 << 15) - 1)
/* POSIX `cflags' bits (i.e., information for `regcomp'). */
/* If this bit is set, then use extended regular expression syntax.
If not set, then use basic regular expression syntax. */
#define REG_EXTENDED 1
/* If this bit is set, then ignore case when matching.
If not set, then case is significant. */
#define REG_ICASE (REG_EXTENDED << 1)
/* If this bit is set, then anchors do not match at newline
characters in the string.
If not set, then anchors do match at newlines. */
#define REG_NEWLINE (REG_ICASE << 1)
/* If this bit is set, then report only success or fail in regexec.
If not set, then returns differ between not matching and errors. */
#define REG_NOSUB (REG_NEWLINE << 1)
/* POSIX `eflags' bits (i.e., information for regexec). */
/* If this bit is set, then the beginning-of-line operator doesn't match
the beginning of the string (presumably because it's not the
beginning of a line).
If not set, then the beginning-of-line operator does match the
beginning of the string. */
#define REG_NOTBOL 1
/* Like REG_NOTBOL, except for the end-of-line. */
#define REG_NOTEOL (1 << 1)
/* If any error codes are removed, changed, or added, update the
`re_error_msg' table in regex.c. */
typedef enum
{
REG_NOERROR = 0, /* Success. */
REG_NOMATCH, /* Didn't find a match (for regexec). */
/* POSIX regcomp return error codes. (In the order listed in the
standard.) */
REG_BADPAT, /* Invalid pattern. */
REG_ECOLLATE, /* Not implemented. */
REG_ECTYPE, /* Invalid character class name. */
REG_EESCAPE, /* Trailing backslash. */
REG_ESUBREG, /* Invalid back reference. */
REG_EBRACK, /* Unmatched left bracket. */
REG_EPAREN, /* Parenthesis imbalance. */
REG_EBRACE, /* Unmatched \{. */
REG_BADBR, /* Invalid contents of \{\}. */
REG_ERANGE, /* Invalid range end. */
REG_ESPACE, /* Ran out of memory. */
REG_BADRPT, /* No preceding re for repetition op. */
/* Error codes we've added. */
REG_EEND, /* Premature end. */
REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */
REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */
} reg_errcode_t;
/* This data structure represents a compiled pattern. Before calling
the pattern compiler, the fields `buffer', `allocated', `fastmap',
`translate', and `no_sub' can be set. After the pattern has been
compiled, the `re_nsub' field is available. All other fields are
private to the regex routines. */
struct re_pattern_buffer
{
/* [[[begin pattern_buffer]]] */
/* Space that holds the compiled pattern. It is declared as
`unsigned char *' because its elements are
sometimes used as array indexes. */
unsigned char *buffer;
/* Number of bytes to which `buffer' points. */
unsigned long allocated;
/* Number of bytes actually used in `buffer'. */
unsigned long used;
/* Syntax setting with which the pattern was compiled. */
reg_syntax_t syntax;
/* Pointer to a fastmap, if any, otherwise zero. re_search uses
the fastmap, if there is one, to skip over impossible
starting points for matches. */
char *fastmap;
/* Either a translate table to apply to all characters before
comparing them, or zero for no translation. The translation
is applied to a pattern when it is compiled and to a string
when it is matched. */
char *translate;
/* Number of subexpressions found by the compiler. */
size_t re_nsub;
/* Zero if this pattern cannot match the empty string, one else.
Well, in truth it's used only in `re_search_2', to see
whether or not we should use the fastmap, so we don't set
this absolutely perfectly; see `re_compile_fastmap' (the
`duplicate' case). */
unsigned can_be_null : 1;
/* If REGS_UNALLOCATED, allocate space in the `regs' structure
for `max (RE_NREGS, re_nsub + 1)' groups.
If REGS_REALLOCATE, reallocate space if necessary.
If REGS_FIXED, use what's there. */
#define REGS_UNALLOCATED 0
#define REGS_REALLOCATE 1
#define REGS_FIXED 2
unsigned regs_allocated : 2;
/* Set to zero when `regex_compile' compiles a pattern; set to one
by `re_compile_fastmap' if it updates the fastmap. */
unsigned fastmap_accurate : 1;
/* If set, `re_match_2' does not return information about
subexpressions. */
unsigned no_sub : 1;
/* If set, a beginning-of-line anchor doesn't match at the
beginning of the string. */
unsigned not_bol : 1;
/* Similarly for an end-of-line anchor. */
unsigned not_eol : 1;
/* If true, an anchor at a newline matches. */
unsigned newline_anchor : 1;
/* [[[end pattern_buffer]]] */
};
typedef struct re_pattern_buffer regex_t;
/* search.c (search_buffer) in Emacs needs this one opcode value. It is
defined both in `regex.c' and here. */
#define RE_EXACTN_VALUE 1
/* Type for byte offsets within the string. POSIX mandates this. */
typedef int regoff_t;
/* This is the structure we store register match data in. See
regex.texinfo for a full description of what registers match. */
struct re_registers
{
unsigned num_regs;
regoff_t *start;
regoff_t *end;
};
/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
`re_match_2' returns information about at least this many registers
the first time a `regs' structure is passed. */
#ifndef RE_NREGS
#define RE_NREGS 30
#endif
/* POSIX specification for registers. Aside from the different names than
`re_registers', POSIX uses an array of structures, instead of a
structure of arrays. */
typedef struct
{
regoff_t rm_so; /* Byte offset from string's start to substring's start. */
regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
} regmatch_t;
/* Declarations for routines. */
/* To avoid duplicating every routine declaration -- once with a
prototype (if we are ANSI), and once without (if we aren't) -- we
use the following macro to declare argument types. This
unfortunately clutters up the declarations a bit, but I think it's
worth it. */
#if __STDC__
#define _RE_ARGS(args) args
#else /* not __STDC__ */
#define _RE_ARGS(args) ()
#endif /* not __STDC__ */
/* Sets the current default syntax to SYNTAX, and return the old syntax.
You can also simply assign to the `re_syntax_options' variable. */
extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
/* Compile the regular expression PATTERN, with length LENGTH
and syntax given by the global `re_syntax_options', into the buffer
BUFFER. Return NULL if successful, and an error string if not. */
extern const char *re_compile_pattern
_RE_ARGS ((const char *pattern, int length,
struct re_pattern_buffer *buffer));
/* Compile a fastmap for the compiled pattern in BUFFER; used to
accelerate searches. Return 0 if successful and -2 if was an
internal error. */
extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
/* Search in the string STRING (with length LENGTH) for the pattern
compiled into BUFFER. Start searching at position START, for RANGE
characters. Return the starting position of the match, -1 for no
match, or -2 for an internal error. Also return register
information in REGS (if REGS and BUFFER->no_sub are nonzero). */
extern int re_search
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
int length, int start, int range, struct re_registers *regs));
/* Like `re_search', but search in the concatenation of STRING1 and
STRING2. Also, stop searching at index START + STOP. */
extern int re_search_2
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
int start, int range, struct re_registers *regs, int stop));
/* Like `re_search', but return how many characters in STRING the regexp
in BUFFER matched, starting at position START. */
extern int re_match
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
int length, int start, struct re_registers *regs));
/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
extern int re_match_2
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
int start, struct re_registers *regs, int stop));
/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
ENDS. Subsequent matches using BUFFER and REGS will use this memory
for recording register information. STARTS and ENDS must be
allocated with malloc, and must each be at least `NUM_REGS * sizeof
(regoff_t)' bytes long.
If NUM_REGS == 0, then subsequent matches should allocate their own
register data.
Unless this function is called, the first search or match using
PATTERN_BUFFER will allocate its own register data, without
freeing the old data. */
extern void re_set_registers
_RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,
unsigned num_regs, regoff_t *starts, regoff_t *ends));
/* 4.2 bsd compatibility. */
extern char *re_comp _RE_ARGS ((const char *));
extern int re_exec _RE_ARGS ((const char *));
/* POSIX compatibility. */
extern int regcomp _RE_ARGS ((regex_t *preg, const char *pattern, int cflags));
extern int regexec
_RE_ARGS ((const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags));
extern size_t regerror
_RE_ARGS ((int errcode, const regex_t *preg, char *errbuf,
size_t errbuf_size));
extern void regfree _RE_ARGS ((regex_t *preg));
#endif /* not __REGEXP_LIBRARY_H__ */
/*
Local variables:
make-backup-files: t
version-control: t
trim-versions-without-asking: nil
End:
*/
+3 -2
View File
@@ -1,4 +1,4 @@
# AppArmor profile for UnrealIRCd 5
# AppArmor profile for UnrealIRCd 4.0.16+
#
# Note that you may still see some DENIED warnings in logs with
# operation="chmod". These are harmless and can be safely ignored.
@@ -17,7 +17,8 @@
@{HOME}/unrealircd/conf/ r,
@{HOME}/unrealircd/conf/** r,
@{HOME}/unrealircd/data/** rw,
@{HOME}/unrealircd/data/ircd.tune rw,
@{HOME}/unrealircd/data/unrealircd.pid rw,
@{HOME}/unrealircd/lib/*.so* mr,
@{HOME}/unrealircd/logs/* rw,
@{HOME}/unrealircd/modules/**.so r,
Submodule extras/tests/ircfly added at 3a0301d13f
@@ -1,14 +1,20 @@
Target: 127.0.0.1:5901
Target: 127.0.0.1:5900
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
prio ciphersuite protocols pfs curves
1 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
2 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
3 ECDHE-RSA-AES256-SHA384 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
4 ECDHE-RSA-AES128-SHA256 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
5 ECDHE-RSA-AES256-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
6 ECDHE-RSA-AES128-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
7 AES256-GCM-SHA384 TLSv1.2 None None
8 AES128-GCM-SHA256 TLSv1.2 None None
9 AES256-SHA256 TLSv1.2 None None
10 AES128-SHA256 TLSv1.2 None None
11 AES256-SHA TLSv1,TLSv1.1,TLSv1.2 None None
12 AES128-SHA TLSv1,TLSv1.1,TLSv1.2 None None
Certificate: untrusted, 384 bits, ecdsa-with-SHA256 signature
Certificate: untrusted, 4096 bits, sha256WithRSAEncryption signature
TLS ticket lifetime hint: None
NPN protocols: None
OCSP stapling: not supported
@@ -0,0 +1,33 @@
Target: 127.0.0.1:5900
prio ciphersuite protocols pfs curves
1 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
2 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
3 ECDHE-RSA-AES256-SHA384 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
4 ECDHE-RSA-AES256-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
5 ECDHE-RSA-AES128-SHA256 TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
6 ECDHE-RSA-AES128-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-521,521bits secp521r1,secp384r1,prime256v1
7 AES256-GCM-SHA384 TLSv1.2 None None
8 AES128-GCM-SHA256 TLSv1.2 None None
9 AES256-SHA256 TLSv1.2 None None
10 AES128-SHA256 TLSv1.2 None None
11 AES256-SHA TLSv1,TLSv1.1,TLSv1.2 None None
12 AES128-SHA TLSv1,TLSv1.1,TLSv1.2 None None
Certificate: untrusted, 4096 bits, sha256WithRSAEncryption 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
@@ -0,0 +1,33 @@
Target: 127.0.0.1:5900
prio ciphersuite protocols pfs curves
1 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1
2 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1
3 ECDHE-RSA-AES256-SHA384 TLSv1.2 ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1
4 ECDHE-RSA-AES256-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1
5 ECDHE-RSA-AES128-SHA256 TLSv1.2 ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1
6 ECDHE-RSA-AES128-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-256,256bits prime256v1,secp521r1,brainpoolP512r1,brainpoolP384r1,secp384r1,brainpoolP256r1,secp256k1,sect571r1,sect571k1,sect409k1,sect409r1,sect283k1,sect283r1
7 AES256-GCM-SHA384 TLSv1.2 None None
8 AES128-GCM-SHA256 TLSv1.2 None None
9 AES256-SHA256 TLSv1.2 None None
10 AES128-SHA256 TLSv1.2 None None
11 AES256-SHA TLSv1,TLSv1.1,TLSv1.2 None None
12 AES128-SHA TLSv1,TLSv1.1,TLSv1.2 None None
Certificate: untrusted, 4096 bits, sha256WithRSAEncryption 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
+5 -14
View File
@@ -9,15 +9,9 @@ function fail()
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
if [ -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
@@ -27,16 +21,13 @@ $CIPHERSCAN --help >/dev/null || exit 1
# 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
$CIPHERSCAN --no-colors 127.0.0.1:5900|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
for f in cipherscan_profiles/baseline*txt cipherscan_profiles/$BUILDCONFIG.txt
do
diff -uab $f cipherscan.test.txt 1>/dev/null 2>&1
if [ "$?" -eq 0 ]; then
@@ -73,7 +64,7 @@ fi
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) &&
(echo QUIT|$OPENSSL s_client -connect 127.0.0.1:5900 -cipher $cipher) &&
fail "UnrealIRCd allowed us to connect with cipher $cipher, BAD!"
done
@@ -81,7 +72,7 @@ done
for protocol in ssl2 ssl3
do
echo "Testing protocol $protocol (MUST FAIL!).."
(echo QUIT|$OPENSSL s_client -connect 127.0.0.1:5901 -$protocol) &&
(echo QUIT|$OPENSSL s_client -connect 127.0.0.1:5900 -$protocol) &&
fail "UnrealIRCd allowed us to connect with protocol $protocol, BAD!"
done
BIN
View File
Binary file not shown.
-105
View File
@@ -1,105 +0,0 @@
#!/bin/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 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
if ! wget --help 1>/dev/null 2>&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
# 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
# Download the install script
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"
# 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."
echo "Consider running 'sudo apt install gpg' or 'yum install gnupg2'"
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 $*
+40
View File
@@ -0,0 +1,40 @@
/************************************************************************
* Unreal Internet Relay Chat Daemon, include/auth.h
* Copyright (C) 2001 Carsten V. Munk (stskeeps@tspre.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$
*/
typedef struct {
char *data;
short type;
} anAuthStruct;
#define AUTHTYPE_PLAINTEXT 0
#define AUTHTYPE_UNIXCRYPT 1
#define AUTHTYPE_MD5 2
#define AUTHTYPE_SHA1 3
#define AUTHTYPE_SSL_CLIENTCERT 4
#define AUTHTYPE_RIPEMD160 5
#define AUTHTYPE_SSL_CLIENTCERTFP 6
#define AUTHTYPE_BCRYPT 7
#define AUTHTYPE_SPKIFP 8
#define AUTHTYPE_ARGON2 9
#ifndef HAVE_CRYPT
#define crypt DES_crypt
#endif
+12 -1
View File
@@ -26,7 +26,18 @@
#define MODEBUFLEN 200
#define ChannelExists(n) (find_channel(n, NULL))
#define CANNOT_SEND_MODERATED 1
#define CANNOT_SEND_NOPRIVMSGS 2
#define CANNOT_SEND_BAN 4
#define CANNOT_SEND_MODREG 6
#define CANNOT_SEND_SWEAR 7 /* This isn't actually used here */
#define CANNOT_SEND_NONOTICE 8
#define NullChn ((aChannel *)0)
#define ChannelExists(n) (find_channel(n, NullChn) != NullChn)
#define IsULine(sptr) (sptr->flags & FLAGS_ULINE)
/* NOTE: Timestamps will be added to MODE-commands, so never make
* RESYNCMODES and MODEPARAMS higher than MAXPARA-3. DALnet servers
+63
View File
@@ -0,0 +1,63 @@
/************************************************************************
* Unreal Internet Relay Chat Daemon, include/class.h
* Copyright (C) 1990 Darren Reed
*
* 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 __class_include__
#define __class_include__
typedef struct Class {
int class;
int conFreq;
int pingFreq;
int maxLinks;
long maxSendq;
int links;
struct Class *next;
} aClass;
#define Class(x) ((x)->class)
#define ConFreq(x) ((x)->conFreq)
#define PingFreq(x) ((x)->pingFreq)
#define MaxLinks(x) ((x)->maxLinks)
#define MaxSendq(x) ((x)->maxSendq)
#define Links(x) ((x)->links)
#define ConfLinks(x) (Class(x)->links)
#define ConfMaxLinks(x) (Class(x)->maxLinks)
#define ConfClass(x) (Class(x)->class)
#define ConfConFreq(x) (Class(x)->conFreq)
#define ConfPingFreq(x) (Class(x)->pingFreq)
#define ConfSendq(x) (Class(x)->maxSendq)
#define FirstClass() classes
#define NextClass(x) ((x)->next)
extern aClass *classes;
extern aClass *find_class(int);
extern int get_conf_class(aConfItem *);
extern int get_client_class(aClient *);
extern int get_client_ping(aClient *);
extern int get_con_freq(aClass *);
extern void add_class(int, int, int, int, long);
extern void check_class(void);
extern void initclass(void);
#endif /* __class_include__ */
+80 -12
View File
@@ -25,16 +25,19 @@
#include <time.h>
#ifdef _WIN32
#include <malloc.h>
#define NTDDI_VERSION 0x0501
#define _WIN32_WINNT 0x0501
#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#include <io.h>
#include <direct.h>
#endif
#include "types.h"
#include "config.h"
#ifndef _WIN32
#ifdef PARAMH
#include <sys/param.h>
#endif
#ifndef _WIN32
#include <stdbool.h>
#else
typedef int bool;
@@ -57,12 +60,6 @@ typedef int bool;
#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)
@@ -88,6 +85,19 @@ typedef int bool;
#define UNSURE (2)
#endif
#if 0
#ifndef MALLOCH
char *malloc(), *calloc();
void free();
#else
#include MALLOCH
#endif
#endif
#define TS time_t
extern int match(const char *, const char *);
#define mycmp(a,b) \
( (toupper(a[0])!=toupper(b[0])) || smycmp((a)+1,(b)+1) )
extern int smycmp(const char *, const char *);
@@ -95,13 +105,34 @@ extern int smycmp(const char *, const char *);
extern int myncmp(const char *, const char *, int);
#endif
#ifdef NEED_STRTOK
extern char *strtok2(char *, char *);
#endif
#ifdef NEED_STRTOKEN
extern char *strtoken(char **, char *, char *);
#endif
#ifdef NEED_INET_ADDR
extern unsigned long inet_addr(char *);
#endif
#if defined(NEED_INET_NTOA) || defined(NEED_INET_NETOF) && !defined(_WIN32)
#include <netinet/in.h>
#endif
#ifdef NEED_INET_NTOA
extern char *inet_ntoa(struct in_addr);
#endif
#ifndef HAVE_INET_NTOP
const char *inet_ntop(int, const void *, char *, size_t);
#endif
#ifndef HAVE_INET_PTON
int inet_pton(int af, const char *src, void *dst);
#endif
extern MODVAR int global_count, max_global_count;
extern char *myctime(time_t);
#ifdef _WIN32
extern int gettimeofday(struct timeval *tp, void *tzp);
#endif
extern char *strtoken(char **, char *, char *);
#define PRECISE_CHECK
@@ -113,10 +144,19 @@ extern int gettimeofday(struct timeval *tp, void *tzp);
#endif
extern MODVAR u_char tolowertab[], touppertab[];
#if defined(NICK_GB2312) || defined(NICK_GBK) || defined(NICK_GBK_JAP)
#define USE_LOCALE
#include <ctype.h>
#endif
#ifndef USE_LOCALE
#undef tolower
#define tolower(c) (tolowertab[(u_char)(c)])
#undef toupper
#define toupper(c) (touppertab[(u_char)(c)])
#undef isalpha
#undef isdigit
#undef isxdigit
@@ -129,6 +169,7 @@ extern MODVAR u_char tolowertab[], touppertab[];
#undef isupper
#undef isspace
#undef iscntrl
#endif
extern MODVAR unsigned char char_atribs[];
#define PRINT 1
@@ -148,6 +189,7 @@ extern MODVAR unsigned char char_atribs[];
#endif
#define isallowed(c) (char_atribs[(u_char)(c)]&ALLOW)
#ifndef USE_LOCALE
#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)
@@ -161,8 +203,34 @@ extern MODVAR unsigned char char_atribs[];
#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)))
#endif
#define iswseperator(c) (!isalnum(c) && !((u_char)c >= 128))
#ifndef MALLOCD
#define MyFree free
#define MyMalloc malloc
#define MyRealloc realloc
#else
#define MyFree(x) do {debug(DEBUG_MALLOC, "%s:%i: free %02x", __FILE__, __LINE__, x); free(x); } while(0)
#define MyMalloc(x) StsMalloc(x, __FILE__, __LINE__)
#define MyRealloc realloc
static char *StsMalloc(size_t size, char *file, long line)
{
void *x;
x = malloc(size);
debug(DEBUG_MALLOC, "%s:%i: malloc %02x", file, line, x);
return x;
}
#endif
#define safestrdup(x,y) do { if (x) MyFree(x); if (!(y)) x = NULL; else x = strdup(y); } while(0)
#define safestrldup(x,y,sz) do { if (x) MyFree(x); if (!y) x = NULL; else x = strldup(y,sz); } while(0)
#define safefree(x) do { if (x) MyFree(x); x = NULL; } while(0)
extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
/*
* Protocol support text. DO NO CHANGE THIS unless you know what
* you are doing.
@@ -206,7 +274,7 @@ 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;
extern MODVAR TS now;
#ifndef _WIN32
#if defined(__STDC__)
+218 -32
View File
@@ -68,9 +68,38 @@
# define MODULE_SUFFIX ".dll"
#endif
/*
* If channel mode is +z, only send to secure links & people
*
*/
#undef SECURECHANMSGSONLYGOTOSECURE
/* If you want to support chinese and/or japanese nicks */
#undef NICK_GB2312
#undef NICK_GBK
#undef NICK_GBK_JAP
/* Permit remote /rehash */
#define REMOTE_REHASH
/*
* Special remote include caching, see this Changelog item:
* - Added special caching of remote includes. When a remote include fails to
* load (for example when the webserver is down), then the most recent
* version of that remote include will be used, and the ircd will still boot
* and be able to rehash. Even though this is quite a simple feature, it
* can make a key difference when deciding to roll out remote includes on
* your network. Previously, servers would be unable to boot or rehash when
* the webserver was down, which would be a big problem (often unacceptable).
* The latest version of fetched urls are cached in the cache/ directory as
* cache/<md5 hash of url>.
* Obviously, if there's no 'latest version' and an url fails, the ircd will
* still not be able to boot. This would be the case if you added or changed
* the path of a remote include and it's trying to fetch it for the first time.
* There usually is no reason to disable this.
*/
#define REMOTEINC_SPECIALCACHE
/*
** Freelinks garbage collector -Stskeeps
**
@@ -83,6 +112,9 @@
#define HOW_MANY_FREELINKS_ALLOWED 200 /* default: 200 */
/* NOTE: On some systems, valloc() causes many problems. */
#undef VALLOC /* Define this if you have valloc(3) */
/*
* read/write are restarted after signals defining this 1, gets
* siginterrupt call compiled, which attempts to remove this
@@ -92,6 +124,19 @@
#define RESTARTING_SYSTEMCALLS
#endif
/*
* If your host supports varargs and has vsprintf(), vprintf() and vscanf()
* C calls in its library, then you can define USE_VARARGS to use varargs
* instead of imitation variable arg passing.
*/
#define USE_VARARGS
/* NOTE: with current server code, varargs doesn't survive because it can't
* be used in a chain of 3 or more funtions which all have a variable
* number of params. If anyone has a solution to this, please notify
* the maintainer.
*/
/* 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.
@@ -114,6 +159,15 @@
#define BPATH CONFDIR"/bot.motd" /* Bot MOTD */
#define IRCDTUNE PERMDATADIR"/ircd.tune" /* tuning .. */
/* SHOW_INVISIBLE_LUSERS
*
* As defined this will show the correct invisible count for anyone who does
* LUSERS on your server. On a large net this doesnt mean much, but on a
* small net it might be an advantage to undefine it.
* (This will get defined for you if you're using userload (stats w). -mlv)
*/
#define SHOW_INVISIBLE_LUSERS
/** 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
@@ -128,9 +182,29 @@
*/
//#undef FAKELAG_CONFIGURABLE
/* The default value for class::sendq */
#define DEFAULT_SENDQ 3000000
/* The default value for class::recvq */
/*
* Max amount of internal send buffering when socket is stuck (bytes)
*/
#ifndef MAXSENDQLENGTH
#define MAXSENDQLENGTH 3000000
#endif
/*
* BUFFERPOOL is the maximum size of the total of all sendq's.
* Recommended value is 2 * MAXSENDQLENGTH, for hubs, 5 *.
*/
#ifndef BUFFERPOOL
#define BUFFERPOOL (18 * MAXSENDQLENGTH)
#endif
/*
* DEFAULT_RECVQ
*
* this controls the number of bytes the server will allow a client to
* send to the server without processing before disconnecting the client for
* flooding it. Values greater than 8000 make no difference to the server.
* NOTE: you can now also set this in class::recvq, if that's not present,
* this default value will be used.
*/
#define DEFAULT_RECVQ 8000
/* You can define the nickname of NickServ here (usually "NickServ").
@@ -145,6 +219,12 @@
/* You shouldn't change anything below this line, unless absolutely needed. */
/*
* Port where ircd resides. NOTE: This *MUST* be greater than 1024 if you
* plan to run ircd under any other uid than root.
*/
#define PORTNUM 6667 /* 6667 is default */
/*
* Maximum number of network connections your server will allow.
* On *NIX this is configured via ./Config so don't set it here.
@@ -162,11 +242,11 @@
(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.
* At the time of writing we will try a limit of 8192.
* It will automatically be lowered at boottime if we can only use
* 4096, 2048 or 1024. No problem.
*/
#define MAXCONNECTIONS 16384
#define MAXCONNECTIONS 8192
#elif defined(MAXCONNECTIONS_REQUEST) && (MAXCONNECTIONS_REQUEST >= 1)
/* --with-maxconnections=something */
#define MAXCONNECTIONS MAXCONNECTIONS_REQUEST
@@ -211,17 +291,20 @@
* 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
#define SOCKETLOOP_MAX_DELAY 500
/*
* Max time from the nickname change that still causes KILL
* automaticly to switch for the current nick of that user. (seconds)
*/
#define KILLCHASETIMELIMIT 30
#define KILLCHASETIMELIMIT 90 /* Recommended value: 90 */
/*
* Forces Unreal to use compressed IPv6 addresses rather than expanding them
*/
#undef IPV6_COMPRESSED
/* 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
@@ -233,17 +316,13 @@
#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
/* UnrealIRCd 4.0.0 - 4.0.13: 8, 8, 4, 4
* UnrealIRCd 4.0.14+ : 12, 8, 4, 4
*/
#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
#define MODDATA_MAX_CLIENT 12
#define MODDATA_MAX_CHANNEL 8
#define MODDATA_MAX_MEMBER 4
#define MODDATA_MAX_MEMBERSHIP 4
/* 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
@@ -279,14 +358,92 @@
#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"
#ifdef __osf__
#define OSF
/* OSF defines BSD to be its version of BSD */
#undef BSD
#include <sys/param.h>
#ifndef BSD
#define BSD
#endif
#endif
#ifdef ultrix
#define ULTRIX
#endif
#ifdef __hpux
#define HPUX
#endif
#ifdef sgi
#define SGI
#endif
#ifndef KLINE_TEMP
#define KLINE_PERM 0
#define KLINE_TEMP 1
#define KLINE_AKILL 2
#define KLINE_EXCEPT 3
#endif
#ifdef DEBUGMODE
#ifndef _WIN32
extern void debug(int, char *, ...);
#define Debug(x) debug x
#else
extern void debug(int, char *, ...);
#define Debug(x) debug x
#endif
#define LOGFILE LPATH
#else
#define Debug(x) ;
#if VMS
#define LOGFILE "NLA0:"
#else
#define LOGFILE "/dev/null"
#endif
#endif
#if defined(mips) || defined(PCS)
#undef SYSV
#endif
#ifdef MIPS
#undef BSD
#define BSD 1 /* mips only works in bsd43 environment */
#endif
#ifdef BSD_RELIABLE_SIGNALS
# if defined(SYSV_UNRELIABLE_SIGNALS) || defined(POSIX_SIGNALS)
error You stuffed up config.h signals
#define use only one.
# endif
#define HAVE_RELIABLE_SIGNALS
#endif
#ifdef SYSV_UNRELIABLE_SIGNALS
# ifdef POSIX_SIGNALS
error You stuffed up config.h signals
#define use only one.
# endif
#undef HAVE_RELIABLE_SIGNALS
#endif
#ifdef POSIX_SIGNALS
#define HAVE_RELIABLE_SIGNALS
#endif
#ifdef HAVECURSES
# define DOCURSES
#else
# undef DOCURSES
#endif
#ifdef HAVETERMCAP
# define DOTERMCAP
#else
# undef DOTERMCAP
#endif
# define stricmp strcasecmp
# define strnicmp strncasecmp
#if defined(DEFAULT_RECVQ)
# if (DEFAULT_RECVQ < 512)
error DEFAULT_RECVQ needs redefining.
@@ -297,6 +454,42 @@
#if (NICKNAMEHISTORYLENGTH < 100)
# define NICKNAMEHISTORYLENGTH 100
#endif
/*
* Some ugliness for AIX platforms.
*/
#ifdef AIX
# include <sys/machine.h>
# if BYTE_ORDER == BIG_ENDIAN
# define BIT_ZERO_ON_LEFT
# endif
# if BYTE_ORDER == LITTLE_ENDIAN
# define BIT_ZERO_ON_RIGHT
# endif
/*
* this one is used later in sys/types.h (or so i believe). -avalon
*/
# define BSD_INCLUDES
#endif
/*
* This is just to make Solaris porting easier -- codemastr
*/
#if defined(SOL20) || defined(SOL25) || defined(SOL26) || defined(SOL27)
#define _SOLARIS
#endif
#ifdef NEED_BCMP
#define bcmp memcmp
#endif
#ifdef NEED_BCOPY
#define bcopy(a,b,c) memcpy(b,a,c)
#endif
#ifdef NEED_BZERO
#define bzero(a,b) memset(a,0,b)
#endif
#if defined(AIX) && defined(_XOPEN_SOURCE_EXTENDED) && _XOPEN_SOURCE_EXTENDED
# define SOCK_LEN_TYPE size_t
#else
# define SOCK_LEN_TYPE int
#endif
#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \
((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \
@@ -316,12 +509,5 @@
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 -1
View File
@@ -45,7 +45,7 @@
*/
typedef struct dbuf {
u_int length; /* Current number of bytes stored */
// u_int offset; /* Offset to the first byte */
u_int offset; /* Offset to the first byte */
struct list_head dbuf_list;
} dbuf;
+76 -60
View File
@@ -1,7 +1,6 @@
/************************************************************************
* Unreal Internet Relay Chat Daemon, include/dynconf.h
* Copyright (C) 1999-2003 Carsten Munk
* Copyright (C) 2003-2021 Bram Matthys
* Copyright (C) 1999 Carsten Munk
*
* 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
@@ -22,18 +21,12 @@
#define DYNCONF_H
/* config level */
#define DYNCONF_CONF_VERSION "1.5"
#define DYNCONF_NETWORK_VERSION "2.2"
typedef struct FloodSettings FloodSettings;
struct FloodSettings {
FloodSettings *prev, *next;
char *name;
int limit[MAXFLOODOPTIONS];
long period[MAXFLOODOPTIONS];
};
typedef struct NetworkConfiguration NetworkConfiguration;
struct NetworkConfiguration {
typedef struct zNetwork aNetwork;
struct zNetwork {
unsigned x_inah:1;
char *x_ircnetwork;
char *x_ircnet005;
@@ -54,22 +47,13 @@ struct ChMode {
char *extparams[EXTCMODETABLESZ];
};
typedef struct OperStat {
struct OperStat *prev, *next;
typedef struct _OperStat {
struct _OperStat *prev, *next;
char *flag;
} OperStat;
typedef enum BroadcastChannelMessagesOption { BROADCAST_CHANNEL_MESSAGES_AUTO=1, BROADCAST_CHANNEL_MESSAGES_ALWAYS=2, BROADCAST_CHANNEL_MESSAGES_NEVER=3 } BroadcastChannelMessagesOption;
typedef enum AllowedChannelChars { ALLOWED_CHANNELCHARS_ANY=1, ALLOWED_CHANNELCHARS_ASCII=2, ALLOWED_CHANNELCHARS_UTF8=3 } AllowedChannelChars;
typedef enum BanTarget { BAN_TARGET_IP=1, BAN_TARGET_USERIP=2, BAN_TARGET_HOST=3, BAN_TARGET_USERHOST=4, BAN_TARGET_ACCOUNT=5, BAN_TARGET_CERTFP=6 } BanTarget;
typedef enum HideIdleTimePolicy { HIDE_IDLE_TIME_NEVER=1, HIDE_IDLE_TIME_ALWAYS=2, HIDE_IDLE_TIME_USERMODE=3, HIDE_IDLE_TIME_OPER_USERMODE=4 } HideIdleTimePolicy;
/** The set { } block configuration */
typedef struct Configuration Configuration;
struct Configuration {
typedef struct zConfiguration aConfiguration;
struct zConfiguration {
unsigned som:1;
unsigned hide_ulines:1;
unsigned flat_map:1;
@@ -77,7 +61,7 @@ struct Configuration {
unsigned ident_check:1;
unsigned fail_oper_warn:1;
unsigned show_connect_info:1;
unsigned no_connect_tls_info:1;
unsigned no_connect_ssl_info:1;
unsigned dont_resolve:1;
unsigned use_ban_version:1;
unsigned mkpasswd_for_everyone:1;
@@ -96,22 +80,22 @@ struct Configuration {
long conn_modes;
long oper_modes;
char *oper_snomask;
char *user_snomask;
char *auto_join_chans;
char *oper_auto_join_chans;
char *allow_user_stats;
OperStat *allow_user_stats_ext;
int ping_warning;
char *oper_only_stats;
OperStat *oper_only_stats_ext;
int maxchannelsperuser;
int maxdccallow;
int anti_spam_quit_message_time;
char *egd_path;
char *static_quit;
char *static_part;
TLSOptions *tls_options;
SSLOptions *ssl_options;
Policy plaintext_policy_user;
MultiLine *plaintext_policy_user_message;
char *plaintext_policy_user_message;
Policy plaintext_policy_oper;
MultiLine *plaintext_policy_oper_message;
char *plaintext_policy_oper_message;
Policy plaintext_policy_server;
Policy outdated_tls_policy_user;
char *outdated_tls_policy_user_message;
@@ -122,13 +106,22 @@ struct Configuration {
char *restrict_usermodes;
char *restrict_channelmodes;
char *restrict_extendedbans;
int new_linking_protocol;
char *channel_command_prefix;
long handshake_data_flood_amount;
long handshake_data_flood_ban_time;
int handshake_data_flood_ban_action;
long unknown_flood_bantime;
long unknown_flood_amount;
struct ChMode modes_on_join;
int level_on_join;
FloodSettings *floodsettings;
unsigned char away_count;
long away_period;
unsigned char nick_count;
long nick_period;
unsigned char invite_count;
long invite_period;
unsigned char knock_count;
long knock_period;
unsigned char max_concurrent_conversations_users;
unsigned char max_concurrent_conversations_new_user_every;
int ident_connect_timeout;
int ident_read_timeout;
long default_bantime;
@@ -146,12 +139,14 @@ struct Configuration {
int spamfilter_stop_on_first_match;
int maxbans;
int maxbanlength;
int timesynch_enabled;
int timesynch_timeout;
char *timesynch_server;
int watch_away_notification;
int uhnames;
NetworkConfiguration network;
aNetwork network;
unsigned short default_ipv6_clone_mask;
int ping_cookie;
int min_nick_length;
int nick_length;
int topic_length;
int kick_length;
@@ -160,10 +155,9 @@ struct Configuration {
int hide_list;
int max_unknown_connections_per_ip;
long handshake_timeout;
long sasl_timeout;
long handshake_delay;
BanTarget automatic_ban_target;
BanTarget manual_ban_target;
int ban_include_username;
char *reject_message_password_mismatch;
char *reject_message_too_many_connections;
char *reject_message_server_full;
char *reject_message_unauthorized;
@@ -172,26 +166,24 @@ struct Configuration {
int topic_setter;
int ban_setter;
int ban_setter_sync;
int part_instead_of_quit_on_comment_change;
BroadcastChannelMessagesOption broadcast_channel_messages;
AllowedChannelChars allowed_channelchars;
HideIdleTimePolicy hide_idle_time;
};
extern MODVAR Configuration iConf;
extern MODVAR Configuration tempiConf;
#ifndef DYNCONF_C
extern MODVAR aConfiguration iConf;
extern MODVAR aConfiguration tempiConf;
extern MODVAR int ipv6_disabled;
#endif
#define KLINE_ADDRESS iConf.kline_address
#define GLINE_ADDRESS iConf.gline_address
#define CONN_MODES iConf.conn_modes
#define OPER_MODES iConf.oper_modes
#define OPER_SNOMASK iConf.oper_snomask
#define CONNECT_SNOMASK iConf.user_snomask
#define SHOWOPERMOTD iConf.som
#define HIDE_ULINES iConf.hide_ulines
#define FLAT_MAP iConf.flat_map
#define ALLOW_CHATOPS iConf.allow_chatops
#define PINGWARNING iConf.ping_warning
#define MAXCHANNELSPERUSER iConf.maxchannelsperuser
#define MAXDCCALLOW iConf.maxdccallow
#define DONT_RESOLVE iConf.dont_resolve
@@ -202,8 +194,8 @@ extern MODVAR int ipv6_disabled;
#define IDENT_CHECK iConf.ident_check
#define FAILOPER_WARN iConf.fail_oper_warn
#define SHOWCONNECTINFO iConf.show_connect_info
#define NOCONNECTTLSLINFO iConf.no_connect_tls_info
#define ALLOW_USER_STATS iConf.allow_user_stats
#define NOCONNECTSSLINFO iConf.no_connect_ssl_info
#define OPER_ONLY_STATS iConf.oper_only_stats
#define ANTI_SPAM_QUIT_MSG_TIME iConf.anti_spam_quit_message_time
#ifdef HAVE_RAND_EGD
#define USE_EGD iConf.use_egd
@@ -229,12 +221,24 @@ extern MODVAR int ipv6_disabled;
#define RESTRICT_USERMODES iConf.restrict_usermodes
#define RESTRICT_CHANNELMODES iConf.restrict_channelmodes
#define RESTRICT_EXTENDEDBANS iConf.restrict_extendedbans
#define NEW_LINKING_PROTOCOL iConf.new_linking_protocol
#define THROTTLING_PERIOD iConf.throttle_period
#define THROTTLING_COUNT iConf.throttle_count
#define USE_BAN_VERSION iConf.use_ban_version
#define UNKNOWN_FLOOD_BANTIME iConf.unknown_flood_bantime
#define UNKNOWN_FLOOD_AMOUNT iConf.unknown_flood_amount
#define MODES_ON_JOIN iConf.modes_on_join.mode
#define LEVEL_ON_JOIN iConf.level_on_join
#define AWAY_PERIOD iConf.away_period
#define AWAY_COUNT iConf.away_count
#define NICK_PERIOD iConf.nick_period
#define NICK_COUNT iConf.nick_count
#define KNOCK_PERIOD iConf.knock_period
#define KNOCK_COUNT iConf.knock_count
#define INVITE_PERIOD iConf.invite_period
#define INVITE_COUNT iConf.invite_count
#define IDENT_CONNECT_TIMEOUT iConf.ident_connect_timeout
#define IDENT_READ_TIMEOUT iConf.ident_read_timeout
@@ -269,13 +273,15 @@ extern MODVAR int ipv6_disabled;
#define MAXBANS iConf.maxbans
#define MAXBANLENGTH iConf.maxbanlength
#define TIMESYNCH iConf.timesynch_enabled
#define TIMESYNCH_TIMEOUT iConf.timesynch_timeout
#define TIMESYNCH_SERVER iConf.timesynch_server
#define WATCH_AWAY_NOTIFICATION iConf.watch_away_notification
#define UHNAMES_ENABLED iConf.uhnames
/** Used for testing the set { } block configuration.
* It tests if a setting is present and is also used for duplicate checking.
*/
/* Used for "is present?" and duplicate checking */
struct SetCheck {
unsigned has_show_opermotd:1;
unsigned has_hide_ulines:1;
@@ -287,8 +293,9 @@ struct SetCheck {
unsigned has_dont_resolve:1;
unsigned has_mkpasswd_for_everyone:1;
unsigned has_allow_part_if_shunned:1;
unsigned has_tls_server_cipher_list :1;
unsigned has_tls_protocols :1;
unsigned has_ssl_egd:1;
unsigned has_ssl_server_cipher_list :1;
unsigned has_ssl_protocols :1;
unsigned has_dns_bind_ip:1;
unsigned has_link_bind_ip:1;
unsigned has_throttle_period:1;
@@ -304,8 +311,7 @@ struct SetCheck {
unsigned has_check_target_nick_bans:1;
unsigned has_watch_away_notification:1;
unsigned has_uhnames:1;
unsigned has_allow_user_stats:1;
unsigned has_ping_warning:1;
unsigned has_oper_only_stats:1;
unsigned has_maxchannelsperuser:1;
unsigned has_maxdccallow:1;
unsigned has_anti_spam_quit_message_time:1;
@@ -316,9 +322,18 @@ struct SetCheck {
unsigned has_restrict_usermodes:1;
unsigned has_restrict_channelmodes:1;
unsigned has_restrict_extendedbans:1;
unsigned has_new_linking_protocol:1;
unsigned has_channel_command_prefix:1;
unsigned has_anti_flood_unknown_flood_bantime:1;
unsigned has_anti_flood_unknown_flood_amount:1;
unsigned has_modes_on_join:1;
unsigned has_level_on_join:1;
unsigned has_anti_flood_away_count:1;
unsigned has_anti_flood_away_period:1;
unsigned has_anti_flood_nick_flood:1;
unsigned has_anti_flood_connect_flood:1;
unsigned has_anti_flood_invite_flood:1;
unsigned has_anti_flood_knock_flood:1;
unsigned has_ident_connect_timeout:1;
unsigned has_ident_read_timeout:1;
unsigned has_default_bantime:1;
@@ -348,14 +363,15 @@ struct SetCheck {
unsigned has_options_fail_oper_warn:1;
unsigned has_options_dont_resolve:1;
unsigned has_options_show_connect_info:1;
unsigned has_options_no_connect_tls_info:1;
unsigned has_options_no_connect_ssl_info:1;
unsigned has_options_mkpasswd_for_everyone:1;
unsigned has_options_allow_insane_bans:1;
unsigned has_options_allow_part_if_shunned:1;
unsigned has_options_disable_cap:1;
unsigned has_options_disable_ipv6:1;
unsigned has_ping_cookie:1;
unsigned has_min_nick_length:1;
unsigned has_nick_length:1;
unsigned has_hide_ban_reason:1;
};
+4
View File
@@ -11,7 +11,9 @@ typedef struct fd_entry {
int fd;
char desc[FD_DESC_SZ];
IOCallbackFunc read_callback;
unsigned char read_oneshot;
IOCallbackFunc write_callback;
unsigned char write_oneshot;
void *data;
time_t deadline;
unsigned char is_open;
@@ -31,6 +33,8 @@ extern int fd_fileopen(const char *path, unsigned int flags);
#define FD_SELECT_READ 0x1
#define FD_SELECT_WRITE 0x2
#define FD_SELECT_ONESHOT 0x4
#define FD_SELECT_NOWRITE 0x8
extern void fd_setselect(int fd, int flags, IOCallbackFunc iocb, void *data);
extern void fd_select(time_t delay); /* backend-specific */
+410 -662
View File
File diff suppressed because it is too large Load Diff
+73
View File
@@ -0,0 +1,73 @@
/************************************************************************
* Unreal Internet Relay Chat Daemon, include/hash.h
* Copyright (C) 1991 Darren Reed
*
* 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 __hash_include__
#define __hash_include__
typedef struct hashentry {
int hits;
int links;
void *list;
} aHashEntry;
/* Taner had BITS_PER_COL 4 BITS_PER_COL_MASK 0xF - Dianora */
#define BITS_PER_COL 3
#define BITS_PER_COL_MASK 0x7
#define MAX_SUB (1<<BITS_PER_COL)
/* Client hash table
* used in hash.c
*/
#define U_MAX_INITIAL 2048
#define U_MAX_INITIAL_MASK (U_MAX_INITIAL-1)
#define U_MAX (U_MAX_INITIAL*MAX_SUB)
/* Channel hash table
* used in hash.c
*/
#define CH_MAX_INITIAL 2048
#define CH_MAX_INITIAL_MASK (CH_MAX_INITIAL-1)
#define CH_MAX (CH_MAX_INITIAL*MAX_SUB)
/* Who was hash table
* used in whowas.c
*/
#define WW_MAX_INITIAL 16
#define WW_MAX_INITIAL_MASK (WW_MAX_INITIAL-1)
#define WW_MAX (WW_MAX_INITIAL*MAX_SUB)
#define WATCHHASHSIZE 10007 /* prime number */
/*
* Throttling
*/
#define THROTTLING_HASH_SIZE 1019 /* prime number */
#define NullChn ((aChannel *)0)
#define find_channel hash_find_channel
#endif /* __hash_include__ */
+62
View File
@@ -0,0 +1,62 @@
/*
* Copyright (c) 1983 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted
* provided that: (1) source distributions retain this entire copyright
* notice and comment, and (2) distributions including binaries display
* the following acknowledgement: ``This product includes software
* developed by the University of California, Berkeley and its contributors''
* in the documentation or other materials provided with the distribution
* and in all advertising materials mentioning features or use of this
* software. Neither the name of the University nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* $Id$
*
* @(#)inet.h 5.4 (Berkeley) 6/1/90
*/
/* External definitions for functions in inet(3) */
#include "config.h" /* for system definitions */
#ifdef __alpha
#define __u_l unsigned int
#else
#define __u_l unsigned long
#endif
extern int inet_pton(int af, const char *src, void *dst);
extern const char *inet_ntop(int af, const void *src, char *dst, size_t cnt);
#ifdef __STDC__
# ifndef _WIN32
extern __u_l inet_addr(char *);
extern char *inet_ntoa(struct in_addr);
extern int inet_aton(const char *, struct in_addr *);
# endif
extern __u_l inet_makeaddr(int, int);
extern __u_l inet_network(char *);
extern __u_l inet_lnaof(struct in_addr);
#else
# ifndef _WIN32
extern __u_l inet_addr();
extern char *inet_ntoa();
# endif
#ifndef HPUX
extern __u_l inet_makeaddr();
#endif
#endif
#ifndef HPUX
extern __u_l inet_network();
extern __u_l inet_lnaof();
#endif
#undef __u_l
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#endif
+11 -5
View File
@@ -9,15 +9,21 @@
#include <stdarg.h>
#include <stdio.h>
/* ugly hack GRR, for both attribute and FORMAT_STRING */
/*
* Proto types
*/
/* You do want it to work in debug mode yes ? --DrBin */
/* ugly hack GRR */
#if !defined(__GNUC__) && !defined(__common_include__)
#define __attribute__(x) /* nothing */
#endif
#ifndef FORMAT_STRING
# define FORMAT_STRING(p) p
#endif
extern char *ircvsnprintf(char *str, size_t size, const char *format, va_list);
extern char *ircsnprintf(char *str, size_t size, FORMAT_STRING(const char *format), ...) __attribute__((format(printf,3,4)));
extern char *ircsnprintf(char *str, size_t size, const char *format, ...) __attribute__((format(printf,3,4)));
extern const char atoi_tab[4000];
#endif
+13 -68
View File
@@ -16,9 +16,9 @@
#endif
#ifdef _WIN32
#define typeof(x) Client
#define typeof(x) aClient
/* ^ FIXME if/when Microsoft supports this.
* All functions use Client at the moment, with the exception of CAP, which has
* All functions use aClient at the moment, with the exception of CAP, which has
* to use list_for_each_entry2 because of it
* Yeah this looks ugly and hacky.. thanks nenolod for making all code use this
* non-portable gcc-specific stuff and violating all our code rules. Once again.
@@ -430,62 +430,11 @@ SINLINE void list_splice_tail_init(struct list_head *list,
pos != (head); \
pos = n, n = pos->prev)
/** Walk through client lists (with examples).
* @param pos The variable to use as a loop cursor
* @param head The head of your list
* @param member The name of the list_struct within the struct.
* @ingroup ListFunctions
* @section Examples
* @subsection client_list List all clients
* @code
* CMD_FUNC(cmd_listallclients)
* {
* Client *acptr;
* sendnotice(client, "List of all clients:");
* list_for_each_entry(acptr, &client_list, client_node)
* sendnotice(client, "Client %s", acptr->name);
* }
* @endcode
* @subsection lclient_list List all LOCAL clients
* @code
* CMD_FUNC(cmd_listalllocalclients)
* {
* Client *acptr;
* sendnotice(client, "List of all local clients:");
* list_for_each_entry(acptr, &lclient_list, lclient_node)
* sendnotice(client, "Client %s", acptr->name);
* }
* @endcode
* @subsection global_server_list List all servers
* @code
* CMD_FUNC(cmd_listallservers)
* {
* Client *acptr;
* sendnotice(client, "List of all servers:");
* list_for_each_entry(acptr, &global_server_list, client_node)
* sendnotice(client, "Server %s", acptr->name);
* }
* @endcode
* @subsection server_list List all LOCALLY connected servers
* @code
* CMD_FUNC(cmd_listallservers)
* {
* Client *acptr;
* sendnotice(client, "List of all LOCAL servers:");
* list_for_each_entry(acptr, &server_list, special_node)
* sendnotice(client, "Server %s", acptr->name);
* }
* @endcode
* @subsection oper_list List all LOCALLY connected IRCOps
* @code
* CMD_FUNC(cmd_listlocalircops)
* {
* Client *acptr;
* sendnotice(client, "List of all LOCAL IRCOps:");
* list_for_each_entry(acptr, &oper_list, special_node)
* sendnotice(client, "User %s", acptr->name);
* }
* @endcode
/**
* list_for_each_entry - iterate over list of given type
* @pos: the type * to use as a loop cursor.
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*/
#define list_for_each_entry(pos, head, member) \
for (pos = list_entry((head)->next, typeof(*pos), member); \
@@ -565,16 +514,12 @@ SINLINE void list_splice_tail_init(struct list_head *list,
for (; &pos->member != (head); \
pos = list_entry(pos->member.next, typeof(*pos), member))
/** Walk through client lists - special 'safe' version.
* This is a special version, in case clients are removed from the list
* while the list is iterated. It is unlikely that you need to use this
* from modules, so use list_for_each_entry() instead.
* Examples are also in list_for_each_entry().
* @param pos The variable to use as a loop cursor
* @param n Variable to be used for temporary storage
* @param head The head of your list
* @param member The name of the list_struct within the struct.
* @ingroup ListFunctions
/**
* list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
* @pos: the type * to use as a loop cursor.
* @n: another type * to use as temporary storage
* @head: the head for your list.
* @member: the name of the list_struct within the struct.
*/
#define list_for_each_entry_safe(pos, n, head, member) \
for (pos = list_entry((head)->next, typeof(*pos), member), \
+25
View File
@@ -0,0 +1,25 @@
/************************************************************************
* Unreal Internet Relay Chat Daemon, include/macros.h
* Copyright (c) 2004 Dominick Meglio & The UnrealIRCd Team
*
* 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$
*/
#include "setup.h"
/* Calculate the size of an array */
#define ARRAY_SIZEOF(x) (sizeof((x))/sizeof((x)[0]))
+465 -1684
View File
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More