mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-12 19:14:46 +02:00
3.2.6
This commit is contained in:
+1
-1
@@ -7,7 +7,7 @@
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Configuration Program
|
||||
for Unreal3.2.5
|
||||
for Unreal3.2.6
|
||||
|
||||
This program will help you to compile your IRC server, and ask you
|
||||
questions regarding the compile-time settings of it during the process.
|
||||
|
||||
+70
-69
@@ -1,12 +1,6 @@
|
||||
Unreal3.2.5 Release Notes
|
||||
Unreal3.2.6 Release Notes
|
||||
==========================
|
||||
|
||||
If you are upgrading, please take a minute to read these release notes.
|
||||
*NIX Users: PREFIX_AQ is now enabled by default. See under 'CHANGED' below.
|
||||
|
||||
If you are a coder and want to help out with Unreal3.3* development, then check out
|
||||
http://dev.unrealircd.com/ and http://dev.unrealircd.com/wiki/Coders_Contest
|
||||
|
||||
==[ GENERAL INFORMATION ]==
|
||||
- If you are upgrading on *NIX, make sure you run 'make clean' and './Config'
|
||||
first before doing 'make'
|
||||
@@ -16,88 +10,95 @@ http://dev.unrealircd.com/ and http://dev.unrealircd.com/wiki/Coders_Contest
|
||||
Read them before asking for help.
|
||||
- Report bugs at http://bugs.unrealircd.org/
|
||||
- When upgrading a network, we assume you are upgrading from the previous
|
||||
version (3.2.4). Upgrading from 3.2.3 is ok as well.
|
||||
version (3.2.5). Upgrading from 3.2.3 or 3.2.4 should be ok as well.
|
||||
However, if you have a network running with servers that are several versions behind
|
||||
(eg: 3.2.1) then you might experience small (desynch) problems.
|
||||
Please also minimize the time you have multiple versions running, a few days or
|
||||
one week is generally not a problem, but having mixed versions on a network for several
|
||||
weeks or months is not recommended.
|
||||
- The purpose of the sections below (NEW, CHANGED, MINOR, etc) is to be a SUMMARY of
|
||||
the changes in this release. There have been 80+ changes, and trying to mention them
|
||||
all would be useless, see the Changelog for the full list of changes.
|
||||
|
||||
==[ NEW ]==
|
||||
- CGI:IRC Host spoofing support. This means you can mark certain CGI:IRC gateways
|
||||
as trusted, and then the IRCd will show the real IP/host everywhere for those
|
||||
users, instead of the IP/host of the CGI:IRC gateway. See docs section 4.36.
|
||||
- Time synchronization support. This is enabled by default and will synch the IRCd
|
||||
clock when Unreal is started. This should get rid of most time differences, though
|
||||
the clock can still be off 1-3 seconds. If for some reason no reply from the time
|
||||
servers is received within 3 seconds, then the IRCd will continue to boot as usual.
|
||||
Several set::timesynch::* settings have been added, including set::timesynch::enabled
|
||||
which you can set to 'no' to disable time synching (eg: because you already run ntpd).
|
||||
- NAMESX support. This (mostly) fixes a long-standing IRC protocol bug. If, for
|
||||
example, a user was +vo and then deops (-o), other clients could not always
|
||||
know the user was then still +v, now they can. Supported by XChat and newest mIRC.
|
||||
- Chained SSL certificates support
|
||||
- Russian doc/example.ru.conf and Turkish doc/unreal32docs.tk.html
|
||||
- None. Except some behavior changes, see next.
|
||||
|
||||
==[ CHANGED ]==
|
||||
- PREFIX_AQ (the ~ and & symbols for +q and +a) are now ENABLED BY DEFAULT on *NIX.
|
||||
They have always been enabled on Windows, so it made sense to do the same for *NIX.
|
||||
Pretty much all major clients support it now (mIRC, xchat, irssi, epic, PJIRC,
|
||||
CGI:IRC, etc).
|
||||
- If DNS info (*NIX: /etc/resolv.conf, Win: registry) is updated, a '/REHASH -dns'
|
||||
now rereads this info, no restart needed anymore.
|
||||
- me::numeric can now be changed without a restart, if no servers are linked.
|
||||
- Improved windows crash info: we now create minidumps, this should aid debugging.
|
||||
- '/quote dns i' (as an oper) now shows nameserver info again
|
||||
- Local oper may now use /TRACE
|
||||
- If channel is +m but -t, you now need at least voice (+v) to change the topic.
|
||||
- When checking if someone is banned, we now always verify bans against the cloaked host,
|
||||
even if the user has a vhost and the cloaked host is not visible / unused.
|
||||
- Extra binary compatibility checks: (gcc) compiler version
|
||||
- Allow /*LINE'ing of literalident@* (eg: gline clones@*). Things like *clones@* are
|
||||
still denied though, and this will not be changed. Use services AKILL instead.
|
||||
- Command aliases: made empty parameters work if the alias allows it (eg, the alias
|
||||
uses .* as a regex and not .+)
|
||||
- Moved another 2K lines from core to modules, this means 31K lines are now in modules
|
||||
and can be upgraded on the fly.
|
||||
- Real Command Aliases: This makes it possible to, for example, alias '/GLINEBOT' to
|
||||
'GLINE <param> 2d Bots are not permitted on this network, etcetc'. For more information,
|
||||
see the docs on the alias block and/or search for "glinebot" in doc/example.conf.
|
||||
- /etc/hosts is no longer checked (it never did before 3.2.3 either)
|
||||
- SSL: The server certificate and keys can now be reloaded via '/REHASH -ssl', no
|
||||
restart needed anymore.
|
||||
- IRCOps can now view the bans of a channel ("MODE #channel b") from the outside
|
||||
- Moved failed /OPER attempt notices to snomask +o and made them sent to all servers.
|
||||
This means all failed oper attempts can now be seen globally. Plus, the UID is now
|
||||
always shown (like for incorrect host and maxlogin), unless trying an unknown oper acc.
|
||||
- The annoying "please type /quote pong" message is now no longer shown on connect, unless
|
||||
explicitly enabled by setting set::pingpong-warning to 'yes'. (mainly Windows)
|
||||
- /INVITE's from people on the silence list are now silently ignored
|
||||
- SAPART now works for multiple channels (again)
|
||||
- Non-SSL users are now kicked when netsynching and channel is +z (SSL only)
|
||||
- No longer showing server numerics in /MAP to non-opers (too confusing anyway)
|
||||
- Updated ukrainian-w1251, belarussian-w1251 and catalan character sets
|
||||
- Spamfilter + IPv6: for target 'u' (nick!user@host:realname bans), the 'host' part
|
||||
is now in brackets if it's an IPv6 address (eg: blah!blah@[1:2:3:4:5:6:7:8]:hello)
|
||||
- loadmodule errors are improved
|
||||
- Snomask 'N' will no longer show nick changes of U-lined servers
|
||||
- The set::dns block is now no longer mandatory, because it is actually not used
|
||||
(except for set::dns::bind-ip) and fetched from /etc/resolv.conf (*NIX) or the
|
||||
registry (Windows) instead. This has always been the case, but has never been documented.
|
||||
- Various doc updates ('/HELPOP ?EXTBANS', and some unreal32docs improvements)
|
||||
|
||||
==[ MAJOR BUGS FIXED ]==
|
||||
- Spamfilter was not always working properly
|
||||
- MS Visual studio 2005 (8.x) was unable to compile Unreal and/or caused crashes
|
||||
- Certain IPv6 listen blocks could crash the ircd on-boot/on-rehash
|
||||
- Crash if link::options::quarantine was used
|
||||
- Another crash which could happen in some rare cases
|
||||
- Throttling was not always being applied correctly
|
||||
- Windows 2003: Fixed crash on-boot if no nameserver was set
|
||||
- Windows: Fixed /RESTART not always working properly (leaving the ircd dead)
|
||||
|
||||
==[ MINOR BUGS FIXED ]==
|
||||
- "Looking up your hostname" message was missing if set::options::show-connect-notice
|
||||
was enabled (other messages, like "looking up ident" were shown, however)
|
||||
- It was sometimes impossible to update a link { } block: all old settings would still
|
||||
be used, this happened if connfreq was low. This might also have caused crashes.
|
||||
- Netsynch problem, which could cause the wrong modes to be applied to a channel in
|
||||
some rare cases.
|
||||
- Setting set::maxdccallow to 0 (or lower) still allowed one entry to be added
|
||||
- Spamfilter oversized-checking is no longer done when removing a spamfilter
|
||||
- Operator count bug (there might still be others...)
|
||||
- Some chinese-* charsets could not be selected individually
|
||||
- No longer requiring a C++ compiler (was caused by resolver in 3.2.4)
|
||||
- Added workaround for "make: Permission denied" bug in some FreeBSD's
|
||||
|
||||
==[ REMOVED ]==
|
||||
- MS Visual Studio 6 support, but this did not work anymore anyway...
|
||||
- Remote includes: should now work with latest curl again, due to c-ares upgrade
|
||||
- a bunch of OperOverride bugs.. messages being sent when they shouldn't, some things
|
||||
not being logged or broadcasted, and more.
|
||||
- Sometimes no message was shown when a link to an SSL server failed
|
||||
- Desynch problem caused by +Q
|
||||
- SAJOIN now properly deals with +z channels
|
||||
- "MODE #channel" showing extended channel mode parameters if not in channel
|
||||
- Channel Mode 'f' did not properly eat a parameter on unset (even though it would
|
||||
show like it did), this could have caused desynchs in some cases.
|
||||
- Fixed handling of CNAME's once again (now showing original name instead of fwded name)
|
||||
- The "looking up your hostname" message was always sent, regardless of show-connect-info
|
||||
- deny link { } blocks were being ignored by autoconnect
|
||||
- Windows: SSL private key prompt caused a crash
|
||||
- Windows: Unable to write to service.log caused a crash
|
||||
- set::allowed-nickchars could cause a segfault for some unknown languages
|
||||
- If class::connfreq was omitted and used for a server link, this would cause a huge
|
||||
connection flood when autoconnect was used.
|
||||
- set::dns::bind-ip was seen as a duplicate when it actually wasn't
|
||||
- And more... see Changelog
|
||||
|
||||
==[ KNOWN ISSUES ]==
|
||||
- Windows 2003: Crashes directly on-boot have been reported, while other W2003 servers
|
||||
work perfectly fine (including the one we used for testing). No pattern in this has
|
||||
been found yet, but the bug is somewhere in the resolver (c-ares).
|
||||
- Regexes: Be careful with backreferences (\1, etc), certain regexes can slow the IRCd
|
||||
down considerably and even bring it to a near-halt. In the spamfilter user target it's
|
||||
usually safe though.
|
||||
- Regexes: Possessive quantifiers such as, for example, "++" (not to be confused with "+")
|
||||
are not safe to use, they can easily freeze the IRCd.
|
||||
- Windows: The /RESTART command will work, but the second time you do a /RESTART the
|
||||
IRCd will "crash" with a dialogbox.
|
||||
|
||||
==[ SERVICES / CODERS ]==
|
||||
- Note: this is a new section, it describes changes specifically for services coders
|
||||
and unreal module coders. Note that other changes (such as new modes, etc) mentioned
|
||||
elsewhere in this document might affect you as well. For more info about a particular
|
||||
change mentioned below (such as a new hooktype), see the Changelog.
|
||||
- New hooktype: HOOKTYPE_SILENCED (called when a message is not delivered due to silence)
|
||||
- New hooktype: HOOKTYPE_POST_SERVER_CONNECT (called after users synched to remote server)
|
||||
- Fixed CALLBACKTYPE_CLOAK_EX, wasn't working properly at all
|
||||
- Fixed SVSNICK: cAsE cHaNgE no longer causes a collision, fixed QUIT not being sent
|
||||
- SVSMODE/SVS2MODE: when doing -x on a user, the virthost is removed from memory.
|
||||
This means services can now properly "unvhost" a user and give them back their cloaked
|
||||
host by doing "SVSMODE User -x+x".
|
||||
- Services timestamps for users are now properly treated as unsigned long, previously
|
||||
some trouble could arise when netsynching for values larger than 2147483647.
|
||||
- 'SVSMOTD !' now removes the svsmotd from memory as well.
|
||||
- Fixed SVSMODE -b User not always removing all bans for that user (specifically, bans on
|
||||
the cloaked host, when the user has a vhost).
|
||||
- Fixed SVSO - not removing coadmin (+C)
|
||||
|
||||
==[ ADDITIONAL INFO ]==
|
||||
* See Changelog for more details
|
||||
|
||||
@@ -1257,3 +1257,175 @@
|
||||
- Updated doc/technical/005.txt
|
||||
- Mass version change (no code changes)
|
||||
** 3.2.5 release **
|
||||
- c-ares resolver: upgrade from 1.3.0 to 1.3.1. This mainly fixes compile problems,
|
||||
including one reported by frigola on an old Sun Cobalt RAQ3.
|
||||
It will probably also fix an issue with the just released curl 7.15.4, if compiling
|
||||
with remote includes.
|
||||
TODO: Update win32 (not urgent)
|
||||
- Added HOOKTYPE_SILENCED: this is called whenever a message did not get delivered to a user
|
||||
because the user was on the silence list.
|
||||
- Added OpenBSD 3.9 to the supported OS list.
|
||||
- Made it so undefining SHOW_SECRET (not the default) properly hides +s channels from ircops
|
||||
(except netadmins), as it should. Reported and patch supplied by Jason (#0002965).
|
||||
- Fixed tld::options:: not working properly, reported by DelGurth (#0003003).
|
||||
- Fixed problem with oper as chanadmin kicking himself causing an operoverride notice,
|
||||
reported by Bock (as part of #2889).
|
||||
- Fixed desynch problem with +Q, reported by tabrisnet (#0002992).
|
||||
- Updated doc/coding-guidelines
|
||||
- Added bugs.* url to /info, was still showing some email address.
|
||||
- Fixed forgotten operoverride logmessage (kick if chan +Q), reported in #2889.
|
||||
- Fixed operoverride message if oper is +h and -h's himself, reported by Bock (#2889).
|
||||
- Fixed SVSMODE -b [user] not always removing all bans (specificly, bans on the cloaked
|
||||
host when you have a vhost), a code cleanup was also done. Based on patch from tabrisnet.
|
||||
Reported by Rob (#0002981).
|
||||
- MARK: 3.3* was forked off from here
|
||||
- Removed server numeric output from /MAP for normal users (still visible to ircops).
|
||||
- Renamed unreal32docs.tk.html to unreal32docs.tr.html
|
||||
- Module coders: Added HOOKTYPE_POST_SERVER_CONNECT (1 param: cptr) which is called when
|
||||
a server connects, just like HOOTYPE_SERVER_CONNECT but this is actually called *after*
|
||||
all clients and channels are synched. Obviously needed for some modules which must synch
|
||||
data that refers to clients/channels that would otherwise not exist yet on the other side.
|
||||
- The server SSL certificate and private key can now be reloaded without requiring a server
|
||||
restart, simply use: /REHASH -ssl
|
||||
- Small compile fix for above
|
||||
- Fixed /SAJOIN able to join insecure users to +z channels, reported by phedny (#0002601).
|
||||
- Fixed SSL crash problem due to previous SSL change.
|
||||
- Fixed some bugs in webtv code that could have caused trouble in the future (off by one),
|
||||
reported by Ilja van Sprundel.
|
||||
- Module coders: Fixed CALLBACKTYPE_CLOAK_EX, it was not working properly at all.
|
||||
- Fixed bug in MODE #channel showing extended channel mode parameters when not in #channel.
|
||||
- Made 'MODE #channel b' and friends show bans to ircops even when not in channel.
|
||||
- Fix for channel mode +f: It incorrectly didn't eat a paramter on unset (ouch!), even
|
||||
though it always acted like it did in the MODE line sent to the channel. This bug caused
|
||||
desynchs in some cases. Bug reported by Korfio (#0003048).
|
||||
- Fixes to SVSNICK: case-change no longer causes a collision, don't return the value from
|
||||
exit_client (which would be FLUSH_BUFFER), fix QUIT not being sent back on collision.
|
||||
- Fix for above so it doesn't -r the client.
|
||||
- Fixed small memory leak in resolver (~40 bytes when connecting to a server)
|
||||
- Made Unreal use the original name in case of a CNAME, instead of the forwarded name,
|
||||
reported by jerrcsnet (#0003054).
|
||||
- The "looking up your hostname" message was always sent, regardless of show-connect-info.
|
||||
- Kick non-SSL users when the channel turns out to be +z during netmerge, reported by
|
||||
Ron2K (#0002942).
|
||||
- Windows 2003: Fixed UnrealIRCd unable to boot if no DNS server is configured, we now
|
||||
fallback to set::dns::nameserver in such a case. Thanks to Romeo (reporter, #0002802)
|
||||
and Bock for tracing this down.
|
||||
- Fixed cloak cutoff problem with long hosts.
|
||||
- Added doc/help.tr.conf (Turkish), translated by Diablo.
|
||||
- Added doc/example.tr.conf (Turkish), translated by ironic.
|
||||
- Fixed zlib version check: 1.x is compatible with all 1.*, etc. (#0002966).
|
||||
- Fixed a couple of add_Command/del_Command lines in m_chgname and m_helpop trying to
|
||||
add the same token twice. Didn't cause any trouble, normally, though...
|
||||
- Updated ukrainian-w1251 and belarussian-w1251 charsets: some characters were previously
|
||||
included that shouldn't. Reported by avb (#0003102), patch supplied by Bock.
|
||||
- Made it so that when 'java' is enabled for a listen block, then the 2nd parameter to
|
||||
NICK is not seen as a password on this port. Patch from afolentes (#0003097).
|
||||
- Fixed some unitialized pointer things for win32 w/ssl on keyprompt, no idea if it
|
||||
helps, though. Would appreciate it if another code looks into this. -- Syzop
|
||||
- Fixed SVSO - not removing coadmin (+C). Reported by Muisje (#0003077).
|
||||
- Fixed deny link {} blocks being ignored by autoconnect. Reported by a couple people,
|
||||
also see #0003084.
|
||||
- Fixed m_names.so not being build (a problem for people not using commands.so),
|
||||
reported by aegis (#0003085).
|
||||
- Using SVSMODE (or SVS2MODE) to set -x will now actually remove the vhost from memory,
|
||||
instead of letting it magically reappear whenever +x is set. This means services can
|
||||
now properly "unvhost" a user by sending a "SVSMODE User -x+x" (then any existing vhost
|
||||
will be removed and user will have a cloaked host). Reported by avenger and others
|
||||
(#0002933).
|
||||
- [internal] Made a spamfilter_build_user_string function that will build the spamfilter
|
||||
user target string (nick!user@host:info), insteaf of doing it at like 5 places.
|
||||
- Spamfilter target 'u' (user): the host field (nick!user@HOST:realname) is now escaped
|
||||
with brackets if it's an IPv6 address, eg: blah!blah@[1:2:3:4:5:6:7:8]:hello, reported
|
||||
by aquanight and others (#0003010).
|
||||
- Win32: SSL private key prompt should now no longer crash. Patch provided by Alexey
|
||||
Markevich (#0002866).
|
||||
- Win32: we now no longer crash if no access to write to service.log, suggested and
|
||||
patch by Xuefer (#0002886).
|
||||
- Services timestamps are now always treated as an unsigned long (0..2^32-1), instead
|
||||
of accidently as signed long during netsynchs. This bug caused issues with values
|
||||
larger than 2147483647. Reported by avenger (#0002980).
|
||||
- If the 'crypt' algorithm is used, then passwords were/are truncated to 8 characters.
|
||||
We now print a warning when this happens (both on the IRC command and command-line).
|
||||
Suggested by JasonTik (#0002953).
|
||||
- Win32: Fixed a few compiler warnings, suggested by Zell (#0002890).
|
||||
- Moved a couple isatty() calls to DEBUGMODE (#0002945).
|
||||
- Made win32 compile again, reported by Bock (#0003106).
|
||||
- Moved failed oper snotices to snomask +o, and are sent out to all servers. Also now
|
||||
shows the uid attempted (like [FAILEDAUTH] does) for incorrect host or maxlogin.
|
||||
- Fixed set::allowed-nickchars causing a segfault for some unknown charsets, reported
|
||||
by avb (#0003069).
|
||||
- Cutoff webtv whois at MAXTARGETS (#0003004).
|
||||
- loadmodule now reports proper errors when the actual file can't be found, instead of
|
||||
blaming it on the temp file, reported in #3015.
|
||||
- Fixed 'SVSMOTD !' not deleting the services motd in memory, reported by avb (#0003110).
|
||||
- Snomask N: Don't show nickchanges for U-lines, reported by seneces (#0002636).
|
||||
- Fixed set::dns::bind-ip directive seen as duplicate, reported by aegis (#0003074).
|
||||
- set::dns::* block is now no longer mandatory. All info has always been read from
|
||||
/etc/resolv.conf (*NIX) or the registry (Win32), and the set::dns block is ignored
|
||||
(except for set::dns::bind-ip, but that's a special case). Suggested by many including
|
||||
djGrrr to make things slightly more logical (#0003019).
|
||||
- As a consequence of the above, set::dns blocks were removed from doc/example*conf.
|
||||
- Added two more characters to Catalan charset, reported by rmh (#0002995).
|
||||
- Added set::pingpong-warning [yes|no] which decides whether to send the "** If you are
|
||||
having problems connecting due to ping timeouts, please type /quote pong .." message
|
||||
to each client when NOSPOOF is enabled (usually on Win32). The default is NO.
|
||||
Previously this message was always sent if NOSPOOF was on, which often caused
|
||||
confusion among users. The message was intended for non-confirming clients, but these
|
||||
should be fixed by now, and those that were not fixed (self-made bots/etc) did often
|
||||
not understand the message anyway. Anyway, you can still turn it on ;). (#2680).
|
||||
- /INVITE's from people on the silence list are now (silently) ignored, suggested by
|
||||
White_Magic (#0002478).
|
||||
- Fixed a couple of typos and other one-line-text fixes at various places: reported by
|
||||
aegis (#3081), DanPMK (#2818), tabrisnet (#2974, #2970, #2467), penna (#2721),
|
||||
Brad (#2488), vonitsanet (#2467).
|
||||
- Made OpenSSL version dynamic, reported by buildsmart (#0002975).
|
||||
- Rejecting fake +z modes in conf, reported by rve (#0002532).
|
||||
- Changed some minor Makefile stuff
|
||||
- Fixed belarussian-w1251 charset.. accidently copied a "'" which caused an internal
|
||||
error, reported by Bock (#0003114).
|
||||
- Added information about extbans to help.conf (/HELPOP ?EXTBANS). Patch from Bock
|
||||
(#0003113).
|
||||
- Made SAPART work for mulitple channels, just like SAJOIN. Reported by Snake and
|
||||
SeigHart, patch provided by Bock (#0003064). This also fixes SAPART now being
|
||||
announced to all opers globally, just like SAJOIN.
|
||||
- Finally fixed /RESTART issue on windows for good, should now always restart correctly.
|
||||
Patch provided by BuHHunyx and Bock (#0002734).
|
||||
- Fixed charsys config error message sometimes saying stuff about set::accept-language,
|
||||
which should be set::allowed-nickchars (the former does not exist). Reported and
|
||||
patch provided by avb (#0003122).
|
||||
- Fixed compile bug on Solaris due to missing INADDR_NONE, fix provided by Schak
|
||||
(#0003125).
|
||||
- Fixed bug where omitting class::connfreq would result in a huge connection attempt
|
||||
flood when autoconnect was enabled. We now set class::connfreq to 60 if it's not
|
||||
specified. Reported by Milliways (#0003018).
|
||||
- Improved description of link::hub/leaf/leafdepth in unreal32docs.html reported by Bugz
|
||||
(#2623), also fixed typo (leafdepth, not leaf-depth), reported by monas (#3083).
|
||||
- c-ares resolver: upgrade to 1.3.2.
|
||||
- upgraded windows c-ares (areslib.lib) as well.
|
||||
- fix for above
|
||||
- Added release notes for 3.2.6
|
||||
- Fixed help.conf typo
|
||||
** 3.2.6-rc1 release **
|
||||
- Get rid of some old stuff in release notes
|
||||
- Added donators since 3.2.5
|
||||
- Setting set::pingpong-warning didn't work, reported by vonitsanet, patch supplied by
|
||||
avb (#0003131).
|
||||
- Don't show silence list to others
|
||||
- Improved detection of bad set::modes-on-oper and oper::modes, now rejecting things like
|
||||
'o', 'z', and more.
|
||||
- Fix from above fixes an /OPER announce problem reported by Bock (#0003135).
|
||||
- Fixed SSL bug where an outgoing connect (either autoconnect, or /connect), would not
|
||||
show any error message when it failed. Error information has also been slightly
|
||||
improved. Reported by vonitsanet (#0003138).
|
||||
- Updated SVSNLINE syntax in help.conf (the remove-syntax).
|
||||
- Post-3.2.5 CVS-only bug: Fixed spamfilter on user target not working properly when
|
||||
changing nicks (was still trying to match on the old nick), reported by vonitsanet
|
||||
(#0003143).
|
||||
** 3.2.6-rc2 release **
|
||||
- Fixed possible crash with using quarantine, reported by Sephiroth (#0003151).
|
||||
- Showing even more SSL server errors now, hopefully all of them, also changed the
|
||||
error notice a bit so it's much more like non-SSL server link errors. Reported by
|
||||
vonitsanet (#0003150).
|
||||
** 3.2.6-rc3 release **
|
||||
- Updated release notes, mass-change of version number, no code changes.
|
||||
** 3.2.6 release **
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
===============================================
|
||||
= UnrealIRCd v3.2.5 =
|
||||
= UnrealIRCd v3.2.6 =
|
||||
===============================================
|
||||
Was brought to you by:
|
||||
|
||||
|
||||
@@ -459,7 +459,7 @@ cd $cur_dir
|
||||
|
||||
|
||||
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
|
||||
cares_version="1.3.0"
|
||||
cares_version="1.3.2"
|
||||
AC_MSG_RESULT(extracting c-ares resolver library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
|
||||
@@ -12701,7 +12701,7 @@ fi
|
||||
cd $cur_dir
|
||||
|
||||
|
||||
cares_version="1.3.0"
|
||||
cares_version="1.3.2"
|
||||
echo "$as_me:$LINENO: result: extracting c-ares resolver library" >&5
|
||||
echo "${ECHO_T}extracting c-ares resolver library" >&6
|
||||
cur_dir=`pwd`
|
||||
|
||||
@@ -39,3 +39,48 @@ Some minor rules about patches & modifications to UnrealIRCd
|
||||
8. We do NOT rip people off. If we use other people's code, it MUST be
|
||||
properly credited.
|
||||
|
||||
9. We generally use tabsize 4 and 8. In any case, use tabs and NOT spaces.
|
||||
Some code is old and horrible and has a mix of tabs and spaces used for
|
||||
spacing, that's something we do not want to have ;)
|
||||
|
||||
10. Be careful about overflows. As you know a line from a user can never be longer
|
||||
than 511 (510?) characters, sometimes you can use this knowledge to your
|
||||
advantage. Whenever it's not safe or when you don't know what input size you
|
||||
can expect, use strlcpy instead of strcpy. Do not ever use strncpy, this is
|
||||
older, slower, and does not add proper zero termination.
|
||||
For the same reason, use snprintf if really needed. Note though, that using
|
||||
ircsprintf with a bigger buffer (eg: 1024 bytes) is MUCH faster, so preferably
|
||||
use that instead of snprintf. The same can be true for strcpy vs strlcpy in
|
||||
some circumstances as well.
|
||||
|
||||
11. Speed. When optimizing or writing code, keep in mind that readability and
|
||||
stability comes first, and after that comes speed. So we'd rather prefer some
|
||||
readable code (even if difficult) over some odd highly optimized routine which
|
||||
nobody understands, is difficult to extend, and might have several bugs.
|
||||
As mentioned earlier: use ircsprintf, not sprintf (this is because ircsprintf
|
||||
is optimized for simple strings like the ones we use).
|
||||
Prefer ircsprintf with a bigger buffer over the use of snprintf, since
|
||||
ircsprintf is much faster.
|
||||
|
||||
12. Initialize your structs and use the proper memory calls.
|
||||
In UnrealIRCd we use MyMalloc, MyMallocEx and MyFree (so not malloc/free).
|
||||
MyMalloc usually maps to malloc, and MyMallocEx is a malloc plus filling
|
||||
the memory area (eg: the struct) with zero's (a la calloc).
|
||||
Use of MyMallocEx is suggested. In general you should not be using MyMalloc.
|
||||
"But MyMalloc is faster!" you might say. This is true, but using MyMallocEx
|
||||
has very little speed impact and enourmous benefits: people tend to forget
|
||||
to set certain fields in the struct to NULL, or much more common: when
|
||||
someone later on (eg: 1 year later) adds a field to a struct, there could
|
||||
be several places he/she needs to update to make sure x->something is NULL
|
||||
after allocating a new struct. Bad idea.
|
||||
Little speed impact, huge stability benefits, easy decision ;).
|
||||
|
||||
13. Comment your code! This should speak for itself...
|
||||
Put comments wherever you think they are needed, to aid any further coders
|
||||
with reading your code.. and, in fact, it will aid yourself as well if you
|
||||
would look back at your code 2 years later.
|
||||
If there's some obscure pitfall, do mention it! Don't just "hope" a next
|
||||
author will see it like you did.
|
||||
|
||||
14. Use enums whenever possible, rather than #define constants. Besides making
|
||||
things more clean, it also aids debugging.
|
||||
|
||||
@@ -1,766 +0,0 @@
|
||||
/*
|
||||
* example.conf by Alexander Ganchev AKA Peace (unrealirc@gmail.com).
|
||||
* $Id$
|
||||
*
|
||||
* Prednaznachen e za Unreal3.2 i versii sled nego
|
||||
* Dobre priqteli. Tova e noviqt example.conf.Izglejda kato nqkoi fail C++ (shega).
|
||||
* Kakto i da e..vreme e da go configurirame. Trudnichko e kato za purvi put, no
|
||||
* sus malko praktikuvane i chetene shte mu sviknete.
|
||||
*
|
||||
* Kopiraite tozi fail vuv vashata glavna direktoriq i go prekrustete na 'unrealircd.conf'.
|
||||
* VAJNO: Vsichki linii (tova sa zavurshvashtite na vseki red),
|
||||
* {trqbwa da zavurshvat sus ; a kraq na samata liniqta slagate i } - demek nakraq stava };
|
||||
* MOLQ PROCHETETE doc/unreal32docs.html!Online versiqta shte namerite tuk -
|
||||
* www.vulnscan.org/UnrealIrcd/unreal32docs.html
|
||||
* Sudurja dosta informaciq za config faila: dava vi informaciq za vseki blok,stoinost, i taka natatuka..
|
||||
*/
|
||||
|
||||
/* Tipove Komentari */
|
||||
#Comment type 1 (Shell type)
|
||||
// Comment type 2(C++ style)
|
||||
/* Comment type 3 (C Style) */
|
||||
#tezi linii shte budat ignorirani ot ircd-to.
|
||||
|
||||
/*
|
||||
* UnrealIRCd poddurja modulite,clock.dll & commands.dll
|
||||
* zavisimost ot vashata operacionna sistema izberete za Windows ili za *NIX shte izpolzvate
|
||||
* Nezavisimo ot Operacionnata vi sistema trqbva da mahnete //- predi loadmodule i na 2-ta reda.
|
||||
*/
|
||||
|
||||
/* FOR *NIX, uncomment the following 2lines: */
|
||||
//loadmodule "src/modules/commands.so";
|
||||
//loadmodule "src/modules/cloak.so";
|
||||
|
||||
/* FOR Windows, uncomment the following 2 lines: */
|
||||
//loadmodule "modules/commands.dll";
|
||||
//loadmodule "modules/cloak.dll";
|
||||
|
||||
/*
|
||||
* Sushto taka moje da vkliuchite i drugi configuracionni failove.
|
||||
* help.conf vi se qvqva komadata /helpop text. The badwords.*.conf
|
||||
* falovete sudurjat vsichki "badword kato slojite mod +G v kanal
|
||||
* spamfilter.conf sudurja nqkoi dobri pravila za zabrani za puskane na troianski kone.
|
||||
* Ako iskate mojete da gi vkliuchite tqh :
|
||||
*/
|
||||
include "help.conf";
|
||||
include "badwords.channel.conf";
|
||||
include "badwords.message.conf";
|
||||
include "badwords.quit.conf";
|
||||
include "spamfilter.conf";
|
||||
|
||||
/* NEW: me {}
|
||||
* OLD: M:Line
|
||||
* me {} opredelq imeto,opisanie i cifrata na vashiqt unrealircd server.
|
||||
* Sintaksisut e kakto sledva :
|
||||
* me {
|
||||
* name "server.name";
|
||||
* info "Server Description";
|
||||
* numeric (server numeric*);
|
||||
* };
|
||||
* Ako linkvate Servera si,Cifrata moje bi nqma da bude izpolzvaema ot drugite serveri vuv mrejata
|
||||
* Sreshtu numeric napishete nqkakvo chislo (kolkoto po-malko - tolkova po-dobre)
|
||||
*/
|
||||
me
|
||||
{
|
||||
name "Imeto Na Servera vi";
|
||||
info "Opisanie Na Servera";
|
||||
numeric 0;
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: admin {}
|
||||
* OLD: A:Line
|
||||
* Admin dava informaciq za server admin-a na mrejata.
|
||||
* Mojete da slojite mnogo linii pod grafata 'admin {' ako iskate.
|
||||
* Sintaksisa kakto sledva:
|
||||
* admin {
|
||||
* "Purva liniq";
|
||||
* "Vtora liniq";
|
||||
* [drugi]
|
||||
* };
|
||||
*/
|
||||
admin {
|
||||
"TUk Slojete informaciq za admina";
|
||||
"Tuk mojete da slojite i ime ili email";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: class {}
|
||||
* OLD: Y:line (old was confusing)
|
||||
* Class e grupa nastroiki za vashata vruzka.Primer,Server connect-vane,max clienti i drugi.
|
||||
* delqt se na 2 Class-a. Class Cliends & Servers.
|
||||
* {
|
||||
* pingfreq ((kolko chesto da pignesh user/server v sekundi);
|
||||
* maxclients (vuzmojnite connekcii za opredelen 'Class');
|
||||
* sendq (maksimuma ot hora v edna opashka);
|
||||
* recvq (maximum receive queue from a connection [flood control]);
|
||||
* };
|
||||
*/
|
||||
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 500;
|
||||
sendq 100000;
|
||||
recvq 8000;
|
||||
};
|
||||
|
||||
class servers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 10; /* Maksimum serveri koito moje da se link-nat */
|
||||
sendq 1000000;
|
||||
connfreq 100; /* Sekundite mejdu vseki opit za connect-vane */
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: allow {}
|
||||
* OLD: I:Line
|
||||
* Tazi Opciq opredelq koi shte ima pravo da vliza na servera vi...
|
||||
* Mojete da kontrolirate vashite klienti,da im slagate paroli i drugi.
|
||||
* control and/or set a password.
|
||||
* Syntax is as follows:
|
||||
* allow {
|
||||
* ip (razresheno ip za izpolzvane);
|
||||
* hostname (host mask);
|
||||
* class (class to send them to [see class {}]);
|
||||
* password "(parola)"; (po izbor)
|
||||
* maxperip (pozvoleni vruzki ot edno ip); (optional)
|
||||
* };
|
||||
*/
|
||||
|
||||
allow {
|
||||
ip *@*;
|
||||
hostname *@*;
|
||||
class clients;
|
||||
maxperip 5;
|
||||
};
|
||||
|
||||
/* Passworded allow line */
|
||||
allow {
|
||||
ip *@255.255.255.255;
|
||||
hostname *@*.passworded.ugly.people;
|
||||
class clients;
|
||||
password "Test";
|
||||
maxperip 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: allow channel {}
|
||||
* OLD: chrestrict
|
||||
* Razreshenie na userite da vlizat v opredelen kanal...
|
||||
* Syntax:
|
||||
* allow channel {
|
||||
* channel "imeto na kanala";
|
||||
* };
|
||||
*/
|
||||
allow channel {
|
||||
channel "#Free";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: oper {}
|
||||
* OLD: O:Line
|
||||
* Opredelete koi da bude IRC Operator na servera vi
|
||||
* IRC operators tova sa tochno tezi hora koito da se grijat za servera,
|
||||
* da go poddurjat i da se connect-vat redovno.
|
||||
* Sinktaksisut e kakto sledva :
|
||||
* oper (login) {
|
||||
* class (class to put them in, if different from I, moves them to new
|
||||
* class);
|
||||
* from {
|
||||
* userhost (ident@host);
|
||||
* userhost (ident@host);
|
||||
* };
|
||||
* flags
|
||||
* {
|
||||
* (tuk shte slagate flagovete*);
|
||||
* };
|
||||
* OR
|
||||
* flags "old type flags, like OAaRD"; (sushto moje da slagate i samo bukvite)
|
||||
* };
|
||||
*/
|
||||
|
||||
/* Za lista s oper flagovete, poglednete doc/unreal32docs.html#operblock
|
||||
*[Zaduljitelno da se prochete]
|
||||
*/
|
||||
|
||||
oper admin {
|
||||
class clients;
|
||||
from {
|
||||
userhost *@*;
|
||||
};
|
||||
password "Test";
|
||||
flags
|
||||
{
|
||||
netadmin;
|
||||
can_zline;
|
||||
can_gzline;
|
||||
can_gkline;
|
||||
global;
|
||||
coadmin;
|
||||
can_globalkill;
|
||||
can_kline;
|
||||
can_unkline;
|
||||
can_rehash;
|
||||
can_globops;
|
||||
can_localroute;
|
||||
can_wallops;
|
||||
can_localkill;
|
||||
can_localnotice;
|
||||
can_globalroute;
|
||||
can_globalnotice;
|
||||
can_dccdeny;
|
||||
can_setq;
|
||||
services-admin;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: listen {}
|
||||
* OLD: P:Line
|
||||
* Tuk shte opredelite porta na vasheto ircd prez koito
|
||||
* da vlizat useri/serveri.
|
||||
* Siktaksisut e kakto sledva :
|
||||
* listen (ip):(nomera na porta)
|
||||
* {
|
||||
* options {
|
||||
* (options here);
|
||||
* };
|
||||
* };
|
||||
* or for a plain
|
||||
* listen: listen (ip):(port);
|
||||
*
|
||||
* NOTICE: for ipv6 ips (3ffe:b80:2:51d::2 etc), use listen [ip]:port;
|
||||
*
|
||||
* That works also.
|
||||
*/
|
||||
|
||||
/* Options for listen:
|
||||
OLD | NEW
|
||||
S serversonly
|
||||
C clientsonly
|
||||
J java
|
||||
s ssl
|
||||
* standard
|
||||
*/
|
||||
|
||||
/* BELEJKI ZA SSL PORTOVE : SSL portovete sa dosta nestandartni,
|
||||
* osven nomera na 'high-SSL portovete', nqkoi hora kazvat che mojej da gi startirash
|
||||
* na 994 port, zashtoto tova e oficialniqt SSL port..no tova izskva root!Osven tova port 194
|
||||
* e oficialniqt irc port i mojete nqkoi put da probvate da vidite dali ircd-to e startirano
|
||||
* na tozi port.
|
||||
* Nashiqt suvet e da izpolzvate port 6697 za SSL, toi se izpolzva vuv nqkoi mreji i
|
||||
* mojete da otvorite mnogo SSL portove ako iskate, no izpolzvaite i 6697 po standart.
|
||||
*/
|
||||
|
||||
listen *:6697
|
||||
{
|
||||
options
|
||||
{
|
||||
ssl;
|
||||
clientsonly;
|
||||
};
|
||||
};
|
||||
|
||||
listen *:8067;
|
||||
listen *:6667;
|
||||
|
||||
/*
|
||||
* NEW: link {}
|
||||
* OLD: C/N:Lines
|
||||
* Tezi opcii sa za link-vane na serveri
|
||||
* BELEJKA: Dva servera se nujdaqt ot LINK {} za da budat linknati bez problemi!
|
||||
* Sintaksisut e kakto sledva:
|
||||
* link (server name)
|
||||
* {
|
||||
* username (username, moshete da slojite sushto i * );
|
||||
* hostname (ip nomer/hostmask);
|
||||
* bind-ip (kum koe ip da bude svurzano sled kato se connect-ne, ili slojete * );
|
||||
* port (port za svurzvane (moje da slojite vseki);
|
||||
* hub (ako servera vi e hub,slojete * , ili servermask-a);
|
||||
* [ili leaf *;]
|
||||
* password-connect "(parola za svurzvane)";
|
||||
* password-receive "(povtorete parolata)";
|
||||
* class (class);
|
||||
* options {
|
||||
* (options here*);
|
||||
* };
|
||||
* /* Ako izpolzvate SSL,vie mojete da izberete shifur za da izpolzvate SSL mode
|
||||
* * Lista shte namerite vuv "openssl ciphers",samostoqtelen shifur sus :'s
|
||||
* */
|
||||
* ciphers "DES-CBC3-MD5";
|
||||
*
|
||||
* };
|
||||
*/
|
||||
|
||||
/*
|
||||
options:
|
||||
OLD | NEW
|
||||
S ssl
|
||||
Z zip
|
||||
N/A autoconnect
|
||||
N/A quarantine
|
||||
N/A nodnscache
|
||||
*/
|
||||
|
||||
|
||||
link services.Test.com
|
||||
{
|
||||
username *;
|
||||
hostname 1.2.3.4;
|
||||
bind-ip *;
|
||||
port 7029;
|
||||
hub *;
|
||||
password-connect "LiNk";
|
||||
password-receive "LiNk";
|
||||
class servers;
|
||||
options {
|
||||
/* Belejka: vie ne mojete da izpolzvate autoconnect kogato linkvate serveri */
|
||||
autoconnect;
|
||||
ssl;
|
||||
zip;
|
||||
};
|
||||
};
|
||||
/*
|
||||
*
|
||||
* NEW: ulines {}
|
||||
* OLD: U:Line
|
||||
* U-liniite davat poveche komandi na serverut vi,Uliniite se slagat samo za services/stats
|
||||
* serveri i NIKOGA za normalnite UnrealIRCd serveri!
|
||||
* Sintaksisut e kakto sledva:
|
||||
* ulines {
|
||||
* (server to uline);
|
||||
* (server to uline);
|
||||
* [etc]
|
||||
* };
|
||||
*/
|
||||
ulines {
|
||||
services.Test.org;
|
||||
stats.Test.org;
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: drpass {}
|
||||
* OLD: X:Line
|
||||
* Tuk shte slagate parolite za /die i /restart na servera.
|
||||
* Sintaksusut e kakto sledva:
|
||||
* drpass {
|
||||
* restart "(parola za restart na servera)";
|
||||
* die "(parola za die na servera)";
|
||||
* };
|
||||
*/
|
||||
drpass {
|
||||
restart "restart";
|
||||
die "die";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: log {} OLD: nishto ne se kazva otnosno tova kude i kakvo da logva.Mojete
|
||||
* gi slagate ako iskate
|
||||
*
|
||||
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
|
||||
*
|
||||
* Syntax:
|
||||
* log "log file"
|
||||
* {
|
||||
* flags
|
||||
* {
|
||||
* flag;
|
||||
* flag;
|
||||
* etc..
|
||||
* };
|
||||
* };
|
||||
*/
|
||||
|
||||
log "ircd.log" {
|
||||
/* Iztriite log faila i napravete nov koito da stiga do 2MB.
|
||||
*/
|
||||
maxsize 2097152;
|
||||
flags {
|
||||
oper;
|
||||
kline;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
spamfilter;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: alias {}
|
||||
* OLD: N/A
|
||||
* Chrez tezi nastroiki moje da napravite prehod ot /nickserv,/chanserv i drugi kum drugi nickove.
|
||||
* FLAGS: services,stats,normal
|
||||
*
|
||||
** Syntax:
|
||||
* alias "Ime" {
|
||||
* target "points to";
|
||||
* type aliastype;
|
||||
* };
|
||||
* [BELEJKA: Mojete da vkliuchite i opredeleniq,za celta poglednete doc/unreal32docs.html section 2.9]
|
||||
*/
|
||||
|
||||
// Tova posochva komandata /nickserv-a na user-a NickServ koito e svurzan s set::services-server server
|
||||
/*alias NickServ {
|
||||
target "NickServ";
|
||||
type services;
|
||||
};*/
|
||||
|
||||
// Ako iskate komandite da sa na drug nick mojete da promenite nick-a
|
||||
//alias ChanServ {type services; };
|
||||
|
||||
// Posochva /StatServ na user-a StatServ koqto svurzva set::stats-server server
|
||||
//alias StatServ {type stats; };
|
||||
|
||||
// Posochva /superbot na user-a SuperBot
|
||||
//alias SuperBot {type normal; };
|
||||
|
||||
/* Standart Aliases */
|
||||
alias NickServ { type services; };
|
||||
alias ChanServ { type services; };
|
||||
alias OperServ { type services; };
|
||||
alias HelpServ { type services; };
|
||||
alias StatServ { type stats; };
|
||||
|
||||
/*
|
||||
* NEW: alias {}
|
||||
* OLD: N/A
|
||||
* Tezi moje da posochite zamestiteli na /identify,/services, i drugi...
|
||||
* Syntax:
|
||||
* alias "Ime" {
|
||||
* format "format string" {
|
||||
* target "points to";
|
||||
* type aliastype;
|
||||
* parameters "parameters to send";
|
||||
* };
|
||||
* type command;
|
||||
* };
|
||||
*/
|
||||
/* Tova se pokazva otdelno, zashtoto vypreki che ima syshtoto ime kato predishnata direktiva
|
||||
*e dosta razlichno po otnoshenie na sintaksis, vypreki che osigurqva prosta funkciq i raz4ita na standartni alias-i za da raboti.
|
||||
*/
|
||||
/*
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
*/
|
||||
/* alias::format ditektivata e obichaen izraz.Pyrviq format se svyrzva s
|
||||
* komandata /identify kogato pyrviq simvol e "#". Sled tova se izprashta do chanserv
|
||||
* alias-a s parametri identify. %1-. Togava vtoriq ormat se svyrzva s komandata /identify
|
||||
* kogato pyrviq simvol ne e "#".
|
||||
* Togava se izprashta do nickserv alias-a s parametri identify %1-.
|
||||
*/
|
||||
|
||||
/* Standard aliases */
|
||||
alias "services" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: tld {}
|
||||
* OLD: T:Line
|
||||
* Tezi nastroki sa za razlichni 'motd' i 'rules' failove
|
||||
* v zavisimost ot klientskata hostmask-a.
|
||||
* Sintaksisut e kakto sledva:
|
||||
* tld {
|
||||
* * mask (ident@host);
|
||||
* motd "(motd file)";
|
||||
* rules "(rules file)";
|
||||
* };
|
||||
*/
|
||||
|
||||
tld {
|
||||
mask *@*;
|
||||
motd "ircd.motd";
|
||||
rules "ircd.rules";
|
||||
};
|
||||
|
||||
/* BELEJKA: vzemete nqkoi fail primer - vzemete tao.of.irc.doc..sled tova go kopiraite v
|
||||
* glavnata direktoriq na Unrealircd-to vi.Prekrustete go na irc.motd..Napravete po sushtiq
|
||||
* nachin i ircd.rules (FAILOVETE SA ZADULJITELNI)
|
||||
*/
|
||||
|
||||
/*
|
||||
* NEW: ban nick {}
|
||||
* OLD: Q:Line
|
||||
* Ako slojite ban na nickname to veche tozi nick stava neizpolzvaem.
|
||||
* Sintaksisut e kakto sledva :
|
||||
* ban nick {
|
||||
* mask "(nick koito jelaete da zabranite)";
|
||||
* reason "(prichina)";
|
||||
* };
|
||||
*/
|
||||
ban nick {
|
||||
mask "Test";
|
||||
reason "Test Nickname";
|
||||
};
|
||||
/*
|
||||
* NEW: ban ip {}
|
||||
* OLD: Z:Line
|
||||
* Ban na ip.
|
||||
* Sintaksis:
|
||||
* ban ip { mask (ip nomer/hostmask); reason "(prichina)"; };
|
||||
*/
|
||||
ban ip {
|
||||
mask 100.100.200.300;
|
||||
reason "Wrong Ip";
|
||||
};
|
||||
/*
|
||||
* NEW: ban server {}
|
||||
* OLD: Server Q:Line
|
||||
* Slagane na ban na server.Ako servera e link-nat kum otdalecheniq server
|
||||
* (toest tozi) localniqt server shte se diskonect-ne avtormatichno.
|
||||
* Syntax is as follows:
|
||||
* ban server {
|
||||
* mask "(Imeto na servera)";
|
||||
* reason "(Prichina)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban server {
|
||||
mask irc.microsoft.com;
|
||||
reason "Get out of here";
|
||||
};
|
||||
/*
|
||||
* NEW: ban user {}
|
||||
* OLD: K:Line
|
||||
* Tazi opciq pozvolqva da zabranite dostupa na user do vashiqt server
|
||||
* Sintaksis:
|
||||
* ban user { mask (hostmask/ip nomer); reason "(Prichina)"; };
|
||||
*/
|
||||
|
||||
ban user {
|
||||
mask *tirc@*.microsoft.com;
|
||||
reason "Idiot";
|
||||
};
|
||||
/*
|
||||
* NEW: ban realname {}
|
||||
* OLD: n:Line
|
||||
* Tazi opciq vi dava pravo da zabranite dostupa na user ot opredeleno 'realname'.
|
||||
* Sintaksis:
|
||||
* ban realname {
|
||||
* mask "(real name)";
|
||||
* reason "(prichina)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban realname {
|
||||
mask "test";
|
||||
reason "mIRKFORCE";
|
||||
};
|
||||
|
||||
ban realname {
|
||||
mask "sub7";
|
||||
reason "virus";
|
||||
};
|
||||
|
||||
/*
|
||||
* BELEJKA ZA VSICHKI BANOVE, mojete da povtarqte procedurata sus razlichni nickove!
|
||||
*
|
||||
* NEW: except ban {}
|
||||
* OLD: E:Line
|
||||
* Nick koito ne moje da bude bannat.
|
||||
* Sintaksis:
|
||||
* except ban { mask (ident@host); }
|
||||
*/
|
||||
|
||||
except ban {
|
||||
/* don't ban stskeeps */
|
||||
mask *stskeeps@212.*;
|
||||
};
|
||||
/*
|
||||
* NEW: deny dcc {}
|
||||
* OLD: dccdeny.conf
|
||||
* Izpolzvaite go za da zabranite dcc.Predpazva vi ot virusi
|
||||
* Syntax:
|
||||
* deny dcc
|
||||
* {
|
||||
* filename "Fail koito shte blokirate (ie, *exe)";
|
||||
* reason "prichina";
|
||||
* };
|
||||
*/
|
||||
deny dcc {
|
||||
filename "Sub7";
|
||||
reason "Possible Sub7 Virus";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: deny channel {}
|
||||
* OLD: N/A (NEW)
|
||||
* Zabranqva kanali po vash izbor.
|
||||
* Syntax:
|
||||
* deny channel {
|
||||
* channel "(kanal)";
|
||||
* reason "prichina";
|
||||
* };
|
||||
*/
|
||||
deny channel {
|
||||
channel "hackers";
|
||||
reason "Warez is illegal";
|
||||
};
|
||||
|
||||
/*
|
||||
* NEW: vhost {}
|
||||
* OLD: Vhost.conf file
|
||||
* Tazi nastroika vi slaga Falshivo ip.Slaga se za hora koito ne sa operatori
|
||||
* ili puk za operatori (za po murzelivite /sethost :P
|
||||
* Sintaksis:
|
||||
* vhost {
|
||||
* vhost (vhost.com);
|
||||
* from {
|
||||
* userhost (ident@host to allow to use it);
|
||||
* };
|
||||
* login (login name);
|
||||
* password (password);
|
||||
* };
|
||||
* then to use this vhost, do /vhost (login) (password) in IRC
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
from {
|
||||
userhost *@*;
|
||||
};
|
||||
login stskeeps;
|
||||
password moocowsrulemyworld;
|
||||
};
|
||||
|
||||
/* Mojete da vkliuchite i drugi konfiguracionni failove */
|
||||
/* vkliuchete "klines.conf"; */
|
||||
|
||||
/* Network configuration */
|
||||
set {
|
||||
network-name "Imeto na Mrejata vi";
|
||||
default-server "Imeto na Servera";
|
||||
services-server "Services.servera";
|
||||
stats-server "Stats.Servera";
|
||||
help-channel "#Kanal za pomosht";
|
||||
hiddenhost-prefix "skrithost";
|
||||
/* prefix-quit "quit na userite"; */
|
||||
/* Cloak Keys se slagat na vsichki serveri ot mrejata.
|
||||
* Te se izpolzvat za po golqma sigurnost.Trqbva da budat izbrani 3 reda
|
||||
* ot 5-100 simvola i da sudurjat SMESENI golemi,malki bukvi i cifri...
|
||||
* V primera e posocheno edin takuv 'Cloak Key'..napishete oshte 2
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"Slojete Tuk Vashi Razburkani";
|
||||
"Slojete Tuk Vashi Razburkani";
|
||||
};
|
||||
/* on-oper host */
|
||||
hosts {
|
||||
local "Host za localen operator";
|
||||
global "Host za globalen operator";
|
||||
coadmin "Host za coadmin";
|
||||
admin "Host za admin";
|
||||
servicesadmin "Host za services-admin";
|
||||
netadmin "Host za netadmin";
|
||||
host-on-oper-up "yes\no";
|
||||
};
|
||||
};
|
||||
|
||||
/* Server specific configuration */
|
||||
|
||||
set {
|
||||
kline-address "slojete adres za kline";
|
||||
auto-join "#kanal za auto-join";
|
||||
modes-on-connect "+iw";
|
||||
modes-on-oper "+wgs";
|
||||
oper-auto-join "#Kanal za auto-join na operatorite";
|
||||
dns {
|
||||
nameserver 127.0.0.1;
|
||||
timeout 2s;
|
||||
retries 2;
|
||||
};
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Ako jelaete da proverqva identa mahnete */
|
||||
/* identd-check; */
|
||||
show-connect-info;
|
||||
};
|
||||
|
||||
maxchannelsperuser 10;
|
||||
/* Tova e minimalnoto vreme v koeto user moje da se svurje sled kato izleze ot servera.
|
||||
* Tova shte pomogne da se spre spam-a */
|
||||
anti-spam-quit-message-time 10s;
|
||||
/* Napravete statichen quit koito da zamestva drugite quit-ove na userite.
|
||||
custom quits are allowed on local server */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* Mojete da blokirate 'Part-reason-ite' kato slojite nqkakuv text po vash izbor */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Mojete da slagate 'stats' ili inache kazano nqkoi flagove da budat razresheni i
|
||||
* izpolzvaemi samo ot operite. Primer za tova sa - klines,glines i shuns
|
||||
*/
|
||||
oper-only-stats "okfGsMRUEelLCXzdD";
|
||||
|
||||
/* Throttling: Dolniqt primer pokazva che mojete da slojite limit 3 svurzvaniq
|
||||
za 60 sec (na host). */
|
||||
throttle {
|
||||
connections 3;
|
||||
period 60s;
|
||||
};
|
||||
|
||||
/* Anti flood protection */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* 3 smenqniq na nicka za 60 seconds (po default) */
|
||||
};
|
||||
|
||||
/* Spam filter */
|
||||
spamfilter {
|
||||
ban-time 1d; /* vremetraeneto e po default *line ban set by spamfilter */
|
||||
ban-reason "Spam/Advertising"; /* default prichina */
|
||||
virus-help-channel "#help"; /* Kanal za skanirane na virusi */
|
||||
/* s izkliuchenie "#help"; drugite kanali se osvobojdavat ot filtrirane */
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Ako imate problem ili nujda ot pomosht?
|
||||
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.html
|
||||
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- sudurja 80% ot vuprosite vi!
|
||||
* 3) Ako imate problem moje da se oburnete i kum irc.ircsystems.net #unreal-support,
|
||||
* no purvo PROCHETETE HELP FAILA i 'FAQ'.
|
||||
*/
|
||||
|
||||
@@ -737,11 +737,6 @@ set {
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
dns {
|
||||
nameserver 127.0.0.1;
|
||||
timeout 2s;
|
||||
retries 2;
|
||||
};
|
||||
options {
|
||||
hide-ulines;
|
||||
/* You can enable ident checking here if you want */
|
||||
|
||||
+3
-7
@@ -19,7 +19,8 @@
|
||||
* BITTE LESE die doc/unreal32docs.html! Sie ist auch online erhältlich bei:
|
||||
* www.vulnscan.org/UnrealIrcd/unreal32docs.html
|
||||
* Diese Datei enthält zahlreiche ergänzende Informationen über jeden Block, Variablen usw.
|
||||
* Übersetzung durch stylus740@smart-irc.de (bei irc.smart-irc.net)/
|
||||
* Übersetzung durch stylus740@smart-irc.de (bei irc.smart-irc.net)
|
||||
*/
|
||||
|
||||
/* Kommentar Typen */
|
||||
#Kommentar Typ 1 (Shell Typ)
|
||||
@@ -727,11 +728,6 @@ set {
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
dns {
|
||||
nameserver 127.0.0.1;
|
||||
timeout 2s;
|
||||
retries 2;
|
||||
};
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Man kann hier ident checking aktivieren, wenn man will */
|
||||
@@ -741,7 +737,7 @@ set {
|
||||
|
||||
maxchannelsperuser 10;
|
||||
/* Die Mindestzeit, die ein User verbunden sein muss, bevor er eine QUIT Meldung
|
||||
* senden darf (Das wird offentlich helfen, Spam zu verhindern */
|
||||
* senden darf (Das wird offentlich helfen, Spam zu verhindern) */
|
||||
anti-spam-quit-message-time 10s;
|
||||
/* Macht die Meldung statisch, die in allen Quit Meldungen angezeigt wird.
|
||||
Somit sind keine individuellen Quts auf dem lokalen Server mehr erlaubt */
|
||||
|
||||
@@ -744,11 +744,6 @@ set {
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
dns {
|
||||
nameserver 127.0.0.1;
|
||||
timeout 2s;
|
||||
retries 2;
|
||||
};
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Vous pouvez enclencher la vérification des idents si vous voulez */
|
||||
|
||||
@@ -754,11 +754,6 @@ set {
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#operek";
|
||||
dns {
|
||||
nameserver 127.0.0.1;
|
||||
timeout 2s;
|
||||
retries 2;
|
||||
};
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Itt engedélyezhetjük az ident ellenőrzést, ha szeretnénk */
|
||||
|
||||
+3
-7
@@ -253,6 +253,7 @@ oper bobsmith {
|
||||
* vrijwel alle netwerken gebruikt en wordt herkend door bijvoorbeeld
|
||||
* StunTour. Je mag zoveel SSL poorten openen als je wil, maar als je
|
||||
* (tevens) 6697 gebruikt, help je mee de wereld meer uniform te maken ;).
|
||||
*/
|
||||
|
||||
listen *:6697
|
||||
{
|
||||
@@ -325,7 +326,7 @@ link hub.mynet.com
|
||||
password-receive "LiNk";
|
||||
class servers;
|
||||
options {
|
||||
/* Note: Gebruik geen autoconnect naar Services */
|
||||
/* Opmerking: Gebruik geen autoconnect naar Services */
|
||||
autoconnect;
|
||||
ssl;
|
||||
zip;
|
||||
@@ -415,7 +416,7 @@ log "ircd.log" {
|
||||
* type aliastype;
|
||||
* };
|
||||
*
|
||||
* [NOTE: Je kan ook een standaard alias bestand gebruiken, zie doc/unreal32docs.html sectie 2.9]
|
||||
* [Opmerking: Je kan ook een standaard alias bestand gebruiken, zie doc/unreal32docs.nl.html sectie 2.9]
|
||||
*/
|
||||
|
||||
// Dit wijst het commando /nickserv naar de gebruiker NickServ welke verbonden is met set::services-server
|
||||
@@ -755,11 +756,6 @@ set {
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
dns {
|
||||
nameserver 127.0.0.1;
|
||||
timeout 2s;
|
||||
retries 2;
|
||||
};
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Je kan hier ident checking aanzetten als je wilt */
|
||||
|
||||
@@ -734,11 +734,6 @@ set {
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
dns {
|
||||
nameserver 127.0.0.1;
|
||||
timeout 2s;
|
||||
retries 2;
|
||||
};
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Если желаете, вы можете включить проверку ident */
|
||||
|
||||
@@ -0,0 +1,787 @@
|
||||
/*
|
||||
* example.conf by Daniel Hawton AKA Osiris (osiris@unrealircd.org).
|
||||
* $Id$
|
||||
* Türkçe çeviri: Mustafa "Ironic" Cakmak (ironic@unrealircd.org)
|
||||
*
|
||||
* Unreal3.2 ve üstü 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
|
||||
* okuyarak ve biraz pratikle anlayacaksınız.
|
||||
*
|
||||
* Yapmanız gereken bu dosyayı ana dizine atıp, 'unrealircd.conf' olarak adlandırmak.
|
||||
*
|
||||
* NOTE: Bütün satırlar, açılış { satırı dışında, kapama } satırı dahil, sonunda ; taşır.
|
||||
* IRCd açıklama satırlarını göz ardı edecektir.
|
||||
*
|
||||
* Lütfen doc/unreal32docs.tk.html dosyasını okuyunuz! Çevrimiçi sürümüne ulaşabileceğiniz adres:
|
||||
* www.vulnscan.org/UnrealIRCd/unreal32docs.tk.html
|
||||
* Yapılandırma dosyası hakkında bir çok bilgi içerir: Her blok,
|
||||
* değişken vs.. hakkında bilgi verir.
|
||||
* Eğer dökümantasyon dosyasını tam olarak okumadan bu dosyayı düzenlemeye kalkarsanız
|
||||
* başarısız olacağınız oldukça yüksek bir oranda garanti edilir!
|
||||
*/
|
||||
|
||||
/* Açıklama satırı çeşitleri */
|
||||
#Açıklama satırı 1 (Shell tipi)
|
||||
// Açıklama satırı 2 (C++ tipi)
|
||||
/* Açıklama satırı satırı 3 (C tipi) */
|
||||
#Bu satırlar ircd tarafından göz ardı edilecektir.
|
||||
|
||||
/*
|
||||
* UnrealIRCd modülleri destekler, Bunların bazılarının yüklenmesi gereklidir.
|
||||
* En azından komutlar modülü(commands) ve gizleme modülü(cloaking)'ne ihtiyacınız vardır.
|
||||
*/
|
||||
|
||||
/* *NIX için, sonraki 2 satırın açıklama satıracını(//) kaldırın: */
|
||||
//loadmodule "src/modules/commands.so";
|
||||
//loadmodule "src/modules/cloak.so";
|
||||
|
||||
/* Windows için, sonraki 2 satırın açıklama satıracını(//) kaldırın: */
|
||||
//loadmodule "modules/commands.dll";
|
||||
//loadmodule "modules/cloak.dll";
|
||||
|
||||
/*
|
||||
* Diğer yapılandırma dosyalarınıda dahil edebilirsiniz.
|
||||
* help.conf bütün /helpop metinlerini içerir. +G kipi için badwords.*.conf
|
||||
* dosyaları bütün kötü kelime girdilerini içerir...
|
||||
* spamfilter.conf güncel trojanlar için uygun kuralları içerir.
|
||||
* Muhtemelen bunları eklemek isteyeceksiniz:
|
||||
*/
|
||||
include "help.conf";
|
||||
include "badwords.channel.conf";
|
||||
include "badwords.message.conf";
|
||||
include "badwords.quit.conf";
|
||||
include "spamfilter.conf";
|
||||
|
||||
/*
|
||||
* YENI: me {}
|
||||
* ESKI: M:Line
|
||||
* me {} bu sunucu için isim, tanımlama ve unreal sunucu sayısalını(numeric) belirler.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* me {
|
||||
* name "sunucu.ismi";
|
||||
* info "Sunucu tanımlaması";
|
||||
* numeric (sunucu sayısalı*);
|
||||
* };
|
||||
* Eğer link varsa, bu sayısal ağ üzerinde varolan herhangi bir server tarafından kullanılmamalıdır.
|
||||
*/
|
||||
me
|
||||
{
|
||||
name "irc.foonet.com";
|
||||
info "FooNet Server";
|
||||
numeric 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: admin {}
|
||||
* ESKI: A:Line
|
||||
* Admin sunucu yöneticisine dair bilgi verir. Dilediğiniz kadar
|
||||
* satırı admin { altına yerleştirebilirsiniz.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* admin {
|
||||
* "ilk satır";
|
||||
* "ikinci satır";
|
||||
* [vs]
|
||||
* };
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"widely@used.name";
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: class {}
|
||||
* ESKI: Y:line (eskisi karışıktı)
|
||||
* Bu sınıflar için ayarları belirtir. Bir sınıf bağlantılar için bir grup
|
||||
* ayarıdır. Örneğin, sunucu bağlantılarını, bir istemci sınıfı
|
||||
* yerine, sunucu sınıfına yönlendirirsiniz. Sözdizimi aşağıdaki gibidir:
|
||||
* class (class name)
|
||||
* {
|
||||
* pingfreq (ne sıklıkta saniye içerisinde kullanıcı veya sunucunun ping edileceği);
|
||||
* maxclients (bu sınıf için kaç bağlantı);
|
||||
* sendq (bir bağlantıdan gönderilecek en yüksek dizi);
|
||||
* recvq (bir bağlantıdan alınacak en yüksek dizi [flood kontrolü]);
|
||||
* };
|
||||
*/
|
||||
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 500;
|
||||
sendq 100000;
|
||||
recvq 8000;
|
||||
};
|
||||
|
||||
class servers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 10; /* Link edebileceğimiz en yüksek sunucu sayısı */
|
||||
sendq 1000000;
|
||||
connfreq 100; /* Her bağlantı girişimi arasında ne kadar saniye olacağı */
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: allow {}
|
||||
* ESKI: I:Line
|
||||
* Bağlantı izinlerini belirtir..
|
||||
* Temel olarak istemcilerin sunucuya bağlanabilmesi için herhangi bir kontrol
|
||||
* ve/veya bir şifre belirtmenize olanak sağlar.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* allow {
|
||||
* ip (izin verilecek ip maskesi);
|
||||
* hostname (host maskesi);
|
||||
* class (gönderilecek sınıf [class {} bloğuna göz atınız]);
|
||||
* password "(şifre)"; (isteğe bağlı)
|
||||
* maxperip (ip başına kabul edilecek bağlantı sayısı); (isteğe bağlı)
|
||||
* };
|
||||
*/
|
||||
|
||||
allow {
|
||||
ip *@*;
|
||||
hostname *@*;
|
||||
class clients;
|
||||
maxperip 5;
|
||||
};
|
||||
|
||||
/* Şifrelendirilmiş allow bloğu */
|
||||
allow {
|
||||
ip *@255.255.255.255;
|
||||
hostname *@*.passworded.ugly.people;
|
||||
class clients;
|
||||
password "f00Ness";
|
||||
maxperip 1;
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: allow channel {}
|
||||
* ESKI: chrestrict
|
||||
* Bir kullanıcının bir kanala girmesine olanak sağlar...
|
||||
* yasak kanal bloğundaki hariçlik gibi.
|
||||
* Sözdizimi:
|
||||
* allow channel {
|
||||
* channel "kanal ismi";
|
||||
* };
|
||||
*/
|
||||
allow channel {
|
||||
channel "#WarezSucks";
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: oper {}
|
||||
* ESKI: O:Line
|
||||
* Bir IRC Operatörü tanımlamanızı sağlar.
|
||||
* IRC Operatörleri sunucuya uygun bir biçimde bağlanılmasını ve
|
||||
* makullüğü sağlarlar.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* oper (login) {
|
||||
* class (sınıf ismini ekleyin, eğer istemciden farklıysa, yeni sınıfı ekleyin);
|
||||
* from {
|
||||
* userhost (ident@host);
|
||||
* userhost (ident@host);
|
||||
* };
|
||||
* flags
|
||||
* {
|
||||
* (flaglar buraya*);
|
||||
* };
|
||||
* VEYA
|
||||
* flags "OAaRD gibi eski tip flaglar";
|
||||
* };
|
||||
*/
|
||||
|
||||
|
||||
/* Oper flaglarının listesine doc/unreal32docs.html#operblock dan göz atabilirsiniz.
|
||||
* [Okumanız şiddetle önerilir]
|
||||
*/
|
||||
|
||||
oper bobsmith {
|
||||
class clients;
|
||||
from {
|
||||
userhost bob@smithco.com;
|
||||
};
|
||||
password "f00";
|
||||
flags
|
||||
{
|
||||
netadmin;
|
||||
can_zline;
|
||||
can_gzline;
|
||||
can_gkline;
|
||||
global;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: listen {}
|
||||
* ESKI: P:Line
|
||||
* İstemci ve sunucuların sunucuya bağlanmasını sağlamak için ircd tarafından
|
||||
* kullanılacak bir port tanımlamanızı sağlar .
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* listen (ip adresi):(port numarası)
|
||||
* {
|
||||
* options {
|
||||
* (tercihler buraya);
|
||||
* };
|
||||
* };
|
||||
* veya sade bir biçimde
|
||||
* listen: listen (ip):(port);
|
||||
*
|
||||
* UYARI: ipv6 ipleri için (3ffe:b80:2:51d::2 vb), [ip]:port; kullanınız
|
||||
*
|
||||
* Böylede çalışır.
|
||||
*/
|
||||
|
||||
/* listen için tercihler:
|
||||
ESKI | YENI
|
||||
S serversonly
|
||||
C clientsonly
|
||||
J java
|
||||
s ssl
|
||||
* standard
|
||||
*/
|
||||
|
||||
/* SSL PORTLARI İÇİN NOT: SSL portları oldukça standart dışıdır,
|
||||
* ayrıca pek çok yüksek-SSL portları için bazı insanlar 994 te çalıştırın
|
||||
* der çünkü bu resmi SSL portudur..Fakat bu root erişimi gerektirir.Yanı sıra,
|
||||
* 194 resmi irc portu olarak bunun üzerinde çalışan ircd
|
||||
* hiç gördünüz mü?
|
||||
* Böyle olunca bizim önerimiz 6697 portunu SSL için kullanmanız, bu hayli
|
||||
* sunucuda kullanılıyor ve örnek için StunTour tarafından kabul görmüş durumda.
|
||||
* İstediğiniz kadar SSL port açmakta özgürsünüz, fakat 6697 yi kullanmanız
|
||||
* dünya standartı haline gelmesine biraz daha yardım edecektir. ;).
|
||||
*/
|
||||
listen *:6697
|
||||
{
|
||||
options
|
||||
{
|
||||
ssl;
|
||||
clientsonly;
|
||||
};
|
||||
};
|
||||
|
||||
listen *:8067;
|
||||
listen *:6667;
|
||||
|
||||
/* NOT: Eğer bir çok IP barındıran bir IRCd Shell kullanıyorsanız logunuzda olası
|
||||
* 'Address already in use' alırsınız ve ircd başlamaz.Bunun anlamı '*' yerine
|
||||
* belirli bir IP adresi kullanmanız gerektiğidir.Yani örneğin:
|
||||
* listen 1.2.3.4:6667;
|
||||
* Açıkça, IP yi önceden koyduğunuz IP ile değiştirin.
|
||||
*/
|
||||
|
||||
/*
|
||||
* YENI: link {}
|
||||
* ESKI: C/N:Lines
|
||||
* Bir sunucu bağlantısı için bir onay tanımlamanızı sağlar.
|
||||
* NOT: HER IKI SUNUCUDA BAĞLANTI IÇIN TAM OLARAK DÜZGÜN BİR LINK {} GEREĞİ DUYAR!
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* link (sunucu ismi)
|
||||
* {
|
||||
* username (username, * da uygundur);
|
||||
* hostname (ip adresi/hostmask);
|
||||
* bind-ip (Bağlanırken hangi IP ile bağlanacağı, veya *);
|
||||
* port (bağlantı portu, eğer herhangi biriyse);
|
||||
* hub (Bu bir hub ise, * çalışır, veya sunucu maskeleri bunu sağlar);
|
||||
* [veya leaf *;]
|
||||
* password-connect "(gönderilecek şifre)";
|
||||
* password-receive "(almamız gereken şifre)";
|
||||
* class (sunucuların yönetileceği sınıf);
|
||||
* options {
|
||||
* (tercihler buraya*);
|
||||
* };
|
||||
* /* Eğer SSL kullanıyorsak, SSL modunda ne tür bir anahtar kullanacağımızı seçebiliriz
|
||||
* * "openssl ciphers" ile bir liste alınır, anahtarlar birbirinden : ile ayrılırak belirtilebilirler.
|
||||
* */
|
||||
* ciphers "DES-CBC3-MD5";
|
||||
*
|
||||
* };
|
||||
*/
|
||||
|
||||
/*
|
||||
tercihler:
|
||||
YENI | ESKI
|
||||
S ssl
|
||||
Z zip
|
||||
N/A autoconnect
|
||||
N/A quarantine
|
||||
N/A nodnscache
|
||||
*/
|
||||
|
||||
|
||||
link hub.mynet.com
|
||||
{
|
||||
username *;
|
||||
hostname 1.2.3.4;
|
||||
bind-ip *;
|
||||
port 7029;
|
||||
hub *;
|
||||
password-connect "LiNk";
|
||||
password-receive "LiNk";
|
||||
class servers;
|
||||
options {
|
||||
/* Note: Servisler link edilirken autoconnect kullanmamalısınız.*/
|
||||
autoconnect;
|
||||
ssl;
|
||||
zip;
|
||||
};
|
||||
};
|
||||
/*
|
||||
*
|
||||
* YENI: ulines {}
|
||||
* ESKI: U:Line
|
||||
* U-lines satırları sunuculara daha güç/komut kazandırır.Bu servis/istatistik
|
||||
* sunucuları içindir ve ASLA normal UnrealIRCd sunucuları için değildir.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* ulines {
|
||||
* (uline olacak sunucu);
|
||||
* (uline olacak sunucu);
|
||||
* [vb]
|
||||
* };
|
||||
*/
|
||||
ulines {
|
||||
services.roxnet.org;
|
||||
stats.roxnet.org;
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: drpass {}
|
||||
* ESKI: X:Line
|
||||
* Bu blok /die ve /restart için şifre tanımlamanızı sağlar.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* drpass {
|
||||
* restart "(yeniden başlatmak için şfire)";
|
||||
* die "(sona erdirmek için şifre)";
|
||||
* };
|
||||
*/
|
||||
drpass {
|
||||
restart "I-love-to-restart";
|
||||
die "die-you-stupid";
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: log {} ESKI: N/A Ircd e logun ne ve nerede olacağını bildirir. Dilediğiniz
|
||||
* kadara sahip olabilirsiniz.
|
||||
*
|
||||
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
|
||||
*
|
||||
* Syntax:
|
||||
* log "log file"
|
||||
* {
|
||||
* flags
|
||||
* {
|
||||
* flag;
|
||||
* flag;
|
||||
* etc..
|
||||
* };
|
||||
* };
|
||||
*/
|
||||
|
||||
log "ircd.log" {
|
||||
/* Eğer 2 MB yi geçerse log dosyasını sil ve yenisini aç, eğer her zaman aynı log
|
||||
dosyasını kullanmak istiyorsanız karışmayın */
|
||||
maxsize 2097152;
|
||||
flags {
|
||||
oper;
|
||||
kline;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
spamfilter;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: alias {}
|
||||
* ESKI: N/A
|
||||
* /nickserv, /chanserv gibi komutlar hazırlamanızı sağlar.
|
||||
* FLAGS: services, stats, normal
|
||||
*
|
||||
* Sözdizimi:
|
||||
* alias "isim" {
|
||||
* target "gidecek nokta";
|
||||
* type aliastype;
|
||||
* };
|
||||
*
|
||||
* [NOT: Aynı zamanda önceden tanımlanmış alias dosyası dahil edebilirsiniz, doc/unreal32docs.html bölüm 2.9]
|
||||
*/
|
||||
|
||||
// Bu nokta /NickServ komutu ile set::services-server server üzerinden bağlanmış olan NickServ e döner.
|
||||
/*alias NickServ {
|
||||
target "NickServ";
|
||||
type services;
|
||||
};*/
|
||||
|
||||
// Eğer komutla noktanın aynı olmasını istiyorsanız nick girişini gözardı edebilirsiniz
|
||||
//alias ChanServ { type services; };
|
||||
|
||||
// Bu nokta /statserv komutu ile set::stats-server server üzerinden bağlanmış olan StatServ e döner.
|
||||
//alias StatServ { type stats; };
|
||||
|
||||
// Bu nokta /superbot komutu ile kullanıcı SuperBot a döner
|
||||
//alias SuperBot { type normal; };
|
||||
|
||||
|
||||
/* Standart aliases */
|
||||
alias NickServ { type services; };
|
||||
alias ChanServ { type services; };
|
||||
alias OperServ { type services; };
|
||||
alias HelpServ { type services; };
|
||||
alias StatServ { type stats; };
|
||||
|
||||
/*
|
||||
* ESKI: alias {}
|
||||
* YENI: N/A
|
||||
* Bu /identify, /services gibi komutlar hazırlamanızı sağlar.
|
||||
*
|
||||
* Sözdizimi:
|
||||
* alias "isim" {
|
||||
* format "format satırı" {
|
||||
* target "gidecek nokta";
|
||||
* type aliastype;
|
||||
* parameters "gönderilecek parametreler";
|
||||
* };
|
||||
* type command;
|
||||
* };
|
||||
*/
|
||||
/* Bu ayrı bir şekilde gösterilir.Çünkü bir önceki direktif ile aynı isme sahip olsa bile benzer bir
|
||||
* fonksiyon sağlaması ve standart aliaseslerin çalışmasına dayanması ile birlikte çok farklı sözdizimine sahip olması.
|
||||
*/
|
||||
/*
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
*/
|
||||
/* alias::format direktifi bir düzenli ifadedir. İlk biçim /identify komutundan sonraki ilk karakter bir # ise eşleşir.
|
||||
* Ardından IDENTIFY %1- ile chanserv aliases e döner.
|
||||
* İkinci biçim ise /identify komutundan sonraki ilk karakterin bir # işareti ile eşleşmeme durumunu belirtir.Ardından
|
||||
* IDENTIFY %1- ile nickserv aliases e döner.
|
||||
*/
|
||||
|
||||
/* alias::format::parameters betik diline benzerdir. %N (N bir numaradır) komuta gönderilecek
|
||||
* parametreyi temsil eder.(bu durumda /identify). Eğer bir %N- belirtirseniz bu N den sonraki
|
||||
* bütün parametleri içerir. Ayrıca kullanıcı nickname inin yerine %n kullanabilirsiniz.
|
||||
*/
|
||||
|
||||
/* Standart aliases */
|
||||
alias "services" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "%1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
alias "identify" {
|
||||
format "^#" {
|
||||
target "chanserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
format "^[^#]" {
|
||||
target "nickserv";
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
/* Bu gerçek komut aliası için bir örnektir */
|
||||
/* Bu eşlem /GLINEBOT ile /GLINE <parametre> 2d vb... şeklindedir */
|
||||
alias "glinebot" {
|
||||
format ".+" {
|
||||
command "gline";
|
||||
type real;
|
||||
parameters "%1 2d Bu sunucuda botlara izin verilmemektedir, lütfen http://www.example.com/faq/123 sayfasından sss ı okuyunuz.";
|
||||
};
|
||||
type command;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ESKI: tld {}
|
||||
* YENI: T:Line
|
||||
* Bu istemcilerin hostmaskesine bağlı olarak farklı
|
||||
* motd ve rules dosyaları belirler.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* tld {
|
||||
* mask (ident@host);
|
||||
* motd "(motd dosyası)";
|
||||
* rules "(rules dosyası)";
|
||||
* };
|
||||
*/
|
||||
|
||||
tld {
|
||||
mask *@*.fr;
|
||||
motd "ircd.motd.fr";
|
||||
rules "ircd.rules.fr";
|
||||
};
|
||||
|
||||
/* not: Bütün istemciler için aynı motd/rules (ircd.motd, ircd.rules) dosyaları
|
||||
* görüntületmek istiyorsanız sadece yukarıdaki örnek bloğu silebilirsiniz.
|
||||
*/
|
||||
|
||||
/*
|
||||
* YENI: ban nick {}
|
||||
* ESKI: Q:Line
|
||||
* Nir nickname yasaklar, bundan doalyı kullanılamaz.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* ban nick {
|
||||
* mask "(yasaklanak nick)";
|
||||
* reason "(neden)";
|
||||
* };
|
||||
*/
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Servisler için ayrılmıştır";
|
||||
};
|
||||
/*
|
||||
* YENI: ban ip {}
|
||||
* ESKI: Z:Line
|
||||
* Ağa bağlanan bir ip yi yasaklar.
|
||||
* Sözdizimi:
|
||||
* ban ip { mask (ip adresi/hostmask); reason "(neden)"; };
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Bağlı olmayan sunucu";
|
||||
};
|
||||
/*
|
||||
* YENI: ban server {}
|
||||
* ESKI: Server Q:Line
|
||||
* Ağa bir sunucunun bağlanmasını devredışı kılar.
|
||||
* eğer sunucu uzak bir sunucuya bağlanmışsa, yerel sunucunun
|
||||
* ağdan bağlantısı kesilir.
|
||||
* Sözdizimi aşağıdaki gibidir:
|
||||
* ban server {
|
||||
* mask "(sunucu ismi)";
|
||||
* reason "(neden)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Defol buradan.";
|
||||
};
|
||||
/*
|
||||
* YENI: ban user {}
|
||||
* ESKI: K:Line
|
||||
* Kullanıcının belirtilen kesin bir mask ile sunucuya bağlanmasını engeller.
|
||||
* Sözdizimi:
|
||||
* ban user { mask (hostmask/ip adresi); reason "(neden)"; };
|
||||
*/
|
||||
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiot";
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: ban realname {}
|
||||
* ESKI: n:Line
|
||||
* Kullanılan kesin bir realname i yasaklar.
|
||||
* Sözdizimi:
|
||||
* ban realname {
|
||||
* mask "(real name)";
|
||||
* reason "(neden)";
|
||||
* };
|
||||
*/
|
||||
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
};
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
};
|
||||
|
||||
/*
|
||||
* BUTUN BANLAR İÇİN NOT, ilave girdiler için tekrarlanabilir!
|
||||
*
|
||||
* YENI: except ban {}
|
||||
* ESKI: E:Line
|
||||
* Bu yasaklanmamanızı sağlar.
|
||||
* Sözdizimi:
|
||||
* except ban { mask (ident@host); };
|
||||
* Farklı hostlar için istediğiniz kadar except ban {}
|
||||
* bloğunu tekrarlayın.
|
||||
*/
|
||||
|
||||
except ban {
|
||||
/* stskeeps i yasaklama*/
|
||||
mask *stskeeps@212.*;
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: deny dcc {}
|
||||
* ESKI: dccdeny.conf
|
||||
* Dcc gönderimlerini bloklamak için kullanılır..Virüsler
|
||||
* dursa iyi olur.
|
||||
* Sözdizimi:
|
||||
* deny dcc
|
||||
* {
|
||||
* filename "bloklanacak dosya (örnek, *exe)";
|
||||
* reason "neden";
|
||||
* };
|
||||
*/
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Muhtemek Sub7 Virüsü";
|
||||
};
|
||||
|
||||
/*
|
||||
* ESKI: deny channel {}
|
||||
* YENI: N/A (NEW)
|
||||
* Girilen kanalları bloklar.
|
||||
* Sözdizimi:
|
||||
* deny channel {
|
||||
* channel "(kanal)";
|
||||
* reason "neden";
|
||||
* };
|
||||
*/
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez yasaktır";
|
||||
};
|
||||
|
||||
/*
|
||||
* YENI: vhost {}
|
||||
* ESKI: Vhost.conf file
|
||||
* Oper olmayan kullanıcılar için sahte ip hazırlar, veya
|
||||
* tembellik yaparak /sethost kullanmayan operler içindir :P
|
||||
* Sözdizimi:
|
||||
* vhost {
|
||||
* vhost (vhost.com);
|
||||
* from {
|
||||
* userhost (kullanılacak ident@host);
|
||||
* };
|
||||
* login (login ismi);
|
||||
* password (şifre);
|
||||
* };
|
||||
* ardından bu vhostu kullanmak için, IRC de /vhost (login) (şifre) yapın
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
from {
|
||||
userhost *@*.image.dk;
|
||||
};
|
||||
login stskeeps;
|
||||
password moocowsrulemyworld;
|
||||
};
|
||||
|
||||
/* Diğer yapılandırma dosyalarını dahil edebilirsiniz */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Ağ yapılandırması */
|
||||
set {
|
||||
network-name "ROXnet";
|
||||
default-server "irc.roxnet.org";
|
||||
services-server "services.roxnet.org";
|
||||
stats-server "stats.roxnet.org";
|
||||
help-channel "#ROXnet";
|
||||
hiddenhost-prefix "rox";
|
||||
/* prefix-quit "no"; */
|
||||
/* Gizleme anahtarları ağ üzerindeki bütün sunucularda aynı olmalı.
|
||||
* Bu anahtarlar maskeli hostlar yaratmak ve bunları saklamak için kullanılır.
|
||||
* Anahtarlar 5-100 karakterlik (10-20 karakter yeterli) 3 rastgele diziden oluşmalı ve
|
||||
* küçük harf (a-z), büyük harf (A-Z) ve rakamlardan (0-9) meydana gelmelidirler.. [ilk örneğe bakınız].
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"and another one";
|
||||
"and another one";
|
||||
};
|
||||
/* on-oper host */
|
||||
hosts {
|
||||
local "locop.roxnet.org";
|
||||
global "ircop.roxnet.org";
|
||||
coadmin "coadmin.roxnet.org";
|
||||
admin "admin.roxnet.org";
|
||||
servicesadmin "csops.roxnet.org";
|
||||
netadmin "netadmin.roxnet.org";
|
||||
host-on-oper-up "no";
|
||||
};
|
||||
};
|
||||
|
||||
/* Sunucunun kendine özgü yapılandırması */
|
||||
|
||||
set {
|
||||
kline-address "bunu.email.olarak.ayarlayın";
|
||||
modes-on-connect "+ixw";
|
||||
modes-on-oper "+xwgs";
|
||||
oper-auto-join "#opers";
|
||||
options {
|
||||
hide-ulines;
|
||||
/* Eğer isterseniz identd kontrolünü buradan aktif edebilirsiniz */
|
||||
/* identd-check; */
|
||||
show-connect-info;
|
||||
};
|
||||
|
||||
maxchannelsperuser 10;
|
||||
/* /quit mesajının görüntülenebilmesi için, bir kullanıcının sunucuya bağlı kalması gereken süre
|
||||
* Umarız spamleri durdurmak için yardım eder */
|
||||
anti-spam-quit-message-time 10s;
|
||||
/* Bütün çıkışlarda değişmeyen bir çıkış mesajı yaratır - anlamı yerel sunucuda
|
||||
ısmarlama çıkışlara izin verilmemesidir */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* Ayrıca bu seçeneğin açıklama satırlarını kaldırıp 'yes' diyerek bütün kanaldan ayrılma mesajlarını,
|
||||
* bloklamış veya belirli bir diğer metini bunun için kullanabilirsiniz. (örnek: "Bye bye!") Her zaman kanaldan
|
||||
* ayrılma mesajı olarak kullanılır */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Operlerin sadece belirli istatistikleri görüntüleyebilmesini sağlar, bütün istatistikler için * kullanın,
|
||||
* bütün istatistikleri görebilmeleri için gözardı edin. Full liste için '/stats' yapınız.
|
||||
* Bazı yöneticiler normal kullanıcıların 'kGs' istatistiklerine ulaşmasını istemeyebilir.
|
||||
*/
|
||||
oper-only-stats "okfGsMRUEelLCXzdD";
|
||||
|
||||
/* Throttling: Bu örnek bir hosta 60 saniye içerisine yanlızca 3 bağlantı imkanı sağlar. */
|
||||
throttle {
|
||||
connections 3;
|
||||
period 60s;
|
||||
};
|
||||
|
||||
/* Anti flood koruması */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* Her 60 saniyede 3 nick değişikliği (varsayılan) */
|
||||
};
|
||||
|
||||
/* Spam filtresi */
|
||||
spamfilter {
|
||||
ban-time 1d; /* spamfilter ile bir *line yasağının varsayılan devaö süresi */
|
||||
ban-reason "Spam/Advertising"; /* varsayılan neden */
|
||||
virus-help-channel "#help"; /* 'viruschan' eylemi için kullanılacak kanal */
|
||||
/* except "#help"; spam filtreden muaf tutulacak kanal */
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Sorununuz veya daha fazla yardımamı ihtiyacınız var?
|
||||
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.tr.html
|
||||
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- sorularınızın %80 ini kapsamakta!
|
||||
* 3) Eğer probleminiz hala devam ediyorsa irc.ircsystems.net sunucusu #unreal-support kanalına girebilirsiniz
|
||||
* DÖKÜMANTASYON ve FAQ kısmını okumanızı gerekli gördüğümüzü belirtiyoruz!
|
||||
*/
|
||||
+39
-5
@@ -160,8 +160,9 @@ help Chmodes {
|
||||
" a <nickname> = Gibt einem User Channel-Admin Status";
|
||||
" q <nickname> = Gibt einem User Owner-Status";
|
||||
" -";
|
||||
" b <nick!ident@host> = Bannt alle User, auf die die nick!ident@host-Maske passt [h]";
|
||||
" c = Blockt alle Nachrichten in denen mIRC FarbCodes enthalten sind [o]";
|
||||
" b <nick!ident@host> = Bannt alle User, auf die die nick!ident@host-Maske passt";
|
||||
" Erweiterte Bann Typen werden unter /HELPOP EXTBANS beschrieben [h]";
|
||||
" c = Blockt alle Nachrichten in denen mIRC FarbCodes enthalten sind [o]";
|
||||
" e <nick!ident@host> = Nimmt passende User von einem Bann aus [h]";
|
||||
" f <Floodparameter> = Schutz vor Flood (für weitere Informationen siehe /HELPOP CHMODEF) [o]";
|
||||
" I nick!ident@host> = Nimmt passende User von +i aus [h]";
|
||||
@@ -196,6 +197,37 @@ help Chmodes {
|
||||
" ==------------------------------oOo----------------------------==";
|
||||
};
|
||||
|
||||
help ExtBans {
|
||||
" Erweiterte Banntypen: ";
|
||||
" -";
|
||||
" ==-Typ---------Name---------------------------Beschreibung----------------------==";
|
||||
" | | User, auf die dieser Bann gesetzt wird, können joinen, ";
|
||||
" ~q | Quiet | a´ber nichts schreiben, solange sich nicht +v oder ";
|
||||
" | | höher haben. ";
|
||||
" | | Beispiel: ";
|
||||
" | | +bb ~q:*!*@blah.blah.com ~q:nick*!*@* ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | User, auf die dieser Bann gesetzt ist, können ihren ";
|
||||
" ~n | nickchange | Nick nicht ändern, solange sie nicht +v oder höher sind."; ";
|
||||
" | | Beispiel: ";
|
||||
" | | +bb ~n:*!*@*.aol.com ~n:nick*!*@* ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | Wenn der User in diesem Channel ist, kann er/sie nicht ";
|
||||
" | [prefix] | joinen. Es kann ein Prefix (+/%/@/&/~) angegeben werden.";
|
||||
" ~ñ | channel | Dadurch gilt der Bann nur, wenn der User diese Rechte ";
|
||||
" | | oder höher im angegebenen Channel hat. ";
|
||||
" | | Beispiel: +b ~c:#lamers, +e ~c:@#trusted ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | Wenn der Bann auf den gegebenen Realnamen gesetzt ist, ";
|
||||
" | | kann dieser User nicht joinen. ";
|
||||
" ~r | realname | Beispiel: +b ~r:*Stupid_bot_script* ";
|
||||
" | | ACHTUNG: Ein Unterstrich ('_') steht für Beides: ein ";
|
||||
" | | Leerzeichen und auch ein Unterstrich ('_') ";
|
||||
" | | Dieser Bann würde auch auf 'Stupid bot script v1.4'. ";
|
||||
" | | passen. ";
|
||||
" ==------------------------------------------------------------------------------==";
|
||||
};
|
||||
|
||||
help Chmodef {
|
||||
" Der +f Channel Mode ermöglicht eienn umfangreichen Flood Schutz für einen";
|
||||
" Channel. Durch diesen Modus ist es möglich, Floods durch join, nick change,";
|
||||
@@ -210,7 +242,7 @@ help Chmodef {
|
||||
" ==-----Type-----Name--------Default Action---Other Actions-----==";
|
||||
" c CTCP +C m, M";
|
||||
" j Join +i R";
|
||||
" k Knock +k";
|
||||
" k Knock +K";
|
||||
" m Messages +m M";
|
||||
" n Nickchange +N";
|
||||
" t Text kick b";
|
||||
@@ -1153,7 +1185,7 @@ help Svskill {
|
||||
|
||||
help Svsnoop {
|
||||
" Dieser Befehl aktiviert oder deaktiviert die Möglichkeit";
|
||||
" globaler IrcOp Funktonen auf dem angegebenen Server.";
|
||||
" IrcOp Funktonen auf dem angegebenen Server.";
|
||||
" Muss durch einen U:Lined Server gesendet werden.";
|
||||
" -";
|
||||
" Syntax: SVSNOOP <server> <+/->";
|
||||
@@ -1247,7 +1279,9 @@ help Svsnline {
|
||||
" sind Leerzeichen durch '_' zu ersetzen, Unreal";
|
||||
" übersetzt diese zu Leerzeichen.";
|
||||
" -";
|
||||
" Syntax: SVSNLINE <grund_für_den_bann> :<realname>";
|
||||
" Syntax: SVSNLINE <grund_für_den_bann> :<realname> (um einen Bann zu setzen)";
|
||||
" SVSNLINE - (um einen Bann zu löschen)";
|
||||
" SVSNLINE * (um alle Banns zu löschen)";
|
||||
" Beispiel: SVSNLINE sub7_drone :*sub7*";
|
||||
};
|
||||
|
||||
|
||||
+43
-8
@@ -151,6 +151,38 @@ help Snomasks {
|
||||
" ==-------------------------oOo------------------------==";
|
||||
};
|
||||
|
||||
help ExtBans {
|
||||
" Types de bans étendus: ";
|
||||
" -";
|
||||
" ==-Type--------Nom----------------------------Explication-----------------------==";
|
||||
" | | Les personnes correspondants à ces bans peuvent joindre ";
|
||||
" ~q | Quiet | mais ne sont pas capables de parler, à moins qu'ils ne ";
|
||||
" | | soient +v ou supérieur. ";
|
||||
" | | Exemple: ";
|
||||
" | | +bb ~q:*!*@blah.blah.com ~q:nick*!*@* ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | Les personnes correspondants à ces bans ne peuvent pas ";
|
||||
" ~n | nickchange | changer de pseudos , à moins qu'ils ne soient +v ou ";
|
||||
" | | supérieur. ";
|
||||
" | | Exemple: ";
|
||||
" | | +bb ~n:*!*@*.aol.com ~n:nick*!*@* ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | Si l'utilisateur est sur ce salon alors il/elle ne peut ";
|
||||
" | [prefix] | joindre. Un préfixe peut également être specifié ";
|
||||
" ~ñ | channel | (+/%/@/&/~) qui signifie qu'il va seulement correspondre";
|
||||
" | | à l'utilisateurt qui a ces droits ou plus sur le salon ";
|
||||
" | | spécifié ";
|
||||
" | | Exemple: +b ~c:#lamers, +e ~c:@#trusted ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | Si le realname de l'utilisateur correspond à celui-ci ";
|
||||
" | | alors il/est incapable de joindre. ";
|
||||
" ~r | realname | Example: +b ~r:*Stupid_bot_script* ";
|
||||
" | | NOTE: un underscore ('_') correspond à un espace (' ') ";
|
||||
" | | et à un underscore ('_'), donc ca ban correspondra à ";
|
||||
" | | 'Stupid bot script v1.4'. ";
|
||||
" ==------------------------------------------------------------------------------==";
|
||||
};
|
||||
|
||||
help Chmodes {
|
||||
" Cette section liste tous les modes de salons possibles pouvant être utilisés avec /MODE";
|
||||
" -";
|
||||
@@ -161,7 +193,8 @@ help Chmodes {
|
||||
" a <pseudo> = Donne le status de Channel Admin à l'utilisateur";
|
||||
" q <pseudo> = Donne le status d'Owner à l'utilisateur";
|
||||
" -";
|
||||
" b <nick!ident@host> = Banni le nick!ident@host pour le salon [h]";
|
||||
" b <nick!ident@host> = Banni le nick!ident@host pour le salon";
|
||||
Types de bans étendus (pour plus d'info voir /HELPOP EXTBANS)[h]";
|
||||
" c = Bloque les messages contenant des codes couleurs mIRC [o]";
|
||||
" e <nick!ident@host> = Overrides un ban pour les utilisateurs correspondants [h]";
|
||||
" f <paramsflood> = Protection contre le Flood (pour plus d'informations voir /HELPOP CHMODEF) [o]";
|
||||
@@ -209,7 +242,7 @@ help Chmodef {
|
||||
" ==-----Type-----Nom--------Action par Défaut---Autres Actions-----==";
|
||||
" c CTCP +C m, M";
|
||||
" j Join +i R";
|
||||
" k Knock +k";
|
||||
" k Knock +K";
|
||||
" m Messages +m M";
|
||||
" n Nickchange +N";
|
||||
" t Text kick b";
|
||||
@@ -556,7 +589,7 @@ help Watch {
|
||||
" -";
|
||||
" Syntaxe: WATCH +nick1 +nick2 +nick3 (Ajoute des pseudos)";
|
||||
" WATCH -nick (Enlève un pseudo)";
|
||||
" WATCH (Affiche la watchlist)";
|
||||
" WATCH (Voir quels utilisateurs sont en ligne)";
|
||||
};
|
||||
|
||||
help List {
|
||||
@@ -1137,7 +1170,7 @@ help Svskill {
|
||||
};
|
||||
|
||||
help Svsnoop {
|
||||
" Active ou désactive la présence des fonctions Global IRCop";
|
||||
" Active ou désactive la présence des fonctions IRCop";
|
||||
" sur le serveur en question.";
|
||||
" Doit être envoyé à travers un serveur avec U:Line.";
|
||||
" -";
|
||||
@@ -1231,9 +1264,11 @@ help Svsnline {
|
||||
" Doit être envoyé à travers un serveur avec U:Line.";
|
||||
" La raison doit être un seul paramètre c'est pour quoi";
|
||||
" les espaces sont indiqués par des _, Unreal les traduira";
|
||||
" en interne par des espaces.";
|
||||
" en interne par des espaces";
|
||||
" -";
|
||||
" Syntaxe: SVSNLINE +/- <raison_du_ban> :<realname>";
|
||||
" Syntaxe: SVSNLINE + <raison_du_ban> :<realname> (pour ajouter un ban)";
|
||||
" Syntaxe: SVSNLINE - :<realname> (pour retirer un ban)";
|
||||
" Syntaxe: SVSNLINE * (pour effacer tous les bans)";
|
||||
" Exemple: SVSNLINE + sub7_drone :*sub7*";
|
||||
};
|
||||
|
||||
@@ -1260,7 +1295,7 @@ help Svssilence {
|
||||
" Au contraire de la commande SILENCE, vous pouvez ajouter/enlever";
|
||||
" de multiple entrées sur une seule ligne.";
|
||||
" Syntaxe: SVSSILENCE <pseudo> :<paramètres silence>";
|
||||
" Exemple: SILENCE Blah :+*!*@*.com +*!*@*.bla.co.uk";
|
||||
" Exemple: SVSSILENCE Blah :+*!*@*.com +*!*@*.bla.co.uk";
|
||||
};
|
||||
|
||||
help Svssno {
|
||||
@@ -1277,7 +1312,7 @@ help Svs2sno {
|
||||
" Doit être envoyé à travers un serveur avec U:Line.";
|
||||
" -";
|
||||
" Syntaxe: SVS2SNO <pseudo> <snomasks>";
|
||||
" Exemple: SVSSNO joe +Gc";
|
||||
" Exemple: SVS2SNO joe +Gc";
|
||||
};
|
||||
|
||||
|
||||
|
||||
+37
-7
@@ -124,7 +124,7 @@ help Umodes {
|
||||
" T = Запрещает получение CTCP запросов";
|
||||
" V = Помечает клиента как пользователя WebTV";
|
||||
" W = Позволяет видеть, когда кто-то делает /WHOIS на Ваш";
|
||||
" ник (только для IRC операторов)";
|
||||
" ник (только для IRC операторов)";
|
||||
" ==---------------------------oOo---------------------------==";
|
||||
};
|
||||
|
||||
@@ -173,7 +173,8 @@ help Chmodes {
|
||||
" a <nickname> = Даёт пользователю статус администратора канала";
|
||||
" q <nickname> = Даёт пользователю статус владельца канала";
|
||||
" -";
|
||||
" b <nick!ident@host> = Накладывает 'бан' на nick!ident@host [h]";
|
||||
" b <nick!ident@host> = Накладывает 'бан' на nick!ident@host";
|
||||
" также существуют 'расширенные баны' (подробнее /HELPOP EXTBANS) [h]";
|
||||
" c = Блокирует сообщения, содержащие управляющие коды mIRC для";
|
||||
" задания цвета [o]";
|
||||
" e <nick!ident@host> = Накладывает маску исключения на 'бан' для";
|
||||
@@ -230,6 +231,33 @@ help Chmodes {
|
||||
" ==------------------------------oOo----------------------------==";
|
||||
};
|
||||
|
||||
help ExtBans {
|
||||
" Существуют следующие расширенные типы банов: ";
|
||||
" -";
|
||||
" ==-Тип---------Имя----------------------------Разъяснение-----------------------==";
|
||||
" | | Люди, попадающие под бан, могут заходить на канал, но ";
|
||||
" ~q | Тихий | не могут говорить, пока у них не будет +v или выше. ";
|
||||
" | | Пример: ";
|
||||
" | | +bb ~q:*!*@blah.blah.com ~q:nick*!*@* ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | Люди, попадающие под бан, не могут изменить ник, пока ";
|
||||
" ~n | Запрет на | у них не будет +v или выше. ";
|
||||
" | смену ника | Пример: ";
|
||||
" | | +bb ~n:*!*@*.aol.com ~n:nick*!*@* ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | Если люди сидят на указанном канале, они не смогут зайти";
|
||||
" | | Префиксом можно указать (+/%/@/&/~), каких именно ";
|
||||
" ~с | [префикс] | пользователей необходимо банить. Будут забанены те, у ";
|
||||
" | Канал | у кого права на указанном канале равны или выше. ";
|
||||
" | | Пример: +b ~c:#lamers, +e ~c:@#trusted ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | Если настоящее имя пользователя попадает под бан, ";
|
||||
" ~r | настоящее имя | он не сможет зайти. Пример: +b ~r:*Stupid_bot_script* ";
|
||||
" | | Дополнение: Подчёркивание ('_') обозначает и ";
|
||||
" | | пробел (' '), и подчёркивание ('_'). ";
|
||||
" ==------------------------------------------------------------------------------==";
|
||||
};
|
||||
|
||||
help Chmodef {
|
||||
" Режим канала +f предоставляет гибкий механизм защиты канала от флуда.";
|
||||
" Режим позволяет вам контролировать флуд команд входа, смены ника, CTCP,";
|
||||
@@ -244,7 +272,7 @@ help Chmodef {
|
||||
" ==-----Тип------Имя-------Действие-------Дополнительно-----==";
|
||||
" c CTCP +C m, M";
|
||||
" j Join +i R";
|
||||
" k Knock +k";
|
||||
" k Knock +K";
|
||||
" m Messages +m M";
|
||||
" n Nickchange +N";
|
||||
" t Text kick b";
|
||||
@@ -1225,7 +1253,7 @@ help Svskill {
|
||||
};
|
||||
|
||||
help Svsnoop {
|
||||
" Включает или отключает режим общесетевого IRC оператора";
|
||||
" Включает или отключает режим IRC оператора";
|
||||
" вне зависимости от того, позволяет это сделать указанный";
|
||||
" сервер или нет.";
|
||||
" Должно использоваться через сервер, описанный в U:Lines.";
|
||||
@@ -1321,7 +1349,9 @@ help Svsnline {
|
||||
" Указанная причина не должна содержать пробелов, сервер";
|
||||
" сам заменит на пробелы знак _";
|
||||
" -";
|
||||
" Синтаксис: SVSNLINE +/- <причина_бана> :<имя>";
|
||||
" Синтаксис: SVSNLINE + <причина_бана> :<имя> (чтобы добавить бан)";
|
||||
" SVSNLINE - :<имя> (чтобы удалить бан)";
|
||||
" SVSNLINE * (очистить все баны)";
|
||||
" Пример: SVSNLINE + sub7_drone :*sub7*";
|
||||
};
|
||||
|
||||
@@ -1348,7 +1378,7 @@ help Svssilence {
|
||||
" В отличие от команды SILENCE, вы можете добавлять/удалять";
|
||||
" несколько записей одной командой.";
|
||||
" Синтаксис: SVSSILENCE <имя> :<параметры>";
|
||||
" Пример: SILENCE Blah :+*!*@*.com +*!*@*.bla.co.uk";
|
||||
" Пример: SVSSILENCE Blah :+*!*@*.com +*!*@*.bla.co.uk";
|
||||
};
|
||||
|
||||
help Svssno {
|
||||
@@ -1365,7 +1395,7 @@ help Svs2sno {
|
||||
" Должно использоваться через сервер, описанный в U:Lines.";
|
||||
" -";
|
||||
" Синтаксис: SVS2SNO <nickname> <snomasks>";
|
||||
" Пример: SVSSNO joe +Gc";
|
||||
" Пример: SVS2SNO joe +Gc";
|
||||
};
|
||||
|
||||
|
||||
|
||||
+1347
File diff suppressed because it is too large
Load Diff
@@ -5,15 +5,15 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
|
||||
<title>Unreal 3.2 Protocol Documentation</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1 style="text-align: center;">Unreal 3.2 Protocol Documentation</h1>
|
||||
<h3 style="text-align: center;">Last update: 13 May 2006</h3>
|
||||
<h1>Table of Contents</h1>
|
||||
<p><a href="#S1">1 Introduction</a></p>
|
||||
<p><a href="#S2">2 Server Negotiation</a></p>
|
||||
<blockquote><p><a href="#S2_1">2.1 PASS - Connection Password</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_2">2.2 PROTOCTL - Server Protocol Negotiation</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_3">2.3 SERVER - Server Negotiation</a></p></blockquote>
|
||||
<body>
|
||||
<h1 style="text-align: center;">Unreal 3.2 Protocol Documentation</h1>
|
||||
<h3 style="text-align: center;">Last update: 29 November 2006</h3>
|
||||
<h1>Table of Contents</h1>
|
||||
<p><a href="#S1">1 Introduction</a></p>
|
||||
<p><a href="#S2">2 Server Negotiation</a></p>
|
||||
<blockquote><p><a href="#S2_1">2.1 PASS - Connection Password</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_2">2.2 PROTOCTL - Server Protocol Negotiation</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_3">2.3 SERVER - Server Negotiation</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_4">2.4 EOS - End Of Synch</a></p></blockquote>
|
||||
<blockquote><p><a href="#S2_5">2.5 NETINFO - Network Information</a></p></blockquote>
|
||||
<p><a href="#S3">3 User Operations</a></p>
|
||||
@@ -28,8 +28,8 @@
|
||||
<p><a href="#S1">4 Server Operations</a></p>
|
||||
<blockquote><p><a href="#S4_1">4.1 SERVER - Server Introduction</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_2">4.2 SQUIT - Server Removal</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_3">4.3 SDESC - Server Description</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_4">4.4 PING - Live Connection Query</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_3">4.3 SDESC - Server Description</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_4">4.4 PING - Live Connection Query</a></p></blockquote>
|
||||
<blockquote><p><a href="#S4_5">4.5 PONG - Live Connection Reply</a></p></blockquote>
|
||||
<p><a href="#S5">5 Channel Operations</a></p>
|
||||
<blockquote><p><a href="#S5_1">5.1 SJOIN - Channel Burst</a></p></blockquote>
|
||||
@@ -41,6 +41,7 @@
|
||||
<blockquote><p><a href="#S5_7">5.7 SAJOIN - Channel Force Join</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_8">5.8 SAPART - Channel Force Part</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_9">5.9 SAMODE - Channel Force Mode</a></p></blockquote>
|
||||
<blockquote><p><a href="#S5_10">5.10 TOPIC - Chanel Topic</a></p></blockquote>
|
||||
<p><a href="#S6">6 Services Commands</a></p>
|
||||
<blockquote><p><a href="#S6_1">6.1 SVSKILL - Force Disconnect by Service</a></p></blockquote>
|
||||
<blockquote><p><a href="#S6_2">6.2 SVSMODE, SVS2MODE - Force User Mode Change</a></p></blockquote>
|
||||
@@ -66,9 +67,9 @@
|
||||
<blockquote><blockquote><p><a href="#S8_1_1">8.1.1 GLINE - Network-wide user@host ban</a></p></blockquote></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_2">8.1.2 GZLINE - Network-wide IP ban</a></p></blockquote></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_3">8.1.3 SQLINE, UNSQLINE - Network-wide Nickname ban</a></p></blockquote></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_4">8.1.4 SPAMFILTER - Message Spam Filtration System</a></p></blockquote></blockquote>
|
||||
<p><a href="#S9">9 Base64 Tables</a></p>
|
||||
<blockquote><p><a href="#S9_1">9.1 Table for SJB64 (NICK and SJOIN).</a></p></blockquote>
|
||||
<blockquote><blockquote><p><a href="#S8_1_4">8.1.4 SPAMFILTER - Message Spam Filtration System</a></p></blockquote></blockquote>
|
||||
<p><a href="#S9">9 Base64 Tables</a></p>
|
||||
<blockquote><p><a href="#S9_1">9.1 Table for SJB64 (NICK and SJOIN).</a></p></blockquote>
|
||||
<blockquote><p><a href="#S9_2">9.2 Table for NICKIP.</a></p></blockquote>
|
||||
<hr/>
|
||||
<h1><a name="S1"></a>1 Introduction</h1>
|
||||
@@ -83,7 +84,7 @@
|
||||
<p><b>Syntax:</b> <tt>PASS :<i>link password</i></tt></p>
|
||||
<p>The PASS command is used to transmit the password required for a server link. It must match the password specified in the remote server's link::password-receive (which can be crypted), otherwise the link will be rejected. This should be the first message sent.</p>
|
||||
<h2><a name="S2_2"></a>2.2 PROTOCTL - Server Protocol Negotiation</h2>
|
||||
<p><b>Syntax:</b> <tt>PROTOCTL :<i>protocol options</i></tt></p>
|
||||
<p><b>Syntax:</b> <tt>PROTOCTL <i>protocol options</i></tt></p>
|
||||
<p>The PROTOCTL command sets several protocol options. The tokens supported are listed below.</p>
|
||||
<ul>
|
||||
<li>NOQUIT : When a netsplit occurs, only send a SQUIT message for each server lost. This server will assume that clients on these servers were also lost and will send the appropriate QUIT messages to local clients and to any non-NOQUIT servers.</li>
|
||||
@@ -93,16 +94,16 @@
|
||||
<li>SJOIN : Supports SJOIN version 1 which is no longer in use. Use with SJ3.</li>
|
||||
<li>SJOIN2 : Supports SJOIN version 2 which is no longer in use. Use with SJ3.</li>
|
||||
<li>UMODE2 : Supports the UMODE2 command, which is a shortened version of MODE for usermode changes.</li>
|
||||
<li>VL : Supports V:Line information. Extends the SERVER message to include version information used in deny version{} blocks. Note that this is assumed - unreal will always send it's own version information.</li>
|
||||
<li>VL : Supports V:Line information. Extends the SERVER message to include version information used in deny version{} blocks. Note that this is assumed - unreal will always send its own version information.</li>
|
||||
<li>SJ3 : Supports SJOIN version 3.</li>
|
||||
<li>NS : Supports server numerics which provides a shorthand for server names. In any circumstance where a :server.name is permitted (the server is the message's real source), @servernumeric may be used instead. In addition, the server.name parameter in the NICK message may be simply the server's numeric. Requires VL support.</li>
|
||||
<li>SJB64 : Timestamps in NICK and SJOIN are expressed in base64 rather than base10.</li>
|
||||
<li>TKLEXT : Supports exntended TKL messages for spamfilter support.</li>
|
||||
<li>NICKIP : Adds an IP parameter to the NICK message, which is the base64 encoding of the user's ip address (in network byte order). Requires NICKv2.</li>
|
||||
<li>NICKCHARS : Indicates the set of enabled nickchar options (see the regular documention for info about this).</li>
|
||||
<li>CHANMODES : (Not required to be sent) This is the same as the CHANMODES value in the 005 for client connections. Useful for autodetecting things like what modes are valid for ChanServ MLOCK, for example.</li>
|
||||
<li>CHANMODES : (Not required to be sent) This is the same as the CHANMODES value in the 005 for client connections. Useful for autodetecting things like what modes are valid for ChanServ MLOCK, for example.</li>
|
||||
<li>CLK : Supports an extra field in NICK for sending the cloaked host (not vhost).</li>
|
||||
</ul>
|
||||
</ul>
|
||||
<p>The syntax examples here follow the conventions for TOKEN and also NS in cases of server-only messages.</p>
|
||||
<h2><a name="S2_3"></a>2.3 SERVER - Server Negotiation</h2>
|
||||
<p><b>Note:</b> This message is also used for introducing additional servers, the format of this message in those cases is described later.</p>
|
||||
@@ -112,7 +113,9 @@
|
||||
<p>The literal 1 in the parameter list is the hopcount parameter. Since you are a direct link, your own hopcount will be 1.</p>
|
||||
<p>The server.name is the same as that in the remote server's link:: block. When received from unreal servers, this will be the value of that server's me::name. The protocol version is the numeric protocol version (2306 for example), and the protocol flags are the server's compilation flags (described below). These two fields are checked against the deny version {} blocks in the remote server's configuration. A value of 0 for either field prevents deny version{} checking for that field. The server description can be anything. When received from unreal servers, it'll be the value of me::description.</p>
|
||||
<p>The following version numbers have been used previously:</p>
|
||||
<ul>
|
||||
<ul>
|
||||
<li>2309 - Unreal 3.2.6</li>
|
||||
<li>2308 - Unreal 3.2.5</li>
|
||||
<li>2307 - Unreal 3.2.4</li>
|
||||
<li>2306 - Unreal 3.2.3</li>
|
||||
<li>2305 - Unreal 3.2.2</li>
|
||||
@@ -149,21 +152,23 @@
|
||||
</ul>
|
||||
<h2><a name="S2_4"></a>2.4 EOS - End Of Synch (TOKEN: ES)</h2>
|
||||
<p><b>Syntax:</b> ES</p>
|
||||
<p>Marks the end of the synching process. This is really optionally, but it might be a good idea to send it anyway when you really are done synching.</p>
|
||||
<p>Marks the end of the synching process. This is really optional, but it might be a good idea to send it anyway when you really are done synching. Once you send this, unreal will announce "Client connecting" or "Client exiting" notices (to those with snomask +F) for users (unless your server is U:Lined), and joins will be counted toward channel flood controls (chanmode +f).</p>
|
||||
<p>Sending EOS only marks your server as synched, but does not do so for servers behind you. EOS would need to be sent on those servers' behalf as well.</p>
|
||||
<h2><a name="S2_5"></a>2.5 NETINFO - Network Information (TOKEN: AO)</h2>
|
||||
<p><b>Syntax:</b> AO <i>maxglobal</i> <i>currenttime</i> <i>protocolversion</i> <i>cloakhash</i> 0 0 0 :<i>networkname</i></p>
|
||||
<p>This tells the other server your current network configuration. The max global is the highest number of concurrent users network-wide that this server has seen. The current time is a timestamp value. Protocolversion is the same as that in the SERVER command. Cloakhash is a hash representing the configured cloak keys. It may be a * if you are implementing services. The network name is that specified in set::network-name. The cloak-prefix is currently not sent here (and thus unreal won't generate warning for mismatching cloak prefixes, but they should be the same anyway).</p>
|
||||
<p>It is NETINFO, not EOS, that triggers the "Link bla bla bla is now synched" notices, but NETINFO does not imply synching is actually complete (see EOS).</p>
|
||||
<hr/>
|
||||
<h1><a name="S3"></a>3 User Operations</h1>
|
||||
<p>One important function of servers is it must notify all other servers about all of the users behind it. These commands represent the operations that can result in the change of a user's global state.</p>
|
||||
<h2><a name="S3_1"></a>3.1 NICK - User Introduction and Nick Change (TOKEN: &)</h2>
|
||||
<p><b>Syntax (nick change):</b> <tt>:<i>oldnick</i> & <i>newnick</i> :<i>timestamp</i></tt></p>
|
||||
<p>This format of the NICK message indicates an existing user is changing his or her nickname. If a collision occurs, see the section on Nick Collisions below. The timestamp is the new nickname's timestamp.</p>
|
||||
<p><b>Syntax (normal):</b> <tt>:<i>source.server</i> & <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2):</b> <tt>:<i>source.server</i> & <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2+CLK):</b> <tt>:<i>source.server</i> & <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>cloakhost</i> :<i>realname</i></tt>
|
||||
<p><b>Syntax (NICKv2+NICKIP):</b> <tt>:<i>source.server</i> & <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>nickipaddr</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2+NICKIP+CLK):</b> <tt>:<i>source.server</i> & <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>cloakhost</i> <i>nickipaddr</i> :<i>realname</i></tt>
|
||||
<p><b>Syntax (normal):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2+CLK):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>cloakhost</i> :<i>realname</i></tt>
|
||||
<p><b>Syntax (NICKv2+NICKIP):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>nickipaddr</i> :<i>realname</i></tt></p>
|
||||
<p><b>Syntax (NICKv2+NICKIP+CLK):</b> <tt>& <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>servicestamp</i> <i>+usermodes</i> <i>virtualhost</i> <i>cloakhost</i> <i>nickipaddr</i> :<i>realname</i></tt>
|
||||
<p><b>Note:</b> Because each server normally does its own cloak generation, Unreal does not expect to receive NICK messages with the CLK info, so do not send it. It will send this info to a server it has received a PROTOCTL CLK from however.</p>
|
||||
<p>This format of the NICK message introduces a new user to the network. If PROTOCTL VHP is enabled, the user's cloaked host is put in the virtualhost field, otherwise it'll be * unless the user is +t. With the addition of CLK, VHP is no longer necessary for determining the cloak host.</p>
|
||||
<h3><a name="S3_1_1"></a>3.1.1 Nick Collisions</h3>
|
||||
@@ -214,17 +219,17 @@
|
||||
<h2><a name="S4_3"></a>4.3 SDESC - Server Description (TOKEN: AG)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> AG :<i>newdesc</i></tt></p>
|
||||
<p>The server to which source is connected to should have it's description updated to newdesc. This does NOT include the VL inforamtion.</p>
|
||||
<h2><a name="S4_4">4.4 PING - Live Connection Query (TOKEN: 8)</a></h2>
|
||||
<p><b>Syntax:</b> <tt>8 <i>source</i>[ :<i>destination</i>]</tt></p>
|
||||
<p>Used to check if a connection is still live if it has been "quiet" for a certain amount of time. Typically, unreal will send PING requests at intervals determined by the class::pingfreq setting. PINGs originating from the direct uplink will use the token, but it seems PINGs originating from a distant server will not.</p>
|
||||
<p>The response to a PING is sent with the <a href="#S4_5">PONG</a> command.</p>
|
||||
<p>When receiving a two-parameter PING, the second parameter is the target. If the target isn't you, you can either reply on behalf of that target (using its name instead of yours), or if there is a real connection representing the target, forward the PING to the target.</p>
|
||||
<h2><a name="S4_5">4.5 PONG - Live Connection Reply (TOKEN: 9)</a></h2>
|
||||
<p><b>Syntax:</b> <tt>9 <i>source</i>[ :<i>destination</i>]</tt></p>
|
||||
<h2><a name="S4_4">4.4 PING - Live Connection Query (TOKEN: 8)</a></h2>
|
||||
<p><b>Syntax:</b> <tt>8 <i>source</i>[ :<i>destination</i>]</tt></p>
|
||||
<p>Used to check if a connection is still live if it has been "quiet" for a certain amount of time. Typically, unreal will send PING requests at intervals determined by the class::pingfreq setting. PINGs originating from the direct uplink will use the token, but it seems PINGs originating from a distant server will not.</p>
|
||||
<p>The response to a PING is sent with the <a href="#S4_5">PONG</a> command.</p>
|
||||
<p>When receiving a two-parameter PING, the second parameter is the target. If the target isn't you, you can either reply on behalf of that target (using its name instead of yours), or if there is a real connection representing the target, forward the PING to the target.</p>
|
||||
<h2><a name="S4_5">4.5 PONG - Live Connection Reply (TOKEN: 9)</a></h2>
|
||||
<p><b>Syntax:</b> <tt>9 <i>source</i>[ :<i>destination</i>]</tt></p>
|
||||
<p>Used to respond to a <a href="#S4_4">PING</a> query.</p>
|
||||
<p><b>Responding to a ping:</b> Once a PING is received, you usually have an amount of time to respond equal to your class::pingfreq. The correct response will always have two parameters. If you received one parameter, then the received parameter becomes the second parameter of your response, and the first parameter is your server name. If you received two parameters, the response returns both parameters in reverse order.</p>
|
||||
<p>For example, the response to <tt>8 uplink.server</tt> is <tt>9 my.name uplink.server</tt>, while the response to <tt>PING distant.server your.server</tt> is <tt>9 your.server distant.server</tt>. Unreal typically includes a : prior to the last parameter. This isn't required if that parameter contains no spaces, but it is especially important to not include the colon when reversing the parameters, or else Unreal mistake it for a single-parameter PONG.
|
||||
<p>If a two-parameter PONG is received, the second parameter names the target. If the target is not you, and a real connection represents that target, you should forward the PONG message via that connection.</p>
|
||||
<p><b>Responding to a ping:</b> Once a PING is received, you usually have an amount of time to respond equal to your class::pingfreq. The correct response will always have two parameters. If you received one parameter, then the received parameter becomes the second parameter of your response, and the first parameter is your server name. If you received two parameters, the response returns both parameters in reverse order.</p>
|
||||
<p>For example, the response to <tt>8 uplink.server</tt> is <tt>9 my.name uplink.server</tt>, while the response to <tt>PING distant.server your.server</tt> is <tt>9 your.server distant.server</tt>. Unreal typically includes a : prior to the last parameter. This isn't required if that parameter contains no spaces, but it is especially important to not include the colon when reversing the parameters, or else Unreal mistake it for a single-parameter PONG.
|
||||
<p>If a two-parameter PONG is received, the second parameter names the target. If the target is not you, and a real connection represents that target, you should forward the PONG message via that connection.</p>
|
||||
<hr/>
|
||||
<h1><a name="S5"></a>5 Channel Operations</h1>
|
||||
<p>These commands deal with the state of channels across the network. Unreal only supports Network Channels, where the first character is a # character.</p>
|
||||
@@ -275,6 +280,9 @@
|
||||
<h2><a name="S5_9"></a>5.9 SAMODE - Channel Force Mode (TOKEN: o)</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> o <i>#channel</i> <i>modechange</i> <i>modeparams</i></tt></p>
|
||||
<p>This has the same parameters as for MODE. The only difference is that servers probably will never receive this (but is best to document just in case), and that absolutely NO permission checking is done on anything.</p>
|
||||
<h2><a name="S5_10"></a>5.10 TOPIC - Channel Topic (TOKEN: ) )</h2>
|
||||
<p><b>Syntax:</b> <tt>:<i>source</i> ) <i>#channel</i> <i>nick</i> <i>timestamp</i> :<i>topic</i></p>
|
||||
<p>Changes the channel topic information. This format is used when synching, as well as when a topic is changed normally. Nick is the user who changed the topic (depending on compile options, it can be just nick or a full nick!user@host), timestamp is when the change occured, and topic is the new topic text. Normally, only a newer timestamp will actually change the topic, but a U:Lined server can use an older timestamp as well (such as for TOPICLOCK).
|
||||
<hr/>
|
||||
<h1><a name="S6"></a>6 Services Commands</h1>
|
||||
<p>These are commands typically employed by a service implementation, in addition to some of the normal commands. All of the commands listed here require the sender to be correctly U:Lined. This means that the services server name must appear within a ulines {} block in the unrealircd.conf configuration for ALL servers in the network. All servers and clients behind a U:Lined server are themselves U:Lined.</p>
|
||||
@@ -386,62 +394,62 @@
|
||||
<p>Proper use of spamfilter in TKL commands requires use of PROTOCTL TKLEXT, which increases the number of parameters allowed in TKL.</p>
|
||||
<p><b>Add Syntax (TKL):</b> <tt>BD + F <i>target(s)</i> <i>action</i> <i>source</i> 0 <i>settimestamp</i> <i>tklduration</i> <i>tklreason</i> :<i>regex</i></tt></p>
|
||||
<p><b>Remove Syntax (TKL):</b> <tt>BD - F <i>target(s)</i> <i>action</i> <i>source</i> 0 <i>settimestap</i> :<i>regex</i></tt></p>
|
||||
<p>Adds and Removes network-wide spamfilters. The SPAMFILTER command itself must not be used. See <a href="http://vulnscan.org/UnrealIrcd/unreal32docs.html#feature_spamfilter">http://vulnscan.org/UnrealIrcd/unreal32docs.html#feature_spamfilter</a> for a list of valid targets. For actions, a single character is used to identify the action to be taken:</p>
|
||||
<ul>
|
||||
<li>K (kill) - The user is simply disconnected, with the reason given.</li>
|
||||
<li>S (tempshun) - A temporary shun is placed on the user. This shun is applied only to that user, and disappears if the user reconnects.</li>
|
||||
<li>s (shun) - A regular shun on the user's IP address is added. This causes all users with the same hostname to be shunned, but they will also stay shunned if they reconnect.</li>
|
||||
<li>k (kline) - A K:Line is added on the user's IP address.</li>
|
||||
<li>z (zline) - A Z:Line is added on the user's IP address.</li>
|
||||
<li>g (gline) - A G:Line is added on the user's IP address.</li>
|
||||
<li>Z (gzline) - A Global Z:Line is added on the user's IP address.</li>
|
||||
<li>b (block) - Messages (or users!) matching the filter are simply blocked.</li>
|
||||
<li>d (dccblock) - The user is prevented from sending files using DCC for the remainder of his session (in other words, until he quits).</li>
|
||||
<li>v (viruschan) - User is removed from all channels, joined to the viruschan as defined in conf, and cannot message anything but that channel.</li>
|
||||
<li>w (warn) - No action on the user is taken. Only the Spamfilter notice is sent to opers with snomask +S.</li>
|
||||
<p>Adds and Removes network-wide spamfilters. The SPAMFILTER command itself must not be used. See <a href="http://vulnscan.org/UnrealIrcd/unreal32docs.html#feature_spamfilter">http://vulnscan.org/UnrealIrcd/unreal32docs.html#feature_spamfilter</a> for a list of valid targets. For actions, a single character is used to identify the action to be taken:</p>
|
||||
<ul>
|
||||
<li>K (kill) - The user is simply disconnected, with the reason given.</li>
|
||||
<li>S (tempshun) - A temporary shun is placed on the user. This shun is applied only to that user, and disappears if the user reconnects.</li>
|
||||
<li>s (shun) - A regular shun on the user's IP address is added. This causes all users with the same hostname to be shunned, but they will also stay shunned if they reconnect.</li>
|
||||
<li>k (kline) - A K:Line is added on the user's IP address.</li>
|
||||
<li>z (zline) - A Z:Line is added on the user's IP address.</li>
|
||||
<li>g (gline) - A G:Line is added on the user's IP address.</li>
|
||||
<li>Z (gzline) - A Global Z:Line is added on the user's IP address.</li>
|
||||
<li>b (block) - Messages (or users!) matching the filter are simply blocked.</li>
|
||||
<li>d (dccblock) - The user is prevented from sending files using DCC for the remainder of his session (in other words, until he quits).</li>
|
||||
<li>v (viruschan) - User is removed from all channels, joined to the viruschan as defined in conf, and cannot message anything but that channel.</li>
|
||||
<li>w (warn) - No action on the user is taken. Only the Spamfilter notice is sent to opers with snomask +S.</li>
|
||||
</ul>
|
||||
<h1><a name="S9">9 Base64 Tables</a></h1>
|
||||
<p>Unreal uses base64 encoding to allow saving bandwidth by encoding numbers in a more compact format. Unreal uses two different variations of base64, one used for the SJB64 PROTOCTL option (in NICK and SJOIN), and one used for NICKIP.</p>
|
||||
<h2><a name="S9_1">9.1 Table for SJB64 (NICK and SJOIN).</a></h2>
|
||||
<p>In NICK and SJOIN, remember that the timestamp will be prefixed with ! to signal a base64 timestamp.</p>
|
||||
<p>Just like in base10, the least significant "digit" is last.</p>
|
||||
<pre> 0 0 17 H 34 Y 51 p
|
||||
1 1 18 I 35 Z 52 q
|
||||
2 2 19 J 36 a 53 r
|
||||
3 3 20 K 37 b 54 s
|
||||
4 4 21 L 38 c 55 t
|
||||
5 5 22 M 39 d 56 u
|
||||
6 6 23 N 40 e 57 v
|
||||
7 7 24 O 41 f 58 w
|
||||
8 8 25 P 42 g 59 x
|
||||
9 9 26 Q 43 h 60 y
|
||||
10 A 27 R 44 i 61 z
|
||||
11 B 28 S 45 j 62 {
|
||||
12 C 29 T 46 k 63 }
|
||||
13 D 30 U 47 l
|
||||
14 E 31 V 48 m
|
||||
15 F 32 W 49 n
|
||||
16 G 33 X 50 o</pre>
|
||||
<h2><a name="S9_2">9.2 Table for NICKIP.</a></h2>
|
||||
<p>In this table, the IP is encoded in network byte order. In terms of IPs, this means the first byte of the address really is first. Each "digit" in the base64 encoded IP corresponds to 6 bits of the IP address.</p>
|
||||
<p>An IPv4 address is 32 bits, so 6 base64 "digits" are needed. Since base64 requires values to come in multiples of 4 "digits", padding characters (=) need to be added if a value comes up short. In the case of IPv4 addresses, two are needed.</p>
|
||||
<p>IPv6 addresses are 128-bit. They therefore need 22 base64 "digits" plus 2 pad characters.</p>
|
||||
<pre> 0 A 17 R 34 i 51 z
|
||||
1 B 18 S 35 j 52 0
|
||||
2 C 19 T 36 k 53 1
|
||||
3 D 20 U 37 l 54 2
|
||||
4 E 21 V 38 m 55 3
|
||||
5 F 22 W 39 n 56 4
|
||||
6 G 23 X 40 o 57 5
|
||||
7 H 24 Y 41 p 58 6
|
||||
8 I 25 Z 42 q 59 7
|
||||
9 J 26 a 43 r 60 8
|
||||
10 K 27 b 44 s 61 9
|
||||
11 L 28 c 45 t 62 +
|
||||
12 M 29 d 46 u 63 /
|
||||
13 N 30 e 47 v
|
||||
14 O 31 f 48 w (pad) =
|
||||
15 P 32 g 49 x
|
||||
16 Q 33 h 50 y</pre>
|
||||
<h1><a name="S9">9 Base64 Tables</a></h1>
|
||||
<p>Unreal uses base64 encoding to allow saving bandwidth by encoding numbers in a more compact format. Unreal uses two different variations of base64, one used for the SJB64 PROTOCTL option (in NICK and SJOIN), and one used for NICKIP.</p>
|
||||
<h2><a name="S9_1">9.1 Table for SJB64 (NICK and SJOIN).</a></h2>
|
||||
<p>In NICK and SJOIN, remember that the timestamp will be prefixed with ! to signal a base64 timestamp.</p>
|
||||
<p>Just like in base10, the least significant "digit" is last.</p>
|
||||
<pre> 0 0 17 H 34 Y 51 p
|
||||
1 1 18 I 35 Z 52 q
|
||||
2 2 19 J 36 a 53 r
|
||||
3 3 20 K 37 b 54 s
|
||||
4 4 21 L 38 c 55 t
|
||||
5 5 22 M 39 d 56 u
|
||||
6 6 23 N 40 e 57 v
|
||||
7 7 24 O 41 f 58 w
|
||||
8 8 25 P 42 g 59 x
|
||||
9 9 26 Q 43 h 60 y
|
||||
10 A 27 R 44 i 61 z
|
||||
11 B 28 S 45 j 62 {
|
||||
12 C 29 T 46 k 63 }
|
||||
13 D 30 U 47 l
|
||||
14 E 31 V 48 m
|
||||
15 F 32 W 49 n
|
||||
16 G 33 X 50 o</pre>
|
||||
<h2><a name="S9_2">9.2 Table for NICKIP.</a></h2>
|
||||
<p>In this table, the IP is encoded in network byte order. In terms of IPs, this means the first byte of the address really is first. Each "digit" in the base64 encoded IP corresponds to 6 bits of the IP address.</p>
|
||||
<p>An IPv4 address is 32 bits, so 6 base64 "digits" are needed. Since base64 requires values to come in multiples of 4 "digits", padding characters (=) need to be added if a value comes up short. In the case of IPv4 addresses, two are needed.</p>
|
||||
<p>IPv6 addresses are 128-bit. They therefore need 22 base64 "digits" plus 2 pad characters.</p>
|
||||
<pre> 0 A 17 R 34 i 51 z
|
||||
1 B 18 S 35 j 52 0
|
||||
2 C 19 T 36 k 53 1
|
||||
3 D 20 U 37 l 54 2
|
||||
4 E 21 V 38 m 55 3
|
||||
5 F 22 W 39 n 56 4
|
||||
6 G 23 X 40 o 57 5
|
||||
7 H 24 Y 41 p 58 6
|
||||
8 I 25 Z 42 q 59 7
|
||||
9 J 26 a 43 r 60 8
|
||||
10 K 27 b 44 s 61 9
|
||||
11 L 28 c 45 t 62 +
|
||||
12 M 29 d 46 u 63 /
|
||||
13 N 30 e 47 v
|
||||
14 O 31 f 48 w (pad) =
|
||||
15 P 32 g 49 x
|
||||
16 Q 33 h 50 y</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -2,6 +2,7 @@ VL Information (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
|
||||
|
||||
Protocol Version
|
||||
------------------------------------------------------------------------------------------------
|
||||
2309 3.2.6
|
||||
2308 3.2.5
|
||||
2307 3.2.4
|
||||
2306 3.2.3
|
||||
|
||||
+33
-18
@@ -24,13 +24,13 @@
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
<a href="unreal32docs.nl.html">Dutch</a> |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</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.5 </font><br>
|
||||
<b>Letztes Update dieses Handbuchs:</b> 2006-06-15</div>
|
||||
<font size="4">Version: 3.2.6 </font><br>
|
||||
<b>Letztes Update dieses Handbuchs:</b> 2006-12-22</div>
|
||||
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Contributors:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
<b>Dokumentation</b><b>:</b> CKnight^ / Syzop<br>
|
||||
@@ -183,7 +183,7 @@ Upgrade von 3.2 Versionen</a></b></font><br>
|
||||
<p>Der empfohlene Weg für ein Upgrade ist:<br>
|
||||
Linux:<br>
|
||||
<ul>
|
||||
<li>Altes UnrealIRCd Verzeichnis umbenennen (oder es wird im nächsten Schritt
|
||||
<li>Altes UnrealIRCd Verzeichnis umbenennen (ansonsten wird es im nächsten Schritt
|
||||
überschrieben)
|
||||
<li>Neue UnrealIRCd Version entpacken und "./Config" und "make"
|
||||
laufen lassen (*NIX).
|
||||
@@ -208,9 +208,9 @@ Bug gemeldet wird!</p></div>
|
||||
<li><b>*NIX Versionen:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9,10)
|
||||
</ul>
|
||||
<li><b>Windows Versionen:</b>
|
||||
@@ -2324,7 +2324,7 @@ angegebenen abgelehnt.<br>
|
||||
haben oder nicht haben darf. Die Flags müssen direkt nacheinander ohne
|
||||
Zwischenräume angegeben sein. Wird einem Zeichen ein "!"
|
||||
vorangestellt, darf der Server dieses Flag nicht haben, steht kein "!"
|
||||
davor, so muss der Server dieses Flag haben, um vom Linken ausgeschlossen zu
|
||||
davor, muss der Server dieses Flag haben, um vom Linken ausgeschlossen zu
|
||||
sein.</p>
|
||||
</div>
|
||||
<p><font class="block_section"><a name="denylinkblock">4.24 - </a> </font><a name="denylinkblock"><font class="block_name">Deny Link Block</font>
|
||||
@@ -2608,19 +2608,23 @@ wie bei "password-connect".
|
||||
</p>
|
||||
<p><b>hub oder leaf</b><br>
|
||||
Zu einem hub sind mehrere Server verbunden, ein leaf hat immer nur eine
|
||||
Verbindung. Ein Server ist entweder ein hub oder ein leaf - die beiden Optionen
|
||||
können nicht kombiniert werden.
|
||||
Verbindung. Ein Server ist solange ein leaf, wie es keine hub Anweisung gibt.
|
||||
Ebenso ist er ein leaf, wenn in der Anweisung lediglich * definiert ist oder die
|
||||
leaf Tiefe (Anzahl der hops) 1 ist.
|
||||
</p>
|
||||
<p><b>hub</b> (optional)<br>
|
||||
Der Wert ist eine Maske, auf welche Server dieser hub connecten darf (z.B.: *.my.net).
|
||||
</p>
|
||||
<p><b>leaf</b> (optional)<br>
|
||||
Der Wert ist eine Maske, dass dieser Server wie ein leaf in Richtung zum eigenen
|
||||
Server fungiert.
|
||||
Dieser Wert gibt an, zu welchen Servern dieser Hub <b>nicht</b> verbindet. Hier
|
||||
einen * anzugeben ist das selbe, wie keine hub Anweisung zu haben.
|
||||
</p>
|
||||
<p><b>leaf-depth</b> (optional)<br>
|
||||
Falls dies angegeben ist, sollte auch "leaf" angegeben sein. Angegeben
|
||||
wird die Tiefe (Anzahl der hops) die dieser Server darunter haben darf.
|
||||
Dieser Wert gibt die Tiefe (Anzahl der hops)an, die dieser Server darunter haben darf.
|
||||
Beispielsweise bedeutet 1, dass der Server keine Links hat (ist ein leaf), 2
|
||||
bedeutet, es kann zu Servern gelinkt werden, aber diese können zu keinem
|
||||
anderen linken (dieser Hub kann also nur zu leafs linken). Ein Wert von 0
|
||||
bedeutet, dass es kein Limit gibt und das ist auch Default.
|
||||
</p>
|
||||
<p><b>class</b><br>
|
||||
Die Klasse, in die der Server kommt, oft ist eine eigene Klasse für Server
|
||||
@@ -3030,7 +3034,7 @@ Wird hier nichts angegeben, k
|
||||
Angabe von '*' keines. Es dürfen nur <b> kurze Operflags</b> angegeben werden.</p>
|
||||
<p><b>set::oper-only-stats {<stats-flag>; <stats-flag>;};</b><br>
|
||||
Definiert eine Liste von Stats Flags, die nur von Opers benutzt werden können.
|
||||
In dieser Syntax dürfen nur <b>lange Operflags</b> angegeben wwerden.</p>
|
||||
In dieser Syntax dürfen nur <b>lange Operflags</b> angegeben werden.</p>
|
||||
<p><font class="set">set::maxchannelsperuser <amount-of-channels>;</font><br>
|
||||
Einstellung, in wie vielen Channels ein User gleichzeitig sein darf.</p>
|
||||
<p><b>set::maxdccallow <amount-of-entries>;</b><br>
|
||||
@@ -3089,12 +3093,13 @@ Oper Zugriff geloggt wurde.</p>
|
||||
Ein Wert, der angibt, innerhalb welcher Zeit ein DNS Server zu antworten hat, bevor
|
||||
"timeout" gemeldet wird. Der Zeitwert ist ein numerischer String, in
|
||||
dem 'd' Tage bedeutet, 'h' Sunden, 'm' Minuten und 's' Sekunden. Beispiel: '1d2h3m'
|
||||
bedeutet 1 Tag, 2 Stunden, 3 Minuten.</p>
|
||||
bedeutet 1 Tag, 2 Stunden, 3 Minuten. (NICHT IMPLEMENTIERT)</p>
|
||||
<p><font class="set">set::dns::retries <number-of-retries>;</font><br>
|
||||
Ein Zahlenwert, durch den festgelegt wird, wie oft versucht werden soll, die DNS
|
||||
aufzulösen, bevor ein Fehler gemeldet wird.</p>
|
||||
aufzulösen, bevor ein Fehler gemeldet wird. (NICHT IMPLEMENTIERT)</p>
|
||||
<p><font class="set">set::dns::nameserver <name-of-dns-server>;</font><br>
|
||||
Gibt den Hostnamen des Servers an, der zur DNS Namensauflösungen dient.</p>
|
||||
Gibt den Hostnamen des Servers an, der zur DNS Namensauflösungen dient. (NICHT
|
||||
IMPLEMENTIERT)</p>
|
||||
<p><font class="set">set::network-name <name-of-network>;</font><br>
|
||||
Gibt den Namen des Netzwerks an, in dem der Server läuft (also den Namen des
|
||||
irc Netzes!) Dieser Eintrag sollte auf allen Servern im Netzwerk absolut
|
||||
@@ -3237,7 +3242,17 @@ Antwort gewinnt.</p>
|
||||
Maximale Zeit, die auf eine Zeitserverantwort gewartet wird. Möglich ist ein
|
||||
Wert von 1 bis 5, mehr ist nicht möglich, weil das Ergebnis sonst zu ungenau
|
||||
wäre. Default Einstellung ist hier 3 und normalerweise sollte es keinen Grund
|
||||
geben, dies zu ändern. </div>
|
||||
geben, dies zu ändern.
|
||||
<p><font class="set">set::pingpong-warning<yes|no></font><br>
|
||||
Die Versuche von Name-Servern einen falschen Hostnamen zurückzuliefern, werden
|
||||
Spoofing (Reinlegen) genannt. Um sich davor zu schützen, kann der Resolver so
|
||||
konfiguriert werden, daß er überprüft, ob die gegebene IP-Adresse auch
|
||||
tatsächlich zum erhaltenen Hostnamen gehört. Wenn dies nicht der Fall ist,
|
||||
wird der Name verworfen und ein Fehler zurückgeliefert. Dieses Verhalten wird
|
||||
mit nospoof on eingestellt. Wenn NOSPOOF aktiviert ist (üblicherweise in
|
||||
Windows), wird aene Warnung an jeden User geschickt, '/quote pong ..' zu
|
||||
benutzen, wenn es beim Verbinden Probleme gibt. Voreingestellt ist 'no'.</p>
|
||||
</div>
|
||||
<p><b><font size="+2"><a name="addtlfiles">5 – Additional Files</a></font></b></p><div class="desc">
|
||||
Zusätzlich zu den Konfigurationsdateien hat Unreal einige weitere Dateien,
|
||||
wie MOTD, OperMOTD, BotMOTD, und Rules. In der nachfolgenden Liste stehen die
|
||||
|
||||
+15
-11
@@ -27,12 +27,12 @@ Spanish |
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
<a href="unreal32docs.nl.html">Dutch</a> |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</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">Versión: 3.2.5</font><br>
|
||||
<b>Última actualización del documento:</b> 15-06-2006</div>
|
||||
<font size="4">Versión: 3.2.6</font><br>
|
||||
<b>Última actualización del documento:</b> 22-12-2006</div>
|
||||
<br>
|
||||
<b>Programadores:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Contribuciones:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
@@ -191,9 +191,9 @@ Windows:<br>
|
||||
<li><b>Versiones *NIX:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9, 10)
|
||||
</ul>
|
||||
<li><b>Versiones Windows:</b>
|
||||
@@ -1873,14 +1873,16 @@ link <nombre-servidor> {
|
||||
<p><b>password-receive</b><br>
|
||||
Es la contraseña para validar uniones entrantes y puede ser encriptada (métodos crypt, md5, sha1 y ripemd-160). Puede dejarlo como texto plano. Generalmente es el mismo que la contraseña anterior.</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
Un hub es un servidor con varios servidores unidos a él. Un leaf sólo tiene una unión, a su servidor. Un servidor o es un hub o un leaf, nunca ambos.</p>
|
||||
Un hub es un servidor con varios servidores unidos a él. Un leaf sólo tiene una unión, a su servidor.
|
||||
Un servidor se considera leaf si no tiene la directriz hub. También es leaf si la directriz leaf es *, o leafdepth es 1.</p>
|
||||
<p><b>hub</b> (opcional)<br>
|
||||
Este valor es la máscara de los servidores a los que puede conectar (ej: *.mi.red).</p>
|
||||
<p><b>leaf</b> (opcional)<br>
|
||||
Este valor es la máscara que este servidor actuará como leaf.towards.
|
||||
Este valor es una máscara de los servidores que este hub <b>no</b> conectará. Usando * es lo mismo que no usar ninguna directriz hub.
|
||||
</p>
|
||||
<p><b>leaf-depth</b> (opcional)<br>
|
||||
Si se especifica, la directriz leaf también debe especificarse. Este valor es la profundidad o número de uniones que puede tener.</p>
|
||||
Este valor especifica la profunidad (número de saltos) que este server puede alojar. Por ejemplo, 1 significa que el servidor no puede tener ningún link por debajo de él (un leaf), 2 significa que puede tener servidores linkados pero estos no pueden tener a su vez más servidores linkados por debajo suyo.
|
||||
Un valor de 0 significa que no hay límite, es el parámetro por defecto.</p>
|
||||
<p><b>class</b><br>
|
||||
Es la clase a la se relacionará este servidor, generalmente la clase server.</p>
|
||||
<p><b>compression-level</b> (opcional)<br>
|
||||
@@ -2228,11 +2230,11 @@ set {
|
||||
<p><font class="set">set::options::fail-oper-warn;</font><br>
|
||||
Si está presente, se notificará al usuario de que su intento de /oper ha fallado y se ha logueado.</p>
|
||||
<p><font class="set">set::dns::timeout <timevalue>;</font><br>
|
||||
Tiempo de espera del servidor DNS si no obtiene respuesta. Si el valor es una cadena alfanumérica, use d para días, h para horas, m para minutos y s para segundos. Por ejemplo 1d2h3m significa 1 día, 2 horas y 3 minutos.</p>
|
||||
Tiempo de espera del servidor DNS si no obtiene respuesta. Si el valor es una cadena alfanumérica, use d para días, h para horas, m para minutos y s para segundos. Por ejemplo 1d2h3m significa 1 día, 2 horas y 3 minutos (NO IMPLEMENTADO).</p>
|
||||
<p><font class="set">set::dns::retries <nº-intentos>;</font><br>
|
||||
Número de intentos si el servidor DNS no obtiene respuesta.</p>
|
||||
Número de intentos si el servidor DNS no obtiene respuesta (NO IMPLEMENTADO).</p>
|
||||
<p><font class="set">set::dns::nameserver <name-of-dns-server>;</font><br>
|
||||
Especifica el host del servidor a usar en las búsquedas DNS. </p>
|
||||
Especifica el host del servidor a usar en las búsquedas DNS (NO IMPLEMENTADO).</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>
|
||||
@@ -2323,6 +2325,8 @@ set {
|
||||
<p><font class="set">set::timesynch::timeout <time></font><br>
|
||||
Máximo tiempo a esperar las respuestas de los servidores de hora. Este valor debe estar entre 1 y 5 segundos. No es posible más alto porque puede causar demasiada diferencia de hora.
|
||||
Por defecto es 3 y no hay ninguna razón para cambiarlo.</p>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
Cuando NOSPOOF está activo (normalmente lo está en Windows), envía un mensaje de advertencia a cada usuario para que use '/quote pong ..' si tiene problemas para conectar. Por defecto está en 'no'.</p>
|
||||
</div>
|
||||
<p><b><font size="+2">5 – Archivos adicionales <a name="addtlfiles"></a>
|
||||
</font></b></p>
|
||||
|
||||
+19
-13
@@ -25,12 +25,12 @@ French |
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
<a href="unreal32docs.nl.html">Dutch</a> |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</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.5</font><br>
|
||||
<b>Dernière mise à jour de la documentation:</b> 2006-06-15</div>
|
||||
<font size="4">Version: 3.2.6</font><br>
|
||||
<b>Dernière mise à jour de la documentation:</b> 2006-12-22</div>
|
||||
<br>
|
||||
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Contributors:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
@@ -190,9 +190,9 @@ Windows:<br>
|
||||
<li><b>*NIX versions:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9, 10)
|
||||
</ul>
|
||||
<b>Windows version:</b>
|
||||
@@ -1886,17 +1886,21 @@ deny channel {
|
||||
</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
Un hub a plusieurs serveurs linké à lui, un leaf n'a qu'un seul link... le vôtre.
|
||||
Un serveur est soit un hub, soit un leaf, vous ne pouvez combiner ces options.
|
||||
Un serveur est un leaf à moins qu'il n'ait une directive hub. C'est également un leaf si la directive est *, ou si leafdepth a comme valeur 1.
|
||||
</p>
|
||||
<p><b>hub</b> (optionnel)<br>
|
||||
Cette valeur est un masque des serveurs auquel ce hub peut se connecter (ex. : *.my.net).
|
||||
</p>
|
||||
<p><b>leaf</b> (optionnel)<br>
|
||||
Cette valeur est un masque que ce serveur interprétera comme un leaf.
|
||||
Cette valeur est un masque correspondant aux serveurs auquels ce hub <b>ne peut pas</b> se connecter.
|
||||
Mettre * ici sera pareil à ne pas avoir de directive hub.
|
||||
</p>
|
||||
<p><b>leaf-depth</b> (optionnel)<br>
|
||||
Si celui-ci est spécifier, alors leaf doit l'être aussi.
|
||||
<p><b>leafdepth</b> (optionnel)<br>
|
||||
Cette valeur spécifie la profondeur (nombre de sauts) que ce serveur peut avoir derrière lui.
|
||||
Par exemple, 1 signifie que le serveur ne peut avoir aucun lien en dessous de lui (un leaf),
|
||||
2 signifie qu'il peut &ecric;tre lié à des serveurs mais que ceux-ci ne peuvent avoir rien du tout
|
||||
derrière eux (cela signifie que ce hub peut uniquement être relié à des leaves).
|
||||
Une valeur de O signifie aucune limite, et c'est la valeur par défaut.
|
||||
</p>
|
||||
<p><b>class</b><br>
|
||||
La classe dont ce serveur fait partie, souvent une classe de serveurs séparés est utilisé pour ceci.
|
||||
@@ -2303,11 +2307,11 @@ Ensuite, dans votre unrealircd.conf vous ajoutez un bloc cgiirc :
|
||||
<p><font class="set">set::dns::timeout <timevalue>;</font><br>
|
||||
Une valeur de temps spécifie la durée qu'un serveur DNS a pour répondre.
|
||||
Une valeur de temps est un numérique avec d pour jour, h pour heure,
|
||||
m pour minutes, et s pour secondes, par exemple 1d2h3m signifie 1 jour, 2 heures, 3 minutes.</p>
|
||||
m pour minutes, et s pour secondes, par exemple 1d2h3m signifie 1 jour, 2 heures, 3 minutes.(PAS IMPLEMENTE)</p>
|
||||
<p><font class="set">set::dns::retries <number-of-retries>;</font><br>
|
||||
Une valeur numérique spécifie le nombre de fois que la résolution de DNS reprendra en cas d'échec.</p>
|
||||
Une valeur numérique spécifie le nombre de fois que la résolution de DNS reprendra en cas d'échec.(PAS IMPLEMENTE)</p>
|
||||
<p><font class="set">set::dns::nameserver <name-of-dns-server>;</font><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.(PAS IMPLEMENTE)</p>
|
||||
<p><font class="set">set::dns::bind-ip <ip>;</font><br>
|
||||
Spécifie l'ip è relier au résolveur; presque jamais requis</p>
|
||||
<p><font class="set">set::network-name <name-of-network>;</font><br>
|
||||
@@ -2439,6 +2443,8 @@ Ensuite, dans votre unrealircd.conf vous ajoutez un bloc cgiirc :
|
||||
Durée maximum pendant laquelle attendre la réponse du serveur. Cette valeur est entre 1 et 5,
|
||||
plus ce n'est pas possible car cela crée trop d'incohérences. Ce paramètre est
|
||||
réglé par défaut à 3 et il n'y à probablement aucune bonne raison de la changer.</p>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
Lorsque NOSPOOF est activé (généralement sous Windows), envoye un avertissement à chaque utilisateur, d'utiliser '/quote pong ...' si ils ont des problèmes pour se connecter. La valeur par défaut est no.</p>
|
||||
<p></p> </div>
|
||||
<p><b><font size="+2">5 – Fichiers additionnels<a name="addtlfiles"></a>
|
||||
</font></b></p><div class="desc">
|
||||
@@ -3625,4 +3631,4 @@ Pour la désactiver, utilisez simplement "(?-i)" et pour l'activer, "(?i)"
|
||||
(insensibilité à la case désactivée) suivi par une lettre minuscule ou majuscule (insensibilité à la case activée). De plus, plutôt que d'avoir à toujours
|
||||
se rappeller de changer de mode lorsque vous avez fini, vous pouvez également spécifier que le changement de mode doit uniquement s'appliquer à un
|
||||
subexpression, par exemple, "(?-i:[a-z])[a-z]" est équivalent au précédent regexp car le -i s'applique uniquement à la subexpression donnée.
|
||||
</body></html>
|
||||
</body></html>
|
||||
|
||||
+131
-35
@@ -14,7 +14,7 @@
|
||||
<!-- $Id$ -->
|
||||
</HEAD>
|
||||
<BODY class="Normal">
|
||||
<DIV class=Section1> <a href="unreal32docs.html">English</a> | <a href="unreal32docs.de.html">German</a> | <a href="unreal32docs.es.html">Spanish</a> | <a href="unreal32docs.hu.html">Hungarian</a> | <a href="unreal32docs.fr.html">French</a> | Greek | <a href="unreal32docs.nl.html">Dutch</a> | <a href="unreal32docs.ru.html">Russian</a> | <a href="unreal32docs.tk.html">Turkish</a><br>
|
||||
<DIV class=Section1> <a href="unreal32docs.html">English</a> | <a href="unreal32docs.de.html">German</a> | <a href="unreal32docs.es.html">Spanish</a> | <a href="unreal32docs.hu.html">Hungarian</a> | <a href="unreal32docs.fr.html">French</a> | Greek | <a href="unreal32docs.nl.html">Dutch</a> | <a href="unreal32docs.ru.html">Russian</a> | <a href="unreal32docs.tr.html">Turkish</a><br>
|
||||
<br>
|
||||
<P style="TEXT-ALIGN: center" align=center><B><SPAN
|
||||
|
||||
@@ -26,14 +26,14 @@ style="FONT-SIZE: 13.5pt"><A
|
||||
href="http://www.unrealircd.com/">http://www.unrealircd.com/</A></SPAN><BR>
|
||||
<SPAN
|
||||
|
||||
style="FONT-SIZE: 13.5pt">Version: 3.2.5</SPAN><BR>
|
||||
<B>Last doc update:</B> 2006-06-15</P>
|
||||
style="FONT-SIZE: 13.5pt">Version: 3.2.6</SPAN><BR>
|
||||
<B>Last doc update:</B> 2006-12-22</P>
|
||||
<P><BR>
|
||||
<B>Head Coders:</B> Stskeeps / codemastr / Syzop / Luke<BR>
|
||||
<B>Contributors:</B> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<BR>
|
||||
<B>Documentation:</B> CKnight^ / Syzop</P>
|
||||
<P><B>Μετάφραση:</B> <a href="mailto:GSF19@altecnet.gr">GSF</a> - UnReaL.mirc.gr on HellenicNet</P>
|
||||
<P> Λόγω της αυξανόμενης περιπλοκότητας του UnrealIRCd3.2 στραφήκαμε σε ένα πιο έυκολο, πιο περιεκτικό βοηθητικό έγγραφο. Για να μπορέσετε να δείτε αυτο το έγγραφο πρέπει να έχετε έναν συμβατό περιηγητή, όπως αυτοί που υπάρχουν παρακάτω: Τα τελευταία βοηθητικά έγγραφα βρίσκονται στο <A
|
||||
<P> Για να μπορέσετε να δείτε αυτο το έγγραφο πρέπει να έχετε έναν συμβατό περιηγητή, όπως αυτοί που υπάρχουν παρακάτω: Τα τελευταία βοηθητικά έγγραφα βρίσκονται στο <A
|
||||
|
||||
href="http://www.vulnscan.org/UnrealIrcd/unreal32docs.html">http://www.vulnscan.org/UnrealIrcd/unreal32docs.html</A> και το FAQ στο <A href="http://www.vulnscan.org/UnrealIrcd/faq/"
|
||||
|
||||
@@ -108,8 +108,11 @@ href="#feature_spamfilter">Spamfilter</A><BR>
|
||||
|
||||
href="#feature_cidr">CIDR</A><br>
|
||||
-- 3.16. <a href="#feature_nickchars">Σετ χαρακτήρων Nick</a><br>
|
||||
-- 3.17. <A
|
||||
|
||||
-- 3.17. <A
|
||||
href="#feature_cgiirc">Υποστήριξη CGI:IRC</A><BR>
|
||||
-- 3.18. <A
|
||||
href="#feature_timesync">Συγχρονισμός Ώρας</A><BR>
|
||||
-- 3.19. <A
|
||||
href="#feature_other">Άλλα χαρακτηριστικά</A><BR>
|
||||
4. <A
|
||||
|
||||
@@ -221,6 +224,9 @@ href="#officialchannels">
|
||||
href="#spamfilter">Επιλογή Spamfilter</A><BR>
|
||||
---4.36. <A
|
||||
|
||||
href="#cgiirc">Επιλογή CGI:IRC</A><BR>
|
||||
---4.37. <A
|
||||
|
||||
href="#setblock">Επιλογή Set -=- (networks/unrealircd.conf)</A><BR>
|
||||
5. <A
|
||||
|
||||
@@ -261,7 +267,7 @@ href="#secantiexploit">Protecting against exploits</A><BR>
|
||||
---8.9. <A
|
||||
|
||||
href="#secsummary">Summary</A><BR>
|
||||
9. <A href="http://www.vulnscan.org/UnrealIrcd/faq/" target=_blank>Frequently Asked Questions (FAQ)</A><br>
|
||||
9. <A href="http://www.vulnscan.org/UnrealIRCd/faq/" target=_blank>Frequently Asked Questions (FAQ)</A><br>
|
||||
A. <a href="#regex">Κανονικές εκφράσεις</a><br>
|
||||
---A.1. <a href="#regexlit">Literals</a><br>
|
||||
---A.2. <a href="#regexdot">Τελεστής Τελεία(.)</a><br>
|
||||
@@ -277,10 +283,10 @@ href="#secsummary">Summary</A><BR>
|
||||
|
||||
name=IntroductionNotes></A></P>
|
||||
<DIV style="MARGIN-LEFT: 11.25pt">
|
||||
<P>Αυτό το έγγραφο έχει γραφτεί για αποκλειστική χρήση με το UnrealIRCd. Η χρήση του εγγράφου με άλλο πρόγραμμα , ή η διανομή αυτου του εγγράφου μαζι με άλλο πρόγραμμα απαγορέυεται αυστηρά χωρίς την γραπτή άδεια της ομάδας προγραμματισμού του UnrealIRCd. Αυτο το έγγραφο μπορει να αντιγραφεί/εκτυπωθεί/επαναδημιουργηθεί/εκδοθεί όσες φορές θέλετε, όσο παρέχεται για χρήση με το UnrealIRCd και δεν έχει τροποποιηθεί με κανέναν τρόπο. – Copyright UnrealIRCd Development Team 2002-2004</P>
|
||||
<P>Αυτό το έγγραφο έχει γραφτεί για αποκλειστική χρήση με το UnrealIRCd. Η χρήση του εγγράφου με άλλο πρόγραμμα , ή η διανομή αυτου του εγγράφου μαζι με άλλο πρόγραμμα απαγορέυεται αυστηρά χωρίς την γραπτή άδεια της ομάδας προγραμματισμού του UnrealIRCd. Αυτο το έγγραφο μπορει να αντιγραφεί/εκτυπωθεί/επαναδημιουργηθεί/εκδοθεί όσες φορές θέλετε, όσο παρέχεται για χρήση με το UnrealIRCd και δεν έχει τροποποιηθεί με κανέναν τρόπο. – Copyright UnrealIRCd Development Team 2002-2006</P>
|
||||
<P>Παρακαλούμε διαβάστε αυτό το εγχειρίδιο πριν ζητήσετε οποιαδήποτε βοήθεια, και επισης ΣΙΓΟΥΡΑ πρέπει να ρίξετε μια ματιά και στο <A
|
||||
|
||||
href="http://www.vulnscan.org/UnrealIrcd/faq/" target=_blank>FAQ</A> αφου περισσότερο απο το 80% απο τις ερωτήσεις/προβλήματα έχουν απαντηθεί εκεί. Αν συνεχίζετε να χρειάζεστε βοήθεια μπορείτε να ζητήσετε υποστήριξη στο irc.ircsystems.net (port 6667) κανάλι #unreal-support (να γνωρίζετε οτι ΑΠΑΙΤΟΥΜΕ να έχετε διαβάσει το εγχειρίδιο και το <SPAN lang=EN-US>FAQ</SPAN>, και οτι προσφέρουεμ βοήθεια μόνο για το UnrealIRCd, όχι με τα services!). Αν έχετε βρεί κάποιο σφάλμα στο πρόγραμμα (όπως crash) τότε υποβάλετέ το στο <A
|
||||
href="http://www.vulnscan.org/UnrealIRCd/faq/" target=_blank>FAQ</A> αφου περισσότερο απο το 80% απο τις ερωτήσεις/προβλήματα έχουν απαντηθεί εκεί. Αν συνεχίζετε να χρειάζεστε βοήθεια μπορείτε να ζητήσετε υποστήριξη στο irc.ircsystems.net (port 6667) κανάλι #unreal-support (να γνωρίζετε οτι ΑΠΑΙΤΟΥΜΕ να έχετε διαβάσει το εγχειρίδιο και το <SPAN lang=EN-US>FAQ</SPAN>, και οτι προσφέρουεμ βοήθεια μόνο για το UnrealIRCd, όχι με τα services!). Αν έχετε βρεί κάποιο σφάλμα στο πρόγραμμα (όπως crash) τότε υποβάλετέ το στο <A
|
||||
|
||||
href="http://bugs.unrealircd.org/"
|
||||
|
||||
@@ -324,7 +330,7 @@ name=installation></A>
|
||||
<LI>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<LI>FreeBSD (4.*, 5.*)
|
||||
<LI>NetBSD (2.*)
|
||||
<LI>OpenBSD (3.7, 3.8)
|
||||
<LI>OpenBSD (3.7, 3.8, 3.9)
|
||||
<LI>Solaris (9, 10) </LI>
|
||||
</UL>
|
||||
</UL>
|
||||
@@ -336,7 +342,7 @@ name=installation></A>
|
||||
<LI>Windows 2000 (Pro, Server, Advanced Server)
|
||||
<LI>Windows XP (Home, Pro)
|
||||
<LI>Windows 2003
|
||||
</UL>
|
||||
</UL>
|
||||
<LI><b> Δοκιμασμένες Αρχιτεκτονικές: </b>
|
||||
<UL>
|
||||
<LI>ia32 (i386, i486, i586, i686)
|
||||
@@ -372,7 +378,7 @@ href="mailto://coders@lists.unrealircd.org">coders@lists.unrealircd.org<BR>
|
||||
name=features></A></P>
|
||||
<DIV style="MARGIN-LEFT: 11.25pt">
|
||||
<P>Μερικά απο τα πιο βασικά/ωραία χαρακτηριστικά αναλύονται σε αυτήν την παράγραφο. Παρέχει μια γενική κάτοψη, και μερικές φορές αναφέρεται στο αρχείο επιλογών (κατι που ίσως για το οποίο δεν γνωρίζετε τίποτα ακομα).</P>
|
||||
<P>Μπορείτε να αγνοήσετε αυτήν την παράγραφο, όμως προτείνεται να την διαβάσετε πρίν/μετά απο την εγκατάσταση.</P>
|
||||
<P>Μπορείτε να αγνοήσετε αυτήν την παράγραφο, όμως προτείνουμε ανεπιφύλακτα να την διαβάσετε πρίν/μετά απο την εγκατάσταση γιατι αλλιώς δεν θα μπορέσετε να καταλάβετε ιδέες όπως cloaking','snomasks',κτλπ.</P>
|
||||
</DIV>
|
||||
<P><B><SPAN style="FONT-SIZE: 18pt">3.1 - Cloaking</SPAN></B><A
|
||||
|
||||
@@ -428,7 +434,7 @@ name=feature_snomasks></A></P>
|
||||
name=feature_aliases></A></P>
|
||||
<DIV style="MARGIN-LEFT: 11.25pt">
|
||||
<P>Με τις συντομεύσεις (<SPAN lang=EN-US>Aliases) </SPAN>μπορείτε να σετάρετε server-side εντολές συντομεύσης. Μπορείτε για παράδειγμα να κάνετε το "/ns identify blah" να προωθείται στον nickserv (θα μεταφραστεί σε: privmsg nickserv identify blah). Μπορείτε ακόμα να δημιουργήσετε πιο πολύπλοκες συντομεύσεις όπως το /register να προωθείται στον ChanServ μόνο αν το πρώτο όρισμα αρχίζει με # αλλιώς να προωθείται στον NickServ.</P>
|
||||
<P>Οι συντομεύσεις (Aliases) ορίζονται με την επιλογή alias στο αρχείο επιλογών, και μπορείτε επίσης να συμπεριλάβετε ένα αρχείο με αρχικές συντομεύσεις για τις υπηρεσίες που χρησιμοποιούνται συχνότερα.</P>
|
||||
<P>Οι συντομεύσεις (Aliases) ορίζονται με την επιλογή <a href="#aliasblock">alias blocks</a> στο αρχείο επιλογών, και μπορείτε επίσης να συμπεριλάβετε ένα αρχείο με αρχικές συντομεύσεις για τις υπηρεσίες που χρησιμοποιούνται συχνότερα.</P>
|
||||
</DIV>
|
||||
<P><B><SPAN style="FONT-SIZE: 18pt">3.5 - Helpop</SPAN></B><A
|
||||
|
||||
@@ -1006,10 +1012,28 @@ lang=EN-US>ban </SPAN>
|
||||
Παράδειγμα 2, αν έχετε περισσότερο κινέζους χρήστες και θέλετε να επιτρέψετε "κανονικούς" κινέζικους χαρακτήρες:<br>
|
||||
<pre>set { allowed-nickchars { chinese-simp; chinese-trad; }; };</pre>
|
||||
</div>
|
||||
<P><B><SPAN
|
||||
|
||||
style="FONT-SIZE: 18pt"><br>
|
||||
3.17– <A name=feature_other></A>Άλλα Χαρακτηριστικά</SPAN></B></P>
|
||||
<P><br>
|
||||
<p><font size="+2"><b>3.17 - Υποστίρηξη CGI:IRC</b></font><a name="feature_cgiirc"></a></p><div class="desc">
|
||||
<p>Το UnrealIRCd υποστιρίζει τις κρυπτογραφημένες διευθύνσεις CGI:IRC, που σημαίνει οτι μπορείτε να σημειώσετε συγκεκριμένους διαύλους επικοινωνίας CGI:IRC
|
||||
ώς "εμπιστευόμενες" που θα αναγκάσει το IRCd να εμφανίσει την πραγματική διεύθυνση του χρήστη παντού στο
|
||||
IRC, αντι για την διεύθυνση του διαύλου επικοινωνίας CGI:IRC.</p>
|
||||
<p>Δείτε επίσης <a href="#cgiirc">Επιλογή cgiirc</a> για πληροφορίες στο πώς να το προγραμματίσετε.</p>
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b>3.18 - Συγχρονισμός Ώρας</b></font><a name="feature_timesync"></a></p><div class="desc">
|
||||
<p>Το να υπάρχει σωστή ώρα στο σύστημα είναι πολύ σημαντικό για τους διακομιστές IRC. Χωρίς σωστή ώρα, τα κανάλια μπορούν να αποσυγχρονιστούν, αθώοι χρήστες να αποσυνδεθούν, τα κανάλια ίσως δεν εμφανιστούν σωστά στην εντολή /LIST, με λίγα λόγια: τεράστιο πρόβλημα θα δημιουργηθεί.</p>
|
||||
<p>Το UnrealIRCd έχει ενσωματωμένη κάποια υποστίριξη για τον συγχρονισμό της ώρας.
|
||||
Αν και αυτή δεν είναι η ιδανική(η ώρα μπορεί να είναι ακόμα λανθασμένη κατα μερικά δευτερόλεπτα), θα ξεφορτωθεί τις περισσότερες διαφορές ώρας.
|
||||
Αν μπορείτε, συνηστάται ακόμα να χρησιμοποιείσετε προγράμματα συγχρονισμού ώρας όπως το ntpd στο *NIX ή
|
||||
την υπηρεσία συγχρονισμού της ώρας στα Windows (σε αυτήν την περίπτωση, μπορείτε να κλείσετε τον συγχρονισμό ώρας του Unreal, περισσότερα γιαυτό παρακάτω).</p>
|
||||
<p>Αυτό που κάνει το UnrealIRCd (ώς αρχική επιλογή) είναι να κάνει μια μοναδική προσπάθεια συγχρονισμού την ώρα που φορτώνει. Στέλνει (ώς αρχική επιλογή) μια αίτηση
|
||||
σε πολλαπλούς διακομιστές συγχρονισμού και όταν δεχτεί την πρώτη (γρηγορότερη) απάντηση, θα προσαρμόσει το εσωτερικό ρολόι του ircd
|
||||
(ΟΧΙ το ρολόι του συστήματος). Αν, για κάποιον λόγο, το Unreal δεν δεχτεί κάποια απάντηση απο κάποιον διακομιστή μέσα σε 3 δευτερόλεπτα,
|
||||
το IRCd θα συνεχίσει να φορτώνει αγνοώντας το (συμβαίνει σπάνια).</p>
|
||||
<p>Ο Συγχρονισμός της ώρας προσαρμόζεται (και μπορεί να απενεργοποιηθεί) μέσα απο την επιλογή <b>set::timesynch</b>, δείτε
|
||||
το <a href="#setblock">set documentation</a> για περισσότερες πληροφορίες.</p>
|
||||
</div>
|
||||
<p><font size="+2">3.19 <b><A name=feature_other></A>Άλλα Χαρακτηριστικά</b></font></P>
|
||||
<DIV style="MARGIN-LEFT: 11.25pt">
|
||||
<P>Το UnrealIRCd έχει πολλά χαρακτηριστικά οπότε δεν καλύπτονται όλα εδώ... Θα το καταλάβετε και απο μόνοι σας.</P>
|
||||
</DIV>
|
||||
@@ -1019,8 +1043,10 @@ style="FONT-SIZE: 18pt">4.0 –
|
||||
|
||||
name=configuringyourunrealircdconf></A></P>
|
||||
<DIV style="MARGIN-LEFT: 11.25pt">
|
||||
<P>Πρώτα απ’όλα, το να δημιουργήσετε ένα καλό unrealircd.conf θα πάρει αρκετό χρόνο, πιθανότατα περίπου 10 – 60 λεπτά. Μπορείτε να προσπαθήσετε να το ξεκινήσετε όσο πιο γρήγορα μπορείτε και να το βελτιστοποιήσετε αργότερα, ή μπορείτε να μάθετε τις σημαντικότερες παραγράφους βήμα βήμα κάτι που προτείνεται ;P. Αν έχετε κάποιο πρόβλημα, ελέγξτε την σύνταξη, ελέγξτε το εγχειρίδιο και ελέγξτε το FAQ πριν ζητήσετε οποιαδήποτε βοήθεια/το υποβάλετε ώς bug.</P>
|
||||
</DIV>
|
||||
<P>Πρώτα απ’όλα, το να δημιουργήσετε ένα καλό unrealircd.conf θα πάρει αρκετό χρόνο, πιθανότατα περίπου 15 – 60 λεπτά. Η δημιουργια ενός <u>"σωστού"</u> unrealircd.conf θα πάρει ακόμα περισσότερη ώρα.
|
||||
Δεν πρέπει να βιαστείτε να φορτώσετε το IRCd, αλλα καλύτερα να ελέγξετε τα πράγματα γραμμή-γραμμή. Αν έχετε κανένα πρόβλημα, ελέξτε το συντακτικό,ελέξτε αυτό το εγχειρίδιο
|
||||
και επίσης ελέξτε το <a href="http://www.vulnscan.org/UnrealIRCd/faq/">FAQ</a> πρίν ζητήσετε βοήθεια/επισημάνετε ένα bug.</p>
|
||||
</div>
|
||||
<P><B><SPAN
|
||||
|
||||
style="FONT-SIZE: 18pt">4.1 Το αρχείο Επιλογών αναλυτικά</SPAN></B><A
|
||||
@@ -1035,14 +1061,14 @@ name=configurationfileexplained></A></P>
|
||||
<P><block-name> Είναι ο τύπος της επιλογής, όπως το me, ή το admin. <block-value> μερικές φορές ορίζει μια τιμή, όπως στο /oper login, αλλα άλλες φορές θα είναι ένας υπο-τύπος όπως στο ban user.</P>
|
||||
<P><block-directive> Είναι μια χωριστή μεταβλητή αποκλειστικά για την επιλογή, και το <directive-value> είναι η τιμή με την οποία σχετιζεται. Αν το <directive-value> περιέχει κενά, ή χαρακτήρες που αντιπροσωπεύουν ένα σχόλιο πρέπει να περιέχεται μέσα σε λατινικά εισαγωγικά. Αν θέλετε να χρησιμοποιήσετε έναν εισαγωγικό χαρακτήρα μέσα σε μιά εισαγωγική φράση χρησιμοποιήστε \" και το πρόγραμμα θα το δεχτεί ώς εισαγωγικό χαρακτήρα.</P>
|
||||
<P>Το <block-directive> μπορεί να έχει ορίσματα μέσα του, σε αυτήν την περίπτωση θα έχει περιέχεται μέσα σε αγκύλες. Μερικές επιλογές δέν έχουν ορίσματα και ορίζονται απλώς με το <block-value>, όπως το include. Ακόμα σημειώστε οτι δεν υπάρχει μορφοποίηση με set, που σημαίνει οτι όλη η επιλογή μπορεί να εμφανίζεται σε μιά γραμμή ή σε περισσότερες. Η μορφοποίηση πιο πάνω είναι αυτή που κανονικά χρησιμοποιείται (και που θα χρησιμοποιείται στο αρχείο) γιατί είναι εύκολο να διαβαστεί. </P>
|
||||
<P>Σημείωση: Το αρχείο επιλογών είναι ευαίσθητο στα κεφαλαία δηλαδή το BLOCK-NAME δεν είναι το ίδιο με το block-name. Υπάρχει ειδική σημείωση που αναφέρεται στις καταχωρήσεις στο αρχείο επιλογών. Ψια παράδειγμα, μιλώντας για το <directive-name> στο παράδειγμα παραπάνω, θα λέγατε <block-name>::<block-directive>, και αν αυτό το όρισμα έχει υπο-επιλογή που θέλετε να συμπεριλάβετε, θα προσθέτατε άλλο ένα :: και το όνομα του υπο ορίσματος. </P>
|
||||
<P>Σημείωση: Το αρχείο επιλογών είναι ευαίσθητο στα κεφαλαία δηλαδή το <i>BLOCK-NAME</i> δεν είναι το ίδιο με το <i>block-name</i>. Υπάρχει ειδική σημείωση που αναφέρεται στις καταχωρήσεις στο αρχείο επιλογών. Ψια παράδειγμα, μιλώντας για το <directive-name> στο παράδειγμα παραπάνω, θα λέγατε <block-name>::<block-directive>, και αν αυτό το όρισμα έχει υπο-επιλογή που θέλετε να συμπεριλάβετε, θα προσθέτατε άλλο ένα :: και το όνομα του υπο ορίσματος. </P>
|
||||
<P>Ψια να αναφερθείτε σε ένα ανώνυμο όρισμα θα κάνατε <block-name>:: που θα σήμαινε σε αυτην την περίπτωση <block-value>, ή θα μπορούσε να είναι μια καταχώρηση σε μια υπο-επιλογή χωρίς όνομα.</P>
|
||||
<P>Τρείς τύποι σχολίων υποστιρίζονται:</P>
|
||||
<P># Σχόλιο μιάς γραμμής<BR>
|
||||
// Σχόλιο μιάς γραμμής<BR>
|
||||
/* Σχόλιο πολλών<BR>
|
||||
γραμμών */</P>
|
||||
<P>Τώρα που γνωρίζετε πώς λειτουργεί, δημιουργήστε το δικό σας unrealircd.conf απο την αρχή η αντιγράψτε το doc/example.conf και αρχίστε να το επεξεργάζεστε. Συστήνεται να προχωρήσετε βήμα-βήμα όλες τις επιλογές και να χρησιμοποιήσετε αυτο το εγχειρίδιο για αναφορά.</P>
|
||||
<P>Τώρα που γνωρίζετε πώς λειτουργεί, αντιγράψτε το <i>doc/example.conf</i> στον φάκελο του UnrealIRCd (π.χ: /home/user/Unreal3.2) και μετονομάστε το σε <i>unrealircd.conf</i> (Η δημιουργήστε το δικό σας <i>unrealircd.conf</i> απτην αρχή). Συστήνεται να προχωρήσετε βήμα-βήμα όλες τις επιλογές και ρυθμίσεις του αρχείου επιλογών και να χρησιμοποιήσετε αυτο το εγχειρίδιο για αναφορά.</P>
|
||||
</DIV>
|
||||
<P><B><SPAN
|
||||
|
||||
@@ -2397,13 +2423,13 @@ cellPadding=0 border=0>
|
||||
<P><B>password-receive</B><BR>
|
||||
Ο κωδικός που χρησιμοποιείται για αναγνώριση των εισερχομένων συνδέσεων, μπορεί να είναι κρυπτογραφημένος(έγκυροι τρόποι κρυπτογράφησης είναι crypt, md5, sha1, ripemd-160). Μπορείτε να αγνοήσετε την παράμετρο τύπου αναγνώρισης για να χρησιμοποιήσετε μή κρυπτογραφημένα γράμματα. Συχνά αυτός ο κωδικός είναι ο ίδιος με τον κωδικό σύνδεσης. </P>
|
||||
<P><B>hub vs leaf</B><BR>
|
||||
Ένας hub έχει πολλούς servers συνδεδεμένους πάνω του, ενώ ο leaf έχει μόνο μία σύνδεση... σε εσάς. Ένας server είναι είτε hub είτε leaf, δεν μπορείτε να συνδιάσετε αυτές τις επιλογές. </P>
|
||||
Ένας hub έχει πολλούς servers συνδεδεμένους πάνω του, ενώ ο leaf έχει μόνο μία σύνδεση... σε εσάς. Ένας server είναι leaf, εκτώς και αν έχει δηλωθεί ως hub.Είναι επίσης leaf αν η δήλωση του leaf directive είναι *, ή το: leafdepth είναι 1. </P>
|
||||
<P><B>hub</B> (προαιρετικό)<BR>
|
||||
Η τιμή είναι μια μάσκα των server στους οποίους αυτός ο hub επιτρέπεται να συνδεθεί (π.χ: *.my.net). </P>
|
||||
<P><B>leaf</B> (προαιρετικό)<BR>
|
||||
Η τιμή είναι μια μάσκα στην οποία αυτός ο server θα φέρεται σαν ένας leaf. </P>
|
||||
Η τιμή είναι μια μάσκα των server στους οποίους αυτός ο hub <b>δεν</b> επιτρέπεται να συνδεθεί.Λέγοντας * εδώ θα ήταν το ίδιο με το να μην έχουμε επιλογή hub. </P>
|
||||
<P><B>leaf-depth</B> (προαιρετικό)<BR>
|
||||
Αν οριστεί τότε πρέπει επίσης να οριστεί και ο leaf. Η τιμή ορίζει το βάθος (αριθμός των θέσεων) που ο server μπορεί να έχει κάτω απο αυτόν. </P>
|
||||
Η τιμή δηλώνει το βάθος (αριθμός αποστάσεων) που μπορεί να έχει αυτός ο server "πάνω του". Για παράδειγμα, 1 σημαίνει οτι ο server δεν μπορεί να έχει καμία σύνδεση πάνω του (είναι leaf), 2 σημαίνει οτι μπορεί να έχει servers πάνω του, αλλα αυτοί δεν μπορούν να έχουν συνδεδεμένο τίποτα άλλο στην συνέχεια πάνω τους (δηλαδή, αυτός ο hub μπορεί να συνδέεται μόνο με leaves). Μια τιμή 0 σημαίνει οτι δέν υπάρχει όριο, και αυτή ειναι η αρχική επιλογή.</P>
|
||||
<P><B>class</B><BR>
|
||||
Η κατηγορία στην οποία κατατάσεται αυτός ο server, συχνά μια ξεχωριστή κατηγορία server χρησιμοποιείται για αυτό. </P>
|
||||
<P><B>compression-level</B> (προαιρετικό)<BR>
|
||||
@@ -2479,19 +2505,27 @@ href="#includedirective">
|
||||
<P>Η επιλογή alias [standard alias] σας επιτρέπει να προωθήσετε μια εντολή σε έναν χρήστη, για παράδειγμα /chanserv στέλνει ένα μήνυμα στον χρήστη chanserv. Το alias:: ορίζει το όνομα της εντολής η οποία θα είναι η συντόμευση (π.χ: chanserv), το alias::target είναι το όνομα η το κανάλι στο οποίο θα προωθηθεί το μήνυμα, άν το alias:: είναι το ίδιο με το όνομα, στο οποίο θα προωθηθεί, το alias::target είναι προαιρετικό. Το alias::type ορίζει τον τύπο της συντόμευσης, έγκυροι τύποι είναι services (ο χρήστης είναι στον server των services), stats (ο χρήστης βρίσκεται στον server των stats), normal (ο χρήστης είναι κανονικός χρήστης σε οποιονδήποτε server), και channel (ο στόχος είναι όνομα καναλιού). Αν το alias::spamfilter (μή απαραίτητο) έχει οριστεί σε 'yes', τότε τα spamfilters θα ελέγχονται (η αρχική επιλογή ειναι 'no').<br> Η επιλογή alias έχει επίσης και άλλον έναν σκοπό που εξηγείται λεπτομερώς παρακάτω.</P>
|
||||
<P>Σύνταξη [command alias]:</P>
|
||||
<PRE>
|
||||
alias <name> {
|
||||
alias <name> {
|
||||
/* Για aliases που στέλνονται σε χρήστες/κανάλια */
|
||||
format <regex-expression> {
|
||||
target <nick-to-forward-to>;
|
||||
type <type-of-alias>;
|
||||
parameters <parameter-string>;
|
||||
};
|
||||
/* Για 'πραγματικά aliases' */
|
||||
format <regex-expression> {
|
||||
command <command>;
|
||||
type real;
|
||||
parameters <parameter-string>;
|
||||
};
|
||||
/* Κτλπ... μπορείτε να έχετε όσες επιλογές διαμόρφωσης επιθυμείτε.. */
|
||||
format <regex-expression> {
|
||||
...
|
||||
};
|
||||
type command;
|
||||
spamfilter <yes|no>;
|
||||
};</PRE>
|
||||
<P>Όταν η επιλογή alias χρησιμοποιείται με αυτήν την μορφή, σας επιτρέπει να έχετε μια πιο ευρεία περιοχή χρήσης. Για παράδειγμα μπορείτε να δημιουργήσετε συντομεύσεις όπως το /identify. Το alias:: είναι το ίδιο με παραπάνω, το όνομα της εντολής συντόμευσης. Το alias::format ορίζει μια κανονική έκφραση που ελέγχεται με την πρόταση που στέλνεται στην εντολή alias, και αφού ταιριάξει με την υπο-καταχώρηση της συντόμευσης το alias::format θα χρησιμοποιηθεί, μπορείτε να έχετε πολλαπλά alias::format's για να ορίσετε την εντολή να κάνει διαφορετικά πράγματα ανάλογα με την πρόταση που στέλνεται σε αυτήν. Το alias::format::target είναι ο στόχος στον οποίο θα προωθηθεί αυτή η συντόμευση. Το alias::format::type ορίζει τον τύπο της συντόμευσης με τον οποίο αυτό το μήνυμα θα προωθηθεί. Το alias::format::parameters είναι τια θα σταλθεί σάν παράμετρος σε αυτήν την συντόμευση. Για να ορίσετε μιά απο τις παραμέτρους που θα δωθεί στην συντόμευση εντολής ορίστε ένα % ακολουθούμενο απο έναν αριθμό, για παράδειγμα, %1 είναι η πρώτη παράμετρος. Για να ορίσετε όλες τις παραμέτρους απο μία παράμετρο μέχρι το τέλος δώστε % ακολουθούμενο απο έναν αριθμό και ένα -, για παράδειγμα το %2- επιστρέφει όλες τις παραμέτρους απο το δεύτερο μέχρι και το τελευταίο. Επιπλέον, μπορείτε να ορίσετε %n το οποίο θα αντικατασταθεί με το nickname του χρήστη που έδωσε την εντολή. Για παραδείγματα χρήσης της επιλογής συντόμευσης alias σε μορφή εντολών, συμβουλευτείτε το doc/example.conf.</P>
|
||||
<P>Όταν η επιλογή alias χρησιμοποιείται με αυτήν την μορφή, σας επιτρέπει να έχετε μια πιο ευρεία περιοχή χρήσης. Για παράδειγμα μπορείτε να δημιουργήσετε συντομεύσεις όπως το /identify. Το alias:: είναι το ίδιο με παραπάνω, το όνομα της εντολής συντόμευσης. Το <b>alias::format</b> ορίζει μια κανονική έκφραση που ελέγχεται με την πρόταση που στέλνεται στην εντολή alias, και αφού ταιριάξει με την υπο-καταχώρηση της συντόμευσης το alias::format θα χρησιμοποιηθεί, μπορείτε να έχετε πολλαπλά alias::format's για να ορίσετε την εντολή να κάνει διαφορετικά πράγματα ανάλογα με την πρόταση που στέλνεται σε αυτήν. Το <b>alias::format::target</b> είναι ο στόχος στον οποίο θα προωθηθεί αυτή η συντόμευση,όμως στην περίπτωση χρήσης ενός "πραγματικού alias" το <b>alias::format::command</b> χρησιμοποιείται αντίστοιχα. Το <b>alias::format::type</b> ορίζει τον τύπο της συντόμευσης με τον οποίο αυτό το μήνυμα θα προωθηθεί. Εκτώς απο τους τύπους που αναφέρθηκαν πριν στο "Syntax [standard alias]", επιτρέπουμε επίσης τον "πραγματικό" τύπο εδώ, για τα "πραγματικά aliases". Το <b>alias::format::parameters</b> είναι τι θα σταλθεί σάν παράμετρος σε αυτήν την συντόμευση. Για να ορίσετε μιά απο τις παραμέτρους που θα δωθεί στην συντόμευση εντολής ορίστε ένα % ακολουθούμενο απο έναν αριθμό, για παράδειγμα, %1 είναι η πρώτη παράμετρος. Για να ορίσετε όλες τις παραμέτρους απο μία παράμετρο μέχρι το τέλος δώστε % ακολουθούμενο απο έναν αριθμό και ένα -, για παράδειγμα το %2- επιστρέφει όλες τις παραμέτρους απο το δεύτερο μέχρι και το τελευταίο. Επιπλέον, μπορείτε να ορίσετε %n το οποίο θα αντικατασταθεί με το nickname του χρήστη που έδωσε την εντολή.<br><br> Για παραδείγματα χρήσης της επιλογής συντόμευσης alias σε μορφή εντολών, συμβουλευτείτε το doc/example.conf.</P>
|
||||
</DIV>
|
||||
<P><B><SPAN
|
||||
|
||||
@@ -2575,9 +2609,61 @@ href="#feature_spamfilter">
|
||||
reason "No spamming allowed";
|
||||
};</PRE>
|
||||
</DIV>
|
||||
<p><font class="block_section">4.36 - </font><font class="block_name">Επιλογή Cgiirc</font>
|
||||
<font class="block_optional">ΠΡΟΑΙΡΕΤΙΚΟ</font><a name="cgiirc"></a>
|
||||
</p><div class="desc">
|
||||
<p>
|
||||
Η επιλογή cgiirc σας επιτρέπει να ρυθμίσετε το spoofing διευθύνσεων για τις πύλες CGI:IRC που εμπιστεύεστε
|
||||
(<a href="#feature_cgiirc">more info</a>).</p>
|
||||
|
||||
<p>Σύνταξη:<br>
|
||||
<pre>
|
||||
cgiirc {
|
||||
type <webirc|old>;
|
||||
username <mask>; /* προαιρετικό */
|
||||
hostname <mask>;
|
||||
password <password>; /* μόνο για τύπου webirc */
|
||||
};</pre></p>
|
||||
<p><b>type</b> μπορεί να πάρει την τιμή 'webirc' ή 'old'.<br>
|
||||
<b>username</b> συγκρίνεται με το ident (αν υπάρχει). Αν δεν ορισθεί, παίρνει την τιμή "*".<br>
|
||||
<b>hostname</b> είναι η διεύθυνση με την οποία πρέπει να ταιριάζει.<br>
|
||||
<b>password</b> είναι ο κωδικός webirc, χρησιμοποιείται μόνο για τον τύπο 'webirc'.<br>
|
||||
</p>
|
||||
|
||||
<p><b>Πώς να το ρυθμίσετε με την μέθοδο 'webirc' (προτεινόμενη μέθοδος)</b><br>
|
||||
Στο αρχείο ρυθμίσεων CGI:IRC (cgiirc.conf) ορίζετε το webirc_password σε ένα καλό κωδικό.<br>
|
||||
Έπειτα, στο unrealircd.conf προσθέτετε μια επιλογή cgiirc για να επιτρέψετε αυτην την διεύθυνση και τον κωδικό και ορίζετε το
|
||||
cgiirc::type σε "webirc".<br>
|
||||
<br>
|
||||
Παράδειγμα:<br>
|
||||
Στο αρχείο ρυθμίσεων CGI:IRC (cgiirc.conf) προσθέτετε:
|
||||
<pre>webirc_password = LpT4xqPI5</pre>
|
||||
Έπειτα, στο unrealircd.conf προσθέτετε την επιλογή cgiirc:
|
||||
<pre>cgiirc {
|
||||
type webirc;
|
||||
hostname "1.2.3.4";
|
||||
password "LpT4xqPI5";
|
||||
};</pre></p>
|
||||
|
||||
<p><b>Πώς να το ρυθμίσετε με την μέθοδο 'old'</b><br>
|
||||
ΣΗΜΕΙΩΣΗ: Αυτή δεν ειναι η προτεινόμενη μέθοδος αφου έχει δύο μειονεκτήματα:
|
||||
αυτή η μέθοδος θα στείλει την IP/διεύθυνση που θα γίνει spoof ώς κωδικός διακομιστή, που σημαίνει οτι δεν μπορείτε να ορίσετε έναν κωδικό διακομιστή ώς ένας CGI:IRC χρήστης. Επιπλέον, ο έλεγχος της πρόσβασης είναι μόνο βασισμένος στην διεύθυνση και δεν χρειάζεται κωδικό όπως η μέθοδος 'webirc'. Με λίγα λόγια,
|
||||
ίσως δεν πρέπει να χρησιμοποιήσετε αυτήν την μέθοδο εκτώς και αν υπάρχει καλός λόγος για να το κάνετε.<br>
|
||||
<br>
|
||||
Στο αρχείο επιλογών CGI:IRC (cgiirc.conf) ορίζετε realhost_as_password σε 1.<br>
|
||||
Έπειτα, στο unrealircd.conf προσθέτετε μια επιλογή cgiirc για να επιτρέψετε αυτήν την διεύθυνση.<br>
|
||||
<br>
|
||||
Παράδειγμα:<br>
|
||||
Στο αρχείο επιλογών CGI:IRC (cgiirc.conf) προσθέτετε:
|
||||
<pre>realhost_as_password = 1</pre>
|
||||
Έπειτα, στο unrealircd.conf προσθέτετε μια επιλογή cgiirc:
|
||||
<pre>cgiirc {
|
||||
type old;
|
||||
hostname "1.2.3.4";
|
||||
};</pre></p>
|
||||
</div>
|
||||
<P><B><SPAN
|
||||
|
||||
style="FONT-SIZE: 18pt">4.36 - Επιλογή Set</SPAN></B> <B><SPAN
|
||||
style="FONT-SIZE: 18pt">4.37 - Επιλογή Set</SPAN></B> <B><SPAN
|
||||
|
||||
style="COLOR: red">REQUIRED</SPAN></B> <SPAN
|
||||
|
||||
@@ -2693,11 +2779,11 @@ href="#includedirective">include</A>.
|
||||
<P><B>set::options::fail-oper-warn;</B><BR>
|
||||
Αν υπάρχει, ο χρήστης θα ενημερώνεται ότι οι αποτυχημένες του/της προσπάθειες /oper έχουν καταγραφεί.</P>
|
||||
<P><B>set::dns::timeout <timevalue>;</B><BR>
|
||||
Μια τιμή που ορίζει τον χρόνο που έχει ένας DNS server για να απαντήσει πρίν αγνοηθεί. Μια τιμή χρόνου είναι μια συμβολοσειρά αριθμών με το d να σημαίνει μέρες, h σημαίνει ώρες, m σημαίνει λεπτά, και s σημαίνει δευτερόλεπτα, για παράδειγμα 1d2h3m σημαίνει 1 μέρα, 2 ώρες, 3 λεπτά.</P>
|
||||
Μια τιμή που ορίζει τον χρόνο που έχει ένας DNS server για να απαντήσει πρίν αγνοηθεί. Μια τιμή χρόνου είναι μια συμβολοσειρά αριθμών με το d να σημαίνει μέρες, h σημαίνει ώρες, m σημαίνει λεπτά, και s σημαίνει δευτερόλεπτα, για παράδειγμα 1d2h3m σημαίνει 1 μέρα, 2 ώρες, 3 λεπτά. (ΔΕΝ ΕΧΕΙ ΥΛΟΠΟΙΗΘΕΙ)</P>
|
||||
<P><B>set::dns::retries <number-of-retries>;</B><BR>
|
||||
Μια αριθμιτκή τιμή που ορίζει τον αριθμό των προσπαθειών που θα γίνονται στον DNS server πρίν καταχωρηθεί ώς αποτυχία.</P>
|
||||
Μια αριθμιτκή τιμή που ορίζει τον αριθμό των προσπαθειών που θα γίνονται στον DNS server πρίν καταχωρηθεί ώς αποτυχία.(ΔΕΝ ΕΧΕΙ ΥΛΟΠΟΙΗΘΕΙ)</P>
|
||||
<P><B>set::dns::nameserver <name-of-dns-server>;</B><BR>
|
||||
Ορίζει την διεύθυνση του server που θα χρησιμοποιηθεί για τις αιτήσεις DNS.</P>
|
||||
Ορίζει την διεύθυνση του server που θα χρησιμοποιηθεί για τις αιτήσεις DNS.(ΔΕΝ ΕΧΕΙ ΥΛΟΠΟΙΗΘΕΙ)</P>
|
||||
<P><B>set::dns::bind-ip <ip>;</B><BR>
|
||||
Ορίζει την IP στην οποία θα συνδεθεί για να κάνει τις αιτήσεις στον μετατροπέα, χρειάζεται σπάνια.</P>
|
||||
<P><B>set::network-name <name-of-network>;</B><BR>
|
||||
@@ -2777,8 +2863,18 @@ href="#includedirective">include</A>.
|
||||
<P><B>set::spamfilter::except <target(s)></B><BR>
|
||||
Αυτοί οι στόχοι είναι εξαιρέσεις απο το spam filtering (καμία ενέργεια δεν θα γίνει), μπορεί να είναι ένας στόχος ή μια λίστα διαχωρισμένη απο κόμματα.. π.χ: except "#help,#spamreport"</P>
|
||||
<p><b>set::check-target-nick-bans <yes|no></b><br>
|
||||
Όποτε κάποιος χρήστης αλλάζει το ψευδώνυμο του/της, ελέγχει αν το ΝΕΟ ψευδώνυμο πρέπει να γίνει ban. Αν πρέπει, δεν επιτρέπει την αλλαγή του ψευδωνύμου. Η αρχική επιλογή είναι yes.</p>
|
||||
</DIV>
|
||||
Όποτε κάποιος χρήστης αλλάζει το ψευδώνυμο του/της, ελέγχει αν το ΝΕΟ ψευδώνυμο πρέπει να γίνει ban. Αν πρέπει, δεν επιτρέπει την αλλαγή του ψευδωνύμου. Η αρχική επιλογή είναι yes.</p>
|
||||
<p><font class="set">set::timesynch::enabled <yes|no></font><br>
|
||||
Ενεργοποιεί η απενεργοποιεί τον συγχρονισμό ώρας στο φόρτωμα. Default is yes.</p>
|
||||
<p><font class="set">set::timesynch::server <IP></font><br>
|
||||
Οι διακομιστές με τους οποίους θα συγχρονίζει την ώρα. Αυτό μπορεί να αποτελείται απο μέχρι 4 IP's χωρισμένες με κόμμα.
|
||||
Οι διακομιστές πρέπει να υποστιρίζουν το προτόκολο NTP έκδοση 4. Η αρχική τιμή είναι να χρησιμοποιούνται 3 διακομιστές συγχρονισμού (US, EU,
|
||||
AU). Αιτήσεις σε αυτούς τους διακομιστές στέλνονται παράλληλα,ενω η γρηγορότερη απάντηση κερδίζει.</p>
|
||||
<p><font class="set">set::timesynch::timeout <time></font><br>
|
||||
Ο μεγαλύτερος χρόνος που θα περιμένει έναν διακομιστή για να απαντήσει. Αυτό είναι μια τιμή μεταξύ του 1 και του 5, περισσότερο δεν είναι δυνατόν γιατι προκαλεί μεγάλη ανακρίβεια. Αυτή η επιλογή έχει αρχική τιμή 3 και μάλλον δεν υπάρχει καλός λόγος για να την αλλάξετε.</p>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
Όταν η επιλογή NOSPOOF είναι ενεργοποιημένη (συνήθως στα Windows), στέλνει μια προειδοποίηση σε κάθε χρήστη να χρησιμοποιήσει
|
||||
την εντολή '/quote pong ..' άν έχει πρόβλημα να συνδεθεί. Η αρχική επιλογή είναι no.</p></DIV>
|
||||
<P><B><SPAN
|
||||
|
||||
style="FONT-SIZE: 18pt">5 – Επιπλέον αρχεία<A name=addtlfiles></A> </SPAN></B></P>
|
||||
@@ -3710,7 +3806,7 @@ style="FONT-SIZE: 18pt">8.8 Protecting against exploits</SPAN></B><A
|
||||
|
||||
name=secantiexploit></A></P>
|
||||
<DIV style="MARGIN-LEFT: 11.25pt">
|
||||
<P>Υπάρχουν τα kernel patches τα οποία κάνουν πολύ δύσκολη την λειτουργία κάποιων stack- και heap-based exploits. Αυτό βέβαια δεν πρέπει να είναι το κύριο σημείο εστίασης της προσοχής σας, έχετε έναν πολυ μεγαλύτερο κίνδυνο να γίνετε exploited μέσω άλλων σημείων εκτώς απο αυτά... για διάφορους λόγους.<BR>
|
||||
<P>Υπάρχουν τα kernel patches τα οποία κάνουν πολύ δύσκολη την λειτουργία κάποιων stack- και heap-based exploits. Αυτό είναι καλό, όμως δεν πρέπει να είναι το κύριο σημείο εστίασης της προσοχής σας, έχετε έναν πολυ μεγαλύτερο κίνδυνο να γίνετε exploited μέσω άλλων σημείων εκτώς απο αυτά... για διάφορους λόγους.<BR>
|
||||
<BR>
|
||||
Υπάρχει κάτι που πρέπει να κάνετε βέβαια, δηλαδή να ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ ΠΑΝΤΑ ΤΗΝ ΤΕΛΕΥΤΑΙΑ ΕΚΔΟΣΗ, εγγραφείτε στην <A
|
||||
|
||||
@@ -3730,7 +3826,7 @@ style="FONT-SIZE: 18pt">9 – Frequently Asked Questions (FAQ)</SPAN></B><A
|
||||
|
||||
name=faq></A></P>
|
||||
<DIV style="MARGIN-LEFT: 11.25pt">
|
||||
<P>Το FAQ είναι διαθέσημο <A href="http://www.vulnscan.org/UnrealIrcd/faq/"
|
||||
<P>Το FAQ είναι διαθέσημο <A href="http://www.vulnscan.org/UnrealIRCd/faq/"
|
||||
|
||||
target=_blank>εδώ</A></P>
|
||||
</DIV>
|
||||
|
||||
+15
-13
@@ -27,12 +27,12 @@ English |
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
<a href="unreal32docs.nl.html">Dutch</a> |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</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.5</font><br>
|
||||
<b>Last doc update:</b> 2006-06-15</div>
|
||||
<font size="4">Version: 3.2.6</font><br>
|
||||
<b>Last doc update:</b> 2006-12-22</div>
|
||||
<br>
|
||||
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Contributors:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
@@ -187,9 +187,9 @@ Windows:<br>
|
||||
<li><b>*NIX versions:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9, 10)
|
||||
</ul>
|
||||
<li><b>Windows version:</b>
|
||||
@@ -1944,17 +1944,16 @@ link <server-name> {
|
||||
</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
A hub has multiple servers linked to it, a leaf has only one link... to you.
|
||||
A server is either a hub or a leaf, you cannot combine these options.
|
||||
A server is a leaf unless it has a hub directive. It is also a leaf if the leaf directive is *, or leafdepth is 1.
|
||||
</p>
|
||||
<p><b>hub</b> (optional)<br>
|
||||
The value is a mask of what servers this hub may connect (ex: *.my.net).
|
||||
</p>
|
||||
<p><b>leaf</b> (optional)<br>
|
||||
The value is a mask that this server will act like a leaf towards.
|
||||
The value is a mask of what servers this hub may <b>not</b> connect. Saying * here would be the same as not having a hub directive.
|
||||
</p>
|
||||
<p><b>leaf-depth</b> (optional)<br>
|
||||
If specified then leaf should be specified too. The value specifies the depth
|
||||
(number of hops) this server may have beneath it.
|
||||
<p><b>leafdepth</b> (optional)<br>
|
||||
The value specifies the depth (number of hops) this server may have beneath it. For example, 1 means the server can't have any links under it (a leaf), 2 means it can link servers but those servers can't link anything under them (that is, this hub can only link leaves). A value of 0 means no limit, and is the default.
|
||||
</p>
|
||||
<p><b>class</b><br>
|
||||
The class this server is put into, often a separate server class is used for this.
|
||||
@@ -2366,12 +2365,12 @@ set {
|
||||
A time value specifying the length of time a DNS server has to respond before
|
||||
a timeout. A time value is a numeric string with d meaning days, h meaning hours,
|
||||
m meaning minutes, and s meaning seconds, for example 1d2h3m means 1 day, 2
|
||||
hours, 3 minutes.</p>
|
||||
hours, 3 minutes. (NOT IMPLEMENTED)</p>
|
||||
<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.</p>
|
||||
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.</p>
|
||||
Specifies the hostname of the server that will be used for DNS lookups. (NOT IMPLEMENTED)</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>
|
||||
@@ -2498,6 +2497,9 @@ AU). Requests to these servers are sent in parallel, fastest reply wins.</p>
|
||||
Maximum time to wait for a time server reply. This is a value between 1 and 5, more is not possible
|
||||
because it causes too much inaccuracy. This setting is 3 by default and there's probably
|
||||
no good reason to change it.</p>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
When NOSPOOF is enabled (usually on Windows), send a warning to each user to use
|
||||
'/quote pong ..' if they are having problems connecting? The default is no.</p>
|
||||
<p></p> </div>
|
||||
<p><b><font size="+2">5 – Additional Files<a name="addtlfiles"></a>
|
||||
</font></b></p><div class="desc">
|
||||
|
||||
+27
-26
@@ -27,12 +27,12 @@ Hungarian |
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
<a href="unreal32docs.nl.html">Dutch</a> |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</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">Verzió: 3.2.5</font><br>
|
||||
<b>Utolsó dokumentáció frissítés:</b> 2006-06-15</div>
|
||||
<font size="4">Verzió: 3.2.6</font><br>
|
||||
<b>Utolsó dokumentáció frissítés:</b> 2006-12-22</div>
|
||||
<br>
|
||||
<b>Fő fejlesztők:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Munkatársak:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
@@ -188,9 +188,9 @@ Windows:<br>
|
||||
<li><b>*NIX verziók:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9, 10)
|
||||
</ul>
|
||||
<li><b>Windows verzió:</b>
|
||||
@@ -1910,10 +1910,10 @@ link <szervern
|
||||
...
|
||||
};
|
||||
};</pre></p>
|
||||
<p>Erre a blokkra van szükséged szerverek linkeléséhez. Kérlek, szakíts egy kis időt ennek az egésznek az
|
||||
elolvasására, mert ez egyike azon legnehezebb dolgoknak, amelyeket a felhasználók gyakran elhibáznak ;P</p>
|
||||
<p>Szerverek linkeléséhez erre a blokkra van szükséged. Kérlek, szakíts egy kis időt ennek az egésznek az
|
||||
elolvasására, mert ez az egyik legnehezebb dolog, amit a felhasználók gyakran elhibáznak ;P</p>
|
||||
<p>Először is, a <b>szervernév</b> a távoli szervered neve, az a név, amely a távoli szerver
|
||||
me { } blokkjában van beállítva, mint a hub.blah.com (nem az IP cím, és a gazdanévtől is eltérő lehet).</p>
|
||||
me { } blokkjában van beállítva, mint a hub.valami.com (nem az IP cím, és a gazdanévtől is eltérő lehet).</p>
|
||||
<p><b>username</b><br>
|
||||
Megadhatod ezt, ha identet használsz a felhasználónevek hitelesítésre, közönséges esetben állítsd "*"-ra.
|
||||
</p>
|
||||
@@ -1929,39 +1929,37 @@ link <szervern
|
||||
</table>
|
||||
</p>
|
||||
<p><b>bind-ip</b> (szabadon választható)<br>
|
||||
Arra használható, hogy a szerver egy megadott IP-re bindeljen (pl. 192.168.0.1-re), ahonnan kellene
|
||||
kapcsolódnia, szinte soha nincs szükség rá.
|
||||
Ezzel megadhatjuk, hogy a helyi szerver milyen IP címről kapcsolódjon (pl. 192.168.0.1-ről), szinte soha nincs szükség rá.
|
||||
</p>
|
||||
<p><b>port</b><br>
|
||||
Azon port száma, ahová kapcsolódjon a szerver (amelyen a távoli szerver figyeli a kapcsolódásokat).
|
||||
</p>
|
||||
<p><b>password-connect</b><br>
|
||||
A távoli szerverre kapcsolódáskor használt jelszó, egyszerű szövegnek kell lennie.
|
||||
A távoli szerverre kapcsolódáskor használt jelszó; egyszerű szövegnek kell lennie.
|
||||
</p>
|
||||
<p><b>password-receive</b><br>
|
||||
A beérkező linkek érvényesítéséhez használt jelszó, lehet titkosított (érvényes kódolási típusok
|
||||
A beérkező linkek érvényesítéséhez használt jelszó; lehet titkosított (érvényes kódolási típusok
|
||||
a crypt, md5, sha1 és ripemd-160). A kódolás-típusa paramétert kihagyhatod, hogy csak egyszerű szöveget
|
||||
használj. Gyakran megegyezik ez a jelszó a password-connect-tel.
|
||||
</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
A hub linkelhet egyszerre több szervert is, amíg a leafnek csak egy linkje lehet... hozzád.
|
||||
Egy szerver vagy hub, vagy leaf, ezek együtt nem használhatóak.
|
||||
A hub egyszerre több szervert is linkelhet, míg a leafnek csak egy linkje lehet... hozzád.
|
||||
Egy szerver leaf, ha nincs hub direktívája. Akkor is leaf, ha a leaf direktíva értéke *, vagy a leafdepth értéke 1.
|
||||
</p>
|
||||
<p><b>hub</b> (szabadon választható)<br>
|
||||
Az értéke egy maszk azokra a szerverekre, amelyekre ez a hub kapcsolódhat (pl: *.sajat.net).
|
||||
Értéke egy maszk olyan szerverekre, amelyekre ez a hub kapcsolódhat (pl: *.sajat.net).
|
||||
</p>
|
||||
<p><b>leaf</b> (szabadon választható)<br>
|
||||
Az értéke egy maszk azokra a szerverekre, amelyek felé ez a szerver leafként viselkedik.
|
||||
Értéke egy maszk olyan szerverekre, amelyekre ez a hub <b>nem</b> kapcsolódhat. A *-nak ugyanolyan hatása van, mintha nem lenne hub direktíva.
|
||||
</p>
|
||||
<p><b>leaf-mélység</b> (szabadon választható)<br>
|
||||
Ha ezt megadod, a leaf opciót is célszerű megadnod. Ez az érték azt a mélységet
|
||||
(ugrások számát) határozza meg, amely alá ez a szerver nem léphet.
|
||||
<p><b>leafdepth</b> (szabadon választható)<br>
|
||||
Ez a direktíva meghatározza, hogy mekkora mélység lehet ezen szerver alatt (csomópontok száma). Például az 1 azt jelenti, hogy a szervernek nem lehet egy linkje sem (vagyis egy leaf), a 2 azt jelenti, hogy ő még linkelhet szervereket, de a hozzá kapcsolódók már nem (vagyis csak leaf szervereket linkelhet). A 0 érték azt jelenti, nincs korlátozás, és ez az alapértelmezés is.
|
||||
</p>
|
||||
<p><b>class</b><br>
|
||||
Azon kapcsolati osztály, ahová helyezzük a szervert. Ehhez gyakran egy külön szerver osztályt szokás használni.
|
||||
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 ezen link tömörítési szintjét (1-9). Csak akkor szokás használni, ha a link::options::zip be van állítva.
|
||||
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ó
|
||||
@@ -1971,9 +1969,9 @@ link <szervern
|
||||
Egy vagy több opció használatának beállítására szolgál. Néha nincs szükség rá.<br>
|
||||
<table border="0">
|
||||
<tr><td><b>ssl</b></td><td> ha SSL portra kapcsolódsz.</td></tr>
|
||||
<tr><td><b>autoconnect</b></td><td> a szerver próbálkozni fog az automatikus kapcsolódással, a class::connfreq-ben
|
||||
<tr><td><b>autoconnect</b></td><td> a szerver automatikusan fog próbálkozni a kapcsolódással a class::connfreq-ben
|
||||
beállított időközönként (a legjobb, ha ezt csak egy oldalról engedélyezed, mint a leaf->hub linkeléseknél)</td></tr>
|
||||
<tr><td><b>zip</b></td><td> ha tömörített (zip) linkeket akarsz; ehhez szükség van a szerverbe belefordítt zip link támogatásra + ezen opció beállítására mindkét oldalon</td></tr>
|
||||
<tr><td><b>zip</b></td><td> ha tömörített (zip) linkeket szeretnél; ehhez szükség van a szerverbe belefordítt zip link támogatásra + ezen opció beállítására mindkét oldalon</td></tr>
|
||||
<tr><td><b>nodnscache</b></td><td> ne használjon gyorsítótárat a kimenő szerverkapcsolat IP címére; használd ezt gyakran változó
|
||||
gazdanevek (például dyndns.org) esetén.</td></tr>
|
||||
<tr><td><b>nohostcheck</b></td><td> ne érvényesítse a távoli gazdanevet (link::hostname); használd ezt gyakran változó
|
||||
@@ -2367,12 +2365,12 @@ set {
|
||||
Egy időérték azon időhossz meghatározására, ami alatt a DNS szervernek válaszolni kell,
|
||||
mielőtt időkifutás történik. Az időérték egy numerikus sztring a napot jelentő "d",
|
||||
az órát jelentő "h", a percet jelentő "m" és a másodpercet jelentő "s" karakterekkel.
|
||||
Például az 1d2h3m jelentése 1 nap, 2 óra és 3 perc.</p>
|
||||
Például az 1d2h3m jelentése 1 nap, 2 óra és 3 perc. (NINCS IMPLEMENTÁLVA)</p>
|
||||
<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ő.</p>
|
||||
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.</p>
|
||||
Meghatározza a DNS lekérdezésekhez használt szerver gazdanevét. (NINCS IMPLEMENTÁLVA)</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>
|
||||
@@ -2499,6 +2497,9 @@ AU). A lek
|
||||
Legfeljebb ennyi ideig vár az időszerverek válaszára. Ez egy érték 1 és 5 között; több nem lehet,
|
||||
mert túl nagy pontatlanságot okozna. Ez az érték alapértelmezésben 3, és nem valószínű, hogy
|
||||
érdemes megváltoztatni.</p>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
Ha a NOSPOOF engedélyezett (általában Windowson), küldjön egy figyelmeztetést minden felhasználónak, hogy
|
||||
használják a "/quote pong .." parancsot, ha kapcsolódási problémájuk van. Az alapértelmezés "no".</p>
|
||||
<p></p> </div>
|
||||
<p><b><font size="+2">5 – További fájlok<a name="addtlfiles"></a>
|
||||
</font></b></p><div class="desc">
|
||||
|
||||
+20
-14
@@ -25,18 +25,18 @@
|
||||
<a href="unreal32docs.gr.html">Greek</a> |
|
||||
Dutch |
|
||||
<a href="unreal32docs.ru.html">Russian</a> |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
<a href="unreal32docs.tr.html">Turkish</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.5</font><br>
|
||||
<b>Laatste documentatie wijziging:</b> 2006-06-15</div>
|
||||
<font size="4">Version: 3.2.6</font><br>
|
||||
<b>Laatste documentatie wijziging:</b> 2006-12-22</div>
|
||||
|
||||
<br>
|
||||
<b>Hoofd programmeurs:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Medewerkers:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
<b>Documentatie:</b> CKnight^ / Syzop<br>
|
||||
<b>Nederlandse vertaling:</b> Mark (<a href="irc://irc.irc-chatters.net/dutch">#dutch op irc.irc-chatters.net</a>)<br>
|
||||
<b>Nederlandse vertaling:</b> Mark (<a href="irc://irc.unrealircd.com/unreal-dutch">#unreal-dutch op irc.unrealircd.com</a>)<br>
|
||||
<p>Om dit document te bekijken heb je een geschikte browser nodig, welke hier beneden staan. De meest
|
||||
recente documentatie staat op <a href="http://www.vulnscan.org/UnrealIRCd/unreal32docs.html">
|
||||
http://www.vulnscan.org/UnrealIRCd/unreal32docs.html</a> en een FAQ staat op
|
||||
@@ -194,9 +194,9 @@ Windows:<br>
|
||||
<li><b>*NIX versions:</b>
|
||||
<ul>
|
||||
<li>Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>FreeBSD (4.*, 5.*)
|
||||
<li>FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>NetBSD (2.*)
|
||||
<li>OpenBSD (3.7, 3.8)
|
||||
<li>OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>Solaris (9, 10)
|
||||
</ul>
|
||||
<li><b>Windows versie:</b>
|
||||
@@ -2014,17 +2014,20 @@ link <server-name> {
|
||||
</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
Een hub heeft meerdere servers aan zich gelinkt, een leaf heeft maar 1 server.. naar jou.
|
||||
Een server is of een hub, of een leaf, je kan ze niet mengen.
|
||||
Een server is altijd een leaf, tenzij je hub instelt. Ze is ook een leaf als je leaf * hebt, of leafdepth 1 is.
|
||||
</p>
|
||||
<p><b>hub</b> (optioneel)<br>
|
||||
De waarde is de mask van de servers waarmee deze hub mag verbinden (bijv. *.my.net)
|
||||
</p>
|
||||
<p><b>leaf</b> (optioneel)<br>
|
||||
De waarde is de mask van waartegen deze server zich als een leaf zal gedragen.
|
||||
De waarde is de mask waartegen deze hub <b>niet> mag verbinden. Als je * instelt krijg je hetzelfde
|
||||
effect als geen hub directive instellen.
|
||||
</p>
|
||||
<p><b>leaf-depth</b> (optioneel)<br>
|
||||
Wanneer leaf ingesteld is, moet dit ook worden ingesteld. De waarde is het aantal
|
||||
hops (aantal servers) welke deze server onder zich mag hebben.
|
||||
Deze waarde geeft aan hoeveel hops (aantal servers) deze server onder zich mag hebben. Bijvoorbeeld,
|
||||
1 betekent dat deze server geen enkele andere server onder zich mag hebben (een leaf). 2 betekent dat
|
||||
er gelinkt mag worden naar servers die geen servers onder zich hebben (een hub die alleen leafs linkt).
|
||||
De waarde 0 betekent geen limiet en is de standaard waarde.
|
||||
</p>
|
||||
<p><b>class</b><br>
|
||||
De class waarin de server geplaatst wordt. Meestal is er een aparte server-class.
|
||||
@@ -2439,12 +2442,12 @@ gemiddeld 2048:60=34 tekens per ban toe.</p>
|
||||
Een tijdsduur die specificeert hoelang een DNS server erover mag doen voordat
|
||||
er een timeout volgt. De tijd is een numerieke waarde, waarin de d voor dag staat,
|
||||
de h voor uur, m voor minute en s voor seconde. Voorbeeld: 1d2h3m betekent
|
||||
1 dag, 2 uur en 3 minuten.</p>
|
||||
1 dag, 2 uur en 3 minuten (NOG NIET INGEVOERD).</p>
|
||||
<p><font class="set">set::dns::retries <number-of-retries>;</font><br>
|
||||
Een numerieke waarde die instelt hoeveel keer er opnieuw geprobeerd moet worden
|
||||
een DNS lookup te voltooien.</p>
|
||||
een DNS lookup te voltooien (NOG NIET INGEVOERD).</p>
|
||||
<p><font class="set">set::dns::nameserver <name-of-dns-server>;</font><br>
|
||||
De hostnaam die gebruikt moet worden voor een DNS lookup.</p>
|
||||
De hostnaam die gebruikt moet worden voor een DNS lookup (NOG NIET INGEVOERD).</p>
|
||||
<p><font class="set">set::dns::bind-ip <ip>;</font><br>
|
||||
Het IP waaraan gebonden moet worden voor het resolven. Bijna nooit nodig.</p>
|
||||
<p><font class="set">set::network-name <name-of-network>;</font><br>
|
||||
@@ -2573,8 +2576,11 @@ gemiddeld 2048:60=34 tekens per ban toe.</p>
|
||||
Maximale wachttijd voor een antwoord. Dit is een waarde tussen 1 en 5, hoger kan niet vanwege
|
||||
een te hoge incorrectheid. Standaard is dit 3, en er is waarschijnlijk geen goede reden
|
||||
om dit aan te passen.</p>
|
||||
<p></p> </div>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
Wanneer NOSPOOF aan staat (meestal op Windows), stuur dan een bericht naar de gebruiker
|
||||
om '/quote pong ..' te typen als ze problemen hebben met verbinden? Standaard is no</p>
|
||||
|
||||
<p></p> </div>
|
||||
<p><b><font size="+2">5 – Aanvullende bestanden<a name="addtlfiles"></a>
|
||||
</font></b></p><div class="desc">
|
||||
Als aanvulling op het configuariebestand heeft Unreal nog een aantal andere bestanden, zoals
|
||||
|
||||
+29
-22
@@ -18,14 +18,14 @@
|
||||
<A href="unreal32docs.html">English</A> | <A href="unreal32docs.de.html">German</A>
|
||||
| <A href="unreal32docs.es.html">Spanish</A> | <A href="unreal32docs.hu.html">Hungarian</A>
|
||||
| <A href="unreal32docs.fr.html">French</A> | <A href="unreal32docs.gr.html">Greek</A>
|
||||
| <A href="unreal32docs.nl.html">Dutch</A> | Russian |
|
||||
<a href="unreal32docs.tk.html">Turkish</a>
|
||||
| <A href="unreal32docs.nl.html">Dutch</A> | Russian | <a href="unreal32docs.tr.html">
|
||||
Turkish</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">Версия: 3.2.5</font><br>
|
||||
<b>Последнее обновление:</b> 2006-06-15</div>
|
||||
<font size="4">Версия: 3.2.6</font><br>
|
||||
<b>Последнее обновление:</b> 2006-12-22</div>
|
||||
<br>
|
||||
<b>Главные программисты:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Вкладчики:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel
|
||||
@@ -226,11 +226,11 @@
|
||||
<li>
|
||||
Linux (2.2.*, 2.4.*, 2.6.*)
|
||||
<li>
|
||||
FreeBSD (4.*, 5.*)
|
||||
FreeBSD (4.*, 5.*, 6.*)
|
||||
<li>
|
||||
NetBSD (2.*)
|
||||
<li>
|
||||
OpenBSD (3.7, 3.8)
|
||||
OpenBSD (3.7, 3.8, 3.9)
|
||||
<li>
|
||||
Solaris (9, 10)
|
||||
</li>
|
||||
@@ -2766,22 +2766,25 @@ deny channel {
|
||||
md5, sha1, ripemd-160). Вы можете не трогать тип авторизации и использовать
|
||||
пароль в текстовом виде. Часто этот пароль совпадает с password-connect.
|
||||
</p>
|
||||
<p><b>hub vs leaf</b><br>
|
||||
<P><b>hub vs leaf</b><br>
|
||||
Хаб позволяет соединения с несколькими серверами, а лист - только с одним.
|
||||
Сервер может быть или хабом, или листом, нельзя комбинировать данные опции.
|
||||
</p>
|
||||
<p><b>hub</b> (необязателен)<br>
|
||||
Сервер является листом до тех пор, пока не имеет директивы hub. Сервер
|
||||
является листом также, если у него указана директива leaf * или
|
||||
директива leafdepth установлена 1.</P>
|
||||
<P><b>hub</b> (необязателен)<br>
|
||||
Значение - это маска, указывающая, какие сервера могут присоединиться к данному
|
||||
хабу (пример: *.my.net).
|
||||
</p>
|
||||
<p><b>leaf</b> (необязателен)<br>
|
||||
Маска, с которой этот сервер может выступать как лист.
|
||||
</p>
|
||||
<p><b>leaf-depth</b> (необязателен)<br>
|
||||
Если определён этот параметр, то должен быть определён и leaf. Значение
|
||||
определяет глубину (количество переходов), которую не должен превышать данный
|
||||
сервер до указанного.
|
||||
</p>
|
||||
</P>
|
||||
<P><b>leaf</b> (необязателен)<br>
|
||||
Значение - это маска, указывающая с какими серверами данный сервер <STRONG>не</STRONG>
|
||||
будет хабом. Указывая значение в * будет равнозначным как неимение
|
||||
директивы hub.</P>
|
||||
<P><b>leafdepth</b> (необязателен)<br>
|
||||
Значение определяет глубину (количество переходов), которые может иметь данный
|
||||
сервер. Например, 1 - значит, что сервер не может иметь линков под собой
|
||||
(лист), 2 - значит, что сервер может иметь под собой ещё линки, но те сервера
|
||||
больше не могут (т.к. только хабы могут линковать листы). Значение 0 -
|
||||
определяет отсутствие ограничения и является значением по умолчанию.</P>
|
||||
<p><b>class</b><br>
|
||||
Класс сервера, для этого часто используется класс server.
|
||||
</p>
|
||||
@@ -3255,13 +3258,13 @@ cgiirc {
|
||||
<p><font class="set">set::dns::timeout <интервал-времени>;</font><br>
|
||||
Интервал времени, определяющий таймаут DNS-сервера. Это строка, где d означает
|
||||
дни, h - часы, m - минуты и s - секунды. К примеру, 1d2h3m означает 1 день, 2
|
||||
часа и 3 минуты.</p>
|
||||
часа и 3 минуты (НЕ РЕАЛИЗОВАНО).</p>
|
||||
<p><font class="set">set::dns::retries <количество-повторов>;</font><br>
|
||||
Число, определяющее количество попыток запроса DNS перед выдачей сообщения об
|
||||
ошибке.</p>
|
||||
ошибке (НЕ РЕАЛИЗОВАНО).</p>
|
||||
<p><font class="set">set::dns::nameserver <имя-dns-сервера>;</font><br>
|
||||
Определяет имя сервера (hostname), который будет использован в качестве DNS
|
||||
запросов.</p>
|
||||
запросов (НЕ РЕАЛИЗОВАНО).</p>
|
||||
<p><font class="set">set::dns::bind-ip <ip>;</font><br>
|
||||
Привязка к определенному IP для DNS-запросов, очень редко используется.</p>
|
||||
<p><font class="set">set::network-name <имя-сети>;</font><br>
|
||||
@@ -3408,6 +3411,10 @@ cgiirc {
|
||||
Максимальное время ожидания ответа от сервера. Переменная, принимающая значение
|
||||
от 1 до 5 (нет смысла величины большей, т.к. возникнет погрешность). По
|
||||
умолчанию установлено в 3 и, по большому счёту, нет смысла менять это значение.</p>
|
||||
<p><font class="set">set::pingpong-warning <yes|no></font><br>
|
||||
Когда включён NOSPOOF (обычно в ОС Windows), то он посылает предупреждение
|
||||
каждому пользователю использовать '/quote pong ..', если он имеет проблемы с
|
||||
подключением. По умолчанию отключено (no).</p>
|
||||
</div>
|
||||
<p><b><font size="+2">5 – Дополнительные файлы<a name="addtlfiles"></a> </font></b>
|
||||
</p>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -159,7 +159,8 @@ help Chmodes {
|
||||
" a <nickname> = Gives Channel Admin to the user";
|
||||
" q <nickname> = Gives Owner status to the user";
|
||||
" -";
|
||||
" b <nick!ident@host> = Bans the nick!ident@host from the channel [h]";
|
||||
" b <nick!ident@host> = Bans the nick!ident@host from the channel";
|
||||
" Extended bantypes (for more info see /HELPOP EXTBANS) [h]";
|
||||
" c = Block messages containing mIRC color codes [o]";
|
||||
" e <nick!ident@host> = Overrides a ban for matching users [h]";
|
||||
" I <nick!ident@host> = Overrides +i for matching users [h]";
|
||||
@@ -194,6 +195,35 @@ help Chmodes {
|
||||
" ==------------------------------oOo----------------------------==";
|
||||
};
|
||||
|
||||
help ExtBans {
|
||||
" Extended bantypes: ";
|
||||
" -";
|
||||
" ==-Type--------Name---------------------------Explanation-----------------------==";
|
||||
" | | People matching these bans can join but are unable to ";
|
||||
" ~q | Quiet | speak, unless they have +v or higher. ";
|
||||
" | | Example: ";
|
||||
" | | +bb ~q:*!*@blah.blah.com ~q:nick*!*@* ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | People matching these bans cannot change nicks, unless ";
|
||||
" ~n | nickchange | they have +v or higher. ";
|
||||
" | | Example: ";
|
||||
" | | +bb ~n:*!*@*.aol.com ~n:nick*!*@* ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | If the user is in this channel then (s)he is unable to ";
|
||||
" | [prefix] | join. A prefix can also be specified (+/%/@/&/~) which ";
|
||||
" ~ñ | channel | means that it will only match if the user has that ";
|
||||
" | | rights or higher on the specified channel. ";
|
||||
" | | Example: +b ~c:#lamers, +e ~c:@#trusted ";
|
||||
"-----------------------------------------------------------------------------------";
|
||||
" | | If the realname of a user matches this then (s)he is ";
|
||||
" | | unable to join. ";
|
||||
" ~r | realname | Example: +b ~r:*Stupid_bot_script* ";
|
||||
" | | NOTE: an underscore ('_') matches both a space (' ') and";
|
||||
" | | an underscore ('_'), so this ban would ";
|
||||
" | | match 'Stupid bot script v1.4'. ";
|
||||
" ==------------------------------------------------------------------------------==";
|
||||
};
|
||||
|
||||
help Chmodef {
|
||||
" The +f channel mode provides comprehensive flood protection for a channel.";
|
||||
" This mode allows you to prevent join, nick change, CTCP, text, and knock";
|
||||
@@ -207,7 +237,7 @@ help Chmodef {
|
||||
" ==-----Type-----Name--------Default Action---Other Actions-----==";
|
||||
" c CTCP +C m, M";
|
||||
" j Join +i R";
|
||||
" k Knock +k";
|
||||
" k Knock +K";
|
||||
" m Messages +m M";
|
||||
" n Nickchange +N";
|
||||
" t Text kick b";
|
||||
@@ -1132,7 +1162,7 @@ help Svskill {
|
||||
};
|
||||
|
||||
help Svsnoop {
|
||||
" Enables or disables whether Global IRCop functions";
|
||||
" Enables or disables whether IRCop functions";
|
||||
" exist on the server in question or not.";
|
||||
" Must be sent through an U:Lined server.";
|
||||
" -";
|
||||
@@ -1226,9 +1256,11 @@ help Svsnline {
|
||||
" Must be sent through an U:Lined server.";
|
||||
" The reason must be a single parameter therefore";
|
||||
" spaces are indicated by _, Unreal will internally";
|
||||
" translate these to spaces";
|
||||
" translate these to spaces.";
|
||||
" -";
|
||||
" Syntax: SVSNLINE +/- <reason_for_ban> :<realname>";
|
||||
" Syntax: SVSNLINE + <reason_for_ban> :<realname> (To add a ban)";
|
||||
" SVSNLINE - :<realname> (To remove a ban)";
|
||||
" SVSNLINE * (To clear all bans)";
|
||||
" Example: SVSNLINE + sub7_drone :*sub7*";
|
||||
};
|
||||
|
||||
@@ -1244,18 +1276,18 @@ help Svslusers {
|
||||
|
||||
help Svswatch {
|
||||
" Changes the WATCH list of a user.";
|
||||
" Must be sent trough an U:Lined server.";
|
||||
" Must be sent through an U:Lined server.";
|
||||
" Syntax: SVSWATCH <nick> :<watch parameters>";
|
||||
" Example: SVSWATCH Blah :+Blih!*@* +Bluh!*@* +Bleh!*@*.com";
|
||||
};
|
||||
|
||||
help Svssilence {
|
||||
" Changes the SILENCE list of a user.";
|
||||
" Must be sent trough an U:Lined server.";
|
||||
" Must be sent through an U:Lined server.";
|
||||
" In contrast to the SILENCE command, you can add/remove";
|
||||
" multiple entries in one line.";
|
||||
" Syntax: SVSSILENCE <nick> :<silence parameters>";
|
||||
" Example: SILENCE Blah :+*!*@*.com +*!*@*.bla.co.uk";
|
||||
" Example: SVSSILENCE Blah :+*!*@*.com +*!*@*.bla.co.uk";
|
||||
};
|
||||
|
||||
help Svssno {
|
||||
@@ -1272,7 +1304,7 @@ help Svs2sno {
|
||||
" Must be sent through an U:Lined server.";
|
||||
" -";
|
||||
" Syntax: SVS2SNO <nickname> <snomasks>";
|
||||
" Example: SVSSNO joe +Gc";
|
||||
" Example: SVS2SNO joe +Gc";
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -429,13 +429,6 @@
|
||||
*/
|
||||
#define FAST_BADWORD_REPLACE
|
||||
|
||||
/*
|
||||
* Only important for people using IPv6 (default should be ok for now) -Onliner
|
||||
* Because ip6.arpa is still not delegated for the 6bone (3ffe::/16)
|
||||
* this options allows you to still resolve it using ip6.int.
|
||||
*/
|
||||
#define SIXBONE_HACK
|
||||
|
||||
/*
|
||||
* Forces Unreal to use compressed IPv6 addresses rather than expanding them
|
||||
*/
|
||||
|
||||
@@ -151,6 +151,7 @@ struct zConfiguration {
|
||||
int timesynch_enabled;
|
||||
int timesynch_timeout;
|
||||
char *timesynch_server;
|
||||
int pingpong_warning;
|
||||
aNetwork network;
|
||||
};
|
||||
|
||||
@@ -261,6 +262,7 @@ extern MODVAR aConfiguration iConf;
|
||||
#define TIMESYNCH_TIMEOUT iConf.timesynch_timeout
|
||||
#define TIMESYNCH_SERVER iConf.timesynch_server
|
||||
|
||||
#define PINGPONG_WARNING iConf.pingpong_warning
|
||||
|
||||
/* Used for "is present?" and duplicate checking */
|
||||
struct SetCheck {
|
||||
@@ -280,6 +282,7 @@ struct SetCheck {
|
||||
unsigned has_dns_timeout:1;
|
||||
unsigned has_dns_retries:1;
|
||||
unsigned has_dns_nameserver:1;
|
||||
unsigned has_dns_bind_ip:1;
|
||||
#ifdef THROTTLING
|
||||
unsigned has_throttle_period:1;
|
||||
unsigned has_throttle_connections:1;
|
||||
@@ -293,6 +296,7 @@ struct SetCheck {
|
||||
unsigned has_auto_join:1;
|
||||
unsigned has_oper_auto_join:1;
|
||||
unsigned has_check_target_nick_bans:1;
|
||||
unsigned has_pingpong_warning:1;
|
||||
unsigned has_oper_only_stats:1;
|
||||
unsigned has_maxchannelsperuser:1;
|
||||
unsigned has_maxdccallow:1;
|
||||
|
||||
@@ -112,6 +112,8 @@ extern void module_loadall(int module_load);
|
||||
extern long set_usermode(char *umode);
|
||||
extern char *get_modestr(long umodes);
|
||||
extern void config_error(char *format, ...) __attribute__((format(printf,1,2)));
|
||||
extern void config_warn(char *format, ...) __attribute__((format(printf,1,2)));
|
||||
|
||||
extern MODVAR int config_verbose;
|
||||
extern void config_progress(char *format, ...) __attribute__((format(printf,1,2)));
|
||||
extern void ipport_seperate(char *string, char **ip, char **port);
|
||||
@@ -735,6 +737,8 @@ extern MODVAR char *(*stripbadwords_message)(char *str, int *blocked);
|
||||
extern MODVAR char *(*stripbadwords_quit)(char *str, int *blocked);
|
||||
extern MODVAR unsigned char *(*StripColors)(unsigned char *text);
|
||||
extern MODVAR const char *(*StripControlCodes)(unsigned char *text);
|
||||
extern MODVAR void (*spamfilter_build_user_string)(char *buf, char *nick, aClient *acptr);
|
||||
extern MODVAR int (*is_silenced)(aClient *sptr, aClient *acptr);
|
||||
/* /Efuncs */
|
||||
extern MODVAR aMotd *opermotd, *svsmotd, *motd, *botmotd, *smotd;
|
||||
extern MODVAR int max_connection_count;
|
||||
@@ -776,3 +780,6 @@ extern char *unreal_time_synch_error(void);
|
||||
extern int unreal_time_synch(int timeout);
|
||||
extern int extban_is_banned_helper(char *buf);
|
||||
extern char *getcloak(aClient *sptr);
|
||||
extern void kick_insecure_users(aChannel *);
|
||||
extern int file_exists(char* file);
|
||||
extern void free_motd(aMotd *m);
|
||||
|
||||
@@ -57,3 +57,7 @@ extern __u_l inet_network();
|
||||
extern __u_l inet_lnaof();
|
||||
#endif
|
||||
#undef __u_l
|
||||
|
||||
#ifndef INADDR_NONE
|
||||
#define INADDR_NONE 0xffffffff
|
||||
#endif
|
||||
|
||||
@@ -636,6 +636,8 @@ int CallCmdoverride(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, ch
|
||||
#define HOOKTYPE_REMOTE_PART 44
|
||||
#define HOOKTYPE_REMOTE_KICK 45
|
||||
#define HOOKTYPE_LOCAL_SPAMFILTER 46
|
||||
#define HOOKTYPE_SILENCED 47
|
||||
#define HOOKTYPE_POST_SERVER_CONNECT 48
|
||||
|
||||
/* Hook return values */
|
||||
#define HOOK_CONTINUE 0
|
||||
@@ -680,6 +682,8 @@ int CallCmdoverride(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, ch
|
||||
#define EFUNC_STRIPBADWORDS_QUIT 30
|
||||
#define EFUNC_STRIPCOLORS 31
|
||||
#define EFUNC_STRIPCONTROLCODES 32
|
||||
#define EFUNC_SPAMFILTER_BUILD_USER_STRING 33
|
||||
#define EFUNC_IS_SILENCED 34
|
||||
|
||||
/* Module flags */
|
||||
#define MODFLAG_NONE 0x0000
|
||||
|
||||
@@ -613,6 +613,11 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define OPIsNetAdmin(x) ((x)->oflag & OFLAG_NETADMIN)
|
||||
#define OPIsCoAdmin(x) ((x)->oflag & OFLAG_COADMIN)
|
||||
#define OPIsWhois(x) ((x)->oflag & OFLAG_WHOIS)
|
||||
#ifdef SHOW_SECRET
|
||||
#define OPCanSeeSecret(x) IsAnOper(x)
|
||||
#else
|
||||
#define OPCanSeeSecret(x) IsNetAdmin(x)
|
||||
#endif
|
||||
|
||||
#define OPSetRehash(x) ((x)->oflag |= OFLAG_REHASH)
|
||||
#define OPSetDie(x) ((x)->oflag |= OFLAG_DIE)
|
||||
|
||||
+5
-5
@@ -24,7 +24,7 @@
|
||||
/**/
|
||||
#define COMPILEINFO DEBUGMODESET DEBUGSET
|
||||
|
||||
/* Version info follows, current: Unreal3.2.3
|
||||
/* Version info follows
|
||||
* Please be sure to update ALL fields when changing the version.
|
||||
* Also don't forget to bump the protocol version every release.
|
||||
*/
|
||||
@@ -40,18 +40,18 @@
|
||||
#define UNREAL_VERSION_MAJOR 2
|
||||
|
||||
/** The minor version number (eg: 1 for Unreal3.2.1), negative numbers for unstable/alpha/beta */
|
||||
#define UNREAL_VERSION_MINOR 5
|
||||
#define UNREAL_VERSION_MINOR 6
|
||||
|
||||
/** Year + week of the year (with Monday as first day of the week).
|
||||
* 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 200624
|
||||
#define UNREAL_VERSION_TIME 200651
|
||||
|
||||
#define UnrealProtocol 2308
|
||||
#define UnrealProtocol 2309
|
||||
#define PATCH1 "3"
|
||||
#define PATCH2 ".2"
|
||||
#define PATCH3 ".5"
|
||||
#define PATCH3 ".6"
|
||||
#define PATCH4 ""
|
||||
#define PATCH5 ""
|
||||
#define PATCH6 ""
|
||||
|
||||
+2
-2
@@ -120,14 +120,14 @@ MODDBGCFLAG=/LDd /MD /Zi
|
||||
|
||||
FD_SETSIZE=/D FD_SETSIZE=16384
|
||||
CFLAGS=$(DBGCFLAG) $(LIBCURL_INC) $(ZLIB_INC) $(OPENSSL_INC) /J /I ./INCLUDE /I ./INCLUDE/WIN32/ARES /Fosrc/ /nologo \
|
||||
$(ZIPCFLAGS) $(CURLCFLAGS) $(FD_SETSIZE) $(SSLCFLAGS) $(NS_ADDRESS) /D NOSPOOF=1 /c /D _CRT_SECURE_NO_DEPRECATE /D _USE_32BIT_TIME_T
|
||||
$(ZIPCFLAGS) $(CURLCFLAGS) $(FD_SETSIZE) $(SSLCFLAGS) $(NS_ADDRESS) /D NOSPOOF=1 /c /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _USE_32BIT_TIME_T
|
||||
LFLAGS=kernel32.lib user32.lib gdi32.lib shell32.lib ws2_32.lib advapi32.lib \
|
||||
dbghelp.lib oldnames.lib comctl32.lib comdlg32.lib $(ZLIB_LIB) $(ZIPLIB) \
|
||||
$(OPENSSL_LIB) $(SSLLIBS) $(LIBCURL_LIB) $(CURLLIB) /def:wircd.def /implib:wircd.lib \
|
||||
/nologo $(DBGLFLAG) /out:WIRCD.EXE
|
||||
MODCFLAGS=$(MODDBGCFLAG) $(SSLCFLAGS) $(ZIPCFLAGS) $(CURLCFLAGS) /J /Fesrc/modules/ \
|
||||
/Fosrc/modules/ /nologo $(LIBCURL_INC) $(ZLIB_INC) $(OPENSSL_INC) /I ./INCLUDE /D \
|
||||
DYNAMIC_LINKING /D NOSPOOF /D MODULE_COMPILE /D _CRT_SECURE_NO_DEPRECATE /D _USE_32BIT_TIME_T
|
||||
DYNAMIC_LINKING /D NOSPOOF /D MODULE_COMPILE /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _USE_32BIT_TIME_T
|
||||
MODLFLAGS=/link /def:src/modules/module.def wircd.lib $(OPENSSL_LIB) $(SSLLIBS) \
|
||||
$(ZLIB_LIB) $(ZIPLIB) $(LIBCURL_LIB) $(CURLLIB)
|
||||
|
||||
|
||||
+14
-10
@@ -898,10 +898,15 @@ void channel_modes(aClient *cptr, char *mbuf, char *pbuf, aChannel *chptr)
|
||||
{
|
||||
aCtab *tab = &cFlagTab[0];
|
||||
char bcbuf[1024];
|
||||
int ismember;
|
||||
#ifdef EXTCMODE
|
||||
int i;
|
||||
#endif
|
||||
|
||||
ismember = (IsMember(cptr, chptr) || IsServer(cptr) || IsULine(cptr)) ? 1 : 0;
|
||||
|
||||
*pbuf = '\0';
|
||||
|
||||
*mbuf++ = '+';
|
||||
/* Paramless first */
|
||||
while (tab->mode != 0x0)
|
||||
@@ -922,15 +927,13 @@ void channel_modes(aClient *cptr, char *mbuf, char *pbuf, aChannel *chptr)
|
||||
if (chptr->mode.limit)
|
||||
{
|
||||
*mbuf++ = 'l';
|
||||
if (IsMember(cptr, chptr) || IsServer(cptr)
|
||||
|| IsULine(cptr))
|
||||
if (ismember)
|
||||
(void)ircsprintf(pbuf, "%d ", chptr->mode.limit);
|
||||
}
|
||||
if (*chptr->mode.key)
|
||||
{
|
||||
*mbuf++ = 'k';
|
||||
if (IsMember(cptr, chptr) || IsServer(cptr)
|
||||
|| IsULine(cptr))
|
||||
if (ismember)
|
||||
{
|
||||
/* FIXME: hope pbuf is long enough */
|
||||
(void)snprintf(bcbuf, sizeof bcbuf, "%s ", chptr->mode.key);
|
||||
@@ -940,8 +943,7 @@ void channel_modes(aClient *cptr, char *mbuf, char *pbuf, aChannel *chptr)
|
||||
if (*chptr->mode.link)
|
||||
{
|
||||
*mbuf++ = 'L';
|
||||
if (IsMember(cptr, chptr) || IsServer(cptr)
|
||||
|| IsULine(cptr))
|
||||
if (ismember)
|
||||
{
|
||||
/* FIXME: is pbuf long enough? */
|
||||
(void)snprintf(bcbuf, sizeof bcbuf, "%s ", chptr->mode.link);
|
||||
@@ -956,8 +958,7 @@ void channel_modes(aClient *cptr, char *mbuf, char *pbuf, aChannel *chptr)
|
||||
#endif
|
||||
{
|
||||
*mbuf++ = 'f';
|
||||
if (IsMember(cptr, chptr) || IsServer(cptr)
|
||||
|| IsULine(cptr))
|
||||
if (ismember)
|
||||
{
|
||||
#ifdef NEWCHFLOODPROT
|
||||
ircsprintf(bcbuf, "%s ", channel_modef_string(chptr->mode.floodprot));
|
||||
@@ -978,8 +979,11 @@ void channel_modes(aClient *cptr, char *mbuf, char *pbuf, aChannel *chptr)
|
||||
(chptr->mode.extmode & Channelmode_Table[i].mode))
|
||||
{
|
||||
*mbuf++ = Channelmode_Table[i].flag;
|
||||
strcat(pbuf, Channelmode_Table[i].get_param(extcmode_get_struct(chptr->mode.extmodeparam, Channelmode_Table[i].flag)));
|
||||
strcat(pbuf, " ");
|
||||
if (ismember)
|
||||
{
|
||||
strcat(pbuf, Channelmode_Table[i].get_param(extcmode_get_struct(chptr->mode.extmodeparam, Channelmode_Table[i].flag)));
|
||||
strcat(pbuf, " ");
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
+11
-9
@@ -372,7 +372,7 @@ int charsys_postconftest(void)
|
||||
int x=0;
|
||||
if ((langav & LANGAV_ASCII) && (langav & LANGAV_GBK))
|
||||
{
|
||||
config_error("ERROR: set::accept-language specifies incorrect combination "
|
||||
config_error("ERROR: set::allowed-nickchars specifies incorrect combination "
|
||||
"of languages: high-ascii languages (such as german, french, etc) "
|
||||
"cannot be mixed with chinese/..");
|
||||
return -1;
|
||||
@@ -393,7 +393,7 @@ int x=0;
|
||||
x++;
|
||||
if (x > 1)
|
||||
{
|
||||
config_status("WARNING: set::accept-language: "
|
||||
config_status("WARNING: set::allowed-nickchars: "
|
||||
"Mixing of charsets (eg: latin1+latin2) can cause display problems");
|
||||
}
|
||||
return 1;
|
||||
@@ -408,7 +408,7 @@ int mid;
|
||||
while (start <= stop)
|
||||
{
|
||||
mid = (start+stop)/2;
|
||||
if (smycmp(name, langlist[mid].directive) < 0)
|
||||
if (!langlist[mid].directive || smycmp(name, langlist[mid].directive) < 0)
|
||||
stop = mid-1;
|
||||
else if (strcmp(name, langlist[mid].directive) == 0)
|
||||
return &langlist[mid];
|
||||
@@ -430,7 +430,7 @@ LangList *l = charsys_find_language(name);
|
||||
}
|
||||
if (!strcmp(name, "euro-west"))
|
||||
{
|
||||
config_error("set::accept-language: ERROR: 'euro-west' got renamed to 'latin1'");
|
||||
config_error("set::allowed-nickchars: ERROR: 'euro-west' got renamed to 'latin1'");
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
@@ -553,8 +553,8 @@ char latin1=0, latin2=0, w1250=0, w1251=0, chinese=0;
|
||||
if (latin1 || !strcmp(name, "catalan"))
|
||||
{
|
||||
/* supplied by Trocotronic */
|
||||
/* a`, A`, e`, E`, e', E', i', I', o`, O`, o', O', u', U', i", I", u", U" */
|
||||
charsys_addallowed("鈶駏橑簐藟鯙𨪛懖𣆥");
|
||||
/* a`, A`, e`, weird-c, weird-C, E`, e', E', i', I', o`, O`, o', O', u', U', i", I", u", U", weird-dot */
|
||||
charsys_addallowed("àÀçÇèÈéÉíÍòÒóÓúÚïÏüÜ");
|
||||
}
|
||||
if (latin1 || !strcmp(name, "swedish"))
|
||||
{
|
||||
@@ -618,18 +618,20 @@ char latin1=0, latin2=0, w1250=0, w1251=0, chinese=0;
|
||||
|
||||
if (w1251 || !strcmp(name, "belarussian-w1251"))
|
||||
{
|
||||
/* supplied by Anton Samets & ss:
|
||||
/* supplied by Bock (Samets Anton) & ss:
|
||||
* 128-159, 161, 162, 178, 179 and 223-254
|
||||
* Corrected 01.11.2006 to more "correct" behavior by Bock
|
||||
*/
|
||||
charsys_addallowed("擱藏霰匸�帊昅恘倳眑婭笫崷窙嗲睧颬睼麧緗鴇膹擨闀貘覷鏷禴矙𡜍𦶠�邪﹜眾");
|
||||
charsys_addallowed("ÀÁÂÃÄŨÆÇ²ÉÊËÌÍÎÏÐÑÒÓ¡ÔÕÖרÛÜÝÞßàáâãä叿ç³éêëìíîïðñòó¢ôõö÷øûüýþÿ");
|
||||
}
|
||||
|
||||
if (w1251 || !strcmp(name, "ukrainian-w1251"))
|
||||
{
|
||||
/* supplied by Anton Samets & ss:
|
||||
* 128-159, 170, 175, 178, 179, 186, 191 and 223-254
|
||||
* Corrected 01.11.2006 to more "correct" behavior by core
|
||||
*/
|
||||
charsys_addallowed("擱藏霰匸�帊昅恘倳眑婭笫崷窙嗲睧颬睼麧緗鴇膹擨闀貘覷鏷禴矙𡜍𦶠�邪眾的紊");
|
||||
charsys_addallowed("ÀÁÂÃ¥ÄŪÆÇȲ¯ÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÜÞßàáâã´äåºæç賿éêëìíîïðñòóôõö÷øùüþÿ");
|
||||
}
|
||||
|
||||
/* [GREEK] */
|
||||
|
||||
+2
-2
@@ -164,13 +164,13 @@ char host[256], *mask, *x, *p, *q;
|
||||
|
||||
/* Call the cloaking layer */
|
||||
if (RCallbacks[CALLBACKTYPE_CLOAK_EX])
|
||||
mask = RCallbacks[CALLBACKTYPE_CLOAK]->func.pcharfunc(sptr, host);
|
||||
mask = RCallbacks[CALLBACKTYPE_CLOAK_EX]->func.pcharfunc(sptr, host);
|
||||
else
|
||||
mask = RCallbacks[CALLBACKTYPE_CLOAK]->func.pcharfunc(host);
|
||||
|
||||
if (mode == 0)
|
||||
{
|
||||
strncpyzt(new, mask, HOSTLEN); /* */
|
||||
strlcpy(new, mask, HOSTLEN + 1);
|
||||
return NULL;
|
||||
}
|
||||
if (new)
|
||||
|
||||
+2
-2
@@ -869,9 +869,9 @@ int throttle_can_connect(aClient *sptr, struct IN_ADDR *in)
|
||||
{
|
||||
if (Find_except(sptr, Inet_ia2p(in), CONF_EXCEPT_THROTTLE))
|
||||
return 2;
|
||||
b->count++;
|
||||
if (b->count > (THROTTLING_COUNT ? THROTTLING_COUNT : 3))
|
||||
if (b->count+1 > (THROTTLING_COUNT ? THROTTLING_COUNT : 3))
|
||||
return 0;
|
||||
b->count++;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
+20
-4
@@ -166,7 +166,11 @@ extern void init_glines(void);
|
||||
extern void tkl_init(void);
|
||||
|
||||
MODVAR TS last_garbage_collect = 0;
|
||||
#ifndef _WIN32
|
||||
MODVAR char **myargv;
|
||||
#else
|
||||
LPCSTR cmdLine;
|
||||
#endif
|
||||
int portnum = -1; /* Server port number, listening this */
|
||||
char *configfile = CONFIGFILE; /* Server configuration file */
|
||||
int debuglevel = 10; /* Server debug level */
|
||||
@@ -357,7 +361,7 @@ void server_reboot(char *mesg)
|
||||
if (!IsService)
|
||||
{
|
||||
CleanUp();
|
||||
(void)execv(myargv[0], myargv);
|
||||
WinExec(cmdLine, SW_SHOWDEFAULT);
|
||||
}
|
||||
#endif
|
||||
#ifndef _WIN32
|
||||
@@ -486,7 +490,7 @@ static TS try_connections(TS currenttime)
|
||||
&& crule_eval(deny->rule))
|
||||
break;
|
||||
|
||||
if (connect_server(aconf, (aClient *)NULL,
|
||||
if (!deny && connect_server(aconf, (aClient *)NULL,
|
||||
(struct hostent *)NULL) == 0)
|
||||
sendto_realops
|
||||
("Connection to %s[%s] activated.",
|
||||
@@ -845,7 +849,7 @@ int error = 0;
|
||||
#ifdef ZIP_LINKS
|
||||
runtime = zlibVersion();
|
||||
compiledfor = ZLIB_VERSION;
|
||||
if (strcasecmp(compiledfor, runtime))
|
||||
if (*compiledfor != *runtime)
|
||||
{
|
||||
version_check_logerror("Zlib version mismatch: compiled for '%s', library is '%s'",
|
||||
compiledfor, runtime);
|
||||
@@ -998,7 +1002,11 @@ int InitwIRCD(int argc, char *argv[])
|
||||
exit(5);
|
||||
}
|
||||
#endif /*CHROOTDIR*/
|
||||
#ifndef _WIN32
|
||||
myargv = argv;
|
||||
#else
|
||||
cmdLine = GetCommandLine();
|
||||
#endif
|
||||
#ifndef _WIN32
|
||||
(void)umask(077); /* better safe than sorry --SRB */
|
||||
#else
|
||||
@@ -1096,6 +1104,14 @@ int InitwIRCD(int argc, char *argv[])
|
||||
}
|
||||
p = *++argv;
|
||||
argc--;
|
||||
#ifdef AUTHENABLE_UNIXCRYPT
|
||||
if ((type == AUTHTYPE_UNIXCRYPT) && (strlen(p) > 8))
|
||||
{
|
||||
printf("WARNING: Password truncated to 8 characters due to 'crypt' algorithm. "
|
||||
"You are suggested to use the 'md5' algorithm instead.");
|
||||
p[8] = '\0';
|
||||
}
|
||||
#endif
|
||||
if (!(result = Auth_Make(type, p))) {
|
||||
printf("Authentication failed\n");
|
||||
exit(0);
|
||||
@@ -1222,7 +1238,7 @@ int InitwIRCD(int argc, char *argv[])
|
||||
fprintf(stderr, " v%s\n", VERSIONONLY);
|
||||
fprintf(stderr, " using %s\n", tre_version());
|
||||
#ifdef USE_SSL
|
||||
fprintf(stderr, " using %s\n", OPENSSL_VERSION_TEXT);
|
||||
fprintf(stderr, " using %s\n", SSLeay_version(SSLEAY_VERSION));
|
||||
#endif
|
||||
#ifdef ZIP_LINKS
|
||||
fprintf(stderr, " using zlib %s\n", zlibVersion());
|
||||
|
||||
+17
-4
@@ -114,6 +114,8 @@ char *(*stripbadwords_message)(char *str, int *blocked);
|
||||
char *(*stripbadwords_quit)(char *str, int *blocked);
|
||||
unsigned char *(*StripColors)(unsigned char *text);
|
||||
const char *(*StripControlCodes)(unsigned char *text);
|
||||
void (*spamfilter_build_user_string)(char *buf, char *nick, aClient *acptr);
|
||||
int (*is_silenced)(aClient *sptr, aClient *acptr);
|
||||
|
||||
static const EfunctionsList efunction_table[MAXEFUNCTIONS] = {
|
||||
/* 00 */ {NULL, NULL},
|
||||
@@ -149,8 +151,8 @@ static const EfunctionsList efunction_table[MAXEFUNCTIONS] = {
|
||||
/* 30 */ {"stripbadwords_quit", (void *)&stripbadwords_quit},
|
||||
/* 31 */ {"StripColors", (void *)&StripColors},
|
||||
/* 32 */ {"StripControlCodes", (void *)&StripControlCodes},
|
||||
/* 33 */ {NULL, NULL},
|
||||
/* 34 */ {NULL, NULL},
|
||||
/* 33 */ {"spamfilter_build_user_string", (void *)&spamfilter_build_user_string},
|
||||
/* 34 */ {"is_silenced", (void *)&is_silenced},
|
||||
/* 35 */ {NULL, NULL}
|
||||
};
|
||||
|
||||
@@ -330,14 +332,25 @@ char *Module_Create(char *path_)
|
||||
strcpy(path, "./");
|
||||
strcat(path, path_);
|
||||
}
|
||||
|
||||
if (!file_exists(path))
|
||||
{
|
||||
snprintf(errorbuf, sizeof(errorbuf), "Cannot open module file: %s", strerror(errno));
|
||||
return errorbuf;
|
||||
}
|
||||
#ifdef __OpenBSD__
|
||||
/* For OpenBSD, do not do a hardlinkink attempt first because it checks inode
|
||||
* numbers to see if a certain module is already loaded. -- Syzop
|
||||
*/
|
||||
unreal_copyfileex(path, tmppath, 0);
|
||||
ret = unreal_copyfileex(path, tmppath, 0);
|
||||
#else
|
||||
unreal_copyfileex(path, tmppath, 1);
|
||||
ret = unreal_copyfileex(path, tmppath, 1);
|
||||
#endif
|
||||
if (!ret)
|
||||
{
|
||||
snprintf(errorbuf, sizeof(errorbuf), "Failed to copy module file.");
|
||||
return errorbuf;
|
||||
}
|
||||
if ((Mod = irc_dlopen(tmppath, RTLD_NOW)))
|
||||
{
|
||||
/* We have engaged the borg cube. Scan for lifesigns. */
|
||||
|
||||
@@ -32,8 +32,6 @@ INCLUDES = ../include/auth.h ../include/badwords.h ../include/channel.h \
|
||||
../include/threads.h ../include/types.h ../include/url.h \
|
||||
../include/version.h ../include/whowas.h ../include/zip.h
|
||||
|
||||
#just changing this to cloak.so could be a ./Config option...
|
||||
#R_MODULES=cloak.so
|
||||
R_MODULES= \
|
||||
m_sethost.so m_chghost.so m_chgident.so m_setname.so \
|
||||
m_setident.so m_sdesc.so m_svsmode.so m_swhois.so\
|
||||
@@ -55,7 +53,7 @@ R_MODULES= \
|
||||
m_svsfline.so m_dccdeny.so m_undccdeny.so m_whowas.so \
|
||||
m_connect.so m_dccallow.so m_userip.so m_nick.so m_user.so \
|
||||
m_mode.so m_watch.so m_part.so m_join.so m_motd.so m_opermotd.so \
|
||||
m_botmotd.so m_lusers.so cloak.so
|
||||
m_botmotd.so m_lusers.so m_names.so
|
||||
|
||||
#note change of .c to .o
|
||||
COMMANDS=m_sethost.o m_chghost.o m_chgident.o m_setname.o m_setident.o \
|
||||
@@ -80,7 +78,7 @@ COMMANDS=m_sethost.o m_chghost.o m_chgident.o m_setname.o m_setident.o \
|
||||
m_botmotd.o m_lusers.o m_names.o
|
||||
|
||||
|
||||
MODULES=commands.so $(R_MODULES)
|
||||
MODULES=commands.so cloak.so $(R_MODULES)
|
||||
MODULEFLAGS=@MODULEFLAGS@
|
||||
|
||||
all: build
|
||||
|
||||
@@ -72,7 +72,7 @@ DLLFUNC int MOD_INIT(m_chgname)(ModuleInfo *modinfo)
|
||||
* We call our add_Command crap here
|
||||
*/
|
||||
add_Command(MSG_CHGNAME, TOK_CHGNAME, m_chgname, 2);
|
||||
add_Command(MSG_SVSNAME, TOK_CHGNAME, m_chgname, 2);
|
||||
add_Command(MSG_SVSNAME, NULL, m_chgname, 2);
|
||||
MARK_AS_OFFICIAL_MODULE(modinfo);
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
@@ -93,7 +93,7 @@ DLLFUNC int MOD_UNLOAD(m_chgname)(int module_unload)
|
||||
sendto_realops("Failed to delete command chgname when unloading %s",
|
||||
MOD_HEADER(m_chgname).name);
|
||||
}
|
||||
if (del_Command(MSG_SVSNAME, TOK_CHGNAME, m_chgname) < 0)
|
||||
if (del_Command(MSG_SVSNAME, NULL, m_chgname) < 0)
|
||||
{
|
||||
sendto_realops("Failed to delete command svsname when unloading %s",
|
||||
MOD_HEADER(m_chgname).name);
|
||||
|
||||
@@ -62,7 +62,7 @@ ModuleHeader MOD_HEADER(m_help)
|
||||
DLLFUNC int MOD_INIT(m_help)(ModuleInfo *modinfo)
|
||||
{
|
||||
add_Command(MSG_HELP, TOK_HELP, m_help, 1);
|
||||
add_Command(MSG_HELPOP, TOK_HELP, m_help, 1);
|
||||
add_Command(MSG_HELPOP, NULL, m_help, 1);
|
||||
MARK_AS_OFFICIAL_MODULE(modinfo);
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
@@ -79,7 +79,7 @@ DLLFUNC int MOD_UNLOAD(m_help)(int module_unload)
|
||||
sendto_realops("Failed to delete commands when unloading %s",
|
||||
MOD_HEADER(m_help).name);
|
||||
}
|
||||
if (del_Command(MSG_HELPOP, TOK_HELP, m_help) < 0)
|
||||
if (del_Command(MSG_HELPOP, NULL, m_help) < 0)
|
||||
{
|
||||
sendto_realops("Failed to delete commands when unloading %s",
|
||||
MOD_HEADER(m_help).name);
|
||||
|
||||
@@ -337,8 +337,9 @@ DLLFUNC CMD_FUNC(m_invite)
|
||||
add_invite(acptr, chptr);
|
||||
}
|
||||
}
|
||||
sendto_prefix_one(acptr, sptr, ":%s INVITE %s :%s", parv[0],
|
||||
acptr->name, ((chptr) ? (chptr->chname) : parv[2]));
|
||||
if (!is_silenced(sptr, acptr))
|
||||
sendto_prefix_one(acptr, sptr, ":%s INVITE %s :%s", parv[0],
|
||||
acptr->name, ((chptr) ? (chptr->chname) : parv[2]));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -179,6 +179,8 @@ CMD_FUNC(m_kick)
|
||||
{
|
||||
if (!op_can_override(sptr))
|
||||
{
|
||||
if (!MyClient(sptr))
|
||||
goto attack; /* lag? yes.. kick crossing +Q... allow */
|
||||
sendto_one(sptr, err_str(ERR_CANNOTDOCOMMAND),
|
||||
me.name, sptr->name, "KICK",
|
||||
"channel is +Q");
|
||||
@@ -188,6 +190,9 @@ CMD_FUNC(m_kick)
|
||||
"*** OperOverride -- %s (%s@%s) KICK %s %s (%s)",
|
||||
sptr->name, sptr->user->username, sptr->user->realhost,
|
||||
chptr->chname, who->name, comment);
|
||||
ircd_log(LOG_OVERRIDE,"OVERRIDE: %s (%s@%s) KICK %s %s (%s)",
|
||||
sptr->name, sptr->user->username, sptr->user->realhost,
|
||||
chptr->chname, who->name, comment);
|
||||
goto attack; /* No reason to continue.. */
|
||||
}
|
||||
/* Store "who" access flags */
|
||||
@@ -219,6 +224,8 @@ CMD_FUNC(m_kick)
|
||||
/* victim is +a or +q, we are not +q */
|
||||
if ((who_flags & (CHFL_CHANOWNER|CHFL_CHANPROT) || IsServices(who))
|
||||
&& !(sptr_flags & CHFL_CHANOWNER)) {
|
||||
if (sptr == who)
|
||||
goto attack; /* kicking self == ok */
|
||||
if (op_can_override(sptr)) /* (and f*ck local ops) */
|
||||
{ /* IRCop kicking owner/prot */
|
||||
sendto_snomask(SNO_EYES,
|
||||
|
||||
@@ -269,7 +269,7 @@ DLLFUNC CMD_FUNC(m_list)
|
||||
else /* Just a normal channel */
|
||||
{
|
||||
chptr = find_channel(name, NullChn);
|
||||
if (chptr && (ShowChannel(sptr, chptr) || IsAnOper(sptr))) {
|
||||
if (chptr && (ShowChannel(sptr, chptr) || OPCanSeeSecret(sptr))) {
|
||||
#ifdef LIST_SHOW_MODES
|
||||
modebuf[0] = '[';
|
||||
channel_modes(sptr, &modebuf[1], parabuf, chptr);
|
||||
@@ -364,7 +364,7 @@ void _send_list(aClient *cptr, int numsend)
|
||||
{
|
||||
if (SecretChannel(chptr)
|
||||
&& !IsMember(cptr, chptr)
|
||||
&& !IsAnOper(cptr))
|
||||
&& !OPCanSeeSecret(cptr))
|
||||
continue;
|
||||
|
||||
/* Much more readable like this -- codemastr */
|
||||
@@ -405,7 +405,7 @@ void _send_list(aClient *cptr, int numsend)
|
||||
else
|
||||
strlcat(modebuf, "]", sizeof modebuf);
|
||||
#endif
|
||||
if (!IsAnOper(cptr))
|
||||
if (!OPCanSeeSecret(cptr))
|
||||
sendto_one(cptr,
|
||||
rpl_str(RPL_LIST), me.name,
|
||||
cptr->name,
|
||||
|
||||
+1
-1
@@ -100,7 +100,7 @@ static void dump_map(aClient *cptr, aClient *server, char *mask, int prompt_leng
|
||||
{
|
||||
sendto_one(cptr, rpl_str(RPL_MAP), me.name, cptr->name, prompt,
|
||||
length, server->name, server->serv->users,
|
||||
(server->serv->numeric ? (char *)my_itoa(server->serv->
|
||||
((IsAnOper(cptr) && server->serv->numeric) ? (char *)my_itoa(server->serv->
|
||||
numeric) : ""));
|
||||
cnt = 0;
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
#endif
|
||||
#include "badwords.h"
|
||||
|
||||
static int is_silenced(aClient *, aClient *);
|
||||
int _is_silenced(aClient *, aClient *);
|
||||
char *_stripbadwords_channel(char *str, int *blocked);
|
||||
char *_stripbadwords_message(char *str, int *blocked);
|
||||
char *_stripbadwords_quit(char *str, int *blocked);
|
||||
@@ -80,6 +80,7 @@ DLLFUNC int MOD_TEST(m_message)(ModuleInfo *modinfo)
|
||||
EfunctionAddPChar(modinfo->handle, EFUNC_STRIPBADWORDS_QUIT, _stripbadwords_quit);
|
||||
EfunctionAddPChar(modinfo->handle, EFUNC_STRIPCOLORS, _StripColors);
|
||||
EfunctionAddPChar(modinfo->handle, EFUNC_STRIPCONTROLCODES, _StripControlCodes);
|
||||
EfunctionAdd(modinfo->handle, EFUNC_IS_SILENCED, _is_silenced);
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -222,6 +223,9 @@ int ret;
|
||||
return CANPRIVMSG_CONTINUE;
|
||||
|
||||
return CANPRIVMSG_SEND;
|
||||
} else {
|
||||
/* Silenced */
|
||||
RunHook4(HOOKTYPE_SILENCED, cptr, sptr, acptr, notice);
|
||||
}
|
||||
return CANPRIVMSG_CONTINUE;
|
||||
}
|
||||
@@ -675,7 +679,7 @@ DLLFUNC int m_notice(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
* but more over, if this is detected on a server not local to sptr
|
||||
* the SILENCE mask is sent upstream.
|
||||
*/
|
||||
static int is_silenced(aClient *sptr, aClient *acptr)
|
||||
int _is_silenced(aClient *sptr, aClient *acptr)
|
||||
{
|
||||
Link *lp;
|
||||
anUser *user;
|
||||
|
||||
@@ -128,6 +128,15 @@ int m_mkpasswd(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef AUTHENABLE_UNIXCRYPT
|
||||
if ((type == AUTHTYPE_UNIXCRYPT) && (strlen(parv[2]) > 8))
|
||||
{
|
||||
sendnotice(sptr, "WARNING: Password truncated to 8 characters due to 'crypt' algorithm. "
|
||||
"You are suggested to use the 'md5' algorithm instead.");
|
||||
parv[2][8] = '\0';
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!(result = Auth_Make(type, parv[2])))
|
||||
{
|
||||
sendto_one(sptr,
|
||||
|
||||
+15
-8
@@ -169,7 +169,7 @@ CMD_FUNC(m_mode)
|
||||
&& parv[2][1] == '\0') || (parv[2][1] == 'b' && parv[2][2] == '\0'
|
||||
&& (*parv[2] == '+' || *parv[2] == '-'))))
|
||||
{
|
||||
if (!IsMember(sptr, chptr))
|
||||
if (!IsMember(sptr, chptr) && !IsAnOper(sptr))
|
||||
return 0;
|
||||
/* send ban list */
|
||||
for (ban = chptr->banlist; ban; ban = ban->next)
|
||||
@@ -186,7 +186,7 @@ CMD_FUNC(m_mode)
|
||||
&& parv[2][1] == '\0') || (parv[2][1] == 'e' && parv[2][2] == '\0'
|
||||
&& (*parv[2] == '+' || *parv[2] == '-'))))
|
||||
{
|
||||
if (!IsMember(sptr, chptr))
|
||||
if (!IsMember(sptr, chptr) && !IsAnOper(sptr))
|
||||
return 0;
|
||||
/* send exban list */
|
||||
for (ban = chptr->exlist; ban; ban = ban->next)
|
||||
@@ -203,7 +203,7 @@ CMD_FUNC(m_mode)
|
||||
&& parv[2][1] == '\0') || (parv[2][1] == 'q' && parv[2][2] == '\0'
|
||||
&& (*parv[2] == '+' || *parv[2] == '-'))))
|
||||
{
|
||||
if (!IsMember(sptr, chptr))
|
||||
if (!IsMember(sptr, chptr) && !IsAnOper(sptr))
|
||||
return 0;
|
||||
{
|
||||
Member *member;
|
||||
@@ -229,7 +229,7 @@ CMD_FUNC(m_mode)
|
||||
&& parv[2][1] == '\0') || (parv[2][1] == 'a' && parv[2][2] == '\0'
|
||||
&& (*parv[2] == '+' || *parv[2] == '-'))))
|
||||
{
|
||||
if (!IsMember(sptr, chptr))
|
||||
if (!IsMember(sptr, chptr) && !IsAnOper(sptr))
|
||||
return 0;
|
||||
{
|
||||
Member *member;
|
||||
@@ -256,7 +256,7 @@ CMD_FUNC(m_mode)
|
||||
&& parv[2][1] == '\0') || (parv[2][1] == 'I' && parv[2][2] == '\0'
|
||||
&& (*parv[2] == '+' || *parv[2] == '-'))))
|
||||
{
|
||||
if (!IsMember(sptr, chptr))
|
||||
if (!IsMember(sptr, chptr) && !IsAnOper(sptr))
|
||||
return 0;
|
||||
for (ban = chptr->invexlist; ban; ban = ban->next)
|
||||
sendto_one(sptr, rpl_str(RPL_INVEXLIST), me.name,
|
||||
@@ -1679,7 +1679,7 @@ int do_mode_char(aChannel *chptr, long modetype, char modechar, char *param,
|
||||
/* bounce.. */
|
||||
tmpstr = param;
|
||||
}
|
||||
retval = 0; /* ??? copied from previous +f code. */
|
||||
retval = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1942,8 +1942,15 @@ DLLFUNC void _set_mode(aChannel *chptr, aClient *cptr, int parc, char *parv[], u
|
||||
{
|
||||
if ((Halfop_mode(modetype) == FALSE) && opermode == 2 && htrig != 1)
|
||||
{
|
||||
opermode = 0;
|
||||
htrig = 1;
|
||||
/* YUCK! */
|
||||
if ((foundat.flag == 'h') && !(parc <= paracount) && parv[paracount] &&
|
||||
(find_person(parv[paracount], NULL) == cptr))
|
||||
{
|
||||
/* ircop with halfop doing a -h on himself. no warning. */
|
||||
} else {
|
||||
opermode = 0;
|
||||
htrig = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef EXTCMODE
|
||||
|
||||
@@ -126,7 +126,7 @@ DLLFUNC CMD_FUNC(m_names)
|
||||
|
||||
chptr = find_channel(para, (aChannel *)NULL);
|
||||
|
||||
if (!chptr || (!ShowChannel(sptr, chptr) && !IsAnOper(sptr)))
|
||||
if (!chptr || (!ShowChannel(sptr, chptr) && !OPCanSeeSecret(sptr)))
|
||||
{
|
||||
sendto_one(sptr, rpl_str(RPL_ENDOFNAMES), me.name,
|
||||
parv[0], para);
|
||||
|
||||
+31
-10
@@ -181,6 +181,20 @@ DLLFUNC CMD_FUNC(m_nick)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Kill quarantined opers early... */
|
||||
if (IsServer(cptr) && (sptr->from->flags & FLAGS_QUARANTINE) &&
|
||||
(parc >= 11) && strchr(parv[8], 'o'))
|
||||
{
|
||||
ircstp->is_kill++;
|
||||
/* Send kill to uplink only, hasn't been broadcasted to the rest, anyway */
|
||||
sendto_one(cptr, ":%s KILL %s :%s (Quarantined: no global oper privileges allowed)",
|
||||
me.name, parv[1], me.name);
|
||||
sendto_realops("QUARANTINE: Oper %s on server %s killed, due to quarantine",
|
||||
parv[1], sptr->name);
|
||||
/* (nothing to exit_client or to free, since user was never added) */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
** Protocol 4 doesn't send the server as prefix, so it is possible
|
||||
** the server doesn't exist (a lagged net.burst), in which case
|
||||
@@ -248,8 +262,7 @@ DLLFUNC CMD_FUNC(m_nick)
|
||||
if (MyClient(sptr)) /* local client changin nick afterwards.. */
|
||||
{
|
||||
int xx;
|
||||
ircsprintf(spamfilter_user, "%s!%s@%s:%s",
|
||||
nick, sptr->user->username, sptr->user->realhost, sptr->info);
|
||||
spamfilter_build_user_string(spamfilter_user, nick, sptr);
|
||||
xx = dospamfilter(sptr, spamfilter_user, SPAMF_USER, NULL, 0, NULL);
|
||||
if (xx < 0)
|
||||
return xx;
|
||||
@@ -643,11 +656,15 @@ DLLFUNC CMD_FUNC(m_nick)
|
||||
} else
|
||||
sptr->user->flood.nick_c++;
|
||||
|
||||
sendto_snomask(SNO_NICKCHANGE, "*** Notice -- %s (%s@%s) has changed his/her nickname to %s", sptr->name, sptr->user->username, sptr->user->realhost, nick);
|
||||
sendto_snomask(SNO_NICKCHANGE, "*** Notice -- %s (%s@%s) has changed his/her nickname to %s",
|
||||
sptr->name, sptr->user->username, sptr->user->realhost, nick);
|
||||
|
||||
RunHook2(HOOKTYPE_LOCAL_NICKCHANGE, sptr, nick);
|
||||
} else {
|
||||
sendto_snomask(SNO_FNICKCHANGE, "*** Notice -- %s (%s@%s) has changed his/her nickname to %s", sptr->name, sptr->user->username, sptr->user->realhost, nick);
|
||||
if (!IsULine(sptr))
|
||||
sendto_snomask(SNO_FNICKCHANGE, "*** Notice -- %s (%s@%s) has changed his/her nickname to %s",
|
||||
sptr->name, sptr->user->username, sptr->user->realhost, nick);
|
||||
|
||||
RunHook3(HOOKTYPE_REMOTE_NICKCHANGE, cptr, sptr, nick);
|
||||
}
|
||||
/*
|
||||
@@ -682,10 +699,13 @@ DLLFUNC CMD_FUNC(m_nick)
|
||||
* Generate a random string for them to pong with.
|
||||
*/
|
||||
sptr->nospoof = getrandom32();
|
||||
sendto_one(sptr, ":%s NOTICE %s :*** If you are having problems"
|
||||
" connecting due to ping timeouts, please"
|
||||
" type /quote pong %X or /raw pong %X now.",
|
||||
me.name, nick, sptr->nospoof, sptr->nospoof);
|
||||
|
||||
if (PINGPONG_WARNING)
|
||||
sendto_one(sptr, ":%s NOTICE %s :*** If you are having problems"
|
||||
" connecting due to ping timeouts, please"
|
||||
" type /quote pong %X or /raw pong %X now.",
|
||||
me.name, nick, sptr->nospoof, sptr->nospoof);
|
||||
|
||||
sendto_one(sptr, "PING :%X", sptr->nospoof);
|
||||
#endif /* NOSPOOF */
|
||||
#ifdef CONTACT_EMAIL
|
||||
@@ -706,7 +726,8 @@ DLLFUNC CMD_FUNC(m_nick)
|
||||
/* Copy password to the passwd field if it's given after NICK
|
||||
* - originally by taz, modified by Wizzu
|
||||
*/
|
||||
if ((parc > 2) && (strlen(parv[2]) <= PASSWDLEN))
|
||||
if ((parc > 2) && (strlen(parv[2]) <= PASSWDLEN)
|
||||
&& !(sptr->listener->umodes & LISTENER_JAVACLIENT))
|
||||
{
|
||||
if (sptr->passwd)
|
||||
MyFree(sptr->passwd);
|
||||
@@ -1005,7 +1026,7 @@ int _register_user(aClient *cptr, aClient *sptr, char *nick, char *username, cha
|
||||
* yet (at all).
|
||||
* -- Syzop
|
||||
*/
|
||||
ircsprintf(spamfilter_user, "%s!%s@%s:%s", sptr->name, sptr->user->username, sptr->user->realhost, sptr->info);
|
||||
spamfilter_build_user_string(spamfilter_user, sptr->name, sptr);
|
||||
xx = dospamfilter(sptr, spamfilter_user, SPAMF_USER, NULL, 0, &savetkl);
|
||||
if ((xx < 0) && (xx != -5))
|
||||
return xx;
|
||||
|
||||
+11
-15
@@ -186,8 +186,8 @@ DLLFUNC int m_oper(aClient *cptr, aClient *sptr, int parc, char *parv[]) {
|
||||
|
||||
if (!(aconf = Find_oper(name))) {
|
||||
sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]);
|
||||
sendto_realops
|
||||
("Failed OPER attempt by %s (%s@%s) [unknown oper]",
|
||||
sendto_snomask_global
|
||||
(SNO_OPER, "Failed OPER attempt by %s (%s@%s) [unknown oper]",
|
||||
parv[0], sptr->user->username, sptr->sockhost);
|
||||
ircd_log(LOG_OPER, "OPER UNKNOWNOPER (%s) by (%s!%s@%s)", name, parv[0],
|
||||
sptr->user->username, sptr->sockhost);
|
||||
@@ -202,9 +202,9 @@ DLLFUNC int m_oper(aClient *cptr, aClient *sptr, int parc, char *parv[]) {
|
||||
break;
|
||||
if (!oper_from) {
|
||||
sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]);
|
||||
sendto_realops
|
||||
("Failed OPER attempt by %s (%s@%s) [host doesnt match]",
|
||||
parv[0], sptr->user->username, sptr->sockhost);
|
||||
sendto_snomask_global
|
||||
(SNO_OPER, "Failed OPER attempt by %s (%s@%s) using UID %s [host doesnt match]",
|
||||
parv[0], sptr->user->username, sptr->sockhost, name);
|
||||
ircd_log(LOG_OPER, "OPER NOHOSTMATCH (%s) by (%s!%s@%s)", name, parv[0],
|
||||
sptr->user->username, sptr->sockhost);
|
||||
sptr->since += 7;
|
||||
@@ -221,9 +221,9 @@ DLLFUNC int m_oper(aClient *cptr, aClient *sptr, int parc, char *parv[]) {
|
||||
sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]);
|
||||
sendto_one(sptr, ":%s NOTICE %s :Your maximum number of concurrent oper logins has been reached (%d)",
|
||||
me.name, sptr->name, aconf->maxlogins);
|
||||
sendto_realops
|
||||
("Failed OPER attempt by %s (%s@%s) [maxlogins reached]",
|
||||
parv[0], sptr->user->username, sptr->sockhost);
|
||||
sendto_snomask_global
|
||||
(SNO_OPER, "Failed OPER attempt by %s (%s@%s) using UID %s [maxlogins reached]",
|
||||
parv[0], sptr->user->username, sptr->sockhost, name);
|
||||
ircd_log(LOG_OPER, "OPER TOOMANYLOGINS (%s) by (%s!%s@%s)", name, parv[0],
|
||||
sptr->user->username, sptr->sockhost);
|
||||
sptr->since += 4;
|
||||
@@ -300,7 +300,7 @@ DLLFUNC int m_oper(aClient *cptr, aClient *sptr, int parc, char *parv[]) {
|
||||
iNAH_host(sptr, locop_host);
|
||||
SetHidden(sptr);
|
||||
}
|
||||
sendto_ops("%s (%s@%s) is now a local operator (o)",
|
||||
sendto_snomask(SNO_OPER, "%s (%s@%s) is now a local operator (o)",
|
||||
parv[0], sptr->user->username, GetHost(sptr));
|
||||
}
|
||||
|
||||
@@ -365,13 +365,9 @@ DLLFUNC int m_oper(aClient *cptr, aClient *sptr, int parc, char *parv[]) {
|
||||
IsWebTV(sptr) ? "PRIVMSG" : "NOTICE", sptr->name);
|
||||
ircd_log(LOG_OPER, "OPER FAILEDAUTH (%s) by (%s!%s@%s)", name, parv[0],
|
||||
sptr->user->username, sptr->sockhost);
|
||||
sendto_realops
|
||||
("Failed OPER attempt by %s (%s@%s) using UID %s [FAILEDAUTH]",
|
||||
sendto_snomask_global
|
||||
(SNO_OPER, "Failed OPER attempt by %s (%s@%s) using UID %s [FAILEDAUTH]",
|
||||
parv[0], sptr->user->username, sptr->sockhost, name);
|
||||
sendto_serv_butone(&me,
|
||||
":%s GLOBOPS :Failed OPER attempt by %s (%s@%s) using UID %s [---]",
|
||||
me.name, parv[0], sptr->user->username, sptr->sockhost,
|
||||
name);
|
||||
sptr->since += 7;
|
||||
}
|
||||
/* Belay that order, number One. (-2) */
|
||||
|
||||
+21
-9
@@ -92,6 +92,7 @@ DLLFUNC CMD_FUNC(m_sajoin)
|
||||
{
|
||||
aClient *acptr;
|
||||
char jbuf[BUFSIZE];
|
||||
int did_anything = 0;
|
||||
|
||||
if (!IsSAdmin(sptr) && !IsULine(sptr))
|
||||
{
|
||||
@@ -168,6 +169,7 @@ DLLFUNC CMD_FUNC(m_sajoin)
|
||||
|
||||
if (*name == '0' && !atoi(name))
|
||||
{
|
||||
did_anything = 1;
|
||||
while ((lp = acptr->user->channel))
|
||||
{
|
||||
chptr = lp->chptr;
|
||||
@@ -189,21 +191,31 @@ DLLFUNC CMD_FUNC(m_sajoin)
|
||||
chptr = get_channel(acptr, name, CREATE);
|
||||
if (chptr && (lp = find_membership_link(acptr->user->channel, chptr)))
|
||||
continue;
|
||||
|
||||
if ((chptr->mode.mode & MODE_ONLYSECURE) && !IsSecure(acptr))
|
||||
{
|
||||
sendnotice(sptr, "You cannot SAJOIN %s to %s because the channel is +z and the user is not connected via SSL",
|
||||
acptr->name, chptr->chname);
|
||||
continue;
|
||||
}
|
||||
join_channel(chptr, acptr, acptr, flags);
|
||||
did_anything = 1;
|
||||
if (*jbuf)
|
||||
(void)strlcat(jbuf, ",", sizeof jbuf);
|
||||
(void)strlncat(jbuf, name, sizeof jbuf, sizeof(jbuf) - i - 1);
|
||||
i += strlen(name) + 1;
|
||||
}
|
||||
sendnotice(acptr, "*** You were forced to join %s", jbuf);
|
||||
sendto_realops("%s used SAJOIN to make %s join %s", sptr->name, acptr->name,
|
||||
jbuf);
|
||||
sendto_serv_butone(&me, ":%s GLOBOPS :%s used SAJOIN to make %s join %s",
|
||||
me.name, sptr->name, acptr->name, jbuf);
|
||||
/* Logging function added by XeRXeS */
|
||||
ircd_log(LOG_SACMDS,"SAJOIN: %s used SAJOIN to make %s join %s",
|
||||
sptr->name, parv[1], jbuf);
|
||||
|
||||
if (did_anything)
|
||||
{
|
||||
sendnotice(acptr, "*** You were forced to join %s", jbuf);
|
||||
sendto_realops("%s used SAJOIN to make %s join %s", sptr->name, acptr->name,
|
||||
jbuf);
|
||||
sendto_serv_butone(&me, ":%s GLOBOPS :%s used SAJOIN to make %s join %s",
|
||||
me.name, sptr->name, acptr->name, jbuf);
|
||||
/* Logging function added by XeRXeS */
|
||||
ircd_log(LOG_SACMDS,"SAJOIN: %s used SAJOIN to make %s join %s",
|
||||
sptr->name, parv[1], jbuf);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+36
-10
@@ -89,13 +89,18 @@ DLLFUNC int MOD_UNLOAD(m_sapart)(int module_unload)
|
||||
parv[2] - channel(s) to part
|
||||
parv[3] - comment
|
||||
*/
|
||||
|
||||
DLLFUNC CMD_FUNC(m_sapart)
|
||||
{
|
||||
aClient *acptr;
|
||||
aChannel *chptr;
|
||||
Membership *lp;
|
||||
char *name, *p = NULL;
|
||||
int i;
|
||||
char *comment = (parc > 3 && parv[3] ? parv[3] : NULL);
|
||||
char commentx[512];
|
||||
char jbuf[BUFSIZE];
|
||||
|
||||
if (!IsSAdmin(sptr) && !IsULine(sptr))
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
|
||||
@@ -113,23 +118,42 @@ DLLFUNC CMD_FUNC(m_sapart)
|
||||
sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], parv[1]);
|
||||
return 0;
|
||||
}
|
||||
if (!(chptr = get_channel(acptr, parv[2], 0)))
|
||||
|
||||
/* Now works like m_join */
|
||||
*jbuf = 0;
|
||||
|
||||
for (i = 0, name = strtoken(&p, parv[2], ","); name; name = strtoken(&p,
|
||||
NULL, ","))
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_NOSUCHCHANNEL), me.name, parv[0],
|
||||
parv[2]);
|
||||
return 0;
|
||||
}
|
||||
if (!(lp = find_membership_link(acptr->user->channel, chptr)))
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_USERNOTINCHANNEL), me.name, parv[0],
|
||||
parv[1], parv[2]);
|
||||
return 0;
|
||||
if (!(chptr = get_channel(acptr, name, 0)))
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_NOSUCHCHANNEL), me.name, parv[0],
|
||||
name);
|
||||
continue;
|
||||
}
|
||||
if (!(lp = find_membership_link(acptr->user->channel, chptr)))
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_USERNOTINCHANNEL), me.name, parv[0],
|
||||
parv[1], name);
|
||||
continue;
|
||||
}
|
||||
if (*jbuf)
|
||||
(void)strlcat(jbuf, ",", sizeof jbuf);
|
||||
(void)strlncat(jbuf, name, sizeof jbuf, sizeof(jbuf) - i - 1);
|
||||
i += strlen(name) + 1;
|
||||
}
|
||||
|
||||
if (!*jbuf)
|
||||
return -1;
|
||||
|
||||
strcpy(parv[2], jbuf);
|
||||
|
||||
if (comment)
|
||||
{
|
||||
sendto_realops("%s used SAPART to make %s part %s (%s)", sptr->name, parv[1],
|
||||
parv[2], comment);
|
||||
sendto_serv_butone(&me, ":%s GLOBOPS :%s used SAPART to make %s part %s (%s)",
|
||||
me.name, sptr->name, parv[1], parv[2], comment);
|
||||
/* Logging function added by XeRXeS */
|
||||
ircd_log(LOG_SACMDS,"SAPART: %s used SAPART to make %s part %s (%s)",
|
||||
sptr->name, parv[1], parv[2], comment);
|
||||
@@ -140,6 +164,8 @@ DLLFUNC CMD_FUNC(m_sapart)
|
||||
{
|
||||
sendto_realops("%s used SAPART to make %s part %s", sptr->name, parv[1],
|
||||
parv[2]);
|
||||
sendto_serv_butone(&me, ":%s GLOBOPS :%s used SAPART to make %s part %s",
|
||||
me.name, sptr->name, parv[1], parv[2]);
|
||||
/* Logging function added by XeRXeS */
|
||||
ircd_log(LOG_SACMDS,"SAPART: %s used SAPART to make %s part %s",
|
||||
sptr->name, parv[1], parv[2]);
|
||||
|
||||
@@ -596,6 +596,7 @@ CMD_FUNC(m_server_remote)
|
||||
acptr->name, hop + 1, acptr->info);
|
||||
}
|
||||
}
|
||||
RunHook(HOOKTYPE_POST_SERVER_CONNECT, acptr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -942,6 +943,7 @@ int m_server_synch(aClient *cptr, long numeric, ConfigItem_link *aconf)
|
||||
ircd_log(LOG_ERROR, "[EOSDBG] m_server_synch: sending to justlinked '%s' with src ME...",
|
||||
cptr->name);
|
||||
#endif
|
||||
RunHook(HOOKTYPE_POST_SERVER_CONNECT, cptr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ DLLFUNC CMD_FUNC(m_silence)
|
||||
if (parc < 2 || *parv[1] == '\0'
|
||||
|| (acptr = find_person(parv[1], NULL)))
|
||||
{
|
||||
if (!(acptr->user))
|
||||
if (acptr != sptr)
|
||||
return 0;
|
||||
for (lp = acptr->user->silence; lp; lp = lp->next)
|
||||
sendto_one(sptr, rpl_str(RPL_SILELIST), me.name,
|
||||
|
||||
@@ -583,6 +583,8 @@ docontinue:
|
||||
chptr->creationtime);
|
||||
sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s",
|
||||
sptr->name, chptr->chname, modebuf, paraback);
|
||||
if (chptr->mode.mode & MODE_ONLYSECURE)
|
||||
kick_insecure_users(chptr);
|
||||
}
|
||||
if (merge && !nomode)
|
||||
{
|
||||
@@ -687,6 +689,8 @@ docontinue:
|
||||
Addsingle('S'); /* - */
|
||||
queue_c = 1;
|
||||
}
|
||||
if (!(oldmode.mode & MODE_ONLYSECURE) && (chptr->mode.mode & MODE_ONLYSECURE))
|
||||
kick_insecure_users(chptr);
|
||||
/* Add single char modes... */
|
||||
for (acp = cFlagTab; acp->mode; acp++)
|
||||
{
|
||||
|
||||
+152
-124
@@ -87,6 +87,120 @@ DLLFUNC int MOD_UNLOAD(m_svsmode)(int module_unload)
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
void unban_user(aClient *sptr, aChannel *chptr, aClient *acptr, char chmode)
|
||||
{
|
||||
Extban *extban;
|
||||
Ban *ban, *bnext;
|
||||
Ban **banlist;
|
||||
char uhost[NICKLEN+USERLEN+HOSTLEN+6], vhost[NICKLEN+USERLEN+HOSTLEN+6];
|
||||
char ihost[NICKLEN+USERLEN+HOSTLEN+6], chost[NICKLEN+USERLEN+HOSTLEN+6];
|
||||
|
||||
/* BUILD HOSTS */
|
||||
|
||||
*uhost = *vhost = *ihost = *chost = '\0';
|
||||
|
||||
strlcpy(uhost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, acptr->user->realhost),
|
||||
sizeof uhost);
|
||||
|
||||
if (GetIP(acptr)) /* only if we actually have an IP */
|
||||
strlcpy(ihost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, GetIP(acptr)),
|
||||
sizeof ihost);
|
||||
|
||||
/* The next could have been an IsSetHost(), but I'm playing it safe with regards to backward compat. */
|
||||
if (IsHidden(acptr) &&
|
||||
!(*acptr->user->cloakedhost && !strcasecmp(acptr->user->virthost, acptr->user->cloakedhost)))
|
||||
{
|
||||
strlcpy(vhost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, acptr->user->virthost),
|
||||
sizeof vhost);
|
||||
}
|
||||
|
||||
if (*acptr->user->cloakedhost) /* only if we know the cloaked host */
|
||||
strlcpy(chost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, acptr->user->cloakedhost),
|
||||
sizeof chost);
|
||||
|
||||
/* SELECT BANLIST */
|
||||
|
||||
switch (chmode)
|
||||
{
|
||||
case 'b':
|
||||
banlist = &chptr->banlist;
|
||||
break;
|
||||
case 'e':
|
||||
banlist = &chptr->exlist;
|
||||
break;
|
||||
case 'I':
|
||||
banlist = &chptr->invexlist;
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
|
||||
/* DO THE ACTUAL WORK */
|
||||
|
||||
for (ban = *banlist; ban; ban = bnext)
|
||||
{
|
||||
bnext = ban->next;
|
||||
if (!match(ban->banstr, uhost) ||
|
||||
(*vhost && !match(ban->banstr, vhost)) ||
|
||||
(*ihost && !match(ban->banstr, ihost)) ||
|
||||
(*chost && !match(ban->banstr, chost)))
|
||||
{
|
||||
add_send_mode_param(chptr, sptr, '-', chmode,
|
||||
ban->banstr);
|
||||
del_listmode(banlist, chptr, ban->banstr);
|
||||
}
|
||||
else if (chmode != 'I' && *ban->banstr == '~' && (extban = findmod_by_bantype(ban->banstr[1])))
|
||||
{
|
||||
if (extban->options & EXTBOPT_CHSVSMODE)
|
||||
{
|
||||
if (extban->is_banned(acptr, chptr, ban->banstr, BANCHK_JOIN))
|
||||
{
|
||||
add_send_mode_param(chptr, acptr, '-', chmode, ban->banstr);
|
||||
del_listmode(banlist, chptr, ban->banstr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void clear_bans(aClient *sptr, aChannel *chptr, char chmode)
|
||||
{
|
||||
Extban *extban;
|
||||
Ban *ban, *bnext;
|
||||
Ban **banlist;
|
||||
|
||||
switch (chmode)
|
||||
{
|
||||
case 'b':
|
||||
banlist = &chptr->banlist;
|
||||
break;
|
||||
case 'e':
|
||||
banlist = &chptr->exlist;
|
||||
break;
|
||||
case 'I':
|
||||
banlist = &chptr->invexlist;
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
|
||||
for (ban = *banlist; ban; ban = bnext)
|
||||
{
|
||||
bnext = ban->next;
|
||||
if (chmode != 'I' && (*ban->banstr == '~') && (extban = findmod_by_bantype(ban->banstr[1])))
|
||||
{
|
||||
if (!(extban->options & EXTBOPT_CHSVSMODE))
|
||||
continue;
|
||||
}
|
||||
add_send_mode_param(chptr, sptr, '-', chmode, ban->banstr);
|
||||
del_listmode(banlist, chptr, ban->banstr);
|
||||
}
|
||||
}
|
||||
|
||||
int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
{
|
||||
aChannel *chptr;
|
||||
@@ -197,8 +311,6 @@ int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
Extban *extban;
|
||||
Ban *ban, *bnext;
|
||||
if (parc >= i) {
|
||||
char uhost[NICKLEN+USERLEN+HOSTLEN+6], vhost[NICKLEN+USERLEN+HOSTLEN+6];
|
||||
char ihost[NICKLEN+USERLEN+HOSTLEN+6];
|
||||
if (!(acptr = find_person(parv[i-1], NULL))) {
|
||||
i++;
|
||||
break;
|
||||
@@ -209,53 +321,10 @@ int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
}
|
||||
i++;
|
||||
|
||||
strlcpy(uhost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, acptr->user->realhost),
|
||||
sizeof uhost);
|
||||
strlcpy(vhost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, GetHost(acptr)),
|
||||
sizeof vhost);
|
||||
strlcpy(ihost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, GetIP(acptr)),
|
||||
sizeof ihost);
|
||||
ban = chptr->banlist;
|
||||
while (ban) {
|
||||
bnext = ban->next;
|
||||
if (*ban->banstr == '~' && (extban = findmod_by_bantype(ban->banstr[1])))
|
||||
{
|
||||
if (extban->options & EXTBOPT_CHSVSMODE)
|
||||
{
|
||||
if (extban->is_banned(acptr, chptr, ban->banstr, BANCHK_JOIN))
|
||||
{
|
||||
add_send_mode_param(chptr, acptr, '-', 'b', ban->banstr);
|
||||
del_listmode(&chptr->banlist, chptr, ban->banstr);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!match(ban->banstr, uhost) || !match(ban->banstr, vhost) || !match(ban->banstr, ihost)) {
|
||||
add_send_mode_param(chptr, sptr, '-', 'b',
|
||||
ban->banstr);
|
||||
del_listmode(&chptr->banlist, chptr, ban->banstr);
|
||||
}
|
||||
ban = bnext;
|
||||
}
|
||||
unban_user(sptr, chptr, acptr, 'b');
|
||||
}
|
||||
else {
|
||||
ban = chptr->banlist;
|
||||
while (ban) {
|
||||
bnext = ban->next;
|
||||
if (*ban->banstr == '~' && (extban = findmod_by_bantype(ban->banstr[1])))
|
||||
{
|
||||
if (!(extban->options & EXTBOPT_CHSVSMODE))
|
||||
{
|
||||
ban = bnext;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
add_send_mode_param(chptr, sptr, '-', 'b', ban->banstr);
|
||||
del_listmode(&chptr->banlist, chptr, ban->banstr);
|
||||
ban = bnext;
|
||||
}
|
||||
clear_bans(sptr, chptr, 'b');
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -263,8 +332,6 @@ int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
Extban *extban;
|
||||
Ban *ban, *bnext;
|
||||
if (parc >= i) {
|
||||
char uhost[NICKLEN+USERLEN+HOSTLEN+6], vhost[NICKLEN+USERLEN+HOSTLEN+6];
|
||||
char ihost[NICKLEN+USERLEN+HOSTLEN+6];
|
||||
if (!(acptr = find_person(parv[i-1], NULL))) {
|
||||
i++;
|
||||
break;
|
||||
@@ -275,62 +342,16 @@ int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
}
|
||||
i++;
|
||||
|
||||
strlcpy(uhost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, acptr->user->realhost),
|
||||
sizeof uhost);
|
||||
strlcpy(vhost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, GetHost(acptr)),
|
||||
sizeof vhost);
|
||||
strlcpy(ihost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, GetIP(acptr)),
|
||||
sizeof ihost);
|
||||
|
||||
ban = chptr->exlist;
|
||||
while (ban) {
|
||||
bnext = ban->next;
|
||||
if (*ban->banstr == '~' && (extban = findmod_by_bantype(ban->banstr[1])))
|
||||
{
|
||||
if (extban->options & EXTBOPT_CHSVSMODE)
|
||||
{
|
||||
if (extban->is_banned(acptr, chptr, ban->banstr, BANCHK_JOIN))
|
||||
{
|
||||
add_send_mode_param(chptr, acptr, '-', 'b', ban->banstr);
|
||||
del_listmode(&chptr->exlist, chptr, ban->banstr);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!match(ban->banstr, uhost) || !match(ban->banstr, vhost) || !match(ban->banstr, ihost)) {
|
||||
add_send_mode_param(chptr, sptr, '-', 'e',
|
||||
ban->banstr);
|
||||
del_listmode(&chptr->exlist, chptr, ban->banstr);
|
||||
}
|
||||
ban = bnext;
|
||||
}
|
||||
unban_user(sptr, chptr, acptr, 'e');
|
||||
}
|
||||
else {
|
||||
ban = chptr->exlist;
|
||||
while (ban) {
|
||||
bnext = ban->next;
|
||||
if (*ban->banstr == '~' && (extban = findmod_by_bantype(ban->banstr[1])))
|
||||
{
|
||||
if (!(extban->options & EXTBOPT_CHSVSMODE))
|
||||
{
|
||||
ban = bnext;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
add_send_mode_param(chptr, sptr, '-', 'e', ban->banstr);
|
||||
del_listmode(&chptr->exlist, chptr, ban->banstr);
|
||||
ban = bnext;
|
||||
}
|
||||
clear_bans(sptr, chptr, 'e');
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'I': {
|
||||
Ban *ban, *bnext;
|
||||
if (parc >= i) {
|
||||
char uhost[NICKLEN+USERLEN+HOSTLEN+6], vhost[NICKLEN+USERLEN+HOSTLEN+6];
|
||||
char ihost[NICKLEN+USERLEN+HOSTLEN+6];
|
||||
if (!(acptr = find_person(parv[i-1], NULL))) {
|
||||
i++;
|
||||
break;
|
||||
@@ -341,35 +362,10 @@ int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
}
|
||||
i++;
|
||||
|
||||
strlcpy(uhost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, acptr->user->realhost),
|
||||
sizeof uhost);
|
||||
strlcpy(vhost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, GetHost(acptr)),
|
||||
sizeof vhost);
|
||||
strlcpy(ihost, make_nick_user_host(acptr->name,
|
||||
acptr->user->username, GetIP(acptr)),
|
||||
sizeof ihost);
|
||||
|
||||
ban = chptr->invexlist;
|
||||
while (ban) {
|
||||
bnext = ban->next;
|
||||
if (!match(ban->banstr, uhost) || !match(ban->banstr, vhost) || !match(ban->banstr, ihost)) {
|
||||
add_send_mode_param(chptr, sptr, '-', 'I',
|
||||
ban->banstr);
|
||||
del_listmode(&chptr->invexlist, chptr, ban->banstr);
|
||||
}
|
||||
ban = bnext;
|
||||
}
|
||||
unban_user(sptr, chptr, acptr, 'I');
|
||||
}
|
||||
else {
|
||||
ban = chptr->invexlist;
|
||||
while (ban) {
|
||||
bnext = ban->next;
|
||||
add_send_mode_param(chptr, sptr, '-', 'I', ban->banstr);
|
||||
del_listmode(&chptr->invexlist, chptr, ban->banstr);
|
||||
ban = bnext;
|
||||
}
|
||||
clear_bans(sptr, chptr, 'I');
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -510,6 +506,38 @@ char *xtok = show_change ? TOK_SVS2MODE : TOK_SVSMODE;
|
||||
acptr->user->servicestamp = strtoul(parv[3], NULL, 10);
|
||||
break;
|
||||
}
|
||||
case 'x':
|
||||
if (what == MODE_DEL)
|
||||
{
|
||||
/* -x */
|
||||
if (acptr->user->virthost)
|
||||
{
|
||||
/* Removing mode +x and virthost set... recalculate host then (but don't activate it!) */
|
||||
MyFree(acptr->user->virthost);
|
||||
acptr->user->virthost = strdup(acptr->user->cloakedhost);
|
||||
}
|
||||
} else
|
||||
{
|
||||
/* +x */
|
||||
if (!acptr->user->virthost)
|
||||
{
|
||||
/* Hmm... +x but no virthost set, that's bad... use cloakedhost.
|
||||
* Not sure if this could ever happen, but just in case... -- Syzop
|
||||
*/
|
||||
acptr->user->virthost = strdup(acptr->user->cloakedhost);
|
||||
}
|
||||
/* Announce the new host to VHP servers if we're setting the virthost to the cloakedhost.
|
||||
* In other cases, we can assume that the host has been broadcasted already (after all,
|
||||
* how else could it have been changed...?).
|
||||
* NOTES: we're doing a strcasecmp here instead of simply checking if it's a "+x but
|
||||
* not -t"-case. The reason for this is that the 't' might follow ("+xt" instead of "+tx"),
|
||||
* in which case we would have needlessly announced it. Ok I didn't test it but that's
|
||||
* the idea behind it :P. -- Syzop
|
||||
*/
|
||||
if (MyClient(acptr) && !strcasecmp(acptr->user->virthost, acptr->user->cloakedhost))
|
||||
sendto_serv_butone_token_opt(NULL, OPT_VHP, acptr->name,
|
||||
MSG_SETHOST, TOK_SETHOST, "%s", acptr->user->virthost);
|
||||
}
|
||||
default:
|
||||
setmodex:
|
||||
for (i = 0; i <= Usermode_highest; i++)
|
||||
|
||||
@@ -119,6 +119,8 @@ int m_svsmotd(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
case '!':
|
||||
{
|
||||
remove(VPATH);
|
||||
free_motd(svsmotd);
|
||||
svsmotd = NULL;
|
||||
sendto_ops("Wiped out services motd data");
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -91,6 +91,7 @@ DLLFUNC int MOD_UNLOAD(m_svsnick)(int module_unload)
|
||||
int m_svsnick(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
{
|
||||
aClient *acptr;
|
||||
aClient *ocptr; /* Other client */
|
||||
|
||||
if (!IsULine(sptr) || parc < 4 || (strlen(parv[2]) > NICKLEN))
|
||||
return -1; /* This looks like an error anyway -Studded */
|
||||
@@ -104,12 +105,16 @@ aClient *acptr;
|
||||
if (!(acptr = find_person(parv[1], NULL)))
|
||||
return 0; /* User not found, bail out */
|
||||
|
||||
if (find_client(parv[2], NULL)) /* Collision */
|
||||
return exit_client(cptr, acptr, sptr,
|
||||
if ((ocptr = find_client(parv[2], NULL)) && ocptr != acptr) /* Collision */
|
||||
{
|
||||
exit_client(acptr, acptr, sptr,
|
||||
"Nickname collision due to Services enforced "
|
||||
"nickname change, your nick was overruled");
|
||||
return 0;
|
||||
}
|
||||
|
||||
acptr->umodes &= ~UMODE_REGNICK;
|
||||
if (acptr != ocptr)
|
||||
acptr->umodes &= ~UMODE_REGNICK;
|
||||
acptr->lastnick = TS2ts(parv[3]);
|
||||
sendto_common_channels(acptr, ":%s NICK :%s", parv[1], parv[2]);
|
||||
add_history(acptr, 1);
|
||||
|
||||
@@ -170,7 +170,7 @@ int m_svso(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
delfrom_fdlist(acptr->slot, &oper_fdlist);
|
||||
acptr->umodes &=
|
||||
~(UMODE_OPER | UMODE_LOCOP | UMODE_HELPOP |UMODE_SERVICES |
|
||||
UMODE_SADMIN | UMODE_ADMIN);
|
||||
UMODE_SADMIN | UMODE_ADMIN | UMODE_COADMIN);
|
||||
acptr->umodes &=
|
||||
~(UMODE_NETADMIN | UMODE_WHOIS);
|
||||
acptr->umodes &=
|
||||
|
||||
+24
-6
@@ -78,6 +78,7 @@ int _m_tkl(aClient *cptr, aClient *sptr, int parc, char *parv[]);
|
||||
int _place_host_ban(aClient *sptr, int action, char *reason, long duration);
|
||||
int _dospamfilter(aClient *sptr, char *str_in, int type, char *target, int flags, aTKline **rettk);
|
||||
int _dospamfilter_viruschan(aClient *sptr, aTKline *tk, int type);
|
||||
void _spamfilter_build_user_string(char *buf, char *nick, aClient *acptr);
|
||||
|
||||
extern MODVAR char zlinebuf[BUFSIZE];
|
||||
extern MODVAR aTKline *tklines[TKLISTLEN];
|
||||
@@ -131,6 +132,7 @@ DLLFUNC int MOD_TEST(m_tkl)(ModuleInfo *modinfo)
|
||||
EfunctionAdd(modinfo->handle, EFUNC_PLACE_HOST_BAN, _place_host_ban);
|
||||
EfunctionAdd(modinfo->handle, EFUNC_DOSPAMFILTER, _dospamfilter);
|
||||
EfunctionAdd(modinfo->handle, EFUNC_DOSPAMFILTER_VIRUSCHAN, _dospamfilter_viruschan);
|
||||
EfunctionAddVoid(modinfo->handle, EFUNC_SPAMFILTER_BUILD_USER_STRING, _spamfilter_build_user_string);
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -1355,6 +1357,25 @@ int _find_shun(aClient *cptr)
|
||||
return 2;
|
||||
}
|
||||
|
||||
char *SpamfilterMagicHost(char *i)
|
||||
{
|
||||
static char buf[256];
|
||||
|
||||
if (!strchr(i, ':'))
|
||||
return i;
|
||||
|
||||
/* otherwise, it's IPv6.. prepend it with [ and append a ] */
|
||||
ircsprintf(buf, "[%s]", i);
|
||||
return buf;
|
||||
}
|
||||
|
||||
void _spamfilter_build_user_string(char *buf, char *nick, aClient *acptr)
|
||||
{
|
||||
ircsprintf(buf, "%s!%s@%s:%s",
|
||||
nick, acptr->user->username, SpamfilterMagicHost(acptr->user->realhost), acptr->info);
|
||||
}
|
||||
|
||||
|
||||
/** Checks if the user matches a spamfilter of type 'u' (user,
|
||||
* nick!user@host:realname ban).
|
||||
* Written by: Syzop
|
||||
@@ -1368,8 +1389,7 @@ char spamfilter_user[NICKLEN + USERLEN + HOSTLEN + REALLEN + 64]; /* n!u@h:r */
|
||||
if (IsAnOper(sptr))
|
||||
return 0;
|
||||
|
||||
ircsprintf(spamfilter_user, "%s!%s@%s:%s",
|
||||
sptr->name, sptr->user->username, sptr->user->realhost, sptr->info);
|
||||
spamfilter_build_user_string(spamfilter_user, sptr->name, sptr);
|
||||
return dospamfilter(sptr, spamfilter_user, SPAMF_USER, NULL, flags, NULL);
|
||||
}
|
||||
|
||||
@@ -1383,8 +1403,7 @@ aClient *acptr;
|
||||
for (i = LastSlot; i >= 0; i--)
|
||||
if ((acptr = local[i]) && MyClient(acptr))
|
||||
{
|
||||
ircsprintf(spamfilter_user, "%s!%s@%s:%s",
|
||||
acptr->name, acptr->user->username, acptr->user->realhost, acptr->info);
|
||||
spamfilter_build_user_string(spamfilter_user, acptr->name, acptr);
|
||||
if (regexec(&tk->ptr.spamf->expr, spamfilter_user, 0, NULL, 0))
|
||||
continue; /* No match */
|
||||
|
||||
@@ -1415,8 +1434,7 @@ aClient *acptr;
|
||||
for (acptr = client; acptr; acptr = acptr->next)
|
||||
if (IsPerson(acptr))
|
||||
{
|
||||
ircsprintf(spamfilter_user, "%s!%s@%s:%s",
|
||||
acptr->name, acptr->user->username, acptr->user->realhost, acptr->info);
|
||||
spamfilter_build_user_string(spamfilter_user, acptr->name, acptr);
|
||||
if (regexec(&tk->ptr.spamf->expr, spamfilter_user, 0, NULL, 0))
|
||||
continue; /* No match */
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ long flags = 0; /* cache: membership flags */
|
||||
if (parc > 2 || SecretChannel(chptr))
|
||||
{
|
||||
if (!ismember && !IsServer(sptr)
|
||||
&& !IsOper(sptr) && !IsULine(sptr))
|
||||
&& !OPCanSeeSecret(sptr) && !IsULine(sptr))
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_NOTONCHANNEL),
|
||||
me.name, parv[0], name);
|
||||
|
||||
@@ -130,14 +130,14 @@ DLLFUNC CMD_FUNC(m_user)
|
||||
if (parc == 6 && IsServer(cptr))
|
||||
{
|
||||
if (isdigit(*parv[4]))
|
||||
sstamp = atol(parv[4]);
|
||||
sstamp = strtoul(parv[4], NULL, 10);
|
||||
realname = (BadPtr(parv[5])) ? "<bad-realname>" : parv[5];
|
||||
umodex = NULL;
|
||||
}
|
||||
else if (parc == 8 && IsServer(cptr))
|
||||
{
|
||||
if (isdigit(*parv[4]))
|
||||
sstamp = atol(parv[4]);
|
||||
sstamp = strtoul(parv[4], NULL, 10);
|
||||
realname = (BadPtr(parv[7])) ? "<bad-realname>" : parv[7];
|
||||
umodex = parv[5];
|
||||
virthost = parv[6];
|
||||
@@ -145,7 +145,7 @@ DLLFUNC CMD_FUNC(m_user)
|
||||
else if (parc == 9 && IsServer(cptr))
|
||||
{
|
||||
if (isdigit(*parv[4]))
|
||||
sstamp = atol(parv[4]);
|
||||
sstamp = strtoul(parv[4], NULL, 10);
|
||||
realname = (BadPtr(parv[8])) ? "<bad-realname>" : parv[8];
|
||||
umodex = parv[5];
|
||||
virthost = parv[6];
|
||||
|
||||
+1
-1
@@ -796,7 +796,7 @@ static char *first_visible_channel(aClient *sptr, aClient *acptr, int *flg)
|
||||
cansee = 0;
|
||||
if (!cansee)
|
||||
{
|
||||
if (IsAnOper(sptr))
|
||||
if (OPCanSeeSecret(sptr))
|
||||
*flg |= FVC_HIDDEN;
|
||||
else
|
||||
continue;
|
||||
|
||||
@@ -209,11 +209,7 @@ DLLFUNC int m_whois(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
showchannel = 0;
|
||||
if (ShowChannel(sptr, chptr))
|
||||
showchannel = 1;
|
||||
#ifndef SHOW_SECRET
|
||||
if (IsAnOper(sptr) && !SecretChannel(chptr))
|
||||
#else
|
||||
if (IsAnOper(sptr))
|
||||
#endif
|
||||
if (OPCanSeeSecret(sptr))
|
||||
showchannel = 1;
|
||||
if ((acptr->umodes & UMODE_HIDEWHOIS) && !IsMember(sptr, chptr) && !IsAnOper(sptr))
|
||||
showchannel = 0;
|
||||
|
||||
+17
-16
@@ -72,7 +72,7 @@ int webtv_parse(aClient *sptr, char *string)
|
||||
char *cmd = NULL, *s = NULL;
|
||||
int i, n;
|
||||
aMessage *message = webtv_cmds;
|
||||
static char *para[16];
|
||||
static char *para[MAXPARA + 2];
|
||||
|
||||
if (!string || !*string)
|
||||
{
|
||||
@@ -103,8 +103,8 @@ int webtv_parse(aClient *sptr, char *string)
|
||||
s = strtok(NULL, "");
|
||||
if (s)
|
||||
{
|
||||
if (message->maxpara > 15)
|
||||
message->maxpara = 15;
|
||||
if (message->maxpara > MAXPARA)
|
||||
message->maxpara = MAXPARA; /* paranoid ? ;p */
|
||||
for (;;)
|
||||
{
|
||||
/*
|
||||
@@ -134,6 +134,8 @@ int webtv_parse(aClient *sptr, char *string)
|
||||
}
|
||||
para[++i] = NULL;
|
||||
|
||||
para[0] = sptr->name;
|
||||
|
||||
return (*message->func) (sptr->from, sptr, i, para);
|
||||
}
|
||||
|
||||
@@ -145,20 +147,25 @@ int w_whois(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
aChannel *chptr;
|
||||
char *nick, *tmp, *name;
|
||||
char *p = NULL;
|
||||
char buf[512];
|
||||
int found, len, mlen;
|
||||
char buf[512], query[512];
|
||||
int found, len, mlen, cnt = 0;
|
||||
|
||||
if (parc < 2)
|
||||
if ((parc < 2) || BadPtr(parv[1]))
|
||||
{
|
||||
sendto_one(sptr, ":IRC %s %s :Syntax error, correct is WHOIS <nick>",
|
||||
MSG_PRIVATE, sptr->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (tmp = parv[1]; (nick = strtoken(&p, tmp, ",")); tmp = NULL)
|
||||
strlcpy(query, parv[1], sizeof(query));
|
||||
|
||||
for (tmp = canonize(parv[1]); (nick = strtoken(&p, tmp, ",")); tmp = NULL)
|
||||
{
|
||||
int invis, showsecret = 0, showchannel, showperson, member, wilds;
|
||||
|
||||
if (++cnt > MAXTARGETS)
|
||||
break;
|
||||
|
||||
found = 0;
|
||||
(void)collapse(nick);
|
||||
wilds = (index(nick, '?') || index(nick, '*'));
|
||||
@@ -214,7 +221,7 @@ int w_whois(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
if (!invis && HiddenChannel(chptr) &&
|
||||
!SecretChannel(chptr))
|
||||
showperson = 1;
|
||||
else if (IsAnOper(sptr) && SecretChannel(chptr)) {
|
||||
else if (OPCanSeeSecret(sptr) && SecretChannel(chptr)) {
|
||||
showperson = 1;
|
||||
showsecret = 1;
|
||||
}
|
||||
@@ -266,11 +273,7 @@ int w_whois(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
showchannel = 0;
|
||||
if (ShowChannel(sptr, chptr))
|
||||
showchannel = 1;
|
||||
#ifndef SHOW_SECRET
|
||||
if (IsAnOper(sptr) && !SecretChannel(chptr))
|
||||
#else
|
||||
if (IsAnOper(sptr))
|
||||
#endif
|
||||
if (OPCanSeeSecret(sptr))
|
||||
showchannel = 1;
|
||||
if ((acptr->umodes & UMODE_HIDEWHOIS) && !IsMember(sptr, chptr) && !IsAnOper(sptr))
|
||||
showchannel = 0;
|
||||
@@ -402,11 +405,9 @@ int w_whois(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
sendto_one(sptr, ":IRC PRIVMSG %s :%s - No such nick",
|
||||
sptr->name, nick);
|
||||
}
|
||||
if (p)
|
||||
p[-1] = ',';
|
||||
}
|
||||
sendto_one(sptr, ":IRC PRIVMSG %s :End of whois information for %s",
|
||||
sptr->name, parv[1]);
|
||||
sptr->name, query);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#ifdef _WIN32
|
||||
#include <io.h>
|
||||
#endif
|
||||
#include "inet.h"
|
||||
#include <fcntl.h>
|
||||
#include "h.h"
|
||||
|
||||
@@ -79,6 +80,7 @@ void init_resolver(int firsttime)
|
||||
{
|
||||
struct ares_options options;
|
||||
int n;
|
||||
int optmask;
|
||||
|
||||
if (requests)
|
||||
abort(); /* should never happen */
|
||||
@@ -89,23 +91,44 @@ int n;
|
||||
memset(&dnsstats, 0, sizeof(dnsstats));
|
||||
}
|
||||
|
||||
memset(&options, 0, sizeof(options));
|
||||
options.timeout = 3;
|
||||
options.tries = 2;
|
||||
options.flags = ARES_FLAG_NOALIASES;
|
||||
#ifdef _WIN32
|
||||
/* for windows, keep using the hosts file for now, until I'm sure it's safe to disable */
|
||||
n = ares_init_options(&resolver_channel, &options, ARES_OPT_TIMEOUT|ARES_OPT_TRIES|ARES_OPT_FLAGS);
|
||||
#else
|
||||
options.lookups = "b"; /* no hosts file shit plz */
|
||||
n = ares_init_options(&resolver_channel, &options, ARES_OPT_TIMEOUT|ARES_OPT_TRIES|ARES_OPT_FLAGS|ARES_OPT_LOOKUPS);
|
||||
options.flags = ARES_FLAG_NOALIASES|ARES_FLAG_IGNTC;
|
||||
optmask = ARES_OPT_TIMEOUT|ARES_OPT_TRIES|ARES_OPT_FLAGS;
|
||||
#ifndef _WIN32
|
||||
/* on *NIX don't use the hosts file, since it causes countless useless reads.
|
||||
* on Windows we use it for now, this could be changed in the future.
|
||||
*/
|
||||
options.lookups = "b";
|
||||
optmask |= ARES_OPT_LOOKUPS;
|
||||
#endif
|
||||
n = ares_init_options(&resolver_channel, &options, optmask);
|
||||
if (n != ARES_SUCCESS)
|
||||
{
|
||||
config_error("resolver: ares_init_options() failed with error code %d [%s]", n, ares_strerror(n));
|
||||
/* Try again with set::dns::nameserver block */
|
||||
optmask |= ARES_OPT_SERVERS;
|
||||
options.servers = MyMallocEx(sizeof(struct in_addr));
|
||||
options.servers[0].s_addr = inet_addr(NAME_SERVER);
|
||||
options.nservers = 1;
|
||||
n = ares_init_options(&resolver_channel, &options, optmask);
|
||||
if (n != ARES_SUCCESS)
|
||||
{
|
||||
/* FATAL */
|
||||
config_error("resolver: ares_init_options() failed with error code %d [%s]", n, ares_strerror(n));
|
||||
#ifdef _WIN32
|
||||
win_error();
|
||||
win_error();
|
||||
#endif
|
||||
exit(-7);
|
||||
exit(-7);
|
||||
}
|
||||
ircd_log(LOG_ERROR, "[warning] Unable to get DNS server from %s. Using the one from set::dns::nameserver (%s) instead",
|
||||
#ifdef _WIN32
|
||||
"registry",
|
||||
#else
|
||||
"resolv.conf",
|
||||
#endif
|
||||
NAME_SERVER);
|
||||
MyFree(options.servers);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,7 +230,6 @@ char ipv4[4];
|
||||
#else
|
||||
r->ipv6 = 0;
|
||||
#endif
|
||||
r->name = strdup(name);
|
||||
unrealdns_addreqtolist(r);
|
||||
|
||||
/* Execute it */
|
||||
@@ -242,6 +264,7 @@ char ipv6 = r->ipv6;
|
||||
newr = MyMallocEx(sizeof(DNSReq));
|
||||
newr->cptr = acptr;
|
||||
newr->ipv6 = ipv6;
|
||||
newr->name = strdup(he->h_name);
|
||||
unrealdns_addreqtolist(newr);
|
||||
|
||||
#ifndef INET6
|
||||
@@ -276,10 +299,8 @@ int i;
|
||||
struct hostent *he2;
|
||||
u_int32_t ipv4_addr;
|
||||
|
||||
unrealdns_freeandremovereq(r);
|
||||
|
||||
if (!acptr)
|
||||
return;
|
||||
goto bad;
|
||||
|
||||
if ((status != 0) ||
|
||||
#ifdef INET6
|
||||
@@ -290,7 +311,7 @@ u_int32_t ipv4_addr;
|
||||
{
|
||||
/* Failed: error code, or data length is not 4 (nor 16) */
|
||||
proceed_normal_client_handshake(acptr, NULL);
|
||||
return;
|
||||
goto bad;
|
||||
}
|
||||
|
||||
if (!ipv6)
|
||||
@@ -322,21 +343,24 @@ u_int32_t ipv4_addr;
|
||||
{
|
||||
/* Failed name <-> IP mapping */
|
||||
proceed_normal_client_handshake(acptr, NULL);
|
||||
return;
|
||||
goto bad;
|
||||
}
|
||||
|
||||
if (!verify_hostname(he->h_name))
|
||||
if (!verify_hostname(r->name))
|
||||
{
|
||||
/* Hostname is bad, don't cache and consider unresolved */
|
||||
proceed_normal_client_handshake(acptr, NULL);
|
||||
return;
|
||||
goto bad;
|
||||
}
|
||||
|
||||
/* Entry was found, verified, and can be added to cache */
|
||||
unrealdns_addtocache(he->h_name, &acptr->ip, sizeof(acptr->ip));
|
||||
unrealdns_addtocache(r->name, &acptr->ip, sizeof(acptr->ip));
|
||||
|
||||
he2 = unreal_create_hostent(he->h_name, &acptr->ip);
|
||||
he2 = unreal_create_hostent(r->name, &acptr->ip);
|
||||
proceed_normal_client_handshake(acptr, he2);
|
||||
|
||||
bad:
|
||||
unrealdns_freeandremovereq(r);
|
||||
}
|
||||
|
||||
void unrealdns_cb_nametoip_link(void *arg, int status, struct hostent *he)
|
||||
|
||||
+3
-3
@@ -704,7 +704,7 @@ static int check_init(aClient *cptr, char *sockn, size_t size)
|
||||
}
|
||||
|
||||
/* If descriptor is a tty, special checking... */
|
||||
#ifndef _WIN32
|
||||
#if defined(DEBUGMODE) && !defined(_WIN32)
|
||||
if (isatty(cptr->fd))
|
||||
#else
|
||||
if (0)
|
||||
@@ -1203,7 +1203,7 @@ aClient *add_connection(aClient *cptr, int fd)
|
||||
* m_server and m_user instead. Also connection time out help to
|
||||
* get rid of unwanted connections.
|
||||
*/
|
||||
#ifndef _WIN32
|
||||
#if defined(DEBUGMODE) && !defined(_WIN32)
|
||||
if (isatty(fd)) /* If descriptor is a tty, special checking... */
|
||||
#else
|
||||
if (0)
|
||||
@@ -1356,7 +1356,7 @@ struct hostent *he;
|
||||
|
||||
if (!DONT_RESOLVE)
|
||||
{
|
||||
if (!acptr->serv)
|
||||
if (SHOWCONNECTINFO && !acptr->serv)
|
||||
sendto_one(acptr, "%s", REPORT_DO_DNS);
|
||||
dns_special_flag = 1;
|
||||
he = unrealdns_doclient(acptr);
|
||||
|
||||
+38
-4
@@ -1534,6 +1534,7 @@ void config_setdefaultsettings(aConfiguration *i)
|
||||
i->timesynch_enabled = 1;
|
||||
i->timesynch_timeout = 3;
|
||||
i->timesynch_server = strdup("193.67.79.202,192.43.244.18,128.250.36.3"); /* nlnet (EU), NIST (US), uni melbourne (AU). All open acces, nonotify, nodns. */
|
||||
i->name_server = strdup("127.0.0.1"); /* default, especially needed for w2003+ in some rare cases */
|
||||
}
|
||||
|
||||
/* 1: needed for set::options::allow-part-if-shunned,
|
||||
@@ -2195,12 +2196,14 @@ int config_post_test()
|
||||
Error("set::kline-address is missing");
|
||||
if (!settings.has_maxchannelsperuser)
|
||||
Error("set::maxchannelsperuser is missing");
|
||||
#if 0
|
||||
if (!settings.has_dns_nameserver)
|
||||
Error("set::dns::nameserver is missing");
|
||||
if (!settings.has_dns_timeout)
|
||||
Error("set::dns::timeout is missing");
|
||||
if (!settings.has_dns_retries)
|
||||
Error("set::dns::retries is missing");
|
||||
#endif
|
||||
if (!settings.has_services_server)
|
||||
Error("set::services-server is missing");
|
||||
if (!settings.has_default_server)
|
||||
@@ -3323,6 +3326,14 @@ int _test_oper(ConfigFile *conf, ConfigEntry *ce)
|
||||
/* oper::modes */
|
||||
else if (!strcmp(cep->ce_varname, "modes"))
|
||||
{
|
||||
char *p;
|
||||
for (p = cep->ce_vardata; *p; p++)
|
||||
if (strchr("oOaANCrzS", *p))
|
||||
{
|
||||
config_error("%s:%i: oper::modes may not include mode '%c'",
|
||||
cep->ce_fileptr->cf_filename, cep->ce_varlinenum, *p);
|
||||
errors++;
|
||||
}
|
||||
if (has_modes)
|
||||
{
|
||||
config_warn_duplicate(cep->ce_fileptr->cf_filename,
|
||||
@@ -3503,6 +3514,8 @@ int _conf_class(ConfigFile *conf, ConfigEntry *ce)
|
||||
}
|
||||
ircstrdup(class->name, ce->ce_vardata);
|
||||
|
||||
class->connfreq = 60; /* default */
|
||||
|
||||
for (cep = ce->ce_entries; cep; cep = cep->ce_next)
|
||||
{
|
||||
if (!strcmp(cep->ce_varname, "pingfreq"))
|
||||
@@ -3845,9 +3858,9 @@ int _conf_tld(ConfigFile *conf, ConfigEntry *ce)
|
||||
ConfigEntry *cepp;
|
||||
for (cepp = cep->ce_entries; cepp; cepp = cepp->ce_next)
|
||||
{
|
||||
if (!strcmp(cep->ce_varname, "ssl"))
|
||||
if (!strcmp(cepp->ce_varname, "ssl"))
|
||||
ca->options |= TLD_SSL;
|
||||
else if (!strcmp(cep->ce_varname, "remote"))
|
||||
else if (!strcmp(cepp->ce_varname, "remote"))
|
||||
ca->options |= TLD_REMOTE;
|
||||
}
|
||||
}
|
||||
@@ -6656,6 +6669,9 @@ int _conf_set(ConfigFile *conf, ConfigEntry *ce)
|
||||
else if (!strcmp(cep->ce_varname, "check-target-nick-bans")) {
|
||||
tempiConf.check_target_nick_bans = config_checkval(cep->ce_vardata, CFG_YESNO);
|
||||
}
|
||||
else if (!strcmp(cep->ce_varname, "pingpong-warning")) {
|
||||
tempiConf.pingpong_warning = config_checkval(cep->ce_vardata, CFG_YESNO);
|
||||
}
|
||||
else if (!strcmp(cep->ce_varname, "allow-userhost-change")) {
|
||||
if (!stricmp(cep->ce_vardata, "always"))
|
||||
tempiConf.userhost_allowed = UHALLOW_ALWAYS;
|
||||
@@ -7078,6 +7094,12 @@ int _test_set(ConfigFile *conf, ConfigEntry *ce)
|
||||
else if (!strcmp(cep->ce_varname, "modes-on-connect")) {
|
||||
CheckNull(cep);
|
||||
CheckDuplicate(cep, modes_on_connect, "modes-on-connect");
|
||||
if (strchr(cep->ce_vardata, 'z'))
|
||||
{
|
||||
config_error("%s:%i: set::modes-on-connect may not have +z",
|
||||
cep->ce_fileptr->cf_filename, cep->ce_varlinenum);
|
||||
errors++;
|
||||
}
|
||||
templong = (long) set_usermode(cep->ce_vardata);
|
||||
if (templong & UMODE_OPER)
|
||||
{
|
||||
@@ -7142,8 +7164,16 @@ int _test_set(ConfigFile *conf, ConfigEntry *ce)
|
||||
|
||||
}
|
||||
else if (!strcmp(cep->ce_varname, "modes-on-oper")) {
|
||||
char *p;
|
||||
CheckNull(cep);
|
||||
CheckDuplicate(cep, modes_on_oper, "modes-on-oper");
|
||||
for (p = cep->ce_vardata; *p; p++)
|
||||
if (strchr("oOaANCrzS", *p))
|
||||
{
|
||||
config_error("%s:%i: set::modes-on-oper may not include mode '%c'",
|
||||
cep->ce_fileptr->cf_filename, cep->ce_varlinenum, *p);
|
||||
errors++;
|
||||
}
|
||||
templong = (long) set_usermode(cep->ce_vardata);
|
||||
}
|
||||
else if (!strcmp(cep->ce_varname, "snomask-on-oper")) {
|
||||
@@ -7190,6 +7220,10 @@ int _test_set(ConfigFile *conf, ConfigEntry *ce)
|
||||
CheckNull(cep);
|
||||
CheckDuplicate(cep, check_target_nick_bans, "check-target-nick-bans");
|
||||
}
|
||||
else if (!strcmp(cep->ce_varname, "pingpong-warning")) {
|
||||
CheckNull(cep);
|
||||
CheckDuplicate(cep, pingpong_warning, "pingpong-warning");
|
||||
}
|
||||
else if (!strcmp(cep->ce_varname, "channel-command-prefix")) {
|
||||
CheckNull(cep);
|
||||
CheckDuplicate(cep, channel_command_prefix, "channel-command-prefix");
|
||||
@@ -7372,7 +7406,7 @@ int _test_set(ConfigFile *conf, ConfigEntry *ce)
|
||||
}
|
||||
else if (!strcmp(cepp->ce_varname, "bind-ip")) {
|
||||
struct in_addr in;
|
||||
CheckDuplicate(cepp, dns_retries, "dns::bind-ip");
|
||||
CheckDuplicate(cepp, dns_bind_ip, "dns::bind-ip");
|
||||
if (strcmp(cepp->ce_vardata, "*"))
|
||||
{
|
||||
in.s_addr = inet_addr(cepp->ce_vardata);
|
||||
@@ -8177,7 +8211,7 @@ int _conf_alias(ConfigFile *conf, ConfigEntry *ce)
|
||||
del_Command(ce->ce_vardata, NULL, cmptr->func);
|
||||
if (find_Command_simple(ce->ce_vardata))
|
||||
{
|
||||
config_warn("%s:%i: Alias '%s' would conflict with command '%s', alias not added.",
|
||||
config_warn("%s:%i: Alias '%s' would conflict with command (or server token) '%s', alias not added.",
|
||||
ce->ce_fileptr->cf_filename, ce->ce_varlinenum,
|
||||
ce->ce_vardata, ce->ce_vardata);
|
||||
return 0;
|
||||
|
||||
@@ -1136,3 +1136,35 @@ char *getcloak(aClient *sptr)
|
||||
|
||||
return sptr->user->cloakedhost;
|
||||
}
|
||||
|
||||
/** Kicks all insecure users on a +z channel */
|
||||
void kick_insecure_users(aChannel *chptr)
|
||||
{
|
||||
Member *member, *mb2;
|
||||
aClient *cptr;
|
||||
char *comment = "Insecure user not allowed on secure channel (+z)";
|
||||
|
||||
for (member = chptr->members; member; member = mb2)
|
||||
{
|
||||
mb2 = member->next;
|
||||
cptr = member->cptr;
|
||||
if (MyClient(cptr) && !IsSecureConnect(cptr) && !IsULine(cptr))
|
||||
{
|
||||
RunHook5(HOOKTYPE_LOCAL_KICK, &me, &me, cptr, chptr, comment);
|
||||
|
||||
if ((chptr->mode.mode & MODE_AUDITORIUM) && is_chanownprotop(cptr, chptr))
|
||||
{
|
||||
sendto_chanops_butone(cptr, chptr, ":%s KICK %s %s :%s", me.name, chptr->chname, cptr->name, comment);
|
||||
sendto_prefix_one(cptr, &me, ":%s KICK %s %s :%s", me.name, chptr->chname, cptr->name, comment);
|
||||
}
|
||||
else
|
||||
{
|
||||
sendto_channel_butserv(chptr, &me, ":%s KICK %s %s :%s", me.name, chptr->chname, cptr->name, comment);
|
||||
}
|
||||
|
||||
sendto_serv_butone_token(&me, me.name, MSG_KICK, TOK_KICK, "%s %s :%s", chptr->chname, cptr->name, comment);
|
||||
|
||||
remove_user_from_channel(cptr, chptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+26
-9
@@ -257,9 +257,9 @@ void m_info_send(aClient *sptr)
|
||||
sendto_one(sptr, ":%s %d %s :|", me.name, RPL_INFO, sptr->name);
|
||||
sendto_one(sptr, ":%s %d %s :| This is an UnrealIRCD-style server",
|
||||
me.name, RPL_INFO, sptr->name);
|
||||
sendto_one(sptr, ":%s %d %s :| If you find any bugs, please mail",
|
||||
sendto_one(sptr, ":%s %d %s :| If you find any bugs, please report them at:",
|
||||
me.name, RPL_INFO, sptr->name);
|
||||
sendto_one(sptr, ":%s %d %s :| bugs@lists.unrealircd.org",
|
||||
sendto_one(sptr, ":%s %d %s :| http://bugs.unrealircd.org/",
|
||||
me.name, RPL_INFO, sptr->name);
|
||||
|
||||
sendto_one(sptr,
|
||||
@@ -672,6 +672,16 @@ CMD_FUNC(m_rehash)
|
||||
reinit_resolver(sptr);
|
||||
return 0;
|
||||
}
|
||||
if (!_match("-ssl*", parv[1]))
|
||||
{
|
||||
#ifdef USE_SSL
|
||||
extern void reinit_ssl(aClient *);
|
||||
reinit_ssl(sptr);
|
||||
#else
|
||||
sendnotice(sptr, "SSL is not enabled on this server");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
if (!_match("-o*motd", parv[1]))
|
||||
{
|
||||
sendto_ops
|
||||
@@ -997,6 +1007,18 @@ aMotd *read_file(char *filename, aMotd **list)
|
||||
return read_file_ex(filename, list, NULL);
|
||||
}
|
||||
|
||||
void free_motd(aMotd *m)
|
||||
{
|
||||
aMotd *next;
|
||||
|
||||
for (; m; m = next)
|
||||
{
|
||||
next = m->next;
|
||||
MyFree(m->line);
|
||||
MyFree(m);
|
||||
}
|
||||
}
|
||||
|
||||
/** Read motd-like file, used for rules/motd/botmotd/opermotd/etc.
|
||||
* @param filename Filename of file to read.
|
||||
* @param list Reference to motd pointer (used for freeing if needed, NULL allowed)
|
||||
@@ -1017,13 +1039,8 @@ aMotd *read_file_ex(char *filename, aMotd **list, struct tm *t)
|
||||
|
||||
if (list)
|
||||
{
|
||||
while (*list)
|
||||
{
|
||||
old = (*list)->next;
|
||||
MyFree((*list)->line);
|
||||
MyFree(*list);
|
||||
*list = old;
|
||||
}
|
||||
free_motd(*list);
|
||||
*list = NULL;
|
||||
}
|
||||
|
||||
if (t)
|
||||
|
||||
@@ -838,3 +838,4 @@ int add_silence(aClient *sptr, char *mask, int senderr)
|
||||
sptr->user->silence = lp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,27 +54,25 @@ typedef struct {
|
||||
|
||||
#define CHK_SSL(err) if ((err)==-1) { ERR_print_errors_fp(stderr); }
|
||||
#ifdef _WIN32
|
||||
static StreamIO *streamp;
|
||||
LRESULT SSLPassDLG(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam) {
|
||||
StreamIO *stream;
|
||||
static StreamIO *stream;
|
||||
switch (Message) {
|
||||
case WM_INITDIALOG:
|
||||
stream = (StreamIO*)lParam;
|
||||
return TRUE;
|
||||
case WM_COMMAND:
|
||||
stream = (StreamIO *)streamp;
|
||||
if (LOWORD(wParam) == IDCANCEL) {
|
||||
*stream->buffer = NULL;
|
||||
EndDialog(hDlg, TRUE);
|
||||
EndDialog(hDlg, IDCANCEL);
|
||||
}
|
||||
else if (LOWORD(wParam) == IDOK) {
|
||||
GetDlgItemText(hDlg, IDC_PASS, *stream->buffer, *stream->size);
|
||||
EndDialog(hDlg, TRUE);
|
||||
EndDialog(hDlg, IDOK);
|
||||
}
|
||||
return FALSE;
|
||||
case WM_CLOSE:
|
||||
if (stream)
|
||||
*stream->buffer = NULL;
|
||||
EndDialog(hDlg, TRUE);
|
||||
*stream->buffer = NULL;
|
||||
EndDialog(hDlg, IDCANCEL);
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
@@ -140,8 +138,7 @@ int ssl_pem_passwd_cb(char *buf, int size, int rwflag, void *password)
|
||||
pass = passbuf;
|
||||
stream.buffer = &pass;
|
||||
stream.size = &passsize;
|
||||
streamp = &stream;
|
||||
DialogBoxParam(hInst, "SSLPass", hwIRCDWnd, (DLGPROC)SSLPassDLG, (LPARAM)NULL);
|
||||
DialogBoxParam(hInst, "SSLPass", hwIRCDWnd, (DLGPROC)SSLPassDLG, (LPARAM)&stream);
|
||||
#endif
|
||||
if (pass)
|
||||
{
|
||||
@@ -174,14 +171,27 @@ static int ssl_verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
void init_ctx_server(void)
|
||||
static void mylog(char *fmt, ...)
|
||||
{
|
||||
va_list vl;
|
||||
static char buf[2048];
|
||||
|
||||
va_start(vl, fmt);
|
||||
ircvsprintf(buf, fmt, vl);
|
||||
va_end(vl);
|
||||
sendto_realops("[SSL rehash] %s", buf);
|
||||
ircd_log(LOG_ERROR, "%s", buf);
|
||||
}
|
||||
|
||||
SSL_CTX *init_ctx_server(void)
|
||||
{
|
||||
SSL_CTX *ctx_server;
|
||||
|
||||
ctx_server = SSL_CTX_new(SSLv23_server_method());
|
||||
if (!ctx_server)
|
||||
{
|
||||
ircd_log(LOG_ERROR, "Failed to do SSL CTX new");
|
||||
exit(2);
|
||||
mylog("Failed to do SSL CTX new");
|
||||
return NULL;
|
||||
}
|
||||
SSL_CTX_set_default_passwd_cb(ctx_server, ssl_pem_passwd_cb);
|
||||
SSL_CTX_set_options(ctx_server, SSL_OP_NO_SSLv2);
|
||||
@@ -191,57 +201,67 @@ void init_ctx_server(void)
|
||||
|
||||
if (SSL_CTX_use_certificate_chain_file(ctx_server, SSL_SERVER_CERT_PEM) <= 0)
|
||||
{
|
||||
ircd_log(LOG_ERROR, "Failed to load SSL certificate %s", SSL_SERVER_CERT_PEM);
|
||||
exit(3);
|
||||
mylog("Failed to load SSL certificate %s", SSL_SERVER_CERT_PEM);
|
||||
goto fail;
|
||||
}
|
||||
if (SSL_CTX_use_PrivateKey_file(ctx_server, SSL_SERVER_KEY_PEM, SSL_FILETYPE_PEM) <= 0)
|
||||
{
|
||||
ircd_log(LOG_ERROR, "Failed to load SSL private key %s", SSL_SERVER_KEY_PEM);
|
||||
exit(4);
|
||||
mylog("Failed to load SSL private key %s", SSL_SERVER_KEY_PEM);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!SSL_CTX_check_private_key(ctx_server))
|
||||
{
|
||||
ircd_log(LOG_ERROR, "Failed to check SSL private key");
|
||||
exit(5);
|
||||
mylog("Failed to check SSL private key");
|
||||
goto fail;
|
||||
}
|
||||
if (iConf.trusted_ca_file)
|
||||
{
|
||||
if (!SSL_CTX_load_verify_locations(ctx_server, iConf.trusted_ca_file, NULL))
|
||||
{
|
||||
ircd_log(LOG_ERROR, "Failed to load Trusted CA's from %s", iConf.trusted_ca_file);
|
||||
exit(6);
|
||||
mylog("Failed to load Trusted CA's from %s", iConf.trusted_ca_file);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
return ctx_server;
|
||||
fail:
|
||||
SSL_CTX_free(ctx_server);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
void init_ctx_client(void)
|
||||
SSL_CTX *init_ctx_client(void)
|
||||
{
|
||||
SSL_CTX *ctx_client;
|
||||
|
||||
ctx_client = SSL_CTX_new(SSLv3_client_method());
|
||||
if (!ctx_client)
|
||||
{
|
||||
ircd_log(LOG_ERROR, "Failed to do SSL CTX new client");
|
||||
exit(2);
|
||||
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_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)
|
||||
{
|
||||
ircd_log(LOG_ERROR, "Failed to load SSL certificate %s (client)", SSL_SERVER_CERT_PEM);
|
||||
exit(3);
|
||||
mylog("Failed to load SSL certificate %s (client)", SSL_SERVER_CERT_PEM);
|
||||
goto fail;
|
||||
}
|
||||
if (SSL_CTX_use_PrivateKey_file(ctx_client, SSL_SERVER_KEY_PEM, SSL_FILETYPE_PEM) <= 0)
|
||||
{
|
||||
ircd_log(LOG_ERROR, "Failed to load SSL private key %s (client)", SSL_SERVER_KEY_PEM);
|
||||
exit(4);
|
||||
mylog("Failed to load SSL private key %s (client)", SSL_SERVER_KEY_PEM);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!SSL_CTX_check_private_key(ctx_client))
|
||||
{
|
||||
ircd_log(LOG_ERROR, "Failed to check SSL private key (client)");
|
||||
exit(5);
|
||||
mylog("Failed to check SSL private key (client)");
|
||||
goto fail;
|
||||
}
|
||||
return ctx_client;
|
||||
fail:
|
||||
SSL_CTX_free(ctx_client);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void init_ssl(void)
|
||||
@@ -261,8 +281,46 @@ void init_ssl(void)
|
||||
#endif
|
||||
RAND_egd(EGD_PATH);
|
||||
}
|
||||
init_ctx_server();
|
||||
init_ctx_client();
|
||||
ctx_server = init_ctx_server();
|
||||
if (!ctx_server)
|
||||
exit(7);
|
||||
ctx_client = init_ctx_client();
|
||||
if (!ctx_client)
|
||||
exit(8);
|
||||
}
|
||||
|
||||
void reinit_ssl(aClient *acptr)
|
||||
{
|
||||
SSL_CTX *tmp;
|
||||
|
||||
if (IsPerson(acptr))
|
||||
mylog("%s (%s@%s) requested a reload of all SSL related data (/rehash -ssl)",
|
||||
acptr->name, acptr->user->username, acptr->user->realhost);
|
||||
else
|
||||
mylog("%s requested a reload of all SSL related data (/rehash -ssl)",
|
||||
acptr->name);
|
||||
|
||||
tmp = init_ctx_server();
|
||||
if (!tmp)
|
||||
{
|
||||
mylog("SSL Reload failed.");
|
||||
return;
|
||||
}
|
||||
/* free and do it for real */
|
||||
SSL_CTX_free(tmp);
|
||||
SSL_CTX_free(ctx_server);
|
||||
ctx_server = init_ctx_server();
|
||||
|
||||
tmp = init_ctx_client();
|
||||
if (!tmp)
|
||||
{
|
||||
mylog("SSL Reload partially failed. Server context is reloaded, client context failed");
|
||||
return;
|
||||
}
|
||||
/* free and do it for real */
|
||||
SSL_CTX_free(tmp);
|
||||
SSL_CTX_free(ctx_client);
|
||||
ctx_client = init_ctx_client();
|
||||
}
|
||||
|
||||
#define CHK_NULL(x) if ((x)==NULL) {\
|
||||
@@ -580,6 +638,13 @@ static int fatal_ssl_error(int ssl_error, int where, aClient *sptr)
|
||||
break;
|
||||
case SSL_ERROR_SYSCALL:
|
||||
ssl_errstr = "Underlying syscall error";
|
||||
/* TODO: then show the REAL socktet error instead...
|
||||
* unfortunately that means we need to have the 'untouched errno',
|
||||
* which is not always present since our function is not always
|
||||
* called directly after a failure. Hence, we should add a new
|
||||
* parameter to fatal_ssl_error which is called errno, and use
|
||||
* that here... Something for 3.2.7 ;) -- Syzop
|
||||
*/
|
||||
break;
|
||||
case SSL_ERROR_ZERO_RETURN:
|
||||
ssl_errstr = "Underlying socket operation returned zero";
|
||||
@@ -599,6 +664,27 @@ static int fatal_ssl_error(int ssl_error, int where, aClient *sptr)
|
||||
sptr->flags |= FLAGS_DEADSOCKET;
|
||||
sendto_snomask(SNO_JUNK, "Exiting ssl client %s: %s: %s",
|
||||
get_client_name(sptr, TRUE), ssl_func, ssl_errstr);
|
||||
|
||||
if (where == SAFE_SSL_CONNECT)
|
||||
{
|
||||
char *myerr = ssl_errstr;
|
||||
if (ssl_error == SSL_ERROR_SYSCALL)
|
||||
myerr = STRERROR(errtmp);
|
||||
/* sendto_failops_whoare_opers("Closing link: SSL_connect(): %s - %s", myerr, get_client_name(sptr, FALSE)); */
|
||||
sendto_umode(UMODE_OPER, "Lost connection to %s: %s: %s",
|
||||
get_client_name(sptr, FALSE), ssl_func, myerr);
|
||||
} else
|
||||
if ((IsServer(sptr) || (sptr->serv && sptr->serv->conf)) && (where != SAFE_SSL_WRITE))
|
||||
{
|
||||
/* if server (either judged by IsServer() or clearly an outgoing connect),
|
||||
* and not writing (since otherwise deliver_it will take care of the error), THEN
|
||||
* send a closing link error...
|
||||
*/
|
||||
sendto_umode(UMODE_OPER, "Lost connection to %s: %s: %s",
|
||||
get_client_name(sptr, FALSE), ssl_func, ssl_errstr);
|
||||
/* sendto_failops_whoare_opers("Closing link: %s: %s - %s", ssl_func, ssl_errstr, get_client_name(sptr, FALSE)); */
|
||||
}
|
||||
|
||||
if (errtmp)
|
||||
{
|
||||
SET_ERRNO(errtmp);
|
||||
|
||||
+15
-1
@@ -1675,6 +1675,17 @@ void *MyMallocEx(size_t size)
|
||||
return (p);
|
||||
}
|
||||
|
||||
int file_exists(char* file)
|
||||
{
|
||||
FILE *fd;
|
||||
fd = fopen(file, "r");
|
||||
if (!fd)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Returns a unique filename in the specified directory
|
||||
* using the specified suffix. The returned value will
|
||||
* be of the form <dir>/<random-hex>.<suffix>
|
||||
@@ -1766,7 +1777,10 @@ int unreal_copyfile(char *src, char *dest)
|
||||
#endif
|
||||
|
||||
if (srcfd < 0)
|
||||
{
|
||||
config_error("Unable to open file '%s': %s", src, strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
destfd = open(dest, O_WRONLY|O_CREAT, DEFAULT_PERMISSIONS);
|
||||
@@ -1814,7 +1828,7 @@ int unreal_copyfileex(char *src, char *dest, int tryhardlink)
|
||||
#ifndef _WIN32
|
||||
/* Try a hardlink first... */
|
||||
if (tryhardlink && !link(src, dest))
|
||||
return 0; /* success */
|
||||
return 1; /* success */
|
||||
#endif
|
||||
return unreal_copyfile(src, dest);
|
||||
}
|
||||
|
||||
@@ -113,6 +113,9 @@ char *unrealcredits[] =
|
||||
"LFS - www.linuxfromscratch.org, The_devil - chat.snyggast.se,",
|
||||
"Stephen - dirac.betas-online.com, NationWars - www.nationwars.com",
|
||||
"SurrealChat.net - www.surrealchat.net, NamesDir - www.namesdir.com",
|
||||
"Muisje - www.elitez0r.com, Jaya Sri - www.krisna.cc",
|
||||
"DiabloClone.Org - irc.diabloclone.org, RisingNet - www.RisingNet.net",
|
||||
"DCloneIRC.net - irc.dcloneirc.net, L.E.-Nation - irc.le-nation.de",
|
||||
"=-=-=-=-=-=-=-=-=-=-=-=-=-=-[Hosting]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=",
|
||||
"Phil Veale - email@phillipveale.com - http://www.tiefighter.org",
|
||||
"- Donating webhosting for the project amongst other things",
|
||||
|
||||
Binary file not shown.
+15
-4
@@ -286,10 +286,21 @@ LONG __stdcall ExceptionFilter(EXCEPTION_POINTERS *e)
|
||||
{
|
||||
FILE *fd = fopen("service.log", "a");
|
||||
|
||||
fprintf(fd, "UnrealIRCd has encountered a fatal error. Debugging information "
|
||||
"has been dumped to wircd.%d.core, please email this file to "
|
||||
"coders@lists.unrealircd.org.", getpid());
|
||||
fclose(fd);
|
||||
if (fd)
|
||||
{
|
||||
fprintf(fd, "UnrealIRCd has encountered a fatal error. Debugging information "
|
||||
"has been dumped to wircd.%d.core, please email this file to "
|
||||
"coders@lists.unrealircd.org.", getpid());
|
||||
fclose(fd);
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
else
|
||||
{
|
||||
OutputDebugString("UnrealIRCd has encountered a fatal error. Debugging information "
|
||||
"has been dumped to wircd.%d.core, please email this file to "
|
||||
"coders@lists.unrealircd.org.", getpid());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
CleanUp();
|
||||
return EXCEPTION_EXECUTE_HANDLER;
|
||||
|
||||
+11
-2
@@ -1047,8 +1047,17 @@ void win_log(unsigned char *format, ...)
|
||||
else
|
||||
{
|
||||
FILE *fd = fopen("service.log", "a");
|
||||
fprintf(fd, "%s\n", buf);
|
||||
fclose(fd);
|
||||
if (fd)
|
||||
{
|
||||
fprintf(fd, "%s\n", buf);
|
||||
fclose(fd);
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
else
|
||||
{
|
||||
OutputDebugString(buf);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
[Setup]
|
||||
AppName=UnrealIRCd
|
||||
AppVerName=UnrealIRCd3.2.5
|
||||
AppVerName=UnrealIRCd3.2.6
|
||||
AppPublisher=UnrealIRCd Team
|
||||
AppPublisherURL=http://www.unrealircd.com
|
||||
AppSupportURL=http://www.unrealircd.com
|
||||
|
||||
@@ -10,7 +10,7 @@ if [ "$1" = "start" ] ; then
|
||||
@BINDIR@
|
||||
sleep 1
|
||||
if [ ! -r $PID_FILE ] ; then
|
||||
echo "Possible error encountered (IRCd seemily not started)"
|
||||
echo "Possible error encountered (IRCd seemingly not started)"
|
||||
echo "====================================================="
|
||||
echo "Check above for possible errors, and this output of "
|
||||
echo "ircd.log. If you cannot solve the problem, read"
|
||||
|
||||
Reference in New Issue
Block a user