mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-13 07:34:46 +02:00
Compare commits
123 Commits
unreal60_dev
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| b1aae19ed5 | |||
| f31a55eaaa | |||
| ce27d8d8ed | |||
| 25af5338e3 | |||
| 1e7391b9ba | |||
| 91e5639a77 | |||
| fb629bd489 | |||
| f72a982a82 | |||
| 059605c341 | |||
| 07ad68e3d4 | |||
| 0fa129325e | |||
| 46314dc3bb | |||
| 78f1540ec5 | |||
| b7e579df89 | |||
| 1f9f12660a | |||
| af0e823116 | |||
| 18c617bb35 | |||
| 3b25ba5aed | |||
| 506870ec86 | |||
| 82781bc3a9 | |||
| 0602bf1991 | |||
| 7eae9f8ffd | |||
| 53616c9ec5 | |||
| 37a6cf430b | |||
| 9ca203c1c6 | |||
| ea2caffdf1 | |||
| 9ccf8250fc | |||
| 976a6eb116 | |||
| 61f94bd6d8 | |||
| 082b9c58db | |||
| d2a544bc17 | |||
| 2df6ad48be | |||
| 625483821a | |||
| 7186af38f0 | |||
| 4a7c15b6b0 | |||
| 4c8c5da383 | |||
| 5cbcd7be86 | |||
| c3538b357b | |||
| 64c347f828 | |||
| 32fff791bd | |||
| 26dc7cbb31 | |||
| 1e3e46d4de | |||
| a1bdaa440d | |||
| 49b34a6cab | |||
| 0fa5dec7d7 | |||
| b16af31e83 | |||
| 6bf05cee61 | |||
| 50de952e0b | |||
| 49b2d6d832 | |||
| 859fb60904 | |||
| 2f758a59ac | |||
| 74346e4b40 | |||
| 5adf4d7e5b | |||
| 0a67350cd0 | |||
| 0f0767d4de | |||
| 8d7b9fca49 | |||
| 00fd88ff0c | |||
| f17eca1154 | |||
| 41019fb446 | |||
| 4b2a9d125a | |||
| bb545c7cbe | |||
| 297c176886 | |||
| dd18157ad0 | |||
| 78b9966a5c | |||
| 7acc5aac6e | |||
| 870eb8710f | |||
| 3091752196 | |||
| 5d9cb664b7 | |||
| 19a8b15b01 | |||
| 47ab99a833 | |||
| 9bb05733c8 | |||
| d5d6ace2e1 | |||
| b7bd436b7f | |||
| f011199ea5 | |||
| 2b2308dcdc | |||
| d8645f710d | |||
| 50afecfaa7 | |||
| f18b7e8df1 | |||
| 167a83f7d2 | |||
| 3c423d31d2 | |||
| 3fd9fc9846 | |||
| a06a748214 | |||
| 3e19dc1a8b | |||
| 60c880834b | |||
| b5bcf6605e | |||
| ccab872222 | |||
| 193b044615 | |||
| 268373635a | |||
| 0362f9c765 | |||
| ff5e6a1a0c | |||
| f0167d1284 | |||
| 7530ce6b29 | |||
| 77ccd6b9dd | |||
| 780a9c4878 | |||
| 1a3175f4e7 | |||
| 6d93e605f3 | |||
| 939b8797e4 | |||
| ee775f3e2e | |||
| 9b296df76c | |||
| c2d75396da | |||
| b1a396ad2b | |||
| c5866e2a80 | |||
| cdd354c306 | |||
| d262f6f5e3 | |||
| 97e3d6a2ce | |||
| 9157912636 | |||
| 86287db434 | |||
| 04820fda45 | |||
| 42cb9fc22a | |||
| 70e06587f9 | |||
| 614d980596 | |||
| 4c93c3d197 | |||
| 85db29488f | |||
| 0178632529 | |||
| 9774805c00 | |||
| 8589555273 | |||
| 08d55f0d5e | |||
| bd865e7a65 | |||
| 537e104611 | |||
| 5d25b1b0d5 | |||
| ee4708774a | |||
| be4e63ac89 | |||
| 139b5e9831 |
+1
-1
@@ -7,7 +7,7 @@
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Configuration Program
|
||||
for Unreal3.2.10-rc1
|
||||
for Unreal3.2.10.7
|
||||
|
||||
This program will help you to compile your IRC server, and ask you
|
||||
questions regarding the compile-time settings of it during the process.
|
||||
|
||||
+88
-10
@@ -1,17 +1,94 @@
|
||||
Unreal3.2.10-rc1 Release Notes
|
||||
===============================
|
||||
Unreal3.2.10.7 Release Notes
|
||||
=============================
|
||||
|
||||
==[ UNREALIRCD 3.2.X IS DEPRECATED ]==
|
||||
You are currently viewing the release notes of UnrealIRCd 3.2.10.7.
|
||||
UnrealIRCd 3.2.* will no longer be supported after December 31, 2016.
|
||||
You should upgrade to UnrealIRCd 4 before that date.
|
||||
See https://www.unrealircd.org/docs/UnrealIRCd_3.2.x_deprecated
|
||||
|
||||
==[ GENERAL INFORMATION ]==
|
||||
- If you are upgrading on *NIX, then make sure you run 'make clean' and
|
||||
'./Config' first, before running 'make'.
|
||||
- The official UnrealIRCd documentation is doc/unreal32docs.html
|
||||
online version at: http://www.vulnscan.org/UnrealIRCd/unreal32docs.html
|
||||
FAQ: http://www.vulnscan.org/UnrealIRCd/faq/
|
||||
- The official UnrealIRCd 3.2.x documentation is available online at
|
||||
https://www.vulnscan.org/UnrealIRCd/unreal32docs.html
|
||||
FAQ: https://www.vulnscan.org/UnrealIRCd/faq/
|
||||
Read them before asking for help.
|
||||
- Report bugs at http://bugs.unrealircd.org/
|
||||
- Report bugs at https://bugs.unrealircd.org/
|
||||
- The purpose of the sections below (NEW, CHANGED, MINOR, etc) is to be a
|
||||
SUMMARY of the changes in this release. There have been 79 changes in
|
||||
total, for the full list of changes see the Changelog.
|
||||
SUMMARY of the changes in this release. See the file 'Changes' for a
|
||||
complete list of all changes.
|
||||
|
||||
==[ .7 RELEASE ]==
|
||||
The following issue was fixed in 3.2.10.7:
|
||||
- Fix SASL EXTERNAL security issue
|
||||
|
||||
==[ .6 RELEASE ]==
|
||||
The following has been addressed in 3.2.10.6:
|
||||
- Add notes regarding deprecation of 3.2.x series
|
||||
- Build with latest OpenSSL to fix crash issue (Windows)
|
||||
- Don't show vcredist dialog if installed (Windows installer)
|
||||
|
||||
==[ .5 RELEASE ]==
|
||||
The following issues have been fixed in 3.2.10.5:
|
||||
- Crash when SASL is enabled (set::sasl-server)
|
||||
- A compile problem with LibreSSL
|
||||
|
||||
==[ .4 RELEASE ]==
|
||||
Two major issues were fixed:
|
||||
- Compile problems when using clang instead of gcc (such as on FreeBSD & OS X)
|
||||
- For services who allow you to log in by account name but still allow you to
|
||||
use a different nick: when you're logged in you are now considered
|
||||
registered as far as mode +M and +R are concerned.
|
||||
Tech: whenever services set SVID and it's not * and does not start with a
|
||||
number, then we consider this user to be 'logged in'.
|
||||
Whenever a user is set +r (s)he is also considered 'logged in'.
|
||||
This way it's compatible with both older and new services and doesn't
|
||||
(or shouldn't) introduce security issues with older services using
|
||||
servicetimestamp for nick tracking or other means.
|
||||
Additionally:
|
||||
- curl-ca-bundle.crt has been updated to use latest certificates
|
||||
- The Windows libraries (OpenSSL, curl, ..) have been updated.
|
||||
|
||||
==[ .3 RELEASE ]==
|
||||
The following issues have been fixed in 3.2.10.3:
|
||||
- Crash when SASL is enabled and ping-cookie is disabled
|
||||
- Compile issue with remote include
|
||||
- OS X compile problems
|
||||
- ./unreal backtrace not always working well
|
||||
Changes:
|
||||
- For silenced users we now only check the current nick!user@host
|
||||
- Server to server links now use latest TLS (eg: v1.2) instead of SSLv3
|
||||
New:
|
||||
- Added set::spamfilter::stop-on-first-match (default yes). You can change
|
||||
this to 'no' to have UnrealIRCd continue processing all spamfilters even
|
||||
after the first match. The spamfilter with the 'gravest action' wins
|
||||
(eg: gzline wins from block).
|
||||
|
||||
==[ .2 RELEASE ]==
|
||||
The following major issues were present in 3.2.10 & 3.2.10.1 and have
|
||||
been fixed in this version:
|
||||
- A remote crash issue when compiled with SSL (NULL pointer dereference)
|
||||
- A second issue that can potentially lead to a crash (read-after-free)
|
||||
|
||||
In addition to these 3.2.10.x fixes there were also some other bugs fixed,
|
||||
mostly in the area of server linking and flood hardening.
|
||||
|
||||
The external libraries of the Windows version have been updated (openssl,
|
||||
c-ares, zlib). The bundled c-ares source (for *NIX) has been updated too.
|
||||
|
||||
==[ .1 RELEASE ]==
|
||||
The following bugs in version 3.2.10 were fixed in this 3.2.10.1 release:
|
||||
- Windows only: outgoing connects from Windows caused severe linking issues,
|
||||
including killing of (ghost) users on the Windows server.
|
||||
- An issue where user modes were stripped from remote clients, this caused
|
||||
a problem for Anope BotServ bots.
|
||||
- A compile problem on OpenBSD.
|
||||
- '/REHASH -global' did not rehash all servers.
|
||||
- Some documentation updates.
|
||||
|
||||
==[ 3.2.10 RELEASE ]==
|
||||
Below is a summary of all changes with respect to 3.2.9:
|
||||
|
||||
==[ NEW ]==
|
||||
- Improved socket engine. This brings some performance improvements and
|
||||
@@ -60,7 +137,8 @@ Unreal3.2.10-rc1 Release Notes
|
||||
certificate. The certificate is then copied when you run 'make install'.
|
||||
|
||||
==[ MAJOR BUGS FIXED ]==
|
||||
- None?
|
||||
- Windows SSL crash (this issue was already fixed in 3.2.9-SSL-fix)
|
||||
- Other than that, none?
|
||||
|
||||
==[ MINOR BUGS FIXED ]==
|
||||
- Various compile problems, in particular with remote includes enabled.
|
||||
@@ -83,4 +161,4 @@ Unreal3.2.10-rc1 Release Notes
|
||||
confused with "+") are not safe to use, they can easily freeze the IRCd.
|
||||
|
||||
==[ ADDITIONAL INFO ]==
|
||||
* See Changelog for more details
|
||||
- See Changelog for more details
|
||||
|
||||
@@ -7,12 +7,25 @@ syntax: regexp
|
||||
^src/include$
|
||||
^src/version\.c$
|
||||
^unreal$
|
||||
^server\.(cert|key|req)\.pem$
|
||||
|
||||
# extras archives and builds
|
||||
^extras/[^/]*\.(bak|tar)$
|
||||
^extras/[^/]*\d/
|
||||
^extras/(c-ares|regexp)/
|
||||
|
||||
# running unrealircd from the source directory
|
||||
^ircd\.(log|pid|tune)$
|
||||
^ssl\.rnd$
|
||||
|
||||
# General
|
||||
\.(o|so|orig|rej)$
|
||||
~$
|
||||
(^|/)core(\.\d+)?$
|
||||
|
||||
# autotools
|
||||
^aclocal\.m4$
|
||||
^autom4te\.cache/
|
||||
^config\.(status|log)$
|
||||
|
||||
# not quite autotools
|
||||
|
||||
@@ -4,3 +4,4 @@ history.
|
||||
|
||||
Simply run the following command to generate this 'Changes' file:
|
||||
./createchangelog
|
||||
- COMMENT (#4251).
|
||||
|
||||
@@ -372,6 +372,23 @@ else
|
||||
n="-n"
|
||||
fi
|
||||
|
||||
date|grep 2015 1>/dev/null 2>&1
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "*** WARNING ***"
|
||||
echo "UnrealIRCd 3.2.x will no longer be supported after December 31, 2016."
|
||||
echo "You should upgrade to UnrealIRCd 4 before that date."
|
||||
echo "See https://www.unrealircd.org/docs/UnrealIRCd_3.2.x_deprecated"
|
||||
echo $n . $c
|
||||
sleep 1
|
||||
echo $n . $c
|
||||
sleep 1
|
||||
echo $n . $c
|
||||
sleep 1
|
||||
echo $n . $c
|
||||
sleep 1
|
||||
echo ""
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
#parse arguments
|
||||
NOCACHE=""
|
||||
@@ -409,6 +426,12 @@ while [ $# -ge 1 ] ; do
|
||||
shift 1
|
||||
done
|
||||
|
||||
date|grep 2015 1>/dev/null 2>&1
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo $n "[Enter to continue]"
|
||||
read cc
|
||||
fi
|
||||
|
||||
if [ -f "config.settings" -a -z "$NOCACHE" ] ; then
|
||||
. ./config.settings
|
||||
fi
|
||||
|
||||
+3
-3
@@ -233,13 +233,13 @@ install: all
|
||||
pem: src/ssl.cnf
|
||||
@echo "Generating certificate request .. "
|
||||
$(OPENSSLPATH) req -new \
|
||||
-config src/ssl.cnf -out server.req.pem \
|
||||
-config src/ssl.cnf -sha256 -out server.req.pem \
|
||||
-keyout server.key.pem -nodes
|
||||
@echo "Generating self-signed certificate .. "
|
||||
$(OPENSSLPATH) req -x509 -days 365 -in server.req.pem \
|
||||
$(OPENSSLPATH) req -x509 -days 3650 -sha256 -in server.req.pem \
|
||||
-key server.key.pem -out server.cert.pem
|
||||
@echo "Generating fingerprint .."
|
||||
$(OPENSSLPATH) x509 -subject -dates -fingerprint -noout \
|
||||
$(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
|
||||
|
||||
+2
-5
@@ -1,5 +1,5 @@
|
||||
===============================================
|
||||
= UnrealIRCd v3.2.10-rc1 =
|
||||
= UnrealIRCd v3.2.10.7 =
|
||||
===============================================
|
||||
This release was brought to you by:
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
Contributors:
|
||||
=============
|
||||
* Heero
|
||||
* nenolod
|
||||
* Adam
|
||||
* warg
|
||||
@@ -24,10 +25,6 @@
|
||||
* fbi
|
||||
* Apocalypse
|
||||
|
||||
RC Testers:
|
||||
===========
|
||||
<<TODO>>
|
||||
|
||||
Previous coders:
|
||||
================
|
||||
* Stskeeps
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.69 for unrealircd 3.2.10-rc1.
|
||||
# Generated by GNU Autoconf 2.69 for unrealircd 3.2.10.7.
|
||||
#
|
||||
# Report bugs to <http://bugs.unrealircd.org/>.
|
||||
#
|
||||
@@ -580,8 +580,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='unrealircd'
|
||||
PACKAGE_TARNAME='unrealircd'
|
||||
PACKAGE_VERSION='3.2.10-rc1'
|
||||
PACKAGE_STRING='unrealircd 3.2.10-rc1'
|
||||
PACKAGE_VERSION='3.2.10.7'
|
||||
PACKAGE_STRING='unrealircd 3.2.10.7'
|
||||
PACKAGE_BUGREPORT='http://bugs.unrealircd.org/'
|
||||
PACKAGE_URL='http://unrealircd.org/'
|
||||
|
||||
@@ -1282,7 +1282,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures unrealircd 3.2.10-rc1 to adapt to many kinds of systems.
|
||||
\`configure' configures unrealircd 3.2.10.7 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -1343,7 +1343,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of unrealircd 3.2.10-rc1:";;
|
||||
short | recursive ) echo "Configuration of unrealircd 3.2.10.7:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@@ -1481,7 +1481,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
unrealircd configure 3.2.10-rc1
|
||||
unrealircd configure 3.2.10.7
|
||||
generated by GNU Autoconf 2.69
|
||||
|
||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
@@ -2087,7 +2087,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by unrealircd $as_me 3.2.10-rc1, which was
|
||||
It was created by unrealircd $as_me 3.2.10.7, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@@ -3874,6 +3874,48 @@ if test "x$ac_cv_lib_nsl_inet_ntoa" = xyes; then :
|
||||
INETLIB="-lnsl"
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RAND_egd in -lcrypto" >&5
|
||||
$as_echo_n "checking for RAND_egd in -lcrypto... " >&6; }
|
||||
if ${ac_cv_lib_crypto_RAND_egd+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lcrypto $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
/* Override any GCC internal prototype to avoid an error.
|
||||
Use char because int might match the return type of a GCC
|
||||
builtin and then its argument prototype would still apply. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
char RAND_egd ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return RAND_egd ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_lib_crypto_RAND_egd=yes
|
||||
else
|
||||
ac_cv_lib_crypto_RAND_egd=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_RAND_egd" >&5
|
||||
$as_echo "$ac_cv_lib_crypto_RAND_egd" >&6; }
|
||||
if test "x$ac_cv_lib_crypto_RAND_egd" = xyes; then :
|
||||
|
||||
$as_echo "#define HAVE_RAND_EGD 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6356,7 +6398,7 @@ fi
|
||||
|
||||
|
||||
hold_cflags=$CFLAGS
|
||||
CFLAGS="$CFLAGS -export-dynamic"
|
||||
CFLAGS="$CFLAGS -Wl,-export-dynamic"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we need the -export-dynamic flag" >&5
|
||||
$as_echo_n "checking if we need the -export-dynamic flag... " >&6; }
|
||||
if ${ac_cv_export_dynamic+:} false; then :
|
||||
@@ -6398,7 +6440,7 @@ if test "$ac_cv_c_compiler_gnu" = "yes"; then
|
||||
ac_cv_pic="-fPIC -DPIC -shared"
|
||||
case `uname -s` in
|
||||
Darwin*)
|
||||
ac_cv_pic="-bundle -flat_namespace -undefined suppress"
|
||||
ac_cv_pic="-std=gnu89 -bundle -flat_namespace -undefined suppress"
|
||||
;;
|
||||
HP-UX*)
|
||||
ac_cv_pic="-fPIC"
|
||||
@@ -6585,6 +6627,7 @@ export PATH_SEPARATOR
|
||||
|
||||
|
||||
|
||||
|
||||
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
||||
if test -n "$ac_tool_prefix"; then
|
||||
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
|
||||
@@ -6754,6 +6797,7 @@ if test -n "$TRE_CFLAGS"; then
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; then
|
||||
pkg_cv_TRE_CFLAGS=`$PKG_CONFIG --cflags "tre >= 0.7.5" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes
|
||||
else
|
||||
pkg_failed=yes
|
||||
fi
|
||||
@@ -6770,6 +6814,7 @@ if test -n "$TRE_LIBS"; then
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; then
|
||||
pkg_cv_TRE_LIBS=`$PKG_CONFIG --libs "tre >= 0.7.5" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes
|
||||
else
|
||||
pkg_failed=yes
|
||||
fi
|
||||
@@ -6789,9 +6834,9 @@ else
|
||||
_pkg_short_errors_supported=no
|
||||
fi
|
||||
if test $_pkg_short_errors_supported = yes; then
|
||||
TRE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "tre >= 0.7.5" 2>&1`
|
||||
TRE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "tre >= 0.7.5" 2>&1`
|
||||
else
|
||||
TRE_PKG_ERRORS=`$PKG_CONFIG --print-errors "tre >= 0.7.5" 2>&1`
|
||||
TRE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "tre >= 0.7.5" 2>&1`
|
||||
fi
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
echo "$TRE_PKG_ERRORS" >&5
|
||||
@@ -6833,7 +6878,7 @@ fi
|
||||
|
||||
if test "x$with_system_cares" = "xno"; then :
|
||||
|
||||
cares_version="1.9.1"
|
||||
cares_version="1.10.0"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: extracting c-ares resolver library" >&5
|
||||
$as_echo "extracting c-ares resolver library" >&6; }
|
||||
cur_dir=`pwd`
|
||||
@@ -6905,6 +6950,7 @@ if test -n "$CARES_CFLAGS"; then
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; then
|
||||
pkg_cv_CARES_CFLAGS=`$PKG_CONFIG --cflags "libcares >= 1.6.0" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes
|
||||
else
|
||||
pkg_failed=yes
|
||||
fi
|
||||
@@ -6921,6 +6967,7 @@ if test -n "$CARES_LIBS"; then
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; then
|
||||
pkg_cv_CARES_LIBS=`$PKG_CONFIG --libs "libcares >= 1.6.0" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes
|
||||
else
|
||||
pkg_failed=yes
|
||||
fi
|
||||
@@ -6940,9 +6987,9 @@ else
|
||||
_pkg_short_errors_supported=no
|
||||
fi
|
||||
if test $_pkg_short_errors_supported = yes; then
|
||||
CARES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libcares >= 1.6.0" 2>&1`
|
||||
CARES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcares >= 1.6.0" 2>&1`
|
||||
else
|
||||
CARES_PKG_ERRORS=`$PKG_CONFIG --print-errors "libcares >= 1.6.0" 2>&1`
|
||||
CARES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcares >= 1.6.0" 2>&1`
|
||||
fi
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
echo "$CARES_PKG_ERRORS" >&5
|
||||
@@ -7626,7 +7673,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by unrealircd $as_me 3.2.10-rc1, which was
|
||||
This file was extended by unrealircd $as_me 3.2.10.7, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@@ -7689,7 +7736,7 @@ _ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||
ac_cs_version="\\
|
||||
unrealircd config.status 3.2.10-rc1
|
||||
unrealircd config.status 3.2.10.7
|
||||
configured by $0, generated by GNU Autoconf 2.69,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
||||
+6
-4
@@ -10,7 +10,7 @@ dnl Unreal.nfo
|
||||
dnl .CHANGES.NEW
|
||||
dnl src/version.c.SH
|
||||
|
||||
AC_INIT([unrealircd], [3.2.10-rc1], [http://bugs.unrealircd.org/], [], [http://unrealircd.org/])
|
||||
AC_INIT([unrealircd], [3.2.10.7], [http://bugs.unrealircd.org/], [], [http://unrealircd.org/])
|
||||
AC_CONFIG_SRCDIR([src/ircd.c])
|
||||
AC_CONFIG_HEADER([include/setup.h])
|
||||
AC_CONFIG_AUX_DIR([autoconf])
|
||||
@@ -93,6 +93,8 @@ AC_CHECK_LIB(socket, socket,
|
||||
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]))
|
||||
|
||||
AC_SUBST(IRCDLIBS)
|
||||
AC_SUBST(MKPASSWDLIBS)
|
||||
@@ -107,7 +109,7 @@ AC_DEFINE(STATIC_LINKING)
|
||||
])])
|
||||
|
||||
hold_cflags=$CFLAGS
|
||||
CFLAGS="$CFLAGS -export-dynamic"
|
||||
CFLAGS="$CFLAGS -Wl,-export-dynamic"
|
||||
AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [
|
||||
AC_TRY_LINK(, [int i];, ac_cv_export_dynamic=yes, ac_cv_export_dynamic=no)])
|
||||
if test "$ac_cv_export_dynamic" = "no"; then
|
||||
@@ -119,7 +121,7 @@ if test "$ac_cv_prog_gcc" = "yes"; then
|
||||
ac_cv_pic="-fPIC -DPIC -shared"
|
||||
case `uname -s` in
|
||||
Darwin*[)]
|
||||
ac_cv_pic="-bundle -flat_namespace -undefined suppress"
|
||||
ac_cv_pic="-std=gnu89 -bundle -flat_namespace -undefined suppress"
|
||||
;;
|
||||
HP-UX*[)]
|
||||
ac_cv_pic="-fPIC"
|
||||
@@ -610,7 +612,7 @@ AS_IF([test "x$with_system_cares" = "xno"],[
|
||||
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
|
||||
dnl NOTE: when changing this here, ALSO change it in ./curlinstall
|
||||
dnl and in the comment in this file around line 400!
|
||||
cares_version="1.9.1"
|
||||
cares_version="1.10.0"
|
||||
AC_MSG_RESULT(extracting c-ares resolver library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
|
||||
+2
-1
@@ -5,6 +5,7 @@
|
||||
# changelog too much.
|
||||
|
||||
hg log -r a673dd0f7b37: --style changelog --template '[{date|shortdate}] {author} ({node|short}):\n- {desc}\n\n' \
|
||||
-X 'doc/unreal32docs.*.html' -X 'doc/help.*.conf' -X 'doc/example.*.conf' -X 'include/version.h'|sed 's/^- - /- /g' >Changes
|
||||
-b default -X 'doc/unreal32docs.*.html' -X 'doc/help.*.conf' -X 'doc/example.*.conf' -X 'include/version.h'|\
|
||||
sed 's/^- - /- /g' >Changes
|
||||
|
||||
echo "Done. File 'Changes' now contains the full version history"
|
||||
|
||||
+868
-989
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -3,7 +3,7 @@ URL="http://www.unrealircd.com/files/curl-latest.tar.gz"
|
||||
OUTF="curl-latest.tar.gz"
|
||||
OUTD="curl-latest"
|
||||
ARESPATH="`pwd`/extras/c-ares"
|
||||
CARESVERSION="1.9.1"
|
||||
CARESVERSION="1.10.0"
|
||||
if [ ! -f "Unreal.nfo" ]; then
|
||||
echo "Please run this program from your UnrealIRCd directory"
|
||||
echo "(usually $HOME/Unreal3.2 or something like that)"
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
* example.conf by Daniel Hawton AKA Osiris (osiris@unrealircd.org).
|
||||
* $Id$
|
||||
*
|
||||
* Works for Unreal3.2 and up
|
||||
* Works for Unreal3.2.x
|
||||
*
|
||||
* Okay guys. This is the new example.conf. Its look is much like C++, kinda.
|
||||
* Anyway it is time to go over this. It's hard to pick up at first, but
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
* example.conf von Daniel Hawton AKA Osiris (osiris@unrealircd.org).
|
||||
* $Id$
|
||||
*
|
||||
* Arbeitet mit Unreal3.2 und darüber
|
||||
* Arbeitet mit Unreal3.2.x
|
||||
*
|
||||
* Dies hier ist die neue example.conf. Sie ähnelt irgendwie ein wenig C++ und sie
|
||||
* soll sie jedenfalls einmal erläutert werden. Es ist ein wenig schwer, erstmals
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
* example.conf por Danial Hawton, alias Osiris (osiris@unrealircd.org).
|
||||
* Traducido al castellano por Severus_Snape (javiersnape@gmail.com).
|
||||
*
|
||||
* Funciona desde Unreal3.2 hacia adelante
|
||||
* Funciona desde Unreal3.2.x
|
||||
*
|
||||
* Ok. Este es el nuevo example.conf. Es muy similar a C++.
|
||||
* De todas formas lleva tiempo hacer esto. En un principio, es dificil de comprender pero
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
* Dernière mise à jour : 2010-09-11
|
||||
* $Id$
|
||||
*
|
||||
* Fonctionne pour Unreal3.2 et supérieur
|
||||
* Fonctionne pour Unreal3.2.x
|
||||
*
|
||||
* Okay les gars, voici la nouvelle version de l'example.conf. Cela ressemble plus à du C++.
|
||||
* Peu importe, il est temps de se lancer. Il est difficile de l'attaquer pour la première fois, mais
|
||||
|
||||
+54
-2
@@ -3,7 +3,7 @@
|
||||
* A magyar fordítást AngryWolf <angrywolf2009@gmail.com> készítette.
|
||||
* $Id$
|
||||
*
|
||||
* Felhasználható Unreal3.2 és későbbi verziókhoz
|
||||
* Felhasználható Unreal3.2.x
|
||||
*
|
||||
* Oké, emberek! Ez az új példa konfiguráció. A kinézete nagyon hasonló
|
||||
* a C++-hoz, olyasformán. Mindenesetre itt az ideje végigmennünk rajta. Eleinte
|
||||
@@ -164,10 +164,12 @@ allow {
|
||||
* Szintaktika:
|
||||
* allow channel {
|
||||
* channel "csatornanév";
|
||||
* class "clients"; (nem kötelező)
|
||||
* };
|
||||
*/
|
||||
allow channel {
|
||||
allow channel {
|
||||
channel "#AWarezSzívás";
|
||||
class "clients";
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -532,7 +534,55 @@ alias "glinebot" {
|
||||
type command;
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: files {}
|
||||
* RÉGI: include/config.h
|
||||
*
|
||||
* Ez a blokk felülírja az IRCd alapértelmezett útvonalait olyan fájlok
|
||||
* betöltésére, mint az MOTD, PID fájl mentése vagy a behangoló fájl
|
||||
* írása/olvasása. Ennek a blokknak a jelenléte támogatást ad arra, hogy
|
||||
* egyetlen telepített UnrealIRCd-nek több példányát futtassuk, amikor
|
||||
* a -c parancssori opcióval párosítjuk.
|
||||
*
|
||||
* Ahogy megszoktuk, a relatív útvonalak ahhoz a könyvtárhoz relatívan
|
||||
* értendőek, ahol az UnrealIRCd megtalálja az unrealircd.conf fájlt,
|
||||
* hacsak nem a -c paramétert megadjuk a parancssorban.
|
||||
*/
|
||||
files
|
||||
{
|
||||
/* A Nap Üzenete (Message Of The Day), elküldve a belépett felhasználóknak: */
|
||||
/* motd ircd.motd; */
|
||||
|
||||
/*
|
||||
* Egy rövid MOTD (short MOTD). Ha létezik ez a fájl, ezt a fájlt
|
||||
* fogják látni a felhasználók az MOTD helyett. A teljes MOTD-t
|
||||
* továbbra is megnézhetik az /MOTD parancs használatával.
|
||||
*/
|
||||
/* shortmotd ircd.smotd; */
|
||||
|
||||
/* Megjelenik, ha egy operátor bejelentkezik (/OPER) */
|
||||
/* opermotd oper.motd; */
|
||||
|
||||
/* MOTD hozzáfűzés a szolgáltatásoknak. */
|
||||
/* svsmotd ircd.svsmotd; */
|
||||
|
||||
/* Bot MOTD */
|
||||
/* botmotd bot.motd; */
|
||||
|
||||
/* Megjelenik a /RULES parancsra */
|
||||
/* rules ircd.rules; */
|
||||
|
||||
/*
|
||||
* Itt tárol és innen tölt be az IRCd néhány olyan értéket, amelyet
|
||||
* minden szerverújraindítás során meg kell őriznie. Egy olyan fájlra
|
||||
* kell, hogy mutasson, amely létezik, és az IRCd-nek van módosítási joga,
|
||||
* vagy pedig olyan könyvtárban van, ahol az IRCd-nek van fájllétrehozási joga.
|
||||
*/
|
||||
/* tunefile ircd.tune; */
|
||||
|
||||
/* Ide mentjük az IRCd PID fájlját. Az IRCd számára írhatónak kell lennie. */
|
||||
/* pidfile ircd.pid; */
|
||||
};
|
||||
|
||||
/*
|
||||
* ÚJ: tld {}
|
||||
@@ -677,11 +727,13 @@ deny dcc {
|
||||
* deny channel {
|
||||
* channel "(csatorna)";
|
||||
* reason "indok";
|
||||
* class "clients"; (nem kötelező)
|
||||
* };
|
||||
*/
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "A warez törvényellenes";
|
||||
class "clients";
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
* $Id$
|
||||
* Vertaald door Mark
|
||||
*
|
||||
* Werkt voor Unreal3.2 en hoger
|
||||
* Werkt voor Unreal3.2.x
|
||||
*
|
||||
* Dit is de nieuwe example.conf. Het lijkt veel op C++.
|
||||
* Het begin is wellicht moeilijk, maar met wat ervaring en lezen
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* (Encoding): Windows-1251
|
||||
*
|
||||
* Работает для Unreal3.2 и выше
|
||||
* Работает для Unreal3.2.x
|
||||
*
|
||||
* Итак, это русскоязычный пример example.conf. По синтаксису похож на C++.
|
||||
* По началу будет тяжело понять, что тут написано, однако во время практики и чтения
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
* Önceki Çevirmen: Mustafa "Ironic" Cakmak (ironic@unrealircd.org)
|
||||
* Türkçe Çeviri: Serkan Sepetçi (diablo@unrealircd.org)
|
||||
*
|
||||
* Unreal3.2 ve üstü sürümler için kullanılmaktadır
|
||||
* Unreal3.2.x sürümler için kullanılmaktadır
|
||||
*
|
||||
* Peki beyler. Bu example.conf dosyasının yenisi. C++ türüne çok benziyor.
|
||||
* Neyse şimdi bunun üstesinden gelme zamanı. Başlangıçta zor gelebilir, fakat
|
||||
|
||||
+1
-1
@@ -101,7 +101,7 @@ help Umodes {
|
||||
" N = Administrateur du Réseau";
|
||||
" C = Co-Administrateur du Serveur";
|
||||
" -";
|
||||
" d = Fait en sorte que vous ne receviez plus les PRIVMSGs des salons (Sourd)";
|
||||
" d = Ne reçoit que les PRIVMSGs aux salons commençant par un caractère de commande pour bot";
|
||||
" g = Peut lire et envoyer des notices aux GlobOps et aux LocOps";
|
||||
" h = Disponible pour aider (Help Operator)";
|
||||
" i = Invisible (Non montrés dans les recherchers /WHO)";
|
||||
|
||||
+1
-1
@@ -100,7 +100,7 @@ help Umodes {
|
||||
" N = Network Administrator";
|
||||
" C = Co Administrator";
|
||||
" -";
|
||||
" d = Kanalda yazılan mesajları görmenizi engeller";
|
||||
" d = Sadece bot komut karakteri ile başlayan kanal mesajları görmenizi engeller";
|
||||
" g = GlobOps ve LocOps mesajlarını görmenizi sağlar";
|
||||
" h = Yardim görevlisi statüsü verir.(HelpOp)(Oper Bloğunda belirtilir)";
|
||||
" i = Görünmez kullanıcı (/who sorgusunda görünmez)";
|
||||
|
||||
@@ -17,6 +17,12 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p style="background: #cc0000">NOTE: This documentation is about the <b>old
|
||||
series</b> (UnrealIRCd 3.2.x).
|
||||
If you are using UnrealIRCd 4 then check the
|
||||
<a href="https://www.unrealircd.org/docs/UnrealIRCd_4_documentation">UnrealIRCd 4 documentation</a>
|
||||
instead.</p>
|
||||
|
||||
<a href="unreal32docs.html">English</a> | German |
|
||||
<a href="unreal32docs.hu.html">Hungarian</a> |
|
||||
<a href="unreal32docs.fr.html">French</a> |
|
||||
@@ -27,7 +33,7 @@
|
||||
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Version: 3.2.10-rc1</font><br>
|
||||
<font size="4">Version: 3.2.10.5</font><br>
|
||||
<b>Letztes Update dieses Handbuchs:</b> 2009-12-24</div>
|
||||
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke<font face="Helvetica,Arial" size="-1">/
|
||||
aquanight / WolfSage</font><br>
|
||||
@@ -217,9 +223,9 @@ Bug gemeldet wird!</p></div>
|
||||
</ul>
|
||||
<li><b>Windows Versionen:</b>
|
||||
<ul>
|
||||
<li>Windows 2000 (Pro, Server, Advanced Server)
|
||||
<li>WindowsXP (Home, Pro)
|
||||
<li>Windows XP (Home, Pro)
|
||||
<li>Windows 2003
|
||||
<li>Windows 7
|
||||
</ul>
|
||||
<li><b>Getestete Architektueren (Prozessoren):</b>
|
||||
<ul>
|
||||
|
||||
@@ -20,6 +20,12 @@
|
||||
<!-- $Id$ -->
|
||||
|
||||
<body>
|
||||
<p style="background: #cc0000">NOTE: This documentation is about the <b>old
|
||||
series</b> (UnrealIRCd 3.2.x).
|
||||
If you are using UnrealIRCd 4 then check the
|
||||
<a href="https://www.unrealircd.org/docs/UnrealIRCd_4_documentation">UnrealIRCd 4 documentation</a>
|
||||
instead.</p>
|
||||
|
||||
<a href="unreal32docs.html">English</a> |
|
||||
<a href="unreal32docs.de.html">German</a> |
|
||||
<a href="unreal32docs.hu.html">Hungarian</a> |
|
||||
@@ -30,8 +36,8 @@ Spanish
|
||||
<br><br>
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Version: 3.2.10</font><br>
|
||||
<b>Ultima actualizacion del doc:</b> 2012-11-11</div>
|
||||
<font size="4">Version: 3.2.10.5</font><br>
|
||||
<b>Ultima actualizacion del doc:</b> 2013-04-05</div>
|
||||
<br>
|
||||
<b>Programador jefe/mantenimiento:</b> Syzop<br>
|
||||
<b>Programadores:</b> binki<br>
|
||||
@@ -39,6 +45,8 @@ Spanish
|
||||
WolfSage, McSkaf, Zogg, NiQuiL, assyrian, chasm, DrBin, llthangel,
|
||||
Griever, nighthawk<br>
|
||||
<b>Documentacion:</b> CKnight^ (documentacion inicial), Syzop (reescritura importante), codemastr, y mas contribuidores<br>
|
||||
<b>Traducción al español:</b> <a href="mailto:unknOwn@unrealircd.com">Crash</a><br>
|
||||
<b>Traducción anterior:</b> Trocotronic (<a href="irc://irc.redyc.com/">irc.redyc.com</a>)<br>
|
||||
<p>Para ver esta documentacion necesita un navegador compatible, cualquiera. Docs actualizados estan
|
||||
disponibles en <a href="http://www.vulnscan.org/UnrealIRCd/unreal32docs.html">http://www.vulnscan.org/UnrealIRCd/unreal32docs.html</a>
|
||||
y el FAQ en <a href="http://www.vulnscan.org/UnrealIRCd/faq/" TARGET="_blank">http://www.vulnscan.org/UnrealIRCd/faq/</a>.
|
||||
@@ -64,7 +72,7 @@ Spanish
|
||||
-- 3.13. <a href="#feature_bantypes">Tipos de ban</a><br>
|
||||
-- 3.14. <a href="#feature_spamfilter">Filtro de spam</a><br>
|
||||
-- 3.15. <a href="#feature_cidr">CIDR</a><br>
|
||||
-- 3.16. <a href="#feature_nickchars">Configuraion de caracteres de nick</a><br>
|
||||
-- 3.16. <a href="#feature_nickchars">Configuracion de caracteres de nick</a><br>
|
||||
-- 3.17. <a href="#feature_cgiirc">Soporte para CGI:IRC</a><br>
|
||||
-- 3.18. <a href="#feature_timesync">Tiempo de sincronizacion</a><br>
|
||||
-- 3.19. <a href="#feature_authtypes">Tipos de autentificacion</a><br>
|
||||
@@ -182,9 +190,9 @@ Windows:<br>
|
||||
</ul>
|
||||
<li><b>Versiones Windows:</b>
|
||||
<ul>
|
||||
<li>Windows 2000 (Pro, Server, Advanced Server)
|
||||
<li>Windows XP (Home, Pro)
|
||||
<li>Windows 2003
|
||||
<li>Windows 7
|
||||
</ul>
|
||||
<li><b>Arquitecturas probadas:</b>
|
||||
<ul>
|
||||
@@ -322,7 +330,7 @@ Windows:<br>
|
||||
<p><font size="+2"><b>3.12 - Características anti-flood</b></font><a name="feature_antiflood"></a></p><div class="desc">
|
||||
<p>
|
||||
<b>Throttling</b><br>
|
||||
Throttling es un método que le permite fijar un límite de cuántas veces pueden los usuarios conectarse y desconectarse de su servidor. Puede configurarlo en el bloque set::throttle para permitir X conexiones en YY segundos para la misma IP.<br>
|
||||
Throttling es un método que le permite fijar un límite de cuántas veces pueden los usuarios conectarse y desconectarse de su servidor. Puede configurarlo en el bloque set::throttle para permitir ciertas conexiones en tantos segundos para la misma IP.<br>
|
||||
<b>Modos de canal</b><br>
|
||||
Existen varios modos de canal para prevenir ataques. Algunos son:<br>
|
||||
<b>K</b> = no /knock, <b>N</b> = no cambios de nick, <b>C</b> = no CTCPs, <b>M</b> = sólo usuarios reigstrados (+r) pueden hablar, <b>j</b> = join throttling (por usuario)<br>
|
||||
@@ -428,7 +436,7 @@ Estos bans especifican qué acciones se ven afectadas por una prohibición:<br>
|
||||
<i>Ej: ~q:*!*@blah.blah.com</i></td></tr>
|
||||
<tr><td>~n</td><td>cambionick</td><td>Los usuarios que coincidan con este ban no podrán cambiarse el nick, a menos que tenga +v o superior. <i>Ej: ~n:*!*@*.aol.com</i></td></tr>
|
||||
<tr><td>~j</td><td>join</td><td>Los usuarios que coincidan con este ban no podrán entrar al canal.
|
||||
He may perform all other activities if he is already on the channel, such as speaking and changing his nick.
|
||||
Puede realizar todas las demás actividades, si ya está en el canal, tales como hablar y cambiar su nick.
|
||||
<i>Ej: ~j:*!*@*.aol.com</i><br>
|
||||
Podría ser útil para evitar que entren las personas con un mismo ISP, y que sean capaces de hablar/cambiar de nick libremente una vez en el canal, como después de un /INVITE.</td></tr>
|
||||
</table>
|
||||
@@ -2443,7 +2451,8 @@ set {
|
||||
<p><font class="set">set::dns::retries <numero-de-intentos>;</font><br>
|
||||
Número de intentos si el servidor DNS no obtiene respuesta (NO IMPLEMENTADO).</p>
|
||||
<p><font class="set">set::dns::nameserver <nombre-de-dns-server>;</font><br>
|
||||
Especifica el host del servidor a usar en las búsquedas DNS (NO IMPLEMENTADO).</p>
|
||||
Especifica la dirección IP del servidor que se utilizará en las búsquedas DNS.
|
||||
Sólo se utiliza como reserva para cuando c-ares es incapaz de adivinar los servidores de nombres.</p>
|
||||
<p><font class="set">set::dns::bind-ip <ip>;</font><br>
|
||||
Especifica la IP a enlazar para el resolver. Raras veces se usa.</p>
|
||||
<p><font class="set">set::network-name <nombre-de-red>;</font><br>
|
||||
@@ -2571,6 +2580,16 @@ set {
|
||||
Si un spamfilter tarda más de esta cantidad de milisegundos para ejecutarse
|
||||
(1000ms = 1 segundo), a continuacion el spamfilter sera removido (predeterminado: 500).
|
||||
Vea tambien <a href="#feature_spamfilter_slow">Deteccion Lenta de Spamfilter</a>.</p>
|
||||
<p><font class="set">set::spamfilter::stop-on-first-match <yes|no></font><br>
|
||||
Por defecto es 'yes' lo que significa que una vez el filtro de spam
|
||||
lo encuentre UnrealIRCd tomara una accion inmediata y cualquier otro filtro adicional
|
||||
no sera procesado.<br>
|
||||
Si esta seteado a 'no' despues de que se encuentre el primer filtro de spam
|
||||
otros filtros pueden ser revisados. Todos los que coincidan seran logeados
|
||||
y el mensaje sera enviado a los IRCOps con (snomask +S). Sin embargo el usuario afectado,
|
||||
solo vera la accion del filtro de spam (eg: block o kill)
|
||||
sera el filtro de spam con 'accion mas grave' (gzline es el mas alto,
|
||||
block y warn los mas leves).</p>
|
||||
<p><font class="set">set::check-target-nick-bans <yes|no></font><br>
|
||||
Si un usuario se cambia de nick, comprueba si el nuevo nick se relaciona con algún ban.
|
||||
Si es así, no permite el cambio de nick. Por defecto 'yes'.</p>
|
||||
|
||||
@@ -20,6 +20,12 @@
|
||||
<!-- $Id$ -->
|
||||
|
||||
<body>
|
||||
<p style="background: #cc0000">NOTE: This documentation is about the <b>old
|
||||
series</b> (UnrealIRCd 3.2.x).
|
||||
If you are using UnrealIRCd 4 then check the
|
||||
<a href="https://www.unrealircd.org/docs/UnrealIRCd_4_documentation">UnrealIRCd 4 documentation</a>
|
||||
instead.</p>
|
||||
|
||||
<a href="unreal32docs.html">English</a> |
|
||||
<a href="unreal32docs.de.html">German</a> |
|
||||
<a href="unreal32docs.hu.html">Hungarian</a> |
|
||||
@@ -33,8 +39,8 @@
|
||||
<div style="text-align:center;">
|
||||
<b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com/">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Version: 3.2.10-rc1</font><br>
|
||||
<b>Dernière mise à jour de la documentation:</b> 2012-10-16
|
||||
<font size="4">Version: 3.2.10.5</font><br>
|
||||
<b>Dernière mise à jour de la documentation:</b> 2013-04-05
|
||||
</div>
|
||||
|
||||
<br>
|
||||
@@ -210,7 +216,7 @@
|
||||
</ul>
|
||||
<p>
|
||||
Veuillez vérifier les RELEASE NOTES pour voir ce qui a changé.
|
||||
Si vous notez des changements (ou bug) entre les versions, VOUS DEVEZ ËTRE SUR D'AVOIR LU LES RELEASE NOTES EN PREMIER avant de reporter cela comme un bug.
|
||||
Si vous notez des changements (ou bug) entre les versions, VOUS DEVEZ ÊTRE SÛR D'AVOIR LU LES RELEASE NOTES EN PREMIER avant de reporter cela comme un bug.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -234,9 +240,9 @@
|
||||
</li>
|
||||
<li><b>Version Windows:</b>
|
||||
<ul>
|
||||
<li>Windows 2000 (Pro, Server, Advanced Server)</li>
|
||||
<li>Windows XP (Home, Pro)</li>
|
||||
<li>Windows 2003</li>
|
||||
<li>Windows 7</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><b>Architectures testées:</b>
|
||||
@@ -315,7 +321,7 @@
|
||||
</p>
|
||||
<p>
|
||||
Ces clés DOIVENT être les mêmes sur TOUS LES SERVEURS d'un réseau.
|
||||
Elles doivent être gardées SECRËTES car il est possible de déchiffrer l'host original si vous connaissez ces clés (ce qui rendrait le umode +x inutile).
|
||||
Elles doivent être gardées SECRÈTES car il est possible de déchiffrer l'host original si vous connaissez ces clés (ce qui rendrait le umode +x inutile).
|
||||
</p>
|
||||
<p>
|
||||
Astuce: Si vous utilisez un système *UNIX et devez créer de nouvelles clés de cloaking, vous pouvez exécuter './unreal gencloak' dans votre shell, ce qui affichera trois chaînes aléatoires que vous pourrez utiliser.
|
||||
@@ -655,7 +661,7 @@
|
||||
Cela devrait vous aider à savoir comment un ban doit être établi le moment venu.<br><br>
|
||||
|
||||
<b>Types de ban étendus</b><br>
|
||||
Les bans étendus ressemble à ~<type>:<parameter>.
|
||||
Les bans étendus ressemblent à ~<type>:<parameter>.
|
||||
Ils vous permettent de bannir (ou exempter de ban) quelqu'un en vous basant sur quelque chose de différent du traditionnel masque nick!user@host.
|
||||
Ils permettent aussi des choses comme rendre muet un utilisateur.<br><br>
|
||||
|
||||
@@ -2560,7 +2566,7 @@ deny dcc {
|
||||
};</pre><p></p>
|
||||
|
||||
<p>
|
||||
Ce bloc vous permets d'utiliser des règles spécifiques pour interdire le link d'un serveur.
|
||||
Ce bloc vous permet d'utiliser des règles spécifiques pour interdire le link d'un serveur.
|
||||
Le deny::mask spécifie un nom de serveur (avec joker) auquel cette règle s'applique.
|
||||
La directive deny::rules est très complexe.
|
||||
</p>
|
||||
@@ -3528,7 +3534,13 @@ spamfilter {
|
||||
|
||||
<p>
|
||||
<font class="set">set::dns::nameserver <name-of-dns-server>;</font> (PAS IMPLEMENTE)<br>
|
||||
Spécifie l'hostname du serveur qui sera utilisé pour la résolution de DNS.</p>
|
||||
Spécifie l'hostname du serveur qui sera utilisé pour la résolution de DNS.
|
||||
</p>
|
||||
<p>
|
||||
<font class="set">set::dns::nameserver <name-of-dns-server>;</font><br/>
|
||||
Spécifie l'adresse IP du serveur qui sera utilisé pour la résolution DNS.
|
||||
N'est utilisé que si c-ares n'arrive pas à deviner les serveurs de noms (par exemple car /etc/resolv.conf est vide).
|
||||
</p>
|
||||
<p>
|
||||
<font class="set">set::dns::bind-ip <ip>;</font><br>
|
||||
Spécifie l'IP à relier au résolveur, presque jamais requis.
|
||||
@@ -3747,6 +3759,13 @@ spamfilter {
|
||||
Si un filtre de spamfilter prend plus de temps que cette durée en millisecondes (1000ms = 1s) pour s'exécuter, alors ce filtre sera enlevé (default: 500).
|
||||
Voir aussi <a href="#feature_spamfilter_slow">Slow Spamfilter Detection</a>.
|
||||
</p>
|
||||
<p>
|
||||
<font class="set">set::spamfilter::stop-on-first-match <yes|no></font><br>
|
||||
Par défaut, 'yes', ce qui signifie qu'une fois qu'un spamfilter correspondant est trouvé, UnrealIRCd va appliquer l'action correspondante immédiatement et les spamfilters restants ne seront pas testés.<br>
|
||||
Si fixé à 'no', alors une fois le premier spamfilter trouvé, les spamfilters restants seront quand même testés.
|
||||
Tous les filtres correspondants seront loggués et un message envoyé aux IRCOps (snomask +S) pour chaque filtre.
|
||||
Par contre, l'utilisateur concerné ne verra qu'une seule des actions (ex: block ou kill), la plus grave de toutes les actions des spamfilters correspondants (gzline est la plus grave, block et warn les moins graves).
|
||||
</p>
|
||||
<p>
|
||||
<font class="set">set::check-target-nick-bans <yes|no></font><br>
|
||||
A chaque fois qu'un utilisateur change son pseudo, vérifie si le nouveau pseudo est banni.
|
||||
@@ -4946,7 +4965,7 @@ spamfilter {
|
||||
<p>
|
||||
Ce module bannit automatiquement les utilisateurs essayant d'envoyer une requête de type HTTP.
|
||||
Il a été écrit par Syzop pour contrer l'attaque XPS touchant Firefox, grâce à laquelle les navigateurs supportant l'AJAX peuvent agir comme robots spammeurs sur IRC.
|
||||
Pour choisir ce que m_nopost doit faire lorsqu'il reçoit une telle requête, configurez <a href="#set_nopost_ban_action">
|
||||
Pour choisir ce que m_nopost doit faire lorsqu'il reçoit une telle requête, configurez <a href="#set_nopost_ban_action">
|
||||
set::nopost::ban-action</a> et <a href="#set_nopost_ban_time">set::nopost::ban-time</a> (et leurs amis).
|
||||
</p>
|
||||
<p>
|
||||
|
||||
+24
-5
@@ -20,6 +20,12 @@
|
||||
<!-- $Id$ -->
|
||||
|
||||
<body>
|
||||
<p style="background: #cc0000">NOTE: This documentation is about the <b>old
|
||||
series</b> (UnrealIRCd 3.2.x).
|
||||
If you are using UnrealIRCd 4 then check the
|
||||
<a href="https://www.unrealircd.org/docs/UnrealIRCd_4_documentation">UnrealIRCd 4 documentation</a>
|
||||
instead.</p>
|
||||
|
||||
English |
|
||||
<a href="unreal32docs.de.html">German</a> |
|
||||
<a href="unreal32docs.hu.html">Hungarian</a> |
|
||||
@@ -30,8 +36,8 @@ English |
|
||||
<br><br>
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Version: 3.2.10</font><br>
|
||||
<b>Last doc update:</b> 2012-10-16</div>
|
||||
<font size="4">Version: 3.2.10.5</font><br>
|
||||
<b>Last doc update:</b> 2013-11-20</div>
|
||||
<br>
|
||||
<b>Head coder/maintainer:</b> Syzop<br>
|
||||
<b>Coders:</b> binki<br>
|
||||
@@ -192,9 +198,9 @@ Windows:<br>
|
||||
</ul>
|
||||
<li><b>Windows version:</b>
|
||||
<ul>
|
||||
<li>Windows 2000 (Pro, Server, Advanced Server)
|
||||
<li>Windows XP (Home, Pro)
|
||||
<li>Windows 2003
|
||||
<li>Windows 7
|
||||
</ul>
|
||||
<li><b>Architectures tested:</b>
|
||||
<ul>
|
||||
@@ -2591,8 +2597,11 @@ set {
|
||||
<p><font class="set">set::dns::retries <number-of-retries>;</font><br>
|
||||
A numeric value specifying the number of times the DNS lookup will be retried
|
||||
if failure occurs. (NOT IMPLEMENTED)</p>
|
||||
<p><font class="set">set::dns::nameserver <name-of-dns-server>;</font><br>
|
||||
Specifies the hostname of the server that will be used for DNS lookups. (NOT IMPLEMENTED)</p>
|
||||
<p><font class="set">set::dns::nameserver <name-of-dns-server>;</font><br/>
|
||||
Specifies the IP address of the server that will be used for DNS
|
||||
lookups. Used only as a fallback for when c-ares is unable to guess
|
||||
the nameservers (such as if /etc/resolv.conf is empty).
|
||||
</p>
|
||||
<p><font class="set">set::dns::bind-ip <ip>;</font><br>
|
||||
Specifies the IP to bind to for the resolver, rarely ever needed.</p>
|
||||
<p><font class="set">set::network-name <name-of-network>;</font><br>
|
||||
@@ -2734,6 +2743,16 @@ set {
|
||||
If a spamfilter takes longer than this amount of milliseconds to execute
|
||||
(1000ms = 1 second), then the spamfilter will be removed (default: 500).
|
||||
See also <a href="#feature_spamfilter_slow">Slow Spamfilter Detection</a>.</p>
|
||||
<p><font class="set">set::spamfilter::stop-on-first-match <yes|no></font><br>
|
||||
By default this is set to 'yes' which means that once a spamfilter
|
||||
matches UnrealIRCd will take action immediately and any additional
|
||||
(other) spamfilters will not be processed.<br>
|
||||
When this is set to 'no' then after the first spamfilter match other
|
||||
spamfilters will still be checked. All of these matches will be logged
|
||||
and a message will go to IRCOps (snomask +S) for each one. The affected
|
||||
user, however, will only see one spamfilter action (eg: block or kill)
|
||||
which will be the spamfilter with the 'gravest action' (gzline is highest,
|
||||
block and warn are lowest).</p>
|
||||
<p><font class="set">set::check-target-nick-bans <yes|no></font><br>
|
||||
Whenever the user changes his/her nick, check if the NEW nick would be
|
||||
banned. If so, do not allow the nickchange. Default is yes.</p>
|
||||
|
||||
+169
-101
@@ -19,6 +19,12 @@
|
||||
<!-- $Id$ -->
|
||||
|
||||
<body>
|
||||
<p style="background: #cc0000">NOTE: This documentation is about the <b>old
|
||||
series</b> (UnrealIRCd 3.2.x).
|
||||
If you are using UnrealIRCd 4 then check the
|
||||
<a href="https://www.unrealircd.org/docs/UnrealIRCd_4_documentation">UnrealIRCd 4 documentation</a>
|
||||
instead.</p>
|
||||
|
||||
<a href="unreal32docs.html">English</a> |
|
||||
<a href="unreal32docs.de.html">German</a> |
|
||||
Hungarian |
|
||||
@@ -29,8 +35,8 @@ Hungarian |
|
||||
<br><br>
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com/">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Verzió: 3.2.10-rc1</font><br>
|
||||
<b>Utolsó dokumentáció frissítés:</b> 2010-11-15</div>
|
||||
<font size="4">Verzió: 3.2.10.5</font><br>
|
||||
<b>Utolsó dokumentáció frissítés:</b> 2013-11-20</div>
|
||||
<br>
|
||||
<b>Fõ fejlesztõ/karbantartó:</b> Syzop<br>
|
||||
<b>Fejlesztõk:</b> binki<br>
|
||||
@@ -58,16 +64,16 @@ Hungarian |
|
||||
-- 3.7. <a href="#feature_opercmds">Operátori parancsok</a><br>
|
||||
-- 3.8. <a href="#feature_ssl">SSL</a><br>
|
||||
-- 3.9. <a href="#feature_ipv6">IPv6</a><br>
|
||||
-- 3.10. <a href="#feature_ziplinks">Zip linkek</a><br>
|
||||
-- 3.11. <a href="#feature_dyndns">Dinamikus DNS-sel/IP-vel linkelések támogatása</a><br>
|
||||
-- 3.12. <a href="#feature_antiflood">Árasztásvédelmi lehetőségek</a><br>
|
||||
-- 3.13. <a href="#feature_bantypes">Ban típusok</a><br>
|
||||
-- 3.14. <a href="#feature_spamfilter">A spamszűrő</a><br>
|
||||
-- 3.15. <a href="#feature_cidr">CIDR</a><br>
|
||||
-- 3.16. <a href="#feature_nickchars">Karakterkészletek nicknevekhez</a><br>
|
||||
-- 3.17. <a href="#feature_cgiirc">CGI:IRC támogatás</a><br>
|
||||
-- 3.18. <a href="#feature_timesync">Időszinkronizáció</a><br>
|
||||
-- 3.19. <a href="#feature_other">További jellegzetességek</a><br>
|
||||
-- 3.10. <a href="#feature_dyndns">Dinamikus DNS-sel/IP-vel linkelések támogatása</a><br>
|
||||
-- 3.11. <a href="#feature_antiflood">Árasztásvédelmi lehetõségek</a><br>
|
||||
-- 3.12. <a href="#feature_bantypes">Ban típusok</a><br>
|
||||
-- 3.13. <a href="#feature_spamfilter">A spamszûrõ</a><br>
|
||||
-- 3.14. <a href="#feature_cidr">CIDR</a><br>
|
||||
-- 3.15. <a href="#feature_nickchars">Karakterkészletek nicknevekhez</a><br>
|
||||
-- 3.16. <a href="#feature_cgiirc">CGI:IRC támogatás</a><br>
|
||||
-- 3.17. <a href="#feature_timesync">Idõszinkronizáció</a><br>
|
||||
-- 3.18. <a href="#feature_authtypes">Hitelesítési típusok</a><br>
|
||||
-- 3.19. <a href="#feature_other">További funkciók</a><br>
|
||||
4. <a href="#configuringyourunrealircdconf">Az unrealircd.conf fájlod
|
||||
beállítása</a><br>
|
||||
---4.1. <a href="#configurationfileexplained">A konfigurációs formátumról</a><br>
|
||||
@@ -191,9 +197,9 @@ Windows:<br>
|
||||
</ul>
|
||||
<li><b>Windows verzió:</b>
|
||||
<ul>
|
||||
<li>Windows 2000 (Pro, Server, Advanced Server)
|
||||
<li>Windows XP (Home, Pro)
|
||||
<li>Windows 2003
|
||||
<li>Windows 7
|
||||
</ul>
|
||||
<li><b>Tesztelt architektúrák:</b>
|
||||
<ul>
|
||||
@@ -261,12 +267,12 @@ mert m
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b>3.3 - Snomaszkok</b></font><a name="feature_snomasks"></a></p><div class="desc">
|
||||
<p>A snomaskok vagy szerverüzenet-maszkok (server notice mask) a felhasználói módok egy különleges fajtához tartozik, amelyekkel
|
||||
<p>A snomaszkok vagy szerverüzenet-maszkok (server notice mask) a felhasználói módok egy különleges fajtához tartozik, amelyekkel
|
||||
beállíthatod, hogy milyen típusú szerverüzeneteket szeretnél fogadni (leggyakrabban operátorok használják).</p>
|
||||
<p>Ezek beállítására a /mode nickneved +s SNOMASZK parancs szolgál. Példa: /mode nickneved +s +cF<br>
|
||||
Egyes snomaskok eltávolítására a következőhöz hasonló parancsot használj: /mode nickneved +s -c<br>
|
||||
Vagy minden snomaskot törölhetsz a /mode nickneved -s paranccsal.</p>
|
||||
<p>A jelenleg rendelkezésre álló snomaskok az alábbiak:<br>
|
||||
Egyes snomaszkok eltávolítására a következõhöz hasonló parancsot használj: /mode nickneved +s -c<br>
|
||||
Vagy minden snomaszkot törölhetsz a /mode nickneved -s paranccsal.</p>
|
||||
<p>A jelenleg rendelkezésre álló snomaszkok az alábbiak:<br>
|
||||
c - helyi kapcsolódások<br>
|
||||
F - távoli kapcsolódások (kivéve U:line-os szerverekrõl)<br>
|
||||
f - árasztásokról szóló értesítések<br>
|
||||
@@ -281,9 +287,9 @@ mert m
|
||||
s - egyéb szerverüzenetek [*]<br>
|
||||
S - spamfilter értesítések<br>
|
||||
o - /oper-elésekrõl szóló értesítések<br>
|
||||
[*: ezt a snomaskot nem csak ircopok használhatják]<br>
|
||||
[*: ezt a snomaszkot nem csak ircopok használhatják]<br>
|
||||
</p>
|
||||
<p>Beállíthatod, hogy milyen snomaskokat kapj meg automatikusan (set::snomask-on-connect) és melyeket operátorrá
|
||||
<p>Beállíthatod, hogy milyen snomaszkokat kapj meg automatikusan (set::snomask-on-connect) és melyeket operátorrá
|
||||
váláskor (set::snomask-on-oper, oper::snomask)</p>
|
||||
<p>Alapértelmezésben, ha a felhasználó egyszerûen csak a +s módot állítja be, bizonyos snomaszkok lesznek beállítva. Közönséges felhasználóknak a +ks, operátoroknak a +kscfvGqo snomaszkok.</p></div>
|
||||
|
||||
@@ -343,19 +349,12 @@ mert m
|
||||
Ehhez az OPR-ben kell, hogy legyen IPv6 támogatás, valamint az UnrealIRCd-ben is engedélyezned kell az IPv6 támogatást a ./Config-oláskor.<br>
|
||||
</p><p>Bár a microsoftnak van egy kísérleti IPv6 megvalósítása w2k/XP-re, az UnrealIRCd azt (még) nem támogatja.</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.10 - Zip linkek</b></font><a name="feature_ziplinks"></a></p><div class="desc">
|
||||
<p>A zip linkek bekapcsolhatóak a szerver<->szerver linkekben, a zlib használatával tömörít adatokat.
|
||||
Megspórolhat 60-80% sávszélességet... Úgyhogy eléggé hasznos az alacsony sávszélességű linkekhez vagy olyanokhoz,
|
||||
ahol nagy mennyiségű felhasználó van; sokat segíthet a linkeléskor, mert rengeteg adat küldődik el a felhasználókról, csatornákról stb.</p>
|
||||
<p>A zip link támogatással történő fordításhoz válaszolj Yes-t a ./Config zlib-es kérdésében, valamint a konfigurációban állítsd be a
|
||||
link::options::zip opciót (mindkét oldalon).</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.11 - Dinamikus DNS-sel/IP-vel linkelések támogatása</b></font><a name="feature_dyndns"></a></p><div class="desc">
|
||||
<p><font size="+2"><b>3.10 - Dinamikus DNS-sel/IP-vel linkelések támogatása</b></font><a name="feature_dyndns"></a></p><div class="desc">
|
||||
<p>Az UnrealIRCd néhány (új) hasznos funkcióval segíti azokat a felhasználókat, akiknek dinamikus IP-jük van, és dinamikus DNS-t használnak
|
||||
(mint a valami.dyndns.org). Ha két dinamikus DNS-sel rendelkezõ gépet linkelsz, állítsd be a link::options::nodnscache és a link::options::nohostcheck opciókat.
|
||||
</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.12 - Árasztásvédelmi lehetőségek</b></font><a name="feature_antiflood"></a></p><div class="desc">
|
||||
<p><font size="+2"><b>3.11 - Árasztásvédelmi lehetõségek</b></font><a name="feature_antiflood"></a></p><div class="desc">
|
||||
<p>
|
||||
<b>Elfojtás</b><br>
|
||||
Az elfojtás (throttling) egy módszer annak korlátozására, hogy egy felhasználó milyen gyorsan bonthatja a kapcsolatot
|
||||
@@ -454,7 +453,7 @@ Y a m
|
||||
a csatornára.
|
||||
</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.13 - Ban típusok</b></font><a name="feature_bantypes"></a></p><div class="desc">
|
||||
<p><font size="+2"><b>3.12 - Ban típusok</b></font><a name="feature_bantypes"></a></p><div class="desc">
|
||||
<p>
|
||||
<b>Alapvetõ ban típusok és álcázott gazdanevek</b><br>
|
||||
Az UnrealIRCd támogatja az olyan alapvetõ ban típusokat, mint amilyen a <i>+b nick!user@host</i>.<br>
|
||||
@@ -526,7 +525,7 @@ p
|
||||
Modulokkal további kiterjesztett ban típusok is bevezethetõk.<br>
|
||||
</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.14 - A spamszűrő</b></font><a name="feature_spamfilter"></a></p><div class="desc">
|
||||
<p><font size="+2"><b>3.13 - A spamszûrõ</b></font><a name="feature_spamfilter"></a></p><div class="desc">
|
||||
<p>A spamszûrõ egy új rendszer a spamok, reklámok, férgek és egyéb dolgok leküzdésére. A csúnyaszórendszerhez
|
||||
hasonló mûködésû, de több elõnye is van.</p>
|
||||
<p>Spamszûrõk a /spamfilter paranccsal vehetõek fel, amely a következõ szintaktikát használja:<br>
|
||||
@@ -560,7 +559,7 @@ Modulokkal tov
|
||||
<tr><td>dccblock</td><td>megjelöli a felhasználót DCC blokkolásra (nem küldhet DCC-ket)</td></tr>
|
||||
<tr valign="top"><td>viruschan</td><td>lelépteti a felhasználót minden csatornáról, belépteti a <tt>set::spamfilter::virus-help-channel</tt> csatornára, letilt minden parancsot,
|
||||
kivéve a PONG-ot, az ADMIN-t és a <tt>set::spamfilter::virus-help-channel</tt> csatornára küldött üzeneteket/értesítéseket</td></tr>
|
||||
<tr><td>warn</td><td>értesítést küld az IRCOpoknak (spamszűrő snomask), és
|
||||
<tr><td>warn</td><td>értesítést küld az IRCOpoknak (spamszûrõ snomaszk), és
|
||||
tájékoztatja a felhasználót, hogy az üzenetét lehallgatták. További lépéseket
|
||||
nem tesz, az üzenetet nem blokkolja.</td></tr>
|
||||
</table></td></tr>
|
||||
@@ -617,7 +616,7 @@ Jelenleg ez a funkci
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b>3.15 - CIDR</b></font><a name="feature_cidr"></a></p><div class="desc">
|
||||
<p><font size="+2"><b>3.14 - CIDR</b></font><a name="feature_cidr"></a></p><div class="desc">
|
||||
<p>Az UnrealIRCd most már támogatja a CIDR-t is (Classless Interdomain Routing - osztálynélküli körzetek közti forgalomirányítás). A CIDR alkalmas
|
||||
IP tartományok kitiltására. Az egyes ISP-knek (Internet Service Provider - internet-szolgáltató) CIDR használatával osztanak ki IP-ket, ezért azzal, hogy CIDR alapú kitiltásokat lehet beállítani,
|
||||
egyszerûen kitilthatunk egy ISP-t. Az Unreal IPv4-re és IPv6-ra is támogatja a CIDR-t. CIDR maszkokat
|
||||
@@ -627,7 +626,7 @@ a /kline, a /gline, a /zline, a /gzline
|
||||
pl. 127.0.0.0/8 (illeszkedési tartománya 127.0.0.0 - 127.255.255.255) és fe80:0:0:123::/64 (illeszkedési tartománya
|
||||
fe80:0:0:123:0:0:0:0 - fe80:0:0:123:ffff:ffff:ffff:ffff).</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.16 - Karakterkészletek nicknevekhez</b></font><a name="feature_nickchars"></a></p><div class="desc">
|
||||
<p><font size="+2"><b>3.15 - Karakterkészletek nicknevekhez</b></font><a name="feature_nickchars"></a></p><div class="desc">
|
||||
<p>Az UnrealIRCd-nek most már megvan az a képessége, hogy meghatározzuk, milyen karakterkészleteket/nyelveket szeretnénk engedélyezni
|
||||
a nicknevekben. Ezt a <b>set::allowed-nickchars</b> direktívával tehetjük meg.<br>
|
||||
Egy táblázat az összes választási lehetõségrõl:<br>
|
||||
@@ -684,14 +683,14 @@ enged
|
||||
<pre>set { allowed-nickchars { chinese-simp; chinese-trad; }; };</pre>
|
||||
</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.17 - CGI:IRC támogatás</b></font><a name="feature_cgiirc"></a></p><div class="desc">
|
||||
<p><font size="+2"><b>3.16 - CGI:IRC támogatás</b></font><a name="feature_cgiirc"></a></p><div class="desc">
|
||||
<p>Az UnrealIRCd támogatja a CGI:IRC gazdanév hamisítást, ami azt jelenti, hogy megjelölhetünk bizonyos CGI:IRC
|
||||
átjárókat "megbízhatóként", ezáltal az IRCd a felhasználók valódi gazdanevét/IP címét jeleníti meg mindenhol
|
||||
az IRC-n, és nem a CGI:IRC átjáróét.</p>
|
||||
<p>Lásd a <a href="#cgiirc">cgiirc blokkot</a> a beállításának hogyanjáról.</p>
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b>3.18 - Időszinkronizáció</b></font><a name="feature_timesync"></a></p><div class="desc">
|
||||
<p><font size="+2"><b>3.17 - Idõszinkronizáció</b></font><a name="feature_timesync"></a></p><div class="desc">
|
||||
<p>A pontos idõ nagyon fontos az IRC szervereken. Pontos idõ nélkül a csatornákon desynch problémák léphetnek fel, ártatlan
|
||||
felhasználók kaphatnak kilövést, helytelenül jelenhetnek meg csatornák a /LIST-ben, egyszóval: óriási baj származhat belõle.</p>
|
||||
<p>Az UnrealIRCd-nek van egy kis beépített idõszinkronizáció támogatása.
|
||||
@@ -706,7 +705,79 @@ az IRCd ennek ellen
|
||||
a <a href="#setblock">set leírását</a> további információkért.</p>
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b>3.19 - További jellegzetességek</b></font><a name="feature_other"></a></p><div class="desc">
|
||||
<p><font size="+2"><b>3.18 - Hitelesítési típusok</b></font><a name="feature_authtypes"></a></p><div class="desc">
|
||||
<p>A konfigurációs fájl különbözõ pontjain, például az <a
|
||||
href="#operblock">oper blokkban</a>, az <a href="#allowblock">allow blokkban</a> és
|
||||
a <a href="#linkblock">link blokkban</a>, jelszóval vagy más módon hitelesíthetjük
|
||||
a klienseket.<br>
|
||||
|
||||
Megadhatjuk a jelszót egyszerû szövegként, de megadhatunk egy
|
||||
hitelesítési típust is.<br>
|
||||
A következõ hitelesítési típusok állnak rendelkezésre:<br>
|
||||
<table border="0">
|
||||
<TR><TD><b>Hitelesítési típus:</b></TD><TD><b>Leírás:</b></TD><TD><b>Függõségek:</b></TD><TD><b>Hogyan generáljuk:</b></TD></TR>
|
||||
<TR><TD><b>crypt</b></TD><TD>UNIX crypt</TD><TD>Windows: OpenSSL szükséges</TD><TD>/MKPASSWD crypt :jelszó</TD></TR>
|
||||
<TR><TD><b>md5</b></TD><TD>sózott MD5</TD><TD>Mindig elérhetõ</TD><TD>/MKPASSWD md5 :jelszó</TD></TR>
|
||||
<TR><TD><b>sha1</b></TD><TD>sózott SHA1</TD><TD>OpenSSL szükséges</TD><TD>/MKPASSWD sha1 :jelszó</TD></TR>
|
||||
<TR><TD><b>ripemd160</b></TD><TD>sózott RIPEMD160</TD><TD>OpenSSL szükséges</TD><TD>/MKPASSWD ripemd160 :jelszó</TD></TR>
|
||||
<TR><TD><b>sslclientcert</b></TD><TD>SSL kliens tanúsítvány</TD><TD>OpenSSL szükséges</TD><TD>A nyilvános tanúsítvány .pem fájl útvonala.</TD></TR>
|
||||
<TR><TD><b>sslclientcertfp</b></TD><TD>SSL kliens tanúsítvány ujjlenyomat</TD><TD>OpenSSL szükséges</TD><TD>openssl x509 -in pem-fájl-neve.pem -sha256 -noout -fingerprint</TD></TR>
|
||||
</table>
|
||||
Az /MKPASSWD parancsot kiadhatjuk online IRC operátorként. Vagy másképpen,
|
||||
használhatjuk a parancssori interfészt is a parancsértelmezõben: <i>./unreal mkpasswd hasítófüggvény-típus
|
||||
jelszó</i>.<br>
|
||||
Nem minden hitelesítési típus érhetõ el minden rendszeren, lásd
|
||||
a függõségeket (elõfeltételeket) a fenti táblázatban.<br>
|
||||
<br>
|
||||
<b>Példa: MD5-tel hasított jelszó a vhost blokkban</b><br>
|
||||
1. Tegyük fel, hogy a <i>teszt</i> jelszót akarjuk használni, és md5-tel hasított jelszavakat
|
||||
akarunk használni.<br>
|
||||
IRC operátorként egyszerûen beírhatjuk, hogy <i>/MKPASSWD md5 :teszt</i>.<br>
|
||||
Vagy pedig, IRC helyett beírhatjuk a következõ parancsot
|
||||
a parancssorban: <i>./unreal mkpasswd md5 teszt</i>.<br>
|
||||
Bármelyik módszert is választjuk, a kapott hasított jelszó így fog kinézni: <i>$NIV0bSfG$UTMvI/KdMwe4cZqmT/23qw==</i>
|
||||
(a pontos sztring más lesz!)<br>
|
||||
2. Most rakjuk bele ezt a sztringet a vhost blokkba, és adjuk az UnrealIRCd tudomására, hogy
|
||||
ez egy md5-tel hasított kód. Példa:
|
||||
<pre>vhost {
|
||||
vhost En.Imadom.Tuxot;
|
||||
from { userhost *@*; };
|
||||
login Tux;
|
||||
password "$NIV0bSfG$UTMvI/KdMwe4cZqmT/23qw==" { md5; };
|
||||
};</pre>
|
||||
3. Ennek a vhostnak a használatához írjuk be, hogy /VHOST Tux teszt<br>
|
||||
<br>
|
||||
<b>Példa: Hitelesítés SSL kliens tanúsítvánnyal</b><br>
|
||||
Az <tt>sslclientcert</tt> és a <tt>sslclientcertfp</tt> kivételes
|
||||
hitelesítési típusok, amelyek az SSL felhasználókat hitelesítik a kliens
|
||||
tanúsítványuk alapján.<br>
|
||||
Ezekkel a hitelesítési módszerekkel biztosak lehetünk, hogy a felhasználó SSL-t használ, és
|
||||
egy meghatározott kliens tanúsítványa van.<br>
|
||||
Íme egy példa, hogyan használjuk egy oper blokkhoz:<br>
|
||||
1. Készítsünk egy SSL kliens tanúsítványt, ha még nem rendelkezünk vele (keressünk
|
||||
a weben az "ssl tanúsítvány készítése" kulcsszavakra, ha nem tudjuk, hogyan)<br>
|
||||
2. Fogjuk a tanúsítvány SHA256-tal hasított kódját az alábbi futtatásával:
|
||||
<pre>openssl x509 -in pem-fájl-neve.pem -sha256 -noout -fingerprint</pre>
|
||||
3. A konfigurációs fájlban cseréljük ki az eredeti jelszót (<i>teszt</i> a mi példánkban) a hasított kóddal,
|
||||
és adjuk meg az <code>sslclientcertfp</code> hitelesítési típust. Íme egy példa:<br>
|
||||
<pre>oper teszt {
|
||||
password "E7:4D:46:F1:9F:F4:68:F5:E8:E3:49:CC:28:5D:F9:65:85:BA:4F:16:B6:49:02:E3:34:E6:E7:6A:FE:76:A7:98" { sslclientcertfp; };
|
||||
flags { global; can_override; };
|
||||
class clients;
|
||||
};</pre>
|
||||
4. Töltsük újra a szerverbeállításokat (/REHASH)!<br>
|
||||
5. Most kapcsolódjunk az SSL kliensünkkel, és gyõzõdjünk meg arról, hogy a második lépésbeli SSL kliens
|
||||
tanúsítványt használjuk.<br>
|
||||
6. Most már bejelentkezhetünk operátorként az <i>/oper teszt x</i> paranccsal. Jelszót továbbra is
|
||||
meg kell adnunk, de bármi lehet (<i>x</i> ebben a példában), figyelmen kívül marad,
|
||||
mivel benyújtjuk az SSL kliens tanúsítványt a hitelesítéshez.<br>
|
||||
7. Gratulálunk, Ön most már az UnrealIRCd-ben elérhetõ legbiztonságosabb hitelesítési
|
||||
típust használja!<br>
|
||||
<br>
|
||||
Egy másik nagyon hasznos hely, ahol az <tt>sslclientcertfp</tt> típust használhatjuk, az a <a href="#linkblock_passwordreceive">link::password-receive</a>
|
||||
</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.19 - További funkciók</b></font><a name="feature_other"></a></p><div class="desc">
|
||||
<p>Az UnrealIRCd-nek rengeteg funkciója van, ezért itt nincs minden megemlítve... Rájössz majd magadtól is.</p></div>
|
||||
|
||||
<p> </p>
|
||||
@@ -993,6 +1064,7 @@ listen *:6601 {
|
||||
userhost <hostmaszk>;
|
||||
};
|
||||
password <jelszó> { <hitelesítés-típusa>; };
|
||||
require-modes <módok>
|
||||
class <osztálynév>;
|
||||
flags <flagek>;
|
||||
flags {
|
||||
@@ -1001,7 +1073,7 @@ listen *:6601 {
|
||||
...
|
||||
};
|
||||
swhois <whois info>;
|
||||
snomask <snomask>;
|
||||
snomask <snomaszk>;
|
||||
modes <módok>;
|
||||
maxlogins <szám>;
|
||||
};
|
||||
@@ -1009,37 +1081,17 @@ listen *:6601 {
|
||||
<p>Az oper blokkal IRC operátorokat állíthatsz be a szerveredhez. Az <b>oper::</b>
|
||||
értéke adja meg az /oper-hez a bejelentkezõ nevet. Az <b>oper::from::userhost</b>
|
||||
egy user@host maszk, amelyre a felhasználó kapcsolatának illenie kell. Megadhatsz
|
||||
egynél több hostmaszkot is úgy, hogy több oper::from::userhost-ot használsz.
|
||||
egynél több hostmaszkot is úgy, hogy több oper::from::userhost-ot használsz. A
|
||||
nem kötelezõ <b>oper::require-modes</b> beállítással olyan módokat határozhatunk meg
|
||||
(mint például az <em>r</em> vagy a <em>z</em>), amelyeket a felhasználónak meg kell szereznie
|
||||
az OPER parancs használata elõtt. Ezt felhasználhatjuk arra, hogy megköveteljük a felhasználóktól,
|
||||
hogy regisztráljanak a nickservvel, vagy használjanak biztonságos kapcsolatot
|
||||
az operátorrá válás elõtt.
|
||||
</p>
|
||||
<p id="operblock_password">Az <b>oper::password::</b> az a jelszó, amit az operátornak meg kell adnia.
|
||||
Az <b>oper::password::auth-type</b> segítségével megadhatjuk a hitelesítés módját ehhez a jelszóhoz. Ne adjunk meg <b>oper::password::auth-type</b>-ot egyszerû szöveg típusú jelszóhoz!
|
||||
Érvényes hitelesítési típusok: <tt>crypt</tt>, <tt>md5</tt>, <tt>sha1</tt>, <tt>ripemd160</tt>
|
||||
és <tt>sslclientcert</tt>. Bármelyiket is választjuk,
|
||||
az <b>oper::password::</b> értéke egy hash, amit az
|
||||
<a href="#cmd_mkpasswd">mkpasswd</a> segítségével generálunk.
|
||||
</p>
|
||||
<p id="operblock_password_sslclientcert">
|
||||
Az <tt>sslclientcert</tt> egy kivételes hitelesítési típus. Amikor ezt
|
||||
választjuk, az <b>oper::password::</b> értéke legyen egy fájl
|
||||
útvonal (az UnrealIRCd telepítési célkönyvtárához relatívan), mely
|
||||
tartalmaz egy PEM kódolású SSL tanúsítványt (a nyilvános tanúsítványt, nem
|
||||
pedig egy kulcsot). Ezzel biztosíthatjuk, hogy csak olyan IRC kliens kapcsolódhasson, aki:
|
||||
<ol>
|
||||
<li>SSL-lel kapcsolódik,</li>
|
||||
<li>benyújtja az egyező kliens tanúsítványt a kapcsolódáskor,</li>
|
||||
<li>hozzáférése van a tanúsítványhoz tartozó privát kulcshoz.</li>
|
||||
</ol>
|
||||
Természetesen ez a funkció igényli, hogy az UnrealIRCd SSL támogatással
|
||||
legyen fordítva. Továbbá, mivel az SSL tanúsítványokhoz tartozó jelszavak
|
||||
mindig sokkal hosszabbak, mint egy normális emberi jelszó, és sokkal
|
||||
véletlenszerűbbek is, ez a legbiztonságosabb hitelesítési lehetőség. Ahhoz,
|
||||
hogy így jelentkezzünk be operátorként, miután a kliens SSL tanúsítványát
|
||||
megadtuk operátori jelszóként, elég meggyőződni arról, hogy a kliens helyesen
|
||||
lett beállítva, és adjuk ki az <pre>/oper <név> :</pre> parancsot. Az <tt>sslclientcert</tt>
|
||||
hitelesítési típust felhasználhatjuk
|
||||
a <a href="#linkblock_passwordreceive">link::password-receive</a>
|
||||
direktívában is biztonságos <a href="#linkblock">link blokkokra</a>.
|
||||
</ol>
|
||||
Az érvényes hitelesítési típusok, mint ahogyan bemutattuk, hogyan használjuk õket oper
|
||||
blokkokon, megtalálhatók a <a href="#feature_authtypes">Hitelesítési típusok</a> alatt.
|
||||
</p>
|
||||
<p>Megjegyzendõ, hogy MIND a bejelentkezõ név és jelszó a kis- és nagybetûkre érzékenyek.</p>
|
||||
<p>Az <b>oper::class</b> direktíva meghatározza azt a már létezõ (a konfigurációban ezen blokk
|
||||
@@ -1094,6 +1146,11 @@ listen *:6601 {
|
||||
<td><div align="center">can_die</div></td>
|
||||
<td>Használhatja a /die parancsot</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">T</div></td>
|
||||
<td><div align="center">can_tsctl</div></td>
|
||||
<td>Használhatja a /tsctl parancsot</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="center">R</div></td>
|
||||
<td><div align="center">can_restart</div></td>
|
||||
@@ -1332,7 +1389,7 @@ listen *:6601 {
|
||||
<p>Az <b>oper::swhois</b> direktívával egy tetszõleges szövegû sorral egészítheted ki az operátor
|
||||
whois információját. <font color=blue>[szabadon választható]</font></p>
|
||||
<p>Az <b>oper::snomask</b> direktívával elõre beállíthatod, hogy az operátor milyen
|
||||
szerverüzenet-maszkokat kapjon opereléskor. A rendelkezésre álló SNOMASKok listáját lásd a
|
||||
szerverüzenet-maszkokat kapjon opereléskor. A rendelkezésre álló SNOMASZKok listáját lásd a
|
||||
<a href="#feature_snomasks">3.3. szekcóban</a>. <font color=blue>[szabadon választható]</font></p>
|
||||
<p>Az <b>oper::modes</b> direktívával elõre beállíthatod, hogy az operátor milyen módokat kapjon opereléskor.
|
||||
<font color=blue>[szabadon választható]</font></p>
|
||||
@@ -1378,9 +1435,8 @@ drpass {
|
||||
die <leállítási-jelszó> { <hitelesítés-típusa>; };
|
||||
};</pre></p>
|
||||
<p>Ez a blokk állítja be a /restart és /die jelszavakat rendre a drpass::restart és a drpass::die
|
||||
direktívákkal. A drpass::restart:: és drpass::die:: lehetőséget ad a jelszavak
|
||||
hitelesítési típusának meghatározására. A jelenleg támogatott hitelesítési típusok
|
||||
a crypt, md5, sha1 és ripemd-160.</p>
|
||||
direktívákkal.
|
||||
Egyszerû szöveges jelszó helyett használhatunk más <a href="#feature_authtypes">Hitelesítési típusokat</a> is.</p>
|
||||
<p>Példa:</p>
|
||||
<pre>
|
||||
drpass {
|
||||
@@ -1835,7 +1891,7 @@ deny channel {
|
||||
engedélyezett a belépés. Továbbá megadhatsz egy <b>deny::redirect</b> paramétert is. Ha megadod,
|
||||
az ezen deny::channel blokkra illõ csatornákra belépni próbáló felhasználókat átirányítja
|
||||
a deny::redirect csatornára. És van még egy <b>deny::warn</b> paraméter is, ami (ha "on" értékû) küld
|
||||
egy operátori értesítést (az EYES snomaskra), ha a felhasználó belépéssel próbálkozik.
|
||||
egy operátori értesítést (az EYES snomaszkra), ha a felhasználó belépéssel próbálkozik.
|
||||
</p>
|
||||
<p>Példa:</p>
|
||||
<pre>
|
||||
@@ -1916,8 +1972,10 @@ vhost {
|
||||
illenie kell, hogy jogosult legyen a vhosthoz. Megadhatsz egynél több hostmaszkot is.
|
||||
A vhost::login a felhasználó bejelentkezõ neve, és a vhost::password a hozzá tartozó jelszó,
|
||||
amelyeket a felhasználónak be kell írnia. A vhost::password:: arra ad lehetõséget, hogy
|
||||
meghatározd a jelszó kódolásának/hitelesítésének típusát. A jelenleg támogatott típusok a
|
||||
crypt, md5, sha1 és ripemd-160. Végül a vhost::swhois egy kiegészítő sort ad a felhasználó
|
||||
meghatározd a jelszó kódolásának/hitelesítésének típusát. Lásd a <a
|
||||
href="#feature_authtypes">Hitelesítési típusokat</a> a rendelkezésre álló
|
||||
hitelesítési típusok listájához.
|
||||
Végül a vhost::swhois egy kiegészítõ sort ad a felhasználó
|
||||
whois adataiba, pontosan úgy, mint az oper blokk oper::swhois direktívájában.</p>
|
||||
<p>Példa:<br>
|
||||
<pre>
|
||||
@@ -2023,7 +2081,7 @@ link <szervern
|
||||
<tr><td><i>1.2.3.4</i></td><td> közönséges IP</td></tr>
|
||||
<tr><td><i>hub.blah.com</i></td><td> gazdanév: csak kimenõ kapcsolatokra, nem tud _beérkezõ_ kapcsolatokat
|
||||
fogadni, amíg a link::options::nohostcheck nincs beállítva</td></tr>
|
||||
<tr><td><i>*</i></td><td> KIMENŐ kapcsolatokra alkalmatlan, de bárhonnan fogad szerverkapcsolódást (a megfelelő jelszóval)</td></tr>
|
||||
<tr><td><i>*</i></td><td> KIMENõ kapcsolatokra alkalmatlan, de bárhonnan fogad szerverkapcsolódást (a megfelelõ jelszóval)</td></tr>
|
||||
<tr><td><i>::ffff:1.2.3.4</i></td><td> ipv6-ról ipv4-re linkeléshez.</td></tr>
|
||||
</table>
|
||||
</p>
|
||||
@@ -2037,12 +2095,9 @@ link <szervern
|
||||
A távoli szerverre kapcsolódáskor használt jelszó; egyszerû szövegnek kell lennie.
|
||||
</p>
|
||||
<p id="linkblock_passwordreceive"><b>password-receive</b><br> A beérkezõ linkek érvényesítéséhez
|
||||
használt jelszó. Hasonló módon titkosítható, mint
|
||||
az <a href="#operblock_password"><b>oper::password</b></a>.
|
||||
Még az is megtehető, hogy
|
||||
a <a href="#operblock_password_sslclientcert"><tt>sslclientcert</tt></a>
|
||||
hitelesítési típust használjuk. Sőt, ez erősen ajánlott is, mivel fényévekkel
|
||||
jobban ellenáll a brute-force támadásoknak.
|
||||
használt jelszó. Erõsen ajánlott a hasított jelszavak használata vagy
|
||||
az <tt>sslclientcertfp</tt> hitelesítési típus. Lásd a <a href="#feature_authtypes">Hitelesítési
|
||||
Típusokat</a> további információért.<br>
|
||||
</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
A hub egyszerre több szervert is linkelhet, míg a leafnek csak egy linkje lehet... hozzád.
|
||||
@@ -2060,9 +2115,6 @@ link <szervern
|
||||
<p><b>class</b><br>
|
||||
Megadja, melyik kapcsolati osztályba helyezzük a linkelt szervert. Ehhez gyakran egy külön szerver osztályt szokás használni.
|
||||
</p>
|
||||
<p><b>compression-level</b> (szabadon választható)<br>
|
||||
Megadja a kapcsolat tömörítési szintjét (1-9). Csak akkor szokás használni, ha a link::options::zip be van állítva.
|
||||
</p>
|
||||
<p><b>ciphers</b> (szabadon választható)<br>
|
||||
Meghatározza, milyen SSL kódoló/visszafejtõ algoritmusok (cipherek) legyenek használatban ehhez a linkhez. A rendelkezésre álló
|
||||
algoritmusok listájának eléréséhez használd az `openssl ciphers` parancsot. Az algoritmusokat ":"-tal elválasztott felsorolásként add meg.
|
||||
@@ -2394,11 +2446,11 @@ set {
|
||||
<p><font class="set">set::modes-on-connect <+módok>;</font><br>
|
||||
Azok a módok, amelyek kapcsolódáskor lesznek beállítva a felhasználókon.</p>
|
||||
<p><font class="set">set::snomask-on-connect <+módok></font><br>
|
||||
Azok a snomaskok, amelyek kapcsolódáskor lesznek beállítva a felhasználókon.</p>
|
||||
Azok a snomaszkok, amelyek kapcsolódáskor lesznek beállítva a felhasználókon.</p>
|
||||
<p><font class="set">set::modes-on-oper <+módok>;</font><br>
|
||||
Azok a módok, amelyek /oper-eléskor lesznek beállítva a felhasználókon.</p>
|
||||
<p><font class="set">set::snomask-on-oper <+módok>;</font><br>
|
||||
Azok a snomaskok, amelyek /oper-eléskor lesznek beállítva a felhasználókon.</p>
|
||||
Azok a snomaszkok, amelyek /oper-eléskor lesznek beállítva a felhasználókon.</p>
|
||||
<p><font class="set">set::modes-on-join <+módok>;</font><br>
|
||||
Azok a módok, amelyek akkor lesznek beállítva egy csatornán, amikor létrehozzák. Nem minden mód állítható be ezzel az utasítással. A +qaohvbeOAzlLk módok NEM állíthatóak be ezzel az utasítással.</p>
|
||||
<p><font class="set">set::restrict-usermodes <módok></font><br>
|
||||
@@ -2500,7 +2552,7 @@ set {
|
||||
Megjegyzendõ, hogy a lekérdezések elvégzése nélkül gazdanév alapú allow blokkjaid értelmüket vesztik.</p>
|
||||
<p><font class="set">set::options::mkpasswd-for-everyone;</font><br>
|
||||
Az /mkpasswd használatát mindenki számára engedélyezi, nem csak operátoroknak. Ezen parancs
|
||||
nem-oper használatáról értesítést küld az EYES snomaskra.</p>
|
||||
nem-oper használatáról értesítést küld az EYES snomaszkra.</p>
|
||||
<p><font class="set">set::options::allow-part-if-shunned;</font><br>
|
||||
Engedélyezi a shunolt felhasználóknak a /part használatát.</p>
|
||||
<p><font class="set">set::options::fail-oper-warn;</font><br>
|
||||
@@ -2508,6 +2560,10 @@ set {
|
||||
<p><font class="set">set::options::allow-insane-bans;</font><br>
|
||||
Engedélyt ad az olyan õrülten széles banokra is, mint a /GLINE *@*.xx. Ezzel nagyon könnyen elõfordulhat, hogy
|
||||
véletlenül kitiltunk mindenkit a hálózatról, ezért csak nagyon óvatosan használjuk!</p>
|
||||
<p><font class="set">set::options::disable-cap;</font><br>
|
||||
Letiltja az IRC kliens képességek kiterjesztést (IRC Client Capabilities Extensions, CAP). Megjegyzendõ, hogy ez
|
||||
elérhetetlenné teszi az SASL-t és más funkciókat, vagy megnehezíti a használatukat
|
||||
a kliensek számára.</p>
|
||||
<p id="set_nopost_ban_action"><font class="set">set::nopost::ban-action</font> (igényli az <a href="#modules_m_nopost">m_nopost</a> modult)<br />
|
||||
Megmondja, mit tegyen az olyan felhasználókkal, akik HTTP POST parancsot próbálnak kiadni.
|
||||
Az engedélyezett értékek: kill, gline, gzline, kline, zline, shun és tempshun.
|
||||
@@ -2532,8 +2588,11 @@ set {
|
||||
<p><font class="set">set::dns::retries <próbálkozások-száma>;</font><br>
|
||||
Egy számérték, amely meghatározza, hányszor történjen újrapróbálkozás a DNS lekérdezésben,
|
||||
ha hiba fordul elõ. (NINCS IMPLEMENTÁLVA)</p>
|
||||
<p><font class="set">set::dns::nameserver <dns-szerver-neve>;</font><br>
|
||||
Meghatározza a DNS lekérdezésekhez használt szerver gazdanevét. (NINCS IMPLEMENTÁLVA)</p>
|
||||
<p><font class="set">set::dns::nameserver <dns-szerver-neve>;</font><br/>
|
||||
Meghatározza a DNS lekérdezésekhez használt szerver IP címét.
|
||||
Csak tartalék címként lesz felhasználva, amikor a c-ares képtelen
|
||||
a névszerverek kitalálására (mint például ha az <code>/etc/resolv.conf</code> üres).
|
||||
</p>
|
||||
<p><font class="set">set::dns::bind-ip <ip>;</font><br>
|
||||
Meghatározza azt az IP címet, amelyre bindeljen a szerver a lekérdezésekhez; a lehetõ legritkábban van szükség rá.</p>
|
||||
<p><font class="set">set::network-name <hálózat-neve>;</font><br>
|
||||
@@ -2567,7 +2626,8 @@ set {
|
||||
függõen más szabályok lehetnek érvényben.</p>
|
||||
<p><font class="set">set::hiddenhost-prefix <elõtag>;</font><br>
|
||||
Meghatározza a rejtett (+x) gazdanevek elõtagját. Ez általában a hálózat nevét ábrázoló
|
||||
három vagy négy betű.</p>
|
||||
három vagy négy betû. Összekapcsolt szervereken kötelezõen legyen ugyanaz
|
||||
a rejtett gazdanév elõtag a csatorna kitiltások helyes mûködése érdekében!</p>
|
||||
<p><font class="set">set::hosts::local <locop-gazdanév>;</font><br>
|
||||
Meghatározza azt a gazdanevet, amit a +x beállításakor kapnak a helyi operátorok.
|
||||
Igény szerint megadható egy username@host ehhez az értékhez.</p>
|
||||
@@ -2649,7 +2709,7 @@ set {
|
||||
a +f [5j]:15 átalakul [5j#i10]:15-re. Alapértelmezés szerint a csatornamódok nem lesznek automatikusan törölve.</p>
|
||||
<p><font class="set">set::modef-max-unsettime <szám></font><br>
|
||||
A +f csatornamódhoz használt törlési idõ legnagyobb megengedett hossza percekben (itt arról a törlési idõrõl van szó, amit
|
||||
megadunk pl. a +f [5j#i<IDŐ>]:15 paraméterben). Ez egy 0 és 255 közötti érték. Az alapértelmezés 60 (= 1 óra).</p>
|
||||
megadunk pl. a +f [5j#i<IDõ>]:15 paraméterben). Ez egy 0 és 255 közötti érték. Az alapértelmezés 60 (= 1 óra).</p>
|
||||
<p><font class="set">set::ban-version-tkl-time <idõérték></font><br>
|
||||
Ha megadod az "action"-t (pl. zline, gline stb.) a ban version blokkban, itt beállíthatod,
|
||||
mennyi idõre legyen az IP kitiltva. Az alapértelmezés 86400 (1 nap).</p>
|
||||
@@ -2674,6 +2734,16 @@ set {
|
||||
Ha egy spamszûrõ lefutása több ideig tart, mint a megadott ezredmásodpercek száma,
|
||||
(1000ms = 1 másodperc), akkor a spamszûrõ le lesz törölve (alapérték: 500).
|
||||
Lásd még: <a href="#feature_spamfilter_slow">Lassú spamszûrõk érzékelése</a>.</p>
|
||||
<p><font class="set">set::spamfilter::stop-on-first-match <yes|no></font><br>
|
||||
Alapértelmezésben "yes" értékû, azaz amint egy spamszûrõ
|
||||
illeszkedik, az UnrealIRCd azonnal intézkedik, és semmilyen további
|
||||
(más) spamszûrõ nem lesz már feldolgozva.<br>
|
||||
Abban az esetben, ha "no" értékre van állítva, az elsõ spamszûrõ illeszkedés után más
|
||||
spamszûrõk továbbra is ellenõrizve lesznek. Minden ilyen illeszkedés naplózva lesz,
|
||||
és az IRCOpok (+S snomaszk) mindegyikért kapnak egy üzenetet. Az érintett
|
||||
felhasználók azonban csak egy spamszûrõ akciót fognak látni (pl.: blokkolás vagy kill),
|
||||
mégpedig arra a spamszûrõre, amelyik a legsúlyosabb (gzline a legmagasabb,
|
||||
a blokkolások és a figyelmeztetések a legalacsonyabbak).</p>
|
||||
<p><font class="set">set::check-target-nick-bans <yes|no></font><br>
|
||||
Valahányszor a felhasználó nicknevet változtat, ellenõrzi, hogy az ÚJ név le van-e
|
||||
tiltva. Ha igen, nem engedélyezi a nickváltást. Az alapértelmezés "yes".</p>
|
||||
@@ -3188,7 +3258,7 @@ tov
|
||||
<td>Mindenki</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">Watch +-<nick> +-<nick><br></td>
|
||||
<td height="39">Watch [+|-]<nick> [+|-]<nick><br></td>
|
||||
<td>A watch egy új értesítési rendszer az UnrealIRCd-ben, amely gyorsabb és kevesebb
|
||||
hálózati erõforrást használ fel, mint bármely régi típusú változatok. A szerver
|
||||
küld neked egy üzenetet, ha valamely felhasználó, amelynek a nickneve a watch
|
||||
@@ -3295,6 +3365,10 @@ tov
|
||||
<td>Visszaadja a megadott felhasználó IP címét.</td>
|
||||
<td>Mindenki</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">silence [+|-]<nick><br></td>
|
||||
<td>Figyelmen kívül hagyja egy felhasználónak vagy felhasználók listájának a szerveren keresztül küldött üzeneteit.<br></td>
|
||||
<td>Mindenki</td>
|
||||
<tr>
|
||||
<td height="39">oper <azonosító> <jelszó><br></td>
|
||||
<td>Ez a parancs egy felhasználónak operátori beosztást ad, ha illik egy oper blokkra.<br></td>
|
||||
@@ -3506,14 +3580,9 @@ tov
|
||||
</tr>
|
||||
<tr id="cmd_mkpasswd">
|
||||
<td height="36">mkpasswd <hitelesítés-típusa> <jelszó><br></td>
|
||||
<td>Titkosítja a megadott <jelszót> a <hitelesítés-típusa> típusú hasító módszerrel. Lehetséges hasító módszerek:
|
||||
<ul>
|
||||
<li>crypt [<em>Windows alatti támogatáshoz SSL szükséges</em>]</li>
|
||||
<li>md5</li>
|
||||
<li>sha1 [<em>SSL-t igényel</em>]</li>
|
||||
<li>ripemd160 [<em>SSL-t igényel</em>]</li>
|
||||
</ul>
|
||||
<br></td>
|
||||
<td>Titkosítja a megadott <jelszót> a megadott <hitelesítési-típusú> hasító módszerrel.
|
||||
Lásd a <a href="#feature_authtypes">Hitelesítési típusokat</a> a rendelkezésre álló
|
||||
hasító módszerekhez.</td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -3594,7 +3663,6 @@ tov
|
||||
V - vhost - Elküldi a vhost blokkok listáját<br>
|
||||
X - notlink - Listát küld azokról a szerverekrõl, amelyek jelenleg nincsenek linkelve<br>
|
||||
Y - class - Elküldi a class blokkok listáját<br>
|
||||
z - zip - Információt küld a zippel linkelt szerverek adattömörítéséről (ha van ziplink támogatás)<br>
|
||||
Z - mem - Információt küld a szerver memóriahasználatáról<br>
|
||||
</td>
|
||||
<td>Mindenki</td>
|
||||
@@ -3735,8 +3803,8 @@ a /map-pel vagy a /links-szel. Teh
|
||||
Ha történik egy szakadás (split), valaki még mindig láthatja, melyik szerver hová volt linkelve,
|
||||
és ez érvényes még néhány más dologra is.<br>
|
||||
<br>
|
||||
<b>KÖZÖNSÉGES FELHASZNÁLÓK ÉS SNOMASKOK</b><br>
|
||||
Van egy funkció, melyet nem ismernek széles körben; ez az, hogy közönséges felhasználók is beállíthatnak néhány korlátozott snomaskot,
|
||||
<b>KÖZÖNSÉGES FELHASZNÁLÓK ÉS SNOMASZKOK</b><br>
|
||||
Van egy funkció, melyet nem ismernek széles körben; ez az, hogy közönséges felhasználók is beállíthatnak néhány korlátozott snomaszkot,
|
||||
mégpedig azt, hogy "+s +sk". Ezzel láthatnak olyan dolgokat, mint a beállítások újratöltése, killek és egyéb más üzenetek.<br>
|
||||
Ennek letiltására használhatod a "set::restrict-usermodes"-t a következõképpen: <i>set { restrict-usermodes "s"; };</i>.<br>
|
||||
|
||||
|
||||
@@ -17,6 +17,12 @@
|
||||
<!-- $Id$ -->
|
||||
</head>
|
||||
<body>
|
||||
<p style="background: #cc0000">NOTE: This documentation is about the <b>old
|
||||
series</b> (UnrealIRCd 3.2.x).
|
||||
If you are using UnrealIRCd 4 then check the
|
||||
<a href="https://www.unrealircd.org/docs/UnrealIRCd_4_documentation">UnrealIRCd 4 documentation</a>
|
||||
instead.</p>
|
||||
|
||||
<A href="unreal32docs.html">English</A> |
|
||||
<A href="unreal32docs.de.html">German</A> |
|
||||
<A href="unreal32docs.hu.html">Hungarian</A> |
|
||||
@@ -28,8 +34,8 @@
|
||||
<br>
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Âåðñèÿ: 3.2.10</font><br>
|
||||
<b>Ïîñëåäíåå îáíîâëåíèå:</b> 2012-10-18</div>
|
||||
<font size="4">Âåðñèÿ: 3.2.10.5</font><br>
|
||||
<b>Ïîñëåäíåå îáíîâëåíèå:</b> 2013-04-05</div>
|
||||
<br>
|
||||
<b>Ãëàâíûå ïðîãðàììèñòû</b> Syzop<br>
|
||||
<b>Ïðîãðàììèñòû:</b> binki<br>
|
||||
@@ -231,12 +237,12 @@
|
||||
<li>
|
||||
<b>Windows âåðñèè:</b>
|
||||
<ul>
|
||||
<li>
|
||||
Windows 2000 (Pro, Server, Advanced Server)
|
||||
<li>
|
||||
Windows XP (Home, Pro)
|
||||
<li>
|
||||
Windows 2003
|
||||
<li>
|
||||
Windows 7
|
||||
</li>
|
||||
</ul>
|
||||
<li>
|
||||
|
||||
+38
-27
@@ -32,7 +32,14 @@ PRE {
|
||||
<!-- $Id$ -->
|
||||
<META content="MSHTML 6.00.2900.2180" name=GENERATOR>
|
||||
</HEAD>
|
||||
<BODY><A
|
||||
<BODY>
|
||||
<p style="background: #cc0000">NOTE: This documentation is about the <b>old
|
||||
series</b> (UnrealIRCd 3.2.x).
|
||||
If you are using UnrealIRCd 4 then check the
|
||||
<a href="https://www.unrealircd.org/docs/UnrealIRCd_4_documentation">UnrealIRCd 4 documentation</a>
|
||||
instead.</p>
|
||||
|
||||
<A
|
||||
href="unreal32docs.html">English</A> | <A
|
||||
href="unreal32docs.de.html">German</A> |
|
||||
<A
|
||||
@@ -40,14 +47,16 @@ href="unreal32docs.hu.html">Hungarian</A>
|
||||
|
|
||||
<A href="unreal32docs.fr.html">French</A>
|
||||
|
|
||||
<A href="unreal32docs.ru.html">Russian</A> |
|
||||
Turkish |
|
||||
<A href="unreal32docs.ru.html">Russian</A>
|
||||
|
|
||||
<a href="unreal32docs.tr.html">Turkish</a>
|
||||
|
|
||||
<a href="unreal32docs.es.html">Spanish</a>
|
||||
<BR><BR>
|
||||
<DIV align=center><B><FONT size=7>UnrealIRCd</FONT></B><BR><FONT size=4><A
|
||||
href="http://www.unrealircd.com/">http://www.unrealircd.com/</A></FONT><BR><FONT
|
||||
size=4>Version: 3.2.10</FONT><BR><B>En Son Güncelleme:</B>
|
||||
2012-10-16</DIV><BR>
|
||||
size=4>Version: 3.2.10.5</FONT><BR><B>En Son Güncelleme:</B>
|
||||
2013-11-20</DIV><BR>
|
||||
<B>Baþ Kodlayýcý/Devam Ettiren:</b> Syzop<br>
|
||||
<b>Kodlayýcýlar:</b> binki<br>
|
||||
<b>Önceki Kodlayýcýlar & Katkýda bulunanlar:</b> Stskeeps, codemastr, Luke, aquanight,
|
||||
@@ -287,9 +296,9 @@ Sistemleri:</B><BR>
|
||||
<LI>Solaris (9, 10) </LI></UL>
|
||||
<LI><B>Windows versiyonlarý:</B>
|
||||
<UL>
|
||||
<LI>Windows 2000 (Pro, Server, Advanced Server)
|
||||
<LI>Windows XP (Home, Pro)
|
||||
<LI>Windows 2003 </LI></UL>
|
||||
<LI>Windows 2003
|
||||
<LI>Windows 7 </LI></UL>
|
||||
<LI><B>Test Edilmiþ Mimariler:</B>
|
||||
<UL>
|
||||
<LI>ia32 (i386, i486, i586, i686)
|
||||
@@ -603,20 +612,15 @@ al
|
||||
<TD>eski +f'de olduðu gibi kullanýcý-baþýna
|
||||
mesaj/notice. kullanýcý atýlýr veya
|
||||
banlanýr.</TD></TR></TBODY></TABLE>
|
||||
<P> Örnek: <PRE><FONT color=green>*** ChanOp sets mode: +f
|
||||
[20j,50m,7n]:15</FONT>
|
||||
<P> Örnek: <PRE><FONT color=green>*** ChanOp sets mode: +f [20j,50m,7n]:15</FONT>
|
||||
<ChanOp> lalala
|
||||
<FONT color=green>*** Evil1 (~fdsdsfddf@Clk-17B4D84B.blah.net) has joined
|
||||
#test
|
||||
<FONT color=green>*** Evil1 (~fdsdsfddf@Clk-17B4D84B.blah.net) has joined #test
|
||||
*** Evil2 (~jcvibhcih@Clk-3472A942.xx.someispcom) has joined #test
|
||||
*** Evil3 (~toijhlihs@Clk-38D374A3.aol.com) has joined #test
|
||||
*** Evil4 (~eihjifihi@Clk-5387B42F.dfdfd.blablalba.be) has joined
|
||||
#test</FONT>
|
||||
*** Evil4 (~eihjifihi@Clk-5387B42F.dfdfd.blablalba.be) has joined #test</FONT>
|
||||
-- snip XX lines --
|
||||
<FONT color=green>*** Evil21 (~jiovoihew@Clk-48D826C3.e.something.org) has
|
||||
joined #test</FONT>
|
||||
<FONT color=brown>-server1.test.net:#test *** Channel joinflood detected
|
||||
(limit is 20 per 15 seconds), putting +i</FONT>
|
||||
<FONT color=green>*** Evil21 (~jiovoihew@Clk-48D826C3.e.something.org) has joined #test</FONT>
|
||||
<FONT color=brown>-server1.test.net:#test *** Channel joinflood detected (limit is 20 per 15 seconds), putting +i</FONT>
|
||||
<FONT color=green>*** server1.test.net sets mode: +i</FONT>
|
||||
<Evil2> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
|
||||
<Evil12> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
|
||||
@@ -624,8 +628,7 @@ joined #test</FONT>
|
||||
<Evil10> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
|
||||
<Evil8> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
|
||||
-- snip XX lines --
|
||||
<FONT color=brown>-server1.test.net:#test *** Channel msg/noticeflood
|
||||
detected (limit is 50 per 15 seconds), putting +m</FONT>
|
||||
<FONT color=brown>-server1.test.net:#test *** Channel msg/noticeflood detected (limit is 50 per 15 seconds), putting +m</FONT>
|
||||
<FONT color=green>*** server1.test.net sets mode: +m</FONT>
|
||||
<FONT color=green>*** Evil1 is now known as Hmmm1</FONT>
|
||||
<FONT color=green>*** Evil2 is now known as Hmmm2</FONT>
|
||||
@@ -635,8 +638,7 @@ detected (limit is 50 per 15 seconds), putting +m</FONT>
|
||||
<FONT color=green>*** Evil6 is now known as Hmmm6</FONT>
|
||||
<FONT color=green>*** Evil7 is now known as Hmmm7</FONT>
|
||||
<FONT color=green>*** Evil8 is now known as Hmmm8</FONT>
|
||||
<FONT color=brown>-server1.test.net:#test *** Channel nickflood detected
|
||||
(limit is 7 per 15 seconds), putting +N</FONT>
|
||||
<FONT color=brown>-server1.test.net:#test *** Channel nickflood detected(limit is 7 per 15 seconds), putting +N</FONT>
|
||||
<FONT color=green>*** server1.test.net sets mode: +N</FONT>
|
||||
</PRE>Gerçekte daha karýþýk, daha komplike bir þekil alabilir:<BR>Ayrý ayrý
|
||||
belirtmek yerine, flood tiplerini baþka bir
|
||||
@@ -3520,10 +3522,9 @@ saat ve 3 dakikay
|
||||
<deneme-sayýsý>;</FONT><BR>
|
||||
DNS cozumlenmesinin basarisiz
|
||||
olmasi durumda DNS cozumlemesinin kac kez tekrarlanacagini belirtir. (TAMAMLANMADI)</P>
|
||||
<P><FONT class=set>set::dns::nameserver
|
||||
<dns-sunucu-ismi>;</FONT><BR>DNS aramalarýnda kullanýlacak, sunucunun
|
||||
hostname'ini
|
||||
belirtir. (TAMAMLANMADI)</P>
|
||||
<p><font class="set">set::dns::nameserver <dns-sunucu-ismi>;</font><br/>
|
||||
DNS aramalarýnda kullanýlacak sunucunun
|
||||
IP adresini belirtir. C-ares tahmin edemediði zaman son çare olarak sadece nameserverler kullanýlýr. (/etc/resolv.conf boþsa eðer)</P>
|
||||
<P><FONT class=set>set::dns::bind-ip
|
||||
<ip>;</FONT><BR>Çözümleyici için baðlanýlacak IP'yi
|
||||
belirtir, genellikle belirtilmeye gerek duyulmaz.</P>
|
||||
@@ -3744,6 +3745,16 @@ belirtilebilir.
|
||||
Eðer bir spamfilterin, uygulanmasý için milisaniyelerin bu miktarýndan daha uzun olursa
|
||||
(1000ms = 1 saniye) sonra spamfilter silinir. (varsayýlan: 500).
|
||||
Ayrýca görmek için; <a href="#feature_spamfilter_slow">Yavaþ Spamfilter Algýlama</a>.</p>
|
||||
<p><font class="set">set::spamfilter::stop-on-first-match <yes|no></font><br>
|
||||
Varsayýlan 'yes' olarak ayarlandýðýnda, eþleþmiþ olan spamfilterler
|
||||
UnrealIRCd tarafýndan harekete alýnacak ve herhangi bir (diðer) spamfilter eklendiðinde
|
||||
uygulamaya alýnacak anlamýna gelir.<br>
|
||||
Bu 'hayýr' olarak ayarlandýðýnda ise önceden eklenmiþ spamfilterler kontrol edilmeyecek
|
||||
fakat sonradan eklenmiþ spamfilterler hala kontrol edilecektir. Tüm bu eþleþmelerin hepsi
|
||||
kaydedilir ve her bir eþleþme için tüm IRCop'lara (snomask + S) mesaj gidecektir. Sadece bir
|
||||
spamfilter eylemi göreceksiniz ki ancak kullanýcý bundan etkilenecektir. (örn: block veya kill)
|
||||
Spamfilter ile herhangi bir ciddi eylemde ise en yüksek GZLINE, en düþük ise block olarak
|
||||
uyarmak gerekir.</p>
|
||||
<P><FONT class=set>set::check-target-nick-bans
|
||||
<yes|no></FONT><BR>
|
||||
Kullanýcý(lar) nick(ler)ini deðiþtirdiði zaman,
|
||||
@@ -4838,8 +4849,8 @@ g
|
||||
içeriði görüntülenir<BR>X - notlink - Link bloðunda
|
||||
var olan fakat henüz linki gerçekleþmemiþ sunucular listesi
|
||||
görüntülenir<BR>Y - class - Class bloðu içeriði
|
||||
görüntülenir<BR>z - zip - SZiplinked sunucular
|
||||
hakkýnda ki sýkýþtýrma bilgisi görüntülenir<BR>Z -
|
||||
görüntülenir<BR>z - zip - Zip baðlantýlý sunucular
|
||||
hakkýnda ki sýkýþtýrma bilgisi görüntülenir. (zip baðlantý desteði ile derlendiði takdirde)<BR>Z -
|
||||
mem - Bellek kullaným bilgisi görüntülenir<BR></TD>
|
||||
<TD>Herkes</TD></TR>
|
||||
<TR>
|
||||
|
||||
Binary file not shown.
@@ -98,7 +98,7 @@ help Umodes {
|
||||
" N = Is a Network Administrator";
|
||||
" C = Is a Co Administrator";
|
||||
" -";
|
||||
" d = Makes it so you can not receive channel PRIVMSGs (Deaf)";
|
||||
" d = Only receive channel PRIVMSGs starting with a bot command character (Deaf)";
|
||||
" g = Can read & send to GlobOps, and LocOps";
|
||||
" h = Available for Help (Help Operator)";
|
||||
" i = Invisible (Not shown in /WHO searches)";
|
||||
|
||||
@@ -158,6 +158,7 @@ struct zConfiguration {
|
||||
char *spamexcept_line;
|
||||
long spamfilter_detectslow_warn;
|
||||
long spamfilter_detectslow_fatal;
|
||||
int spamfilter_stop_on_first_match;
|
||||
int maxbans;
|
||||
int maxbanlength;
|
||||
int timesynch_enabled;
|
||||
@@ -203,7 +204,11 @@ extern MODVAR aConfiguration iConf;
|
||||
#define SHOWCONNECTINFO iConf.show_connect_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
|
||||
#else
|
||||
#define USE_EGD 0
|
||||
#endif
|
||||
#define EGD_PATH iConf.egd_path
|
||||
|
||||
#define ircnetwork iConf.network.x_ircnetwork
|
||||
@@ -279,6 +284,7 @@ extern MODVAR aConfiguration iConf;
|
||||
#define SPAMFILTER_EXCEPT iConf.spamexcept_line
|
||||
#define SPAMFILTER_DETECTSLOW_WARN iConf.spamfilter_detectslow_warn
|
||||
#define SPAMFILTER_DETECTSLOW_FATAL iConf.spamfilter_detectslow_fatal
|
||||
#define SPAMFILTER_STOP_ON_FIRST_MATCH iConf.spamfilter_stop_on_first_match
|
||||
|
||||
#define CHECK_TARGET_NICK_BANS iConf.check_target_nick_bans
|
||||
|
||||
|
||||
+4
-2
@@ -167,7 +167,7 @@ extern MODVAR int R_do_dns, R_fin_dns, R_fin_dnsc, R_fail_dns,
|
||||
R_do_id, R_fin_id, R_fail_id;
|
||||
|
||||
#endif
|
||||
extern inline aCommand *find_Command(char *cmd, short token, int flags);
|
||||
extern aCommand *find_Command(char *cmd, short token, int flags);
|
||||
extern aCommand *find_Command_simple(char *cmd);
|
||||
extern aChannel *find_channel(char *, aChannel *);
|
||||
extern Membership *find_membership_link(Membership *lp, aChannel *ptr);
|
||||
@@ -345,7 +345,7 @@ extern int exit_client(aClient *, aClient *, aClient *, char *);
|
||||
extern void initstats(), tstats(aClient *, char *);
|
||||
extern char *check_string(char *);
|
||||
extern char *make_nick_user_host(char *, char *, char *);
|
||||
extern inline char *make_nick_user_host_r(char *namebuf, char *nick, char *name, char *host);
|
||||
extern char *make_nick_user_host_r(char *namebuf, char *nick, char *name, char *host);
|
||||
extern char *make_user_host(char *, char *);
|
||||
extern int parse(aClient *, char *, char *);
|
||||
extern int do_numeric(int, aClient *, aClient *, int, char **);
|
||||
@@ -809,3 +809,5 @@ extern void free_pending_net(aClient *sptr);
|
||||
extern aPendingNet *find_pending_net_by_numeric_butone(int numeric, aClient *exempt);
|
||||
extern aClient *find_pending_net_duplicates(aClient *cptr, aClient **srv, int *numeric);
|
||||
extern aClient *find_non_pending_net_duplicates(aClient *cptr);
|
||||
extern MODVAR char serveropts[];
|
||||
extern MODVAR char *IsupportStrings[];
|
||||
|
||||
@@ -52,6 +52,7 @@ EVENT(htm_calc);
|
||||
EVENT(e_check_fdlists);
|
||||
EVENT(garbage_collect);
|
||||
EVENT(loop_event);
|
||||
EVENT(deprecated_notice);
|
||||
/* support.c */
|
||||
char *my_itoa(int i);
|
||||
|
||||
|
||||
@@ -109,6 +109,9 @@
|
||||
/* Define if you have pstat */
|
||||
#undef HAVE_PSTAT
|
||||
|
||||
/* Define if the libcrypto has RAND_egd */
|
||||
#undef HAVE_RAND_EGD
|
||||
|
||||
/* Define if you have setproctitle */
|
||||
#undef HAVE_SETPROCTITLE
|
||||
|
||||
|
||||
+15
-13
@@ -174,6 +174,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define NICKLEN 30
|
||||
#define USERLEN 10
|
||||
#define REALLEN 50
|
||||
#define SVIDLEN 30
|
||||
#define TOPICLEN 307
|
||||
#define CHANNELLEN 32
|
||||
#define PASSWDLEN 48 /* was 20, then 32, now 48. */
|
||||
@@ -405,6 +406,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define IsAnOper(x) ((x)->umodes & (UMODE_OPER|UMODE_LOCOP))
|
||||
#define IsARegNick(x) ((x)->umodes & (UMODE_REGNICK))
|
||||
#define IsRegNick(x) ((x)->umodes & UMODE_REGNICK)
|
||||
#define IsLoggedIn(x) (IsRegNick(x) || (x->user && (*x->user->svid != '*') && !isdigit(*x->user->svid))) /* registered nick (+r) or just logged into services (may be -r) */
|
||||
#define IsRegNickMsg(x) ((x)->umodes & UMODE_RGSTRONLY)
|
||||
#define IsNoCTCP(x) ((x)->umodes & UMODE_NOCTCP)
|
||||
#define IsWebTV(x) ((x)->umodes & UMODE_WEBTV)
|
||||
@@ -814,7 +816,7 @@ struct User {
|
||||
* which is less useful in the modern world of IRC where nicks are grouped to
|
||||
* accounts, so it is now a string.
|
||||
*/
|
||||
char svid[NICKLEN + 1];
|
||||
char svid[SVIDLEN + 1];
|
||||
|
||||
signed char refcnt; /* Number of times this block is referenced */
|
||||
unsigned short joined; /* number of channels joined */
|
||||
@@ -1144,18 +1146,18 @@ struct _configflag_tld
|
||||
#define CONF_BAN_TYPE_AKILL 1
|
||||
#define CONF_BAN_TYPE_TEMPORARY 2
|
||||
|
||||
#define BAN_ACT_KILL 1
|
||||
#define BAN_ACT_TEMPSHUN 2
|
||||
#define BAN_ACT_SHUN 3
|
||||
#define BAN_ACT_KLINE 4
|
||||
#define BAN_ACT_ZLINE 5
|
||||
#define BAN_ACT_GLINE 6
|
||||
#define BAN_ACT_GZLINE 7
|
||||
/* below are pretty much spamfilter only */
|
||||
#define BAN_ACT_BLOCK 8
|
||||
#define BAN_ACT_DCCBLOCK 9
|
||||
#define BAN_ACT_VIRUSCHAN 10
|
||||
#define BAN_ACT_WARN 11
|
||||
/* Ban actions. These must be ordered by severity (!) */
|
||||
#define BAN_ACT_GZLINE 1100
|
||||
#define BAN_ACT_GLINE 1000
|
||||
#define BAN_ACT_ZLINE 900
|
||||
#define BAN_ACT_KLINE 800
|
||||
#define BAN_ACT_SHUN 700
|
||||
#define BAN_ACT_KILL 600
|
||||
#define BAN_ACT_TEMPSHUN 500
|
||||
#define BAN_ACT_VIRUSCHAN 400
|
||||
#define BAN_ACT_DCCBLOCK 300
|
||||
#define BAN_ACT_BLOCK 200
|
||||
#define BAN_ACT_WARN 100
|
||||
|
||||
|
||||
#define CRULE_ALL 0
|
||||
|
||||
+1
-1
@@ -144,7 +144,7 @@ extern char *rindex(char *, char);
|
||||
/*
|
||||
* Mac OS X Tiger Support (Intel Only)
|
||||
*/
|
||||
#if defined(macosx) || (defined(__APPLE__) && defined(__MACH__))
|
||||
#if defined(macosx) || defined(__APPLE__)
|
||||
#define OSXTIGER
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
/** Standard include for all UnrealIRCd modules.
|
||||
* This should normally provide all of UnrealIRCd's functionality
|
||||
* (that is publicly exposed anyway).
|
||||
*/
|
||||
#include "config.h"
|
||||
#include "struct.h"
|
||||
#include "common.h"
|
||||
#include "sys.h"
|
||||
#include "numeric.h"
|
||||
#include "msg.h"
|
||||
#include "proto.h"
|
||||
#include "channel.h"
|
||||
#include <time.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifdef _WIN32
|
||||
#include <io.h>
|
||||
#endif
|
||||
#include <fcntl.h>
|
||||
#include "h.h"
|
||||
#ifdef _WIN32
|
||||
#include "version.h"
|
||||
#endif
|
||||
+1
-1
@@ -54,7 +54,7 @@
|
||||
* Can be useful if the above 3 versionids are insufficient for you (eg: you want to support CVS).
|
||||
* This is updated automatically on the CVS server every Monday. so don't touch it.
|
||||
*/
|
||||
#define UNREAL_VERSION_TIME 201144
|
||||
#define UNREAL_VERSION_TIME 201430
|
||||
|
||||
#define UnrealProtocol 2311
|
||||
#define PATCH1 macro_to_str(UNREAL_VERSION_GENERATION)
|
||||
|
||||
@@ -78,6 +78,6 @@
|
||||
|
||||
/* Version suffix such as a beta marker or release candidate marker. (e.g.:
|
||||
-rc2 for unrealircd-3.2.9-rc2) */
|
||||
#define UNREAL_VERSION_SUFFIX "-rc1"
|
||||
#define UNREAL_VERSION_SUFFIX ".7"
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -813,7 +813,7 @@ int can_send(aClient *cptr, aChannel *chptr, char *msgtext, int notice)
|
||||
return (CANNOT_SEND_NOPRIVMSGS);
|
||||
|
||||
lp = find_membership_link(cptr->user->channel, chptr);
|
||||
if ((chptr->mode.mode & MODE_MODREG) && !op_can_override(cptr) && !IsRegNick(cptr) &&
|
||||
if ((chptr->mode.mode & MODE_MODREG) && !op_can_override(cptr) && !IsLoggedIn(cptr) &&
|
||||
(!lp
|
||||
|| !(lp->flags & (CHFL_CHANOP | CHFL_VOICE | CHFL_CHANOWNER |
|
||||
CHFL_HALFOP | CHFL_CHANPROT))))
|
||||
|
||||
+27
-25
@@ -109,7 +109,7 @@ static int parse_v6_netmask(const char *text, struct IN_ADDR *addr, short int *b
|
||||
else if (c == '*')
|
||||
{
|
||||
/* Error: there was a ::, or it is not the last segment */
|
||||
if (finsert >= 0 || *(p + 1) || dp == 0 || *(p - 1) != ':')
|
||||
if (finsert >= 0 || *(p + 1) || dp == 0 || (p == text) || (*(p - 1) != ':'))
|
||||
return HM_HOST;
|
||||
bits = dp * 16;
|
||||
}
|
||||
@@ -191,34 +191,36 @@ static int parse_v4_netmask(const char *text, struct IN_ADDR *addr, short int *b
|
||||
digits[n++] = text;
|
||||
|
||||
for (p = text; (c = *p); p++)
|
||||
{
|
||||
if (c >= '0' && c <= '9') /* empty */
|
||||
;
|
||||
else if (c == '.')
|
||||
{
|
||||
if (n >= 4) /* Error: More than four sections */
|
||||
else if (c == '.')
|
||||
{
|
||||
if (n >= 4) /* Error: More than four sections */
|
||||
return HM_HOST;
|
||||
digits[n++] = p + 1;
|
||||
}
|
||||
else if (c == '*')
|
||||
{
|
||||
if (*(p + 1) || (p == text) || *(p - 1) != '.') /* Error: * is not at the end
|
||||
* or not its own section */
|
||||
return HM_HOST;
|
||||
bits = (n - 1) * 8;
|
||||
break;
|
||||
}
|
||||
else if (c == '/')
|
||||
{
|
||||
char *after;
|
||||
bits = strtoul(p + 1, &after, 10);
|
||||
if (bits < 0 || *after) /* Error: Invalid number or not end */
|
||||
return HM_HOST;
|
||||
if (bits > n * 8) /* Error: More than the bits given */
|
||||
return HM_HOST;
|
||||
break;
|
||||
}
|
||||
else /* Error: Illegal character */
|
||||
return HM_HOST;
|
||||
digits[n++] = p + 1;
|
||||
}
|
||||
else if (c == '*')
|
||||
{
|
||||
if (*(p + 1) || n == 0 || *(p - 1) != '.') /* Error: * is not at the end
|
||||
* or not its own section */
|
||||
return HM_HOST;
|
||||
bits = (n - 1) * 8;
|
||||
break;
|
||||
}
|
||||
else if (c == '/')
|
||||
{
|
||||
char *after;
|
||||
bits = strtoul(p + 1, &after, 10);
|
||||
if (!bits || *after) /* Error: Invalid number or not end */
|
||||
return HM_HOST;
|
||||
if (bits > n * 8) /* Error: More than the bits given */
|
||||
return HM_HOST;
|
||||
break;
|
||||
}
|
||||
else /* Error: Illegal character */
|
||||
return HM_HOST;
|
||||
|
||||
if (n < 4 && bits == 0)
|
||||
bits = n * 8;
|
||||
|
||||
@@ -222,5 +222,6 @@ void SetupEvents(void)
|
||||
EventAddEx(NULL, "cmodej_cleanup_structs", 60, 0, cmodej_cleanup_structs, NULL);
|
||||
#endif
|
||||
EventAddEx(NULL, "unrealdns_removeoldrecords", 15, 0, unrealdns_removeoldrecords, NULL);
|
||||
EventAddEx(NULL, "deprecated_notice", (86400*7)-(3600*8), 0, deprecated_notice, NULL);
|
||||
UnlockEventSystem();
|
||||
}
|
||||
|
||||
@@ -842,7 +842,6 @@ EVENT(e_clean_out_throttling_buckets)
|
||||
|
||||
if (!t || (TStime() - t > 30))
|
||||
{
|
||||
extern char serveropts[];
|
||||
extern Module *Modules;
|
||||
char *p = serveropts + strlen(serveropts);
|
||||
Module *mi;
|
||||
|
||||
+17
@@ -431,6 +431,18 @@ EVENT(garbage_collect)
|
||||
loop.do_garbage_collect = 0;
|
||||
}
|
||||
|
||||
EVENT(deprecated_notice)
|
||||
{
|
||||
/* Send a warning to opers currently online every week after November 1, 2016 */
|
||||
if (TStime() > 1477954800)
|
||||
{
|
||||
sendto_realops("[WARNING] UnrealIRCd 3.2.x is no longer supported after December 31, 2016. "
|
||||
"See https://www.unrealircd.org/docs/UnrealIRCd_3.2.x_deprecated");
|
||||
ircd_log(LOG_ERROR, "[WARNING] UnrealIRCd 3.2.x is no longer supported after December 31, 2016. "
|
||||
"See https://www.unrealircd.org/docs/UnrealIRCd_3.2.x_deprecated");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** try_connections
|
||||
**
|
||||
@@ -1531,6 +1543,11 @@ int InitwIRCD(int argc, char *argv[])
|
||||
fprintf(stderr,
|
||||
"---------------------------------------------------------------------\n");
|
||||
#endif
|
||||
if (time(NULL) > 1459461600)
|
||||
{
|
||||
fprintf(stderr, "WARNING: UnrealIRCd 3.2.x is no longer supported after December 31, 2016.\n"
|
||||
"See https://www.unrealircd.org/docs/UnrealIRCd_3.2.x_deprecated\n");
|
||||
}
|
||||
open_debugfile();
|
||||
#ifndef NO_FDLIST
|
||||
init_fdlist(&serv_fdlist);
|
||||
|
||||
@@ -91,8 +91,8 @@ all: build
|
||||
build: $(MODULES)
|
||||
|
||||
custommodule: $(MODULEFILE).c
|
||||
$(CC) $(CFLAGS) $(MODULEFLAGS) $(EXLIBS) -DDYNAMIC_LINKING \
|
||||
-o $(MODULEFILE).so $(MODULEFILE).c
|
||||
$(CC) $(CFLAGS) $(MODULEFLAGS) -DDYNAMIC_LINKING \
|
||||
-o $(MODULEFILE).so $(MODULEFILE).c $(EXLIBS)
|
||||
|
||||
commands.so: l_commands.c $(COMMANDS) $(INCLUDES)
|
||||
$(CC) $(CFLAGS) $(MODULEFLAGS) -o commands.so l_commands.c \
|
||||
|
||||
@@ -61,7 +61,7 @@ ModuleHeader l_commands_Header
|
||||
#endif
|
||||
= {
|
||||
"commands", /* Name of module */
|
||||
"3.2.10", /* Version */
|
||||
"3.2.10.7", /* Version */
|
||||
"Wrapper library for m_ commands", /* Short description of module */
|
||||
"3.2-b8-1",
|
||||
NULL
|
||||
|
||||
@@ -117,8 +117,7 @@ int n, wasaway = 0;
|
||||
sendto_serv_butone_token(cptr, parv[0], MSG_AWAY, TOK_AWAY, "");
|
||||
hash_check_watch(cptr, RPL_NOTAWAY);
|
||||
|
||||
sendto_common_channels_local_butone(sptr, PROTO_AWAY_NOTIFY, ":%s!%s@%s AWAY",
|
||||
sptr->name, sptr->user->username, GetHost(sptr));
|
||||
sendto_common_channels_local_butone(sptr, PROTO_AWAY_NOTIFY, ":%s AWAY", sptr->name);
|
||||
}
|
||||
/* hope this works XX */
|
||||
if (MyConnect(sptr))
|
||||
@@ -172,8 +171,7 @@ int n, wasaway = 0;
|
||||
sendto_one(sptr, rpl_str(RPL_NOWAWAY), me.name, parv[0]);
|
||||
|
||||
hash_check_watch(cptr, wasaway ? RPL_REAWAY : RPL_GONEAWAY);
|
||||
sendto_common_channels_local_butone(sptr, PROTO_AWAY_NOTIFY, ":%s!%s@%s AWAY :%s",
|
||||
sptr->name, sptr->user->username, GetHost(sptr), away);
|
||||
sendto_common_channels_local_butone(sptr, PROTO_AWAY_NOTIFY, ":%s AWAY :%s", sptr->name, away);
|
||||
|
||||
RunHook2(HOOKTYPE_AWAY, sptr, away);
|
||||
return 0;
|
||||
|
||||
+22
-15
@@ -232,14 +232,14 @@ static void clicap_generate(aClient *sptr, const char *subcmd, int flags, int cl
|
||||
sendto_one(sptr, "%s :%s", buf, capbuf);
|
||||
}
|
||||
|
||||
static void cap_ack(aClient *sptr, const char *arg)
|
||||
static int cap_ack(aClient *sptr, const char *arg)
|
||||
{
|
||||
struct clicap *cap;
|
||||
int capadd = 0, capdel = 0;
|
||||
int finished = 0, negate;
|
||||
|
||||
if (BadPtr(arg))
|
||||
return;
|
||||
return 0;
|
||||
|
||||
for(cap = clicap_find(arg, &negate, &finished); cap;
|
||||
cap = clicap_find(NULL, &negate, &finished))
|
||||
@@ -262,40 +262,47 @@ static void cap_ack(aClient *sptr, const char *arg)
|
||||
|
||||
sptr->proto |= capadd;
|
||||
sptr->proto &= ~capdel;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void cap_clear(aClient *sptr, const char *arg)
|
||||
static int cap_clear(aClient *sptr, const char *arg)
|
||||
{
|
||||
clicap_generate(sptr, "ACK", sptr->proto ? sptr->proto : -1, 1);
|
||||
|
||||
sptr->proto = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void cap_end(aClient *sptr, const char *arg)
|
||||
static int cap_end(aClient *sptr, const char *arg)
|
||||
{
|
||||
if (IsRegisteredUser(sptr))
|
||||
return;
|
||||
return 0;
|
||||
|
||||
sptr->proto &= ~PROTO_CLICAP;
|
||||
|
||||
if (sptr->name[0] && sptr->user != NULL)
|
||||
register_user(sptr, sptr, sptr->name, sptr->user->username, NULL, NULL, NULL);
|
||||
if (*sptr->name && sptr->user && *sptr->user->username && IsNotSpoof(sptr))
|
||||
return register_user(sptr, sptr, sptr->name, sptr->user->username, NULL, NULL, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void cap_list(aClient *sptr, const char *arg)
|
||||
static int cap_list(aClient *sptr, const char *arg)
|
||||
{
|
||||
clicap_generate(sptr, "LIST", sptr->proto ? sptr->proto : -1, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void cap_ls(aClient *sptr, const char *arg)
|
||||
static int cap_ls(aClient *sptr, const char *arg)
|
||||
{
|
||||
if (!IsRegisteredUser(sptr))
|
||||
sptr->proto |= PROTO_CLICAP;
|
||||
|
||||
clicap_generate(sptr, "LS", 0, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void cap_req(aClient *sptr, const char *arg)
|
||||
static int cap_req(aClient *sptr, const char *arg)
|
||||
{
|
||||
char buf[BUFSIZE];
|
||||
char pbuf[2][BUFSIZE];
|
||||
@@ -309,7 +316,7 @@ static void cap_req(aClient *sptr, const char *arg)
|
||||
sptr->proto |= PROTO_CLICAP;
|
||||
|
||||
if (BadPtr(arg))
|
||||
return;
|
||||
return 0;
|
||||
|
||||
buflen = snprintf(buf, sizeof(buf), ":%s CAP %s ACK",
|
||||
me.name, BadPtr(sptr->name) ? "*" : sptr->name);
|
||||
@@ -369,7 +376,7 @@ static void cap_req(aClient *sptr, const char *arg)
|
||||
if (!finished)
|
||||
{
|
||||
sendto_one(sptr, ":%s CAP %s NAK :%s", me.name, BadPtr(sptr->name) ? "*" : sptr->name, arg);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (i)
|
||||
@@ -382,11 +389,12 @@ static void cap_req(aClient *sptr, const char *arg)
|
||||
|
||||
sptr->proto |= capadd;
|
||||
sptr->proto &= ~capdel;
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct clicap_cmd {
|
||||
const char *cmd;
|
||||
void (*func)(struct Client *source_p, const char *arg);
|
||||
int (*func)(struct Client *source_p, const char *arg);
|
||||
};
|
||||
|
||||
static struct clicap_cmd clicap_cmdtable[] = {
|
||||
@@ -437,8 +445,7 @@ DLLFUNC int m_cap(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
(cmd->func)(sptr, parv[2]);
|
||||
return 0;
|
||||
return (cmd->func)(sptr, parv[2]);
|
||||
}
|
||||
|
||||
/* This is called on module init, before Server Ready */
|
||||
|
||||
@@ -208,7 +208,7 @@ Ban *banned;
|
||||
/* We check this later return (ERR_CHANNELISFULL); */
|
||||
}
|
||||
|
||||
if ((chptr->mode.mode & MODE_RGSTRONLY) && !IsARegNick(sptr))
|
||||
if ((chptr->mode.mode & MODE_RGSTRONLY) && !IsLoggedIn(sptr))
|
||||
return (ERR_NEEDREGGEDNICK);
|
||||
|
||||
if (*chptr->mode.key && (BadPtr(key) || strcmp(chptr->mode.key, key)))
|
||||
|
||||
+5
-19
@@ -148,7 +148,7 @@ int ret;
|
||||
return CANPRIVMSG_CONTINUE;
|
||||
}
|
||||
/* Umode +R (idea from Bahamut) */
|
||||
if (IsRegNickMsg(acptr) && !IsRegNick(sptr) && !IsULine(sptr) && !IsOper(sptr) && !IsServer(sptr)) {
|
||||
if (IsRegNickMsg(acptr) && !IsLoggedIn(sptr) && !IsULine(sptr) && !IsOper(sptr) && !IsServer(sptr)) {
|
||||
sendto_one(sptr, err_str(ERR_NONONREG), me.name, sptr->name,
|
||||
acptr->name);
|
||||
return 0;
|
||||
@@ -666,29 +666,15 @@ int _is_silenced(aClient *sptr, aClient *acptr)
|
||||
Link *lp;
|
||||
anUser *user;
|
||||
static char sender[HOSTLEN + NICKLEN + USERLEN + 5];
|
||||
static char senderx[HOSTLEN + NICKLEN + USERLEN + 5];
|
||||
char checkv = 0;
|
||||
|
||||
if (!(acptr->user) || !(lp = acptr->user->silence) ||
|
||||
!(user = sptr->user)) return 0;
|
||||
|
||||
ircsprintf(sender, "%s!%s@%s", sptr->name, user->username,
|
||||
user->realhost);
|
||||
/* We also check for matches against sptr->user->virthost if present,
|
||||
* this is checked regardless of mode +x so you can't do tricks like:
|
||||
* evil has +x and msgs, victim places silence on +x host, evil does -x
|
||||
* and can msg again. -- Syzop
|
||||
*/
|
||||
if (sptr->user->virthost)
|
||||
{
|
||||
ircsprintf(senderx, "%s!%s@%s", sptr->name, user->username,
|
||||
sptr->user->virthost);
|
||||
checkv = 1;
|
||||
}
|
||||
ircsprintf(sender, "%s!%s@%s", sptr->name, user->username, GetHost(sptr));
|
||||
|
||||
for (; lp; lp = lp->next)
|
||||
{
|
||||
if (!match(lp->value.cp, sender) || (checkv && !match(lp->value.cp, senderx)))
|
||||
if (!match(lp->value.cp, sender))
|
||||
{
|
||||
if (!MyConnect(sptr))
|
||||
{
|
||||
@@ -936,7 +922,7 @@ int hlength = strlen (haystack);
|
||||
}
|
||||
return NULL; /* not found */
|
||||
}
|
||||
inline int fast_badword_match(ConfigItem_badword *badword, char *line)
|
||||
static inline int fast_badword_match(ConfigItem_badword *badword, char *line)
|
||||
{
|
||||
char *p;
|
||||
int bwlen = strlen(badword->word);
|
||||
@@ -969,7 +955,7 @@ next:
|
||||
* buf is used for the result and max is sizeof(buf).
|
||||
* (Internal assumptions: max > 0 AND max > strlen(line)+1)
|
||||
*/
|
||||
inline int fast_badword_replace(ConfigItem_badword *badword, char *line, char *buf, int max)
|
||||
static inline int fast_badword_replace(ConfigItem_badword *badword, char *line, char *buf, int max)
|
||||
{
|
||||
/* Some aliases ;P */
|
||||
char *replacew = badword->replace ? badword->replace : REPLACEWORD;
|
||||
|
||||
@@ -2484,7 +2484,7 @@ DLLFUNC CMD_FUNC(_m_umode)
|
||||
if ((setflags & UMODE_INVISIBLE) && !IsInvisible(sptr))
|
||||
IRCstats.invisible--;
|
||||
|
||||
if (!IsAnOper(sptr))
|
||||
if (MyConnect(sptr) && !IsAnOper(sptr))
|
||||
remove_oper_modes(sptr);
|
||||
|
||||
/*
|
||||
|
||||
@@ -738,7 +738,7 @@ DLLFUNC CMD_FUNC(m_nick)
|
||||
}
|
||||
/* This had to be copied here to avoid problems.. */
|
||||
(void)strcpy(sptr->name, nick);
|
||||
if (sptr->user && IsNotSpoof(sptr) && !CHECKPROTO(sptr, PROTO_CLICAP))
|
||||
if (sptr->user && *sptr->user->username && IsNotSpoof(sptr) && !CHECKPROTO(sptr, PROTO_CLICAP))
|
||||
{
|
||||
/*
|
||||
** USER already received, now we have NICK.
|
||||
@@ -864,6 +864,8 @@ int _register_user(aClient *cptr, aClient *sptr, char *nick, char *username, cha
|
||||
|
||||
if (MyConnect(sptr))
|
||||
{
|
||||
char temp[USERLEN + 1];
|
||||
|
||||
if ((i = check_client(sptr, username))) {
|
||||
/* This had return i; before -McSkaf */
|
||||
if (i == -5)
|
||||
@@ -909,16 +911,16 @@ int _register_user(aClient *cptr, aClient *sptr, char *nick, char *username, cha
|
||||
*
|
||||
* Moved the noident stuff here. -OnyxDragon
|
||||
*/
|
||||
|
||||
/* because username may point to user->username */
|
||||
strncpyzt(temp, username, USERLEN + 1);
|
||||
|
||||
if (!(sptr->flags & FLAGS_DOID))
|
||||
strncpyzt(user->username, username, USERLEN + 1);
|
||||
strncpyzt(user->username, temp, USERLEN + 1);
|
||||
else if (sptr->flags & FLAGS_GOTID)
|
||||
strncpyzt(user->username, sptr->username, USERLEN + 1);
|
||||
else
|
||||
{
|
||||
|
||||
/* because username may point to user->username */
|
||||
char temp[USERLEN + 1];
|
||||
strncpyzt(temp, username, USERLEN + 1);
|
||||
if (IDENT_CHECK == 0) {
|
||||
strncpyzt(user->username, temp, USERLEN + 1);
|
||||
}
|
||||
@@ -1071,7 +1073,6 @@ int _register_user(aClient *cptr, aClient *sptr, char *nick, char *username, cha
|
||||
me.name, parv[0],
|
||||
me.name, version, umodestring, cmodestring);
|
||||
{
|
||||
extern MODVAR char *IsupportStrings[];
|
||||
int i;
|
||||
for (i = 0; IsupportStrings[i]; i++)
|
||||
sendto_one(sptr, rpl_str(RPL_ISUPPORT), me.name, nick, IsupportStrings[i]);
|
||||
|
||||
@@ -186,8 +186,8 @@ DLLFUNC CMD_FUNC(m_part)
|
||||
#endif
|
||||
|
||||
}
|
||||
/* +M and not +r? */
|
||||
if ((chptr->mode.mode & MODE_MODREG) && !IsRegNick(sptr) && !IsAnOper(sptr))
|
||||
/* +M and not logged in to services? */
|
||||
if ((chptr->mode.mode & MODE_MODREG) && !IsLoggedIn(sptr) && !IsAnOper(sptr))
|
||||
comment = NULL;
|
||||
|
||||
if (MyConnect(sptr))
|
||||
|
||||
@@ -180,7 +180,7 @@ Debug((DEBUG_NOTICE, "NOSPOOF"));
|
||||
sendto_one(sptr, ":IRC!IRC@%s PRIVMSG %s :\1VERSION\1",
|
||||
me.name, sptr->name);
|
||||
|
||||
if (sptr->user && sptr->name[0] && !CHECKPROTO(sptr, PROTO_CLICAP))
|
||||
if (sptr->user && *sptr->user->username && sptr->name[0] && !CHECKPROTO(sptr, PROTO_CLICAP))
|
||||
return register_user(cptr, sptr, sptr->name,
|
||||
sptr->user->username, NULL, NULL, NULL);
|
||||
return 0;
|
||||
|
||||
@@ -44,8 +44,6 @@
|
||||
|
||||
DLLFUNC int m_protoctl(aClient *cptr, aClient *sptr, int parc, char *parv[]);
|
||||
|
||||
extern MODVAR char serveropts[];
|
||||
|
||||
#define MSG_PROTOCTL "PROTOCTL"
|
||||
#define TOK_PROTOCTL "_"
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ static aClient *decode_puid(char *puid)
|
||||
|
||||
client = local[slot];
|
||||
|
||||
if (cookie && client->sasl_cookie != cookie)
|
||||
if (cookie && client && (client->sasl_cookie != cookie))
|
||||
return NULL;
|
||||
|
||||
return client;
|
||||
@@ -264,6 +264,12 @@ static int m_authenticate(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((parv[1][0] == ':') || strchr(parv[1], ' '))
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_CANNOTDOCOMMAND), me.name, "*", "AUTHENTICATE", "Invalid parameter");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strlen(parv[1]) > 400)
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_SASLTOOLONG), me.name, BadPtr(sptr->name) ? "*" : sptr->name);
|
||||
|
||||
@@ -130,8 +130,6 @@ char buf[512];
|
||||
|
||||
void _send_server_message(aClient *sptr)
|
||||
{
|
||||
extern char serveropts[];
|
||||
|
||||
if (sptr->serv->flags.server_sent)
|
||||
{
|
||||
#ifdef DEBUGMODE
|
||||
@@ -695,7 +693,6 @@ CMD_FUNC(m_server_remote)
|
||||
int m_server_synch(aClient *cptr, long numeric, ConfigItem_link *aconf)
|
||||
{
|
||||
char *inpath = get_client_name(cptr, TRUE);
|
||||
extern MODVAR char serveropts[];
|
||||
aClient *acptr;
|
||||
int i;
|
||||
char buf[BUFSIZE];
|
||||
|
||||
@@ -193,7 +193,7 @@ int stats_compare(char *s1, char *s2)
|
||||
return 1;
|
||||
}
|
||||
|
||||
inline struct statstab *stats_binary_search(char c) {
|
||||
struct statstab *stats_binary_search(char c) {
|
||||
int start = 0;
|
||||
int stop = sizeof(StatsTable)/sizeof(StatsTable[0])-1;
|
||||
int mid;
|
||||
@@ -209,7 +209,7 @@ inline struct statstab *stats_binary_search(char c) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inline struct statstab *stats_search(char *s) {
|
||||
struct statstab *stats_search(char *s) {
|
||||
int i;
|
||||
for (i = 0; StatsTable[i].flag; i++)
|
||||
if (!stats_compare(StatsTable[i].longflag,s))
|
||||
@@ -217,7 +217,7 @@ inline struct statstab *stats_search(char *s) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inline char *stats_combine_parv(char *p1, char *p2)
|
||||
char *stats_combine_parv(char *p1, char *p2)
|
||||
{
|
||||
static char buf[BUFSIZE+1];
|
||||
strcpy(buf, p1);
|
||||
@@ -226,7 +226,7 @@ inline char *stats_combine_parv(char *p1, char *p2)
|
||||
return buf;
|
||||
}
|
||||
|
||||
inline void stats_help(aClient *sptr)
|
||||
void stats_help(aClient *sptr)
|
||||
{
|
||||
sendto_one(sptr, rpl_str(RPL_STATSHELP), me.name, sptr->name, "/Stats flags:");
|
||||
sendto_one(sptr, rpl_str(RPL_STATSHELP), me.name, sptr->name,
|
||||
@@ -321,7 +321,7 @@ inline void stats_help(aClient *sptr)
|
||||
"Z - mem - Send memory usage information");
|
||||
}
|
||||
|
||||
inline int stats_operonly_short(char c)
|
||||
int stats_operonly_short(char c)
|
||||
{
|
||||
char l;
|
||||
if (!OPER_ONLY_STATS)
|
||||
@@ -351,7 +351,7 @@ inline int stats_operonly_short(char c)
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline int stats_operonly_long(char *s)
|
||||
int stats_operonly_long(char *s)
|
||||
{
|
||||
OperStat *os;
|
||||
for (os = iConf.oper_only_stats_ext; os; os = (OperStat *)os->next)
|
||||
@@ -363,7 +363,7 @@ inline int stats_operonly_long(char *s)
|
||||
}
|
||||
|
||||
/* This is pretty slow, but it isn't used often so it isn't a big deal */
|
||||
inline char *stats_operonly_long_to_short()
|
||||
char *stats_operonly_long_to_short()
|
||||
{
|
||||
static char buffer[BUFSIZE+1];
|
||||
int i = 0;
|
||||
|
||||
@@ -516,8 +516,8 @@ char *xtok = show_change ? TOK_SVS2MODE : TOK_SVSMODE;
|
||||
if (parv[3])
|
||||
{
|
||||
strlcpy(acptr->user->svid, parv[3], sizeof(acptr->user->svid));
|
||||
sendto_common_channels_local_butone(acptr, PROTO_ACCOUNT_NOTIFY, ":%s!%s@%s ACCOUNT %s",
|
||||
acptr->name, acptr->user->username, GetHost(acptr),
|
||||
sendto_common_channels_local_butone(acptr, PROTO_ACCOUNT_NOTIFY, ":%s ACCOUNT %s",
|
||||
acptr->name,
|
||||
!isdigit(*acptr->user->svid) ? acptr->user->svid : "*");
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -113,6 +113,12 @@ aClient *ocptr; /* Other client */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* if the new nickname is identical to the old one, ignore it */
|
||||
if (!strcmp(acptr->name, parv[2]))
|
||||
return 0;
|
||||
|
||||
RunHook2(HOOKTYPE_LOCAL_NICKCHANGE, acptr, parv[2]);
|
||||
|
||||
if (acptr != ocptr)
|
||||
acptr->umodes &= ~UMODE_REGNICK;
|
||||
acptr->lastnick = TS2ts(parv[3]);
|
||||
@@ -127,7 +133,6 @@ aClient *ocptr; /* Other client */
|
||||
sendto_snomask(SNO_NICKCHANGE,
|
||||
"*** Notice -- %s (%s@%s) has been forced to change his/her nickname to %s",
|
||||
acptr->name, acptr->user->username, acptr->user->realhost, parv[2]);
|
||||
RunHook2(HOOKTYPE_LOCAL_NICKCHANGE, acptr, parv[2]);
|
||||
|
||||
strlcpy(acptr->name, parv[2], sizeof acptr->name);
|
||||
add_to_client_hash_table(parv[2], acptr);
|
||||
|
||||
+151
-82
@@ -2426,6 +2426,46 @@ int _place_host_ban(aClient *sptr, int action, char *reason, long duration)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/** This function compares two spamfilters ('one' and 'two') and will return
|
||||
* a 'winner' based on which one has the strongest action.
|
||||
* If both have equal action then some additional logic is applied simply
|
||||
* to ensure we (almost) always return the same winner regardless of the
|
||||
* order of the spamfilters (which may differ between servers).
|
||||
*/
|
||||
aTKline *choose_winning_spamfilter(aTKline *one, aTKline *two)
|
||||
{
|
||||
int n;
|
||||
|
||||
/* First, see if the action field differs... */
|
||||
if (one->ptr.spamf->action != two->ptr.spamf->action)
|
||||
{
|
||||
/* We can simply compare the action. Highest (strongest) wins. */
|
||||
if (one->ptr.spamf->action > two->ptr.spamf->action)
|
||||
return one;
|
||||
else
|
||||
return two;
|
||||
}
|
||||
|
||||
/* Ok, try comparing the regex then.. */
|
||||
n = strcmp(one->reason, two->reason);
|
||||
if (n < 0)
|
||||
return one;
|
||||
if (n > 0)
|
||||
return two;
|
||||
|
||||
/* Hmm.. regex is identical. Try the 'reason' field. */
|
||||
n = strcmp(one->ptr.spamf->tkl_reason, two->ptr.spamf->tkl_reason);
|
||||
if (n < 0)
|
||||
return one;
|
||||
if (n > 0)
|
||||
return two;
|
||||
|
||||
/* Hmm.. 'reason' is identical as well.
|
||||
* Make a final decision, could still be identical but would be unlikely.
|
||||
*/
|
||||
return (one->subtype > two->subtype) ? one : two;
|
||||
}
|
||||
|
||||
/** Checks if 'target' is on the spamfilter exception list.
|
||||
* RETURNS 1 if found in list, 0 if not.
|
||||
*/
|
||||
@@ -2493,12 +2533,14 @@ int ret;
|
||||
int _dospamfilter(aClient *sptr, char *str_in, int type, char *target, int flags, aTKline **rettk)
|
||||
{
|
||||
aTKline *tk;
|
||||
aTKline *winner_tk = NULL;
|
||||
char *str;
|
||||
int ret;
|
||||
int ret = -1;
|
||||
#ifdef SPAMFILTER_DETECTSLOW
|
||||
struct rusage rnow, rprev;
|
||||
long ms_past;
|
||||
#endif
|
||||
|
||||
if (rettk)
|
||||
*rettk = NULL; /* initialize to NULL */
|
||||
|
||||
@@ -2517,8 +2559,10 @@ long ms_past;
|
||||
{
|
||||
if (!(tk->subtype & type))
|
||||
continue;
|
||||
|
||||
if ((flags & SPAMFLAG_NOWARN) && (tk->ptr.spamf->action == BAN_ACT_WARN))
|
||||
continue;
|
||||
|
||||
#ifdef SPAMFILTER_DETECTSLOW
|
||||
memset(&rnow, 0, sizeof(rnow));
|
||||
memset(&rprev, 0, sizeof(rnow));
|
||||
@@ -2547,11 +2591,13 @@ long ms_past;
|
||||
ms_past, tk->reason);
|
||||
}
|
||||
#endif
|
||||
if (!ret)
|
||||
|
||||
if (ret == 0)
|
||||
{
|
||||
/* matched! */
|
||||
/* We have a match! */
|
||||
char buf[1024];
|
||||
char targetbuf[48];
|
||||
|
||||
if (target) {
|
||||
targetbuf[0] = ' ';
|
||||
strlcpy(targetbuf+1, target, sizeof(targetbuf)-1); /* cut it off */
|
||||
@@ -2559,7 +2605,7 @@ long ms_past;
|
||||
targetbuf[0] = '\0';
|
||||
|
||||
/* Hold on.. perhaps it's on the exceptions list... */
|
||||
if (target && target_is_spamexcept(target))
|
||||
if (!winner_tk && target && target_is_spamexcept(target))
|
||||
return 0; /* No problem! */
|
||||
|
||||
ircsprintf(buf, "[Spamfilter] %s!%s@%s matches filter '%s': [%s%s: '%s'] [%s]",
|
||||
@@ -2573,86 +2619,109 @@ long ms_past;
|
||||
ircd_log(LOG_SPAMFILTER, "%s", buf);
|
||||
RunHook6(HOOKTYPE_LOCAL_SPAMFILTER, sptr, str, str_in, type, target, tk);
|
||||
|
||||
if (tk->ptr.spamf->action == BAN_ACT_BLOCK)
|
||||
/* If we should stop after the first match, we end here... */
|
||||
if (SPAMFILTER_STOP_ON_FIRST_MATCH)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case SPAMF_USERMSG:
|
||||
case SPAMF_USERNOTICE:
|
||||
sendnotice(sptr, "Message to %s blocked: %s",
|
||||
target, unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
break;
|
||||
case SPAMF_CHANMSG:
|
||||
case SPAMF_CHANNOTICE:
|
||||
sendto_one(sptr, ":%s 404 %s %s :Message blocked: %s",
|
||||
me.name, sptr->name, target,
|
||||
unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
break;
|
||||
case SPAMF_DCC:
|
||||
sendnotice(sptr, "DCC to %s blocked: %s",
|
||||
target, unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
break;
|
||||
case SPAMF_AWAY:
|
||||
/* hack to deal with 'after-away-was-set-filters' */
|
||||
if (sptr->user->away && !strcmp(str_in, sptr->user->away))
|
||||
{
|
||||
/* free away & broadcast the unset */
|
||||
MyFree(sptr->user->away);
|
||||
sptr->user->away = NULL;
|
||||
sendto_serv_butone_token(sptr, sptr->name, MSG_AWAY, TOK_AWAY, "");
|
||||
}
|
||||
break;
|
||||
case SPAMF_TOPIC:
|
||||
//...
|
||||
sendnotice(sptr, "Setting of topic on %s to that text is blocked: %s",
|
||||
target, unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return -1;
|
||||
} else
|
||||
if (tk->ptr.spamf->action == BAN_ACT_WARN)
|
||||
{
|
||||
if ((type != SPAMF_USER) && (type != SPAMF_QUIT))
|
||||
sendto_one(sptr, rpl_str(RPL_SPAMCMDFWD),
|
||||
me.name, sptr->name, cmdname_by_spamftarget(type),
|
||||
unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
return 0;
|
||||
} else
|
||||
if (tk->ptr.spamf->action == BAN_ACT_DCCBLOCK)
|
||||
{
|
||||
if (type == SPAMF_DCC)
|
||||
{
|
||||
sendnotice(sptr, "DCC to %s blocked: %s",
|
||||
target, unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
sendnotice(sptr, "*** You have been blocked from sending files, "
|
||||
"reconnect to regain permission to send files");
|
||||
sptr->flags |= FLAGS_DCCBLOCK;
|
||||
}
|
||||
return -1;
|
||||
} else
|
||||
if (tk->ptr.spamf->action == BAN_ACT_VIRUSCHAN)
|
||||
{
|
||||
if (IsVirus(sptr)) /* Already tagged */
|
||||
return 0;
|
||||
|
||||
/* There's a race condition for SPAMF_USER, so 'rettk' is used for SPAMF_USER
|
||||
* when a user is currently connecting and filters are checked:
|
||||
*/
|
||||
if (!IsClient(sptr))
|
||||
{
|
||||
if (rettk)
|
||||
*rettk = tk;
|
||||
return -5;
|
||||
}
|
||||
winner_tk = tk;
|
||||
break;
|
||||
}
|
||||
|
||||
dospamfilter_viruschan(sptr, tk, type);
|
||||
return -5;
|
||||
} else
|
||||
return place_host_ban(sptr, tk->ptr.spamf->action,
|
||||
unreal_decodespace(tk->ptr.spamf->tkl_reason), tk->ptr.spamf->tkl_duration);
|
||||
/* Otherwise.. we set 'winner_tk' to the spamfilter with the strongest action. */
|
||||
if (!winner_tk)
|
||||
winner_tk = tk;
|
||||
else
|
||||
winner_tk = choose_winning_spamfilter(tk, winner_tk);
|
||||
|
||||
/* and continue.. */
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
tk = winner_tk;
|
||||
|
||||
if (!tk)
|
||||
return 0; /* NOMATCH, we are done */
|
||||
|
||||
/* Spamfilter matched, take action: */
|
||||
|
||||
if (tk->ptr.spamf->action == BAN_ACT_BLOCK)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case SPAMF_USERMSG:
|
||||
case SPAMF_USERNOTICE:
|
||||
sendnotice(sptr, "Message to %s blocked: %s",
|
||||
target, unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
break;
|
||||
case SPAMF_CHANMSG:
|
||||
case SPAMF_CHANNOTICE:
|
||||
sendto_one(sptr, ":%s 404 %s %s :Message blocked: %s",
|
||||
me.name, sptr->name, target,
|
||||
unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
break;
|
||||
case SPAMF_DCC:
|
||||
sendnotice(sptr, "DCC to %s blocked: %s",
|
||||
target, unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
break;
|
||||
case SPAMF_AWAY:
|
||||
/* hack to deal with 'after-away-was-set-filters' */
|
||||
if (sptr->user->away && !strcmp(str_in, sptr->user->away))
|
||||
{
|
||||
/* free away & broadcast the unset */
|
||||
MyFree(sptr->user->away);
|
||||
sptr->user->away = NULL;
|
||||
sendto_serv_butone_token(sptr, sptr->name, MSG_AWAY, TOK_AWAY, "");
|
||||
}
|
||||
break;
|
||||
case SPAMF_TOPIC:
|
||||
//...
|
||||
sendnotice(sptr, "Setting of topic on %s to that text is blocked: %s",
|
||||
target, unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return -1;
|
||||
} else
|
||||
if (tk->ptr.spamf->action == BAN_ACT_WARN)
|
||||
{
|
||||
if ((type != SPAMF_USER) && (type != SPAMF_QUIT))
|
||||
sendto_one(sptr, rpl_str(RPL_SPAMCMDFWD),
|
||||
me.name, sptr->name, cmdname_by_spamftarget(type),
|
||||
unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
return 0;
|
||||
} else
|
||||
if (tk->ptr.spamf->action == BAN_ACT_DCCBLOCK)
|
||||
{
|
||||
if (type == SPAMF_DCC)
|
||||
{
|
||||
sendnotice(sptr, "DCC to %s blocked: %s",
|
||||
target, unreal_decodespace(tk->ptr.spamf->tkl_reason));
|
||||
sendnotice(sptr, "*** You have been blocked from sending files, "
|
||||
"reconnect to regain permission to send files");
|
||||
sptr->flags |= FLAGS_DCCBLOCK;
|
||||
}
|
||||
return -1;
|
||||
} else
|
||||
if (tk->ptr.spamf->action == BAN_ACT_VIRUSCHAN)
|
||||
{
|
||||
if (IsVirus(sptr)) /* Already tagged */
|
||||
return 0;
|
||||
|
||||
/* There's a race condition for SPAMF_USER, so 'rettk' is used for SPAMF_USER
|
||||
* when a user is currently connecting and filters are checked:
|
||||
*/
|
||||
if (!IsClient(sptr))
|
||||
{
|
||||
if (rettk)
|
||||
*rettk = tk;
|
||||
return -5;
|
||||
}
|
||||
|
||||
dospamfilter_viruschan(sptr, tk, type);
|
||||
return -5;
|
||||
} else
|
||||
return place_host_ban(sptr, tk->ptr.spamf->action,
|
||||
unreal_decodespace(tk->ptr.spamf->tkl_reason), tk->ptr.spamf->tkl_duration);
|
||||
|
||||
return 0; /* NOTREACHED */
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ static void show_watch(aClient *cptr, char *name, int rpl1, int rpl2, int awayno
|
||||
cptr->name, name);
|
||||
else
|
||||
sendto_one(cptr, rpl_str(rpl2), me.name, cptr->name,
|
||||
name, "*", "*", 0);
|
||||
name, "*", "*", 0L);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -187,7 +187,7 @@ MEMORYSTATUS mstat;
|
||||
|
||||
/* Grab non-OS specific "random" data */
|
||||
#ifdef USE_SSL
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x000907000
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x000907000 && defined(HAVE_RAND_EGD)
|
||||
if (EGD_PATH) {
|
||||
n = RAND_query_egd_bytes(EGD_PATH, rdat.egd, sizeof(rdat.egd));
|
||||
}
|
||||
|
||||
+46
-35
@@ -43,6 +43,21 @@ Computing Center and Jarkko Oikarinen";
|
||||
#include <WinSock2.h>
|
||||
#endif
|
||||
|
||||
#include "setup.h"
|
||||
#include "config.h"
|
||||
|
||||
#ifdef USE_POLL
|
||||
# ifndef _WIN32
|
||||
# include <poll.h>
|
||||
# ifndef POLLRDHUP
|
||||
# define POLLRDHUP 0
|
||||
# endif
|
||||
# else
|
||||
# define poll WSAPoll
|
||||
# define POLLRDHUP POLLHUP
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include "struct.h"
|
||||
#include "common.h"
|
||||
#include "sys.h"
|
||||
@@ -74,16 +89,6 @@ Computing Center and Jarkko Oikarinen";
|
||||
#endif
|
||||
|
||||
#ifdef USE_POLL
|
||||
# ifndef _WIN32
|
||||
# include <sys/poll.h>
|
||||
# include <poll.h>
|
||||
# ifndef POLLRDHUP
|
||||
# define POLLRDHUP 0
|
||||
# endif
|
||||
# else
|
||||
# define poll WSAPoll
|
||||
# define POLLRDHUP POLLHUP
|
||||
# endif
|
||||
|
||||
static struct pollfd pollfds[MAXCONNECTIONS], dummy_pollfd;
|
||||
static int pollfd_count = 0;
|
||||
@@ -907,7 +912,6 @@ int check_client(aClient *cptr, char *username)
|
||||
int completed_connection(aClient *cptr)
|
||||
{
|
||||
ConfigItem_link *aconf = cptr->serv ? cptr->serv->conf : NULL;
|
||||
extern char serveropts[];
|
||||
SetHandshake(cptr);
|
||||
|
||||
if (!aconf)
|
||||
@@ -2134,20 +2138,27 @@ deadsocket:
|
||||
}
|
||||
length = 1; /* for fall through case */
|
||||
|
||||
#ifdef USE_POLL
|
||||
if (pfd->revents & POLLIN)
|
||||
#else
|
||||
if (FD_ISSET(cptr->fd, &read_set))
|
||||
if (!DoingDNS(cptr) && !DoingAuth(cptr)
|
||||
#ifdef USE_SSL
|
||||
&& !IsSSLHandshake(cptr)
|
||||
#endif
|
||||
length = read_packet(cptr, 1);
|
||||
/* If we don't have anything to read and we have any recvQ, then
|
||||
* read_packet must still be called, but this time with the 2nd parameter
|
||||
* being 0 (=don't read). This is so we check if anything needs to
|
||||
* be dequeued from the receive queue (due to fake lag). -- Syzop
|
||||
*/
|
||||
else if (DBufLength(&cptr->recvQ) > 0)
|
||||
length = read_packet(cptr, 0);
|
||||
|
||||
)
|
||||
{
|
||||
#ifdef USE_POLL
|
||||
if (pfd->revents & POLLIN)
|
||||
#else
|
||||
if (FD_ISSET(cptr->fd, &read_set))
|
||||
#endif
|
||||
length = read_packet(cptr, 1);
|
||||
/* If we don't have anything to read and we have any recvQ, then
|
||||
* read_packet must still be called, but this time with the 2nd parameter
|
||||
* being 0 (=don't read). This is so we check if anything needs to
|
||||
* be dequeued from the receive queue (due to fake lag). -- Syzop
|
||||
*/
|
||||
else if (DBufLength(&cptr->recvQ) > 0)
|
||||
length = read_packet(cptr, 0);
|
||||
}
|
||||
|
||||
#ifdef USE_SSL
|
||||
if ((length != FLUSH_BUFFER) && (cptr->ssl != NULL) &&
|
||||
IsSSLHandshake(cptr) &&
|
||||
@@ -2401,26 +2412,26 @@ static struct SOCKADDR *connect_inet(ConfigItem_link *aconf, aClient *cptr, int
|
||||
return NULL;
|
||||
}
|
||||
mysk.SIN_PORT = 0;
|
||||
bzero((char *)&server, sizeof(server));
|
||||
server.SIN_FAMILY = AFINET;
|
||||
|
||||
get_sockhost(cptr, aconf->hostname);
|
||||
|
||||
server.SIN_PORT = 0;
|
||||
server.SIN_ADDR = me.ip;
|
||||
server.SIN_FAMILY = AFINET;
|
||||
|
||||
if (aconf->bindip && strcmp("*", aconf->bindip))
|
||||
{
|
||||
bzero((char *)&server, sizeof(server));
|
||||
server.SIN_FAMILY = AFINET;
|
||||
server.SIN_PORT = 0;
|
||||
#ifndef INET6
|
||||
server.SIN_ADDR.S_ADDR = inet_addr(aconf->bindip);
|
||||
#else
|
||||
inet_pton(AF_INET6, aconf->bindip, server.SIN_ADDR.S_ADDR);
|
||||
#endif
|
||||
if (bind(cptr->fd, (struct SOCKADDR *)&server, sizeof(server)) == -1)
|
||||
{
|
||||
report_baderror("error binding to local port for %s:%s", cptr);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
if (bind(cptr->fd, (struct SOCKADDR *)&server, sizeof(server)) == -1)
|
||||
{
|
||||
report_baderror("error binding to local port for %s:%s", cptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bzero((char *)&server, sizeof(server));
|
||||
server.SIN_FAMILY = AFINET;
|
||||
/*
|
||||
|
||||
+23
-7
@@ -1714,6 +1714,7 @@ void config_setdefaultsettings(aConfiguration *i)
|
||||
i->spamfilter_virus_help_channel = strdup("#help");
|
||||
i->spamfilter_detectslow_warn = 250;
|
||||
i->spamfilter_detectslow_fatal = 500;
|
||||
i->spamfilter_stop_on_first_match = 1;
|
||||
i->maxdccallow = 10;
|
||||
i->channel_command_prefix = strdup("`!.");
|
||||
i->check_target_nick_bans = 1;
|
||||
@@ -5174,20 +5175,27 @@ int _conf_allow_channel(ConfigFile *conf, ConfigEntry *ce)
|
||||
{
|
||||
ConfigItem_allow_channel *allow = NULL;
|
||||
ConfigEntry *cep;
|
||||
char *class = NULL;
|
||||
|
||||
/* First, search for ::class, if any */
|
||||
for (cep = ce->ce_entries; cep; cep = cep->ce_next)
|
||||
{
|
||||
if (!strcmp(cep->ce_varname, "class"))
|
||||
class = cep->ce_vardata;
|
||||
}
|
||||
|
||||
allow = MyMallocEx(sizeof(ConfigItem_allow_channel));
|
||||
for (cep = ce->ce_entries; cep; cep = cep->ce_next)
|
||||
{
|
||||
if (!strcmp(cep->ce_varname, "channel"))
|
||||
{
|
||||
/* This way, we permit multiple ::channel items in one allow block */
|
||||
allow = MyMallocEx(sizeof(ConfigItem_allow_channel));
|
||||
ircstrdup(allow->channel, cep->ce_vardata);
|
||||
}
|
||||
else if (!strcmp(cep->ce_varname, "class"))
|
||||
{
|
||||
ircstrdup(allow->class, cep->ce_vardata);
|
||||
if (class)
|
||||
ircstrdup(allow->class, class);
|
||||
AddListItem(allow, conf_allow_channel);
|
||||
}
|
||||
}
|
||||
AddListItem(allow, conf_allow_channel);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -7697,6 +7705,10 @@ int _conf_set(ConfigFile *conf, ConfigEntry *ce)
|
||||
{
|
||||
tempiConf.spamfilter_detectslow_fatal = atol(cepp->ce_vardata);
|
||||
}
|
||||
else if (!strcmp(cepp->ce_varname, "stop-on-first-match"))
|
||||
{
|
||||
tempiConf.spamfilter_stop_on_first_match = config_checkval(cepp->ce_vardata, CFG_YESNO);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!strcmp(cep->ce_varname, "default-bantime"))
|
||||
@@ -7794,6 +7806,7 @@ int _test_set(ConfigFile *conf, ConfigEntry *ce)
|
||||
int errors = 0;
|
||||
Hook *h;
|
||||
#define CheckNull(x) if ((!(x)->ce_vardata) || (!(*((x)->ce_vardata)))) { config_error("%s:%i: missing parameter", (x)->ce_fileptr->cf_filename, (x)->ce_varlinenum); errors++; continue; }
|
||||
#define CheckNullAllowEmpty(x) if ((!(x)->ce_vardata)) { config_error("%s:%i: missing parameter", (x)->ce_fileptr->cf_filename, (x)->ce_varlinenum); errors++; continue; }
|
||||
#define CheckDuplicate(cep, name, display) if (settings.has_##name) { config_warn_duplicate((cep)->ce_fileptr->cf_filename, cep->ce_varlinenum, "set::" display); continue; } else settings.has_##name = 1
|
||||
|
||||
for (cep = ce->ce_entries; cep; cep = cep->ce_next)
|
||||
@@ -7990,7 +8003,7 @@ int _test_set(ConfigFile *conf, ConfigEntry *ce)
|
||||
CheckDuplicate(cep, uhnames, "uhnames");
|
||||
}
|
||||
else if (!strcmp(cep->ce_varname, "channel-command-prefix")) {
|
||||
CheckNull(cep);
|
||||
CheckNullAllowEmpty(cep);
|
||||
CheckDuplicate(cep, channel_command_prefix, "channel-command-prefix");
|
||||
}
|
||||
else if (!strcmp(cep->ce_varname, "allow-userhost-change")) {
|
||||
@@ -8609,6 +8622,9 @@ int _test_set(ConfigFile *conf, ConfigEntry *ce)
|
||||
{
|
||||
} else
|
||||
#endif
|
||||
if (!strcmp(cepp->ce_varname, "stop-on-first-match"))
|
||||
{
|
||||
} else
|
||||
{
|
||||
config_error_unknown(cepp->ce_fileptr->cf_filename,
|
||||
cepp->ce_varlinenum, "set::spamfilter",
|
||||
|
||||
@@ -274,6 +274,11 @@ int channel_canjoin(aClient *sptr, char *name)
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
extern uid_t irc_uid;
|
||||
extern gid_t irc_gid;
|
||||
#endif
|
||||
|
||||
/* irc logs.. */
|
||||
void ircd_log(int flags, char *format, ...)
|
||||
{
|
||||
@@ -356,6 +361,11 @@ static int last_log_file_warning = 0;
|
||||
write_failure = 1;
|
||||
}
|
||||
close(fd);
|
||||
#if defined(IRC_USER) && defined(IRC_GROUP)
|
||||
/* Change ownership of the log file to irc user/group so it can still write after the setuid() */
|
||||
if (!loop.ircd_booted)
|
||||
chown(logs->file, irc_uid, irc_gid);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -227,7 +227,7 @@ char *make_user_host(char *name, char *host)
|
||||
* create a string of form "foo!bar@fubar" given foo, bar and fubar
|
||||
* as the parameters. If NULL, they become "*".
|
||||
*/
|
||||
inline char *make_nick_user_host_r(char *namebuf, char *nick, char *name, char *host)
|
||||
char *make_nick_user_host_r(char *namebuf, char *nick, char *name, char *host)
|
||||
{
|
||||
char *s = namebuf;
|
||||
|
||||
|
||||
+33
-6
@@ -179,8 +179,6 @@ char *p;
|
||||
*/
|
||||
CMD_FUNC(m_version)
|
||||
{
|
||||
extern char serveropts[];
|
||||
extern char *IsupportStrings[];
|
||||
int reply, i;
|
||||
|
||||
/* Only allow remote VERSIONs if registered -- Syzop */
|
||||
@@ -251,6 +249,23 @@ char buf[1024];
|
||||
#define IRCDTOTALVERSION BASE_VERSION PATCH1 PATCH2 PATCH3 PATCH4 PATCH5 PATCH6 PATCH7 PATCH8 PATCH9
|
||||
#endif
|
||||
|
||||
int remotecmdfilter(aClient *sptr, int parc, char *parv[])
|
||||
{
|
||||
/* no remote requests permitted from non-ircops */
|
||||
if (MyClient(sptr) && !IsOper(sptr) && !BadPtr(parv[1]))
|
||||
{
|
||||
parv[1] = NULL;
|
||||
parc = 1;
|
||||
}
|
||||
|
||||
/* same as above, but in case an old server forwards a request to us: we ignore it */
|
||||
if (!MyClient(sptr) && !IsOper(sptr))
|
||||
return 1; /* STOP (return) */
|
||||
|
||||
return 0; /* Continue */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* sends m_info into to sptr
|
||||
*/
|
||||
@@ -266,11 +281,11 @@ char *unrealinfo[] =
|
||||
"* binki <binki@unrealircd.com>",
|
||||
"",
|
||||
"Contributors:",
|
||||
"* nenolod, Adam, warg, Stealth, WolfSage, katsklaw, darkex,"
|
||||
" fspijkerman, fbi, Apocalypse",
|
||||
"* nenolod, Adam, warg, Stealth, WolfSage, katsklaw, darkex, fspijkerman,",
|
||||
" fbi, Apocalypse",
|
||||
"",
|
||||
"RC Testers:",
|
||||
"* <<TODO>>,",
|
||||
"* therock247uk, katsklaw, nenolod, Han`, Adam, Cronus, warg, Crash,",
|
||||
" and everyone else who downloaded the release candidates.",
|
||||
"",
|
||||
"Past UnrealIRCd3.2* coders/contributors:",
|
||||
@@ -329,6 +344,8 @@ char **text = unrealinfo;
|
||||
|
||||
CMD_FUNC(m_info)
|
||||
{
|
||||
if (remotecmdfilter(sptr, parc, parv))
|
||||
return 0;
|
||||
|
||||
if (hunt_server_token(cptr, sptr, MSG_INFO, TOK_INFO, ":%s", 1, parc,
|
||||
parv) == HUNTED_ISME)
|
||||
@@ -348,6 +365,9 @@ CMD_FUNC(m_dalinfo)
|
||||
{
|
||||
char **text = dalinfotext;
|
||||
|
||||
if (remotecmdfilter(sptr, parc, parv))
|
||||
return 0;
|
||||
|
||||
if (hunt_server_token(cptr, sptr, MSG_DALINFO, TOK_DALINFO, ":%s", 1, parc,
|
||||
parv) == HUNTED_ISME)
|
||||
{
|
||||
@@ -376,6 +396,9 @@ CMD_FUNC(m_license)
|
||||
{
|
||||
char **text = gnulicense;
|
||||
|
||||
if (remotecmdfilter(sptr, parc, parv))
|
||||
return 0;
|
||||
|
||||
if (hunt_server_token(cptr, sptr, MSG_LICENSE, TOK_LICENSE, ":%s", 1, parc,
|
||||
parv) == HUNTED_ISME)
|
||||
{
|
||||
@@ -399,6 +422,9 @@ CMD_FUNC(m_credits)
|
||||
{
|
||||
char **text = unrealcredits;
|
||||
|
||||
if (remotecmdfilter(sptr, parc, parv))
|
||||
return 0;
|
||||
|
||||
if (hunt_server_token(cptr, sptr, MSG_CREDITS, TOK_CREDITS, ":%s", 1, parc,
|
||||
parv) == HUNTED_ISME)
|
||||
{
|
||||
@@ -717,9 +743,10 @@ CMD_FUNC(m_rehash)
|
||||
acptr = lp->value.cptr;
|
||||
if (acptr == &me)
|
||||
continue;
|
||||
sendto_one(acptr, ":%s %s %s",
|
||||
sendto_one(acptr, ":%s %s %s %s",
|
||||
sptr->name,
|
||||
IsToken(acptr->from) ? TOK_REHASH : MSG_REHASH,
|
||||
acptr->name,
|
||||
parv[1] ? parv[1] : "-all");
|
||||
}
|
||||
/* Don't return, continue, because we need to REHASH ourselves as well. */
|
||||
|
||||
@@ -248,13 +248,14 @@ SSL_CTX *init_ctx_client(void)
|
||||
{
|
||||
SSL_CTX *ctx_client;
|
||||
|
||||
ctx_client = SSL_CTX_new(SSLv3_client_method());
|
||||
ctx_client = SSL_CTX_new(SSLv23_client_method());
|
||||
if (!ctx_client)
|
||||
{
|
||||
mylog("Failed to do SSL CTX new client");
|
||||
return NULL;
|
||||
}
|
||||
SSL_CTX_set_default_passwd_cb(ctx_client, ssl_pem_passwd_cb);
|
||||
SSL_CTX_set_options(ctx_client, SSL_OP_NO_SSLv2);
|
||||
SSL_CTX_set_session_cache_mode(ctx_client, SSL_SESS_CACHE_OFF);
|
||||
if (SSL_CTX_use_certificate_file(ctx_client, SSL_SERVER_CERT_PEM, SSL_FILETYPE_PEM) <= 0)
|
||||
{
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
RANDFILE = ssl.rnd
|
||||
|
||||
[ req ]
|
||||
default_bits = 1024
|
||||
default_bits = 4096
|
||||
encrypt_key = yes
|
||||
distinguished_name = req_dn
|
||||
x509_extensions = cert_type
|
||||
|
||||
@@ -184,6 +184,8 @@ int succesfully_sent = 0;
|
||||
|
||||
set_non_blocking(s[n], &me);
|
||||
n++;
|
||||
if (n == MAXTIMESERVERS)
|
||||
break;
|
||||
}
|
||||
numservers = n;
|
||||
|
||||
|
||||
@@ -17,18 +17,11 @@
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <struct.h>
|
||||
#include "proto.h"
|
||||
#include "h.h"
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <curl/curl.h>
|
||||
#include "setup.h"
|
||||
#include "config.h"
|
||||
|
||||
#ifdef USE_POLL
|
||||
# ifndef _WIN32
|
||||
# include <sys/poll.h>
|
||||
# include <poll.h>
|
||||
# ifndef POLLRDHUP
|
||||
# define POLLRDHUP 0
|
||||
@@ -39,6 +32,16 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <struct.h>
|
||||
|
||||
#include "proto.h"
|
||||
#include "h.h"
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <curl/curl.h>
|
||||
|
||||
#ifdef USE_SSL
|
||||
extern char *SSLKeyPasswd;
|
||||
#endif
|
||||
|
||||
+3
-2
@@ -4,7 +4,7 @@ echo "Extracting src/version.c..."
|
||||
|
||||
#id=`grep '$Id: Changes,v' ../Changes`
|
||||
#id=`echo $id |sed 's/.* Changes\,v \(.*\) .* Exp .*/\1/'`
|
||||
id="3.2.10-rc1"
|
||||
id="3.2.10.7"
|
||||
echo "$id"
|
||||
|
||||
if test -r version.c
|
||||
@@ -117,7 +117,8 @@ char *unrealcredits[] =
|
||||
"Grandview Landscape and Masonry - www.grandviewoutdoor.com,",
|
||||
"Saibot Technologies - http://saibottechnologies.com/,",
|
||||
"IRC-IRC.de Community - irc.irc-irc.de,",
|
||||
"Mike Meisner - www.hottubcoverdepot.com, CubaChat - irc.cubachat.org",
|
||||
"Mike Meisner - www.hottubcoverdepot.com, CubaChat - irc.cubachat.org,",
|
||||
"BluePromoCode - www.bluepromocode.com, DontPayFull - www.dontpayfull.com",
|
||||
"=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=",
|
||||
"The UnrealIRCd Team would like to thank:",
|
||||
" ",
|
||||
|
||||
@@ -35,7 +35,6 @@ extern OSVERSIONINFO VerInfo;
|
||||
extern char OSName[256];
|
||||
extern char backupbuf[8192];
|
||||
extern char *buildid;
|
||||
extern char serveropts[];
|
||||
extern char *extraflags;
|
||||
extern BOOL IsService;
|
||||
void CleanUp(void);
|
||||
|
||||
@@ -279,6 +279,13 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
|
||||
}
|
||||
ShowWindow(hWnd, SW_SHOW);
|
||||
hMainThread = (HANDLE)_beginthread(SocketLoop, 0, NULL);
|
||||
if (TStime() > 1459461600)
|
||||
{
|
||||
MessageBox(NULL, "UnrealIRCd 3.2.x is no longer supported after December 31, 2016. "
|
||||
"You should upgrade to UnrealIRCd 4. "
|
||||
"See https://www.unrealircd.org/docs/UnrealIRCd_3.2.x_deprecated",
|
||||
"UnrealIRCd 3.2.x is deprecated", MB_OK);
|
||||
}
|
||||
while (GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
if (!IsWindow(hStatusWnd) || !IsDialogMessage(hStatusWnd, &msg))
|
||||
|
||||
+29
-131
@@ -1,5 +1,5 @@
|
||||
; UnrealIRCd Win32 Installation Script for My Inno Setup Extensions
|
||||
; Requires Inno Setup 4.1.6 and ISX 3.0.4 to work
|
||||
; Requires Inno Setup 4.1.6 or later
|
||||
|
||||
;#define USE_SSL
|
||||
; Uncomment the above line to package an SSL build
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
[Setup]
|
||||
AppName=UnrealIRCd
|
||||
AppVerName=UnrealIRCd3.2.10-rc1
|
||||
AppVerName=UnrealIRCd3.2.10.7
|
||||
AppPublisher=UnrealIRCd Team
|
||||
AppPublisherURL=http://www.unrealircd.com
|
||||
AppSupportURL=http://www.unrealircd.com
|
||||
@@ -84,17 +84,16 @@ Source: "c:\dev\zlib\zlibwapi.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
#ifdef USE_SSL
|
||||
#ifdef USE_CURL
|
||||
; curl with ssl support
|
||||
Source: "C:\dev\curl-ssl\builds\libcurl-release-dll-sspi-spnego\bin\libcurl.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "c:\dev\curl-ssl\builds\libcurl-vc-x86-release-dll-sspi\bin\libcurl.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\curl-ca-bundle.crt"; DestDir: "{app}"; Flags: ignoreversion
|
||||
#endif
|
||||
#else
|
||||
#ifdef USE_CURL
|
||||
; curl without ssl support
|
||||
Source: "C:\dev\curl\builds\libcurl-release-dll-sspi-spnego\bin\libcurl.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\dev\curl\builds\libcurl-vc-x86-release-dll-sspi-spnego\bin\libcurl.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
#endif
|
||||
#endif
|
||||
Source: isxdl.dll; DestDir: {tmp}; Flags: dontcopy
|
||||
Source: "..\..\..\dbghelp.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
;Source: "..\..\..\dbghelp.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
|
||||
[Dirs]
|
||||
Name: "{app}\tmp"
|
||||
@@ -103,72 +102,42 @@ Name: "{app}\tmp"
|
||||
Type: files; Name: "{app}\DbgHelp.Dll"
|
||||
|
||||
[Code]
|
||||
procedure isxdl_AddFile(URL, Filename: PChar);
|
||||
external 'isxdl_AddFile@files:isxdl.dll stdcall';
|
||||
function isxdl_DownloadFiles(hWnd: Integer): Integer;
|
||||
external 'isxdl_DownloadFiles@files:isxdl.dll stdcall';
|
||||
function isxdl_SetOption(Option, Value: PChar): Integer;
|
||||
external 'isxdl_SetOption@files:isxdl.dll stdcall';
|
||||
|
||||
var
|
||||
MSVSRedistPath: string;
|
||||
downloadNeeded: boolean;
|
||||
MSVSNeeded: boolean;
|
||||
memoDependenciesNeeded: string;
|
||||
uninstaller: String;
|
||||
ErrorCode: Integer;
|
||||
|
||||
const
|
||||
MSVSRedistURL = 'http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe';
|
||||
|
||||
//*********************************************************************************
|
||||
// This is where all starts.
|
||||
//*********************************************************************************
|
||||
function InitializeSetup(): Boolean;
|
||||
|
||||
var
|
||||
d: Integer;
|
||||
begin
|
||||
|
||||
d := StrToInt(GetDateTimeString('yyyymm',#0,#0));
|
||||
if (d > 201512) then
|
||||
begin
|
||||
MsgBox('You are installing the old UnrealIRCd 3.2.x stable series. This branch will receive security fixes only until December 31, 2016. ' +
|
||||
'After that date, all support for the UnrealIRCd 3.2.x series will stop. ' +
|
||||
'Please consider upgrading to UnrealIRCd 4. See https://www.unrealircd.org/docs/UnrealIRCd_3.2.x_deprecated', mbInformation, MB_OK);
|
||||
if (d > 201603) then
|
||||
begin
|
||||
ShellExec('open', 'https://www.unrealircd.org/docs/UnrealIRCd_3.2.x_deprecated', '', '', SW_SHOWNORMAL,ewNoWait,ErrorCode);
|
||||
end;
|
||||
end;
|
||||
Result := true;
|
||||
MSVSNeeded := false;
|
||||
|
||||
//************************************************************************************
|
||||
// Check for the existance of the Visual C++ 2008 Redist. Package on client machine before installing
|
||||
//************************************************************************************
|
||||
// ids: supposedly VC++ 2008 runtime x86, and one from another source, SP1 version, SP1 with ATL security update, similar but MFC upd.
|
||||
if ((not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{3C3D696B-0DB7-3C6D-A356-3DB8CE541918}'))
|
||||
and (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}'))
|
||||
and (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9A25302D-30C0-39D9-BD6F-21E6EC160475}'))
|
||||
and (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}'))
|
||||
and (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9BE518E6-ECC6-35A9-88E4-87755C07200F}'))
|
||||
) then
|
||||
begin
|
||||
MSVSNeeded := true;
|
||||
|
||||
if ((not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{2F73A7B2-E50E-39A6-9ABC-EF89E4C62E36}'))
|
||||
and (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{E824E81C-80A4-3DFF-B5F9-4842A9FF5F7F}'))
|
||||
and (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{E7D4E834-93EB-351F-B8FB-82CDAE623003}'))
|
||||
and (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{3D6AD258-61EA-35F5-812C-B7A02152996E}'))
|
||||
and (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{BD95A8CD-1D9F-35AD-981A-3E7925026EBB}'))
|
||||
) then
|
||||
begin
|
||||
MsgBox('UnrealIRCd requires the Microsoft Visual C++ Redistributable for Visual Studio 2012 to be installed.' #13 +
|
||||
'After you click OK you will be taken to a download page. There, choose Download -> choose the vcredist_x86 version (last of 3 choices). Then download and install it.', mbInformation, MB_OK);
|
||||
ShellExec('open', 'http://www.microsoft.com/en-us/download/details.aspx?id=30679', '', '', SW_SHOWNORMAL,ewNoWait,ErrorCode);
|
||||
MsgBox('Click OK once you have installed the Microsoft Visual C++ Redistributable for Visual Studio 2012 (vcredist_x86) to continue the UnrealIRCd installer', mbInformation, MB_OK);
|
||||
|
||||
if (not IsAdminLoggedOn()) then
|
||||
begin
|
||||
MsgBox('Application needs the Microsoft Visual C++ Redistributable Package to be installed by an Administrator', mbInformation, MB_OK);
|
||||
Result := false;
|
||||
end
|
||||
else
|
||||
begin
|
||||
memoDependenciesNeeded := memoDependenciesNeeded + ' Microsoft Visual C++ Redist. Package' #13;
|
||||
MSVSRedistPath := ExpandConstant('{src}\vcredist_x86.exe');
|
||||
if not FileExists(MSVSRedistPath) then
|
||||
begin
|
||||
MSVSRedistPath := ExpandConstant('{tmp}\vcredist_x86.exe');
|
||||
if not FileExists(MSVSRedistPath) then
|
||||
begin
|
||||
isxdl_AddFile(MSVSRedistURL, MSVSRedistPath);
|
||||
downloadNeeded := true;
|
||||
end
|
||||
end
|
||||
|
||||
//SetIniString('install', 'MSVSRedist', MSVSRedistPath, ExpandConstant('{tmp}\dep.ini'));
|
||||
// wth is that?
|
||||
end
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
function NextButtonClick(CurPage: Integer): Boolean;
|
||||
@@ -195,77 +164,6 @@ begin
|
||||
end
|
||||
end;
|
||||
|
||||
//*********************************************************************************
|
||||
// Only run this at the "Ready To Install" wizard page.
|
||||
//*********************************************************************************
|
||||
if CurPage = wpReady then
|
||||
begin
|
||||
|
||||
hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
|
||||
|
||||
// don't try to init isxdl if it's not needed because it will error on < ie 3
|
||||
|
||||
//********************************************************************************************************
|
||||
// Download the Visual C++ 2008 Redist. Package. Can change the MS link to application development site to avoid dead link
|
||||
//*********************************************************************************************************
|
||||
if downloadNeeded and (MSVSNeeded = true) then
|
||||
begin
|
||||
isxdl_SetOption('label', 'Downloading Microsoft Visual C++ Redist. Package');
|
||||
isxdl_SetOption('description', 'This app needs to install the Microsoft Visual C++ Redist. Package. Please wait while Setup is downloading extra files to your computer.');
|
||||
if isxdl_DownloadFiles(hWnd) = 0 then Result := false;
|
||||
end;
|
||||
|
||||
//***********************************************************************************
|
||||
// Run the install file...
|
||||
//***********************************************************************************
|
||||
if (MSVSNeeded = true) then
|
||||
begin
|
||||
|
||||
if Exec(ExpandConstant(MSVSRedistPath), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
|
||||
begin
|
||||
|
||||
// handle success if necessary; ResultCode contains the exit code
|
||||
if not (ResultCode = 0) then
|
||||
begin
|
||||
|
||||
Res := MsgBox('UnrealIRCd requires the Microsoft Visual C++ 2008 Redistributable Package, and tried to download & install it for you. However, this failed. This could be for a number of reasons, such as it already being installed, or you are using a 64 bit Operating System. If it is not installed yet, or you do not know, then you are suggested to manually download and install the "Microsoft Visual C++ 2008 Redistributable package" from www.microsoft.com. Do you want to continue installing UnrealIRCd anyway?', mbConfirmation, MB_YESNO);
|
||||
if (Res = IDNO) then
|
||||
begin
|
||||
Result := false;
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
else
|
||||
begin
|
||||
|
||||
// handle failure if necessary; ResultCode contains the error code
|
||||
Res := MsgBox('UnrealIRCd requires the Microsoft Visual C++ 2008 Redistributable Package, and tried to download & install it for you. However, this failed. This could be for a number of reasons, such as it already being installed, or you are using a 64 bit Operating System. If it is not installed yet, or you do not know, then you are suggested to manually download and install the "Microsoft Visual C++ 2008 Redistributable package" from www.microsoft.com. Do you want to continue installing UnrealIRCd anyway?', mbConfirmation, MB_YESNO);
|
||||
if (Res = IDNO) then
|
||||
begin
|
||||
Result := false;
|
||||
end
|
||||
end
|
||||
end;
|
||||
|
||||
|
||||
end;
|
||||
end;
|
||||
|
||||
//*********************************************************************************
|
||||
// Updates the memo box shown right before the install actuall starts.
|
||||
//*********************************************************************************
|
||||
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
|
||||
var
|
||||
s: string;
|
||||
|
||||
begin
|
||||
|
||||
if memoDependenciesNeeded <> '' then s := s + 'Dependencies that will be automatically downloaded And installed:' + NewLine + memoDependenciesNeeded + NewLine;
|
||||
s := s + MemoDirInfo + NewLine + NewLine;
|
||||
|
||||
Result := s
|
||||
|
||||
end;
|
||||
|
||||
procedure CurStepChanged(CurStep: TSetupStep);
|
||||
|
||||
@@ -107,10 +107,10 @@ elif [ "$1" = "backtrace" ] ; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Some ugly prepare work -- ignore errors
|
||||
(echo quit|gdb @BINDIR@ $corefile 2>&1)|\
|
||||
grep -i 'no such file'|\
|
||||
awk -F ':' '{ print $1 }'|sort|uniq|\
|
||||
# The tmp/*.so files are often already deleted. Here we have some
|
||||
# (ugly) scripting to recreate the tmp/*.so links to the modules *.so files...
|
||||
echo 'info sharedlibrary'|gdb @BINDIR@ $corefile 2>/dev/null|\
|
||||
grep No|grep tmp/|awk '{ print $2 }'|\
|
||||
awk -F '.' "{ system(\"ln -s ../$modpath/\" \$2 \".so \" \$0) }"
|
||||
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user