1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-25 09:16:37 +02:00

1159 Commits

Author SHA1 Message Date
autoupdate cfec5bb08a Automatic weekly version update: 201120 2011-05-15 23:00:03 +00:00
autoupdate 7ed4b2cac9 Automatic weekly version update: 201119 2011-05-08 23:00:02 +00:00
diablo 9a7ec92d48 Add id attribute for referring to set::anti-spam-quit-message-time. 2011-05-08 21:34:40 +00:00
bock a70e82c418 changes of 18 week 2011-05-07 17:49:16 +00:00
alef 1b60d7c763 Translation of the title. 2011-05-06 15:31:37 +00:00
alef b3398d709c Add id attribute for referring to set::anti-spam-quit-message-time. 2011-05-06 15:27:55 +00:00
autoupdate 1a1cb25c98 Automatic weekly version update: 201118 2011-05-01 23:00:02 +00:00
binki 5a847b490c Add id attribute for referring to set::anti-spam-quit-message-time. 2011-05-01 20:44:59 +00:00
autoupdate aac9b61d9c Automatic weekly version update: 201117 2011-04-24 23:00:02 +00:00
autoupdate 49ad2b388d Automatic weekly version update: 201116 2011-04-17 23:00:02 +00:00
autoupdate b0914f9a44 Automatic weekly version update: 201115 2011-04-10 23:00:03 +00:00
autoupdate 2f0cab1ac1 Automatic weekly version update: 201114 2011-04-03 23:00:02 +00:00
Bram Matthys 64776556a9 - Module coders: Added HOOKTYPE_HANDSHAKE which is called before the client
handshake, IOTW: as soon as the connection is established. This can be
  used to do things prior to accepting any commands, such as sending some text.
2011-04-03 07:45:57 +00:00
autoupdate 71102b1d41 Automatic weekly version update: 201113 2011-03-27 23:00:03 +00:00
autoupdate 0db5417b83 Automatic weekly version update: 201112 2011-03-21 00:00:03 +00:00
binki 34cab7caff - Fix empty/nonexistent short MOTD being shown instead of the full MOTD on user registration. Thanks WakiMiko (#4011). 2011-03-14 19:03:41 +00:00
binki 938b591358 Remove unused local variable. 2011-03-14 18:51:23 +00:00
autoupdate 8a39b26e56 Automatic weekly version update: 201111 2011-03-14 00:00:02 +00:00
autoupdate 26847b8692 Automatic weekly version update: 201110 2011-03-07 00:00:02 +00:00
alef 3acf7b2faa - Fix documentation about channel mode +t and halfops. 2011-02-28 22:32:33 +00:00
diablo 16bd395632 Fix documentation about channel mode +t and halfops. 2011-02-28 21:46:53 +00:00
autoupdate 39dd1eaca8 Automatic weekly version update: 201109 2011-02-28 00:00:02 +00:00
bock 17b5922cea Update of last update docs (about chanmode +t). 2011-02-26 22:13:48 +00:00
binki a5e7197daf - Fix documentation about channel mode +t and halfops, thanks warg (#4007). 2011-02-23 01:24:26 +00:00
autoupdate f1d9606b4f Automatic weekly version update: 201108 2011-02-21 00:00:02 +00:00
autoupdate c68c7918dd Automatic weekly version update: 201107 2011-02-14 00:00:03 +00:00
autoupdate 5a71b706c3 Automatic weekly version update: 201106 2011-02-07 00:00:03 +00:00
autoupdate abae8bad84 Automatic weekly version update: 201105 2011-01-31 00:00:02 +00:00
autoupdate 627bfd9cf7 Automatic weekly version update: 201104 2011-01-24 00:00:02 +00:00
autoupdate e67274fc69 Automatic weekly version update: 201103 2011-01-17 00:00:02 +00:00
autoupdate 7e24744601 Automatic weekly version update: 201102 2011-01-10 00:00:02 +00:00
Bram Matthys cf1a52a927 - Bump server protocol version to 2310, due to the various changes and so
you can use deny link { } blocks if you want to deny older versions than
  this release.
2011-01-08 10:51:58 +00:00
autoupdate 5268649357 Automatic weekly version update: 201101 2011-01-03 00:00:03 +00:00
binki 6c69183d5a - Fix pointer handling in remote MOTD code, fixing a crash on REHASH
reported by goldenwolf (#3992).
2010-12-30 21:05:18 +00:00
binki 6baddddc8e - Fix set::ssl::options::no-starttls not being recognized. 2010-12-29 18:38:28 +00:00
Bram Matthys 0414d09660 - Updated credits a bit (#3980). 2010-12-29 17:10:48 +00:00
Bram Matthys 2883eea6c7 - Update doc/compiling_win32.txt a bit (#3975). 2010-12-29 16:48:34 +00:00
Bram Matthys bcb97efdb3 - Windows installer: if an SSL certificate already exists, then don't check
the 'create SSL certificate' by default. Patch from goldenwolf (#3965).
2010-12-29 16:29:19 +00:00
autoupdate 751584bbcb Automatic weekly version update: 201052 2010-12-27 00:00:03 +00:00
angrywolf 4927abe5b4 Changes from 2010/09/15 to 2010/12/15. 2010-12-26 12:55:40 +00:00
binki 48bc3b2f74 - Fix remote MOTDs for URLs whose path components contain
subdirectories, in the process much simplifying my remote MOTD
  code. Reported by goldenwolf (#3986).
2010-12-25 15:33:01 +00:00
binki 91c3283cfa - Fix bundled TRE compilation error on OpenBSD with pkg-config-0.21
where pkg-config can't find 'tre.pc'. Reported by CuleX. (#3982)
  Also properly escape the sed expression used in the pkg-config call.
2010-12-24 02:29:53 +00:00
diablo f6c843d38f Last unreal32docs.tr.html update 2010-12-22 22:05:38 +00:00
binki df37d83f8b - Fix invalid use of 'wc -l' when detecting the AsynchDNS feature of
libcurl which breaks compilation on FreeBSD; instead use 'grep
  -q'. Reported by Jobe (#3981), solution proposed by satmd.
2010-12-22 16:02:39 +00:00
binki 9f710925f8 - Fix missing #include <stdint.h>. Fixes compile error on OpenBSD
reported by CuleX (#3977).
2010-12-21 04:53:05 +00:00
binki 7041116ec0 - Fix typo 'alias::spampfilter' in German docs, reported by seraphim (#3978). 2010-12-20 05:24:41 +00:00
autoupdate 311efc56b4 Automatic weekly version update: 201051 2010-12-20 00:00:03 +00:00
Bram Matthys 9c30f7b685 - Fixed bug with curl not finding libcares, reported by katslaw.
- Added workaround for 'curl-config' depending on 'bc'.
2010-12-19 16:38:07 +00:00
binki b994ad33bd - Enable parallel building of modules. 2010-12-15 18:45:31 +00:00
cvs2hg 6e837537a8 fixup commit for tag 'unreal3_2_9rc1' 2010-12-15 15:00:54 +00:00
Bram Matthys 4cb6ed06c8 credit 2010-12-15 15:00:53 +00:00
Bram Matthys 84007d4c16 nothing happened, no.. really ;) 2010-12-15 14:59:21 +00:00
Bram Matthys 0c8f523e1d ** 3.2.9-rc1 release ** 2010-12-15 12:50:48 +00:00
Bram Matthys 13a946d0e0 Update credits.. (hosters) 2010-12-15 12:25:23 +00:00
binki 805f1988ec Clarify wording in Makefile.in about how to set the FD_SETSIZE macro using the Makefile variables. 2010-12-15 01:31:16 +00:00
autoupdate aa0f869213 Automatic weekly version update: 201050 2010-12-13 00:00:03 +00:00
Bram Matthys cb60ae3442 compile fix 2010-12-12 21:13:43 +00:00
Bram Matthys dcb34f43f6 make it compile 2010-12-12 17:19:43 +00:00
Bram Matthys d603a53e4e - Win32: show missing /INFO in GUI 2010-12-12 17:08:23 +00:00
Bram Matthys baa7d5f4f3 -include win32/ares/setup.h, -HAVE_INET_PTON etc... ..... ... a r g h 2010-12-12 16:44:27 +00:00
Bram Matthys ef64b411c8 ... 2010-12-12 16:39:12 +00:00
Bram Matthys 1309531df8 forgot to remove an #ifndef 2010-12-12 16:37:34 +00:00
Bram Matthys 58260b3917 Major win32 build system cleanup:
- Win32: Attempt to move to 100% winsock2 (the include, to be precise),
  this means includes have to be in a very particular order (!)
- Win32: #define _WIN32_WINNT 0x0501 and force our own inet_ntop/pton,
  otherwise you get an ntop runtime error on XP and earlier.
- Win32: Get rid of c-ares includes and library in our tree, and use the
  DLL instead of static LIB, just like we do for ssl and zlib.
- Win32: Get rid of TRE lib and includes
- Win32: reorder includes to fix winsock errors with curl
2010-12-12 16:32:55 +00:00
Bram Matthys b8026bbc50 - Fix return values in src/auth.c on Win32. 2010-12-08 10:13:14 +00:00
Bram Matthys 6dab6c11b1 - Error on zero sendq in class::sendq, reported by jonbeard. 2010-12-06 12:47:25 +00:00
autoupdate f6e12c316b Automatic weekly version update: 201049 2010-12-06 00:00:03 +00:00
Bram Matthys 59e35dc066 +Better document 'sslclientcert' in the Oper Block documentation. 2010-12-05 16:49:42 +00:00
Bram Matthys 7f8009c4c1 corrected a typo in changelog x months ago 2010-12-05 16:31:33 +00:00
Bram Matthys 08d8c52885 minor edits 2010-12-05 15:08:24 +00:00
Bram Matthys e821be52d3 - Added release notes. 2010-12-05 14:51:14 +00:00
autoupdate 202318cb12 Automatic weekly version update: 201048 2010-11-29 00:00:03 +00:00
bock b36a576461 Update docs for Russian before 3.2.9 2010-11-22 19:56:12 +00:00
Bram Matthys 5a3e54c385 - Fixed Windows compile problem with current CVS due to m_issecure,
reported and fix provided by therock247uk (#3970).
2010-11-22 10:55:34 +00:00
Bram Matthys 292b6ae15c Bring donations up to date. Last donator: 2010-10-21 2010-11-22 10:51:44 +00:00
diablo 0ae8d7c075 - Added <REHASH -global> & <CHANMODE +Z> & <EXCEPT BAN> & <EXCEPT TKL> & <ALLOW-INSANE-BAN> 2010-11-22 02:24:26 +00:00
autoupdate 7c86c421c9 Automatic weekly version update: 201047 2010-11-22 00:00:02 +00:00
diablo e5502a3ca0 Added '/REHASH -global' command which will rehash all servers on the network 2010-11-21 23:50:43 +00:00
alef 196a4e323e Typo 2010-11-20 23:00:19 +00:00
alef f56639bff0 - mode +Z
- /rehash -global
- except tkl::type all & difference between except tkl and except ban
- set::options::allow-insane-bans
2010-11-20 21:19:23 +00:00
angrywolf c13ab74144 Doc changes from 2009/05/13 to 2009/12/22. 2010-11-20 11:50:46 +00:00
angrywolf c46205e79d Doc changes from 2009/12/06 to 2010/09/15. 2010-11-20 11:04:11 +00:00
Bram Matthys a4f69bee1a typo 2010-11-17 20:39:50 +00:00
Bram Matthys 07b2fbb35e - Windows: When trying to load a module (DLL) windows can give us the
mysterious error 'The specified module could not be found' even though the
  file exists. This usually means that it depends on another DLL, but
  apparently Microsoft decided not to mention that in the error message.
  We now append some small text when such an error happens, saying that it
  could be because of a missing dependency. Reported by Phil.
2010-11-17 18:25:56 +00:00
Bram Matthys 28c19679b2 changelog edit: one SHUN less ;P 2010-11-16 19:40:08 +00:00
Bram Matthys 643355b387 - Added set::options::allow-insane-bans which makes it possible to set
really broad bans such as *@*.xx. Needless to say this can be very
  dangerous. Reported and patch provided by Stealth (#0003963).
2010-11-15 16:23:02 +00:00
Bram Matthys 779444448c - Clarified the difference between 'except ban' (which exempts from KLINE
and ZLINE) and 'except tkl' (which can exempt from GLINE, GZLINE, SHUN,
  QLINE, GQLINE and SHUN). Reported by Digerati (#0002535).
- Added except tkl::type 'all', which exempts from all TKL types (except
  KLINE).
2010-11-15 16:14:20 +00:00
Bram Matthys d107a4a6a8 - Added '/REHASH -global' command which will rehash all servers on the
network. You can also specify options like '/REHASH -global -motd' to
  rehash only the MOTD/RULES/etc. Just like /REHASH <servername> this is a
  NetAdmin-only command. This command is fully backwards compatible with
  older UnrealIRCd version in the sense that it will also REHASH old
  Unreal's. Suggested by 'P' in #0001522.
2010-11-15 15:50:52 +00:00
Bram Matthys d5167c69ad update credits/bugid of install as service vs enccert 2010-11-15 14:11:46 +00:00
Bram Matthys da0d21fe57 - Little tweak to +Z: when the last insecure user parts and the channel is
set +Z (secure), the parting user saw the MODE too, which was silly.
  Reported by Robby22 (#0003720).
2010-11-15 14:00:57 +00:00
Bram Matthys 372fbe7af9 - Win32 installer: Make it so a user can no longer accidentally check both
'install as service' and 'encrypt SSL certificate', as they are
  incompatible (a service cannot ask a user to enter a password).
- Win32 installer: Fixed long outstanding problem with some Vista / Windows 7
  installations, which has to do with file permissions of the Unreal3.2
  folder. Symptoms were error messages such as:
  Unable to create file 'tmp/10D9D743.commands.dll': Permission denied
  But also failing to create SSL certificates, nothing being logged, etc.
  This is now fixed by setting write access on the Unreal3.2 folder to the
  user running the install, unless the user chooses not to use this new
  option (it can be unchecked), in which case the user is warned that he
  should take care of this himself.
  Reported by various persons, special thanks to Bock and goldenwolf for
  helping us to track down this issue (#0003943).
2010-11-15 13:41:04 +00:00
autoupdate d53d7156ae Automatic weekly version update: 201046 2010-11-15 00:00:02 +00:00
Bram Matthys 64dcfe6073 Forgot to remove a FIXME comment which was already fixed ;) 2010-11-13 19:26:59 +00:00
Bram Matthys a2137bda71 local chanmode, chan mode +Z, operoverride with key 'override', sorting HELPOP CHMODES, fishy timestamps:
- Some small updates to the extended channel mode system: it now has minimal
  support for 'local channel modes'. This is really only meant for channel
  mode +Z (upcase z), see next.
- Added Channel Mode Z which indicates if a channel is 'secure' or not.
  This mode works in conjunction with +z (lower case z).
  If +z is set ('only secure users may join'), then the IRCd scans to see
  if everyone in the channel is connected through SSL. If so, then the
  channel is set +Z as well ('channel is secure').
  Whenever an insecure user manages to join, the channel is -Z. And whenever
  all insecure users leave, the channel is set +Z.
  The 'insecure user being present in a +z channel' can be because:
  - An IRCOp joined the channel, and he's not secure
  - When servers link together and a user on the other side is not secure
    This only happens on net merge (equal time stamp).
    On different time stamp, we still kick insecure users on the new side.
  - At the time when +z is set, there are insecure users present.
  This feature was implemented after a heavy discussion in bug #3720 by fez
  and others, and was suggested by Stealth.
  Tech note: +Z/-Z is handled locally by each server. Any attempt to
  remotely set +Z/-Z (eg: by services) will be ignored.
- As mentioned above, +z can now be set even if any insecure users are
  present. Previously, this was not permitted. Now, as soon as the last
  non-SSL user leaves, the channel will be set +Z.
- An oper not connected through SSL previously had to /INVITE himself
  to a channel and then /JOIN the channel with the key 'override'.
  This 'override' key is no longer required, a simple JOIN will suffice.
- Sorted channel modes in /HELPOP ?CHMODES
- Re-enabled 'fishy timestamp' errors in MODE. For some reason this was
  commented out, even though the (more annoying and less useful) code in
  JOIN was enabled so that did not make a lot of sense. It also now logs to
  ircd.log (or whatever you configure). This enables people to easier find
  the cause of any timestamp issues (which usually is badly coded services).
2010-11-13 19:23:05 +00:00
autoupdate 6e8b77aa86 Automatic weekly version update: 201045 2010-11-08 00:00:04 +00:00
autoupdate a741b152c3 Automatic weekly version update: 201044 2010-11-01 00:00:04 +00:00
binki 4237409031 - And another m_nopost makefile.win32 fix. 2010-10-27 20:32:15 +00:00
diablo 820fae9054 *** empty log message *** 2010-10-26 18:35:28 +00:00
autoupdate 78952aed40 Automatic weekly version update: 201043 2010-10-24 23:00:03 +00:00
Bram Matthys 81dd721ed1 - Updated doc/compiling_win32.txt with current free MS SDK information,
patch from goldenwolf.
2010-10-24 12:43:21 +00:00
alef ba262c4a56 - fix typos 2010-10-22 21:16:17 +00:00
Bram Matthys 028f6ff83b - Fix missing OperOverride notices for +u and +L if not chanowner, reported
by Mareo (#0003358), partial patch from DJ.
2010-10-22 13:08:25 +00:00
Bram Matthys 73c2f8174d (interim) fix, not worth mentioning 2010-10-22 13:08:05 +00:00
autoupdate e089980d2a Automatic weekly version update: 201042 2010-10-17 23:00:02 +00:00
alef b09466c8ee - fix some accents issues
- connection -> connexion where needed
2010-10-17 10:20:28 +00:00
alef 639fc51d59 Translate spamfilter 'warn' action. 2010-10-17 09:48:04 +00:00
Bram Matthys 77bc5ab29d - Document spamfilter 'warn' action in unreal32docs. 2010-10-16 09:14:43 +00:00
diablo 6933245997 *** empty log message *** 2010-10-12 19:05:32 +00:00
autoupdate 4a66f658f7 Automatic weekly version update: 201041 2010-10-10 23:00:02 +00:00
alef 685517eadb Mistranslation of +G mode + set::allowed-nickchars 2010-10-09 20:18:48 +00:00
autoupdate 4cb8605d95 Automatic weekly version update: 201040 2010-10-03 23:00:02 +00:00
binki e95ef070d1 - Add m_nopost to makefile.win32 in the hopes that it may work (#3961). 2010-09-30 22:50:30 +00:00
diablo 64ef568a48 *** empty log message *** 2010-09-30 20:44:58 +00:00
autoupdate 492e30676c Automatic weekly version update: 201039 2010-09-26 23:00:02 +00:00
Bram Matthys ed8b8da20b - Fixed braindamage in stacked bans. 2010-09-25 11:21:37 +00:00
binki 08f86d9b2e - Always display the real host of successful OPERing up. Reported by Josh. (#3950) 2010-09-20 12:30:59 +00:00
binki 574ebf6eed - Fix ordering of `9. FAQ'' and `10. Modules'' in HTML docs. 2010-09-20 00:33:31 +00:00
autoupdate b19cb1dcae Automatic weekly version update: 201038 2010-09-19 23:00:02 +00:00
Bram Matthys bf40486341 reworded... as it was already showing the proper error in many cases... but not all :p 2010-09-19 14:34:20 +00:00
Bram Matthys 63dd326113 - SSL errors are now more descriptive. 'Underlying syscall error' is now
gone and shows the actual (surprise!) underlying syscall error.
  Reported by vonitsanet, patch from ohnobinki (#0003157).
2010-09-19 14:26:47 +00:00
Bram Matthys 17c97c8442 - Fixed notices to opers about server delinks not being broadcasted to all
other servers if they were on SSL links. Reported by chotaire (#0003957).
2010-09-19 14:10:43 +00:00
alef ef7a94164c Typo 2010-09-19 13:58:54 +00:00
alef 2d11cf09b9 Updating to r1.1.2.144.2.147 (Modules section, m_nopost + set options, badword block)
+ various html markup fixes
+ some mistranslation
2010-09-19 13:56:18 +00:00
alef 6ee99cde84 Mistranslation 2010-09-19 12:41:43 +00:00
Bram Matthys d717e0fc62 Clarify relationship between nopost and NOSPOOF (in Changelog) 2010-09-19 11:33:13 +00:00
binki a87f26d911 Add missing </b>. 2010-09-15 22:43:51 +00:00
binki 1a01e725c7 - Add the m_nopost module written by syzop and compile it into
commands.so. This module was written to help IRCd maintainers deal
  with some sort of ``XPS'' attack in which javascript-initiated HTTP
  POST form submissions were able to act as dummy IRC bots. These
  simple bots were the cause of much spam. (#3893)
- Add a modules section to the documentation. This was created to put
  all documentation specific to the m_post module in one, easy to find
  place. The documentation on m_post is likely incomplete, however.
2010-09-15 16:22:25 +00:00
binki 1605db3ced - Document the badword block more explicitly and clearly. (#3959) 2010-09-15 16:09:34 +00:00
autoupdate ae6415afa0 Automatic weekly version update: 201037 2010-09-12 23:00:03 +00:00
alef 3dc7f640b8 Updating example.fr.conf - new translator 2010-09-11 20:52:34 +00:00
alef 0bbd7a58cf Update of help.fr.conf - new translator 2010-09-11 18:25:29 +00:00
alef 7bb6728af4 rehash -flags and translation for "garbage collection" 2010-09-11 18:23:29 +00:00
alef c305b860b5 Fixing typos. 2010-09-11 15:30:20 +00:00
Bram Matthys bcd89f7db8 - Reverted an IPv6/Config fix I did on July 17. Reported by chotaire (#3958). 2010-09-08 15:17:46 +00:00
alef fface35935 Major docs update, new translator. 2010-09-08 13:23:50 +00:00
Bram Matthys b83f096e48 - Fixed another compile problem on QNX, reported by chotaire (#3955 too).
- Fixed incorrect messages regarding clock going backwards on QNX 6 and
  later, reported by chotaire (#0003956).
2010-09-08 11:07:22 +00:00
binki a744b9b212 - Don't use sys/errno.h, as it's not POSIX and breaks on QNX-6.5.0. (#3955) 2010-09-07 15:39:47 +00:00
autoupdate ffda323d9d Automatic weekly version update: 201036 2010-09-05 23:00:02 +00:00
diablo 27e4c6f3f7 New translator: diablo. Major update: documentation is now up to date again (week 33) 2010-08-30 09:05:01 +00:00
diablo 2c0e131dc7 changes of week 32 2010-08-30 09:03:04 +00:00
autoupdate 8895f1e60d Automatic weekly version update: 201035 2010-08-29 23:00:03 +00:00
binki 9643607334 - Fix segfault by checking if RESTRICT_USERMODES is NULL in the code for bug #3329. 2010-08-25 04:36:28 +00:00
binki c144008217 - Fix /msg IRC WHOIS response for persons with secure connections. (#3947) 2010-08-24 16:46:29 +00:00
autoupdate 35ec730f8b Automatic weekly version update: 201034 2010-08-22 23:00:02 +00:00
Bram Matthys 9a5c536cce hm :) 2010-08-20 12:16:40 +00:00
Bram Matthys da48cfc039 *** empty log message *** 2010-08-20 12:15:27 +00:00
binki 36c0bdde2e - Remove snomasks upon deopering when it seems like the user shouldn't have snomasks. (#3329) 2010-08-20 11:15:22 +00:00
binki 9f823be20b - Warn users against running UnrealIRCd as root without setting IRC_USER. (#3053 reported by Stealth) 2010-08-20 11:10:00 +00:00
binki 964bb656c7 - Prepend a `0' to the begining of --with-permission, working around a Mac OS X bug and hiding the fact that chmod()'s params are octal from users. (#3189) 2010-08-19 00:58:24 +00:00
bock 96da66cf7a Updated documentation to actual state. 2010-08-18 22:18:57 +00:00
binki d46bdd4841 - Update .cvsignore for Mac OSX's *.dSYM files. 2010-08-17 16:50:42 +00:00
binki e473fbc44c - Actually initialize m_starttls when it's included into commands.so. 2010-08-16 17:00:42 +00:00
Bram Matthys 6dcb276f8d - Get rid of any setsockopt(IPV6_V6ONLY) errors in ircd.log (#3944).
(oh and yeah I removed the prototype of our_crc32 which is totally unrelated...)
2010-08-16 09:31:04 +00:00
binki d012c49f1b - Install ircdcron scripts. (#2620)
- Autogenerate ircdcron/ircd.cron based on ./configure settings.
2010-08-16 02:29:34 +00:00
binki 7272715cec - Upgrade to tre-0.8.0, adding hack similar to the one for c-ares to ensure that the bundled tre is compiled against even when a system libtre is installed. (#3916) 2010-08-16 02:09:51 +00:00
autoupdate 30c5236f25 Automatic weekly version update: 201033 2010-08-15 23:00:02 +00:00
binki 2d10ab189d - IPv6 clones detection support (#2321). allow::ipv6-clone-mask determines the number of bits used when comparing two IPv6 addresses to determine if allow::maxperip is exceeded. This allows an admin to recognize that most IPv6 blocks are allocated to individuals, who might each get a /64 IPv6 block. set::default-ipv6-clone-mask defaults to 64 and provides default value for the allow blocks. 2010-08-15 04:44:16 +00:00
Bram Matthys fae4629c46 un-hi 2010-08-14 18:35:32 +00:00
Bram Matthys a71a1a394f teh hi 2010-08-14 18:35:05 +00:00
Bram Matthys 75d4fecb4b ..This is actually an update of earlier code from CVS, but now it works ok:..
- Added support for "stacked" extbans. Put simply this allows extban combinations
  such as ~q:~c:#test to only silence users on #test, for example. This feature
  is enabled by default, but can be disabled during ./Config -advanced.
  This feature was suggested by Shining Phoenix (#0003193), was then coded
  by aquanight for U3.3, and later on backported and partially redone by Syzop.
  Module coders:
  In an extban ~x:~y:something where we call ~x the 1st, and ~y the 2nd extban:
  Since stacked extbans only makes sense where the 1st one is an action
  extended ban like ~q/~n/~j, most modules won't have to be changed, as
  their extban never gets extended (just like ~c:~q: makes no sense).
  However, you may still want to indicate in some cases that the extban your
  module introduces also shouldn't be used as 2nd extban.
  For example with a textban extban ~T it makes no sense to have ~n:~T.
  The module can indicate this by setting EXTBOPT_NOSTACKCHILD in
  the ExtbanInfo struct used by ExtbanAdd().
  For completeness I note that action modifier extbans are indicated by
  EXTBOPT_ACTMODIFIER. However, note that we currently assume all such
  extbans use the extban_is_ok_nuh_extban and extban_conv_param_nuh_or_extban
  functions. If you don't use these and use EXTBOPT_ACTMODIFIER, then things
  will go wrong with regards to stack-counting.
  Module coders should also note that stacked extbans are not available if
  DISABLE_STACKED_EXTBANS is defined.
- Added extended ban ~R:<nick>, which only matches if <nick> is a registered
  user (has identified to services). This is really only useful in ban
  exemptions, like: +e ~R:Nick would allow Nick to go through all bans if he
  has identified to NickServ. This is often safer than using +e n!u@h.
- Added Extended Invex. This is very much like extended bans, in fact it
  supports some of the same flags. Syntax: +I ~character:mask
  Currently supported are: ~c (channel), ~r (realname) and ~R (registered).
  This can be useful when setting a channel invite only (+i) and then
  setting invite exceptions such as +I ~c:#chan (or even ~c:+#chan), while
  still being able to ban users.
  Because action modifiers (~q/~n/~j) make no sense here, extended invex
  stacking (+I ~a:~b:c) makes no sense either, and is not supported.
  Suggested by DanPMK (#0002817), parts based on patch from ohnobinki.
  Module coders: set EXTBOPT_INVEX in the ExtbanInfo struct used by
  ExtbanAdd() to indicate that your extban may also be used in +I.
- Invex (+I) now always checks cloaked hosts as well. Just like with bans,
  it checks them also when the user is not currently cloaked (eg: did -x, or
  is currently using some VHOST).
- Fixed client desynch caused by (un)banning, reported by Sephiroth (#2837).
2010-08-14 18:27:19 +00:00
binki a0b4fe90ec - Add a missing double-quote to help.conf. 2010-08-13 14:29:55 +00:00
Bram Matthys 0b54bd259e Usage example of +b ~j (from aquanight) 2010-08-13 13:11:28 +00:00
Bram Matthys d8b2069bce - Make extended bans documentation more clear by splitting the extbans in
two groups: one that specifies ban actions (~q/~n/~j) and one that
  introduces new criteria (~c/~r). Also added documentation for ~R which
  does not exist yet, but will soon...
2010-08-13 11:44:24 +00:00
Bram Matthys aaa52b3443 - Uniform naming for 'stacked extbans' in Changelog/etc. 2010-08-13 10:18:27 +00:00
binki f584875279 - Remove extras/c-ares before each time c-ares is compiled. 2010-08-11 03:53:46 +00:00
bock 14472ae09b release update 2010-08-10 20:54:27 +00:00
bock bea978de96 deleted "kline" from logging 2010-08-10 20:34:42 +00:00
autoupdate 58151df3b7 Automatic weekly version update: 201032 2010-08-08 23:00:02 +00:00
binki a6c7bb1043 - Force compilation with bundled c-ares to statically link using more sed hackery in configure.ac. 2010-08-06 03:59:57 +00:00
binki 901b9c272a Make that c-ares-1.6.0. 2010-08-04 01:38:30 +00:00
binki e540730751 - Upgraded c-ares to 1.7.3. API seems compatible with c-ares-1.6.3. (#3932) 2010-08-04 01:36:11 +00:00
binki 0a34af8720 - Define intptr_t in win32's setup.h. (#3939) 2010-08-04 00:03:40 +00:00
binki 94c2b58366 - Fix a few compiler warnings with some double-casting and another const. (#3939) 2010-08-03 23:57:44 +00:00
binki a1d076367e - Fix src/Makefile's lack of depencencies for module.c, related to #3938. 2010-08-03 17:06:05 +00:00
autoupdate eb1f41bd9c Automatic weekly version update: 201031 2010-08-01 23:00:03 +00:00
autoupdate 27c437c953 Automatic weekly version update: 201030 2010-07-25 23:00:02 +00:00
binki 889dd73f15 I forgot a bug number again; extban ~j is for (#3192). 2010-07-22 12:33:09 +00:00
binki 46668768cf - Add an extban of the schema +b ~j:*diff | less@* which _only_ prevents a user from joining a channel. 2010-07-22 12:32:06 +00:00
Bram Matthys 85904c2277 - Fix the detection for curl-without-c-ares a little (#0003940). ** fun.. autoconf 2.61** 2010-07-22 09:59:36 +00:00
Bram Matthys d0cb4dc5f5 Really really minor tweaks ;p 2010-07-22 09:41:56 +00:00
binki c4abef39cd - Remove browser compatibility listing from HTML docs.
- Added information about ``oper::password::auth-type sslclientcert'' and the same for link::password-receive::auth-type. (#3133)
- A little bit more of interlinking and using id="" instead of <a  name="" />
2010-07-21 23:19:53 +00:00
binki 7a3bf15558 - Now define _SOLARIS, USE_LIBCURL, and ZIP_LINKS in setup.h instead of the Makefiles. This means better automatic rebuilds if the latter settings change. 2010-07-20 16:09:10 +00:00
autoupdate 48b76358f4 Automatic weekly version update: 201029 2010-07-18 23:00:03 +00:00
Bram Matthys 48b270347a Signing of comments, removal of comment, not worth mentioning in Changelog 2010-07-17 11:19:48 +00:00
Bram Matthys 7c23a98292 - Same for IPv6 2010-07-17 11:15:37 +00:00
Bram Matthys 8b6967d8b9 - Fixed similar bug like nospoof with ./Config, but now with prefixaq. 2010-07-17 11:05:15 +00:00
Bram Matthys c40fc340b8 - Initialize ARG parameter properly in ./Config, otherwise everything fails. 2010-07-17 10:58:09 +00:00
Bram Matthys 35c30baace - The configure.ac change silently changed the nospoof parameter in
./configure. This meant that the answer to NOSPOOF in ./Config was ignored
  and it was always enabled.
2010-07-17 10:38:36 +00:00
binki b2e4cf82f8 - Support compiling with a bundled c-ares again, the hacky way. (#3931) 2010-07-16 13:14:44 +00:00
binki 45aeb1e61d - Give more clear error to users who use make custommodule'' without MODULEFILE. (#3935) 2010-07-16 12:04:34 +00:00
Bram Matthys 2510f2c94b - Added some checks in ./Config which (often) ensures that the self-compiled
curl version is new enough and is not using a c-ares which is binary
  incompatible. If the self-compiled curl version is (too) outdated, then we
  now suggest to rename it and have the installer re-download and compile
  it automatically. This avoids some potential crashes.
2010-07-16 10:55:45 +00:00
binki 4eff1e8493 - Remove extraneous `I' from configure.ac, run ./autogen.sh. (#3930) 2010-07-15 21:33:54 +00:00
Bram Matthys c9acb9d1c7 - The patch from #0003888 made ./Config favor the curl in /usr, even if it
was not compiled with c-ares, which is clearly a bad idea as then the
  entire IRCd can hang for several seconds or more...
  We now check if they support asynch DNS, and skip them if they don't.
2010-07-15 11:01:34 +00:00
Bram Matthys 6b3132e0c6 This file is out of date ;) 2010-07-14 18:54:52 +00:00
Bram Matthys c514288a0a - Fixed some odd behavior with SVSMODE and +z/-z, reported by TehRes (#0003498), fixed a strange SVSMODE +d <non-number> bug where it would act as a +x too. 2010-07-14 18:54:38 +00:00
Bram Matthys f4630c24e0 - Updated doc/coding-guidelines 2010-07-14 09:26:17 +00:00
binki f72ad19637 - helpop documentation for stacked extbans. 2010-07-13 22:14:45 +00:00
binki d09b68a942 - Prevent stacked bans (like +b ~q:~q:~n:~c:#chanel) from crashing unrealircd due to over-recycling a static buffer. Discovered by syzop. 2010-07-13 14:24:08 +00:00
binki c2279a9298 Added bug reference to changes for #0003918. 2010-07-12 05:02:10 +00:00
binki 4cc0244c58 - Remove remaining nameser.h references from Makfiles. 2010-07-12 01:25:14 +00:00
autoupdate 4238fff401 Automatic weekly version update: 201028 2010-07-11 23:00:02 +00:00
binki d421282cf5 - Remove include/nameser.h and reference to nameser.h from s_bsd.c. The associated functionality has been provided by c-ares for a long time. 2010-07-10 13:52:52 +00:00
binki 649818d4ad - Fix references to motd and friends in src/win32. 2010-07-09 17:46:38 +00:00
binki ac81a9cd9a - Fix references in src/win32 to aMotd to now be to aMotdFile. 2010-07-09 17:25:33 +00:00
binki bd636c4e6d - Attempt to make up for Windows not having mode_t and not complying to POSIX. 2010-07-09 15:40:58 +00:00
binki 7dbf154d04 - Move configure.ac to the project's root.
- Separate m4 macros into *.m4 files (it is much easier to run aclocal now).
- Remove unused DOMAINNAME macro and --with-hostname= options as the DOMAINNAME macro isn't used anywheres and its use shouldn't be encouraged.
- autogen.sh to bootstrap the buildsystem. We now maintain setup.h with autoheader.
- --disable-blah now does the opposite of --enable-blah. The same for --with-blah and --without-blah. (This makes Gentoo users happier).
2010-07-08 02:51:43 +00:00
autoupdate 5cf8ee21a0 Automatic weekly version update: 201027 2010-07-04 23:00:03 +00:00
binki 2a6a4b31ff - Fixed a few trivial compilation warnings. 2010-06-29 03:00:34 +00:00
autoupdate c3ea2568b2 Automatic weekly version update: 201026 2010-06-27 23:00:02 +00:00
binki 7fdd8cce96 - Fixed desynchronized prototype. 2010-06-26 04:36:56 +00:00
binki 11d84d8534 - Replaced some coders@lists.unrealircd.org references with bugs.unrealircd.org.
- Update/add some .cvsignore files.
2010-06-21 21:57:42 +00:00
Bram Matthys 1e5e60d635 - Fixed race condition / reference count issue where an outgoing server connect
would cause the IRCd to crash. Reported by Monk (#0003913).
2010-06-21 12:27:45 +00:00
Bram Matthys a523cec997 blah 2010-06-21 09:27:34 +00:00
autoupdate 2980fe011f Automatic weekly version update: 201025 2010-06-20 23:00:02 +00:00
binki 8ee34484b4 - When removing a SHUN, check if users who were blocked by this SHUN are still blocked by another SHUN. Previously, if multiple shuns covered a single user, removing one of these shuns would mark the user as un-SHUN-ed. (#0003906) 2010-06-20 06:28:38 +00:00
binki c1ca937861 Updated the correct Changes file. 2010-06-19 22:01:39 +00:00
binki aa0c706bff - Handle bad flags in set::ssl::options better (#0003896). 2010-06-19 22:00:05 +00:00
binki 2828e7f8b2 - Rename configure.in to configure.ac and modernize AC_INIT. 2010-06-19 03:22:51 +00:00
binki 9faa5a6d2b - Fix files::shortmotd to by accepted by unrealircd like the docs say it is.
- Fix remote includes download handling which I broke for remote includes ;-).
- Recursively add more consts.
2010-06-17 02:41:43 +00:00
binki d7835d959e - Fix typo 2010-06-16 14:14:08 +00:00
Bram Matthys 6e34938c59 - Forgot to commit the REMOTEINC_SPECIALCACHE stuff to config.h which means
it wasn't actually enabled until now...
2010-06-16 11:47:42 +00:00
binki 06e807130c - Added error message for unknown directives in the "files" block
- Remote MOTD support. Not adequately tested. Required restructuring of the asynchronous download callback and handler.
- Added some consts throughout url.c, etc.
- Fix segfault where the an include directive specifies a URL and cURL follows redirects, resulting in a different resultant URL. The remote includes code would look for the an include block using the resultant URL and assume that it would be found. The new code searches differently, has new checks, and ignores the resultant URL.
- Removed duplicated m_motd() and friends that were both in modules and s_serv.c. The copies in s_serv.c (core) were overriding the in-module functions.
2010-06-16 05:44:15 +00:00
binki fc1e848a2a - Throw out old USE_POLL code which 1. has no buildsystem support and 2. has comments which claim it doesn't work.
- Removed extraneous apostrophe from a module loader error message.
2010-06-15 02:37:50 +00:00
autoupdate 5cf1dc144a Automatic weekly version update: 201024 2010-06-13 23:00:02 +00:00
autoupdate 304e3ad0d4 Automatic weekly version update: 201023 2010-06-06 23:00:03 +00:00
autoupdate 6ab3862520 Automatic weekly version update: 201022 2010-05-30 23:00:02 +00:00
binki 9e64a0121c - More strict sockhost (hostmask) checking in m_nick.c:_register_user(). Fixed some bad string handling as well. See comments in bug (#0003907). 2010-05-28 21:31:36 +00:00
binki f1ec26a07c - Partially fixed bug where IPv4 addresses were randomly mishandled by the cgiirc code, resulting in the sockhost/hostmask being set to something like ::ffff:127.0.0.1, which confused the s2s protocol. Reported by tabrisnet (#0003907). Also, reject incorrectly formed hostnames from WEBIRC command. 2010-05-28 04:30:22 +00:00
Bram Matthys 625102cacd - Fixed bug in CVS where the ban exempt (+e) handling was reversed: if a
non-matching +e was present, one could walk through bans. Reported by
  tabrisnet (#0003909). Bug was caused by chained/stacked extbans.
2010-05-24 12:01:07 +00:00
Bram Matthys a9e547614b send people to the web, and scratch stskeeps ;p 2010-05-24 11:58:55 +00:00
autoupdate a4fc53fc3a Automatic weekly version update: 201021 2010-05-23 23:00:03 +00:00
Bram Matthys ab7957a6a8 docs: credit changes (permanent), the rest: interim credit changes -- needs to be finalized before 3.2.9 release, as always... 2010-05-17 10:01:08 +00:00
binki f4e4df6d6a - ./Config now remembers extra/custom ./configure parameters. 2010-05-17 04:36:43 +00:00
binki df9d102d98 - Added chmode +r to HTML documentation 2010-05-17 03:33:41 +00:00
binki 9f6492169b - SVSMODE now triggers HOOKTYPE_UMODE_CHANGE and HOOKTYPE_REMOTE_CHANMODE. 2010-05-17 02:41:43 +00:00
autoupdate fe33820f02 Automatic weekly version update: 201020 2010-05-16 23:00:11 +00:00
binki 1f89c2f6df Removed ugly ``files {} got initialized!'' message. 2010-05-15 21:23:29 +00:00
binki 38b7350f7c Remove m_addline from commands.so 2010-05-15 21:17:57 +00:00
autoupdate 80c21aac2e Automatic weekly version update: 201019 2010-05-09 23:00:08 +00:00
binki 046eb67100 - Fix -DDEFAULT_PERMISSIONS=0 support. Previously, support.c:unreal_copyfile() would create files with no permissions, breaking loadmodule. (#0003905) 2010-05-05 23:59:27 +00:00
binki 23f72648c4 - Clarify/expand alias block documentation, especially for alias::type=command; (#0003902) 2010-05-05 22:50:31 +00:00
binki c0790e90de - Remove the Compile as hub/leaf'' concept as I'm quite sure this doesn't actually do anything (#0003891) 2010-05-05 22:39:18 +00:00
binki 5f05b3c80b - Update Unreal.nfo with information about new support network setup (#0003904) 2010-05-05 21:55:13 +00:00
autoupdate 0c939fa194 Automatic weekly version update: 201018 2010-05-02 23:00:10 +00:00
autoupdate 24d0463d4c Automatic weekly version update: 201017 2010-04-25 23:00:15 +00:00
Bram Matthys 8e26c4b540 linking bug & ipv6 thing (the latter is completely untested):
- IPv6: it seems some recent Linux dists decided to make IPv6 sockets
  IPv6-only, instead of accepting both IPv4&IPv6 on them like until now.
  FreeBSD (and other *BSD's) already did that move a few years back,
  requiring server admins to sysctl.
  We now make use of a new option to explicitly disable "IPv6-only".
  This should work fine on Linux.
  Whether it provides a complete solution for FreeBSD, I don't know, testing
  is welcome! In theory setting net.inet6.ip6.v6only to 0 should no longer
  be needed, but you might still need to enable ipv6_ipv4mapping.
- Fix stupid issue where current CVS would no longer link TO an earlier
  Unreal server (eg: outgoing connect to a 3.2.8 hub). Reported by ohnobinki
  (#0003901).
2010-04-25 19:14:55 +00:00
autoupdate cd3dd80c54 Automatic weekly version update: 201016 2010-04-18 23:00:17 +00:00
autoupdate e3be08d5d1 Automatic weekly version update: 201014 2010-04-04 23:00:21 +00:00
autoupdate 84a19ab091 Automatic weekly version update: 201013 2010-03-28 23:00:16 +00:00
autoupdate e422f24d52 Automatic weekly version update: 201012 2010-03-22 00:00:10 +00:00
autoupdate a7ea2f49b3 Automatic weekly version update: 201011 2010-03-15 00:00:04 +00:00
Bram Matthys b245850fb0 update donators. 2010-03-08 16:24:22 +00:00
autoupdate 86d8796b77 Automatic weekly version update: 201010 2010-03-08 00:00:12 +00:00
Bram Matthys e47baea5da - Made '/REHASH -motd' really rehash *all* MOTD, OPERMOTD, BOTMOTD and RULES
files. Reported by bitmaster (#0003894).
2010-03-03 13:56:28 +00:00
autoupdate 982e5a82c0 Automatic weekly version update: 201009 2010-03-01 12:14:53 +00:00
Bram Matthys 1af446e5a3 clarify UNREAL_VERSION_TIME: the week # is ISO week. 2010-03-01 12:08:38 +00:00
Bram Matthys fb68c66f31 - Updated ./Config description for NOSPOOF, it already said it protects
against HTTP POST proxies, now added some extra text to say it also
  protects against the Firefox XPS IRC Attack. Also made NOSPOOF enabled by
  default on *NIX (this was already the case on Windows).
- Updated ./Config description for DPATH. Seems quite some people answer
  this question wrong, and when that happens, you only get some obscure
  error when running './unreal start'.
- Fixed 'unreal' script to give a better error if it cannot find the IRCd
  binary.
2010-03-01 11:49:30 +00:00
Bram Matthys a41384b37f - Removed old dgets() and crc32 function (code cleanup) 2010-02-13 13:09:46 +00:00
Bram Matthys ef745b3423 - We now no longer treat \ (backslash) in *MOTD and RULES files as special.
Previously this caused some really odd behavior. Backslashes are now
  treated as-is, so no special escaping is necessary. Reported by DelGurth
  (#0003002).
- Removed old dgets() function
2010-02-13 13:07:19 +00:00
Bram Matthys d4d58c1247 - Better document /REHASH flags. No longer document some flags as they are
redundant and confusing. Also removed an old statement saying k-lines would
  be erased on rehash which is not true. Documented '/rehash -dns'.
  Reported by ohnobinki (#0003881).
2010-02-13 12:48:33 +00:00
Bram Matthys bd999808d7 - Updated pkg-config m4 macro (now 0.23) for configure, patch from ohnobinki (#0003889). 2010-02-13 11:22:53 +00:00
Bram Matthys ee078bb165 Removed old coders, pretty outdated... 2010-02-11 17:38:41 +00:00
Bram Matthys ab2776eb6b - Another c-ares fix for Solaris 10, this time it had to do with
PATH_SEPARATOR, the exact error was: error: PATH_SEPARATOR not set.
  Reported by j0inty, patch provided by ohnobinki (#0003887).
2010-02-08 17:04:42 +00:00
Bram Matthys b2332556ac - Fix for --with-system-cares, reported and patch provided by ohnobinki (#0003890). 2010-02-08 16:59:06 +00:00
Bram Matthys 3bcb2fe524 - Reverted the revert and updated one line to fix the fix. 2010-02-08 16:50:35 +00:00
Bram Matthys d794786ec0 - Patch from above is (temp.) reverted, Unreal wouldn't compile without curl. 2010-01-27 09:13:20 +00:00
Bram Matthys 8171ea4fd8 - Added patch from ohnobinki (#0003888), only slightly edited, which improves
curl detection, added checks to see if curl actually works (print out a
  clear curl error during configure, instead of getting an error during
  'make'), and we now error when using --enable-libcurl without
  --with-system-cares if the system curl depends on c-ares. This is because
  this can cause ABI incompatability between curl's c-ares and our c-ares,
  which leads to odd issues such as:
  Could not resolve host: www.example.net (Successful completion)
  And possibly other weird issues, perhaps even crashes.
2010-01-25 20:23:59 +00:00
Bram Matthys 89e70ff23f woops.. set -x ;) 2010-01-25 10:55:21 +00:00
lowdigit a19e31dbd0 update doc 2010-01-23 12:59:54 +00:00
lowdigit 75ce9d27e7 again doc update 2010-01-18 14:05:04 +00:00
lowdigit 9c22c743c6 doc update 2010-01-18 14:03:38 +00:00
lowdigit 1defbfc962 *** empty log message *** 2010-01-18 13:56:16 +00:00
lowdigit 1d79699c0d another test 2010-01-16 19:13:55 +00:00
lowdigit 341bb11423 test 2010-01-16 19:13:34 +00:00
Bram Matthys 9259ddee06 - Added set::uhnames setting which can be used to disable uhnames by setting
it to 'no', the default is 'yes' (on). Requested by Robin (#0003885) as
  UHNAMES may increase the time of the nick list being loaded from 1 to 4
  seconds when joining several channels with more than 1000 users. As this
  problem is only present on some networks, we keep UHNAMES enabled by
  default.
2010-01-12 18:30:36 +00:00
Bram Matthys 9d3c5ce8e1 - Fixed a /RESTART issue on Linux: Unreal did not properly close all file-
descriptors. Because of this, Unreal did not restart properly as you would
  get an "Address already in use" error. This only seemed to happen when
  logging to syslog, or when there was something wrong with syslogd.
  Reported by Mouse (#0003882).
2010-01-04 13:22:34 +00:00
Bram Matthys 32ab3cba8b woops.. credit ;) 2010-01-04 13:12:29 +00:00
Bram Matthys 7ad6dcd977 - Fixed a /RESTART issue on Linux: Unreal did not properly close all file-
descriptors. Because of this, Unreal did not restart properly as you would
  get an "Address already in use" error. This only seemed to happen when
  logging to syslog.
- Fixed a similar issue with syslog (and debugmode) and closing fd's as well:
  the first port we listened on would not open up, ircd did not log any error.
2010-01-04 13:11:03 +00:00
Bram Matthys 6b28bfd1b7 curl auto-installation:
- Made ./Config description about remote includes a bit more clear.
- When you now answer Yes to Remote includes in ./Config and $HOME/curl does
  not exist, it now asks you if you want to automatically download and
  install curl (which is done by ./curlinstall).
  This has been tested on Linux, further testing on f.e. FreeBSD is
  required.
2010-01-03 16:24:48 +00:00
Bram Matthys cb7c1a821b test 2010-01-01 20:23:37 +00:00
Bram Matthys e3da8c7ebe test 2010-01-01 20:22:41 +00:00
Bram Matthys 55fbab833b test 2010-01-01 20:22:23 +00:00
Bram Matthys ee2f4f5f22 empty line 2010-01-01 20:02:15 +00:00
Bram Matthys dddc8f07e4 PROTOCTL EAUTH/SERVERS/new linking protocol:
- Server protocol: added PROTOCTL EATH=servername, which allows us to
  authenticate the server very early in the handshake process. That way,
  certain commands and PROTOCTL tokens can 'trust' the server.
  See doc/technical/protoctl.txt for details.
- Server protocol: between new Unreal servers we now do the handshake a
  little bit different, so it waits with sending the SERVER command until
  the first PROTOCTL is received. Needed for next.
- Server protocol: added PROTOCTL SERVERS=1,2,3,4,etc by which a server can
  inform the other server which servers (server numeric, actually) it has
  linked. See doc/technical/protoctl.txt and next for details.
- When our server was trying to link to some server, and at the same time
  another server was also trying to link with us, this would lead to a
  server collision: the server would link (twice) ok at first, but then a
  second later or so both would quit with 'Server Exists' with quite some
  mess as a result. This isn't unique to Unreal, btw.
  This happened more often when you had a low connfreq in your link blocks
  (aka: quick reconnects), or had multiple hubs on autoconnect (with same
  connfreq), or when you (re)started all servers at the same time.
  This should now be solved by a new server handshake design, which detects
  this race condition and solves it by closing one of the two (or more)
  connections to avoid the issue.
  This also means that it should now be safe to have multiple hubs with low
  connfreq's (eg: 10s) without risking that your network falls apart.
  This new server handshake (protocol updates, etc) was actually quite some
  work, especially for something that only happened sporadically. I felt it
  was needed though, because (re)linking stability is extremely important.
  This new feature/design/fix requires extensive testing.
  This feature can be disabled by: set { new-linking-protocol 0; };
2010-01-01 19:49:06 +00:00
autoupdate 080a2d6810 Automatic weekly version update: 200952 2009-12-28 05:00:05 +00:00
stylus740 cb385bc103 changes of week52: unreal3_2_fixes doc/example.de.conf doc/unreal32docs.de.html 2009-12-27 08:48:28 +00:00
Bram Matthys feb5d81406 update unreal-notify mailinglist link (old one 404'd), add forums link. 2009-12-24 09:30:50 +00:00
Bram Matthys 0039f7db25 - Removed log target 'kline' from documentation, as it didn't do anything
(use 'tkl' instead). Reported by nephilim and Stealth (#0003849).
2009-12-22 13:49:05 +00:00
autoupdate 75685b1684 Automatic weekly version update: 200951 2009-12-21 05:00:03 +00:00
angrywolf 1eb2a21b49 Typo correction in Files Block 2009-12-15 13:04:59 +00:00
angrywolf 8f1f47aece - Added missing section 'Files block' (for some reason I missed the diff mail for it).
- Grammar correction (removed the affix from irc.unrealircd.org so it's easier to update correctly).
2009-12-15 12:59:46 +00:00
angrywolf 20c00d3697 Changes of week 50 2009-12-15 12:23:15 +00:00
autoupdate 086d464c8a Automatic weekly version update: 200950 2009-12-14 05:00:03 +00:00
stylus740 49fa3ed3d8 unreal32docs.de.html changes of week 50 2009-12-12 11:45:00 +00:00
autoupdate 8b637e344b Automatic weekly version update: 200949 2009-12-07 05:00:04 +00:00
Bram Matthys f5d9a87f08 - Use RPL_STARTTLS/ERR_STARTTLS numerics 2009-12-06 16:59:15 +00:00
Bram Matthys 5a0a71de03 - Added support for STARTTLS. This allows users to switch to SSL without
having to use a special SSL-only port, they can simply switch to SSL on
  any port. This is currently only supported by few clients (such as KVIrc 4).
  This functionality can be disabled by setting set::ssl::options::no-starttls,
  for example if you don't want to offer SSL to your users and only want it
  to be used for server to server links.
  Naturally, the IRCd must be compiled with SSL support for STARTTLS to work.
- Fixed SSL_ERROR_WANT_READ in IRCd_ssl_write()
2009-12-06 16:52:52 +00:00
Bram Matthys a5bd782cdf - Made the timesynch log output more clear and understandable.
- Added an 'UnrealIRCd started' log message on startup.
2009-12-06 16:31:42 +00:00
autoupdate 829247a272 Automatic weekly version update: 200948 2009-11-30 05:00:07 +00:00
Bram Matthys 6aab6d748d hmmm... dilemma... 2009-11-29 16:12:44 +00:00
Bram Matthys 7dee0cdcf1 - Added support for "chained" extbans. Put simply this allows extban combinations
such as ~q:~c:#test to only silence users on #test, for example. This feature
  is enabled by default, but can be disabled during ./Config -advanced. Module
  support for this feature must note the following:
  - For is_ok function, the extban can either assign extban_is_ok_nuh_extban, which
    will deal checking a chained extban (including checking for restricted extbans),
    or it can call that function from its own is_ok routine. For the latter case,
    remember to pass only the mask part of your ban format (ie, don't just pass para as
    otherwise it'll just call your is_ok again).
  - For conv_param function, the extban can either assign extban_conv_param_nuh_or_extban,
    which will automatically call conv_param for a chained extban, or pretty up a n!u@h mask.
  - For is_banned, the extban should call ban_check_mask with the mask part of the parameter.
    This will automatically call is_banned for a stacked extban, or match against a n!u@h. n!u@h
    is checked against the current user (ie, with the info in the globals ban_ip, etc), so things
    can get weird if you call this outside a normal ban check.
  Modules must keep in mind that chained extban support is not available (and neither are the three
  functions above) if DISABLE_STACKED_EXTBANS is #defined (this is controled by Config). Modules will
  not compile/load if they try to use them anyway.
  This change should not break extban modules, and should need some more extensive testing.
- Misc fix for disabling extban chains, should've done stuff in our autoconf
  stuff instead of hacking configure directly :P .
2009-11-29 12:46:29 +00:00
Bram Matthys 0ebf84d100 this is not the way it should be done... but i have no time to fix the real issue. 2009-11-29 11:56:54 +00:00
stylus740 aceb72f52e doc/unreal32docs.de.html Last Chanes of week 48 2009-11-28 18:54:48 +00:00
stylus740 a28d62c5f0 doc/unreal32docs.de.html - Changes of week 48 2009-11-28 18:49:44 +00:00
Bram Matthys 236808d8b4 - set::level-on-join now also supports voice, halfop, protect and owner.
Requested by katsklaw (#0003852). Partial patch provided by katsklaw and
  morpheus_pl.
2009-11-23 15:11:20 +00:00
Bram Matthys 9c234ffdf8 - Added special caching of remote includes. When a remote include fails to
load (for example when the webserver is down), then the most recent
  version of that remote include will be used, and the ircd will still boot
  and be able to rehash. Even though this is quite a simple feature, it
  can make a key difference when deciding to roll out remote includes on
  your network. Previously, servers would be unable to boot or rehash when
  the webserver was down, which would be a big problem (often unacceptable).
  The latest version of fetched urls are cached in the cache/ directory as
  cache/<md5 hash of url>.
  Obviously, if there's no 'latest version' and an url fails, the ircd will
  still not be able to boot. This would be the case if you added or changed
  the path of a remote include and it's trying to fetch it for the first time.
  To disable this new behavior, check out REMOTEINC_SPECIALCACHE in
  include/config.h.
2009-11-23 09:43:10 +00:00
Bram Matthys 22bf17ddc7 - When an incorrect command line argument is passed, the IRCd will no longer
boot. Previously it said 'Server not started' but started anyway.
  Reported and patch provided by ohnobinki (#0003870).
2009-11-23 08:41:53 +00:00
autoupdate 355cc16d32 Automatic weekly version update: 200947 2009-11-23 05:00:04 +00:00
Bram Matthys 2ed84ed506 - Fixed bug reported by mut80r (#0003867) where locops didn't get a
proper vhost when set::hosts::local had a 'user@host' syntax instead of
  just 'host'. Also fixed a bug with regards to +x on-oper with locops.
2009-11-22 13:34:12 +00:00
Bram Matthys e92e2c22c3 - Applied patch from ohnobinki (#0003863) which makes run-time configuration
of files (tune, pid, motd) possible.
2009-11-22 12:23:00 +00:00
Bram Matthys 51d30af3fd - Applied patch from k4be (#0003866) which introduces a new packet hook
(HOOKTYPE_PACKET). Replacing the 'text to be sent' to a client is
  supported, which allows character(set) conversion in a module.
  Note that modifying an incoming message by the hook is not supported.
2009-11-22 12:10:56 +00:00
autoupdate 945bceb218 Automatic weekly version update: 200946 2009-11-16 05:00:03 +00:00
autoupdate 169f754f01 Automatic weekly version update: 200945 2009-11-09 05:00:04 +00:00
Bram Matthys c7ea6217e5 - Fixed IPv4 ip's in link::bind-ip on IPv6 builds. This caused issues ranging
from not binding to that ip when linking, to not being able to link at
  all. Also fixed a very small memory leak upon /REHASH. Bug reported by
  Mr_Smoke (#0003858).
2009-11-04 10:46:57 +00:00
autoupdate f60c2574d3 Automatic weekly version update: 200944 2009-11-02 05:00:04 +00:00
autoupdate c6c2cf9371 Automatic weekly version update: 200943 2009-10-26 05:00:04 +00:00
autoupdate 4d79d9f5d2 Automatic weekly version update: 200942 2009-10-19 05:00:03 +00:00
autoupdate 8bf078190e Automatic weekly version update: 200941 2009-10-12 05:00:04 +00:00
autoupdate 1922d94bf9 Automatic weekly version update: 200940 2009-10-05 05:00:03 +00:00
autoupdate 4ea0a642ff Automatic weekly version update: 200939 2009-09-28 05:00:04 +00:00
autoupdate 110b0aa9ac Automatic weekly version update: 200938 2009-09-21 05:00:03 +00:00
autoupdate d9a77b8112 Automatic weekly version update: 200937 2009-09-14 05:00:03 +00:00
autoupdate c6ca269538 Automatic weekly version update: 200936 2009-09-07 05:00:03 +00:00
autoupdate 2921b50e00 Automatic weekly version update: 200935 2009-08-31 05:00:04 +00:00
Bram Matthys 125102aad7 - class name 'default' is reserved. Using it caused the ircd to crash
on-boot, reported by Dragon_Legion (#0003864).
2009-08-26 10:27:04 +00:00
autoupdate a5deb6bb23 Automatic weekly version update: 200934 2009-08-24 05:00:04 +00:00
autoupdate 6319b36e2a Automatic weekly version update: 200933 2009-08-17 05:00:03 +00:00
Bram Matthys 660f7d97c4 #3865 -- reported by fbi 2009-08-15 15:10:57 +00:00
autoupdate 7ca4d97ae9 Automatic weekly version update: 200932 2009-08-10 05:00:03 +00:00
autoupdate 4558c380c5 Automatic weekly version update: 200931 2009-08-03 05:00:03 +00:00
autoupdate fa0060ed27 Automatic weekly version update: 200930 2009-07-27 05:00:03 +00:00
autoupdate 147b5013aa Automatic weekly version update: 200929 2009-07-20 05:00:04 +00:00
autoupdate 9b7033b9fe Automatic weekly version update: 200928 2009-07-13 05:00:03 +00:00
autoupdate cd19366da1 Automatic weekly version update: 200927 2009-07-06 05:00:04 +00:00
autoupdate 57618c1c6d Automatic weekly version update: 200926 2009-06-29 05:00:04 +00:00
autoupdate 698660b485 Automatic weekly version update: 200925 2009-06-22 05:00:03 +00:00
autoupdate dc6eebbe09 Automatic weekly version update: 200924 2009-06-15 05:00:03 +00:00
Bram Matthys b070d8805c - Fixed issue where a negative time offset (either caused by ircd.tune or
timesynch) made autoconnect not work for the duration of the offset
  (eg: -60 would make autoconnect wait 60 seconds after boot, instead of
  autoconnecting almost immediately). Reported by aragon (#0003853).
2009-06-08 08:49:07 +00:00
autoupdate 69b7a3c35d Automatic weekly version update: 200923 2009-06-08 05:00:03 +00:00
autoupdate dfcdaaa152 Automatic weekly version update: 200922 2009-06-01 05:00:04 +00:00
autoupdate 3fbec6bf4e Automatic weekly version update: 200921 2009-05-25 05:00:04 +00:00
angrywolf 8ebb8dfbd6 Updated my email address. (The old one discontinued working.) 2009-05-19 04:15:50 +00:00
autoupdate 2efc764311 Automatic weekly version update: 200920 2009-05-18 05:00:04 +00:00
stylus740 ec7429fb4b doc/example.de.conf doc/unreal32docs.de.html - changes of week 20 2009-05-16 16:50:57 +00:00
Bram Matthys 6ff6367008 - Fix /VERSION output on Windows, especially for Vista and newer Windows,
patch from BuHHunyx and Bock (#0003846).
2009-05-13 13:02:57 +00:00
Bram Matthys f3733c32ca - Comitted Windows Installer fix that was put in 3.2.8.1, fixing
#0003845 and #0003809 (MS Visual Studio Redistributable package automatic
  installation).
2009-05-13 12:54:50 +00:00
Bram Matthys 66e4674f3f - Comitted windows fix that was put in 3.2.8.1 for installer 2009-05-13 12:14:45 +00:00
Bram Matthys d45a18d7b2 - Fixed crash on Linux (with a 'new' dynamic linker) when a module has
been updated and then reloaded. From now on we just copy to a tempfile,
  and never hardlink. (bug #3557).
2009-05-13 10:33:52 +00:00
Bram Matthys 5d8532eb86 /* Prevent crashes due to invalid prototype/ABI.
* And force the use of at least the version shipped with Unreal
 * (or at least one without known security issues).
 */
this text is fcked btw.. whatever...
2009-05-13 10:30:57 +00:00
Bram Matthys 5f727eec74 - Applied another patch from ohnobinki which adds --with-system-cares
(#0003847).
2009-05-13 10:28:06 +00:00
Bram Matthys 70ec1b1ef8 - Added ./configure option called --with-system-tre by which you can specify
a path to the TRE library (instead of using the TRE we ship with Unreal).
  Patch provided by ohnobinki (#0003842).
2009-05-13 09:35:44 +00:00
Bram Matthys fb60748df2 - Update some urls 2009-05-13 09:25:23 +00:00
Bram Matthys 68ec992861 - Print out an error if a user uses standard ./configure stuff instead of
./Config. Won't catch all cases, but will definitely catch most problems.
2009-05-13 09:24:30 +00:00
autoupdate 433760a916 Automatic weekly version update: 200919 2009-05-11 05:00:04 +00:00
autoupdate 891daa18b4 Automatic weekly version update: 200917 2009-04-27 05:00:04 +00:00
Bram Matthys 76c107edba changelogupdate:- Fixed crash on Linux (with a 'new' dynamic linker) when a
module has
  been updated and then reloaded. From now on we just copy to a tempfile,
  and never hardlink. (bug #???????).
2009-04-22 11:50:29 +00:00
Bram Matthys cd30253ea2 - Fixed crash on Linux when a module has been updated and then reloaded.
From now on we just copy to a tempfile, and never hardlink. (bug #???????).
2009-04-22 11:42:38 +00:00
Bram Matthys c7b782693c changelog-only: - Don't do show-connect-info on serversonly ports 2009-04-22 11:14:14 +00:00
Bram Matthys f692661583 - Don't do show-connect-info on servers-only ports 2009-04-22 11:13:21 +00:00
autoupdate e794eaa393 Automatic weekly version update: 200916 2009-04-20 05:00:05 +00:00
Bram Matthys 16d9810740 - Fixed compile issue on Solaris regarding c-ares (-lrt), reported and
test shell provided by fraggeln (#0003854).
- Improved automatic SSL detection on Solaris (/usr/sfw), reported by
  fraggeln (also #0003854).
2009-04-15 11:10:06 +00:00
Bram Matthys 762bbd407b - Fixed (serious) security issue regarding allow::options::noident,
reported by meepmeep (#0003852).
** 3.2.8.1 release **
2009-04-12 12:40:36 +00:00
autoupdate 6df508b06a Automatic weekly version update: 200914 2009-04-06 05:00:03 +00:00
autoupdate 6687c3188d Automatic weekly version update: 200913 2009-03-30 05:00:03 +00:00
autoupdate c51039b750 Automatic weekly version update: 200912 2009-03-23 05:00:03 +00:00
autoupdate c811a925a4 Automatic weekly version update: 200911 2009-03-16 05:00:03 +00:00
stylus740 8c13a60907 Changes week 11 doc/unreal32docs.de.html 2009-03-14 12:34:02 +00:00
autoupdate 6dfb1a7847 Automatic weekly version update: 200910 2009-03-09 05:00:03 +00:00
autoupdate f6e1a74fca Automatic weekly version update: 200909 2009-03-02 05:00:06 +00:00
Bram Matthys ac00905029 last-minute change before real 3.2.8 rls 2009-03-01 16:26:20 +00:00
Bram Matthys be55051f44 ** 3.2.8 release ** 2009-03-01 15:00:32 +00:00
Bram Matthys 6196abbf7b UHNAMES & WATCHOPTS, other fixes, copyright 2009-03-01 14:49:03 +00:00
Bram Matthys a0e4982335 protover 2309 = Unreal 3.2.6, 3.2.7, 3.2.8 2009-03-01 14:48:38 +00:00
Bram Matthys bd4292e301 - Updated credits (donations) 2009-02-28 15:44:59 +00:00
Bram Matthys 0ae378c5ce stskeeps did contribute to 3.2.8, not with direct commits but by me using a few
backports. However, I think it would be confusing to list him in the active
coders list... so moved to 'past unreal3.2 coders/contributors'.
2009-02-28 15:08:01 +00:00
autoupdate a094103c67 Automatic weekly version update: 200908 2009-02-23 05:00:04 +00:00
Bram Matthys de4eb8ec75 - Fixed harmless (but silly) message which happened on every IRCd boot
(time jump message).
(correction)
2009-02-20 13:19:36 +00:00
Bram Matthys cc8a592557 - Fixed very silly 'time jumped .. seconds ahead (0 -> ..)' message which
happened on every IRCd boot.
2009-02-20 13:00:07 +00:00
Bram Matthys 529bd19465 - 'link xx with SSL option enabled on non-SSL compile' was incorrectly
printed out as a warning, when in fact it's an error (and was treated as
  such). Same for ZIP on non-zip compile. Reported by Stealth (#0003833).
..& updated credits..
2009-02-18 19:19:53 +00:00
autoupdate 7dced92085 Automatic weekly version update: 200907 2009-02-16 05:00:03 +00:00
angrywolf fc5f1c0042 Changes of week 04 2009-02-13 14:09:53 +00:00
autoupdate 4a4f518380 Automatic weekly version update: 200906 2009-02-09 05:00:03 +00:00
Bram Matthys d051624476 ** 3.2.8-rc2 *NIX downloads replaced ** 2009-02-08 12:26:55 +00:00
Bram Matthys 2fd46b9cd7 Update from Serkan of 2009-02-02 2009-02-08 10:47:43 +00:00
stylus740 0fba832934 Repaired help.conf.de 2009-02-02 22:10:48 +00:00
autoupdate 144d2dcd82 Automatic weekly version update: 200905 2009-02-02 05:00:04 +00:00
Bram Matthys 662af43a45 - Fix for compile problem on FreeBSD (and possibly other OS's):
- When pkg-config is present but does not recognize --static, use
    default c-ares library options.
  - Set default c-ares library options to -lcares on FreeBSD and others.
    Set to -lcares -lrt on Linux (previously was -lcares -lrt for all).
  Thanks to goldenwolf for the bugreport (#0003803) and providing a test-
  shell to trace this issue down.
2009-02-01 16:43:33 +00:00
Bram Matthys fd043453b9 - Some text fixes regarding time shift feature 2009-02-01 10:12:49 +00:00
stylus740 a62456b243 Changes week 05 doc/unreal32docs.de.html 2009-02-01 09:05:27 +00:00
bock 49f05da55c fixed typo. 2009-01-31 10:24:14 +00:00
autoupdate bccb8dba2a Automatic weekly version update: 200904 2009-01-26 05:00:05 +00:00
Bram Matthys 46deee2cdc - Smallll fix for time shift protection <- now hopefully rc2 for real.. 2009-01-25 11:25:15 +00:00
Bram Matthys 09cf365162 ** 3.2.8-rc2 release ** 2009-01-25 11:19:34 +00:00
stylus740 6426b73838 Changes of week 04: doc/unreal32docs.de.html 2009-01-25 07:49:11 +00:00
Bram Matthys 8918b99248 - Throttling time is now more accurate, especially with larger time values
such as 3 connections per 60 seconds. Previously that could result in 3
  per 90 seconds due to timer inaccuracy, now max 65 seconds (max 5s
  inaccuracy).
2009-01-24 15:38:20 +00:00
Bram Matthys 98db288079 - Added some big warnings regarding big timeshifts.
In the IRCd world correct time is very important. This means that time
  should be correct when the IRCd is booted, either by running ntpd/ntpdate
  on the system or some other synchronization software, or by using the
  built-in timesync feature.
  Whenever the clock is adjusted for more than a few seconds AFTER the IRCd
  has booted, it can lead to dangerous effects ranging from unfair
  timestamps
  for nicks and channels (and hence the possibility to takeover channels),
  to even completely stalling the IRCd (negative timeshift) or making it so
  nobody can connect anymore due to throttling (positive timeshift).
  We now try to 'fix' the worst effects such as the IRCd freeze and
  throttling. This does not fix the whole problem, so I've added some big
  warnings when the clock is adjusted, including an annoying one every 5
  minutes if the clock was set backwards, until the time is OK again
  (catches up with the original time).
  This fixes #0003230 reported by Stealth, and #0002521 reported by durrie.
2009-01-24 15:16:15 +00:00
bock 72c0cb09e9 changes of week 4 2009-01-24 12:37:37 +00:00
Bram Matthys 651add103b Updated credits to reflect coders, contributors and testers of this 3.2.8 release. 2009-01-20 20:49:21 +00:00
Bram Matthys 3aa9afefeb +operoverride fixes 2009-01-20 19:53:35 +00:00
Bram Matthys 8f00cf9dd1 - Updated regex documentation in unreal32docs, it had some incorrect
statements regarding wildcards. Reported by james2vegas (#0003800).
2009-01-19 10:03:24 +00:00
Bram Matthys 20b66249ca bump - too late 2009-01-19 10:03:06 +00:00
autoupdate c6661334a9 Automatic weekly version update: 200903 2009-01-19 05:00:03 +00:00
mark 4a431863c6 Changes of week 01/09 2009-01-18 19:19:02 +00:00
Bram Matthys df508ff00c - Added note to release notes regarding Suse 10.3 on amd64 causing a crash
on-boot. #0003725, #0003653, #0003791.
2009-01-18 13:21:02 +00:00
autoupdate ada0607eb7 Automatic weekly version update: 200902 2009-01-12 05:00:04 +00:00
angrywolf aedce0405f Changes of week 01 2009-01-10 17:48:52 +00:00
Bram Matthys c6b0eb6987 +- Remote includes (constant) crash with new curl/c-ares versions
..something like that... xref #3785
2009-01-09 19:59:26 +00:00
bock 90a548c310 3.2.8-rc1 2009-01-05 18:07:21 +00:00
Bram Matthys ffef7193bb ispell 2009-01-05 11:35:37 +00:00
Bram Matthys f982828981 - Fixed OperOverride bug: if you are halfop you couldn't -q/-a, reported
by Strawberry_Kittens (#0003758).
2009-01-05 11:31:23 +00:00
autoupdate d6aafe4a7b Automatic weekly version update: 200901 2009-01-05 05:00:04 +00:00
Bram Matthys eac36b6344 changelog edit:
from:
mac os x unconfirmed thing
to:
- Fix for Mac OS X compile problem (in setpgrp), reported by Bock / Jckf
  (#0003767).
2009-01-04 15:08:21 +00:00
stylus740 5674d8b607 Changes week 01 in doc/example.de.conf doc/unreal32docs.de.html 2009-01-04 11:24:39 +00:00
bock 2fe59ca280 Updates for 3.2.8 2009-01-03 23:52:06 +00:00
Bram Matthys f0367674e7 - Bump docdate.. 2009-01-03 15:32:45 +00:00
Bram Matthys 28872c4570 - (#0003761).
+  (#0003761). Patch provided by Stealth.
2009-01-03 15:15:07 +00:00
Bram Matthys 6539f0bb92 - Added documentation for set::spamfilter::slowdetect-warn,
set::spamfilter::slowdetect-fatal, set::ssl::server-cipher-list,
  set::ssl::renegotiate-bytes, set::ssl::renegotiate-timeout,
  set::watch-away-notification and ./unreal gencloak. Reported by Bock
  (#0003764).
- set::ssl::renegotiate-bytes: fix when specifying a value such as 10m.
- './unreal gencloak' now actually works
- Fix typo in user mode q notice, reported by Strawberry_Kittens and others
  (#0003761).
- Possible fix for MAC OS X compile problem - UNCONFIRMED.
2009-01-03 15:13:59 +00:00
bock 08e6b37957 Missed ";" in line 22. 2009-01-02 12:47:40 +00:00
autoupdate 734d37feda Automatic weekly version update: 200852 2008-12-29 05:00:05 +00:00
Bram Matthys 559376cbf1 ** 3.2.8-rc1 release ** 2008-12-28 14:31:34 +00:00
Bram Matthys e689ab0888 - A notice is now sent when listing spamfilters through /SPAMFILTER just
like /stats f. Bug #0003752 reported by Strawberry_Kittens, similar to
  #0002533.
2008-12-28 11:33:38 +00:00
Bram Matthys bd9c1afce3 - New HOOKTYPE_LOCAL_NICKPASS: the 2 parameters are: sptr (client) and nsptr
(NickServ client, NULL if not present). You can return 1 (HOOK_DENY) to
  make the IRCd not send IDENTIFY to NickServ. Suggested by tabrisnet
  (#0003739).
(sorry, previous half-commit to src/modules/m_nick.c was accidental)
2008-12-28 10:01:13 +00:00
Bram Matthys fa328676c6 update... 2008-12-28 09:55:56 +00:00
Bram Matthys 73114abc47 - Fixed crash which could happen when rehashing while linking to a server,
this could be #0003689 reported by Monk.
2008-12-27 12:19:38 +00:00
Bram Matthys 4c81ce30e8 - Added set::watch-away-notification which can be set to 'no' to disable
WATCH away notification. The default is 'yes' (=enabled).
2008-12-27 11:14:01 +00:00
Bram Matthys c7172fefd3 - Added release notes (not finished yet). 2008-12-24 17:08:58 +00:00
Bram Matthys 56eddc1547 - Win32: rebuild TRE for Vstudio 2008 (and ditch C++ / MSVCP... dependency). 2008-12-24 12:55:17 +00:00
Bram Matthys cc0641ee00 The following patch has been REVERSED - causes a 15s delay on-boot in non-service mode:
- Win32: Made UnrealIRCd run as a service under non-privileged accounts
  (ones that do not belong to the Administrator group). Reported by
  skyflash, Bock, zer, etc... Thanks to BuHHunyx for some hints on how to
  fix this.
2008-12-24 12:15:44 +00:00
Bram Matthys a77b8c4da2 - Win32: Made UnrealIRCd run as a service under non-privileged accounts
(ones that do not belong to the Administrator group). Reported by
  skyflash, Bock, zer, etc... Thanks to BuHHunyx for some hints on how to
  fix this.
2008-12-23 15:47:04 +00:00
Bram Matthys aaae2532ea blah 2008-12-23 15:43:27 +00:00
Bram Matthys 5daa5216ac - Added some countermeasures against crash-on-boot, #0003725 and #0003653,
reported by Ablom2008 and mist26.
2008-12-22 16:17:17 +00:00
Bram Matthys cdd38d79f4 - Fix OOB read caused by UHNAMES support. 2008-12-22 16:12:30 +00:00
Bram Matthys f17c5cc9e1 - Fix NAMES with UHNAMES support, screwed it up at 'Win32 compile fixes' a
few lines up...
2008-12-22 12:19:06 +00:00
autoupdate 5899dd9596 Automatic weekly version update: 200851 2008-12-22 05:00:04 +00:00
Bram Matthys 024a63587a - Fix crash if settime/expirytime is out of range in TKL, set by another
server.
  Should never happen except when using faulty services or when something
  else
  got horrible wrong (like a date which is 40 years ahead). Reported by
  Darth Android (#0003738).
2008-12-21 14:28:09 +00:00
Bram Matthys ac157694c5 - except ban { } is now also effective against Z:lines. It already protected
when the user was connected, but not once he/she tried to reconnect, this
  is now fixed. Reported several times, last by Stealth in #0003377.
2008-12-21 13:34:54 +00:00
Bram Matthys 62df06ea1a - Win32: build w/manifest. Looks like Unreal@Win32 now actually works again
:).
2008-12-19 16:51:30 +00:00
Bram Matthys 5cd7ab9f06 - Upgraded c-ares on windows to 1.6.0 as well. 2008-12-19 16:17:04 +00:00
Bram Matthys 5ce5d49c89 - Win32 compile fixes. 2008-12-17 16:46:20 +00:00
autoupdate 6e221c61c4 Automatic weekly version update: 200850 2008-12-15 05:00:04 +00:00
Bram Matthys fcbeeea502 - Win32 makefile: removed /MAPINFO:LINES, since visual studio 2005 and up
don't support this and will fail to compile UnrealIRCd. This fixes #3680,
  reported by therock247uk.
- Upgraded c-ares to 1.6.0 (also now using pkg-config).
  If you get a "undefined reference to `clock_gettime'" error, then you
  might consider installing 'pkg-config' on your system, and then simply
  re-run
  ./Config and make, should fix things.
__TODO__: win32 c-ares upgrade to 1.6.0 (and copy & fix header files).
__TODO__: testing! testing! i'd like to be sure this c-ares is stable!
2008-12-14 19:16:24 +00:00
Bram Matthys 58a2f012eb CRLF to LF? 2008-12-14 11:32:14 +00:00
autoupdate 3a3962e7ba Automatic weekly version update: 200849 2008-12-08 05:00:04 +00:00
autoupdate 7b6905b5a9 Automatic weekly version update: 200848 2008-12-01 05:00:04 +00:00
autoupdate c79642e840 Automatic weekly version update: 200847 2008-11-24 05:00:03 +00:00
autoupdate 111891aac3 Automatic weekly version update: 200845 2008-11-10 05:00:03 +00:00
autoupdate 6080f1da73 Automatic weekly version update: 200844 2008-11-03 05:00:03 +00:00
autoupdate 6f823465ef Automatic weekly version update: 200843 2008-10-27 05:00:03 +00:00
autoupdate 35baca56a6 Automatic weekly version update: 200842 2008-10-20 05:00:03 +00:00
autoupdate 38f1772942 Automatic weekly version update: 200841 2008-10-13 05:00:04 +00:00
autoupdate 8ed0a98738 Automatic weekly version update: 200840 2008-10-06 05:00:03 +00:00
autoupdate 69d733c02a Automatic weekly version update: 200839 2008-09-29 05:00:03 +00:00
autoupdate b8417a1e60 Automatic weekly version update: 200838 2008-09-22 05:00:03 +00:00
autoupdate 54c4c0960a Automatic weekly version update: 200837 2008-09-15 05:00:03 +00:00
autoupdate f7c87ee208 Automatic weekly version update: 200836 2008-09-08 05:00:03 +00:00
autoupdate c0d56f5aa2 Automatic weekly version update: 200835 2008-09-01 05:00:03 +00:00
autoupdate ced7d9ab6c Automatic weekly version update: 200834 2008-08-25 05:00:04 +00:00
Bram Matthys 638e557bee - /REHASH -all not case sensitive 2008-08-19 13:14:43 +00:00
Bram Matthys 693b5634d5 - #0003313 reported by Stealth, regarding not erroring/warning when me::name
is bigger than HOSTLEN, from now it will error on config read. [Backport, sts]
2008-08-19 13:09:49 +00:00
Bram Matthys c20f785012 - #0001924 - requested by syzop: Added ./unreal gencloak, which generates
random keys 10 ~ 20 characters in length (*NIX only). [Backport, aquanight]
2008-08-19 13:01:29 +00:00
Bram Matthys 291bc5c8c3 - #0002833 reported and patched by tabrisnet, implementing UHNAMES
[Backport, only slightly modified for speed]
2008-08-19 12:43:54 +00:00
Bram Matthys b52906461c - #0002172 reported by Stealth, patched by WolfSage, fixing if you have an
admin block, and forget a semicolon on a line, Unreal will proceed to use
  the block with no error, but the information will be incorrect/incomplete.
2008-08-19 11:45:17 +00:00
Bram Matthys b488517226 - #0002475 reported by aquanight on detecting \'s in module filenames on
win32 and not do ./module for it [Backport]
2008-08-19 11:38:49 +00:00
autoupdate 70d5d8ba51 Automatic weekly version update: 200833 2008-08-18 05:00:04 +00:00
Bram Matthys ebf40ab6e6 - Added set::ssl::server-cipher-list, #002368 requested by Beastie
[Backport, sts]
- Added set::ssl::renegotiate-bytes, set::ssl:renegotiate-timeout, #0002971
  suggested by tabrisnet. Gets activated when >0. Please set sane values.
  [Backport, sts]
2008-08-11 13:54:35 +00:00
Bram Matthys c48ea59940 - #0001740 reported by Trocotronic, making the IRCd send ERROR : to all
links with possible reason for RESTART; like /die does it. [BACKPORT]
2008-08-11 13:04:06 +00:00
Bram Matthys 450021dec8 compile fix for win32 2008-08-11 12:16:13 +00:00
autoupdate 637122b021 Automatic weekly version update: 200832 2008-08-11 05:00:04 +00:00
Bram Matthys cadd4230e9 - configure script is now generated by autoconf 2.61 (was: 2.59), hopefully
that won't cause any issues, perhaps it even helps to fix some bugs...
2008-08-10 13:18:08 +00:00
Bram Matthys d10223fc2e - The OS version output is now taken from uname() at runtime instead of
'uname -a' at compile time. This fixes bug #1438 and #3320 reported by
  Mouse and Monk, where because of previous behavior the IRCd sometimes
  would not compile in certain environments.
2008-08-09 14:56:34 +00:00
Bram Matthys 0af8ede2f1 + Reported by ash11. 2008-08-09 11:20:33 +00:00
Bram Matthys 6a641aa5f5 - Limit watch status requests to one per time, more will often flood you off
and is stupid/useless.
2008-08-09 11:17:50 +00:00
Bram Matthys b809428392 - Added another Mac OS X hack, such as one that should help against
'error setting max fd's to 9223372036854775807' which prevents the ircd
  from booting up. Reported by btcentral and Bock. This hack might not be
  totally correct though ;).
2008-08-08 10:14:14 +00:00
Bram Matthys 06c209ffce - Added slow spamfilter detection. For each spamfilter, Unreal will check,
each time it executes, how LONG it takes to execute. When a certain
  threshold
  is reached the IRCd will warn or even remove the spamfilter. This will
  prevent
  a spamfilter (regex) from slowing down the IRCd too much, though it's
  still not
  a guarantee that it will never go to a halt (eg: in case it takes several
  minutes to execute a regex or loops forever).
  Warning can be configured via set::spamfilter::slowdetect-warn (default:
  250 milliseconds) and automatic deletion of spamfilters if it takes too
  long is set through set::spamfilter::slowdetect-fatal (default: 500 ms).
  NOTE: slow spamfilter detection is currently not available on Windows.
  NOTE 2: to disable slow detection you can set the warn and fatal settings
  to 0 (zero). OR to really disable all code, remove SPAMFILTER_DETECTSLOW
  from include/config.h and recompile.
2008-08-08 09:19:03 +00:00
autoupdate 7b92553909 Automatic weekly version update: 200828 2008-07-14 05:00:04 +00:00
autoupdate f3a4e11355 Automatic weekly version update: 200827 2008-07-07 05:00:03 +00:00
autoupdate 3364e1fb47 Automatic weekly version update: 200826 2008-06-30 05:00:04 +00:00
autoupdate 36ca3f55bc Automatic weekly version update: 200825 2008-06-23 05:00:03 +00:00
autoupdate 330fcd4f82 Automatic weekly version update: 200824 2008-06-16 05:00:03 +00:00
autoupdate 686ad9e52b Automatic weekly version update: 200823 2008-06-09 05:00:03 +00:00
autoupdate 3c3fb28955 Automatic weekly version update: 200822 2008-06-02 05:00:04 +00:00
autoupdate c5b7417e39 Automatic weekly version update: 200821 2008-05-26 05:00:04 +00:00
Bram Matthys 99ba7c9acd - Upgraded c-ares to 1.5.1, thanks to aegis for the partial patch (#0003671).
This also fixed a curl compile/run issue, reported by static-x (#0003545).
2008-04-07 15:03:31 +00:00
autoupdate 747d84334a Automatic weekly version update: 200811 2008-03-17 05:00:03 +00:00
autoupdate 15b25a5afc Automatic weekly version update: 200810 2008-03-10 05:00:04 +00:00
autoupdate a698c401c7 Automatic weekly version update: 200809 2008-03-03 05:00:03 +00:00
Bram Matthys 7c400e7dc1 - Ok, finished away notification in WATCH. It now shows the away reasons too.
This new feature (away notify) is announced in 005 (ISUPPORT) as: WATCHOPTS=A

  Format is: WATCH A +UserOne +UserTwo

  New numerics to cope with away notification in WATCH are:
  RPL_NOWISAWAY: to indicate the user is away _when adding_ it to WATCH list
  RPL_GONEAWAY:  user was not away, but is now
  RPL_NOTAWAY:   user was away, but is no longer away
  RPL_NOWISAWAY: user was away, and still is, but the reason changed
  Example:

  WATCH A +Target
  Request to add user 'Target' to the watch list with away notification

  :maintest.test.net 609 MySelf Target ~blih test.testnet 1204309588 :not here atm
  Reply to watch add: user is online and away, reason is provided

  :maintest.test.net 599 MySelf Target ~blih test.testnet 1204309588 :is no longer away
  User is back (no longer away)

  :maintest.test.net 598 MySelf Target ~blih test.testnet 1204309722 :lunch
  State change: user is now away, reason is provided

  :maintest.test.net 597 MySelf Target ~blih test.testnet 1204309738 :shopping, bbl
  User is still away, but reason changed.

  The syntax for each numeric is:
  <nickname> <username> <hostname> <awaysince> :<away reason>
  In case of 599 (RPL_NOTAWAY) it is:
  <nickname> <username> <hostname> <awaysince> :is no longer away

  For the record, this is all based on a draft from codemastr from 2004, which was
  implemented in Unreal3.3 (devel branch) in 2006. Today, in 2008 it was updated
  with away reason support and backported to Unreal3.2. Because away notification
  hasn't been used until now (due to it only being in Unreal3.3) we felt it was
  safe to break some numerics.
2008-02-29 18:44:07 +00:00
Bram Matthys 635ab4858e - Backport from 3.3 away notification from Oct 2006, this is v0, a further
patch will follow soon and the numerics will be changed.
2008-02-29 13:58:59 +00:00
autoupdate 9a81a2a67f Automatic weekly version update: 200808 2008-02-25 05:00:03 +00:00
Bram Matthys 7cd21aa28a extending vl a bit.. 2008-02-23 16:15:24 +00:00
Bram Matthys 9635c45fd0 HOOKTYPE_RAWPACKET_IN: not very useful, it's not meant for packet manipulation but for inspection before stuff is even parsed. keeping undocumented for now... 2008-02-23 16:10:38 +00:00
autoupdate e80c63cf22 Automatic weekly version update: 200807 2008-02-18 05:00:03 +00:00
Bram Matthys 38fd630d9f - Fixed (G)ZLINE check.. it was incorrectly rejecting many IPv6 bans.
Reported by guigui (#0003572).
2008-02-11 16:05:12 +00:00
Bram Matthys f966682883 - So called 'smart' banning is now disabled by default, this means you can
now set a ban on *!*@*h.com and then later add one on *!*@*blah.com
  without
  any trouble. Previously the second one was rejected due to the former
  already matching it. To change it back edit the include/config.h setting
  SOCALLEDSMARTBANNING.
2008-02-11 16:00:13 +00:00
autoupdate 301452efb7 Automatic weekly version update: 200806 2008-02-11 05:00:03 +00:00
autoupdate 1cc2a6b355 Automatic weekly version update: 200805 2008-02-04 05:00:03 +00:00
autoupdate c81820b958 Automatic weekly version update: 200804 2008-01-28 05:00:03 +00:00
autoupdate 56eff93642 Automatic weekly version update: 200803 2008-01-21 05:00:04 +00:00
autoupdate 7eef11db14 Automatic weekly version update: 200802 2008-01-14 05:00:03 +00:00
babass 1c2fd041ae Correction syntaxique dans help.fr.conf 2008-01-13 15:18:03 +00:00
autoupdate a7c8428cc4 Automatic weekly version update: 200801 2008-01-07 05:00:04 +00:00
autoupdate 41ee204108 Automatic weekly version update: 200753 2007-12-31 05:00:03 +00:00
bock b9c4ba0d2f fixed, added, documented changes from original unreal32docs.html 2007-12-30 13:22:06 +00:00
Bram Matthys 10fd56d4e8 - ChanMode +S/+c: reverse is now stripped/blocked as well, because it's
similar to color, and is just as annoying (..if not worse).
2007-12-30 11:27:06 +00:00
autoupdate dd09869ef2 Automatic weekly version update: 200752 2007-12-24 05:00:04 +00:00
babass f4ff22b7d0 Clarirication 2007-12-21 16:45:02 +00:00
autoupdate 45d335a225 Automatic weekly version update: 200751 2007-12-17 05:00:04 +00:00
angrywolf 90fbe18a95 Changes of week 50 2007-12-15 14:47:40 +00:00
stylus740 7f22468f5f Changes week 50 of doc/unreal32docs.de.html 2007-12-15 13:57:00 +00:00
Bram Matthys 9881318847 - unreal32docs.html: doubt it will help much but at least this makes it a
little bit more clear (#3548), chatops vs globops.
2007-12-10 14:10:20 +00:00
autoupdate a26f959aad Automatic weekly version update: 200750 2007-12-10 05:00:04 +00:00
autoupdate 6220be843b Automatic weekly version update: 200749 2007-12-03 05:00:03 +00:00
angrywolf 8211dcfdb5 Changes of week 47 2007-11-26 10:47:16 +00:00
autoupdate d381a74959 Automatic weekly version update: 200748 2007-11-26 05:00:04 +00:00
babass 41696810a2 Doc pour set::level-on-join 2007-11-24 16:41:51 +00:00
stylus740 61f7edbf70 Update doc/unreal32docs.de.html week 47 2007-11-24 11:01:12 +00:00
Bram Matthys e3abcabdfb docs for set::level-on-join 2007-11-19 13:24:29 +00:00
Bram Matthys c97e538442 - Added set::level-on-join: which level should the user get when (s)he's is
the first to enter a channel. Currently only 'none' and 'op' are supported.
2007-11-19 13:19:28 +00:00
autoupdate 49fe2c12aa Automatic weekly version update: 200747 2007-11-19 05:00:03 +00:00
autoupdate 259e03dbcb Automatic weekly version update: 200746 2007-11-12 05:00:03 +00:00
autoupdate 949f96492f Automatic weekly version update: 200745 2007-11-05 05:00:04 +00:00
Bram Matthys 2a498427bf - Fixed bug (in all Unreal versions) with parameter channelmodes, any 3rd
party module which adds an extra parameter chanmode could cause crashes.
2007-11-04 18:03:47 +00:00
Bram Matthys 481c374af8 - Channelmode modules without parameters (like: +X, but not: +X 1) no longer
have to be permanent. Channelmodes with parameters still have to be PERM
  however, and there are currently no plans to change it.
2007-11-01 16:46:07 +00:00
Bram Matthys bcf6941b4b - Usermode modules now no longer have to be permanent (#3174), this was
simply a bug that was introduced when adding remote includes support years
  ago.
2007-11-01 13:40:26 +00:00
autoupdate 0609cc8ea1 Automatic weekly version update: 200744 2007-10-29 05:00:03 +00:00
Bram Matthys ba517c3f2c - Minor source cleanup in src/modules/m_map.c, suggested by fez (#0003540). 2007-10-24 15:44:36 +00:00
autoupdate 1f4279d417 Automatic weekly version update: 200743 2007-10-22 05:00:03 +00:00
autoupdate 383cce9bb6 Automatic weekly version update: 200742 2007-10-15 05:00:04 +00:00
Bram Matthys 75706516ab - Fixed set::modes-on-join: could crash or disfunction with certain
parameter mode combinations.
2007-10-13 13:24:27 +00:00
Bram Matthys 8cd5d09b16 copyright 2007-10-13 10:59:31 +00:00
autoupdate c1a2f7e185 Automatic weekly version update: 200741 2007-10-08 05:00:03 +00:00
Bram Matthys 5f60a0d949 - Remove part reason when user is banned, suggested by vonitsanet (#0003354). 2007-10-02 09:30:34 +00:00
Bram Matthys 48dc0d824a - Hopefully fixed 'Overflowed unzipbuf increase UNZIP_BUFFER_SIZE' issue,
reported by Monk (#0003453). It should be large enough now. Also changed the
  way we deal with this when it happens (if it ever happens again..): we now
  close the server connection, instead of trying to continue, because continueing
  is too dangerous.
2007-10-02 09:14:25 +00:00
Bram Matthys ce5c2b3800 - Hopefully fixed 'Overflowed unzipbuf increase UNZIP_BUFFER_SIZE' issue,
reported by Monk (#0003453). It should be large enough now.
2007-10-01 19:27:46 +00:00
autoupdate 409bb73a1d Automatic weekly version update: 200740 2007-10-01 05:00:04 +00:00
stylus740 0eb5980d15 Changes of week 38 unreal32docs.de.html 2007-09-27 15:51:13 +00:00
angrywolf 3dd887ec05 Changes of week 38 2007-09-27 09:22:43 +00:00
Bram Matthys 62af4dd7a0 - Fixed Mac OS X issue where "access denied" errors were encountered when
trying to read unrealircd.conf. All due to strange chmod() behavior. We now no
  longer try to set permissions on Mac OS X. Patch provided by Tibby (#3489).
2007-09-25 15:23:27 +00:00
babass ab3bc3d45a - Documentation de CHROOTDIR dans unreal32docs, rapporté par Beastie (#0002446) 2007-09-25 15:10:51 +00:00
autoupdate 3e24e69fa3 Automatic weekly version update: 200739 2007-09-24 05:00:04 +00:00
Bram Matthys 29680132b9 - Document CHROOTDIR in unreal32docs, reported by Beastie (#0002446). 2007-09-19 09:02:01 +00:00
Bram Matthys 75bf27a52b rephrase...
- CGI:IRC + IPv6: Fixed cgiirc block hostname never matching ipv4 cgiirc
  gateway properly (..again..), this was previously reported by pv2b.
2007-09-19 08:47:59 +00:00
Bram Matthys 9e3ae2b758 - CGI:IRC + IPv6: Fixed cgiirc block hostname never matching ipv4 gateway
properly (..again..), this was previously reported by pv2b.
- CGI:IRC + IPv6: Fixed issue where all cgiirc ipv4 clients were rejected with
  the message 'Invalid IP address', reported by stskeeps (#0003311), nate
  (#0003533) and others.
2007-09-19 08:46:45 +00:00
autoupdate 835b3779bf Automatic weekly version update: 200738 2007-09-17 05:00:05 +00:00
Bram Matthys 56d1bdfe67 - Fixed oper block bug where ip masks in oper::from::userhost did not always
work succesfully (ex: 192.168.* worked, but 192.168.*.* didn't). Issue was
  introduced in 3.2.7, reported by tabrisnet (#0003494).
2007-09-16 19:02:27 +00:00
Bram Matthys 3160f385a8 - Fixed CHROOTDIR, which was broken in 3.2.7: IRC_USER/IRC_GROUP did not work
properly when CHROOTDIR was in use (#0003454).
2007-09-16 16:18:54 +00:00
autoupdate 5d23e3ed71 Automatic weekly version update: 200737 2007-09-10 05:00:07 +00:00
Bram Matthys 68c5bf4f66 - Now allowing '1.2.3.4' ips again in IPv6 mode as well (instead of enforcing
'::ffff:1.2.3.4' ips in the conf, they are now auto-converted to that).
  Based on patch from tabrisnet.
- Fixed issue where the cgiirc block did not work with IPv6, reported by
  djGrrr, fixed by previous change.
2007-09-05 19:03:06 +00:00
Bram Matthys 15008285aa ok, I don't mind the new 'design' much, but don't rip codemastr completely out of credits! he did a substantial amount of work on UnrealIRCd. Added some other original credits back in as well (even though I don't know these people, they have been credited in 3.2* since the start). 2007-09-05 15:50:50 +00:00
autoupdate 08e6d2562b Automatic weekly version update: 200736 2007-09-03 05:00:05 +00:00
Bram Matthys a9069600c5 - Fixed bug in SJOIN, possibly causing things like odd bans showing up in
some circumstances. Reported by Hurga, patch provided by fbi.
2007-09-02 19:30:14 +00:00
autoupdate 9d7ab14167 Automatic weekly version update: 200735 2007-08-27 05:00:03 +00:00
autoupdate 4331a913cd Automatic weekly version update: 200734 2007-08-20 05:00:04 +00:00
autoupdate 30ad92ade3 Automatic weekly version update: 200733 2007-08-13 05:00:04 +00:00
autoupdate a167693904 Automatic weekly version update: 200732 2007-08-06 05:00:03 +00:00
autoupdate f7f5b203e3 Automatic weekly version update: 200731 2007-07-30 05:00:04 +00:00
autoupdate 43594c811c Automatic weekly version update: 200730 2007-07-23 05:00:04 +00:00
wolfsage fd84dc2c12 Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.2234.2.677
diff -u -r1.1.1.1.2.1.2.1.2.2234.2.677 Changes
--- Changes	17 Jul 2007 23:47:30 -0000	1.1.1.1.2.1.2.1.2.2234.2.677
+++ Changes	17 Jul 2007 23:54:24 -0000
@@ -1531,3 +1531,5 @@
 - Updated release notes
 *** 3.2.7 release ***
 - Fix aquanight's email
+- #0003351 reported by Mareo regarding m_addmotd.so and m_svslusers.so
+  not being created
2007-07-17 23:54:28 +00:00
wolfsage ba83f978fa Fix aquanight's email 2007-07-17 23:47:30 +00:00
autoupdate 2062bd4137 Automatic weekly version update: 200729 2007-07-16 05:00:06 +00:00
stylus740 3005cafeca Changes week 28 for doc/help.de.conf doc/unreal32docs.de.html 2007-07-14 08:42:15 +00:00
oepidus 302bb75217 *** empty log message *** 2007-07-13 23:02:47 +00:00
stskeeps d26692e6f8 done 2007-07-13 14:24:12 +00:00
stskeeps 3e5aba5117 version fix 2007-07-13 14:18:39 +00:00
stskeeps 3f0d91dc34 Unreal.nfo update 2007-07-13 13:29:19 +00:00
stskeeps 71fd0f0af6 Documentation update 2007-07-13 12:09:19 +00:00
oepidus 3320b9a150 *** empty log message *** 2007-07-13 11:55:53 +00:00
stskeeps 37a896df79 3.2.7 release 2007-07-13 10:43:04 +00:00
mark 7436ba747e Changes of week 24/07 2007-07-12 07:15:37 +00:00
babass 4cca75b0cb Préparation à la sortie de la release 3.2.7 2007-07-11 17:13:00 +00:00
stskeeps acda817d3d - Updated release notes 2007-07-11 17:12:11 +00:00
angrywolf 61b7a1277b Changes of week 28 2007-07-11 16:57:30 +00:00
stskeeps 06ea24e88b - Fixed wolfsage eff-up in c-ares.tar.gz, not running make distclean 2007-07-11 16:36:43 +00:00
bock 8cb6d662e1 Update for 3.2.7, added helpop for new commands 2007-07-11 07:33:37 +00:00
stskeeps 1ae33ddbfb - Fix, fix #0003421 patch 2007-07-10 19:35:25 +00:00
stskeeps d67697b7a2 - Entering 3.2.7 RC2 phase 2007-07-10 13:16:59 +00:00
stskeeps 7bc78fae1e - Applied #0003392 patch by Bock, adding some stuff to help.conf 2007-07-10 10:43:21 +00:00
stskeeps e1b48b7d3b - Applied #0003144 patch by Bock, fixing win32 install and such 2007-07-10 10:41:24 +00:00
stskeeps 686732b674 Applied 2999 2007-07-10 10:28:07 +00:00
stskeeps 20d84edaa5 - Applied #0003422 help.conf patches by Bock 2007-07-10 10:11:06 +00:00
stskeeps ddbb84682d - Fixed fixed #003244 fix. 2007-07-10 09:49:02 +00:00
stskeeps 74349aa334 - #0003429 reported by Bock about appearing to accept multiple auth blocks. 2007-07-09 19:46:28 +00:00
autoupdate 9987ec884e Automatic weekly version update: 200728 2007-07-09 05:00:03 +00:00
autoupdate 23d91c269f Automatic weekly version update: 200727 2007-07-02 05:00:04 +00:00
stskeeps d9fbd32352 More .hs 2007-06-27 15:51:47 +00:00
stskeeps e1e037c1b1 - Win32 library updates from Bock 2007-06-27 15:47:32 +00:00
stskeeps 8805dae525 - #0003405 repoted by Stealth regarding wildcards and autoconnect being an
||
- Fixed irc_uid|gid being defined on win32
2007-06-27 11:36:31 +00:00
stskeeps dad8477cb3 - Applied patch to fix some win32 problems reported by Bock, fixed by fez 2007-06-27 10:54:51 +00:00
stskeeps a705ceaa86 - Entering 3.2.7 RC1 phase 2007-06-26 11:27:07 +00:00
autoupdate 21a54860d3 Automatic weekly version update: 200726 2007-06-25 05:00:04 +00:00
stskeeps a9682b7ae2 - #0003244 reported by CuLpA about grammar errors in webtv outputs 2007-06-22 08:42:23 +00:00
autoupdate 0f0ffc9580 Automatic weekly version update: 200725 2007-06-18 05:00:05 +00:00
stskeeps 0e50f34167 - #0003363 patched by adrianp, changing IRC_UID and IRC_GID into
defines IRC_USER, IRC_GROUP which is a string specifiying what user name/
  group name that should be changed into, instead of a hardcoded gid/uid.
  This should make it easier for packaged binary releases to work (even
  though this probably means Debian will take us in, ick .. Can't we pull
  a new fight with debian-legal again?)

- #0003363 patched by adrianp, changing IRC_UID and IRC_GID into
  defines IRC_USER, IRC_GROUP which is a string specifiying what user name/
  group name that should be changed into, instead of a hardcoded gid/uid.
  This should make it easier for packaged binary releases to work (even
  though this probably means Debian will take us in, ick .. Can't we pull
  a new fight with debian-legal again?)
2007-06-17 12:43:52 +00:00
stylus740 121c4b73ab Canges week 24 for doc/example.de.conf doc/help.de.conf doc/unreal32docs.de.html 2007-06-16 14:01:57 +00:00
angrywolf 6ee7e51b40 Little grammar fix for the directive link::ciphers 2007-06-16 12:48:04 +00:00
angrywolf 465c9ed9ae Forgot the example.conf part of 'Changes of week 24' :) 2007-06-16 12:26:15 +00:00
bock 1fd1f3a7b2 Changes of week 24 2007-06-16 10:09:39 +00:00
angrywolf b3dbc78b8c - Changes of week 24
- Retranslated the whole CDIR section (3.15)
- According to http://forditas.fsf.hu/html/node3.html the Hungarian expression for 'Internet Service Provider' should be written with a hypen (all occurrences fixed).
2007-06-16 10:00:16 +00:00
babass b930545ae7 Correction typo 2007-06-16 09:21:12 +00:00
stskeeps 182df5db2d - #0003232 reported by vonitsanet patched by djGrr, regarding /map is not
shown u:lined servers to local opers and /links does
2007-06-15 19:58:45 +00:00
stskeeps f3fce00218 - #0003092 reported by tabrisnet, patched by WolfSage, regarding
documentation says
  link::bind-ip is optional, but not specifying it produces an error
2007-06-15 19:53:54 +00:00
stskeeps a3d2b68abd - #0003382 reported by stealth regarding nested C-style comments messing
up example.conf parsing
2007-06-15 19:50:22 +00:00
stskeeps f3a2d7f6a4 - #0001317 reported by thilo regarding removal of (username) being
appended to topics set by U:Lined servers.
2007-06-15 19:47:26 +00:00
babass 02da9dd0a3 Ajout de l'oper CIDR 2007-06-14 21:05:48 +00:00
stskeeps 451a05d951 - Added oper CIDR 2007-06-14 18:23:38 +00:00
stskeeps 0748ba0aa5 - #0002420 reported by KnuX fixed by WolfSage
- #0003147 reported by vonitsanet, fixed by djGrrr regarding making
  spamfilters work in case of /setname
2007-06-14 18:20:38 +00:00
stskeeps db04a13bbe #0003216 patched by djGrrr, regarding when you run ./Config for a second 2007-06-14 18:15:52 +00:00
stskeeps 797b6f428c - Fixed SVSKILL sending an illegal QUIT 2007-06-14 18:12:10 +00:00
stskeeps 92bd444ac2 - #0002040 reported by aquanight, removing dependancy on +l for +L. This
will be backwards compatible as well, SJOIN doesn't care (TM) and mode
  doesn't either in case of a server sending it. So this will be just a
  client protocol modification.
2007-06-14 18:10:34 +00:00
stskeeps 8cf43a9596 - #0003139 reported by vonitsanet, improving error messages on /connect
when trying to /connect to a server with wildcards (* and ?) in the link
  block. We also raise an error if link::options::autoconnect is used
  together with wildcards in hostname.
2007-06-14 18:06:04 +00:00
stskeeps d673c88159 - Now using #0003028, with more intelligent accept() handling. The IRCd
will now attempt to accept() up to LISTEN_SIZE (possibly saving CPU
  through this under load, and speeding up connection).
- IRCd now also sets the &me fd as being non blocking (wasn't before, that
  was odd..)
2007-06-14 18:02:30 +00:00
stskeeps ee24127381 - #0002533 reported by Dodge_Ram, patched by WolfSage, regarding notices
not being sent when /*line and /shun are used to request stats
2007-06-14 18:01:01 +00:00
stskeeps df0e2ac4de #0003368 patched by Stealth giving users access to do /module on remote
servers
2007-06-14 17:29:36 +00:00
stskeeps 48c9c21708 - #0003027 reported by Trocotronic, regarding doing -l <para> on SJOIN,
and not -l as supposed. This may have caused desyncs
2007-06-14 17:25:57 +00:00
wolfsage 2857f3efe9 Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.2234.2.644
diff -u -r1.1.1.1.2.1.2.1.2.2234.2.644 Changes
--- Changes	12 Jun 2007 00:06:32 -0000	1.1.1.1.2.1.2.1.2.2234.2.644
+++ Changes	12 Jun 2007 00:13:02 -0000
@@ -1468,3 +1468,4 @@
 - #0003264 reported by Robby22 regarding help.conf typo
 - Updated c-ares to version 1.4.0
 - Updated tre to version 0.7.5
+- help.conf updates. Missing some ;'s.
2007-06-12 00:13:07 +00:00
wolfsage b4a879621e Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.2234.2.643
diff -u -r1.1.1.1.2.1.2.1.2.2234.2.643 Changes
--- Changes	11 Jun 2007 23:52:32 -0000	1.1.1.1.2.1.2.1.2.2234.2.643
+++ Changes	12 Jun 2007 00:06:09 -0000
@@ -1467,3 +1467,4 @@
 - help.conf updates... #0002420 reported by KnuX fixed by WolfSage
 - #0003264 reported by Robby22 regarding help.conf typo
 - Updated c-ares to version 1.4.0
+- Updated tre to version 0.7.5
2007-06-12 00:06:33 +00:00
wolfsage 4935dfa45e Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.2234.2.642
diff -u -r1.1.1.1.2.1.2.1.2.2234.2.642 Changes
--- Changes	10 Jun 2007 12:25:06 -0000	1.1.1.1.2.1.2.1.2.2234.2.642
+++ Changes	11 Jun 2007 23:52:00 -0000
@@ -1466,3 +1466,4 @@
 - #0002844 reported by RandomNumber: make spamfilter actions case insensitive
 - help.conf updates... #0002420 reported by KnuX fixed by WolfSage
 - #0003264 reported by Robby22 regarding help.conf typo
+- Updated c-ares to version 1.4.0
2007-06-11 23:52:33 +00:00
autoupdate f97577ae76 Automatic weekly version update: 200724 2007-06-11 05:00:03 +00:00
wolfsage 2ff21308f9 Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.2234.2.641
diff -u -r1.1.1.1.2.1.2.1.2.2234.2.641 Changes
--- Changes	30 Apr 2007 19:47:15 -0000	1.1.1.1.2.1.2.1.2.2234.2.641
+++ Changes	10 Jun 2007 12:25:03 -0000
@@ -1465,3 +1465,4 @@
 - #0002560 reported and patched by w00t, regarding a typo in /SAMODE
 - #0002844 reported by RandomNumber: make spamfilter actions case insensitive
 - help.conf updates... #0002420 reported by KnuX fixed by WolfSage
+- #0003264 reported by Robby22 regarding help.conf typo
2007-06-10 12:25:07 +00:00
autoupdate e33a0d9a09 Automatic weekly version update: 200723 2007-06-04 05:00:03 +00:00
autoupdate 4762baa11a Automatic weekly version update: 200722 2007-05-28 05:00:03 +00:00
autoupdate fc714fc288 Automatic weekly version update: 200721 2007-05-21 05:00:03 +00:00
autoupdate b6ea1ab479 Automatic weekly version update: 200720 2007-05-14 05:00:03 +00:00
babass 9e5a922ca3 Correction de typo pouvant créer un problème à l'installation de l'help.fr.conf 2007-05-12 13:44:41 +00:00
angrywolf 25f5036c35 Changes of week 18 2007-05-12 00:38:49 +00:00
mark 7506b322a5 Changes of week 18/07 2007-05-11 14:35:29 +00:00
autoupdate 87134d99e7 Automatic weekly version update: 200719 2007-05-07 05:00:03 +00:00
Bram Matthys 9505a1f520 turkish doc updates (by Serkan) 2007-05-06 11:33:22 +00:00
babass 9be37f7979 Ajout de AddMOTD et AddoMOTD dans help.fr.conf plus correction syntaxique dans la doc. 2007-05-05 10:56:39 +00:00
stylus740 de9e60bc03 Changes week 18 doc/help.de.conf doc/unreal32docs.de.html 2007-05-05 10:49:04 +00:00
Bram Matthys 152283b769 - help.conf updates... #0002420 reported by KnuX fixed by WolfSage 2007-04-30 19:47:16 +00:00
Bram Matthys 1b587dcbff - #0002844 reported by RandomNumber: make spamfilter actions case insensitive 2007-04-30 19:45:44 +00:00
Bram Matthys 2b9dd64bb3 - #0002560 reported and patched by w00t, regarding a typo in /SAMODE 2007-04-30 19:43:24 +00:00
Bram Matthys 0e5206ea7d - #0003159 reported by aegis and Bock, regarding typos in documentation 2007-04-30 19:42:48 +00:00
Bram Matthys de1fea75f4 - xx reported and fixed by WolfSage (addmotd, addomotd in help.conf) 2007-04-30 19:41:42 +00:00
Bram Matthys e9bb00fec3 - Fixed SVSKILL sending an illegal (wrong direction) QUIT right after, #0003307 2007-04-30 19:37:30 +00:00
autoupdate cfdd3c2889 Automatic weekly version update: 200718 2007-04-30 05:00:05 +00:00
Bram Matthys 1eeae26719 - #3272 patched by w00t, regarding remove restrictions on NOTICE/PRIVMSG $* for opers. 2007-04-25 12:45:39 +00:00
Bram Matthys 043948990c - #0002846 reported by alex323, patched by WolfSage, regarding local ircop cannot issue CLOSE command 2007-04-25 12:43:20 +00:00
Bram Matthys 91391a46b5 - #0003212 patched by Grunt, regarding /userip <someone_else> seemingly
shows your own (cloaked) IP.
2007-04-25 12:36:42 +00:00
Bram Matthys 33bbe5ea8f - #0002932 reported by therock247uk, patched by WolfSage, regarding Local
opers can /chghost /chgident /chgname on someone thats on another server on
  the network.
2007-04-25 12:33:43 +00:00
Bram Matthys f6a0ef0cc2 - #0003146 reported by vonitsanet, regarding Modes O,S (etc) not rejected for modes-on-connect
fixed by djGrrr
2007-04-25 12:30:38 +00:00
Bram Matthys fe3eb0db7d - Fixed #0003171 reported by danieldg (typo) doc/technical 2007-04-25 12:20:13 +00:00
autoupdate 2f49eb5aaf Automatic weekly version update: 200717 2007-04-23 05:00:03 +00:00
autoupdate 2a7f21124f Automatic weekly version update: 200716 2007-04-16 05:00:03 +00:00
autoupdate e5a40f1045 Automatic weekly version update: 200715 2007-04-09 05:00:07 +00:00
autoupdate 48d766e308 Automatic weekly version update: 200714 2007-04-02 05:00:09 +00:00
autoupdate 1a694d14f5 Automatic weekly version update: 200713 2007-03-26 05:00:05 +00:00
autoupdate 996775f16d Automatic weekly version update: 200712 2007-03-19 05:00:04 +00:00
autoupdate fc58297eb0 Automatic weekly version update: 200711 2007-03-12 05:00:03 +00:00
autoupdate dba2097cdd Automatic weekly version update: 200710 2007-03-05 05:00:03 +00:00
autoupdate 3b0f6ea0ac Automatic weekly version update: 200709 2007-02-26 05:00:03 +00:00
aquanight 68595e2d22 Fixed serverprotocol.html typo. 2007-02-19 19:34:38 +00:00
autoupdate 5285c52084 Automatic weekly version update: 200708 2007-02-19 05:00:03 +00:00
Bram Matthys f00fd6eaef maths is teh hard 2007-02-16 14:09:39 +00:00
Bram Matthys 6b370c9c67 - Fixed file descriptor leakage on rehash. This resulted in [number of modules loaded]
file descriptors being leaked upon every /REHASH.
  So if you, for example, had 3 modules loaded and rehashed 30 times, it would cause
  the ircd to consume 60 useless file descriptors (which often means 60 less file
  descriptors being available to clients).
2007-02-16 14:05:44 +00:00
autoupdate 231d06c48d Automatic weekly version update: 200707 2007-02-12 05:00:03 +00:00
Bram Matthys 8c6bb314c5 - Changed password length from 32 to 48, is allocated dynamically anyway. 2007-02-06 15:33:12 +00:00
autoupdate fe34c10de2 Automatic weekly version update: 200706 2007-02-05 05:00:03 +00:00
autoupdate 1846da7c5a Automatic weekly version update: 200705 2007-01-29 05:00:04 +00:00
Bram Matthys 83dda85a6a - Fixed SAPART causing a flood of notices from all servers, fun. Reported and patch
provided by djGrrr.
2007-01-22 13:01:16 +00:00
Bram Matthys 9feef46dae - Fixed SDESC not messaging +s +s clients on local server when it is used, reported by
dre, patch provided by djGrrr.
2007-01-22 12:50:55 +00:00
Bram Matthys c88832d960 - Added ability to enable "no fake lag" for a user through through services via the
new commands SVSNOLAG/SVS2NOLAG (syntax: SVSNOLAG [+|-] NickName). Obviously, care
  should be taken when giving such access to a user since he/she will be able to flood
  at full speed and could possibly take down the entire IRCd (well, everyone on it).
  Suggested by avb, coded by djGrrr.
2007-01-22 12:46:54 +00:00
Bram Matthys d1827e1835 - /WHOIS now shows the ident of local users - if ident enabled and they had an ident -
instead of always "*" in the 'is connecting from' line. Suggested and patch provided
  by djGrrr (#0002888).
2007-01-22 12:36:51 +00:00
Bram Matthys 30bab73c03 - Fixed bug where SVSO was unable to give various operflags such as q, d, X, reported
by prodigy2k7 (#0003203).
2007-01-22 12:25:40 +00:00
autoupdate 35d668ad31 Automatic weekly version update: 200704 2007-01-22 05:00:03 +00:00
autoupdate 1053948bed Automatic weekly version update: 200703 2007-01-15 05:00:03 +00:00
autoupdate 686c7e2f21 Automatic weekly version update: 200702 2007-01-08 05:00:03 +00:00
autoupdate 3f47c89846 Automatic weekly version update: 200701 2007-01-01 05:00:03 +00:00
aquanight c834a47f32 italic fix in serverprotocol 2006-12-28 16:34:06 +00:00
oepidus d99b03660b Changes of week 51 2006-12-25 22:16:37 +00:00
autoupdate 4807a7330c Automatic weekly version update: 200652 2006-12-25 05:00:03 +00:00
stylus740 1e73667155 Correction: doc/help.de.conf 2006-12-24 09:37:08 +00:00
aquanight 42c3227864 Fixed STATS description for server senders 2006-12-23 22:19:53 +00:00
stylus740 6532706da0 doc/help.de.conf Change of week 51 2006-12-23 22:11:59 +00:00
aquanight f738943493 Added WHOIS (#) and STATS (2) to serverprotocol.html. 2006-12-23 20:05:20 +00:00
stylus740 9a5dbf345e Changes of week 51: doc/unreal32docs.de.html 2006-12-23 10:35:49 +00:00
Bram Matthys e5f921e186 - Updated release notes, mass-change of version number, no code changes.
** 3.2.6 release **
2006-12-22 20:19:39 +00:00
Bram Matthys c6c0345b36 Updated release notes (no version change yet) 2006-12-22 20:04:00 +00:00
Bram Matthys 1114003d93 hrmmhrmhrmmmmmm changed leaf-depth to leafdepth 2006-12-22 20:03:47 +00:00
Bram Matthys a34ecabee0 ** 3.2.6-rc3 release ** 2006-12-20 21:05:55 +00:00
Bram Matthys ef8ffdda04 - 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).
2006-12-19 19:37:41 +00:00
Bram Matthys 0f53a33401 - Fixed possible crash with using quarantine, reported by Sephiroth (#0003151). 2006-12-19 12:52:53 +00:00
Bram Matthys 6373b83c39 Updates of week 50 2006-12-18 11:51:56 +00:00
autoupdate f7ca612817 Automatic weekly version update: 200651 2006-12-18 05:00:04 +00:00
babass c06f591878 Changements de la semaine 50 2006-12-17 20:07:02 +00:00
stylus740 72c6875a80 changes of week 50 doc/help.de.conf 2006-12-17 09:15:10 +00:00
Bram Matthys 6c193b7cbe ** 3.2.6-rc2 release ** 2006-12-16 13:36:02 +00:00
Bram Matthys 20603ada50 spellllllingggg 2006-12-16 13:26:26 +00:00
Bram Matthys 4e3745922e plok 2006-12-16 13:22:50 +00:00
mark 298d28940b Changes of week 48/06 2006-12-16 13:18:38 +00:00
Bram Matthys 4f54a7e982 - 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).
2006-12-12 17:25:19 +00:00
bock c9e5cc23ff Updated SVSNLINE syntax in help.ru.conf (the remove-syntax). 2006-12-12 07:40:05 +00:00
Bram Matthys a314130ca6 - Updated SVSNLINE syntax in help.conf (the remove-syntax). 2006-12-11 12:13:20 +00:00
autoupdate 9fcd92d297 Automatic weekly version update: 200650 2006-12-11 05:00:04 +00:00
angrywolf 4212f96ebc One more little fix. :) 2006-12-06 18:30:43 +00:00
angrywolf e51ac78a93 Changes of week 48 + various grammar corrections 2006-12-06 18:25:53 +00:00
Bram Matthys 0537a49be6 - 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).
2006-12-06 14:33:42 +00:00
babass a1016d0a8e Changements de la semaine 48 2006-12-05 16:11:03 +00:00
Bram Matthys bb265f6c41 - 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).
2006-12-05 13:50:57 +00:00
autoupdate c62d326a7a Automatic weekly version update: 200649 2006-12-04 05:00:04 +00:00
stylus740 f71fd34887 Changes of week 48 doc/help.de.conf doc/unreal32docs.de.html 2006-12-03 07:40:30 +00:00
Bram Matthys 41efaa9fd8 - Don't show silence list to others 2006-12-02 23:20:57 +00:00
trocotronic 590c7388cb Cambios semana 48 / 2006 2006-12-02 11:11:39 +00:00
gsf db03b6173e Week 48 Changes :) 2006-12-02 09:56:07 +00:00
Bram Matthys 3e134cbb0a - Setting set::pingpong-warning didn't work, reported by vonitsanet, patch supplied by
avb (#0003131).
2006-12-01 15:39:44 +00:00
Bram Matthys a6b8d8ff35 - Added donators since 3.2.5 2006-12-01 15:32:51 +00:00
Bram Matthys ba8cf14b9b - Get rid of some old stuff in release notes 2006-11-30 23:56:45 +00:00
Bram Matthys af0b379650 ** 3.2.6-rc1 release ** 2006-11-30 23:02:02 +00:00
aquanight 6a44b8c3e5 Backport serverprotocol.html updates from 3.3 + 3.2.6 info 2006-11-29 20:03:13 +00:00
babass 0390c6c64f Changements de la semaine 47 (help.fr.conf) 2006-11-28 16:08:44 +00:00
Bram Matthys 7c9ea959f4 updates 2006-11-28 12:04:18 +00:00
bock 974454764f Fixed typo 2006-11-27 14:58:16 +00:00
Bram Matthys 4faaf63e82 - Fixed help.conf typo 2006-11-27 14:39:45 +00:00
autoupdate 63635918f7 Automatic weekly version update: 200648 2006-11-27 05:00:04 +00:00
bock ace157556b Improved description of link::hub/leaf/leafdepth in unreal32docs.ru.html, also fixed typo (leafdepth, not leaf-depth) 2006-11-26 19:33:49 +00:00
Bram Matthys ef7344d586 - Added release notes for 3.2.6 2006-11-26 18:44:59 +00:00
Bram Matthys 8d68e6fa19 - fix for above (c-ares win32 lib) 2006-11-26 14:37:17 +00:00
Bram Matthys a3b32fdedb updated changelog comment, giving more credit
- 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.
2006-11-26 12:54:06 +00:00
Bram Matthys c29ad02587 - upgraded windows c-ares (areslib.lib) as well. 2006-11-25 22:57:45 +00:00
Bram Matthys 545c641fe8 - c-ares resolver: upgrade to 1.3.2. 2006-11-25 19:39:39 +00:00
Bram Matthys a962ad2877 backport from aquanight:
- 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).
2006-11-25 19:10:14 +00:00
Bram Matthys 628abf114c FIXFORFIX
- 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).
2006-11-25 16:48:43 +00:00
Bram Matthys ea2b4a1698 spellllling.... (changelog only) 2006-11-25 16:43:23 +00:00
Bram Matthys d9098e44e3 - Fixed bug where ommitting class::connfreq would not give a config error, and would
cause a huge connection attempt flood when autoconnect was enabled. Reported by
  Milliways (#0003018).
2006-11-25 16:42:17 +00:00
bock 08e5ee49d1 Ooops, some more help staff info was added on last commit. Removed to correct. 2006-11-25 15:59:56 +00:00
stylus740 9b47129ad7 Chandes week47 doc/help.de.conf 2006-11-25 10:42:30 +00:00
Bram Matthys b6bed50471 - Fixed compile bug on Solaris due to missing INADDR_NONE, fix provided by Schak
(#0003125).
2006-11-24 21:20:48 +00:00
Bram Matthys c48ab26b0e - 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).
2006-11-24 21:07:11 +00:00
bock 97c561715a Added information about extbans to help.ru.conf (/HELPOP EXTBANS) 2006-11-24 21:00:13 +00:00
Bram Matthys 803a67d4c7 - 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. 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).
2006-11-24 19:34:05 +00:00
Bram Matthys 697eb2c3e4 - Changed some minor Makefile stuff
- Fixed belarussian-w1251 charset.. accidently copied a "'" which caused an internal
  error.
2006-11-22 15:37:34 +00:00
sinameki d3ca3fb0c4 changes of week 46 2006-11-20 23:28:48 +00:00
autoupdate 31c15ebb93 Automatic weekly version update: 200647 2006-11-20 05:00:03 +00:00
trocotronic 2126961b4b Cambios semana 46 / 2006 2006-11-19 12:35:15 +00:00
babass e50f9f92a4 Changements de la semaine 46 2006-11-19 11:00:48 +00:00
angrywolf cd1889ce93 Changes of week 36 & 46 2006-11-19 08:32:21 +00:00
mark b58fb7e859 Changes of week 46: doc/unreal32docs.html 2006-11-18 15:09:19 +00:00
gsf 38607d32ce Week 46 2006-11-18 12:52:56 +00:00
stylus740 003de86893 Changes of week 46 in: doc/example.de.conf doc/help.de.conf doc/unreal32docs.de.html 2006-11-18 09:04:31 +00:00
bock f4b75de32e Changes of week 46: removed some typo. 2006-11-18 08:54:39 +00:00
autoupdate 3c60bf826d Automatic weekly version update: 200646 2006-11-13 05:00:04 +00:00
bock 0910bdfd81 Corrected doc about set::dns behavior and added set::pingpong-warning 2006-11-12 22:43:14 +00:00
Bram Matthys f3d578f2ec - 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).
2006-11-12 21:49:52 +00:00
Bram Matthys 34e54c958b - /INVITE's from people on the silence list are now (silently) ignored, suggested by
White_Magic (#0002478).
2006-11-12 20:27:22 +00:00
Bram Matthys ed9e2ccd64 - 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).
2006-11-12 19:38:17 +00:00
Bram Matthys f33a2c0d06 - Fixed 'SVSMOTD !' not deleting the services motd in memory, reported by avb (#0003110). 2006-11-12 18:58:18 +00:00
Bram Matthys c4adb49bbb extern int file_exists(char* file); 2006-11-11 20:34:10 +00:00
Bram Matthys 5c8e1da371 - loadmodule now reports proper errors when the actual file can't be found, instead of blaming
it on the temp file, reported in #3015.
(aquanight backport)
2006-11-11 20:33:41 +00:00
Bram Matthys 1d03d16fcb - Cutoff webtv whois at MAXTARGETS (#0003004). 2006-11-11 20:25:03 +00:00
Bram Matthys 0848c29f5e - Fixed set::allowed-nickchars causing a segfault for some unknown charsets, reported
by avb (#0003069).
(aquanight backport)
2006-11-11 20:15:42 +00:00
Bram Matthys 013c376c91 - 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.
2006-11-11 20:13:00 +00:00
autoupdate 313113cfbf Automatic weekly version update: 200645 2006-11-06 05:00:03 +00:00
Bram Matthys 0bc77f25f9 - Made win32 compile again, reported by Bock (#0003106). 2006-11-05 20:13:10 +00:00
Bram Matthys 3fa0b692ce #if defined(DEBUGMODE) && !defined(_WIN32) 2006-11-05 00:28:39 +00:00
Bram Matthys a7fbab3cb9 - Win32: Fixed a few compiler warnings, suggested by Zell (#0002890). 2006-11-05 00:21:12 +00:00
Bram Matthys 078e26b128 - 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).
2006-11-04 23:53:41 +00:00
Bram Matthys ab7c44f251 - 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).
2006-11-04 22:25:27 +00:00
Bram Matthys 45ec1c7c51 - Win32: we now no longer crash if no access to write to service.log, suggested and
patch by Xuefer (#0002886).
2006-11-04 21:40:57 +00:00
Bram Matthys fe77be7070 - Win32: SSL private key prompt should now no longer crash. Patch provided by Alexey
Markevich (#0002866).
2006-11-04 13:23:37 +00:00
Bram Matthys af598b644f - [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).
2006-11-04 00:10:53 +00:00
Bram Matthys 691a5ef783 - 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).
2006-11-03 23:32:24 +00:00
Bram Matthys 54c7b1f322 - Fixed m_names.so not being build (a problem for people not using commands.so),
reported by aegis (#0003085).
2006-11-03 22:40:30 +00:00
Bram Matthys f53a8e204d - Fixed deny link {} blocks being ignored by autoconnect. Reported by a couple people,
also see #0003084.
(backport from aquanight)
2006-11-03 20:36:27 +00:00
Bram Matthys 4ba5134d52 - Fixed SVSO - not removing coadmin (+C). Reported by Muisje (#0003077). 2006-11-03 20:33:56 +00:00
Bram Matthys 25684239fa - 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
2006-11-03 19:31:21 +00:00
Bram Matthys fc3f121cf7 - 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).
2006-11-03 19:23:30 +00:00
Bram Matthys 4b3d9c126e - Updated ukrainian-w1251 and belarussian-w1251 charsets: some characters were previously
included that shouldn't. Reported by avb (#0003102), patch supplied by Bock.
2006-11-03 13:41:09 +00:00
autoupdate 61ebb53352 Automatic weekly version update: 200644 2006-10-30 05:00:04 +00:00
Bram Matthys b31f629d43 Update... Linebreaks fixed and all. 2006-10-28 17:17:15 +00:00
Bram Matthys 7c3fb9ee6b - 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...
2006-10-28 14:10:31 +00:00
autoupdate 8c8938a88d Automatic weekly version update: 200643 2006-10-23 05:00:04 +00:00
autoupdate d4c9f5432a Automatic weekly version update: 200642 2006-10-16 05:00:05 +00:00
Bram Matthys 78ce3ffe4f updates.. ;p 2006-10-12 20:59:57 +00:00
Bram Matthys 57ec52f274 Updates 2006-10-10 12:18:59 +00:00
autoupdate 271a62162d Automatic weekly version update: 200641 2006-10-09 05:00:04 +00:00
autoupdate 765fc3bde1 Automatic weekly version update: 200640 2006-10-02 05:00:04 +00:00
Bram Matthys 9aed223b17 - Fixed zlib version check: 1.x is compatible with all 1.*, etc. (#0002966). 2006-09-28 20:43:52 +00:00
Bram Matthys 6ee4cf1ab5 credit.. Emre -> ironic ;P 2006-09-27 17:41:04 +00:00
Bram Matthys 38d5833c5b - Added doc/example.tr.conf (Turkish), translated by Emre. 2006-09-27 15:42:07 +00:00
Bram Matthys 1c1b90a801 - Added doc/help.tr.conf (Turkish), translated by Diablo. 2006-09-26 12:23:57 +00:00
autoupdate 9dc8f5fce1 Automatic weekly version update: 200639 2006-09-25 05:00:03 +00:00
Bram Matthys 1db0cc7dcd - Fixed cloak cutoff problem with long hosts. 2006-09-22 18:34:45 +00:00
Bram Matthys 262e2b2ca6 - 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.
2006-09-19 12:45:18 +00:00
autoupdate 4154d3ff5e Automatic weekly version update: 200638 2006-09-18 05:00:04 +00:00
Bram Matthys ac79932314 - Kick non-SSL users when the channel turns out to be +z during netmerge, reported by
Ron2K (#0002942).
(patch 90% by Trocotronic)
2006-09-15 12:29:01 +00:00
bock 45dd5b37f4 *Changes of week 36 2006-09-11 18:16:28 +00:00
autoupdate b30ff15c65 Automatic weekly version update: 200637 2006-09-11 05:00:05 +00:00
sinameki 6012a6e473 doc update of week 36 2006-09-10 20:19:59 +00:00
mark a138c0efb2 * Changes of week 36/06 2006-09-10 16:43:07 +00:00
trocotronic bffba7fc75 Cambios semana 36/06 2006-09-09 13:03:48 +00:00
stylus740 a3807a8d0a Changes of week 36 unreal32docs.de.html 2006-09-09 11:13:16 +00:00
babass 1adfad22f5 Ajout du support de FreeBSD 6.* 2006-09-08 15:46:45 +00:00
Bram Matthys 30dbdaa750 - 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.
2006-09-06 12:24:05 +00:00
autoupdate 40d234d182 Automatic weekly version update: 200636 2006-09-04 05:00:03 +00:00
Bram Matthys c81b7595ab - 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.
2006-09-03 20:50:12 +00:00
Bram Matthys 31aaee7652 - 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.
2006-08-29 13:22:58 +00:00
Bram Matthys 745dbfcfe0 - Module coders: Fixed CALLBACKTYPE_CLOAK_EX, it was not working properly at all. 2006-08-29 11:57:24 +00:00
autoupdate 198abda16c Automatic weekly version update: 200635 2006-08-28 05:00:04 +00:00
stylus740 4ae3b7071b doc/unreal32docs.de.html Changes of week 34 2006-08-26 08:27:05 +00:00
Bram Matthys 078915c8bd - Fixed some bugs in webtv code that could have caused trouble in the future (off by one),
reported by Ilja van Sprundel.
2006-08-23 11:15:23 +00:00
Bram Matthys 601eb71ba7 - Fixed SSL crash problem due to previous SSL change. 2006-08-23 10:43:02 +00:00
autoupdate 78d7291dcb Automatic weekly version update: 200634 2006-08-21 05:00:04 +00:00
Bram Matthys 1c993b2b24 - Fixed /SAJOIN able to join insecure users to +z channels, reported by phedny (#0002601). 2006-08-20 23:32:26 +00:00
Bram Matthys 38f4a154f3 - Small compile fix for above 2006-08-20 23:24:41 +00:00
Bram Matthys 05f5cfe02b - The server SSL certificate and private key can now be reloaded without requiring a server
restart, simply use: /REHASH -ssl
2006-08-20 23:05:55 +00:00
Bram Matthys c97cfd7a32 - 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.
2006-08-19 13:34:20 +00:00
autoupdate 30af83b7e3 Automatic weekly version update: 200633 2006-08-14 05:00:04 +00:00
autoupdate 06630b734d Automatic weekly version update: 200632 2006-08-07 05:00:04 +00:00
Bram Matthys c17fc7053d Mark 3.3* fork 2006-08-05 13:48:05 +00:00
Bram Matthys d57fda84df - 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).
2006-08-03 12:11:15 +00:00
Bram Matthys 9ea2326637 - Fixed operoverride message if oper is +h and -h's himself, reported by Bock (#2889). 2006-08-03 11:10:58 +00:00
Bram Matthys 4e26a3d494 - Fixed forgotten operoverride logmessage (kick if chan +Q), reported in #2889. 2006-08-03 10:51:05 +00:00
Bram Matthys 21eb4e5b5d - 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.
2006-08-03 10:44:55 +00:00
Bram Matthys f5b302c007 plok.. pre-commit. 2006-08-02 19:10:37 +00:00
Bram Matthys 9a804de95b Documented outdated for 69 days. Warning about document being out of date was sent 6 weeks ago. 2006-07-31 11:26:42 +00:00
autoupdate b2007fb08f Automatic weekly version update: 200631 2006-07-31 05:00:03 +00:00
gsf 85e36fda8d added OpenBSD 3.9 2006-07-28 09:50:14 +00:00
autoupdate 7ef365b991 Automatic weekly version update: 200630 2006-07-24 05:00:04 +00:00
Bram Matthys 78463e7d1d - Fixed tld::options:: not working properly, reported by DelGurth (#0003003). 2006-07-21 10:40:22 +00:00
sinameki 198e1c0dd1 doc update of week 27 2006-07-17 22:35:58 +00:00
autoupdate 909fda772b Automatic weekly version update: 200629 2006-07-17 05:00:03 +00:00
mark 18bbcb6dbe - Added a closing comment 2006-07-10 16:36:24 +00:00
autoupdate a4152ff15f Automatic weekly version update: 200628 2006-07-10 05:00:05 +00:00
babass 8eccfa7a33 Ajout du support de OpenBSD 3.9 2006-07-09 17:03:03 +00:00
mark f5a7d5e78b Changes week 27/06 2006-07-08 20:45:47 +00:00
stylus740 8e59f0c60e Changes of week 27: doc/example.de.conf doc/unreal32docs.de.html 2006-07-08 14:14:51 +00:00
angrywolf ed22d43bd2 Changes of week 27 2006-07-08 11:52:42 +00:00
trocotronic dbddfa8376 Cambios semana 27/06 2006-07-08 10:44:28 +00:00
bock 4e575921a1 changes of week 27 2006-07-08 10:28:17 +00:00
Bram Matthys e1dd8acd72 - 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).
2006-07-04 10:05:18 +00:00
Bram Matthys 32495af164 - Added OpenBSD 3.9 to the supported OS list. 2006-07-04 10:03:27 +00:00
autoupdate b171bb498f Automatic weekly version update: 200627 2006-07-03 05:00:03 +00:00
Bram Matthys 1827f1d59b - Added HOOKTYPE_SILENCED: this is called whenever a message did not get delivered to a user
because the user was on the silence list.
2006-06-27 12:47:53 +00:00
autoupdate 401a8f7f97 Automatic weekly version update: 200626 2006-06-26 05:00:04 +00:00
Bram Matthys 11e6da7c3d - 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)
2006-06-25 12:40:31 +00:00
mark 8953f00c1f -- Changed contact information (unreal32docs.nl.html) 2006-06-23 15:50:44 +00:00
mark 622dd2e02e Added end-comment on line 23, it wasn't there and giving errors 2006-06-22 13:42:42 +00:00
gsf ff8d65b110 Latest Update for 3.2.5 2006-06-21 21:46:42 +00:00
stylus740 c57310b809 corrected little mistake in doc/unreal32docs.de.html 2006-06-20 04:10:41 +00:00
babass 5f22c1acde Correction dans help.fr.conf 2006-06-19 17:26:44 +00:00
autoupdate 2c06dbc9d7 Automatic weekly version update: 200625 2006-06-19 05:00:05 +00:00
aquanight a8079fc9d0 Late commit on 2308. Ugh. 2006-06-18 21:55:20 +00:00
Bram Matthys e7595588d0 testest 2006-06-16 23:37:16 +00:00
Bram Matthys bf66d7d2df test2 2006-06-16 23:15:20 +00:00
Bram Matthys c42713b0de test ;p 2006-06-16 23:04:44 +00:00
Bram Matthys 2b3e89ab01 ** 3.2.5 release ** 2006-06-16 18:12:26 +00:00
Bram Matthys f7a0338e6c - Updated doc/technical/005.txt
- Mass version change
2006-06-15 19:20:39 +00:00
autoupdate 6c1273b311 Automatic weekly version update: 200624 2006-06-12 05:00:05 +00:00
stylus740 fd5d2342e0 unreal32docs.de.html : changes of week 23 2006-06-10 09:04:38 +00:00
angrywolf 21b8a31aec Use the right word for 'update'. 2006-06-08 16:25:22 +00:00
Bram Matthys 73ccaa0cf5 ** 3.2.5-rc3 release ** 2006-06-08 12:17:06 +00:00
Bram Matthys c0d8bf3330 then again, that didn't work 2006-06-08 11:10:28 +00:00
Bram Matthys 9d8854164f This is easier :P 2006-06-08 11:08:46 +00:00
Bram Matthys 4badd8fbd1 - On certain (newer?) FreeBSD's you get "make: Permission denied" after ./Config, but when
you do 'cd ..' and then 'cd -' again, make works just fine. This is going to be the most
  stupid workaround in history... Reported by vonitsanet and others (#0002926).
2006-06-08 10:56:42 +00:00
Bram Matthys c592701f91 - Disable /RESTART if running chrooted since that won't work anyway, reported by kayelem
(#0002956).
2006-06-07 11:31:52 +00:00
Bram Matthys 74c38ca2b5 - Made people with can_override able to change the topic again if not chanop and banned/+m-t,
reported by vonitsanet (#0002952).
2006-06-07 10:40:12 +00:00
Bram Matthys e70055008b reported -> reported and bugfix provided 2006-06-06 23:02:40 +00:00
Bram Matthys 7369f15b40 - Got rid of qline notice that could happen if using services holds (semi-race condition),
reported by tabrisnet (#0002950).
2006-06-06 22:57:07 +00:00
Bram Matthys 0a9cf5420e - Updated release notes, bleh.. I forgot :P 2006-06-06 19:30:06 +00:00
Bram Matthys bc90935c77 ** 3.2.5-rc2 release ** 2006-06-06 18:47:56 +00:00
Bram Matthys 5c53931125 - Removed PATCH5 from module version incompatibility system, so it can be used if we ever
need to update stuff and not enforce modules to recompile.. Might be useful one day ;p
- Updated list of donators
2006-06-06 18:41:56 +00:00
Bram Matthys d430eeb58e - Updated release notes a bit (will be updated more later): backrefs (\1) in regexes are
kinda scary, or at least at the moment.
2006-06-06 11:52:49 +00:00
Bram Matthys c65b46f966 - Fixed problem if c-ares library is already installed system-wide, reported by Trystan.
fix for fix
2006-06-05 23:16:34 +00:00
Bram Matthys d1b7ac4e40 - Fixed problem if c-ares library is already installed system-wide, reported by Trystan. 2006-06-05 23:10:01 +00:00
Bram Matthys 48c6df3558 - Fixed problem with IRCd using old link block settings if using a low connfreq, this made it
for example near-impossible to remove autoconnect for such a server. Reported by mixx941
  (#0002836).
2006-06-05 18:11:18 +00:00
Bram Matthys da44d389ab - Added translated Turkish docs (doc/unreal32docs.tk.html), translated by tt and Timaeus. 2006-06-05 12:59:42 +00:00
autoupdate 738cbdabc6 Automatic weekly version update: 200623 2006-06-05 05:00:04 +00:00
Bram Matthys 1d5742dbcf - Fixed compile (well, configure) problem on FreeBSD if compiling with remote includes
enabled. Reported by psadi (#0002941).
2006-06-03 21:52:59 +00:00
Bram Matthys f584c1f321 2>/dev/null plz 2006-06-03 21:43:52 +00:00
Bram Matthys 5a78c38632 try this ~ 2006-06-03 21:14:16 +00:00
stylus740 f49f6ed4dd unreal32docs.de.html - changes of week 22 2006-06-03 16:06:57 +00:00
Bram Matthys d6de099c2a commentaddedtoprevious: Saves some useless file reads. 2006-06-03 16:01:51 +00:00
Bram Matthys 72ce893ad4 - Made the resolver no longer check /etc/hosts, since that's how it used to be and should be.
and... config.h comment change..
2006-06-03 16:01:24 +00:00
Bram Matthys 329ce537ee it would help if I commit
- #undef STRIPBADWORDS did not work, reported by penna (#0002944).
2006-06-03 15:35:47 +00:00
Bram Matthys 429d6137e6 - #undef STRIPBADWORDS did not work, reported by penna (#0002944). 2006-06-03 15:15:32 +00:00
Bram Matthys abf11b8e66 - Made the "voice needed when channel is +m but -t" actually work, reported by Trystan and
Ron2K (#0002940).
2006-06-01 17:08:12 +00:00
Bram Matthys 41ac3a1907 - Deal with unsupported regexes added by remote servers (possible crash otherwise)
- Fixed crash problem on win32 if TKL times were <0. Obviously it's hard to protect from such
  invalid server traffic, but figured in this case it might be a good idea since *NIX does
  not crash.
- Made a note about possessive quantifiers, they are scary :P.
2006-05-31 23:42:18 +00:00
Bram Matthys b6baf5db33 - Added doc/example.ru.conf, translated by Bock. 2006-05-29 23:57:55 +00:00
angrywolf 91c49f0615 Changes of week 21 2006-05-29 12:43:45 +00:00
angrywolf 9d5b6e5a27 Changes of week 21 + grammar corrections 2006-05-29 12:38:34 +00:00
autoupdate 5d1487756f Automatic weekly version update: 200622 2006-05-29 05:00:04 +00:00
Bram Matthys 71dd4a775c ** 3.2.5-rc1 release ** 2006-05-28 20:57:36 +00:00
Bram Matthys d1626291ef - Win32 makefile/installer updates for new curl/ssl 2006-05-28 20:36:40 +00:00
Bram Matthys ad693eebcb - Fixed crash in /STATS Z (possibly rare), reported by yasinbey (#0002929). 2006-05-28 18:08:48 +00:00
stylus740 b78db0393e Changing of week21 and correcting some spelling mistakes doc/example.de.conf doc/unreal32docs.de.html 2006-05-28 07:52:43 +00:00
bock 6e256359c2 Changes of week 21: doc/unreal32docs.html
Äîáàâëåíà äîêóìåíòàöèÿ ïî "äåéñòâèòåëüíî ïñåâäîíèìàì" ("real alias").
Èñïðàâëåíû íåêîòîðûå íåòî÷íîñòè.
2006-05-27 15:00:25 +00:00
trocotronic 5d0d903809 Cambios semana 21/06 2006-05-27 12:06:13 +00:00
mark 94408ad5f3 -- Changes of week 21
-- Changed my contact information
2006-05-27 08:43:30 +00:00
babass e310ad6fc2 Ajout des 'vrais' alias 2006-05-25 13:19:33 +00:00
Bram Matthys 944f0880a7 - Updated release notes: more modulization and real command alias support.
+- 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.
2006-05-25 00:55:18 +00:00
aquanight f46486ebc4 Fix NETINFO parameters. 2006-05-23 18:22:19 +00:00
Bram Matthys 25f0f2a069 - Fixed win32 compile problem cause by timesynch. 2006-05-22 18:30:23 +00:00
Bram Matthys e03b664abf win32 fix attempt 2006-05-22 18:24:11 +00:00
Bram Matthys 6fc5cb169b - Fixed compilation error on FreeBSD and others caused by timesynch, reported by tigra
(#0002921).
2006-05-22 18:15:04 +00:00
Bram Matthys a5dd4e6b77 notexttosend->needmoreparam @ aliases
added glinebot example @ real command aliases / updated description...
- Added 'real' aliases, this are aliases that map to real commands, so you can for example
  map the command '/GLINEBOT <x>' to 'GLINE <x> 2d Bots are not allowed on this server, blabla'.
  See the documentation on the alias block for more information. doc/example.conf contains an
  example as well (search for "glinebot").
2006-05-22 14:01:46 +00:00
autoupdate 206a2c62d6 Automatic weekly version update: 200621 2006-05-22 05:00:04 +00:00
Bram Matthys fdb256ddcb NOTE: WIN32 DOES NOT COMPILE AT THE MOMENT 2006-05-21 23:32:57 +00:00
Bram Matthys 5757c1a50e +extern MODVAR char modebuf[BUFSIZE], parabuf[BUFSIZE]; 2006-05-21 23:26:12 +00:00
Bram Matthys fe4c8b4a83 - Added 'real' aliases, this are aliases that map to real commands, so you can for example
map the command '/BLAH 5' to 'NICK idiot5'. More info in docs on alias block.
- Modulized: badwords system (src/badwords.c is now gone) and StripColors/StripControlCodes
  to m_message, multiple netsynch routines to m_server, send_list to m_list, a certain mode
  routine to m_svsmode, all /MSG IRC.. webtv stuff to src/modules/webtv.c which is compiled
  with m_message.
  This means another ~1500 lines of code are now in modules (and thus can be upgraded on
  the fly), which brings the total of modulized lines at 32K.
2006-05-21 23:16:53 +00:00
bock a0fc4bb5e3 Óñòðàíåíû íåêîòîðûå íåòî÷íîñòè è îøèáêè (íàïðèìåð ïåðåõîäû íà #). 2006-05-21 16:49:25 +00:00
bock c69121e001 Íåáîëüøàÿ êîððåêöèÿ âèäà html, èñïðàâëåíèå îïå÷àòîê è îøèáîê, äîáàâëåíèå
äîêóìåíòàöèè ïî ñèíõðîíèçàöèè âðåìåíè è cgiirc.
2006-05-21 13:49:48 +00:00
Bram Matthys 0625c384a2 - Updated windows compile instructions again.
- Updated release notes
2006-05-21 13:44:11 +00:00
Bram Matthys 8004d10a65 - Fixed some compile warnings for Windows 2006-05-21 00:38:46 +00:00
Bram Matthys d4c9e0af27 - Added MINIMAL time synchronization support. This is enabled by default and will try to
synchronize the IRCd clock (TSOffset) with a few good time servers. It currently only does
  this on-boot, but it will hopefully help a lot of people with most of their time differences.
  I still keep recommending anyone who can to run proper time-synchronization software such as
  ntpd/ntpdate on their servers.
  To disable time synchronization (eg: because you are already running ntp), you can simply
  set set::timesynch::enabled to no.
  The boot timeout for the timeserver response (=causes boot delay) can be configured via
  set::timesynch::timeout and is set to 3 seconds by default (range is 1s-5s), there should
  be no reason to change this.
  The time server can be configured by setting set::timesynch::server, the default is to
  use 3 time servers on 3 continents (US, EU, AU) which should be sufficient for anyone but
  if you got a good one near you you can use that one instead.
  The time protocol we use is (S)NTP v4.
2006-05-21 00:35:45 +00:00
Bram Matthys 0b0c06fa14 - Fixed oper count bug which happened on /mode, this was our fault (can't blame services in
this case ;p). Reported by KnAseN and many others (#0002581).
  There might still be other operator count bugs, but these are triggered by a different bug
  and may or may not be caused by services.
2006-05-19 11:49:35 +00:00
Bram Matthys e7e32993af - Made empty command aliases work (no more "no text to send" error) if the alias finds it ok,
which basically means if it allows .*. If you want to require a parameter, use .+ (or
  anything other in regex that requires at least one character). Suggested and patch provided
  by Nazzy (#0002722).
2006-05-17 12:46:26 +00:00
Bram Matthys 9c71708529 - Allow *lining of literalident@* such as clones@* (but not *clones@*), this is also as
far as we want to go with regards to relaxing "too broad" checking... Just continue to use
  services AKILL for (other) "too broad cases", as many people (correctly) do. Change
  suggested by salama (#0002911).
2006-05-17 12:12:03 +00:00
Bram Matthys 1ed25f94a6 - Fixed implicit declaration compiler warning if compiling for ipv6.
- Fixed some small memory leak on rehash.
- Removed spamfilter-oversized-checking when trying to REMOVE one.. duh.. reported by satmd
  (#00029160).
2006-05-17 11:46:24 +00:00
trocotronic 479e06e01e Revisión 2006-05-15 19:37:17 +00:00
trocotronic a43388c2b6 Revisión 2006-05-15 19:31:40 +00:00
autoupdate 93ed724447 Automatic weekly version update: 200620 2006-05-15 05:00:03 +00:00
aquanight 154bbc0ca3 Just one of those days... 2006-05-13 21:41:42 +00:00
aquanight 1654ced15d Format error + forgot PONG token. D'oh. 2006-05-13 21:14:22 +00:00
aquanight 346b947794 You know, maybe I should update the Update Date? 2006-05-13 21:07:33 +00:00
aquanight a8d421d3cc Added PING and PONG. 2006-05-13 21:06:27 +00:00
autoupdate 1efd22d161 Automatic weekly version update: 200619 2006-05-08 05:00:03 +00:00
Bram Matthys 98cd2c254e - Added error checking to (main) setuid/setgid calls. 2006-05-05 23:02:11 +00:00
Bram Matthys 6b6933c1b9 - (multiple?) IPv6 listen blocks could cause a crash in config parser. Reported by Robby22
(#0002868).
2006-05-04 12:08:59 +00:00
autoupdate 6a2e196acf Automatic weekly version update: 200618 2006-05-01 05:00:04 +00:00
Bram Matthys 6a5677c335 unreal.exe -> debugging symbols 2006-04-29 19:43:43 +00:00
Bram Matthys e679a6760b win32 service bugfix 2006-04-29 19:41:18 +00:00
Bram Matthys abfdc9050d - set::ssl::egd does not require a parameter per-se (bug caused few days ago), reported
by Trocotronic (#0002899).
2006-04-29 16:51:38 +00:00
Bram Matthys bdf968e11a - Made it so me::numeric can be changed (when not linked to any servers) so no server restart
is needed anymore (#0002896).
2006-04-29 15:17:39 +00:00
Bram Matthys acbcd3cdd3 - Fixed bug with chinese-* charsets not getting detected properly by config parser.
Reported and patch provided by Xuefer (#0002891).
2006-04-29 14:58:38 +00:00
Bram Matthys 1c4b21e129 - Updated sendnotice() so it sends a proper notice if the user is in pre-connect stage. 2006-04-29 14:51:37 +00:00
Bram Matthys e265c08729 - Module coders: For cloaking, added a new callback type CALLBACKTYPE_CLOAK_EX (which replaces
CALLBACKTYPE_CLOAK). This passes 'aClient *sptr, char *host' instead of only 'char *host'
  to the cloaking module, which can be useful if you need to cloak on something other than
  IP/host. Suggested by fez (#0002275).
  Module may still provide only CALLBACKTYPE_CLOAK though, in fact this is what the official
  cloaking module does. So no updating of cloaking modules needed.
  A side-effect of this "extra cloaking" callback is that we needed to change make_virthost()
  which now has an extra parameter in front, and another side-effect is that calling the
  CALLBACKTYPE_CLOAK may not work since only *_EX might be available. To my knowledge there
  are very few modules (only 1 I know) that will have a problem due to this, so sounds like
  an affordable tradeoff.
2006-04-29 14:49:36 +00:00
Bram Matthys 40f1ad1cfe - Added compiler version checking to "module binary incompatability"-check. This should fix
some more odd problems from people (eg: people switching from GCC 3.x to 4.x and wondering
  why they are crashing or getting other errors).
** actually, this was already comitted, but forgot to commit Changes :p **
2006-04-29 14:36:58 +00:00
Bram Matthys 46a65d553d - Added compiler version checking to "module binary incompatability"-check. This should fix
some more odd problems from people (eg: people switching from GCC 3.x to 4.x and wondering
  why they are crashing or getting other errors).
2006-04-28 14:08:06 +00:00
Bram Matthys 72b530c149 - Fixed null pointer config parser crash, reported by alkalinex (#0002894). 2006-04-28 13:07:15 +00:00
Bram Matthys f0e14f7847 credit zell for vc2005 thing for his help... -> Also thanks to Zell for his help. 2006-04-25 02:10:22 +00:00
autoupdate de2e10619d Automatic weekly version update: 200617 2006-04-24 05:00:04 +00:00
Bram Matthys cf6da5b6d0 "DEBUGEXTRA=0" -> "#DEBUGEXTRA=1": No idea if it's needed, but it's better I guess... 2006-04-19 12:48:47 +00:00
Bram Matthys dabbe786be - Fixed Microsoft Visual Studio 2005 (8.x) unable to compile, and, after fixing that, causing
a lot of crashes. Both are now fixed. Reported by Zell, Yamake, and others (#2875, #2704).
  Fix provided by Xuefer. This also gets rid of some annoying and useless compile warnings
  as well.
2006-04-19 12:38:47 +00:00
aquanight 76350e1319 Fixed a wrong compile flag info. 2006-04-17 06:16:51 +00:00
aquanight 49ee17db5d Updated protocol information about the new PROTOCTL CLK. 2006-04-17 06:02:10 +00:00
autoupdate fc4d4b8ec5 Automatic weekly version update: 200616 2006-04-17 05:00:05 +00:00
Bram Matthys bfb9b91467 - Fixed set::maxdccallow setting to <=0 still allowing one entry to be set, reported by
RSCruiser (#0002883).
2006-04-16 23:58:01 +00:00
Bram Matthys 8607d950b7 - Made the IRCd calculate the cloaked host only once upon connect, and store (cache) it.
- When checking if a user is banned, we always check the cloakhost too. Previously we could
  not do this if the user had a /VHOST (=a minority of the cases, but still...). In short,
  this is some extra protection to combat ban evasion.
- Performance of is_banned() *slightly* improved (just 1-2 usec, but 7 usec if no bans).
- [Module coders] For extban routines, we now offer a routine extban_is_banned_helper(buf)
  which can be used instead of the ban_realhost/etc static chars stuff, see
  extban_modeq_is_banned for a (real-life) example of how this is used.
- [Services coders!] Added PROTOCTL CLK (requires NICKv2) which adds an extra field in the
  NICK command (when a user connects) right before the infofield (gecos).
  The added field contains the cloaked host, that is: the masked host if +x would have been
  set. This field is ALWAYS sent, regardless of whether the user is actually +x or not.
  Services can then store this field in memory, to know the host of the user if the user
  is set +x (+x-t). This is a (better) alternative to PROTOCTL VHP, with no race conditions,
  and avoids some other VHP problems.
  VHP will stay supported though... so it's not mandatory to switch over.
2006-04-16 23:27:56 +00:00
mark e636820eba Added CGI:IRC sections 2006-04-16 20:59:58 +00:00
Bram Matthys f69fd6bf11 win32 changes for this commit:
- c-ares (currently, a forked off version) enhancements:
  - '/quote dns i' now shows the nameserver settings (which is taken from /etc/resolv.conf
    on *NIX, and from the registry on Windows)
  - We no longer depend on a C++ compiler (was useless c-ares dependency caused by libtool)
  - '/REHASH -dns' now rereads the resolver data from resolv.conf/registry, no IRCd restart
    needed anymore. It's currently kinda experimental however, but I *think* it will work ok.
  Unfortunately the above features required some ugly hacks if curl was enabled, so if you
  use curl (Remote includes), feel free to test on your OS (Linux, but especially FreeBSD
  and the other *NIXes) to see if things still compile (make clean; ./Config && make).
2006-04-11 22:27:35 +00:00
Bram Matthys 8ff913a2db - c-ares (currently, a forked off version) enhancements:
- '/quote dns i' now shows the nameserver settings (which is taken from /etc/resolv.conf
    on *NIX, and from the registry on Windows)
  - We no longer depend on a C++ compiler (was useless c-ares dependency caused by libtool)
  - '/REHASH -dns' now rereads the resolver data from resolv.conf/registry, no IRCd restart
    needed anymore. It's currently kinda experimental however, but I *think* it will work ok.
  Unfortunately the above features required some ugly hacks if curl was enabled, so if you
  use curl (Remote includes), feel free to test on your OS (Linux, but especially FreeBSD
  and the other *NIXes) to see if things still compile (make clean; ./Config && make).
2006-04-11 22:00:01 +00:00
Bram Matthys 4826668565 - Made doc/compiling_win32.txt a bit more ugly (mention that only vstudio 7.x actually works
at this moment).
2006-04-10 18:31:15 +00:00
Bram Matthys 97eff14af2 - Made the windows installer better compress things (SolidCompression=true), suggested
by Trocotronic (#0002877).
2006-04-10 14:06:45 +00:00
autoupdate 37e52ffa2d Automatic weekly version update: 200615 2006-04-10 05:00:04 +00:00
Bram Matthys 4530ee5219 - Made it so if the channel is +m but -t, you need at least voice (+v) to change the topic.
Reported by aquanight (#0002233).
[commit accidently happened earlier btw...]
2006-04-09 20:17:25 +00:00
Bram Matthys e0b116a663 - Hide stats request if requested by an U-lined client. Suggested by vonitsanet (#0002865). 2006-04-09 19:34:36 +00:00
Bram Matthys 3c529c7ee1 - Fixed CHROOTDIR compilation problem, reported by toshio (#0002854).
- Improved CHROOTDIR documentation in include/config.h
- Added error if CHROOTDIR is defined but IRC_UID isn't (in include/config.h).
2006-04-09 19:28:30 +00:00
Bram Matthys 5f6f296cac - Removed some odd code causing a 'my port is' message to appear in (f.e.) syslog, reported
by rsc (#0002853).
2006-04-09 18:40:42 +00:00
Bram Matthys eee6d3c8d1 - Local opers may now use /TRACE (local only), suggested by GSF19 (#0002365). 2006-04-09 18:37:38 +00:00
Bram Matthys ae03d2e4e8 - Added chained SSL certificates support, patch provided by justdave (#0002848). 2006-04-09 16:51:04 +00:00
Bram Matthys e88ee5180b tyoos 2006-04-04 19:54:26 +00:00
Bram Matthys a95f26b1c9 - Added minidump support for crashes to aid debugging a bit. 2006-04-04 19:46:22 +00:00
autoupdate d3fc59b08e Automatic weekly version update: 200614 2006-04-03 05:00:04 +00:00
Bram Matthys 6b982f7aae - Fixed (unimportant) DNS resolver problem if using some LAN domains with digits at end,
reported by Bock (#0002843).
2006-04-02 20:13:23 +00:00
Bram Matthys 17b201793c - Changed default PREFIX_AQ behavior to ON instead of OFF. Since basically all major IRC
clients support it now (mIRC, xchat, epic, eggdrop, Klient, PJIRC, irssi, CGI:IRC, etc).
  It has always been weird that win32 had it ON by default and *NIX OFF, anyway.
  Naturally this change will be mentioned clearly in next release notes.
2006-03-30 23:11:08 +00:00
autoupdate 82a65df46c Automatic weekly version update: 200613 2006-03-27 05:00:04 +00:00
mark 2cdfbe6530 - Added doc/example.nl.conf 2006-03-25 13:38:32 +00:00
bock 5f6e18d6a7 Changes since release 3.2.4 2006-03-21 14:46:32 +00:00
autoupdate f87bee6382 Automatic weekly version update: 200612 2006-03-20 05:00:04 +00:00
stylus740 0fc6e26be4 doc/example.de.conf doc/unreal32docs.de.html
Changes of week 11
2006-03-19 19:42:52 +00:00
mark a62cb8de7a Updated to 1.1.2.144.2.101 2006-03-19 11:27:48 +00:00
angrywolf 8c59e918b7 Changes of week 11 (+ grammar corrections) 2006-03-18 20:21:37 +00:00
Bram Matthys 2134f91309 updated credits (requested by Bock) 2006-03-18 19:25:54 +00:00
angrywolf 6c1df13565 Changes of week 11 2006-03-18 18:09:58 +00:00
trocotronic 66a4fb57d4 Cambios semana 11, 2006 2006-03-18 10:40:38 +00:00
babass 424520d2cf Réécriture de certains passages de example.fr.conf et unrealdocs.fr 2006-03-15 19:50:05 +00:00
Bram Matthys 54c2296dae - CGI:IRC: gzlines, zlines, throttling, and unknown connect floods are now all checked for
clients connecting trough a CGI:IRC gateway that is in cgiirc { }. This might also fix a bug
  where (g)zlines were not applied to CGI:IRC clients, reported by devil (#0002850).
2006-03-14 19:47:08 +00:00
autoupdate edaec98025 Automatic weekly version update: 200611 2006-03-13 05:00:03 +00:00
Bram Matthys 898ff7855d - Partially redid m_message, moved some stuff to a subroutine, etc to avoid duplicate code
- Rephrased/editted part of example.conf and unreal32docs to make it a littttttle bit easier
  for beginners / try to mention the FAQ a bit more explicitly.
2006-03-12 20:56:09 +00:00
autoupdate 9db31d4032 Automatic weekly version update: 200610 2006-03-06 05:00:03 +00:00
Bram Matthys 996381ec47 - Fixed possible netsplit problem (#0002790). 2006-03-05 23:35:48 +00:00
autoupdate 161624723c Automatic weekly version update: 200609 2006-02-27 05:00:04 +00:00
Bram Matthys 3109c877aa - Actually committed src/modules/m_names.c... This tends to help with the compiling process. 2006-02-26 13:29:21 +00:00
Bram Matthys bc0465ebfe - Updated win32 makefile due to m_names modulization, reported by Trocotronic (#0002838). 2006-02-26 13:15:22 +00:00
Bram Matthys 69dc0cfe91 changelog comment.. mirc 5.17 -> 6.17 2006-02-26 13:11:41 +00:00
Bram Matthys fd5c1f778f - Fixed bug in currently unused code, reported by DeadNotBuried (#0002835).
- Modulized NAMES command (can now be upgraded on the fly, if ever needed).
- Added NAMESX support, seeing both mIRC (5.17) and XChat support this. What this does is
  send all rights of all users on the channel in the NAMES reply (eg: @+Syzop if the user is +ov)
  instead of only the highest one (@Syzop in previous example). We only do so if the client
  explicitly requested this via a NAMESX in a PROTOCTL message (eg: 'PROTOCTL NAMESX').
  Note that there is a glitch: since most clients only send the PROTOCTL NAMESX after they
  see NAMESX listed in the 005 announce message this has the effect that if there are
  set::auto-join channels present (where users are automatically joined to by the server) the
  extended NAMES reply will not be sent for those channels, because from the IRC server' point
  of view the join happened before the PROTOCTL and hence it does not know the client wanted
  NAMESX at that point (the result is not catastrophic: the old-style NAMES is sent for those
  channels). Anyway, for all non-autojoin channels this works great. So still worth adding IMO.
  Originally suggested in #0000606.
  Side note: this does not mean we dropped the idea of (also) having a challenge-response
  system for good ;).
2006-02-26 01:06:10 +00:00
stylus740 404a5df740 Changes of week08: doc/unreal32docs.de.html 2006-02-25 08:41:20 +00:00
babass 7a7c5bebaa Refonte totale du support CGI:IRC 2006-02-21 19:17:59 +00:00
autoupdate a52dd18f85 Automatic weekly version update: 200608 2006-02-20 05:00:05 +00:00
angrywolf ae29de76d4 *** empty log message *** 2006-02-19 15:52:43 +00:00
angrywolf bd7520b12d Corrected the translation of the word 'feature', as it was pointed out in a radio show (http://www.modemidok.hu/mohh_3-20_050925.shtml, 2005-09-15) that 'featúra' is a weird, slangy and therefore wrong expression for that hard-to-translate word. 2006-02-19 15:31:31 +00:00
angrywolf 65383f4355 Changes of week 07 2006-02-19 12:55:00 +00:00
trocotronic 7ecabaeae3 Cambios semana 07, 2006 2006-02-18 19:38:30 +00:00
Bram Matthys 5d2dc222f2 BLAH! EHM I REMOVED SOMETHING !!1111 OK!!!? 2006-02-18 13:06:23 +00:00
trocotronic bdc18debdc Cambios semana 07, 2006 2006-02-18 12:51:22 +00:00
stylus740 67ea00419a unreal32docs.de.html - Changes of week 07 2006-02-18 10:13:45 +00:00
Bram Matthys d3fc895063 - Fixed (serious) bug in CGI:IRC code, IP's were often not right, reported by 3rror (#2824). 2006-02-16 20:34:09 +00:00
Bram Matthys aca2a5061d - Added error message if c-ares failed to initialize, might help in case something is buggy
(either with Unreal or the OS/environment).
2006-02-16 17:18:00 +00:00
Bram Matthys 6267898f3e REFIX 2006-02-16 16:33:16 +00:00
Bram Matthys 6623b10a16 socket.h? 2006-02-16 16:30:22 +00:00
Bram Matthys 3e0b0f2e18 - Fixed *BSD compile problem caused by changes of above, reported by 3rror (#0002823). <-- credit 2006-02-16 16:26:11 +00:00
Bram Matthys 13f99d6bc1 inet.h! 2006-02-16 16:24:50 +00:00
Bram Matthys ca069a7c88 'usually cgiirc.conf' -> 'cgiirc.conf' 2006-02-16 15:43:34 +00:00
Bram Matthys 07ccc74036 - Redid whole CGI:IRC support. Configuration is now moved to cgiirc { } blocks.
We now support the webirc ('webirc_password' in CGI:IRC) method, which is kinda superior
  to the older method ('realhost_as_password').
  See the Unreal documentation (section '4.36 - Cgiirc Block') for details on how to configure.
- Changed quoting color in unreal32docs.. looks better now IMO (only English docs updated).
2006-02-16 15:32:16 +00:00
Bram Matthys 3d3c59be40 - Fixed win32 compile problem due to CGI:IRC support, reported by therock247uk (#0002821). <-- changelog edit only 2006-02-15 11:29:08 +00:00
Bram Matthys 22921c1b1f - Fixed win32 compile problem due to CGI:IRC support (?) 2006-02-15 11:26:47 +00:00
Bram Matthys b6c75bf985 rephrased CGI:IRC talk 2006-02-14 17:02:47 +00:00
Bram Matthys a47df87139 slightly rephrased CGI:IRC host spoofing explanation 2006-02-14 17:00:16 +00:00
Bram Matthys 99b6f2ea38 - Added CGI:IRC host spoofing support. This means you can mark specific CGI:IRC gateways as
"trusted" and the IRCd will show the users' _real_ host/ip everywhere on IRC, instead of the
  _CGI:IRC-gateway_ host/ip.
  To do so you must set 'realhost_as_password' to 1 in your cgiirc.conf. And add the
  CGI:IRC gateway(s) you fully trust to set::cgiirc::hosts.
2006-02-14 16:58:43 +00:00
Bram Matthys 612c52c7a3 win32compile w/free --> mention it's untested. 2006-02-14 12:39:39 +00:00
Bram Matthys c8bc986778 - Updated win32 compiling instructions; mention the free MS stuff that can be used to compile
UnrealIRCd.
2006-02-14 12:38:51 +00:00
Bram Matthys 5f8bf556e1 - When set::options-show-connect-notice was enabled the "*** Looking up your hostname..."
message was not being shown (all others were). Reported by fbi (#0002820).
2006-02-14 12:36:21 +00:00
Bram Matthys 41bdfc3b29 - When set::options-show-connect-notice was enabled the "*** Looking up your hostname..."
message was not being shown (all others were). Reported by fbi (#0002820).
2006-02-14 12:19:18 +00:00
autoupdate e65c17e2e1 Automatic weekly version update: 200607 2006-02-13 05:00:03 +00:00
stylus740 8bdd8cb5a5 unreal32docs.de.html Changes of week06 2006-02-11 14:11:22 +00:00
Bram Matthys 2487621092 - Updated autoconf/configure.in again (does not produce different ./configure output) 2006-02-07 13:02:14 +00:00
Bram Matthys 545d087a99 - Updated autoconf/configure.in to make newer autoconf's work (developers only), reported
and patch provided by Xuefer (#0002798). Also rebuilt ./configure from configure.in with
  autoconf 2.59 from my own machine.
2006-02-06 19:35:38 +00:00
autoupdate 9422a9ffd1 Automatic weekly version update: 200606 2006-02-06 05:00:04 +00:00
Bram Matthys decce0d11f clarifications regarding fixed version 2006-02-05 17:43:19 +00:00
Bram Matthys 050846cd02 - Added unreal32docs.ru.html, translated by Bock. 2006-02-05 17:32:58 +00:00
Bram Matthys fa9cf506e7 - The '?' wildcard was completely broken in 3.2.4, reported by tabrisnet (#0002797). 2006-02-05 17:20:36 +00:00
Bram Matthys 5dcddc4404 - Updated example.bg.conf, the one shipped with 3.2.4 had several errors. 2006-02-04 21:17:36 +00:00
Bram Matthys d223da8a26 - Fixed amd64 problem regarding /*LINE always saying 'The time you specified is out of range',
reported and test shell provided by Tauop.
2006-02-04 20:30:02 +00:00
Bram Matthys 356c492c49 ** 3.2.4 release ** 2006-02-03 13:42:55 +00:00
Bram Matthys 8364783817 clarified some release notes text 2006-01-30 23:28:39 +00:00
Bram Matthys 43749211fe ** public 3.2.4-rc3 release ** 2006-01-30 21:52:33 +00:00
Bram Matthys dc19350c70 - Redid glob matching. Escaping is now ripped out for normal bans (as it should be), this
means no longer weird issues with +b *\* etc not banning nicks with \ in it.
  ExtBan ~c/~r get special treatment and will use our match_esc [match with escaping]
  routine, that way you can ban channels such as "#f*ck" via "+b ~c:#f\*ck".
  Fix triggered by bugreport of vonitsanet (#0002782).
2006-01-30 20:14:39 +00:00
autoupdate f21bbdadf5 Automatic weekly version update: 200605 2006-01-30 05:00:04 +00:00
aquanight 731b77f206 Minor formatting "whoops". 2006-01-28 21:54:18 +00:00
aquanight bd6979e842 More #2778 fun ;p . 2006-01-28 21:49:42 +00:00
aquanight a50455c225 Knew I forgot something... fixed JOIN 0 bit now. 2006-01-28 19:49:05 +00:00
aquanight 4b2da6f3d0 Base64 info added. 2006-01-28 19:31:18 +00:00
aquanight ca7f59a473 Most of #2778 (will do b64 table later :P) 2006-01-28 17:11:33 +00:00
stylus740 5298931dd8 Changes of week 04 in unreal32docs.de.html 2006-01-28 08:49:00 +00:00
Bram Matthys 08fbbff0f6 updated contact info 2006-01-27 22:00:35 +00:00
Bram Matthys 8a0ebfdab7 - Added unreal32docs.nl.html, translated/maintained by Mark. 2006-01-27 21:07:55 +00:00
Bram Matthys 0d05df5237 changelog-only text change:
- Updated help.ru.conf (corrections by CS-Help / Bock)
- Updated example.bg.conf (by Peace)
2006-01-27 15:47:48 +00:00
Bram Matthys 762e6c7050 changelog-only textfix 2006-01-27 15:46:18 +00:00
Bram Matthys f8194daa68 - Updated help.ru.conf (corrections by CS-Help) and example.bg.conf (by Peace) 2006-01-27 15:42:58 +00:00
Bram Matthys b30301ecfe - Sometimes if an oper was connected trough SSL and had the junk snomask (+s +j) set it
would cause a crash. Reported by chasingsol (#0002777).
2006-01-27 15:25:31 +00:00
cvs2hg dbd9932635 fixup commit for tag 'unreal3_2_4rc2' 2006-01-26 15:22:47 +00:00
Bram Matthys 6c8c7f36a3 - Fixed localhost crash (if no dns record for 127.0.0.1), reported by Trocotronic (#2773). 2006-01-26 15:22:46 +00:00
angrywolf f6ae3f8844 Changes of week 03 2006-01-26 15:03:18 +00:00
Bram Matthys 8dac61a435 ** public 3.2.4-rc2 release ** 2006-01-26 14:57:24 +00:00
Bram Matthys 6e70facb1e - Fixed(?) bug due to match() rewrite: we now use our old rules with escaping again, due to
the switchover we were accidently using different ones which caused funny kill messages
  like "You were killed by a.b.c (a!a.b.c (SOMENICK[N\A](?) <- d.e.f))." This also broke
  some bans in pre2/rc1. Bug reported by HERZ (#0002772).
2006-01-26 14:02:21 +00:00
Bram Matthys 35ce9949d9 added release candidate header to release notes 2006-01-25 20:40:41 +00:00
Bram Matthys 8b42fad320 ** public 3.2.4-rc1 release ** 2006-01-25 20:25:37 +00:00
Bram Matthys 242f66ed6c +- For users using remote includes w/ssl (https, ftps): the CA certificates are now stored
+  in curl-ca-bundle.crt (shipped with Unreal) which contains most major CA's plus CACert.
2006-01-25 16:26:26 +00:00
Bram Matthys 88da136dda copy curl-ca-bundle.crt 2006-01-25 15:10:50 +00:00
Bram Matthys c916651eb4 - Curl users using https/ftps/etc: UnrealIRCd now ships with a 'curl-ca-bundle.crt' which
contains the (root) certificates of most major Certificate Authorities. It is basically
  the default curl ca-bundle.crt plus cacert's certificates.
  The 'curl-ca-bundle.crt' will be copied to the installation dir if needed.
  It will from now on be used by Unreal for all remote includes (curl) related certificates.
  If you want to use https but don't want to buy a certificate, we suggest you to apply for
  a free certificate at CACert (www.CACert.org). Or, alternatively, add your own certificate
  (PEM encoded) to curl-ca-bundle.crt, see 'SSLCERTS' in the curl package for more info.
2006-01-25 15:08:55 +00:00
Bram Matthys 326a981c0a added... 2006-01-25 13:21:39 +00:00
Bram Matthys 6990888040 curl-ca-bundle.crt 2006-01-25 13:19:23 +00:00
Bram Matthys 4efd5e60f6 curl-ca-bundle.crt stuff 2006-01-25 13:17:14 +00:00
Bram Matthys 3c0309a98d Nazzy = supporter 2006-01-24 16:48:31 +00:00
Bram Matthys 93cb84f67c - Fixed SVS2SNO not always notifying the user of the snomask change, reported by decoder
(#0002767).
2006-01-24 13:29:13 +00:00
aquanight 1113088f1a More 3.2.3 -> 3.2.4 updates 2006-01-24 01:46:02 +00:00
Bram Matthys 1d70016ef8 - Made it so a set::maxbanlength and/or set::maxbans of 0 denies all bans properly, and
fixes the first-ban-can-be-as-long-as-you-want bug, both reported by Trocotronic (#2762).
2006-01-24 00:41:08 +00:00
Bram Matthys ea02baae7b Creditted Voodoohosting 2006-01-24 00:18:02 +00:00
Bram Matthys ddd6b8876f ** internal 3.2.4-pre2 release ** 2006-01-23 23:32:23 +00:00
Bram Matthys a73a12c898 - Removed some old config.h stuff + clarified some text, reported by Jason (#2765, #2766). 2006-01-23 23:20:19 +00:00
Bram Matthys 02227c7696 some changes/release notes text updates 2006-01-23 23:18:46 +00:00
Bram Matthys 5f272b56e7 - Switched over to an older match() routine based on hybrid, this one is a bit less optimized
but is actually understandable and has less bugs. This fixes +b ~c:#c\*t not properly
  matching #c*t, reported by Jason (#0002752). Initial results look good, but this needs
  some good testing ;).
2006-01-23 22:05:50 +00:00
Bram Matthys 950ba7c702 - Made set::maxbanlength also count the "to be set" ban in, otherwise you could exceed the
limit by (max) NICKLEN+USERNAME+HOSTNAME+2, reported by Trocotronic (#0002762).
2006-01-23 20:42:07 +00:00
Bram Matthys b38f4fce10 - set::maxbans / set::maxbanlength were reported as duplicates when they were not, reported
by Jason and trystanscott (#0002753).
- Made it so bans on normal users work with +mu, reported by Nazzy (?).
2006-01-23 20:32:30 +00:00
babass 4bf143993b Préparation pour la version pre-1 2006-01-23 20:27:57 +00:00
autoupdate 00933ef23b Automatic weekly version update: 200604 2006-01-23 05:00:03 +00:00
trocotronic 58872ce250 Cambios semana 03, 2006 2006-01-22 14:52:25 +00:00
aquanight e382a3ac95 3.2.3 -> 3.2.4 2006-01-21 17:01:34 +00:00
stylus740 7e2eb48cea unreal32docs.de.html - Changes of week 03 2006-01-21 09:12:24 +00:00
cvs2hg b0e527ec87 fixup commit for tag 'unreal3_2_4pre1' 2006-01-20 16:28:15 +00:00
Bram Matthys 6feeafa7bc bleh.. version -> pre1 2006-01-20 16:28:14 +00:00
Bram Matthys 66686bd310 ** internal 3.2.4-pre1 release ** 2006-01-20 16:09:18 +00:00
Bram Matthys a38b5ad538 updated... for help.ru.conf 2006-01-20 16:08:46 +00:00
Bram Matthys ea1ecd25ab - Added doc/help.ru.conf, translated by Slyder. 2006-01-20 14:49:52 +00:00
gsf 6499bc6a29 Latest Update 2006-01-20 12:14:38 +00:00
Bram Matthys 379fc66e8b bleh.. changes typo 2006-01-19 21:48:17 +00:00
Bram Matthys 9109d9a8a3 - Update wircd.def (for developers). 2006-01-19 21:47:31 +00:00
Bram Matthys 6f7cc9ba88 - Updated makefile.win32: apparently libcurl.dll is now libcurl_imp.dll (import library)
- Updated unrealinst.iss: made it easier for me to have 2 curl versions, this is so we can
  ship the SSL version of unreal with a curl that supports SSL (https, etc).
- Preperations for pre-1 (version change, etc)
2006-01-19 21:38:11 +00:00
Bram Matthys 53741c5c48 - Updated /CREDITS (forums/mainsite hosting and update of current active supporters). 2006-01-19 00:34:28 +00:00
Bram Matthys 383c2ef7c0 - Removed small comment from docs, which no longer applies (sorry translators ;p). 2006-01-17 22:06:29 +00:00
aquanight 8c8d89a763 Added a little blurb for SVSNICK. 2006-01-17 22:03:48 +00:00
Bram Matthys 055ab13080 - Nick Character System: Silently not advertising danish if using latin1, circumventing link
problems if using latin1.
2006-01-17 22:03:29 +00:00
angrywolf ee918eb576 Changes of week 01 & 02 2006-01-17 03:06:38 +00:00
Bram Matthys 443e9cdcd6 - Empty (but existing) include files no longer cause an error. Reported by w00t (#0002460). 2006-01-16 22:13:13 +00:00
babass deafe60ff4 Ajout du "Nombre de bans maximum" par salon 2006-01-16 22:06:44 +00:00
babass 0ab55be3d0 Nickchar update 2006-01-16 21:48:09 +00:00
Bram Matthys 1b690bb64a changelog text only edit...
- Changed the default maxbanlength from 1K to 2K, which means people can set more bans because
  in pracitce the 60 (maxbans) limit was never met because the maxbanlimit was set so low.
2006-01-16 21:32:24 +00:00
Bram Matthys ceb75b7a7a - Made the "max bans per channel" setting dynamic. This can be changed by setting
set::maxbans in the configfile, note that you probably also want to enlarge set::maxbanlength
  as well (see docs) or else you will hit that limit first.
- Changed the default maxbanlength from 1K to 2K, which in practice will mean people can set
  a lot more bans since in practice the 60 (maxbans) limit was never met because the
  maxbanlimit was set so low.
2006-01-16 21:30:07 +00:00
Bram Matthys c9648673fd - Made it so banned users cannot change the topic, suggested by aquanight and Stealth (#2233). 2006-01-16 21:11:48 +00:00
Bram Matthys 979eacdaf5 - Fixed complex command aliases not working properly, patch from Nazzy (#2722). 2006-01-16 20:53:03 +00:00
Bram Matthys 44375e1dd5 - Little /STATS v tweak: should display 'v' in output, not 'V'. Reported by Robby22 (#2700). 2006-01-16 20:46:48 +00:00
Bram Matthys be917865c3 - If you now use /(G)ZLINE usermask@something instead of /(G)ZLINE *@something you get
an error, since specifying usermask should not be done and is useless, since a (G)ZLINE
  takes place BEFORE ident lookups.
- Did the same for /(G)ZLINE *@hostmask (should be *@ipmask), this already was a warning
  in 3.2.3, and is an error now in 3.2.4.
2006-01-16 20:32:38 +00:00
Bram Matthys f24d4495a2 - Fixed (well, workaround) win32 /RESTART bug that caused it to popup a window instead
of actually restarting the server properly (#0002734).
2006-01-16 19:30:27 +00:00
autoupdate d7969a5272 Automatic weekly version update: 200603 2006-01-16 05:00:04 +00:00
codemastr 34f6b6b058 Updated the list of donators. 2006-01-15 18:33:38 +00:00
Bram Matthys 1c7c7573be - Fixed some more memleaks, thanks to valgrind. 2006-01-15 14:42:16 +00:00
trocotronic bb7f0d9261 cambios semana 2/06 2006-01-14 13:21:37 +00:00
Bram Matthys bc6445b8ad - Crashbug fix for above 2006-01-14 12:39:25 +00:00
stylus740 7eb7de369e Changes of week 02: unreal32docs.de.html 2006-01-14 09:50:39 +00:00
Bram Matthys 4d47acdbfd - Made the charsys mismatch during linking a warning instead of an error (temp. fix,
until a good solution is implemented without false positives).
2006-01-14 00:16:40 +00:00
Bram Matthys ec754b69c1 - Added new charsys languages: belarussian-w1251 and ukrainian-w1251. Patch provided
by Bock (#0002724).
- Fixed memory leak in new resolver.
[ATTEMPT II]
2006-01-14 00:02:02 +00:00
Bram Matthys f56080324a - Added new charsys languages: belarussian-w1251 and ukrainian-w1251. Patch provided
by Bock (#0002724).
- Fixed memory leak in new resolver.
2006-01-14 00:01:42 +00:00
autoupdate 1393a4c509 Automatic weekly version update: 200602 2006-01-09 05:00:04 +00:00
Bram Matthys db1f1aa3f8 - Fixed bug in chinese-* charset implementation that would cause crashes, reported
and patch supplied by Xuefer (#0002744).
2006-01-07 14:01:13 +00:00
Bram Matthys acad82bd3d - Fixed invalid servername in quarantine kill, reported by pinstrate (#0002743). 2006-01-07 12:41:50 +00:00
stylus740 d3b4892bb8 unreal32docs.de.html changes of week 01 2006-01-07 09:41:33 +00:00
babass 97f46cef5c Modification du principe de quarantaine 2006-01-06 22:32:22 +00:00
Bram Matthys 356f52c0f7 slight ./Config text change regarding prefixes 2006-01-06 21:57:48 +00:00
Bram Matthys 364bf0f605 - Fixes for an amd64 crash problem, reported by Peter Laur (OpenBSD.se).
- Redid some net synching code to make it more efficient (#2716).
- Fixed spamfilter crash problem: the action 'viruschan' is now no longer incompatible
  with target 'user'. Reported by Monk (#0002570).
2006-01-06 19:53:41 +00:00
aquanight 4f4fdccf3b Added table of contents. Fixed a few typos. 2006-01-06 19:27:09 +00:00
Bram Matthys 38692b1b4b - Made the link::options::quarantine actually do something... People that get global
oper privileges on quarantined servers will be instantly killed. Bit ugly perhaps, but
  then it actually does what it should (prevent opers on quarantine from getting GLOBAL
  oper privileges). This "fixes" #2510, #2163 and #1968.
[forgot docs commit]
2006-01-04 00:14:30 +00:00
Bram Matthys 054160a74a - Made the link::options::quarantine actually do something... People that get global
oper privileges on quarantined servers will be instantly killed. Bit ugly perhaps, but
  then it actually does what it should (prevent opers on quarantine from getting GLOBAL
  oper privileges). This "fixes" #2510, #2163 and #1968.
2006-01-02 19:44:33 +00:00
autoupdate d7865be511 Automatic weekly version update: 200601 2006-01-02 05:00:03 +00:00
autoupdate ad2b35ac0f Automatic weekly version update: 200552 2005-12-26 05:00:04 +00:00
autoupdate 30f6fc4cb3 Automatic weekly version update: 200550 2005-12-19 00:00:03 +00:00
babass 5d4c820ce3 Changements de la semaine 49 2005-12-13 19:50:32 +00:00
angrywolf 3f01c4d60c Minor fix to previous change 2005-12-13 07:36:57 +00:00
angrywolf 03d541bc7f Doc update (week 49) 2005-12-13 07:31:41 +00:00
autoupdate 3e6ca38667 Automatic weekly version update: 200549 2005-12-12 00:00:04 +00:00
stylus740 30eb0d1460 Changes of week 49 in: doc/unreal32docs.de.html 2005-12-11 08:01:46 +00:00
trocotronic 4cd3df56c0 Cambios semana 49 2005-12-10 12:55:49 +00:00
Bram Matthys 1ee84a198a - Made the "strict aliasing"-warning-disabler use $CC instead of gcc.
- Made ./Config better react to errors (no longer print a "everything is a big success"
  kind of message when in fact everything went wrong).
- Made ./Config (configure) exit on openssl or zlib not found errors, instead of
  silently continueing and then causing trouble later on. Also now printing _a bit_
  more helpful error message.
2005-12-09 21:15:57 +00:00
Bram Matthys fb5c4c7214 let's try this... exiting on zlib/ssl not found error. 2005-12-09 20:29:14 +00:00
Bram Matthys b930f9a2fc - Added option to apply spamfilters to aliases as well (such as /MS, etc). To do so,
you have to put 'spamfilter yes;' in every alias block you want to get filtered.
  This is so you can have for example /MS filtered (due to heavy spam), while keeping
  /NS and /CS unfiltered. Reported by Homer (#0002496).
- The memoserv aliases (/MS and /MEMOSERV) now have spamfiltering enabled by default.
2005-12-09 20:21:37 +00:00
Bram Matthys 704918754c - Reverting "Changed the way we build most of the .so's" feature, this caused m_*.so
to be build incorrectly. So now back at normal compile speed :p.
2005-12-08 23:42:35 +00:00
autoupdate a456bccf38 Automatic weekly version update: 200548 2005-12-05 00:00:03 +00:00
angrywolf 38abf2ef7f Doc update (week 46) 2005-11-23 05:54:04 +00:00
Bram Matthys 893ecd68e9 - [CVS Only] Refixed name<->ip mapping check in new resolver, reported by Darko. 2005-11-22 19:48:47 +00:00
autoupdate b70036ed0f Automatic weekly version update: 200547 2005-11-21 00:00:03 +00:00
trocotronic 8b06a451dd Cambios semana 46 2005-11-19 12:15:56 +00:00
stylus740 a7c177bbe3 Changes of week46 doc/unreal32docs.de.html 2005-11-19 09:23:08 +00:00
Bram Matthys 91ada621e6 - Added proper "not enough parameters" message for /SETNAME and cleaned up some whitespace
in the function, reported by Robby22 (#0002696).
- Fixed set::static-part set to 'no' not working properly. Reported by Robby22 (#0002698).
- Fixed crash in new resolver, reported by firstof9.
2005-11-16 23:58:02 +00:00
babass 9d6801b271 cvs:
Il est maintenant impossible de changer son pseudo pour un pseudo banni
2005-11-16 19:19:09 +00:00
Bram Matthys 7bda74183a - Fixed serious flood of notices to opers if link::options::dnscache was present.
Reported by firstof9.
2005-11-15 22:08:31 +00:00
angrywolf 27a993751a Doc update (week 45) 2005-11-15 20:59:44 +00:00
babass 5f34265ded Il est maintenant impossible de changer son pseudo pour un pseudo banni 2005-11-15 20:41:20 +00:00
autoupdate b7a7d63223 Automatic weekly version update: 200546 2005-11-14 00:00:04 +00:00
Bram Matthys 675ef5b54d - Made it so coadmins can use /ADCHAT (makes sense, since they already *received*
adchats). Reported by RandomNumber (#0002557).
2005-11-13 00:19:28 +00:00
trocotronic b5a8e0245f cambios semana 45 2005-11-12 11:12:35 +00:00
stylus740 fa49ef8cfa Changes of week 45 unreal32docs.de.html 2005-11-12 08:18:47 +00:00
Bram Matthys db0c18dd1e - Removed useless (unused) WATCH code that was still present in the core. 2005-11-11 16:07:34 +00:00
Bram Matthys a7e3aa01b7 - Made it so you no longer can change your nick to a banned one in a channel, suggested
by vonitsanet (#0002388), partial patch provided by Nazzy.
  This option can be turned off by setting set::check-target-nick-bans to 'no'.
2005-11-10 23:39:12 +00:00
Bram Matthys 184dedf72a - Couple of source code cleanups (svsnick, a *line msg, kill, and some useless l_commands
code), suggested by Nazzy and Requi3m.
- Fixed extbans no longer working properly in CVS, fix provided by Nazzy (#0002681).
2005-11-09 14:29:32 +00:00
autoupdate 82e437d366 Automatic weekly version update: 200545 2005-11-07 00:00:04 +00:00
Bram Matthys ee4860fd6c - Fixed OpenBSD crash on /REHASH. Thanks to Peter Laur (OpenBSD.se) for providing us
a shell account to trace this issue down.
2005-11-04 21:45:10 +00:00
autoupdate 32cad72182 Automatic weekly version update: 200544 2005-10-31 00:00:03 +00:00
Bram Matthys d313bec95b Added a check for idiots trying to update from 3.2.3 -> CVS/3.2.4 without running ./Config.. HA! 2005-10-29 01:18:29 +00:00
Bram Matthys e4d352f1f2 - Fixed issue that could cause an alias to be added that would override a command. 2005-10-25 15:28:00 +00:00
autoupdate 541e253598 Automatic weekly version update: 200543 2005-10-24 00:00:04 +00:00
Bram Matthys 4307ca8ade - Fixed crash bug (due to new resolver) if not using 1 general *@* / *@* allow block,
reported by Daniel.
2005-10-18 20:16:05 +00:00
autoupdate c60ea26271 Automatic weekly version update: 200542 2005-10-17 00:00:03 +00:00
Bram Matthys 8b741865c3 - Added 4 UNREAL_VERSION_* macro's that can be useful for 3rd party modules to find out the
unreal version that the user is using. I presume this can be helpful (although nobody ever
  suggested it ;p). The macros (#define's) are:
  UNREAL_VERSION_GENERATION    The generation version number        eg: 3 for 3.2.4
  UNREAL_VERSION_MAJOR         The major version number             eg: 2 for 3.2.4
  UNREAL_VERSION_MINOR         The minor version number             eg: 4 for 3.2.4
                               This can be negative for unstable,
                               alpha and beta versions.
  UNREAL_VERSION_TIME          Year + week of the day (starting     eg: 200541
                               on Monday), this is updated on
                               the CVS server every week.
  The first 3 are for nicely identifiying the version, the 4th can be useful in case
  you want to support CVS and/or want some more control.
2005-10-16 14:40:26 +00:00
Bram Matthys 35a8c00214 - When OPEROVERRIDE_VERIFY is enabled, we now allow opers to still join any channels listed
in set::auto-join or set::oper-auto-join, even if they are +s/+p. Suggested by ultrotter
  (#0002644).
2005-10-15 23:26:57 +00:00
Bram Matthys 607625bf91 - Fixed SSL + new resolver problem, would cause an "interesting flood" of messages / 100% CPU.
Reported by Trocotronic (#0002659).
- Fixed a problem with entries in the hosts file (such as, usually, localhost), this would
  cause an unresolved host and a 30s delay for the user, even though resolving succeeded.
2005-10-11 21:42:06 +00:00
Bram Matthys dc59ba4f5f re-commit include/win32/ares/*.h 2005-10-10 18:09:04 +00:00
Bram Matthys eddb406807 - Removed all old resolver code and switched over to c-ares (+our caching routines).
This should get rid of some annoying untracable (and usually rare) crashbugs in the
  old resolver. Besides that, it makes things look more clean and understandable.
  This should be the fix for the following bugids (all the same issue): #2499, #2551, #2558,
  #2559, #2603, #2642, #2502, #2501, #2618, #2616.
  Feedback and testing is very much welcomed (syzop@unrealircd.com).
2005-10-10 14:32:12 +00:00
angrywolf 6b1e7807ce Doc update (week 39) 2005-10-06 15:56:34 +00:00
babass 75ce361222 changements semaine 39 2005-10-03 17:45:50 +00:00
trocotronic c0f00df2c5 cambios semana 39 2005-10-01 09:08:14 +00:00
stylus740 38c1ad2eb7 Changes of week 39: doc/unreal32docs.de.html 2005-10-01 07:09:01 +00:00
Bram Matthys 62d8a8343f - Some m_restart cleanups, suggested by w00t (#2652). 2005-10-01 01:07:11 +00:00
aquanight 357b1879e9 syzop-undercover-test ;p 2005-09-30 19:56:38 +00:00
Bram Matthys b5fd4a816f - Documented set::channel-command-prefix a bit more, and also changed the default from
"" to "!." which seems much more reasonable / widespread :).
2005-09-28 21:34:40 +00:00
Bram Matthys beb891a24b - Added doc/technical/serverprotocol.html created by aquanight (updates will follow soon). 2005-09-27 16:16:49 +00:00
Bram Matthys dc7554e227 - Changed the way we build most of the .so's: the .o files of individual modules that were
generated (for linkage by commands.so), are now used to generate the .so files of the
  individual modules as well (eg: m_setname.o -link-> m_setname.so). This reduces compile
  time ('make') on my machine by 33%, so it's quite noticable ;).
2005-09-26 22:57:44 +00:00
Bram Matthys f535167cf9 - Added 'warn' target which is basically the same as 'block' except it does not block ;).
It also sends a numeric to the user saying the command has been processed, but a copy
  has been sent to ircops. I feel this is a good idea for privacy reasons (anti-spy),
  though I don't know how users will react to this. If you are using this on your network
  and get users bothering you about it (or before that ;p), it's probably a good idea
  to explain it somewhere on your site or FAQ :).
  Example usage:
   /spamfilter add p warn - Testing_mirc_decode_filter \$decode\(.*\)
  [WARNING] The numeric text is likely to change in the next few weeks (early-cvs-commit).
- If a class block was removed and any other blocks would be referencing the class block
  (such as: allow::class, oper::class, link::class), then this would cause a crash.
  Reported by Mike_ (#0002646).
2005-09-25 21:49:19 +00:00
Bram Matthys e31b23ee8a - Fixed an invalid badword block in the conf causing a crash, reported by Monk (#2639). 2005-09-13 22:43:51 +00:00
Bram Matthys 7ebd0debd7 - Fixed (important?) reference count bug regarding sptr->serv->conf. I don't know what
effects this caused (memory corruption?), but it didn't look good ;).
2005-09-12 16:33:46 +00:00
Bram Matthys 3cb4be0ad6 TYPO! 2005-09-05 18:24:18 +00:00
200 changed files with 58961 additions and 28416 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Configuration Program
for Unreal3.2.3
for Unreal3.2.9-RC1
This program will help you to compile your IRC server, and ask you
questions regarding the compile-time settings of it during the process.
+96 -97
View File
@@ -1,116 +1,115 @@
Unreal3.2.3 Release Notes
==========================
Unreal3.2.9-RC1 Release Notes
============================
==[ GENERAL INFORMATION ]==
- If you are upgrading on *NIX, make sure you run 'make clean' and './Config'
first before doing 'make'
first, before doing 'make'
- The official UnrealIRCd documentation is doc/unreal32docs.html
online version at: http://www.vulnscan.org/UnrealIrcd/unreal32docs.html
FAQ: http://www.vulnscan.org/UnrealIrcd/faq/
online version at: http://www.vulnscan.org/UnrealIRCd/unreal32docs.html
FAQ: http://www.vulnscan.org/UnrealIRCd/faq/
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.2). If you got a net running with servers that are several
versions behind (eg: 3.2.1) then you might experience (desynch) problems.
Also, if you try to use the new features, some might not work properly
until all your servers are upgraded. It is therefore recommended to
upgrade all servers in a 'short' time span (x day[s], not weeks).
version (3.2.8/3.2.8.1). Upgrading from 3.2.6 or 3.2.7 should also be no problem.
- The purpose of the sections below (NEW, CHANGED, MINOR, etc) is to be a SUMMARY
of the changes in this release. There have been 160+ changes, twice as much
as usual for a release, hence this summary is a bit long too.
For the FULL list of changes, see the Changelog.
==[ NEW ]==
- Channel mode +I (invex, invite exceptions). Users on this list can join +i channels
without needing an /invite.
- Channel mode +j (jointhrottle). If you set +j X:Y you limit each user (individually)
to X joins per Y seconds to the channel.
- Nick Character System: this allows you to choose which additional characters to
allow in nicknames by language (and codepage). Currently available are:
catalan, dutch, french, german, swiss-german, icelandic, italian, spanish,
swedish, hungarian, polish, romanian, slovak, czech, greek, turkish, russian,
hebrew and chinese. There are also several 'groups' available, for more info see:
http://www.vulnscan.org/UnrealIrcd/unreal32docs.html#feature_nickchars
- *NIX: ./Config -advanced, allows you to choose more options
- tld::botmotd and tld::opermotd
- Using /INVITE with no parameters will a list of channels you are invited to
but have not yet joined.
- set::gline-address, works just like set::kline-address but then for glines.
- Added a basic regex tutorial in unreal32docs.html
- /SAJOIN now supports multiple channels (and '0') again.
- Spamfilter topic support ('t' in spamfilter, 'topic' in conf).
- Added a feature to +b/+e ~c: ~c:[prefix]<#channel>. This can be used if you for
example trust all ops of #leet: mode #x +e ~c:@#leet.
- Various translated documents in doc/: unreal32docs.gr.html (Greek), help.fr.conf
and example.fr.conf (French), help.de.conf & example.de.conf (German), and
example.hu.conf (Hungarian).
- Extban ~j: this only prevents a user from joining, once in he can speak freely.
- Extban ~R:<nick>: this ban only matches if <nick> is a registered user (has
identified to services). Especially useful in cases like: +e ~R:TrustedUser.
- Stacked Extended Bans:
- Extbans are now split in two groups:
- Ones that specify which user actions are affected (group 1):
~q (quiet), ~n (nick change), ~j (join)
- Ones that introduce new criteria that can be used (group 2):
~c (channel), ~r (realname), ~R (registered)
- With stacked extbans you can combine an extban of the first group with the second
For example: ~q:~c:#lamers would quiet all users who are also in #lamers
- Extended Invex: very much like extended bans, but for +I (Invite Exception).
Currently supported are: ~c (channel, ~r (realname) and ~R (registered) [=group 2]
Possible useful uses are setting a channel +i (invite only) and then setting
+I ~c:#trustedchan (or even: +I ~c:+#trustedchan) while still retaining the ability
to easily ban users through +b.
- Channel Mode +Z: indicates whether a channel is 'secure' or not.
This channel mode works in conjunction with +z (lower case z).
While +z (normally) prevents new non-SSL users from joining, sometimes they
can still join, like when after a netsplit the channels merge again.
When all users on the channel are connected through SSL, the channel is set +Z
by the server. Whenever an insecure user joins, the channel is put -Z.
- Remote MOTD support: you can now specify an URL instead of a file
- Automatic installation of curl (w/c-ares) if you answer 'Yes' to remote includes
- One can now rehash ALL servers with the command '/REHASH -global'. This can be
particularly useful if you use remote includes or MOTD's. NetAdmin only command.
- files { } block by which you can configure the location of the tune file, pid, etc
- STARTTLS: On an IRCd compiled with SSL support this allows a client to start a SSL
session on a regular non-SSL port (like 6667). Only supported by a few IRC clients.
Can be disabled by setting set::ssl::options::no-starttls
- set::uhnames: this allows one to turn UHNAMES off ('no'), which can be a good idea
if you have channels with more than 1000 users, as otherwise the nicklist can take
several seconds to load. Defaults to on ('yes').
- IPv6 clones detection support: allow::ipv6-clone-mask determines the number of bits
used when comparing two IPv6 addresses to determine if allow::maxperip is exceeded.
This allows an admin to recognize that most IPv6 blocks are allocated to individuals,
who might each get a /64 IPv6 block. set::default-ipv6-clone-mask defaults to 64 and
provides default value for the allow blocks.
- The m_nopost module is now part of Unreal: this defends against the Firefox/
Javascript 'XPS attack' which uses HTTP POST to create dummy IRC bots.
- There have also been some behavior changes, which can be considered NEW, see
next section (CHANGED).
==[ CHANGED ]==
- Updated auspice.conf
- The usual doc updates, help.conf, spamfilter.conf, dccallow.conf, etc.
- The config parser got (mostly) recoded. This makes it rehash much faster,
additionally "duplicate item" checking is now available.
- Added a 'B' flag to /who output for bots. Also normal users can now /who +m B.
- Support in configfiles for \\ (= a \)
- set::dns::bind::ip, hardly useful for anyone
- If a user is +b on a channel, and set::allow-userhost-change force-rejoin is
in use, then a part/join is not sent in order to prevent flooding.
- OperOverride INVITE notices are now sent out globally to all +s +e users.
- User mode 'g' is now operonly, it hardly did anything for non-opers.
- Made CIDR no longer accept bitmasks with less than 16bits for /*line commands.
- Modulized a lot of commands (~5000 lines of code).
- Made channel modes +c/+S deal with RGB color codes.
- If no log { } block is present, then a warning will be printed and we will log
by default to ircd.log (errors only).
- If an invalid character is found in a nick then the whole nick is rejected now.
- Changed numeric&text of 'is a Secure Connection' to 'is using a Secure Connection',
client coders are encouraged to add support for this new numeric 671. Until then,
in-window-/whois's will probably be broken.
- A locops with can_override/can_gkline/can_gzline is now automatically converted
to a globop, just like we do with can_globalroute/can_gkline. These privileges
are GLOBAL and therefore are not meant to be granted to locops.
- A warning is now sent to an oper if (s)he tries to use /(G)ZLINE on a host.
(G)ZLINES should be placed on *@ipmasks because they are processed before any
ident and host lookups.
- Made (fast) badwords work better with word boundaries, in practice this means
blocking of words with accents/umlauts/es-zett/etc now works properly.
- Made it so halfops can now -h themselves and chanadmins can -a themselves.
- Made spamfilter 'u' also check nickchanges.
- Channel Mode +z: due to the +z/+Z changes, some things have changed:
- +z can now be set even when insecure users are present
(the channel will then be set +Z when the last insecure user leaves)
- An oper previously had to invite himself and then join the channel
with the key 'override' to set -z. This is no longer needed.
The channel stays +z, but will be set -Z when the oper joins.
- Remote includes: if a remote include fails to load (eg: webserver down) then
the most recent (cached) version of that remote include will be used, and the
IRCd will still boot and be able to REHASH. This means it is now 'safe' to
use remote includes on a network, without risking problems like unable to
rehash in case of webserver problems.
- set::level-on-join now supports voice/halfop/protect/owner
- Backslashes (\) in MOTD/RULES files are no longer considered special, this
might mean that you have to change some escaped backslashes (\\) to \.
- '/REHASH -motd' really rehashes ALL MOTD/OPERMOTD/BOTMOTD/RULES files, both
the 'normal' files and the ones in tld { } blocks.
- The 'Compile as hub/leaf' choice is now gone, as it didn't do anything.
- Better document 'sslclientcert' in the Oper Block documentation.
This allows one to authenticate against a SSL certificate for /OPER, instead
of using a password.
==[ MAJOR BUGS FIXED ]==
- Serious crashbug [this is the same fix that was fixed by the hotfix/3.2.2b]
- TRE mem corruption- & crash-bugs (eg: in backreferences).
- If you have autoconnect with a low connfreq, previously you often risked getting
'Server exists' errors and 'breaking' the network. Now, the server handshake has
been redesigned which means this will no longer happen. You can now safely have
a low connfreq of - for example - 10 seconds.
- Windows: 'Permission denied' errors when starting Unreal
- A crash on some new Linux systems when replacing .so files
- Solaris & QNX: Compile problems
- IPv6: admins no longer have to tweak sysctl, like on FreeBSD & newer Linux systems
- IPv6: IPv4 ip's in link::bind-ip did not work properly which made the IRCd either
not bind to the correct IP, or - like on FreeBSD - made it unable to link at all.
- A very rare crash on outgoing connect
==[ MINOR BUGS FIXED ]==
- Made kline/shun/zline/gzline without parameters report the correct stats(flag).
- Made a few more errors send out to all opers, such as link::bind-ip problems.
- A few missing operflags in /STATS O (and SVSO)
- DCC Spamfilter was not always working correctly
- OperOverriding to, for example, a +zi channel did not print the special join notice.
- Servers behind ulines were not properly ulined, one effect that had was causing
an odd view in /MAP if you had flat-map + hide ulines + a juped server in services.
- Made SVSMODE -b/-e remove bans/excepts placed on IPs
- The set::htm::incoming-rate config item was not working correctly
- If a user was +R then remote server notices were accidently also filtered.
- A locop setting MODE #CHAN +O caused a desynch
- Resolver sometimes incorrectly aliased names, causing incorect TTLs etc.
- Fixed SVSNOOP not removing ALL oper status properly.
- 'shun' target was not working for spamfilter and ban version { }
- Removing of shuns placed on IP's did not take effect immediately (had to reconnect).
- Fixed a bug in mode skipping (eg: '+qk a b' if not +q) and error msgs.
- Chanmode +f #t (per-user text limit) now no longer affects halfops.
- Opers w/can_override can now +qa/-qa if they are not netadmins, also affected +L/+u.
Be sure you upgrade all servers to 3.2.3 if using these new abilities, or else you
will get desynch issues.
- Fixed several /SAMODE bugs as well, regarding non-netadmins, being halfop'ed, etc.
- /GZLINE [nick] was placing a *line on *@host instead of *@IP, fixed.
- alias::format in combination with ::type 'command' caused a crash
- zlib upgraded to 1.2.2, curl upgraded to 7.13.1, both fix various issues.
- Win32 installer now also installs doc\technical\*.*
- Desynch issues regarding +s/+p and +c/+S
- /SAMODE causing a 'fishy timestamp' if a cmode with a digit parameter was used.
- autoconnect not working if TS offset was negative (for the duration of the offset)
- CGI:IRC & IPv6: sometimes a users' IP was incorrectly formatted, causing 'ghosts'
- Mac OS X: permission problems
- Several installation issues with curl
- SSL: No more 'Underlying syscall error', the actual error is now shown
- And many more... see Changelog
==[ REMOVED ]==
- NAZIISH_CHBAN_HANDLING (did not work at all)
- The 'oldcloak' cloaking module is now removed, since this old algorithm got broken
8 months ago, nobody should be using it anymore.
==[ KNOWN ISSUES ]==
- 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. Slow spamfilter detection can help prevent the
slowdown/freeze, but might not work in worst-case scenario's.
- Regexes: Possessive quantifiers such as, for example, "++" (not to be confused
with "+") are not safe to use, they can easily freeze the IRCd.
==[ ADDITIONAL INFO ]==
* See Changelog for more details
+7 -3
View File
@@ -1,6 +1,10 @@
ircdcron/ircd.cron
ircdcron/ircdchk
src/modules/Makefile
src/ssl.rnd
src/win32/devel/StackTrace.lib
src/win32/gnu_regex.lib
Makefile
config.log
config.status
config.settings
ssl.rnd
unreal
+1415
View File
File diff suppressed because it is too large Load Diff
+220 -86
View File
@@ -20,7 +20,7 @@
RUN_CONFIGURE () {
ARG=""
ARG=" "
# Do this even if we're not in advanced mode
if [ "$SHOWLISTMODES" = "1" ] ; then
ARG="$ARG--with-showlistmodes "
@@ -41,12 +41,12 @@ fi
if [ "$OPEROVERRIDEVERIFY" = "1" ] ; then
ARG="$ARG--with-operoverride-verify "
fi
if [ "$DISABLEEXTBANSTACKING" = "1" ]; then
ARG="$ARG--with-disable-extendedban-stacking ";
fi
if [ "$NOSPOOF" = "1" ] ; then
ARG="$ARG--enable-nospoof "
fi
if [ -n "$HUB" ] ; then
ARG="$ARG--enable-hub "
if [ "$NOSPOOF" != "1" ] ; then
ARG="$ARG--disable-nospoof "
fi
if [ "$CRYPTOIRCD" = "1" ] ; then
if test x"$SSLDIR" = "x" ; then
@@ -68,8 +68,8 @@ fi
if [ "$INET6" = "1" ] ; then
ARG="$ARG--enable-inet6 "
fi
if [ "$PREFIXAQ" = "1" ]; then
ARG="$ARG--enable-prefixaq "
if [ "$PREFIXAQ" != "1" ]; then
ARG="$ARG--disable-prefixaq "
fi
ARG="$ARG--with-listen=$LISTEN_SIZE "
ARG="$ARG--with-dpath=$DPATH "
@@ -77,14 +77,17 @@ ARG="$ARG--with-spath=$SPATH "
ARG="$ARG--with-nick-history=$NICKNAMEHISTORYLENGTH "
ARG="$ARG--with-sendq=$MAXSENDQLENGTH "
ARG="$ARG--with-bufferpool=$BUFFERPOOL "
ARG="$ARG--with-hostname=$DOMAINNAME "
ARG="$ARG--with-permissions=$DEFPERM "
ARG="$ARG--with-fd-setsize=$MAXCONNECTIONS "
ARG="$ARG--enable-dynamic-linking "
ARG="$ARG $EXTRAPARA "
CONF="./configure $ARG"
if [ "x$INSTALLCURL" = "x1" ]; then
./curlinstall || exit 1
fi
echo $CONF
$CONF
$CONF || exit 1
cd "$UNREALCWD"
if [ "$CRYPTOIRCD" = "1" ] ; then
if [ ! -f server.req.pem ]; then
export OPENSSLPATH
@@ -274,14 +277,42 @@ while [ -z "$TEST" ] ; do
esac
done
TEST=""
while [ -z "$TEST" ] ; do
if [ "$DISABLEEXTBANSTACKING" = "1" ] ; then
TEST="Yes"
else
TEST="No"
fi
echo ""
echo "Do you want to disable extended ban stacking (~q:~c:#test, etc) support?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
cc=$TEST
fi
case "$cc" in
[Yy]*)
DISABLEEXTBANSTACKING="1"
;;
[Nn]*)
DISABLEEXTBANSTACKING="0"
;;
*)
echo ""
echo "You must enter either Yes or No"
TEST=""
;;
esac
done
}
c=""
n=""
NOSPOOF=""
UNREALCWD="`pwd`"
NOSPOOF="1"
DPATH="`pwd`"
SPATH="`pwd`/src/ircd"
HUB="1"
DOMAINNAME=`hostname`
DEFPERM="0600"
CRYPTOIRCD=""
SSLDIR=""
@@ -295,13 +326,14 @@ MAXCONNECTIONS="1024"
INET6=""
REMOTEINC=""
CURLDIR=""
PREFIXAQ=""
PREFIXAQ="1"
SHOWLISTMODES="1"
TOPICNICKISNUH=""
SHUNNOTICES=""
NOOPEROVERRIDE=""
DISABLEUSERMOD=""
OPEROVERRIDEVERIFY=""
DISABLEEXTBANSTACKING=""
EXTRAPARA=""
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
c="\c"
@@ -336,6 +368,7 @@ while [ $# -ge 1 ] ; do
. ./config.settings
fi
RUN_CONFIGURE
cd "$UNREALCWD"
exit 0
elif [ $1 = "-clean" -o $1 = "-C" ] ; then
CLEAN="1"
@@ -385,8 +418,10 @@ while [ -z "$TEST" ] ; do
echo "Many older operating systems have an insecure TCP/IP stack"
echo "which may be vulnerable to IP spoofing attacks, if you run"
echo "an operating system that is vulnerable to such attacks"
echo "enable this option. This option can also be useful to prevent"
echo "blind proxies from connecting (eg: HTTP POST proxies)."
echo "enable this option."
echo "This option also prevents blind proxies (eg: HTTP POST proxies)"
echo "and other blind clients from connecting (eg: protects against"
echo "the Firefox XPS IRC Attack)."
echo ""
echo "Do you want to enable the server anti-spoof protection?"
echo $n "[$TEST] -> $c"
@@ -420,58 +455,28 @@ else
DPATH=`eval echo $cc` # modified
fi
TEST="$SPATH"
echo ""
echo "What is the path to the ircd binary including the name of the binary?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
SPATH=$TEST
else
SPATH=`eval echo $cc` # modified
fi
TEST=""
SAVEME="$SPATH"
while [ -z "$TEST" ] ; do
if [ "$HUB" = "1" ] ; then
TEST="Hub"
else
TEST="Leaf"
fi
TEST="$SAVEME"
echo ""
echo "Would you like to compile as a hub or as a leaf?"
echo "Type Hub to select hub and Leaf to select leaf."
echo "What is the path to the ircd binary including the name of the binary?"
echo $n "[$TEST] -> $c"
read cc
read cc
if [ -z "$cc" ] ; then
cc=$TEST
SPATH=$TEST
else
SPATH=`eval echo $cc` # modified
fi
if [ "$SPATH" = "$DPATH" ]; then
echo ""
echo "You need to specify the path to the BINARY, not to a directory."
echo "The answer to this question can never be identical to the previous one."
echo "HINT: perhaps you want $DPATH/ircd ?"
TEST=""
fi
case "$cc" in
[Hh]*)
HUB="1"
;;
[Ll]*)
HUB=""
;;
*)
echo ""
echo "You must enter either Hub or Leaf"
TEST=""
;;
esac
done
TEST="$DOMAINNAME"
echo ""
echo "What is the hostname of the server running your IRCd?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
DOMAINNAME=$TEST
else
DOMAINNAME=`eval echo $cc` # modified
fi
TEST=""
while [ -z "$TEST" ] ; do
TEST="$DEFPERM"
@@ -527,14 +532,14 @@ while [ -z "$TEST" ] ; do
done
if [ "$CRYPTOIRCD" = "1" ] ; then
TEST=""
TEST="$SSLDIR"
echo ""
echo "If you know the path to OpenSSL on your system, enter it here. If not"
echo "leave this blank"
echo "leave this blank (in most cases it will be detected automatically)."
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
SSLDIR=""
SSLDIR="$TEST"
else
SSLDIR=`eval echo $cc` # modified
fi
@@ -599,14 +604,14 @@ while [ -z "$TEST" ] ; do
done
if [ "$ZIPLINKS" = "1" ] ; then
TEST=""
TEST="$ZIPLINKSDIR"
echo ""
echo "If you know the path to zlib on your system, enter it here. If not"
echo "leave this blank"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
ZIPLINKSDIR=""
ZIPLINKSDIR="$TEST"
else
ZIPLINKSDIR=`eval echo $cc` # modified
fi
@@ -621,6 +626,8 @@ while [ -z "$TEST" ] ; do
fi
echo ""
echo "Do you want to enable remote includes?"
echo "This allows stuff like this in your configuration file:"
echo "include \"http://www.somesite.org/files/opers.conf\";"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
@@ -643,20 +650,144 @@ while [ -z "$TEST" ] ; do
done
if [ "$REMOTEINC" = "1" ] ; then
TEST=""
while [ -z "$TEST" ] ; do
TEST="$CURLDIR"
echo ""
echo "Specify the directory you installed libcurl to"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
cc=$TEST
else
TEST=$cc
CURLDIR=`eval echo $cc` # modified
if [ ! -d "$CURLDIR" ]; then
# Reset any previous CURLDIR if it doesn't exist (anymore)
CURLDIR=""
fi
INSTALLCURL="0"
if [ "x$CURLDIR" = "x" ]; then
# There is no reason to support this:
if [ -d "/usr/local/include/curl" ]; then
CURLDIR="/usr/local"
fi
done
# Zeroeth, let's act SANE
if [ -d "/usr/include/curl" ]; then
CURLDIR="/usr"
fi
# First, let's make shell admins happy...
if [ -d "/usr/share/unreal-curl" ]; then
CURLDIR="/usr/share/unreal-curl"
fi
GOTASYNC=0
if [ "x$CURLDIR" != "x" ]; then
# Check if it's of any use: a curl without async dns (cares) hangs the entire ircd..
# normally this is done in ./configure but now we're forced to do it also here..
if "$CURLDIR"/bin/curl-config --features | grep -q -e AsynchDNS; then
GOTASYNC="1"
fi
if [ "$GOTASYNC" != "1" ]; then
PREVCURLDIR="$CURLDIR"
CURLDIR=""
fi
fi
# Second, use the local curl if it exists (overrides above)
if [ -d "$HOME/curl" ]; then
CURLDIR="$HOME/curl"
# Check if it's recent enough...
# But first, check if curl-config can be trusted at all: it depends
# on 'bc' for some reason and not all systems have that installed!
echo "1+1"|bc 1>/dev/null 2>&1
if [ "$?" = 0 ]; then
"$CURLDIR"/bin/curl-config --checkfor 7.21.0
if [ "$?" != 0 ]; then
echo ""
echo "Your self-compiled CURL library in $CURLDIR is slightly outdated."
echo "This probably means you had the library from a previous installation of UnrealIRCd."
echo "Because previous versions may be linked to a previous version to c-ares which"
echo "were not ABI compatible it is highly recommended to remove the version"
echo "and recompile it. We now have an automatic downloader and installer to compile"
echo "and install curl for you (in $CURLDIR). You can choose to do so in the question"
echo "after this one."
TEST=""
while [ -z "$TEST" ] ; do
TEST="Yes"
echo "Shall I rename $CURLDIR to $CURLDIR.old so it can be rebuild later on?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
cc=$TEST
fi
case "$cc" in
[Yy]*)
rm -rf "$CURLDIR".old
mv "$CURLDIR" "$CURLDIR".old
CURLDIR=""
GOTASYNC=1
# wow the GOTASYNC=1 is hackish, but we need to prevent the error from later on
;;
[Nn]*)
echo "Uh, ok... I hope you know what you are doing..."
echo ""
;;
*)
echo ""
echo "You must enter either Yes or No"
TEST=""
;;
esac
done
fi
fi
fi
# Need to output it here, as the HOME check from above may cause this to be no longer relevant.
if [ "x$CURLDIR" = "x" -a "$GOTASYNC" != "1" ]; then
echo "Curl library was found in $PREVCURLDIR, but it does not support Asynchronous DNS (not compiled with c-ares)"
echo "so it's of no use to us."
fi
fi
if [ "x$CURLDIR" = "x" ]; then
# Still empty?
TEST=""
while [ -z "$TEST" ] ; do
TEST="Yes"
echo ""
echo "Do you want me to automatically download and install curl for you?"
echo "(will install in $HOME/curl)"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
cc=$TEST
fi
case "$cc" in
[Yy]*)
INSTALLCURL="1"
CURLDIR="$HOME/curl"
;;
[Nn]*)
INSTALLCURL="0"
;;
*)
echo ""
echo "You must enter either Yes or No"
TEST=""
;;
esac
done
fi
if [ "$INSTALLCURL" != "1" ]; then
TEST=""
while [ -z "$TEST" ] ; do
TEST="$CURLDIR"
echo ""
echo "Specify the directory you installed libcurl to"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
cc=$TEST
else
TEST=$cc
CURLDIR=`eval echo $cc` # modified
fi
done
fi
fi
@@ -670,8 +801,8 @@ while [ -z "$TEST" ] ; do
echo ""
echo "Do you want to enable prefixes for chanadmin and chanowner?"
echo "This will give +a the & prefix and ~ for +q (just like +o is @)"
echo "Supported by the major clients (mIRC, xchat, epic, eggdrop, Klient, PJIRC, etc.)"
echo "with the notable exceptions of irssi, KVIrc and CGI:IRC."
echo "Supported by the major clients (mIRC, xchat, epic, eggdrop, Klient,"
echo "PJIRC, irssi, CGI:IRC, etc.)"
echo "This feature should be enabled/disabled network-wide."
echo $n "[$TEST] -> $c"
read cc
@@ -815,11 +946,16 @@ done
if [ -n "$ADVANCED" ] ; then
RUN_ADVANCED
fi
TEST="$EXTRAPARA"
echo ""
echo "Would you like any more parameters to configure?"
echo "Write them here:"
echo $n "[]-> $c"
echo "Would you like to pass any custom parameters to configure?"
echo "See \`./configure --help' and write them here:"
echo $n "[$TEST] -> $c"
read EXTRAPARA
if [ -z "$EXTRAPARA" ]; then
EXTRAPARA="$TEST"
fi
rm -f config.settings
cat > config.settings << __EOF__
@@ -834,8 +970,6 @@ MAXSENDQLENGTH="$MAXSENDQLENGTH"
BUFFERPOOL="$BUFFERPOOL"
MAXCONNECTIONS="$MAXCONNECTIONS"
NICKNAMEHISTORYLENGTH="$NICKNAMEHISTORYLENGTH"
HUB="$HUB"
DOMAINNAME="$DOMAINNAME"
DEFPERM="$DEFPERM"
CRYPTOIRCD="$CRYPTOIRCD"
SSLDIR="$SSLDIR"
@@ -849,10 +983,12 @@ SHUNNOTICES="$SHUNNOTICES"
NOOPEROVERRIDE="$NOOPEROVERRIDE"
DISABLEUSERMOD="$DISABLEUSERMOD"
OPEROVERRIDEVERIFY="$OPEROVERRIDEVERIFY"
DISABLEEXTBANSTACKING="$DISABLEEXTBANSTACKING"
EXTRAPARA="$EXTRAPARA"
ADVANCED="$ADVANCED"
__EOF__
RUN_CONFIGURE
cd "$UNREALCWD"
cat << __EOF__
_______________________________________________________________________
@@ -868,8 +1004,6 @@ cat << __EOF__
|_______________________________________________________________________|
| - The UnrealIRCd Team - |
| |
| * Stskeeps stskeeps@unrealircd.com |
| * codemastr codemastr@unrealircd.com |
| * Syzop syzop@unrealircd.com |
|_______________________________________________________________________|
__EOF__
+7 -19
View File
@@ -4,27 +4,15 @@ appreciation, the Unreal team has decided to accept donations through PayPal. If
you like Unreal, and you'd like to see it continue to exist, please consider making
a donation. We're not asking for anything huge, whatever you can afford is fine.
PayPal Donation Link:
<https://www.paypal.com/xclick/business=donation%40unrealircd.org&
item_name=UnrealIRCd+Donation&no_shipping=1&cn=Comments&tax=0&currency_code=USD>
PayPal Donation Link: http://www.unrealircd.com/donate
Or simply send a payment through PayPal to:
donation@unrealircd.org
If you don't want to use PayPal, or you want to donate something other than money,
contact Syzop (syzop@unrealircd.com).
If you don't want to use PayPal, or you want to donate something other than money
(old computer hardware, etc.), contact Stskeeps (stskeeps@unrealircd.com) and send
your donation to:
UnrealIRCd Project
C/O Carsten Munk
P.O.Box 52
7400 Herning
Denmark
All those who donate at least $10 USD will have their name and/or company listed in /credits.
Additionally, all donators will be listed on the website (regardless of the amount). To make
this possible, please include along with your donation the name (or nickname) you want to
appear in the list as well as the company name (or IRC server) to list.
All those who donate at least a certain minimum amount will have their name
and/or company listed in /CREDITS.
Additionally, all donators will be listed on the website (regardless of the amount).
Please check the website for details.
Thank you for your support,
The UnrealIRCd Team
+16 -6
View File
@@ -34,11 +34,11 @@ FROMDOS=/home/cmunk/bin/4dos
#
#XCFLAGS=-O -g -export-dynamic
IRCDLIBS=@IRCDLIBS@ @TRELIBS@ @CARESLIBS@
IRCDLIBS=@IRCDLIBS@ @TRE_LIBS@ @CARES_LIBS@
CRYPTOLIB=@CRYPTOLIB@
OPENSSLINCLUDES=
XCFLAGS=-I@TREINCDIR@ -I@CARESINCDIR@ @CFLAGS@
XCFLAGS=@TRE_CFLAGS@ @CARES_CFLAGS@ @CFLAGS@
#
# use the following on MIPS:
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
@@ -104,9 +104,11 @@ URL=@URL@
STRTOUL=@STRTOUL@
# [CHANGEME]
# If you get crashes around a specific number of clients, and that client
# load comes close or a little over the system-defined value of FD_SETSIZE,
# override it here and see what happens.
# If you get crashes around a specific number of clients, and that
# client load comes close or a little over the system-defined value of
# FD_SETSIZE, override it here and see what happens. You may override
# the system FD_SETSIZE by setting the FD_SETSIZE Makefile variable to
# -DFD_SETSIZE=<some number>.
FD_SETSIZE=@FD_SETSIZE@
# Where is your openssl binary
@@ -131,9 +133,11 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}' \
'CRYPTOLIB=${CRYPTOLIB}' \
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' 'URL=${URL}'
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' \
'URL=${URL}'
custommodule:
@if test -z "${MODULEFILE}"; then echo "Please set MODULEFILE when calling \`\`make custommodule''. For example, \`\`make custommodule MODULEFILE=callerid''." >&2; exit 1; fi
cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} 'EXLIBS=${EXLIBS}' custommodule
server:
@@ -218,6 +222,12 @@ install: all
$(INSTALL) -m 0700 unreal $(IRCDDIR)
$(INSTALL) -m 0700 -d $(IRCDDIR)/modules
$(INSTALL) -m 0700 src/modules/*.so $(IRCDDIR)/modules
$(INSTALL) -m 0700 -d $(IRCDDIR)/ircdcron
$(INSTALL) -m 0600 ircdcron/ircd.cron $(IRCDDIR)/ircdcron
$(INSTALL) -m 0700 ircdcron/ircdchk $(IRCDDIR)/ircdcron
-@if [ ! -f "$(IRCDDIR)/curl-ca-bundle.crt" ] ; then \
$(INSTALL) -m 0700 curl-ca-bundle.crt $(IRCDDIR) ; \
fi
pem: src/ssl.cnf
@echo "Generating certificate request .. "
+43 -42
View File
@@ -1,70 +1,71 @@
===============================================
= UnrealIRCd v3.2.3 =
= UnrealIRCd v3.2.9-RC1 =
===============================================
Was brought to you by:
This release was brought to you by:
The core team:
==============
* Stskeeps <stskeeps@tspre.org>
* codemastr <codemastr@unrealircd.com>
* Syzop <syzop@unrealircd.org>
* Luke <luke@unrealircd.com>
Contributors
Head coder:
============
* McSkaf <mcskaf@unrealircd.org>
* Zogg <zogg@unrealircd.org>
* NiQuiL <niquil@unrealircd.org>
* assyrian <assyrian@unrealircd.org>
* nighthawk <nighthawk@unrealircd.com>
* DrBin <drbin@unrealircd.com>
* llthangel <llthangel@unrealircd.org>
* Griever <griever@unrealircd.com>
Documentation:
==============
* CKnight^ <cknight@unrealircd.com>
* Syzop
Precenses on the Internet:
* http://www.unrealircd.com
Coders:
========
* binki
Contributors:
=============
* Bock
* goldenwolf
* katsklaw
* Stealth
RC Testers:
===========
__THIS_NEEDS_TO_BE_UPDATED_BEFORE_3.2.9_RELEASE__
Previous coders:
================
* Stskeeps
* codemastr
* Many more..
Internet Presence:
* http://unrealircd.com/
CVS
====
To get anonymous access: (read only)
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot login"
"cvs -d :pserver:anonymous@cvs.unrealircd.com:/cvs login"
press enter when asked for password
Then, choose the appropiate branch you want:
latest 3.2 release ("stable"):
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r stable -d Unreal-stable unreal"
"cvs -z3 -d :pserver:anonymous@cvs.unrealircd.com:/cvs checkout -r stable -d Unreal-stable unreal"
latest 3.2 fixes / development ("unreal3_2_fixes"):
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r unreal3_2_fixes -d Unreal-stable unreal"
"cvs -z3 -d :pserver:anonymous@cvs.unrealircd.com:/cvs checkout -r unreal3_2_fixes -d Unreal-stable unreal"
To get support
================
Before asking others for help you MUST:
* read the docs (doc/unreal32docs.html or online: www.unrealircd.com/unreal32docs.html)
* check the FAQ (www.vulnscan.org/UnrealIrcd/faq/)
* read the docs (doc/unreal32docs.html or online: http://unrealircd.com/unreal32docs.html)
* check the FAQ (http://vulnscan.org/UnrealIrcd/faq/)
Means of support:
* IRC: /server irc.ircsystems.net 6667 - /join #unreal-support
[Note: Follow the bots instructions in order to get voice.
Please be patient after asking questions, we may do other stuff
or we're away. Don't repeat questions, we heard you first time,
READ THE TOPIC before you ask anything. We do this on a free
base so we are volunteeringly helping you, but we are humans
like you, and we got to have peace at times as well.]
* IRC: /server irc.unrealircd.com 6667 - /join #unreal-support
[Note: Follow the bot's instructions in order to get voice.
Please be patient after asking questions, we may be busy
or we're away. Don't repeat questions, we will have heard
you first time.
READ THE TOPIC before you ask anything. We give support
on a free basis. We are volunteering to help you, but we
are humans like you. We sometimes just need some peace.]
* Forum: http://forums.unrealircd.com/
* Mailing list: unreal-users@lists.sourceforge.net
(http://lists.sourceforge.net/lists/listinfo/unreal-users also
has links to the archive).
UnrealIRCd Bugtracker (Where to report bugs or make suggestions)
UnrealIRCd Bugtracker (Where to report bugs, make suggestions, and submit patches)
==================================================================
http://bugs.unrealircd.org
http://bugs.unrealircd.org/
Want to discuss, chat, etc?
=============================
* IRC: /server irc.ircsystems.net 6667 - /join #UnrealIRCd
* IRC: /server irc.unrealircd.com 6667 - /join #chat
+2 -2
View File
@@ -4,8 +4,8 @@ alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias memoserv { type services; spamfilter yes; };
alias ms { target memoserv; type services; spamfilter yes; };
alias operserv { type services; };
alias os { target operserv; type services; };
alias helpserv { type services; };
+2 -2
View File
@@ -21,8 +21,8 @@ alias helpserv { type services; };
alias hs { target helpserv; type services; };
alias hostserv { type services; };
alias ho { target hostserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias memoserv { type services; spamfilter yes; };
alias ms { target memoserv; type services; spamfilter yes; };
alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias operserv { type services; };
+2 -2
View File
@@ -4,8 +4,8 @@ alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias memoserv { type services; spamfilter yes; };
alias ms { target memoserv; type services; spamfilter yes; };
alias rootserv { type services; };
alias rs { target rootserv; type services; };
+2 -2
View File
@@ -4,8 +4,8 @@ alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias memoserv { type services; spamfilter yes; };
alias ms { target memoserv; type services; spamfilter yes; };
alias operserv { type services; };
alias os { target operserv; type services; };
alias helpserv { type services; };
+2 -2
View File
@@ -4,8 +4,8 @@ alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias memoserv { type services; spamfilter yes; };
alias ms { target memoserv; type services; spamfilter yes; };
alias operserv { type services; };
alias os { target operserv; type services; };
alias helpserv { type services; };
+2 -2
View File
@@ -4,8 +4,8 @@ alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias memoserv { type services; spamfilter yes; };
alias ms { target memoserv; type services; spamfilter yes; };
alias operserv { type services; };
alias os { target operserv; type services; };
alias helpserv { type services; };
+1
View File
@@ -0,0 +1 @@
autom4te.cache
-141
View File
@@ -1,141 +0,0 @@
dnl aclocal.m4 generated automatically by aclocal 1.4-p4
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
dnl Macro: unet_CHECK_TYPE_SIZES
dnl
dnl Check the size of several types and define a valid int16_t and int32_t.
dnl
AC_DEFUN(unreal_CHECK_TYPE_SIZES,
[dnl Check type sizes
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
if test "$ac_cv_sizeof_int" = 2 ; then
AC_CHECK_TYPE(int16_t, int)
AC_CHECK_TYPE(u_int16_t, unsigned int)
elif test "$ac_cv_sizeof_short" = 2 ; then
AC_CHECK_TYPE(int16_t, short)
AC_CHECK_TYPE(u_int16_t, unsigned short)
else
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
fi
if test "$ac_cv_sizeof_int" = 4 ; then
AC_CHECK_TYPE(int32_t, int)
AC_CHECK_TYPE(u_int32_t, unsigned int)
elif test "$ac_cv_sizeof_short" = 4 ; then
AC_CHECK_TYPE(int32_t, short)
AC_CHECK_TYPE(u_int32_t, unsigned short)
elif test "$ac_cv_sizeof_long" = 4 ; then
AC_CHECK_TYPE(int32_t, long)
AC_CHECK_TYPE(u_int32_t, unsigned long)
else
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
fi
AC_CHECK_SIZEOF(rlim_t)
if test "$ac_cv_sizeof_rlim_t" = 8 ; then
AC_DEFINE(LONG_LONG_RLIM_T)
fi
])
AC_DEFUN(CHECK_LIBCURL,
[
AC_ARG_ENABLE(libcurl,
[AC_HELP_STRING([--enable-libcurl=DIR],[enable libcurl (remote include) support])],
[
CURLCFLAG=`$enableval/bin/curl-config --cflags`
CFLAGS="$CFLAGS $CURLCFLAG -DUSE_LIBCURL"
CURLLIBS=`$enableval/bin/curl-config --libs`
dnl curl-7.11.0 and up will include the ares info, older versions do not
if test "x`echo $CURLLIBS |grep .*ares.*`" = x ; then
CURLLIBS="$CURLLIBS -lares"
fi
IRCDLIBS="$IRCDLIBS $CURLLIBS"
URL="url.o"
AC_SUBST(URL)
])
])
dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostler@juniper.net>
AC_DEFUN([CHECK_SSL],
[
AC_ARG_ENABLE(ssl,
[AC_HELP_STRING([--enable-ssl=],[enable ssl will check /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr])],
[
AC_MSG_CHECKING(for openssl)
for dir in $enableval /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr; do
ssldir="$dir"
if test -f "$dir/include/openssl/ssl.h"; then
AC_MSG_RESULT(found in $ssldir/include/openssl)
found_ssl="yes";
if test ! "$ssldir" = "/usr" ; then
CFLAGS="$CFLAGS -I$ssldir/include";
fi
break;
fi
if test -f "$dir/include/ssl.h"; then
AC_MSG_RESULT(found in $ssldir/include)
found_ssl="yes";
if test ! "$ssldir" = "/usr" ; then
CFLAGS="$CFLAGS -I$ssldir/include";
fi
break
fi
done
if test x_$found_ssl != x_yes; then
AC_MSG_RESULT(not found)
AC_WARN(disabling ssl support)
else
CRYPTOLIB="-lssl -lcrypto";
if test ! "$ssldir" = "/usr" ; then
LDFLAGS="$LDFLAGS -L$ssldir/lib";
fi
AC_DEFINE(USE_SSL)
fi
],
)
])
AC_DEFUN([CHECK_ZLIB],
[
AC_ARG_ENABLE(ziplinks,
[AC_HELP_STRING([--enable-ziplinks],[enable ziplinks will check /usr/local /usr /usr/pkg])],
[
AC_MSG_CHECKING(for zlib)
for dir in $enableval /usr/local /usr /usr/pkg; do
zlibdir="$dir"
if test -f "$dir/include/zlib.h"; then
AC_MSG_RESULT(found in $zlibdir)
found_zlib="yes";
if test "$zlibdir" = "/usr" ; then
CFLAGS="$CFLAGS -DZIP_LINKS";
else
CFLAGS="$CFLAGS -I$zlibdir/include -DZIP_LINKS";
fi
break;
fi
done
if test x_$found_zlib != x_yes; then
AC_MSG_RESULT(not found)
AC_WARN(disabling ziplink support)
else
IRCDLIBS="$IRCDLIBS -lz";
if test "$zlibdir" != "/usr" ; then
LDFLAGS="$LDFLAGS -L$zlibdir/lib";
fi
HAVE_ZLIB=yes
fi
AC_SUBST(HAVE_ZLIB)
],
)
])
-492
View File
@@ -1,492 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/ircd.c)
if test $# = 0; then
echo "You might want to run ./Config or provide some parameters to this script."
echo "./configure --help for information about this script"
exit 0
fi
AC_CONFIG_HEADER(include/setup.h)
AC_PROG_CC
if test "$ac_cv_prog_gcc" = "yes"; then
CFLAGS="$CFLAGS -funsigned-char"
AC_CACHE_CHECK(if gcc has a working -pipe, ac_cv_pipe, [
save_cflags="$CFLAGS"
CFLAGS="$CFLAGS -pipe"
AC_TRY_COMPILE(,, ac_cv_pipe="yes", ac_cv_pipe="no")
CFLAGS="$save_cflags"
])
if test "$ac_cv_pipe" = "yes"; then
CFLAGS="-pipe $CFLAGS"
fi
fi
dnl (the gcc flag detection trick is taken from xemacs/Vin Shelton)
dnl UnrealIRCd might not be strict-aliasing safe at this time
case "`gcc -v --help 2>&1`" in
*-fstrict-aliasing* ) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
esac
dnl Pointer signedness warnings are really a pain and 99.9% of the time
dnl they are of absolutely no use whatsoever. IMO the person who decided
dnl to enable this without -Wall should be shot on sight.
case "`gcc -v --help 2>&1`" in
*-Wpointer-sign* ) CFLAGS="$CFLAGS -Wno-pointer-sign" ;;
esac
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(TOUCH,touch)
AC_PATH_PROG(OPENSSLPATH,openssl)
AC_PATH_PROG(INSTALL,install)
AC_CHECK_PROG(MAKER, gmake, gmake, make)
AC_PATH_PROG(GMAKE,gmake)
AC_PATH_PROG(GUNZIP, gunzip)
AC_PATH_PROG(PKGCONFIG, pkg-config)
dnl Checks for libraries.
AC_CHECK_LIB(descrypt, crypt, [AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-ldescrypt " MKPASSWDLIBS="-ldescrypt"],
AC_CHECK_LIB(crypt, crypt,[ AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-lcrypt " MKPASSWDLIBS="-lcrypt"]))
AC_CHECK_LIB(socket, socket,IRCDLIBS="$IRCDLIBS-lsocket " SOCKLIB="-lsocket")
AC_CHECK_LIB(nsl, inet_ntoa,IRCDLIBS="$IRCDLIBS-lnsl " INETLIB="-lnsl")
AC_SUBST(IRCDLIBS)
AC_SUBST(MKPASSWDLIBS)
dnl module checking based on Hyb7's module checking code
AC_DEFUN(AC_ENABLE_DYN,
[
AC_CHECK_FUNC(dlopen,, AC_CHECK_LIB(dl, dlopen,IRCDLIBS="$IRCDLIBS -ldl",
[
AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found)
AC_DEFINE(STATIC_LINKING)
]))
hold_cflags=$CFLAGS
CFLAGS="$CFLAGS -export-dynamic"
AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [
AC_TRY_LINK(, [int i];, ac_cv_export_dynamic=yes, ac_cv_export_dynamic=no)])
if test "$ac_cv_export_dynamic" = "no"; then
CFLAGS=$hold_cflags
fi
AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[
if test "$ac_cv_prog_gcc" = "yes"; then
ac_cv_pic="-fPIC -DPIC -shared"
case `uname -s` in
Darwin*[)]
ac_cv_pic="-bundle -flat_namespace -undefined suppress"
;;
HP-UX*[)]
ac_cv_pic="-fPIC"
;;
esac
else
case `uname -s` in
SunOS*[)]
ac_cv_pic="-KPIC -DPIC -G"
;;
esac
fi
])
AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[
cat >uscore.c << __EOF__
int main() {
return 0;
}
__EOF__
$CC -o uscore $CFLAGS uscore.c 1>&5
if test -z "`strings -a uscore |grep '^_main$'`"; then
ac_cv_underscore=no
else
ac_cv_underscore=yes
fi
rm -f uscore uscore.c
])
if test "$ac_cv_underscore" = "yes"; then
AC_DEFINE(UNDERSCORE)
fi
MODULEFLAGS=$ac_cv_pic
AC_DEFINE(DYNAMIC_LINKING)
])
AC_DEFUN(AC_ENABLE_INET6,[
AC_CACHE_CHECK(if your system has IPv6 support, ac_cv_ip6, [
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB"
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
int main() {
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
exit(1);
exit(0);
}
], ac_cv_ip6=yes, ac_cv_ip6=no)
])
if test "$ac_cv_ip6" = "no"; then
AC_MSG_WARN(Your system does not support IPv6 so it will not be enabled)
else
AC_DEFINE(INET6)
dnl in6addr_any detection code taken from ratbox
AC_MSG_CHECKING([for struct in6addr_any])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[[#define IN_AUTOCONF
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>]],
[[struct in6_addr a = in6addr_any;]]
)],
[AC_MSG_RESULT(yes)],
[
AC_MSG_RESULT(no)
AC_DEFINE(NO_IN6ADDR_ANY)
]
)
fi
LIBS="$save_libs"
])
AC_CHECK_HEADER(sys/param.h,AC_DEFINE(PARAMH))
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(STDLIBH))
AC_CHECK_HEADER(stddef.h,AC_DEFINE(STDDEFH))
AC_CHECK_HEADER(sys/syslog.h,AC_DEFINE(SYSSYSLOGH))
AC_CHECK_HEADER(unistd.h,AC_DEFINE(UNISTDH))
AC_CHECK_HEADER(string.h,AC_DEFINE(STRINGH))
AC_CHECK_HEADER(strings.h,AC_DEFINE(STRINGSH))
AC_CHECK_HEADER(malloc.h,AC_DEFINE(MALLOCH,<malloc.h>))
AC_CHECK_HEADER(sys/rusage.h,AC_DEFINE(RUSAGEH))
AC_CHECK_HEADER(glob.h,AC_DEFINE(GLOBH))
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_TYPE_UID_T
unreal_CHECK_TYPE_SIZES
AC_CACHE_CHECK(what kind of nonblocking sockets you have, ac_cv_nonblocking,[
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB"
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(1);
}
int main() {
#ifdef O_NONBLOCK
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, O_NONBLOCK))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
}
],ac_cv_nonblocking=O_NONBLOCK,[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(0);
}
int main() {
#ifdef O_NDELAY
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, O_NDELAY))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
}],ac_cv_nonblocking=O_NDELAY,[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(1);
}
int main() {
#ifdef FIONBIO
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, FIONBIO))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
], ac_cv_nonblocking=FIONBIO,ac_cv_nonblocking=none)])])])
if test "$ac_cv_nonblocking" = "O_NONBLOCK"; then
AC_DEFINE(NBLOCK_POSIX)
elif test "$ac_cv_nonblocking" = "O_NDELAY"; then
AC_DEFINE(NBLOCK_BSD)
elif test "$ac_cv_nonblocking" = "FIONBIO"; then
AC_DEFINE(NBLOCK_SYSV)
fi
LIBS="$save_libs"
dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_FUNC_SETPGRP
AC_FUNC_SETVBUF_REVERSED
AC_FUNC_ALLOCA
AC_CHECK_FUNCS(snprintf,AC_DEFINE(HAVE_SNPRINTF))
AC_CHECK_FUNCS(vsnprintf,AC_DEFINE(HAVE_VSNPRINTF))
AC_CHECK_FUNCS(strlcpy, AC_DEFINE(HAVE_STRLCPY))
AC_CHECK_FUNCS(strlcat, AC_DEFINE(HAVE_STRLCAT))
AC_CHECK_FUNCS(strlncat, AC_DEFINE(HAVE_STRLNCAT))
AC_CHECK_FUNCS(inet_pton, AC_DEFINE(HAVE_INET_PTON))
AC_CHECK_FUNCS(inet_ntop, AC_DEFINE(HAVE_INET_NTOP))
dnl Check if it supports C99 style variable length arrays
AC_CACHE_CHECK(if C99 variable length arrays are supported, ac_cv_varlen_arrays, [
AC_TRY_COMPILE(,[
int main() {
int i = 5;
int a[i];
a[0] = 1;
return 0;
}], ac_cv_varlen_arrays=yes, ac_cv_varlen_arrays=no)
])
if test "$ac_cv_varlen_arrays" = "yes" ; then
AC_DEFINE(HAVE_C99_VARLEN_ARRAY)
fi
AC_CACHE_CHECK(if we can set the core size to unlimited, ac_cv_force_core,[
AC_TRY_RUN([
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
int main() {
struct rlimit corelim;
corelim.rlim_cur = corelim.rlim_max = RLIM_INFINITY;
if (setrlimit(RLIMIT_CORE, &corelim))
exit(1);
exit(0);
}
],ac_cv_force_core=yes,ac_cv_force_core=no)
])
if test "$ac_cv_force_core" = "yes"; then
AC_DEFINE(FORCE_CORE)
fi
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(gettimeofday,AC_DEFINE(GETTIMEOFDAY),[AC_CHECK_FUNCS(lrand48,AC_DEFINE(LRADN48))])
AC_CHECK_FUNCS(getrusage,AC_DEFINE(GETRUSAGE_2),[AC_CHECK_FUNCS(times,AC_DEFINE(TIMES_2))])
AC_CHECK_FUNCS(setproctitle,AC_DEFINE(HAVE_SETPROCTITLE),[
AC_CHECK_LIB(util,setproctitle,AC_DEFINE(HAVE_SETPROCTITLE) IRCDLIBS="$IRCDLIBS-lutil",[
AC_EGREP_HEADER([#define.*PS_STRINGS.*],sys/exec.h,AC_DEFINE(HAVE_PSSTRINGS),[
AC_CHECK_FUNCS(pstat,AC_DEFINE(HAVE_PSTAT))
])
])
])
AC_CACHE_CHECK(what type of signals you have, ac_cv_sigtype, [
AC_TRY_RUN([
#include <signal.h>
int main() {
sigaction(SIGTERM, (struct sigaction *)0L, (struct sigaction *)0L);
}
], ac_cv_sigtype=POSIX, [
AC_TRY_RUN([
#include <signal.h>
int calls = 0;
void handler()
{
if (calls)
return;
calls++;
kill(getpid(), SIGTERM);
sleep(1);
}
int main() {
signal(SIGTERM, handler);
kill(getpid(), SIGTERM);
exit(0);
}
], ac_cv_sigtype=BSD,ac_cv_sigtype=SYSV)])])
if test "$ac_cv_sigtype" = "POSIX"; then
AC_DEFINE(POSIX_SIGNALS)
elif test "$ac_cv_sigtype" = "BSD"; then
AC_DEFINE(BSD_RELIABLE_SIGNALS)
else
AC_DEFINE(SYSV_UNRELIABLE_SIGNALS)
fi
AC_CHECK_FUNCS(strtoken,,AC_DEFINE(NEED_STRTOKEN))
AC_CHECK_FUNCS(strtok,,AC_DEFINE(NEED_STRTOK))
AC_CHECK_FUNCS(strerror,,AC_DEFINE(NEED_STRERROR))
AC_CHECK_FUNCS(index,,AC_DEFINE(NOINDEX))
AC_CHECK_FUNCS(strtoul,,STRTOUL="strtoul.o")
AC_CHECK_FUNCS(bcopy,,AC_DEFINE(NEED_BCOPY))
AC_CHECK_FUNCS(bcmp,,AC_DEFINE(NEED_BCMP))
AC_CHECK_FUNCS(bzero,,AC_DEFINE(NEED_BZERO))
AC_CHECK_FUNCS(strcasecmp,AC_DEFINE(GOT_STRCASECMP))
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB $INETLIB"
AC_CHECK_FUNCS(inet_addr,,AC_DEFINE(NEED_INET_ADDR))
AC_CHECK_FUNCS(inet_ntoa,,AC_DEFINE(NEED_INET_NTOA))
AC_CHECK_FUNCS(inet_netof,,AC_DEFINE(NEED_INET_NETOF))
LIBS="$save_libs"
AC_CHECK_FUNCS(syslog,AC_DEFINE(HAVE_SYSLOG))
AC_CHECK_FUNCS(vsyslog,AC_DEFINE(HAVE_VSYSLOG))
AC_SUBST(STRTOUL)
AC_SUBST(CRYPTOLIB)
AC_SUBST(MODULEFLAGS)
AC_ARG_WITH(listen, [AC_HELP_STRING([--with-listen=backlog],[Specify the listen backlog value])],
AC_DEFINE_UNQUOTED(LISTEN_SIZE,$withval),AC_DEFINE(LISTEN_SIZE,5))
AC_ARG_WITH(nick-history, [AC_HELP_STRING([--with-nick-history=length],[Specify the length of the nickname history])],
AC_DEFINE_UNQUOTED(NICKNAMEHISTORYLENGTH,$withval), AC_DEFINE(NICKNAMEHISTORYLENGTH,2000))
AC_ARG_WITH(sendq, [AC_HELP_STRING([--with-sendq=maxsendq],[Specify the max sendq for the server])],
AC_DEFINE_UNQUOTED(MAXSENDQLENGTH,$withval),AC_DEFINE(MAXSENDQLENGTH,3000000))
AC_ARG_WITH(bufferpool, [AC_HELP_STRING([--with-bufferpool=size],[Specify the size of the buffer pool])],
AC_DEFINE_UNQUOTED(BUFFERPOOL,[($withval * MAXSENDQLENGTH)]),AC_DEFINE(BUFFERPOOL,[(18 * MAXSENDQLENGTH)]))
AC_ARG_WITH(hostname, [AC_HELP_STRING([--with-hostname=host],[Specify the local hostname of the server])], AC_DEFINE_UNQUOTED(DOMAINNAME,"$withval"),AC_DEFINE_UNQUOTED(DOMAINNAME,"`hostname`"))
AC_DEFINE_UNQUOTED(MYOSNAME,"`uname -a`")
AC_ARG_WITH(permissions, [AC_HELP_STRING([--with-permissions=permissions],[Specify the default permissions for
configuration files])], AC_DEFINE_UNQUOTED(DEFAULT_PERMISSIONS,$withval), AC_DEFINE(DEFAULT_PERMISSIONS, 0600))
AC_ARG_WITH(dpath, [AC_HELP_STRING([--with-dpath=path],[Specify the path where configuration files are stored])],
AC_DEFINE_UNQUOTED(DPATH, "$withval") IRCDDIR="$withval", AC_DEFINE_UNQUOTED(DPATH,"`pwd`") IRCDDIR="`pwd`")
AC_ARG_WITH(fd-setsize, [AC_HELP_STRING([--with-fd-setsize=size],[Specify the max file descriptors to use])],
ac_fd=$withval, ac_fd=1024)
AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $ac_fd)
AC_ARG_WITH(spath, [AC_HELP_STRING([--with-spath],[Specify the location of the executable])],
AC_DEFINE_UNQUOTED(SPATH,"$withval") BINDIR="$withval",AC_DEFINE_UNQUOTED(SPATH,"`pwd`/src/ircd") BINDIR="`pwd`/src/ircd")
AC_ARG_ENABLE(nospoof, [AC_HELP_STRING([--enable-nospoof],[Enable spoofing protection])], AC_DEFINE(NOSPOOF))
AC_ARG_ENABLE(prefixaq, [AC_HELP_STRING([--enable-prefixaq],[Enable chanadmin and chanowner prefixes])], AC_DEFINE(PREFIX_AQ))
AC_ARG_ENABLE(hub, [AC_HELP_STRING([--enable-hub],[Compile as a hub server])], AC_DEFINE(HUB))
AC_ARG_WITH(showlistmodes, [AC_HELP_STRING([--with-showlistmodes], [Specify whether modes are shown in /list])],
AC_DEFINE(LIST_SHOW_MODES))
AC_ARG_WITH(topicisnuhost, [AC_HELP_STRING([--with-topicisnuhost], [Display nick!user@host as the topic setter])],
AC_DEFINE(TOPIC_NICK_IS_NUHOST))
AC_ARG_WITH(shunnotices, [AC_HELP_STRING([--with-shunnotices], [Notify a user when he/she is no longer shunned])],
AC_DEFINE(SHUN_NOTICES))
AC_ARG_WITH(no-operoverride, [AC_HELP_STRING([--with-no-operoverride], [Disable OperOverride])],
AC_DEFINE(NO_OPEROVERRIDE))
AC_ARG_WITH(disableusermod, [AC_HELP_STRING([--with-disableusermod], [Disable /set* and /chg*])],
AC_DEFINE(DISABLE_USERMOD))
AC_ARG_WITH(operoverride-verify, [AC_HELP_STRING([--with-operoverride-verify], [Require opers to invite themselves to +s/+p channels])],
AC_DEFINE(OPEROVERRIDE_VERIFY))
CHECK_SSL
CHECK_ZLIB
CHECK_LIBCURL
AC_ARG_ENABLE(dynamic-linking, [AC_HELP_STRING([--enable-dynamic-linking],[Make the IRCd dynamically link shared objects rather than statically])], AC_ENABLE_DYN, AC_DEFINE(STATIC_LINKING))
AC_ARG_ENABLE(inet6, [AC_HELP_STRING([--enable-inet6],[Make the IRCd support IPv6])], AC_ENABLE_INET6)
AC_SUBST(IRCDDIR)
AC_SUBST(BINDIR)
AC_MSG_CHECKING(if FD_SETSIZE is large enough to allow $ac_fd file descriptors)
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
int main() {
if (FD_SETSIZE >= $ac_fd)
exit(0);
exit(1);
}
], AC_MSG_RESULT(yes), [
FD_SETSIZE="-DFD_SETSIZE=$ac_fd"
AC_MSG_RESULT(no)
])
AC_SUBST(FD_SETSIZE)
case `uname -s` in
*SunOS*)
CFLAGS="$CFLAGS -D_SOLARIS"
IRCDLIBS="$IRCDLIBS -lresolv "
;;
*solaris*)
CFLAGS="$CFLAGS -D_SOLARIS"
IRCDLIBS="$IRCDLIBS -lresolv "
;;
esac
dnl REMEMBER TO CHANGE WITH A NEW TRE RELEASE!
tre_version="0.7.2"
AC_MSG_RESULT(extracting TRE regex library)
cur_dir=`pwd`
cd extras
dnl remove old tre directory to force a recompile...
rm -rf tre-$tre_version
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz tre.tar.gz
else
cp tre.tar.gz tre.tar.gz.bak
gunzip -f tre.tar.gz
cp tre.tar.gz.bak tre.tar.gz
tar xf tre.tar
fi
AC_MSG_RESULT(configuring TRE regex library)
cd tre-$tre_version
./configure --disable-agrep --disable-shared --disable-system-abi --disable-wchar --disable-multibyte --prefix=$cur_dir/extras/regexp || exit 1
AC_MSG_RESULT(compiling TRE regex library)
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing TRE regex library)
$ac_cv_prog_MAKER install || exit 1
TREINCDIR="$cur_dir/extras/regexp/include"
AC_SUBST(TREINCDIR)
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
TRELIBS="-L../extras/regexp/lib -ltre"
else
TRELIBS=`$ac_cv_path_PKGCONFIG --libs tre.pc`
fi
AC_SUBST(TRELIBS)
cd $cur_dir
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
cares_version="1.3.0"
AC_MSG_RESULT(extracting c-ares resolver library)
cur_dir=`pwd`
cd extras
dnl remove old c-ares directory to force a recompile...
rm -rf c-ares-$cares_version
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz c-ares.tar.gz
else
cp c-ares.tar.gz c-ares.tar.gz.bak
gunzip -f c-ares.tar.gz
cp c-ares.tar.gz.bak c-ares.tar.gz
tar xf c-ares.tar
fi
AC_MSG_RESULT(configuring c-ares library)
cd c-ares-$cares_version
./configure --prefix=$cur_dir/extras/c-ares || exit 1
AC_MSG_RESULT(compiling c-ares resolver library)
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing c-ares resolver library)
$ac_cv_prog_MAKER install || exit 1
CARESINCDIR="$cur_dir/extras/c-ares/include"
AC_SUBST(CARESINCDIR)
CARESLIBS="-L../extras/c-ares/lib -lcares"
AC_SUBST(CARESLIBS)
cd $cur_dir
AC_OUTPUT(Makefile src/modules/Makefile unreal ircdcron/ircdchk)
chmod 0700 unreal
chmod 0700 ircdcron/ircdchk
View File
+253
View File
@@ -0,0 +1,253 @@
#serial 1
dnl Macro: unreal_CHECK_TYPE_SIZES
dnl originally called unet_CHECK_TYPE_SIZES
dnl
dnl Check the size of several types and define a valid int16_t and int32_t.
dnl
AC_DEFUN([unreal_CHECK_TYPE_SIZES],
[dnl Check type sizes
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
if test "$ac_cv_sizeof_int" = 2 ; then
AC_CHECK_TYPE(int16_t, int)
AC_CHECK_TYPE(u_int16_t, unsigned int)
elif test "$ac_cv_sizeof_short" = 2 ; then
AC_CHECK_TYPE(int16_t, short)
AC_CHECK_TYPE(u_int16_t, unsigned short)
else
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
fi
if test "$ac_cv_sizeof_int" = 4 ; then
AC_CHECK_TYPE(int32_t, int)
AC_CHECK_TYPE(u_int32_t, unsigned int)
elif test "$ac_cv_sizeof_short" = 4 ; then
AC_CHECK_TYPE(int32_t, short)
AC_CHECK_TYPE(u_int32_t, unsigned short)
elif test "$ac_cv_sizeof_long" = 4 ; then
AC_CHECK_TYPE(int32_t, long)
AC_CHECK_TYPE(u_int32_t, unsigned long)
else
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
fi
AC_CHECK_SIZEOF(rlim_t)
if test "$ac_cv_sizeof_rlim_t" = 8 ; then
AC_DEFINE([LONG_LONG_RLIM_T], [], [Define if rlim_t is long long])
fi
])
AC_DEFUN([CHECK_LIBCURL],
[
AC_ARG_ENABLE(libcurl,
[AC_HELP_STRING([--enable-libcurl=DIR],[enable libcurl (remote include) support])],
[enable_curl=$enableval],
[enable_curl=no])
AS_IF([test "x$enable_curl" != "xno"],
[
dnl sane, default directory for Operating System-managed libcURL
dnl (when --enable-libcurl is passed without any arguments). On
dnl systems with stuff in /usr/local, /usr/local/bin should already
dnl be in PATH. On sane systems, this will invoke the curl-config
dnl installed by the package manager.
CURLCONFIG="curl-config"
AS_IF([test "x$enable_curl" != "xyes"],
[CURLCONFIG="$enable_curl/bin/curl-config"])
AC_MSG_CHECKING([$CURLCONFIG])
AS_IF([$CURLCONFIG --version 2>/dev/null >/dev/null],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_FAILURE([Could not find curl-config, try editing --enable-libcurl])])
CURLCFLAG="`$CURLCONFIG --cflags`"
CURLLIBS="`$CURLCONFIG --libs`"
dnl This test must be this way because of #3981
AS_IF([$CURLCONFIG --features | grep -q -e AsynchDNS],
[CURLUSESCARES="1"],
[CURLUSESCARES="0"])
AS_IF([test "$CURLUSESCARES" = "0"],
[AC_MSG_WARN([cURL seems compiled without c-ares support. Your IRCd will possibly stall when REHASHing!])])
dnl sanity warnings
AS_IF([test -z "${CURLLIBS}"],
[AC_MSG_WARN([CURLLIBS is empty, that probably means that I could not find $enable_curl/bin/curl-config])])
dnl Ok this is ugly, basically we need to strip the version of c-ares that curl uses
dnl because we want to use our own version (which is hopefully fully binary
dnl compatible with the curl one as well).
dnl Therefore we need to strip the cares libs in a weird way...
dnl If anyone can come up with something better and still portable (no awk!?)
dnl then let us know. -- Syzop
dnl
dnl It is dangerous to mix and match cURL with potentially ABI-incompatible versions of
dnl c-ares, just use --with-system-cares.
dnl Thus, make sure to use --with-system-cares when using system-cURL. If the user
dnl wants bundled c-ares + system libcURL, then we should filter out c-ares
dnl flags. _Only_ in that case should we mess with the flags. -- ohnobinki
AS_IF([test "x$with_system_cares" = "xno" && test "x$HOME/curl" != "x$enable_curl" && test "x/usr/share/unreal-curl" != "x$enable_curl" && test "$CURLUSESCARES" != "0" ],
[
AC_MSG_ERROR([[
You have decided to build unrealIRCd with libcURL (remote includes) support.
However, you have disabled system-installed c-ares support (--with-system-cares).
Because UnrealIRCd will use a bundled copy of c-ares which may be incompatible
with the system-installed libcURL, this is a bad idea which may result in error
messages looking like:
\`\`[error] unrealircd.conf:9: include: error downloading '(http://example.net/ex.conf)': Could not resolve host: example.net (Successful completion)''
Or UnrealIRCd might even crash.
Please build UnrealIRCd with --with-system-cares when enabling --enable-libcurl
]])
])
AS_IF([test "x`echo $CURLLIBS |grep ares`" != x && test "x$with_system_cares" = "xno"],
[
dnl Attempt one: Linux sed
XCURLLIBS="`echo "$CURLLIBS"|sed -r 's/(@<:@^ @:>@+ @<:@^ @:>@+ )(@<:@^ @:>@+ @<:@^ @:>@+ )(.+)/\1\3/g' 2>/dev/null`"
AS_IF([test "x$XCURLLIBS" = "x"],
[
dnl Attempt two: FreeBSD (and others?) sed
XCURLLIBS="`echo "$CURLLIBS"|sed -E 's/(@<:@^ @:>@+ @<:@^ @:>@+ )(@<:@^ @:>@+ @<:@^ @:>@+ )(.+)/\1\3/g' 2>/dev/null`"
AS_IF([test x"$XCURLLIBS" = x],
[
AC_MSG_ERROR([sed appears to be broken. It is needed for a remote includes compile hack.])
])
])
CURLLIBS="$XCURLLIBS"
IRCDLIBS_CURL_CARES="$CARES_LIBS"
CFLAGS_CURL_CARES="$CARES_CFLAGS"
])
dnl Make sure that linking against cURL works rather than letting the user
dnl find out after compiling most of his program. ~ohnobinki
IRCDLIBS="$IRCDLIBS $CURLLIBS"
CFLAGS="$CFLAGS $CURLCFLAG"
AC_DEFINE([USE_LIBCURL], [], [Define if you have libcurl installed to get remote includes and MOTD support])
AC_MSG_CHECKING([curl_easy_init() in $CURLLIBS])
LIBS_SAVEDA="$LIBS"
CFLAGS_SAVEDA="$CFLAGS"
LIBS="$IRCDLIBS $IRCDLIBS_CURL_CARES"
CFLAGS="$CFLAGS $CFLAGS_CURL_CARES"
AC_LINK_IFELSE(
[
AC_LANG_PROGRAM(
[[#include <curl/curl.h>]],
[[CURL *curl = curl_easy_init();]])
],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_FAILURE([You asked for libcURL (remote includes) support, but it can't be found at $enable_curl])
])
LIBS="$LIBS_SAVEDA"
CFLAGS="$CFLAGS_SAVEDA"
URL="url.o"
AC_SUBST(URL)
]) dnl AS_IF(enable_curl)
])
dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostler@juniper.net>
AC_DEFUN([CHECK_SSL],
[
AC_ARG_ENABLE(ssl,
[AC_HELP_STRING([--enable-ssl=],[enable ssl will check /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr])],
[],
[enable_ssl=no])
AS_IF([test $enable_ssl != "no"],
[
AC_MSG_CHECKING([for openssl])
for dir in $enable_ssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr; do
ssldir="$dir"
if test -f "$dir/include/openssl/ssl.h"; then
AC_MSG_RESULT([found in $ssldir/include/openssl])
found_ssl="yes";
if test ! "$ssldir" = "/usr" ; then
CFLAGS="$CFLAGS -I$ssldir/include";
fi
break
fi
if test -f "$dir/include/ssl.h"; then
AC_MSG_RESULT([found in $ssldir/include])
found_ssl="yes";
if test ! "$ssldir" = "/usr" ; then
CFLAGS="$CFLAGS -I$ssldir/include";
fi
break
fi
done
if test x_$found_ssl != x_yes; then
AC_MSG_RESULT(not found)
echo ""
echo "Apparently you do not have both the openssl binary and openssl development libraries installed."
echo "You have two options:"
echo "a) Install the needed binaries and libraries"
echo " and run ./Config"
echo "OR"
echo "b) If you don't need SSL..."
echo " Run ./Config and say 'no' when asked about SSL"
echo " (or pass --disable-ssl to ./configure)"
echo ""
exit 1
else
CRYPTOLIB="-lssl -lcrypto";
if test ! "$ssldir" = "/usr" ; then
LDFLAGS="$LDFLAGS -L$ssldir/lib";
fi
AC_DEFINE([USE_SSL], [], [Define if you want to allow SSL connections])
fi
])
])
AC_DEFUN([CHECK_ZLIB],
[
AC_ARG_ENABLE([ziplinks],
[AC_HELP_STRING([--enable-ziplinks=DIR],[enable ziplinks. will check /usr/local /usr /usr/pkg. Note that SSL does its own compression, so you won't need this for SSL links.])],
[],
[enable_ziplinks=no])
AS_IF([test $enable_ziplinks != "no"],
[
AC_MSG_CHECKING([for zlib])
for dir in $enable_ziplinks /usr/local /usr /usr/pkg; do
zlibdir="$dir"
if test -f "$dir/include/zlib.h"; then
AC_MSG_RESULT(found in $zlibdir)
found_zlib="yes";
if test "$zlibdir" != "/usr" ; then
CFLAGS="$CFLAGS -I$zlibdir/include";
fi
AC_DEFINE([ZIP_LINKS], [], [Define if you have zlib and want zip links support.])
break
fi
done
if test x_$found_zlib != x_yes; then
AC_MSG_RESULT([not found])
echo ""
echo "Apparently you do not have the zlib development library installed."
echo "You have two options:"
echo "a) Install the zlib development library"
echo " and run ./Config"
echo "OR"
echo "b) If you don't need compressed links..."
echo " Run ./Config and say 'no' when asked about ziplinks support"
echo ""
exit 1
else
IRCDLIBS="$IRCDLIBS -lz"
if test "$zlibdir" != "/usr" ; then
LDFLAGS="$LDFLAGS -L$zlibdir/lib"
fi
HAVE_ZLIB=yes
fi
AC_SUBST([HAVE_ZLIB])
])
])
Executable
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
cd "$(dirname "${0}")"
ACLOCAL_AMFLAGS=(-I autoconf/m4)
aclocal "${ACLOCAL_AMFLAGS[@]}"
autoconf
autoheader
Vendored
+5854 -9275
View File
File diff suppressed because it is too large Load Diff
+667
View File
@@ -0,0 +1,667 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT([unrealircd], [3.2.8.1], [http://bugs.unrealircd.org/], [], [http://unrealircd.org/])
AC_CONFIG_SRCDIR([src/ircd.c])
AC_CONFIG_HEADER([include/setup.h])
AC_CONFIG_AUX_DIR([autoconf])
AC_CONFIG_MACRO_DIR([autoconf/m4])
if test "x$enable_dynamic_linking" = "x"; then
echo "Please use ./Config instead of ./configure"
exit 1
fi
AC_PROG_CC
if test "$ac_cv_prog_gcc" = "yes"; then
CFLAGS="$CFLAGS -funsigned-char"
AC_CACHE_CHECK(if gcc has a working -pipe, ac_cv_pipe, [
save_cflags="$CFLAGS"
CFLAGS="$CFLAGS -pipe"
AC_TRY_COMPILE(,, ac_cv_pipe="yes", ac_cv_pipe="no")
CFLAGS="$save_cflags"
])
if test "$ac_cv_pipe" = "yes"; then
CFLAGS="-pipe $CFLAGS"
fi
fi
dnl (the gcc flag detection trick is taken from xemacs/Vin Shelton)
dnl UnrealIRCd might not be strict-aliasing safe at this time
case "`$CC -v --help 2>&1`" in
*-fstrict-aliasing* ) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
esac
dnl Pointer signedness warnings are really a pain and 99.9% of the time
dnl they are of absolutely no use whatsoever. IMO the person who decided
dnl to enable this without -Wall should be shot on sight.
case "`$CC -v --help 2>&1`" in
*-Wpointer-sign* ) CFLAGS="$CFLAGS -Wno-pointer-sign" ;;
esac
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(TOUCH,touch)
AC_PATH_PROG(OPENSSLPATH,openssl)
AC_PATH_PROG(INSTALL,install)
AC_CHECK_PROG(MAKER, gmake, gmake, make)
AC_PATH_PROG(GMAKE,gmake)
AC_PATH_PROG(GUNZIP, gunzip)
AC_PATH_PROG(PKGCONFIG, pkg-config)
dnl Checks for libraries.
AC_CHECK_LIB(descrypt, crypt,
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
IRCDLIBS="$IRCDLIBS-ldescrypt "
MKPASSWDLIBS="-ldescrypt"],
[AC_CHECK_LIB(crypt, crypt,
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
IRCDLIBS="$IRCDLIBS-lcrypt "
MKPASSWDLIBS="-lcrypt"])])
AC_CHECK_LIB(socket, socket,
[IRCDLIBS="$IRCDLIBS-lsocket "
SOCKLIB="-lsocket"])
AC_CHECK_LIB(nsl, inet_ntoa,
[IRCDLIBS="$IRCDLIBS-lnsl "
INETLIB="-lnsl"])
AC_SUBST(IRCDLIBS)
AC_SUBST(MKPASSWDLIBS)
dnl module checking based on Hyb7's module checking code
AC_DEFUN([AC_ENABLE_DYN],
[
AC_CHECK_FUNC(dlopen,, [AC_CHECK_LIB(dl, dlopen,IRCDLIBS="$IRCDLIBS -ldl",
[
AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found)
AC_DEFINE(STATIC_LINKING)
])])
hold_cflags=$CFLAGS
CFLAGS="$CFLAGS -export-dynamic"
AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [
AC_TRY_LINK(, [int i];, ac_cv_export_dynamic=yes, ac_cv_export_dynamic=no)])
if test "$ac_cv_export_dynamic" = "no"; then
CFLAGS=$hold_cflags
fi
AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[
if test "$ac_cv_prog_gcc" = "yes"; then
ac_cv_pic="-fPIC -DPIC -shared"
case `uname -s` in
Darwin*[)]
ac_cv_pic="-bundle -flat_namespace -undefined suppress"
;;
HP-UX*[)]
ac_cv_pic="-fPIC"
;;
esac
else
case `uname -s` in
SunOS*[)]
ac_cv_pic="-KPIC -DPIC -G"
;;
esac
fi
])
AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[
cat >uscore.c << __EOF__
int main() {
return 0;
}
__EOF__
$CC -o uscore $CFLAGS uscore.c 1>&5
if test -z "`strings -a uscore |grep '^_main$'`"; then
ac_cv_underscore=no
else
ac_cv_underscore=yes
fi
rm -f uscore uscore.c
])
dnl libtool has built-in tests that determine proper underscorage
if test "$ac_cv_underscore" = "yes"; then
AC_DEFINE([UNDERSCORE], [], [Define if your system prepends an underscore to symbols])
fi
MODULEFLAGS=$ac_cv_pic
dnl DYNAMIC_LINKING is not meant to be defined in include/setup.h, it's
dnl defined in the Makefiles using -D. Having it defined globally will
dnl only cause braindamage and symbol collisions :-D.
dnl AC_DEFINE([DYNAMIC_LINKING], [], [Link dynamically as opposed to statically. (Dynamic linking is the only supported method of linking atm)])
])
AC_DEFUN([AC_ENABLE_INET6],[
AC_CACHE_CHECK([if your system has IPv6 support], [ac_cv_ip6], [
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB"
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
int main() {
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
exit(1);
exit(0);
}
],
[ac_cv_ip6=yes],
[ac_cv_ip6=no])
])
if test "$ac_cv_ip6" = "no"; then
AC_MSG_ERROR([Your system does not support IPv6 so it will not be enabled])
else
AC_DEFINE([INET6], [], [Define if you want IPv6 enabled])
dnl in6addr_any detection code taken from ratbox
AC_MSG_CHECKING([for struct in6addr_any])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[[#define IN_AUTOCONF
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>]],
[[struct in6_addr a = in6addr_any;]]
)],
[AC_MSG_RESULT(yes)],
[
AC_MSG_RESULT([no])
AC_DEFINE([NO_IN6ADDR_ANY], [1], [Define to 1 if your system has no in6addr_any.])
]
)
fi
LIBS="$save_libs"
])
AC_CHECK_HEADER(sys/param.h,
AC_DEFINE([PARAMH], [], [Define if you have the <sys/param.h> header file.]))
AC_CHECK_HEADER(stdlib.h,
AC_DEFINE([STDLIBH], [], [Define if you have the <stdlib.h> header file.]))
AC_CHECK_HEADER(stddef.h,
AC_DEFINE([STDDEFH], [], [Define if you have the <stddef.h> header file.]))
AC_CHECK_HEADER(sys/syslog.h,
AC_DEFINE([SYSSYSLOGH], [], [Define if you have the <sys/syslog.h> header file.]))
AC_CHECK_HEADER(unistd.h,
AC_DEFINE([UNISTDH], [], [Define if you have the <unistd.h> header file.]))
AC_CHECK_HEADER(string.h,
AC_DEFINE([STRINGH], [], [Define if you have the <string.h> header file.]))
AC_CHECK_HEADER(strings.h,
AC_DEFINE([STRINGSH], [], [Define if you have the <strings.h> header file.]))
AC_CHECK_HEADER(malloc.h,
AC_DEFINE([MALLOCH], [<malloc.h>], [Define to <malloc.h> you need malloc.h.]))
AC_CHECK_HEADER(sys/rusage.h,
AC_DEFINE([RUSAGEH], [], [Define if you have the <sys/rusage.h> header file.]))
AC_CHECK_HEADER(glob.h,
AC_DEFINE([GLOBH], [], [Define if you have the <glob.h> header file.]))
AC_CHECK_HEADERS([stdint.h inttypes.h])
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_MODE_T
AC_TYPE_SIZE_T
AC_TYPE_INTPTR_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_TYPE_UID_T
unreal_CHECK_TYPE_SIZES
dnl in the future, it would be nice to avoid AC_TRY_RUN to allow
dnl better support for crosscompiling.
AC_CACHE_CHECK([what kind of nonblocking sockets you have], [ac_cv_nonblocking],[
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB"
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(1);
}
int main() {
#ifdef O_NONBLOCK
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, O_NONBLOCK))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
}
],ac_cv_nonblocking=O_NONBLOCK,[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(0);
}
int main() {
#ifdef O_NDELAY
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, O_NDELAY))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
}],ac_cv_nonblocking=O_NDELAY,[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(1);
}
int main() {
#ifdef FIONBIO
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, FIONBIO))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
], ac_cv_nonblocking=FIONBIO,ac_cv_nonblocking=none)])])])
if test "$ac_cv_nonblocking" = "O_NONBLOCK"; then
AC_DEFINE([NBLOCK_POSIX], [], [Define if you have O_NONBLOCK])
elif test "$ac_cv_nonblocking" = "O_NDELAY"; then
AC_DEFINE([NBLOCK_BSD], [], [Define if you have O_NDELAY])
elif test "$ac_cv_nonblocking" = "FIONBIO"; then
AC_DEFINE([NBLOCK_SYSV], [], [Define if you have FIONBIO])
fi
LIBS="$save_libs"
dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_FUNC_SETPGRP
AC_FUNC_SETVBUF_REVERSED
AC_FUNC_ALLOCA
AC_CHECK_FUNCS(snprintf,
AC_DEFINE([HAVE_SNPRINTF], [], [Define if you have snprintf]))
AC_CHECK_FUNCS(vsnprintf,
AC_DEFINE([HAVE_VSNPRINTF], [], [Define if you have vsnprintf]))
AC_CHECK_FUNCS(strlcpy,
AC_DEFINE([HAVE_STRLCPY], [], [Define if you have strlcpy. Otherwise, an internal implementation will be used!]))
AC_CHECK_FUNCS(strlcat,
AC_DEFINE([HAVE_STRLCAT], [], [Define if you have strlcat]))
AC_CHECK_FUNCS(strlncat,
AC_DEFINE([HAVE_STRLNCAT], [], [Define if you have strlncat]))
AC_CHECK_FUNCS(inet_pton,
AC_DEFINE([HAVE_INET_PTON], [], [Define if you have inet_pton]))
AC_CHECK_FUNCS(inet_ntop,
AC_DEFINE([HAVE_INET_NTOP], [], [Define if you have inet_ntop]))
dnl Check if it supports C99 style variable length arrays
AC_CACHE_CHECK([if C99 variable length arrays are supported], [ac_cv_varlen_arrays], [
AC_TRY_COMPILE(,[
int main() {
int i = 5;
int a[i];
a[0] = 1;
return 0;
}], ac_cv_varlen_arrays=yes, ac_cv_varlen_arrays=no)
])
if test "$ac_cv_varlen_arrays" = "yes" ; then
AC_DEFINE([HAVE_C99_VARLEN_ARRAY], [], [Define if you have a compiler with C99 variable length array support])
fi
dnl This check doesn't need to be in ./configure, we can
dnl write the sourcecode to actually handle the return value
dnl of setrlimit if necessary... -- ohnobinki
AC_CACHE_CHECK([if we can set the core size to unlimited], [ac_cv_force_core], [
AC_TRY_RUN([
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
int main() {
struct rlimit corelim;
corelim.rlim_cur = corelim.rlim_max = RLIM_INFINITY;
if (setrlimit(RLIMIT_CORE, &corelim))
exit(1);
exit(0);
}
],ac_cv_force_core=yes,ac_cv_force_core=no)
])
if test "$ac_cv_force_core" = "yes"; then
AC_DEFINE([FORCE_CORE], [], [Define if you can set the core size to unlimited])
fi
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([gettimeofday],
[AC_DEFINE([GETTIMEOFDAY], [], [Define if you have gettimeofday])],
[AC_CHECK_FUNCS([lrand48],
[AC_DEFINE([LRADN48], [], [Define if you have lrand48])])])
AC_CHECK_FUNCS([getrusage],
[AC_DEFINE([GETRUSAGE_2], [], [Define if you have getrusage])],
[AC_CHECK_FUNCS([times],
[AC_DEFINE([TIMES_2], [], [Define if you have times])])])
AC_CHECK_FUNCS([setproctitle],
[AC_DEFINE([HAVE_SETPROCTITLE], [], [Define if you have setproctitle])],
[AC_CHECK_LIB([util],
[setproctitle],
[AC_DEFINE([HAVE_SETPROCTITLE], [], [Define if you have setproctitle])
IRCDLIBS="$IRCDLIBS-lutil"],
[
AC_EGREP_HEADER([#define.*PS_STRINGS.*],[sys/exec.h],
[AC_DEFINE([HAVE_PSSTRINGS],[], [Define if you have PS_STRINGS])],
[AC_CHECK_FUNCS([pstat],
[AC_DEFINE([HAVE_PSTAT], [], [Define if you have pstat])])])
])
]
)
AC_CACHE_CHECK([what type of signals you have], [ac_cv_sigtype], [
AC_TRY_RUN([
#include <signal.h>
int main() {
sigaction(SIGTERM, (struct sigaction *)0L, (struct sigaction *)0L);
}
], ac_cv_sigtype=POSIX, [
AC_TRY_RUN([
#include <signal.h>
int calls = 0;
void handler()
{
if (calls)
return;
calls++;
kill(getpid(), SIGTERM);
sleep(1);
}
int main() {
signal(SIGTERM, handler);
kill(getpid(), SIGTERM);
exit(0);
}
], ac_cv_sigtype=BSD,ac_cv_sigtype=SYSV)])])
if test "$ac_cv_sigtype" = "POSIX"; then
AC_DEFINE([POSIX_SIGNALS], [], [Define if you have POSIX signals])
elif test "$ac_cv_sigtype" = "BSD"; then
AC_DEFINE([BSD_RELIABLE_SIGNALS], [], [Define if you have BSD signals])
else
AC_DEFINE([SYSV_UNRELIABLE_SIGNALS], [], [Define if you have SYSV signals])
fi
AC_CHECK_FUNCS(strtoken,,AC_DEFINE([NEED_STRTOKEN], [], [Define if you need the strtoken function.]))
AC_CHECK_FUNCS(strtok,,AC_DEFINE([NEED_STRTOK], [], [Define if you need the strtok function.]))
AC_CHECK_FUNCS(strerror,,AC_DEFINE([NEED_STRERROR], [], [Define if you need the strerror function.]))
AC_CHECK_FUNCS(index,,AC_DEFINE([NOINDEX], [], [Define if you do not have the index function.]))
AC_CHECK_FUNCS(strtoul,,STRTOUL="strtoul.o")
AC_CHECK_FUNCS(bcopy,,AC_DEFINE([NEED_BCOPY], [], [Define if you don't have bcopy]))
AC_CHECK_FUNCS(bcmp,,AC_DEFINE([NEED_BCMP], [], [Define if you don't have bcmp]))
AC_CHECK_FUNCS(bzero,,AC_DEFINE([NEED_BZERO], [], [Define if you need bzero]))
AC_CHECK_FUNCS(strcasecmp,AC_DEFINE([GOT_STRCASECMP], [], [Define if you have strcasecmp]))
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB $INETLIB"
AC_CHECK_FUNCS(inet_addr,,AC_DEFINE([NEED_INET_ADDR], [], [Define if you need inet_addr]))
AC_CHECK_FUNCS(inet_ntoa,,AC_DEFINE([NEED_INET_NTOA], [], [Define if you need inet_ntoa]))
AC_CHECK_FUNCS(inet_netof,,AC_DEFINE([NEED_INET_NETOF], [], [Define if you need inet_netof]))
LIBS="$save_libs"
AC_CHECK_FUNCS(syslog,AC_DEFINE([HAVE_SYSLOG], [], [Define if you have syslog]))
AC_CHECK_FUNCS(vsyslog,AC_DEFINE([HAVE_VSYSLOG], [], [Define if you have vsyslog]))
AC_SUBST(STRTOUL)
AC_SUBST(CRYPTOLIB)
AC_SUBST(MODULEFLAGS)
AC_ARG_WITH(listen, [AS_HELP_STRING([--with-listen=backlog],[Specify the listen backlog value])],
[AC_DEFINE_UNQUOTED([LISTEN_SIZE], [$withval], [Set to the listen backlog size you want])],
[AC_DEFINE([LISTEN_SIZE], [5], [Set to the listen backlog size you want])])
AC_ARG_WITH(nick-history, [AS_HELP_STRING([--with-nick-history=length],[Specify the length of the nickname history])],
[AC_DEFINE_UNQUOTED([NICKNAMEHISTORYLENGTH], [$withval], [Set to the nickname history length you want])],
[AC_DEFINE([NICKNAMEHISTORYLENGTH], [2000], [Set to the nickname history length you want])])
AC_ARG_WITH([sendq], [AS_HELP_STRING([--with-sendq=maxsendq],[Specify the max sendq for the server])],
[AC_DEFINE_UNQUOTED([MAXSENDQLENGTH], [$withval], [Set to the max sendq you want])],
[AC_DEFINE([MAXSENDQLENGTH], [3000000], [Set to the max sendq you want])])
AC_ARG_WITH(bufferpool, [AS_HELP_STRING([--with-bufferpool=size],[Specify the size of the buffer pool])],
[AC_DEFINE_UNQUOTED([BUFFERPOOL],[($withval * MAXSENDQLENGTH)], [Set to the bufferpool size you want])],
[AC_DEFINE([BUFFERPOOL],[(18 * MAXSENDQLENGTH)], [Set to the bufferpool size you want])])
AC_ARG_WITH(permissions, [AS_HELP_STRING([--with-permissions=permissions], [Specify the default permissions for
configuration files])],
dnl We have an apparently out-of-place 0 here because of a MacOSX bug and because
dnl we assume that a user thinks that `chmod 0600 blah' is the same as `chmod 600 blah'
dnl (#3189)
[AC_DEFINE_UNQUOTED([DEFAULT_PERMISSIONS], [0$withval], [The default permissions for configuration files. Set to 0 to prevent unrealircd from calling chmod() on the files.])],
[AC_DEFINE([DEFAULT_PERMISSIONS], [0600], [The default permissions for configuration files. Set to 0 to prevent unrealircd from calling chmod() on the files.])])
AC_ARG_WITH(dpath, [AS_HELP_STRING([--with-dpath=path],[Specify the path where configuration files are stored])],
[AC_DEFINE_UNQUOTED([DPATH], ["$withval"], [Define the location of the configuration files])
IRCDDIR="$withval"],
[AC_DEFINE_UNQUOTED([DPATH], ["`pwd`"], [Define the location of the configuration files])
IRCDDIR="`pwd`"])
AC_ARG_WITH(fd-setsize, [AS_HELP_STRING([--with-fd-setsize=size], [Specify the max file descriptors to use])],
[ac_fd=$withval],
[ac_fd=1024])
AC_DEFINE_UNQUOTED([MAXCONNECTIONS], [$ac_fd], [Set to the max connections you want])
dnl It would be nice if this could just respect --bindir like every other
dnl program does someday... -- ohnobinki
AC_ARG_WITH(spath, [AS_HELP_STRING([--with-spath],[Specify the location of the executable])],
[AC_DEFINE_UNQUOTED([SPATH], ["$withval"], [Define the location of the executable])
BINDIR="$withval"],
[AC_DEFINE_UNQUOTED([SPATH], ["`pwd`/src/ircd"], [Define the location of the executable])
BINDIR="`pwd`/src/ircd"])
# enable nospoof by default; protects against javascript POST attacks and much more ;-)
AC_ARG_ENABLE([nospoof],
[AS_HELP_STRING([--disable-nospoof], [Disable spoofing protection (requires clients to respond to a randomly generated PING packet after USER and NICK but before using other commands)])],
[],
[enable_nospoof=yes])
AS_IF([test $enable_nospoof = "yes"],
[AC_DEFINE([NOSPOOF], [], [Define if you want spoof protection])])
AC_ARG_ENABLE([prefixaq],
[AS_HELP_STRING([--disable-prefixaq],[Enable chanadmin (+a) and chanowner (+q) prefixes])],
[],
[enable_prefixaq=yes])
AS_IF([test $enable_prefixaq = "yes"],
[AC_DEFINE([PREFIX_AQ], [], [Define if you want +a/+q prefixes])])
AC_ARG_WITH(showlistmodes,
[AS_HELP_STRING([--with-showlistmodes], [Specify whether modes are shown in /list])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([LIST_SHOW_MODES], [], [Define if you want modes shown in /list])])])
AC_ARG_WITH(topicisnuhost, [AS_HELP_STRING([--with-topicisnuhost], [Display nick!user@host as the topic setter])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([TOPIC_NICK_IS_NUHOST], [], [Define if you want nick!user@host shown for the topic setter])])])
AC_ARG_WITH(shunnotices, [AS_HELP_STRING([--with-shunnotices], [Notify a user when he/she is no longer shunned])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([SHUN_NOTICES], [], [Define if you want users to be notified when their shun is removed])])])
AC_ARG_WITH(no-operoverride, [AS_HELP_STRING([--with-no-operoverride], [Disable OperOverride])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([NO_OPEROVERRIDE], [], [Define if you want OperOverride disabled])])])
AC_ARG_WITH(disableusermod, [AS_HELP_STRING([--with-disableusermod], [Disable /set* and /chg*])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([DISABLE_USERMOD], [], [Define if you want to disable /set* and /chg*])])])
AC_ARG_WITH(operoverride-verify, [AS_HELP_STRING([--with-operoverride-verify], [Require opers to invite themselves to +s/+p channels])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([OPEROVERRIDE_VERIFY], [], [Define if you want opers to have to use /invite to join +s/+p channels])])])
AC_ARG_WITH(disable-extendedban-stacking, [AS_HELP_STRING([--with-disable-extendedban-stacking], [Disable extended ban stacking])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([DISABLE_STACKED_EXTBANS], [], [Define to disable extended ban stacking (~q:~c:\#chan, etc)])])])
AC_ARG_WITH(system-tre, [AS_HELP_STRING([--with-system-tre], [Use the system tre package instead of bundled, discovered using pkg-config])], [], [with_system_tre=no])
AC_ARG_WITH(system-cares, [AS_HELP_STRING([--with-system-cares], [Use the system c-ares (at least version 1.6.0) package instead of bundled c-ares, discovered using pkg-config])], [], [with_system_cares=no])
CHECK_SSL
CHECK_ZLIB
AC_ARG_ENABLE(dynamic-linking, [AS_HELP_STRING([--disable-dynamic-linking], [Make the IRCd statically link with shared objects rather than dynamically (noone knows if disabling dynamic linking actually does anything or not)])],
[enable_dynamic_linking=$enableval], [enable_dynamic_linking="yes"])
AS_IF([test $enable_dynamic_linking = "yes"],
[AC_ENABLE_DYN],
[AC_DEFINE([STATIC_LINKING], [], [Link... statically(?) (defining this macro will probably cause the build tofail)])])
AC_ARG_ENABLE([inet6], [AS_HELP_STRING([--enable-inet6], [Make the IRCd support IPv6])],
[AS_IF([test $enableval = "yes"],
[AC_ENABLE_INET6])])
AC_SUBST(IRCDDIR)
AC_SUBST(BINDIR)
AC_MSG_CHECKING([if FD_SETSIZE is large enough to allow $ac_fd file descriptors])
AC_COMPILE_IFELSE([
#include <sys/types.h>
#include <sys/time.h>
int main() {
#if FD_SETSIZE < $ac_fd
#error FD_SETSIZE is smaller than $ac_fd
#endif
exit(0);
}
], AC_MSG_RESULT([yes]), [
# must be passed on the commandline to avoid a ``warning, you redefined something''
FD_SETSIZE="-DFD_SETSIZE=$ac_fd"
AC_MSG_RESULT(no)
])
AC_SUBST([FD_SETSIZE])
case `uname -s` in
*SunOS*|*solaris*)
AC_DEFINE([_SOLARIS], [], [Define if you are compiling unrealircd on Sun's (or Oracle's?) Solaris])
IRCDLIBS="$IRCDLIBS -lresolv "
;;
esac
dnl c-ares needs PATH_SEPARATOR set or it will
dnl fail on certain solaris boxes. We might as
dnl well set it here.
export PATH_SEPARATOR
AS_IF([test "x$with_system_tre" = "xno"],[
dnl REMEMBER TO CHANGE WITH A NEW TRE RELEASE!
tre_version="0.8.0"
AC_MSG_RESULT(extracting TRE regex library)
cur_dir=`pwd`
cd extras
dnl remove old tre directory to force a recompile...
dnl and remove its installation prefix just to clean things up.
rm -rf tre-$tre_version rege[]xp
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz tre.tar.gz
else
cp tre.tar.gz tre.tar.gz.bak
gunzip -f tre.tar.gz
cp tre.tar.gz.bak tre.tar.gz
tar xf tre.tar
fi
AC_MSG_RESULT(configuring TRE regex library)
cd tre-$tre_version
./configure --disable-agrep --disable-shared --disable-system-abi --disable-wchar --disable-multibyte --prefix=$cur_dir/extras/regexp || exit 1
AC_MSG_RESULT(compiling TRE regex library)
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing TRE regex library)
$ac_cv_prog_MAKER install || exit 1
TRE_CFLAGS="-I$cur_dir/extras/regexp/include"
AC_SUBST(TRE_CFLAGS)
TRE_LIBS=
dnl See c-ares's compilation section for more info on this hack.
dnl ensure that we're linking against the bundled version of tre
dnl (we only reach this code if linking against the bundled version is desired).
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
[TRE_LIBS="`$ac_cv_path_PKGCONFIG --static --libs tre.pc | sed ['s,-L\([^ ]\+lib\) -ltre,\1/libtre.a,']`"])
dnl For when pkg-config isn't available -- or for when pkg-config
dnl doesn't see the tre.pc file somehow... (#3982)
AS_IF([test -z "$TRE_LIBS"],
[TRE_LIBS="../extras/regexp/lib/libtre.a"])
AC_SUBST(TRE_LIBS)
cd $cur_dir
],[
dnl use pkgconfig for tre:
PKG_CHECK_MODULES([TRE], tre >= 0.7.5)
])
AS_IF([test "x$with_system_cares" = "xno"],[
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
dnl NOTE: when changing this here, ALSO change it in ./curlinstall
dnl and in the comment in this file around line 400!
cares_version="1.7.3"
AC_MSG_RESULT(extracting c-ares resolver library)
cur_dir=`pwd`
cd extras
dnl remove old c-ares directory to force a recompile...
rm -rf c-ares-$cares_version c-ares
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz c-ares.tar.gz
else
cp c-ares.tar.gz c-ares.tar.gz.bak
gunzip -f c-ares.tar.gz
cp c-ares.tar.gz.bak c-ares.tar.gz
tar xf c-ares.tar
fi
AC_MSG_RESULT(configuring c-ares library)
cd c-ares-$cares_version
./configure --prefix=$cur_dir/extras/c-ares --disable-shared || exit 1
AC_MSG_RESULT(compiling c-ares resolver library)
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing c-ares resolver library)
$ac_cv_prog_MAKER install || exit 1
CARES_CFLAGS="-I$cur_dir/extras/c-ares/include"
AC_SUBST(CARES_CFLAGS)
CARES_LIBS="-L../extras/c-ares/lib"
dnl Set default library parameters for when pkg-config is not available
dnl Ugly cd'ing out of extras/c-ares-xxx ;)
dnl Note: must be a full path, not relative path.
cd ../..
CARESLIBSALT="`pwd`/extras/c-ares/lib/libcares.a"
cd -
case `uname -s` in
*FreeBSD*)
CARESLIBSALT="$CARESLIBSALT"
;;
*Linux*)
CARESLIBSALT="$CARESLIBSALT -lrt"
;;
*SunOS*)
CARESLIBSALT="$CARESLIBSALT -lrt"
;;
esac
dnl Use pkg-config for c-ares libraries, and if not available use defaults
dnl from above. Also, if pkg-config returns an empty result (ex: on fbsd
dnl or older versions it might be missing --static) then also use defaults.
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
CARES_LIBS="$CARES_LIBS $CARESLIBSALT"
else
CARES_LIBSPRE="$CARES_LIBS"
dnl the sed expression forces an absolute path to the .a file to be generated
dnl because this is what libtool would do. If this wasn't done and /usr/lib*/libcares.so
dnl exists, then unrealircd would still try to link against the system c-ares.
dnl The [] quotation is needed because the sed expression has [] in it.
[CARES_LIBS="$CARES_LIBS `$ac_cv_path_PKGCONFIG --static --libs libcares.pc | sed -e 's,-L\([^ ]\+lib\) -lcares,\1/libcares.a,'`"]
if test "$CARES_LIBS" = "$CARES_LIBSPRE " ; then
CARES_LIBS="$CARES_LIBS $CARESLIBSALT"
fi
fi
AC_SUBST(CARES_LIBS)
cd $cur_dir
],[
dnl use pkg-config for system c-ares:
PKG_CHECK_MODULES([CARES], libcares >= 1.6.0)
])
CHECK_LIBCURL
AC_CONFIG_FILES([Makefile
src/modules/Makefile
unreal
ircdcron/ircdchk
ircdcron/ircd.cron])
AC_OUTPUT
chmod 0700 unreal
chmod 0700 ircdcron/ircdchk
+4453
View File
File diff suppressed because it is too large Load Diff
+70 -51
View File
@@ -1,66 +1,85 @@
#!/bin/sh
if test "x$1" = x -o "x$2" = x ; then
echo "Syntax:"
echo "curlinstall ares_path libcurl_path"
echo ""
URL="http://www.unrealircd.com/files/curl-latest.tar.gz"
OUTF="curl-latest.tar.gz"
OUTD="curl-latest"
ARESPATH="`pwd`/extras/c-ares"
CARESVERSION="1.7.3"
if [ ! -f "Unreal.nfo" ]; then
echo "Please run this program from your UnrealIRCd directory"
echo "(usually $HOME/Unreal3.2 or something like that)"
exit 1
fi
wget --version 1>/dev/null 2>&1
if [ "$?" = 0 ]; then
FETCHER="wget"
else
fetch --version 1>/dev/null 2>&1
if [ "$?" = 0 ]; then
FETCHER="fetch"
else
lynx --version 1>/dev/null 2>&1
if [ "$?" = 0 ]; then
FETCHER="lynx"
else
echo "ERROR: unable to find wget/fetch/lynx, please install at least one of these programs"
exit 1
fi
fi
fi
if [ ! -d tmp ]; then
mkdir tmp || exit 1
fi
cd tmp || exit 1
rm -f "$OUTF"
if [ "$FETCHER" = "wget" ]; then
wget -O "$OUTF" "$URL"
elif [ "$FETCHER" = "lynx" ]; then
lynx -dump "$URL" >"$OUTF"
elif [ "$FETCHER" = "fetch" ]; then
cd tmp #todo: find out the cmd line parameter ;)
fetch "$URL"
fi
if [ "$?" != 0 ]; then
echo "ERROR: Something went wrong while trying to download $URL"
exit 1
fi
rm -rf "$OUTD" # remove old directory prior to extracting
tar xzf "$OUTF" || exit 1
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
c="\c"
else
n="-n"
fi
save_PWD=`pwd`
echo "Installing ares"
cd $1
./configure --prefix=$HOME/ares && make && make install
SSLFLAG=""
while [ -z "$SSLFLAG" ] ; do
if [ ! -d "$ARESPATH/lib" ]; then
echo "c-ares has not been build yet, let's do that now..."
cd ../extras/
tar xzf c-ares.tar.gz || exit 1
cd c-ares-$CARESVERSION || exit 1
./configure --prefix=$ARESPATH || exit 1
(make && make install) || exit 1
cd ../../tmp/
echo "c-ares built."
echo ""
echo "Should libcurl be built with SSL support?"
echo $n "-> " $c
read cc
case "$cc" in
[Yy]*)
SSLFLAG="--with-ssl"
;;
[Nn]*)
SSLFLAG="--without-ssl"
;;
*)
echo ""
echo "You must enter either Yes or No"
;;
esac
done
if [ -f $HOME/ares/lib/libcares.a ] ; then
if [ -f $HOME/ares/lib/libares.a ] ; then
rm -f $HOME/ares/lib/libares.a
fi
cp $HOME/ares/lib/libcares.a $HOME/ares/lib/libares.a
fi
echo "Installing libcurl"
cd $2
CPPFLAGS="-I$HOME/ares/include" ./configure --prefix=$HOME/curl --disable-shared \
--disable-thread --enable-ares=$HOME/ares --disable-ipv6 $SSLFLAG
cp -R $HOME/ares/lib ares
# We assume curl has been packaged in a way it will extract to "$OUTD"/
cd "$OUTD" || exit 1
echo "Building and installing libcurl"
CPPFLAGS="-I$ARESPATH/include" ./configure --prefix=$HOME/curl --disable-shared \
--disable-thread --enable-ares=$ARESPATH --disable-ipv6 $SSLFLAG
cp -R $ARESPATH/lib ares
make && make install
if [ -f $HOME/curl/lib/libares.a ] ; then
rm -f $HOME/curl/lib/libares.a
fi
cp $HOME/ares/lib/libares.a $HOME/curl/lib
cd $save_PWD
echo ""
echo ""
echo "libcurl has been installed. When running ./Config specify:"
echo "$HOME/curl"
echo "for the directory you installed libcurl to."
#cp $ARESPATH/lib/libcares.a $HOME/curl/lib
# that isn't needed anymore as the lib is already in unreal...
+7 -6
View File
@@ -119,12 +119,13 @@ Tom Hopkins <hoppie@buengf.bu.edu> / September, October 1990:
lines worth. :)
UnrealIRCd Coders
Carsten Munk <stskeeps@unrealircd.com> / May 1999, date
Dominick Meglio <codemastr@unrealircd.com> / June 1999, date
David Flynn / March 2000, June 2000
McSkaf / June 2001, September 2001
Finny Merrill <griever@unrealircd.com> / November 2001, December 2002
Bram Matthys <syzop@unrealircd.com> / January 2002, date
Carsten Munk <stskeeps@unrealircd.com> / May 1999 - December 2008
Dominick Meglio <codemastr@unrealircd.com> / June 1999 - August 2005
David Flynn / March 2000 - June 2000
McSkaf / June 2001 - September 2001
Finny Merrill <griever@unrealircd.com> / November 2001 - December 2002
Bram Matthys <syzop@unrealircd.com> / January 2002 - date
This list is incomplete, type /INFO on IRC to find the updated list.
Thanks go to those persons not mentioned here who have added their advice,
opinions, and code to IRC.
+117 -16
View File
@@ -1,21 +1,81 @@
Some minor rules about patches & modifications to UnrealIRCd
Rules about patches & modifications to UnrealIRCd
1. When making a change, always add a small description in Changes, in the
BOTTOM
BOTTOM. Don't forget to mention the bug# and credit the reporter (if any).
2. If new files are made, it must contain proper copyright headers,
and a $Id$ somewhere.
3. /*
* These kind of comments
*/
3. If you want to submit patches (f.e. if you don't have CVS write access)
then submit them to http://bugs.unrealircd.org/ (shortly called bugs*)
using "cvs diff -u > patchname". A submission must contain description of
what it does, etc.
4. Each bug or feature should have a bug# so people can have a discussion
about it. This has a few implications (read!!):
* People must report bugs/feature requests to bugs* and not on
IRC, e-mail, etc.
* That means other people can see the bug# and comment on it. This means
discussion is easy to read back for each issue and not spread between
several IRC logs.
Furthermore, by using the bugtracker instead of directly committing,
people could point out that there might be a better way to do things
than you originally thought, or it might be that other devs don't like
it at all.
* If a head coder has 'acknowledged' or 'confirmed' the bug or stated in
a comment that it's OK to implement, then a dev may take the issue.
The dev should change the status to 'assigned' and work on it, then
commit and change it to 'resolved', set 'fixed in version' to next
release, and add a comment pasting the relevant Changelog item and the
releaseid (.XYZ).
Of course other guidelines, like #7 and #8 still apply.
5. Do not commit changes that do not have an associated bug# and have not
had any discussion.
Small/tiny bugfixes that do not change any functionality, are very
unlikely to break anything and definitely don't require any prior
discussion may be exempted.
6. Regarding reidenting, restructuring or other code cleanups: please
discuss before doing so. The other devs might not agree with you on the
particular cleanup you have in mind which would result in another
clean-up-the-cleanup commit.
You may, however reindent and clean up individual sections when you are
working on fixing a particular bug# or implementing a new feature. In fact
you're encouraged to do so if the code is confusing without it. However,
obey the style of Unreal's code (mostly outlined in this document)
and do not introduce yet another (new) style. Also, be careful with doing
any cleanup: if you're unsure in any way about the use of something,
or something that looks redundant on first sight, then look more
carefully... it might indeed be useless and/or redundant, but it might
also be a subtle thing that can create great bugs when 'cleaned up'.
7. Prior to a release: be very careful with any restructuring of a subsystem
or doing any major commits that may break things. Stuff like this can be
perfectly fine if there are many months to go, but are not good to do a
month before release. The head coder may impose additional restrictions
during such a period.
8. During the Release Candidate stage (from RC1 until the final release)
only the head coder may commit directly, all others should ask and
present their patch before committing. Yes, even if you are changing only
1 line of code or text.
9. UnrealIRCd should compile on all supported operating systems and
platforms, using GCC 3 or higher on *NIX, and Visual Studio 2008 or
higher on Windows. This means you cannot blindly use all C99 extensions.
10. Coders should test their code before committing.
11. /*
* These kind of comments
*/
NOT
// These kind of comments
4. if (something == 1)
12. if (something == 1)
{
moo; /* comment */
/* This does what what what */
@@ -27,15 +87,56 @@ Some minor rules about patches & modifications to UnrealIRCd
if (something == 1) {
}
5. Do not touch version.c.SH or version.h, unless you are a head coder
if you need a credit in, contact us
13. Do not touch version.c.SH or version.h, unless you are a head coder
if you need a credit in, contact us
6. Patches are submitted to coders@lists.unrealircd.org,
using "cvs diff -u > patchname". A submision must contain description of
what it does, etc.
7. Protocol changes must be discussed before making patches for it.
14. Protocol changes must be discussed before making patches for it.
8. We do NOT rip people off. If we use other people's code, it MUST be
properly credited.
15. We do NOT rip people off. If we use other people's code, it MUST be
properly credited.
16. We generally use tabsize 4 and 8. In any case, use tabs and NOT spaces.
Some code is old and horrible and has a mix of tabs and spaces used for
spacing, that's something we do not want to have ;)
17. Be careful about overflows. 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.
18. Speed. When optimizing or writing code, keep in mind that readability and
stability comes FIRST, and after that comes speed. So we'd rather prefer some
readable code (even if difficult) over some odd highly optimized routine which
nobody understands, is difficult to extend, and might have several bugs.
As mentioned earlier: use 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.
19. Initialize your structs and use the proper memory calls.
In UnrealIRCd we use MyMalloc, MyMallocEx and MyFree (so not malloc/free).
MyMalloc usually maps to malloc, and MyMallocEx is a malloc plus filling
the memory area (eg: the struct) with zero's (a la calloc).
Use of MyMallocEx is suggested. In general you should not be using MyMalloc.
"But MyMalloc is faster!" you might say. This is true, but using MyMallocEx
has very little speed impact and enormous benefits: people tend to forget
to set certain fields in the struct to NULL, or much more common: when
someone later on (eg: 1 year later) adds a field to a struct, there could
be several places he/she needs to update to make sure x->something is NULL
after allocating a new struct. Bad idea.
Little speed impact, huge stability benefits, easy decision ;).
20. Comment your code! This should speak for itself...
Put comments wherever you think they are needed, to aid any further coders
with reading your code.. and, in fact, it will aid yourself as well if you
would look back at your code 2 years later.
If there's some obscure pitfall, do mention it! Don't just "hope" a next
author will see it like you did.
21. Use enums whenever possible, rather than #define constants. Besides making
things more clean, it also aids debugging.
+87 -135
View File
@@ -1,153 +1,105 @@
==[ IMPORTANT MESSAGE ABOUT DISABLING NOSPOOF ]==
Disabling NOSPOOF at windows (w9x, nt, w2k, xp) is NOT recommended since this
WILL allow users to use "spoofed hosts" (like the IP of someone you trust).
If you got problems with NOSPOOF fix your client (bot?) instead (you should
PONG back to the initial PING at connect).
==[ GENERAL GUIDELINES ]==
First of all you need Microsoft Visual C++, compiling with cygwin
is not supported.
First of all you need Microsoft Visual C++ (see below), compiling with
cygwin is not supported.
VC++ 7.x (.NET) is highly recommended. VC 6 might work but it requires
the Platform SDK (PSDK), it also has quite some bugs (there are 5 servicepacks!).
Basically VC7 is just much easier and known to work, therefore we'll assume
in this text that you are using it.
Compatible compilers:
cygwin NOT supported. Will not work. Should be no reason to use this anyway
as cygwin is an emulation layer. It's obviously much better to run
native (Windows) code on Windows.
msvc 6.x Microsoft Visual Studio 6 does not work, this compiler is too old.
msvc 7.x Microsoft Visual Studio 7.x (.NET), works.
msvc 8.x Microsoft Visual Studio 8.x (.NET 2005), including the free kit, works.
msvc 9.x Microsoft Visual Studio 9.x (.NET 2008), is used for official compile.
mssdk Microsoft Windows SDK for Windows 7
== Simple compile (no SSL/ZIP/Remote includes) ==
If you don't have the paid version of Microsoft Visual Studio 7.x, then you can
use the FREE development kit available for Windows 7 explained below:
1. Download the 'MS SDK for Windows 7 and .NET Framework 3.5 SP1' at:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en
2. NOTE: Whenever you need to compile something we say 'Start the Visual Studio
.NET Command Prompt' below, but you - a person using the free version - will
actually have to start the CMD Shell instead (check out the
Start Menu under Microsoft Windows SDK v7.0). Users on x64 environment will have
to change their environment to x86 by typing 'SETENV /x86'.
==[ EXTERNAL LIBRARIES ]==
Fetch the external libraries (c-ares, tre, openssl, zlib, curl) from:
http://www.vulnscan.org/unrealwin32dev/
==[ COMPILING ]==
1. Start the Visual Studio .NET Command Prompt
2. Go to your UnrealIrcd dir (like: cd \dev\unreal3.2) and then compile with:
nmake -f makefile.win32
This will generate a wircd.exe and unreal.exe
3. Copy the src\win32\tre.dll to your UnrealIrcd main dir.
4. Done!
2. Go to your UnrealIRCd dir (like: cd \dev\unreal3.2)
3. Have a look at 'makefile.win32' to look at what parameters you need to
use, this depends on what libraries you want to link in and their location.
4. Two options, use either one (B is preferred):
A. Edit makefile.win32 directly to reflect your configuration and run
'nmake -f makefile.win32'
B. Don't edit makefile.win32 but instead create a one-line command (which
you can put in a batch file), like this (all on one line!):
nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib"
ZLIB_LIB_DIR="c:\dev\zlib\dll32" USE_SSL=1
OPENSSL_INC_DIR="c:\openssl\include" OPENSSL_LIB_DIR="c:\openssl\lib"
USE_REMOTEINC=1 LIBCURL_INC_DIR="c:\dev\curl-ssl\include"
LIBCURL_LIB_DIR="c:\dev\curl-ssl\lib\dll-release"
CARES_LIB_DIR="C:\dev\c-ares\vc\cares\dll-release"
CARES_INC_DIR="C:\dev\c-ares" CARESLIB="cares.lib"
TRE_LIB_DIR="C:\dev\tre\win32\release" TRE_INC_DIR="C:\dev\tre"
TRELIB="tre.lib"
5. Your compile is now done, you can package unreal if you have InnoSetup,
in that case check out src\win32\unrealinst.iss
Otherwise, manually copy over the necessary files (and the dll files
from the external libraries).
== Compiling modules ==
==[ Compiling modules ]==
1. Put your module (the .c file) in src\modules (eg: c:\dev\unreal3.2\src\modules).
2. Start the Visual Studio .NET Command Prompt
3. Go to your UnrealIrcd dir (like: cd \dev\unreal3.2).
3. Go to your UnrealIRCd dir (like: cd \dev\unreal3.2).
4. Compile the module with:
nmake -f makefile.win32 custommodule MODULEFILE=<name>
nmake -f makefile.win32 <YOUR OPTIONS> custommodule MODULEFILE=<name>
<name> is the name of the module WITHOUT the .c suffix, so if your
module has the filename 'm_crappymod.c', then you use:
nmake -f makefile.win32 custommodule MODULEFILE=m_crappymod
nmake -f makefile.win32 <YOUR OPTIONS> custommodule MODULEFILE=m_crappymod
Note that <YOUR OPTIONS> is the whole lot of options explained in
previous section under 4B. If you use method 4A then there aren't any.
Note 2: If you get any symbol file errors, see the section 'SYMBOL FILES'
5. Done. A .dll file should have been created.
If you compiled with VC7 and used the official source (not a CVS version,
but for example 3.2.1 source) then the module should work on all these
versions (binary compatible) and you could for example put them on
your website so users can download them.
Such a module will work on both SSL and non-SSL, there should be no need
for separate versions... unless, of course, you use SSL-specific code in your mod.
DO NOT download a CVS version & compile your mod and then start
distributing the .dll for use at another (non-CVS) version!!
Every time we change a struct (and in some other cases) it makes the
binary/module binary incompatible which practically means your module
will CRASH or cause memory corruption and other subtle errors.
If you compiled with the same Visual Studio version that we use to compile
the official UnrealIRCd version, and use the same Unreal3.2.X.tar.gz as the
official version (and not CVS!), then your module is fully binary compatible
and you can put it on your website (or ours) so users can use them.
If you do anything else, this won't work.
So, again, it will NOT work properly, if:
1. You use a different UnrealIRCd source (like CVS, or a previous version).
2. You use another compiler... this might still work but may require an
additional .DLL file to be put in your UnrealIRCd directory (MSVxxxxxx.DLL).
3. You compile with different options, such as compiling with SSL but trying
to load the module on non-SSL.
NOTE: unless your module uses SSL-specific code, you should compile
without SSL as it will run on both SSL and non-SSL UnrealIRCd's.
== COMPILING WITH ZIP LINKS / SSL / REMOTE INCLUDES SUPPORT ==
First of all, DO NOT use any precompiled libs from the official
zlib/openssl/curl sites. We require certain compile parameters.
Versions downloaded from such sites will often CRASH.
==[ SYMBOL FILES ]==
If you get something like this:
The easiest is to download the UnrealIRCd development package
which contains zlib, openssl and curl precompiled for you.
See: www.vulnscan.org/unrealwin32dev/
Creating library L_COMMANDS.lib and object L_COMMANDS.exp
M_OPER.obj : error LNK2019: unresolved external symbol _sendto_snomask_global re
ferenced in function _m_oper
Just extract it somewhere (eg: to c:\dev).
Then, use compile flags to enable the features + specify where to look.
Here are examples if you used c:\dev:
ZIP: nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib" ZLIB_LIB_DIR="c:\dev\zlib\dll32"
SSL: nmake -f makefile.win32 USE_SSL=1 OPENSSL_INC_DIR="c:\dev\openssl\include" OPENSSL_LIB_DIR="c:\dev\openssl\lib"
CURL: nmake -f makefile.win32 USE_REMOTEINC=1 LIBCURL_INC_DIR="c:\dev\curl\include" LIBCURL_LIB_DIR="c:\dev\curl\lib"
(note: the exact name of the symbol will vary!)
Obviously you can (and probably will) combine all these options, like
to build a zip+ssl+curl version (all in 1 line):
nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib" ZLIB_LIB_DIR="c:\dev\zlib\dll32"
USE_SSL=1 OPENSSL_INC_DIR="c:\dev\openssl\include" OPENSSL_LIB_DIR="c:\dev\openssl\lib" USE_REMOTEINC=1
LIBCURL_INC_DIR="c:\dev\curl\include" LIBCURL_LIB_DIR="c:\dev\curl\lib"
Then you will have to rebuild the wircd.def symbol file. You do this by
downloading http://www.vulnscan.org/tmp/dlltool.exe and putting the file somewhere
in your path (eg: c:\winnt\system32).
Then, to compile you do this:
nmake -f makefile.win32 [your other options here]
nmake -f makefile.win32 SYMBOLFILE
nmake -f makefile.win32 [your other options here]
== COMPILING ZLIB/SSL/CURL YOURSELF ==
This is quite some work.. With the precomiled method shown above it
just takes like 5-10 minutes to have a zlib+ssl+curl Unreal version.
But if you want to compile each of these libs manually then it will
probably take an hour or so.
So basically you just run 'nmake -f makefile.win32 SYMBOLFILE' and then restart
compiling again.
** THE INFORMATION BELOW IS OUTDATED, WE GOT RID OF MDd, USE MD INSTEAD
AND DONT COMPILE OPENSSL W/DEBUG ***
== ZIP LINKS (zlib) ==
[NOTE: precompiled dlls should NOT be used because they will cause a crash
(this is due to different compile parameters / api call systems]
To compile with ziplinks support you need to do the following:
Download the SOURCE from http://www.winimage.com/zLibDll/
(at the time of writing, http://www.winimage.com/zLibDll/zlib121.zip)
and extract it to somewhere, for example c:\dev\zlib-1.2.1
Then, edit win32\makefile.msc:
- Change -MD to -MDd
- Add -D ZLIB_WINAPI to CFLAGS
- so the result will be like:
CFLAGS = -nologo -MDd -O2 $(LOC) -D ZLIB_WINAPI
- Then compile: nmake -f win32\Makefile.msc
- Assuming the above step went fine, your zlib is now ready.
- Now, to compile UnrealIRCd with ziplinks you do something like this:
nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib-1.2.1" ZLIB_LIB_DIR="c:\dev\zlib-1.2.1"
Obviously, change the paths if needed [1st = *.h files, 2nd=*.dll/*.lib]
== SSL (OpenSSL) ==
[note: openssl requires perl to configure/compile!]
- Download latest openssl (eg: openssl-0.9.7d.tar.gz) and extract it somewhere
(we'll use c:\dev\openssl-0.9.7d in this example)
- Open util\do_masm.bat, add 'debug' to the lines with 'mk1mf.pl' BUT be careful
since it should NOT be the last word, so add it somewhere before that.
For example: perl util\mk1mf.pl dll debug VC-W31-32 >ms\w31dll.mak
- Start the
- Now we go build openssl, run:
ms\do_masm
nmake -f ms\ntdll.mak
- Assuming the above step went fine, your OpenSSL is now ready.
- Now, to compile UnrealIRCd with ziplinks you do something like this:
nmake -f makefile.win32 USE_SSL=1 OPENSSL_INC_DIR="c:\openssl\inc32\openssl" OPENSSL_LIB_DIR="C:\Dev\openssl\out32dll.dbg"
Obviously, change the paths if needed [1st=*.h files, 2nd=*.dll/*.lib]
== REMOTE INCLUDES (curl, c-ares) ==
- Download latest c-ares source from http://daniel.haxx.se/projects/c-ares/
Download latest curl source from http://curl.haxx.se/download.html
Extract both somewhere (eg: c:\dev\c-ares-1.2.0 and c:\dev\curl-7.12.0)
- Open vc\vc.dsw from your ares directory. Assuming you have VC7 it will ask
whether it should convert the project, choose 'Yes to all'.
- (solution explorer) areslib -> properties
C/C++ -> code generation -> runtime library: Change to
'Multi-threaded Debug DLL (/MDd)'
- at the time of writing 'ares_free_errmem.c' should be removed from the
project file (solution explorer -> source files -> find the file + press
delete). Also 'ares_version.c' and 'ares_cancel.c' should be added
(solution explorer -> source files -> rightclick -> add -> add existing ->
go down a few directories if needed and choose the file).
- right click at 'areslib' in the solution explorer and select 'Build'.
Assuming it compiled fine, we are done with c-ares.
- Now go to the curl directory and open lib\curllib.dsw. Choose 'Yes to all'
again when asked about converting.
- Open config-win32.h (@header files in solution explorer) and add:
#define USE_ARES 1
- Open include\curl\multi.h and change the line with:
#include <winsock2.h>
to:
#include <winsock.h>
- (solution explorer) curllib -> properties
- C/C++ -> code generation -> runtime library: Change to
'Multi-threaded Debug DLL (/MDd)'
- C/C++ -> general -> additional include directories:
add the path to your <c-ares-directory> (eg: C:\Dev\c-ares-1.2.0).
- linker -> general -> additional library directories:
add the path to your <c-ares-directory>\vc\areslib\Debug,
for example C:\Dev\c-ares-1.2.0\vc\areslib\Debug.
- linker -> input -> additional dependencies:
add: areslib.lib
- linker -> input -> Module defenition file:
set to: libcurl.def
Done with editting properties.
- Now: Build -> rebuild solution, everything should compile fine.
- Now, to compile UnrealIRCd with remote includes you do something like this:
nmake -f makefile.win32 USE_REMOTEINC=1 LIBCURL_INC_DIR="C:\Dev\curl-7.12.0\include" LIBCURL_LIB_DIR="C:\Dev\curl-7.12.0\lib\Debug"
==[ COMPILING ZLIB/SSL/CURL YOURSELF ]==
This is off-topic and not explained here.
Again, use the stuff from the win32 development pack unless you have a good
reason to do otherwise.
-764
View File
@@ -1,764 +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
*/
me
{
name "Imeto Na Servera vi";
info "Opisanie Na Servera";
numeric Cifra po izbor(po malka e po dobre);
};
/*
* 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_ungline;
can_gline;
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'.
*/
+25 -15
View File
@@ -14,9 +14,11 @@
* closing } line. The IRCd will ignore commented lines.
*
* PLEASE READ doc/unreal32docs.html! The online version is also available at:
* www.vulnscan.org/UnrealIrcd/unreal32docs.html
* www.vulnscan.org/UnrealIRCd/unreal32docs.html
* It contains a lot information about the configfile: gives information about
* every block, variable, etc..
* If you try to edit this file without reading the documentation properly
* then you are pretty much guaranteed to fail!
*/
/* Type of comments */
@@ -288,9 +290,9 @@ listen *:6667;
* options {
* (options here*);
* };
* /* If we use SSL, we can choose what cipher to use in SSL mode
* * Retrieve a list by "openssl ciphers", seperate ciphers with :'s
* */
* // If we use SSL, we can choose what cipher to use in SSL mode
* // Retrieve a list by "openssl ciphers", separate ciphers with :'s
*
* ciphers "DES-CBC3-MD5";
*
* };
@@ -361,7 +363,7 @@ drpass {
* NEW: log {} OLD: N/A Tells the ircd where and what to log(s). You can have
* as many as you wish.
*
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
* FLAGS: errors, kills, tkl, connects, server-connects, oper
*
* Syntax:
* log "log file"
@@ -381,7 +383,6 @@ log "ircd.log" {
maxsize 2097152;
flags {
oper;
kline;
connects;
server-connects;
kills;
@@ -505,6 +506,18 @@ alias "identify" {
type command;
};
/* This is an example of a real command alias */
/* This maps /GLINEBOT to /GLINE <parameter> 2d etc... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Bots are not allowed on this server, please read the faq at http://www.example.com/faq/123";
};
type command;
};
/*
* NEW: tld {}
@@ -698,6 +711,8 @@ set {
* The keys should be 3 random strings of 5-100 characters
* (10-20 chars is just fine) and must consist of lowcase (a-z),
* upcase (A-Z) and digits (0-9) [see first key example].
* HINT: On *NIX, you can run './unreal gencloak' in your shell to let
* Unreal generate 3 random strings for you.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
@@ -723,11 +738,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 */
@@ -754,7 +764,7 @@ set {
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Throttling: this example sets a limit of 3 connections per 60s (per host). */
/* Throttling: this example sets a limit of 3 connection attempts per 60s (per host). */
throttle {
connections 3;
period 60s;
@@ -776,8 +786,8 @@ set {
/*
* Problems or need more help?
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- contains 80% of your questions!
* 3) If you still have problems you can go irc.ircsystems.net #unreal-support,
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- contains 80% of your questions!
* 3) If you still have problems you can go irc.unrealircd.org #unreal-support,
* note that we require you to READ THE DOCUMENTATION and FAQ first!
*/
+17 -20
View File
@@ -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)
@@ -94,8 +95,8 @@ admin {
/*
* NEU: class {}
* ALT: Y:line (alte Form war verwirrend)
* Hiermit werden Klassen und ihre Einstellungen festgelegt. Eine Klasse ist eine Gruppen
* Einstellung für Verbindungen. So kann man beispielsweise Server Verbindungen in einer
* Hiermit werden Klassen und ihre Einstellungen festgelegt. Eine Klasse ist eine Gruppen-
* einstellung für Verbindungen. So kann man beispielsweise Server Verbindungen in einer
* eigenen Klasse behandeln, statt zusammen mit Clients.
* Syntax ist wie folgt:
* class (class name)
@@ -293,11 +294,11 @@ listen *:6667;
* options {
* (options hier*);
* };
* /* Wird SSL benutzt, kann bestimmt werden, welche Verschlüsselung im SSL
* * Modus zu benutzen ist
* * Bei mehreren "openssl ciphers" sind die einzelnen Verschlüsselungen
* * durch ':' zu trennen
* */
* // Wird SSL benutzt, kann bestimmt werden, welche Verschlüsselung im SSL
* // Modus zu benutzen ist
* // Bei mehreren "openssl ciphers" sind die einzelnen Verschlüsselungen
* // durch ':' zu trennen
*
* ciphers "DES-CBC3-MD5";
*
* };
@@ -368,7 +369,7 @@ drpass {
* NEU: log {} ALT: N/A Festlegung von Namen und Speicherort der Logfiles. Man kann
* beliebig viele festlegen.
*
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
* FLAGS: errors, kills, tkl, connects, server-connects, oper
*
* Syntax:
* log "log file"
@@ -391,7 +392,6 @@ log "ircd.log" {
kline;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
@@ -632,7 +632,7 @@ except ban {
/*
* NEU: deny dcc {}
* ALT: dccdeny.conf
* Mit diesem Block können dcc send's geblockt werden... Gut, um Virten aufzuhalten.
* Mit diesem Block können dcc send's geblockt werden... Gut, um Viren aufzuhalten.
* Syntax:
* deny dcc
* {
@@ -702,6 +702,8 @@ set {
* Die Keys sollten 3 zufällige Strings von 5-100 Zeichen Länge sein (10-20 Zeichen
* (sind ganz ok) und müssen aus Kleinbuchstaben(a-z), Großbuchstaben (A-Z) und
* Ziffern (0-9) bestehen [wie im ersten Key Beispiel].
* TIPP: Auf *NIX, kann man in der Shell './unreal gencloak' aufrufen und durch
* Unreal 3 Zufalls Stings erzeugen und anzeigen lassen.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
@@ -727,11 +729,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 +738,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 */
@@ -783,7 +780,7 @@ set {
* Probleme? Weitere Hilfe nötig?
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- enthält 80% deiner Fragen - Wetten Dass?
* 3) Hat man dann noch Probleme, kann man den Chat bei irc.ircsystems.net
* #unreal-support aufsuchen. Dabei ist zu beachten, dass wir voraussetzen,
* dass zuvor DIE DOKU GELESEN WURDE (genauso, wie die FAQ!)!
* 3) Hat man dann noch Probleme, kann man den Chat bei irc.unrealircd.org
* #unreal-support aufsuchen. Achtung, wir setzen voraus, dass zuvor die
* DOKU GELESEN WURDE (genauso, wie die FAQ!)!
*/
+101 -89
View File
@@ -1,34 +1,38 @@
/*
* example.conf par Daniel Hawton AKA Osiris (osiris@unrealircd.org).
* Ancien traducteur français : babass
* Tradution française : Alef Burzmali - http://www.burzmali.com
* Dernière mise à jour : 2010-09-11
* $Id$
* Traduction française par babass (babass@unrealircd.org).
*
* Fonctionne pour Unreal3.2 et supérieur
*
* Okay les mecs. Voici la nouvelle version de l'example.conf. Cela ressemble plus à du C++.
* Okay les gars, voici la nouvelle version de l'example.conf. Cela ressemble plus à du C++.
* Peu importe, il est temps de se lancer. Il est difficile de l'attaquer pour la première fois, mais
* avec un peu d'expérience et en lisant vous comprendrez.
* avec un peu d'expérience et de lecture vous comprendrez.
*
* Copiez juste ce fichier dans votre répertoire unrealircd principal et appellez le 'unrealircd.conf'.
*
* NOTE: Toutes les lignes, excepté la ligne d'ouverture { , les lignes finissant par un ;,
* et celle de fermeture } incluses.
* NOTE: Toutes les lignes, exceptées les ligne d'ouvertures { , se terminent par un ;, en particulier
* celles de fermeture }.
* L'IRCd ignorera les lignes commentées.
*
* LISEZ S'IL VOUS PLAIT doc/unreal32docs.fr.html! La version en ligne est aussi disponible à :
* www.vulnscan.org/UnrealIrcd/unreal32docs.fr.html
* Elle contient beaucoup d'informations à propos du fichier de configuration : fournis des informations
* à propos de chaque blocs, variable, etc..
* LISEZ S'IL VOUS PLAIT doc/unreal32docs.fr.html !
* La version en ligne est aussi disponible à : http://www.unrealircd.com/files/docs/unreal32docs.fr.html
* Elle contient beaucoup d'informations à propos du fichier de configuration : fournit des informations
* à propos de chaque bloc, variable, etc..
* Si vous essayez de modifier ce fichier sans avoir bien lu la documentation,
* vous êtes presque sûr de vous tromper.
*/
/* Type de commentaires */
#Commentaire type 1 (type Shell)
// Commentaire type 2 (style C++)
/* Commentaire type 3 (style C) */
#Ces lignes sont ignorées par l'ircd.
# Toutes ces lignes sont ignorées par l'ircd.
/*
* UnrealIRCd supportes des modules, en charger certains est requis.
* UnrealIRCd supporte des modules et certains sont obligatoires.
* Vous aurez besoin au moins du module commands et du module cloaking.
*/
@@ -42,12 +46,13 @@
/*
* Vous pouvez également inclure d'autres fichiers de configuration.
* help.conf contient tous le texte de /helpop. Les fichiers badwords.*.conf
* contiennent tous les badwords pour le mode +G...
* doc/help.fr.conf contient tout le texte de /helpop en français.
* help.conf contient la version anglaise.
* Les fichiers badwords.*.conf contiennent tous les badwords pour le mode +G...
* spamfilter.conf contient quelques bonnes règles pour les trojans courrants.
* Vous voudrez probablement les inclure:
*/
include "help.conf";
include "doc/help.fr.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
@@ -56,14 +61,14 @@ include "spamfilter.conf";
/*
* ACTUEL : me {}
* ANCIEN : M:Line
* me {} definit le nom, la description et le numeric du serveur unreal
* pour ce serveur. La syntaxe est la suivante :
* me {} definit le nom, la description et l'identifiant numérique pour ce serveur.
* La syntaxe est la suivante :
* me {
* name "nom.du.serveur";
* info "Description du Serveur";
* numeric (numeric* serveur);
* };
* En cas de link, ce numeric ne peut être utilisé pour aucun autre serveur du réseau.
* En cas de link, cet identifiant ne peut être utilisé pour aucun autre serveur du réseau.
*/
me
{
@@ -93,8 +98,8 @@ admin {
/*
* ACTUEL : class {}
* ANCIEN : Y:line (l'ancien était déroutant)
* Défini les réglages pour les classes. Une classe est un groupe de réglages pour
* des connexions. Par exemple, les connexions serveurs, au lieu de passer par une classe
* Définit les réglages pour les classes. Une classe est un groupe de réglages pour
* des connexions. Par exemple, pour les connexions serveurs, au lieu de passer par une classe
* client, vous utilisez directement une classe serveur. La syntaxe est la suivante :
* class (nom de la classe)
* {
@@ -105,7 +110,7 @@ admin {
* };
*/
class clients
class clients
{
pingfreq 90;
maxclients 500;
@@ -113,18 +118,18 @@ class clients
recvq 8000;
};
class servers
class servers
{
pingfreq 90;
maxclients 10; /* Nombre maximum de serveurs pouvant être reliés en même temps */
maxclients 10; /* Nombre maximum de serveurs pouvant être reliés en même temps */
sendq 1000000;
connfreq 100; /* Combien de secondes entre chaque tentatives de connexions */
connfreq 100; /* Combien de secondes entre chaque tentatives de connexions */
};
/*
* ACTUEL : allow {}
* ANCIEN : I:Line
* Défini les autorisations de connexions...
* Définit les autorisations de connexions...
* Principalement pour les clients, cela leur permet de se connecter, vous pouvez donc avoir un certain
* contrôle et/ou mettre un mot de passe.
* La syntaxe est la suivante :
@@ -153,30 +158,15 @@ allow {
maxperip 1;
};
/*
* ACTUEL : allow channel {}
* ANCIEN : chrestrict
* Autorise un utilisateur à joindre un salon...
* comme une exception au deny channel.
* Syntaxe :
* allow channel {
* channel "nom du salon";
* };
*/
allow channel {
channel "#WarezSucks";
};
/*
* ACTUEL : oper {}
* ANCIEN : O:Line
* Défini un IRC Operateur
* Définit un IRC Operateur
* Les IRC operateurs sont là pour préserver la qualité du serveur mais aussi d'en assurer
* la maintenance et sa connexion au réseau.
* La syntaxe est la suivante :
* oper (login) {
* class (classe à laquelle les associer, si différent de moi, déplacez les vers une
* nouvelle classe);
* class (classe à laquelle les associer, si différent du bloc allow, les déplace vers une nouvelle classe);
* from {
* userhost (ident@host);
* userhost (ident@host);
@@ -214,7 +204,7 @@ oper bobsmith {
/*
* ACTUEL : listen {}
* ANCIEN : P:Line
* Défini un port à rattacher à l'ircd, pour autoriser
* Définit un port à rattacher à l'ircd, pour autoriser
* des utilisateurs/serveurs à se connecter au serveur.
* La syntaxe est la suivante :
* listen (ip):(port)
@@ -232,12 +222,12 @@ oper bobsmith {
*/
/* Options de listen:
ANCIEN | ACTUEL
S serversonly
C clientsonly
J java
s ssl
* standard
ANCIEN | ACTUEL
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* NOTE SUR LES PORTS SSL: les ports SSL sont plutôt non standardisés,
@@ -246,9 +236,9 @@ oper bobsmith {
* requière d'être root! D'un autre coté, le port 194 est le port irc officiel et
* avez vous déjà vu un ircd fonctionner sur celui-ci ?
* Donc, notre suggestion est d'utiliser le port 6697 pour le SSL, ceci est utilisé par
* assez bien de réseaux et est reconnu par exemple par StunTour.
* beaucoup de réseaux et est reconnu par exemple par StunTour.
* Vous êtes libre d'ouvrir autant de ports SSL que vous le désirez mais
* en utilisant (au moins) 6697 vous aidez le monde à standardiser un peu a bit ;).
* en utilisant (au moins) 6697 vous aidez le monde à se standardiser un peu ;).
*/
listen *:6697
{
@@ -262,7 +252,7 @@ listen *:6697
listen *:8067;
listen *:6667;
/* NOTE: Si vous êtes sur un shell shell avec de multiples IP's vous êtes
/* NOTE: Si vous êtes sur un shell avec de multiples IP vous êtes
* susceptibles d'avoir l'erreur 'Address already in use' (adresse déjà utilisée)
* dans vos logs et l'ircd refusera de démarer.
* Cela signifie que vous devrez utiliser une IP spécifique au lieu de '*',
@@ -274,14 +264,14 @@ listen *:6667;
/*
* ACTUEL : link {}
* ANCIEN : C/N:Lines
* Défini un accord pour la connexion d'un serveur.
* Définit un accord pour la connexion d'un serveur.
* NOTE : CHACUN DES SERVEURS NECESSITE UN PARAMETRE LINK {} POUR SE CONNECTER CORRECTEMENT !
* La syntaxe est la suivante :
* link (nom du serveur)
* {
* username (username, * fonctionne aussi);
* hostname (ip/hostmask);
* bind-ip (Quelle IP à laquelle se relier lors de la connexion, ou *);
* bind-ip (IP à laquelle se relier lors de la connexion, ou *);
* port (port auquel se connecter, si il y en a un);
* hub (Si c'est un a hub, * fonctionne, ou les servermasks qu'il doit porter);
* [ou leaf *;]
@@ -291,9 +281,9 @@ listen *:6667;
* options {
* (options ici*);
* };
* /* Si vous utilisez le SSL, vous pouvez choisir quel cryptage (cipher) utiliser dans le mode SSL
* * Retrouvez une liste "crytages openssl", séparez les cryptages par des :
* */
* // Si vous utilisez le SSL, vous pouvez choisir quel algorithme de hash utiliser dans le mode SSL
* // Utilisez la commande "openssl ciphers" pour obtenir la liste des algorithmes disponibles, séparez les par des ":"
*
* ciphers "DES-CBC3-MD5";
*
* };
@@ -302,11 +292,11 @@ listen *:6667;
/*
options:
ANCIEN | ACTUEL
S ssl
Z zip
N/A autoconnect
N/A quarantine
N/A nodnscache
S ssl
Z zip
N/A autoconnect
N/A quarantine
N/A nodnscache
*/
@@ -332,7 +322,7 @@ link hub.mynet.com
* ACTUEL : ulines {}
* ANCIEN : U:Line
* Les U-lines donnent aux serveurs plus de pouvoir/commandes, ceci doit UNIQUEMENT être appliqué
* aux serveurs de services/stats et JAMAIS pour des servuers UnrealIRCd normaux !
* aux serveurs de services/stats et JAMAIS pour des serveurs UnrealIRCd normaux !
* La syntaxe est la suivante :
* ulines {
* (serveur auquel appliquer la uline);
@@ -352,7 +342,7 @@ ulines {
* La syntaxe est la suivante :
* drpass {
* restart "(mot de passe pour relancer)";
* die "(mot de passe pour arrêter)";
* die "(mot de passe pour arrêter)";
* };
*/
drpass {
@@ -366,7 +356,7 @@ drpass {
* Dit à l'ircd où et quoi loguer. Vous pouvez en avoir
* autant que vous le souhaitez.
*
* FLAGS : errors, kills, tkl, connects, server-connects, kline, oper
* FLAGS : errors, kills, tkl, connects, server-connects, oper
*
* Syntaxe :
* log "fichier de log"
@@ -386,7 +376,6 @@ log "ircd.log" {
maxsize 2097152;
flags {
oper;
kline;
connects;
server-connects;
kills;
@@ -453,7 +442,7 @@ alias StatServ { type stats; };
* };
*/
/* Ceci est expliqué séparément car même si elle a le même nom que la directive précédente, elle est très
* différente dans sa syntaxe, bien que elle a une fonction similaire et dépend des alias standards pour
* différente dans sa syntaxe, bien qu'elle a une fonction similaire et dépend des alias standards pour
* fonctionner.
*/
/*
@@ -471,10 +460,10 @@ alias "identify" {
type command;
};
*/
/* La direcitive alias::format est une expression régulière. Le premier format correspond à la commande
* /identify command lorsque le premier caractère est un #. Cela renvois donc à l'alias chanserv avec
* les paramètres IDENTIFY %1-. Le second format correspond à la commanden /identify lorsque le premier
* caractère n'est pas un #. Cela envoies alors la commande à l'alias nickserv avec les paramètres
/* La directive alias::format est une expression régulière. Le premier format correspond à la commande
* /identify command lorsque le premier caractère est un #. Cela renvoit donc à l'alias chanserv avec
* les paramètres IDENTIFY %1-. Le second format correspond à la commande /identify lorsque le premier
* caractère n'est pas un #. Cela envoie alors la commande à l'alias nickserv avec les paramètres
* IDENTIFY %1-.
*/
@@ -513,6 +502,17 @@ alias "identify" {
type command;
};
/* Ceci est un exemple de véritable alias de commande*/
/* Ceci renvoye /GLINEBOT à /GLINE <parameter> 2d etc... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Les bots ne sont pas permis sur ce serveur, lisez s'il-vous-plait la faq sur http://www.example.com/faq/123";
};
type command;
};
/*
* ACTUEL : tld {}
@@ -533,15 +533,15 @@ tld {
rules "ircd.rules.fr";
};
/* note : vous pouvez juste effacer le bloc d'exemple ci-dessus,
* en quel cas les fichiers motd/règles par défaut (ircd.motd, ircd.rules)
/* Note : vous pouvez juste effacer le bloc d'exemple ci-dessus,
* auquel cas les fichiers motd/règles par défaut (ircd.motd, ircd.rules)
* seront utilisés pour tout le monde.
*/
/*
* ACTUEL : ban nick {}
* ANCIEN : Q:Line
* Banni un pseudo, il ne peut donc être utilisé.
* Bannit un pseudo, il ne peut donc être utilisé.
* La syntaxe est la suivante :
* ban nick {
* mask "(pseudo à bannir)";
@@ -591,7 +591,7 @@ ban server {
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
reason "Idiot";
};
/*
@@ -628,15 +628,15 @@ ban realname {
*/
except ban {
/* ne banni pas stskeeps */
/* ne bannit pas stskeeps */
mask *stskeeps@212.*;
};
/*
* ACTUEL : deny dcc {}
* ANCIEN : dccdeny.conf
* Utilisez ceci pour bloquer l'envoie de dcc... stope
* mieux les virus.
* Utilisez ceci pour bloquer l'envoi de dcc ...
* Utile pour bloquer les virus.
* Syntaxe :
* deny dcc
* {
@@ -652,8 +652,8 @@ deny dcc {
/*
* ACTUEL : deny channel {}
* ANCIEN : N/A (NEW)
* Ceci empêche des salons d'être joins.
* Syntax:
* Ceci empêche des salons d'être joints.
* Syntaxe :
* deny channel {
* channel "(salon)";
* reason "raison";
@@ -664,6 +664,21 @@ deny channel {
reason "Warez is illegal";
};
/*
* ACTUEL : allow channel {}
* ANCIEN : chrestrict
* Autorise un utilisateur à joindre un salon...
* comme une exception au deny channel.
* Syntaxe :
* allow channel {
* channel "nom du salon";
* };
*/
allow channel {
channel "#WarezSucks";
};
/*
* ACTUEL : vhost {}
* ANCIEN : Vhost.conf file
@@ -706,6 +721,8 @@ set {
* Les clés doivent être 3 chaînes de 5-100 caractères melangés.
* (10-20 caractères est parfait) et elles doivent être constituées de minuscules (a-z),
* majuscules (A-Z) et chiffres (0-9) [voir le premier exemple de clé].
* Astuce : Sur *NIX, vous pouvez utiliser la commande './unreal gencloak' dans votre shell pour que
* Unreal génère 3 chaînes aléatoires pour vous.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
@@ -727,15 +744,10 @@ set {
/* Configuration spécifique d'un serveur */
set {
kline-address "mettre.cet.email";
kline-address "définir.cet.email";
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 */
@@ -764,7 +776,7 @@ set {
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Throttling: cet exemple applique une limite de 3 connexions en 60s (par host). */
/* Throttling: cet exemple applique une limite de 3 tentatives de connection en 60s (par host). */
throttle {
connections 3;
period 60s;
@@ -786,8 +798,8 @@ set {
/*
* Problèmes ou besoin de plus d'aide ?
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.fr.html
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- contient 80% de vos questions !
* 3) Si vous avez encore des problèmes vous pouvez aller sur irc.ircsystems.net #unreal-support,
* 1) http://www.unrealircd.com/files/docs/unreal32docs.fr.html
* 2) http://www.vulnscan.org/UnrealIRCd/faq/ <- contient 80% de vos questions !
* 3) Si vous avez encore des problèmes vous pouvez aller sur irc.unrealircd.org #unreal-support,
* notez que vous devez avoir LU LA DOCUMENTATION ET LA FAQ d'abord !
*/
+30 -19
View File
@@ -1,6 +1,6 @@
/*
* example.conf Daniel Hawton avagy Osiris jóvoltából (osiris@unrealircd.org).
* A magyar fordítást AngryWolf <angrywolf@flashmail.com> készítette.
* A magyar fordítást AngryWolf <angrywolf2009@gmail.com> készítette.
* $Id$
*
* Felhasználható Unreal3.2 és későbbi verziókhoz
@@ -16,9 +16,11 @@
* a záró } sort is. Az IRCd figyelmen kívül hagyja a megjegyzéssorokat.
*
* KÉRLEK, OLVASD EL A doc/unreal32docs.html-T! Az online verzió is elérhető
* a www.vulnscan.org/UnrealIrcd/unreal32docs.html címen.
* a www.vulnscan.org/UnrealIRCd/unreal32docs.html címen.
* Rengeteg információt tartalmaz a konfigurációs fájlról: tájékoztatást ad
* minden blokkról, változóról stb.
* Ha megpróbálod szerkeszteni ezt a fájlt anélkül, hogy megfelelően elolvastad
* volna a dokumentációt, jó eséllyel kanyarodsz a biztos kudarc felé!
*/
/* Megjegyzések típusai */
@@ -293,10 +295,10 @@ listen *:6667;
* options {
* (opciók ide*);
* };
* /* Ha SSL-t használunk, kiválaszthatjuk, milyen rejtjelező algoritmusok
* * legyenek használatban SSL módban. Listát kapunk az "openssl ciphers"
* * paranccsal. Az egyes rejtjeleket :-tal válasszuk el.
* */
* // Ha SSL-t használunk, kiválaszthatjuk, milyen rejtjelező algoritmusok
* // legyenek használatban SSL módban. Listát kapunk az "openssl ciphers"
* // paranccsal. Az egyes algoritmusokat :-tal válasszuk el.
*
* ciphers "DES-CBC3-MD5";
*
* };
@@ -372,7 +374,7 @@ drpass {
* Megmondja az ircd-nek, hová és mit naplózzon. Annyi naplófájlunk lehet,
* amennyit szeretnénk.
*
* FLAGEK: errors, kills, tkl, connects, server-connects, kline, oper
* FLAGEK: errors, kills, tkl, connects, server-connects, oper
*
* Szintaktika:
* log "naplófájl"
@@ -394,7 +396,6 @@ log "ircd.log" {
maxsize 2097152;
flags {
oper;
kline;
connects;
server-connects;
kills;
@@ -520,6 +521,18 @@ alias "identify" {
type command;
};
/* Példa egy valódi álparancsra */
/* A /GLINEBOT parancsot leképezi arra, hogy /GLINE <paraméter> 2d stb... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Botok tilosak ezen a szerveren, kérlek, olvasd el a faq-ot a http://www.example.com/faq/123 címen";
};
type command;
};
/*
* ÚJ: tld {}
@@ -710,11 +723,14 @@ set {
hiddenhost-prefix "rox";
/* prefix-quit "no"; */
/* Az álcázó kulcsoknak a hálózat minden szerverén azonosnak kell
* lenniük. Álcázott gazdanevek előállításában van szerepük, ezért
* lenniük. Az álcázott gazdanevek előállításában van szerepük, ezért
* legyenek titokban tartva! Mind 3 kulcs legyen egy-egy véletlenszerű
* sztring 5-100 karakterből (10-20 karakter kitűnő), valamint
* tartalmazniuk kell kisbetűket (a-z), nagybetűket (A-Z) és számokat
* (0-9) [ahogy az első kulcsos példában látható].
* TIPP: *NIX alatt az './unreal gencloak' parancsot futtatva
* a parancsértelmezőnkben, az Unreal 3 véletlen sztringet
* generál nekünk.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
@@ -740,11 +756,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 */
@@ -778,8 +789,8 @@ set {
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Elfojtás: ez a példa 60 másodpercenként (gazdánként) legfeljebb
* 3 kapcsolatot engedélyező korlátozást állít be. */
/* Elfojtás: ez a példa 60 másodpercenként legfeljebb 3 kapcsolódási
* kísérletet engedélyező korlátozást állít be (gazdánként). */
throttle {
connections 3;
period 60s;
@@ -804,9 +815,9 @@ set {
/*
* Problémák akadtak, vagy szükség van további segítségre?
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- a kérdéseid 80%-át tartalmazza!
* 3) Ha még mindig gondod van, felmehetsz az irc.ircsystems.net #unreal-support
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- a kérdéseid 80%-át tartalmazza!
* 3) Ha még mindig gondod van, felmehetsz az irc.unrealircd.org #unreal-support
* csatornájára. Fontos: kérjük, hogy előbb OLVASD EL A DOKUMENTÁCIÓT és
* a GYIK-ot!
*/
+816
View File
@@ -0,0 +1,816 @@
/*
* example.conf door Daniel Hawton AKA Osiris (osiris@unrealircd.org).
* $Id$
* Vertaald door Mark
*
* Werkt voor Unreal3.2 en hoger
*
* Dit is de nieuwe example.conf. Het lijkt veel op C++.
* Het begin is wellicht moeilijk, maar met wat ervaring en lezen
* zul je het wel begrijpen.
*
* Kopieer dit bestand naar je hoofd UnrealIRCd dir en noem het 'unrealircd.conf'.
*
* OPMERKING: Alle regels, behalve de openings { regel, eindingen met een ;, dus
* ook de sluitende } regel. Commentaar regels worden door de IRCd niet verwerkt.
*
* LEES doc/unreal32docs.html! De online versie is tevens te bereiken op:
* www.vulnscan.org/UnrealIRCd/unreal32docs.html
* Er staat heel veel informatie in over het configbestand: informatie over
* elk block, variabele, etc..
* Wanneer je dit bestand aanpast zonder de documentatie grondig te lezen,
* zul je gegarandeerd falen!
*/
/* Type van commentaar */
#Commentaar type 1 (Shell type)
// Commentaar type 2(C++ style)
/* Commentaar type 3 (C Style) */
#Deze regels worden niet verwerkt door de IRCd.
/*
* UnrealIRCd ondersteunt modules, het laden van sommige is benodigd.
* Je hebt tenminste een commands module en een cloacking module nodig.
*/
/* VOOR *NIX, haal de commentaartekens weg bij de volgende 2 regels: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* VOOR Windows, haal de commentaartekens weg bij de volgende 2 regels: */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";
/*
* Je kan tevens andere configuratiebestanden toevoegen.
* help.conf bevat alle /helpop tekst. De badwords.*.conf
* bestanden bevatten alle badword instellingen voor mode +G..
* spamfilter.conf bevat enkele goede regels voor huidige trojans.
* Je wilt deze waarschijnlijk laden:
*/
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/*
* NIEUW: me {}
* OUD: M:Line
* me {} definieert de naam, beschrijving en unreal numeriek voor deze server.
* De syntax is als volgt:
* me {
* name "server.naam";
* info "Server Beschrijving";
* numeric (server numeric*);
* };
* Waneer je servers linkt, mag de numeric niet door een andere server in gebruik zijn.
*/
me
{
name "irc.foonet.com";
info "FooNet Server";
numeric 1;
};
/*
* NIEUW: admin {}
* OUD: A:Line
* Admin geeft informatie over de server admin. Je mag hier
* zo veel regels opgeven als je wilt.
* De syntax is als volgt:
* admin {
* "eerste regel";
* "tweede regel";
* [etc]
* };
*/
admin {
"Bob Smith";
"bob";
"widely@used.name";
};
/*
* NIEUW: class {}
* OUD: Y:line (de oude was verwarrend)
* Hiermee stel je de classes in. Een class is een groepsinstelling voor
* connections. Server connecties stuur je naar een andere class dan
* gebruikers.
* De syntax is als volgt:
* class (class naam)
* {
* pingfreq (hoe vaak er gepingt moet worden naar een gebruiker/server in seconden);
* maxclients (hoeveel connecties er maximaal in deze class mogen zijn);
* sendq (maximale send queue voor 1 connectie);
* recvq (maximale receive queue voor 1 connectie [flood control]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Hoeveel servers we maximaal tegelijk gelinkt kunnen hebben */
sendq 1000000;
connfreq 100; /* Hoeveel seconden tussen een poging to verbinden */
};
/*
* NIEUW: allow {}
* OUD: I:Line
* Hiermee stel je het toestaan van connecties in.
* Gebruikers kunnen verbinden, en jij hebt wat controle en kan eventueel
* een wachtwoord instellen.
* De syntax is als volgt:
* allow {
* ip (ip mask dat toegestaan moet worden);
* hostname (host mask);
* class (class waarnaar ze gestuurd moeten worden [see class {}]);
* password "(wachtwoord)"; (optioneel)
* maxperip (hoeveel connecties per IP); (optioneel)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* Allow met wachtwoord */
allow {
ip *@255.255.255.255;
hostname *@*.passworded.ugly.people;
class clients;
password "f00Ness";
maxperip 1;
};
/*
* NIEUW: allow channel {}
* OUD: chrestrict
* Geeft de mogelijkheid een kanaal te joinen,
* als uitzondering voor een deny channel {}
* De syntax is als volgt:
* allow channel {
* channel "kanaal naam";
* };
*/
allow channel {
channel "#WarezSucks";
};
/*
* NIEUW: oper {}
* OUD: O:Line
* Stelt een IRC Operator in
* IRC Operators zorgen voor orde op de server en zorgen er
* tevens voor dat de server verbonden blijft met het netwerk.
* De syntax is als volgt:
* oper (login) {
* class (class waarin ze geplaatst moeten worden.);
* from {
* userhost (ident@host);
* userhost (ident@host);
* };
* flags
* {
* (flags hier*);
* };
* OF
* flags "oud type flags, zoals OAaRD";
* };
*/
/* Voor een lange lijst van oper flags, zie doc/unreal32docs.html#operblock
* [wordt ten zeerste aangeraden te lezen!]
*/
oper bobsmith {
class clients;
from {
userhost bob@smithco.com;
};
password "f00";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};
/*
* NIEUW: listen {}
* OUD: P:Line
* Hiermee stel je een poort in voor de IRCd, zodat
* gebruikers/servers kunnen verbinden met je server.
* De syntax is als volgt:
* listen (ip nummer):(port nummer)
* {
* options {
* (opties hier);
* };
* };
* of een gewone:
* listen: listen (ip):(port);
*
* OPMERKING: voor IPv6 IPs (3ffe:b80:2:51d::2 etc), gebruik listen [ip]:port;
*
* Dat werkt ook.
*/
/* Opties voor listen:
OUD | NIEUW
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* Opmerking voor SSL poorten: SSL poorten zijn niet echt
* standaard. Mensen zeggen dat je SSL op poort 994 moet laten
* lopen, omdat dit de standaard SSL poort is.. Maar meestal worden
* hogere poorten gebruikt. Om poort 994 te gebruiken, moet je root
* zijn! Tevens is poort 194 de officiele IRC poort. Maar heb je daar
* ooit een IRCd op zien lopen?
* Wij raden je aan om poort 6697 voor SSL te gebruiken. Dit wordt op
* 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
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* Opmerking: Als je een IRCd shell gebruikt met meerdere IPs, krijg
* je wellicht een "Address already in use" error in je log
* en de IRCd zal niet starten. Dit betekent dat je MOET binden
* naar een specifiek IP in plaats van '*', bijvoorbeeld:
* listen 1.2.3.4:6667l
* Natuurlijk moet je het IP vervangen door het IP dat je toewezen is.
*/
/*
* NIEUW: link {}
* OUD: C/N:Lines
* Geeft een server toegang om te verbinden.
* OPMERKING: Beiden servers hebben een link { } nodig om goed te kunnen verbinden!
* De syntax is als volgt:
* link (server naam)
* {
* username (username, * werkt ook);
* hostname (ip number/hostmask);
* bind-ip (welk IP te binden wanneer je connect, of *);
* port (poort om naar te verbinden);
* hub (Als dit een hub is, werkt '*');
* [of leaf *;]
* password-connect "(wachtwoord te zenden)";
* password-receive "(wachtwoord te ontvangen)";
* class (class waarin de server geplaatst moet worden);
* options {
* (opties hier*);
* };
* // Als we SSL gebruiken, kunnen we kiezen welke cipher we willen gebruiken in SSL mode
* // Verkrijg een lijst door "openssl ciphers", onderscheid ciphers met :'s
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
opties:
OUD | NIEUW
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 {
/* Opmerking: Gebruik geen autoconnect naar Services */
autoconnect;
ssl;
zip;
};
};
/*
*
* NIEUW: ulines {}
* OUD: U:Line
* U:Lines geven servers meer macht/commando's. Gebruik het alleen voor
* services en stats, en NOOIT voor normale UnrealIRCd servers!
* De syntax is als volgt:
* ulines {
* (server to uline);
* (server to uline);
* [etc]
* };
*/
ulines {
services.roxnet.org;
stats.roxnet.org;
};
/*
* NIEUW: drpass {}
* OUD: X:Line
* Stelt de wachtwoorden voor /die en /restart in.
* De syntax is als volgt:
* drpass {
* restart "(wachtwoord voor herstart)";
* die "(wachtwoord voor beeindigen)";
* };
*/
drpass {
restart "I-love-to-restart";
die "die-you-stupid";
};
/*
* NIEUW: log {}
* OUD: N/A
* Laat de IRCd weten wat en waar te loggen. Je kan er
* zoveel instellen als je wilt.
*
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
*
* De syntax is als volgt:
*
* log "log file"
* {
* flags
* {
* flag;
* flag;
* etc..
* };
* };
*/
log "ircd.log" {
/* Verwijder het logbestand en begint een nieuwe wanneer de oude 2MB groot is. Laat dit leeg om altijd
hetzelfde bestand te gebruiken */
maxsize 2097152;
flags {
oper;
kline;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* NIEUW: alias {}
* OUD: N/A
* Hiermee stel je commando's zoals /nickserv, /chanserv etc in.
* FLAGS: services, stats, normal
*
* De syntax is als volgt:
* alias "naam" {
* target "wijst naar";
* type aliastype;
* };
*
* [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
/*alias NickServ {
target "NickServ";
type services;
};*/
// Als je het commando naar dezelfde nick als het commando wil sturen, kun je "target" weglaten.
//alias ChanServ { type services; };
// Wijst het /statserv commando naar de gebruiker Statserv verbonden met set::stats-server
//alias StatServ { type stats; };
// Wijst het /superbot commando naar de gebruiker SuperBot
//alias SuperBot { type normal; };
/* Standaard aliases */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
/*
* NIEUW: alias {}
* OUD: N/A
* Hiermee stel je commando's zoals /identify, /services in.
*
* De syntax is als volgt:
* alias "naam" {
* format "format string" {
* target "wijst naar";
* type aliastype;
* parameters "parameters te verzenden";
* };
* type command;
* };
*/
/* Hier wordt apart notitie van gemaakt, hoewel het dezelfde naam heeft als het vorige block. Het verschilt veel
* in syntax, maar het maakt gebruik van dezelfde functies.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* De alias::format is een reguliere expressie. Het eerste formaat matcht het /identify commando wanneer
* het eerste teken een # is. Daarna wordt het doorgezonden naar de chanserv alias met de parameters
* IDENTIFY %1-. Het tweede formaat matcht het /identify commando wanneer het eerste teken geen # is. Daarna
* wordt het commando doorgestuurd naar de nickserv alias met de parameters IDENTIFY %1-.
*/
/* Het alias::format::parameters is gelijk aan script-talen. %N (N is een nummer) staat voor de parameter die
* gezonden is naar het commando (in dit geval /identify). Wanneer je %N- opgeeft, betekent dat alle parameters
* vanaf N tot de laatste paramater in de string. Je kan ook %n gebruiken, waar %n vervangen wordt door de nick.
*/
/* Standaard 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;
};
/* Dit is een voorbeeld van een echt commando alias */
/* Dit verwijst /GLINEBOT naar /GLINE <parameter> 2d etc... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Bots are not allowed on this server, please read the faq at http://www.example.com/faq/123";
};
type command;
};
/*
* NIEUW: tld {}
* OUD: T:Line
* Hiermee stel je verschillende MOTD en RULES bestanden in,
* afhangend van de gebruikers hostmask.
* De syntax is als volgt:
* tld {
* mask (ident@host);
* motd "(motd bestand)";
* rules "(rules bestand)";
* };
*/
tld {
mask *@*.fr;
motd "ircd.motd.fr";
rules "ircd.rules.fr";
};
/* Opmerking: je kan het bovenstaande voorbeeld verwijderen.
* In dat geval worden de standaard motd/rules bestanden (ircd.motd, ircd.rules).
* gebruikt voor iedereen.
*/
/*
* NIEUW: ban nick {}
* OUD: Q:Line
* Bant een nickname zodat deze niet gebruikt kan worden.
* De syntax is als volgt:
* ban nick {
* mask "(nick om te bannen)";
* reason "(reden)";
* };
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reserved for Services";
};
/*
* NIEUW: ban ip {}
* OUD: Z:Line
* Bant een IP van de server
* De syntax is als volgt:
* ban ip {
* mask (ip number/hostmask);
* reason "(reden)";
* };
*/
ban ip {
mask 195.86.232.81;
reason "Delinked server";
};
/*
* NIEUW: ban server {}
* OUD: Server Q:Line
* Zorgt ervoor dat een server niet kan verbinden met het netwerk.
* Als de server naar een andere server linkt, zal de lokale server
* de verbinding met het netwerk verbreken.
* De syntax is als volgt:
* ban server {
* mask "(server naam)";
* reason "(reden)";
* };
*/
ban server {
mask eris.berkeley.edu;
reason "Get out of here.";
};
/*
* NIEUW: ban user {}
* OUD: K:Line
* Zorgt ervoor dat een gebruiker met een bepaalde mask niet
* kan verbinden met je server.
* De syntax is als volgt:
* ban user {
* mask (hostmask/ip number);
* reason "(reden)";
* };
*/
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
};
/*
* NIEUW: ban realname {}
* OUD: n:Line
* Belet het gebruik van een bepaalde realname.
* De syntax is als volgt:
* ban realname {
* mask "(real name)";
* reason "(reden)";
* };
*/
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
};
ban realname {
mask "sub7server";
reason "sub7";
};
/*
* OPMERKING VOOR ALLE BANS: Ze mogen herhaald worden voor extra toevoegingen!
*
* NIEUW: except ban {}
* OUD: E:Line
* Zorgt ervoor dat jij niet gebanned kan worden.
* De syntax is als volgt:
* except ban { mask (ident@host); };
* Herhaal de except ban {} zo vaak als je wilt
* voor andere hosts.
*/
except ban {
/* don't ban stskeeps */
mask *stskeeps@212.*;
};
/*
* NIEUW: deny dcc {}
* OUD: dccdeny.conf
* Wordt gebruikt om DCC sends te blokkeren..
* Stopt virii beter.
* De syntax is als volgt:
* deny dcc
* {
* filename "bestand te blokkeren (bv, *exe)";
* reason "reden";
* };
*/
deny dcc {
filename "*sub7*";
reason "Possible Sub7 Virus";
};
/*
* NIEUW: deny channel {}
* OUD: N/A (NIEUW)
* Belet het gebruik van een kanaal.
* De syntax is als volgt:
* deny channel {
* channel "(kanaal)";
* reason "reden";
* };
*/
deny channel {
channel "*warez*";
reason "Warez is illegal";
};
/*
* NIEUW: vhost {}
* OUD: Vhost.conf file
* Dit zet een nep ip voor niet-opers, of voor opers
* die te lui zijn /sethost te gebruiken ;)
* De syntax is als volgt:
* vhost {
* vhost (vhost.com);
* from {
* userhost (ident@host toegestaan de vhost te gebruiken);
* };
* login (login name);
* password (password);
* };
* Om je vhost te gebruiken, typ /vhost (login) (password) op IRC
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*.image.dk;
};
login stskeeps;
password moocowsrulemyworld;
};
/* Je kan ook andere configuratiebestanden laden */
/* include "klines.conf"; */
/* Netwerk configuratie */
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"; */
/* Cloak keys moeten op alle servers in het netwerk hetzelfde zijn.
* Ze worden gebruikt voor het maken van gemaskte hosts en moeten geheim blijven.
* De keys moeten 3 willekeurige strings zijn, bestaande uit 5-100 tekens
* (10-20 tekens is genoeg) en moeten bestaan uit kleine letters (a-z),
* hoofdletters (A-Z) en getallen (0-9) [zie de eerste key als voorbeeld].
* Tip: Wanneer je met een *NIX systeem werkt, kun je './unreal gencloak' gebruiken in
* je shell. Dit genereert 3 willekeurige strings die je kunt gebruiken.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"en nog eentje";
"en nog eentje";
};
/* 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";
};
};
/* Server gerelateerde configuratie */
set {
kline-address "stel.dit.adres.in";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
options {
hide-ulines;
/* Je kan hier ident checking aanzetten als je wilt */
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* Hoelang een gebruiker minimaal verbonden moet zijn voordat hij toegestaan wordt het
* QUIT bericht te gebruiken. Dit stopt spam hopelijk. */
anti-spam-quit-message-time 10s;
/* Stelt een tekst in die standaard wordt gebruikt voor een quit.
* Houdt in dat er geen eigen quits gebruikt mogen worden op deze server. */
/* static-quit "Client quit"; */
/* Je kan ook alle part-redenen blokkeren door hieronder het commentaar weg te halen
* en er 'yes' neer te zetten. Je kan ook een standaard tekst gebruiken (bijvoorbeeld
* "Bye bye!") om deze tekst altijd te gebruiken..
*/
/* static-part yes; */
/* Stelt in dat stats alleen door opers gebruikt mogen worden. Gebruik * voor alle stats,
* en laat het weg zodat gebruikers alle stats kunnen zien. Typ '/stats' voor een lijst
* van alle stats.
* Sommige admins willen 'kGs' wellicht verwijderen zodat gewone gebruikers een lijst van
* klines, glines en shunts kunnen zien.
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Throttle: dit voorbeeld zet een limie van 3 conneties per 60s (per host). */
throttle {
connections 3;
period 60s;
};
/* Anti flood protectie */
anti-flood {
nick-flood 3:60; /* 3 naamsveranderingen per 60 seconden (standaard) */
};
/* Spam filter */
spamfilter {
ban-time 1d; /* standaard duur van een *line gezet door spamfilter */
ban-reason "Spam/Advertising"; /* standaard reden */
virus-help-channel "#help"; /* kanaal te gebruiken voor 'viruschan' actie */
/* except "#help"; kanaal waar niet gefilterd wordt */
};
};
/*
* Problemen of meer hulp nodig?
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- hier staat 80% van je vragen!
* 3) Als je nog steeds problemen hebt, kun je naar irc.unrealircd.org #unreal-support,
maar je moet wel eerst de documentatie en FAQ gelezen hebben!
*/
+791
View File
@@ -0,0 +1,791 @@
/*
* example.conf by Daniel Hawton AKA Osiris (osiris@unrealircd.org).
* example.ru.conf by Samets Anton aka Bock (bock@bynets.org).
* $Id$
*
* (Encoding): Windows-1251
*
* Работает для Unreal3.2 и выше
*
* Итак, это русскоязычный пример example.conf. По синтаксису похож на C++.
* По началу будет тяжело понять, что тут написано, однако во время практики и чтения
* вы научитесь это делать.
*
* Просто скопируйте этот файл в главную директорию unrealircd и переименуйте в 'unrealircd.conf'.
*
* Замечание: Все линии, кроме тех, которые начинаются с {, заканчиваются ; включая и закрывающую }.
* IRCd проигнорирует закомментированные линии.
*
* ПРОЧТИТЕ doc/unreal32docs.ru.html! Версия в интернете доступна по адресу:
* www.vulnscan.org/UnrealIRCd/unreal32docs.ru.html
* Она содержит большинство информации о конфигурировании, даёт представление о каждом блоке,
* переменной и так далее...
* Если вы пытаетесь редактировать этот файл без прочтения документации, вы гарантированно
* потерпите неудачу!
*/
/* Типы комментариев */
# Первый тип (Shell type)
// Второй тип (C++ style)
/* Третий тип (C Style) */
# данные линии игнорируются ircd.
/*
* UnrealIRCd поддерживает модули, загрузка некоторых необходима для запуска.
* Вам необходимо загрузить как минимум модули команд и скрытия хоста.
*/
/* Для *NIX систем раскомментируйте следующие 2 линии: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* Для Windows систем раскомментируйте следующие 2 линии: */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";
/*
* Вам необходимо подключить и другие конфигурационные файлы.
* help.ru.conf содержит весь текст команды /helpop. Файлы badwords.*.conf
* содержат все включения матных слов для режима +G...
* spamfilter.conf содержит правила для защиты от троянских коней.
* Вы вероятно захотите подключить эти файлы:
*/
include "help.ru.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/*
* НОВОЕ: me {}
* СТАРОЕ: M:Line
* me {} определяет имя, описание и нумерик сервера unreal для данного сервера.
* Синтаксис:
* me {
* name "Имя.сервера";
* info "Описание сервера";
* numeric (нумерик сервера*);
* };
* При соединении с другими серверами, нумерик должен быть уникальным в сети. Имя сервера - англоязычное.
*/
me
{
name "irc.foonet.com";
info "Сервер FooNet";
numeric 1;
};
/*
* НОВОЕ: admin {}
* СТАРОЕ: A:Line
* Данный блок предоставляет информацию об администраторе сервера.
* Вы можете поместить сколько угодно линий после admin {.
* Синтаксис:
* admin {
* "первая линия";
* "вторая линия";
* [так далее]
* };
*/
admin {
"Вася Пупкин!";
"vasya_pupkin";
"haker@lamer.ru";
"ICQ: 987654321";
};
/*
* НОВОЕ: class {}
* СТАРОЕ: Y:line (был слишком запутан)
* Определяет настройки для классов. Класс определяет групповые настройки для подключений.
* Например, подключение сервера, вместо включения его в класс пользователей, вы направляете в
* класс серверов. Используется следующий синтаксис:
* class (имя класса)
* {
* pingfreq (как часто пиновать пользователя/сервер в секундах);
* maxclients (сколько максимально соединений разрешено данному классу);
* sendq (максимальная очередь для отправки от подключения);
* recvq (максимальная очередь для получения от подключения [контроль за флудом]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Какое максимальное количество серверов может быть прилинковано к этому серверу */
sendq 1000000;
connfreq 100; /* Через сколько секунд проводить следующую попытку подключения */
};
/*
* НОВОЕ: allow {}
* СТАРОЕ: I:Line
* Определяет, кому разрешено подключаться к серверу...
* В основном используется для клиентов, это разрешает им подключаться к серверу, а вы можете их контролировать
* и/или устанавивать пароль.
* Синтаксис:
* allow {
* ip (разрешённая маска ip);
* hostname (маска хоста);
* class (класс, в который определить[смотри class {}]);
* password "(пароль)"; (необязательно)
* maxperip (сколько подключений с одного ip); (необязательно)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* Разрешение подключения с паролем */
allow {
ip *@255.255.255.255;
hostname *@*.passworded.ugly.people;
class clients;
password "аццкип0р0ль";
maxperip 1;
};
/*
* НОВОЕ: allow channel {}
* СТАРОЕ: chrestrict
* Позволяет пользователю зайти на канал...
* служит как исключение из запрещённых каналов.
* Синтаксис:
* allow channel {
* channel "имя канала";
* };
*/
allow channel {
channel "#WarezSucks";
};
/*
* НОВОЕ: oper {}
* СТАРОЕ: O:Line
* Определяет IRC оператора
* IRC операторы следят за сервером, занимаются его поддержкой и подключением к сети.
* Синтаксис:
* oper (логин) {
* class (класс, в который определять их, если отличен от блока I, в какой класс переместить);
* from {
* userhost (идент@хост);
* userhost (идент@хост);
* };
* flags
* {
* (тут флаги*);
* };
* ИЛИ
* flags "флаги старого типа, вида OAaRD";
* };
*/
/* Для списка флагов оператора прочитайте doc/unreal32docs.ru.html#operblock
* [ОЧЕНЬ НАСТОЯТЕЛЬНО рекомендуется к прочтения]
*/
oper vasyapupkin {
class clients;
from {
userhost vasya@somewhere.by;
};
password "p0r0l'";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};
/*
* НОВОЕ: listen {}
* СТАРОЕ: P:Line
* Определяет, на каких портах будет работать ircd,
* позволяя пользователям/серверам подключаться к серверу.
* Синтаксис:
* listen (ip):(номер порта)
* {
* options {
* (тут опции);
* };
* };
* или просто
* listen: listen (ip):(порт);
*
* ЗАМЕЧАНИЕ: для протокола ip v6 (3ffe:b80:2:51d::2), используйте [ip]:порт;
*
* Это так же будет работать.
*/
/* Опции для listen:
СТАРЫЕ | НОВЫЕ
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* ЗАМЕЧАНИЕ ДЛЯ ПОРТОВ SSL: SSL порты стандартизированы,
* за исключением многочисленных "высоких" портов SSL, некоторые люди могут сказать вам,
* чтобы вы запустили на порту 994, потому что он официальный порт SSL... Но это же
* требует привилегий пользователя root! К слову, порт 194 - официальный порт irc,
* но вы видели когда-нибудь ircd, запущенный на нём?
* Итак, наше предложение - использовать порт 6697 для SSL, он используется уже рядом сетей
* и используется в примере StunTour.
* Вы можете открыть сколько угодно портов SSL, но используя так же и 6697, вы поможете
* стандартизировать его;).
*/
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* ЗАМЕЧАНИЕ: Если вы используете шелл IRCd, где несколько IP адресов, вы можете получить сообщение типа
* 'Address already in use', ошибки в вашем лог-файле и ircd не запустится.
* Это значит, что вам необходимо указать определённый адрес IP вместо '*', к примеру:
* listen 1.2.3.4:6667;
* Конечно же, измените IP адрес на тот, который назначен вам.
*/
/*
* НОВОЕ: link {}
* СТАРОЕ: C/N:Lines
* Определяет блок для подключения серверов.
* ЗАМЕЧАНИЕ: ЧТОБЫ ПОДКЛЮЧИТЬСЯ БЕЗ ВОПРОСОВ, НА ОБОИХ СЕРВЕРАХ НЕОБХОДИМЫ ПРАВИЛЬНЫЕ НАСТРОЙКИ LINK {}!
* Синтаксис:
* link (имя сервера)
* {
* username (имя пользователя, * работает тоже);
* hostname (адрес ip/маска хоста);
* bind-ip (На каком адресе IP слушать или *);
* port (порт для соединения);
* hub (если это хаб, * так же работает, или макси сервера, которые могут быть под ним);
* [или leaf *;]
* password-connect "(пароль для отправки)";
* password-receive "(пароль, что мы должны получить)";
* class (класс, в который определить сервер);
* options {
* (тут указываются опции*);
* };
* // Если мы используем SSL, мы можем указать, какой шифр использовать в режиме SSL
* // Получить список можно "openssl ciphers", шифры разделяются двоеточиями (:)
*
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
опции:
СТАРЫЕ | НОВЫЕ
S ssl
Z zip
N/A autoconnect
N/A quarantine
N/A nodnscache
*/
link hub.ru.by
{
username *;
hostname 1.2.3.4;
bind-ip *;
port 7029;
hub *;
password-connect "LiNk";
password-receive "LiNk";
class servers;
options {
/* Замечание: Вы не должны использовать автоподключение (autoconnect) при подключении сервисов */
autoconnect;
ssl;
zip;
};
};
/*
*
* НОВОЕ: ulines {}
* СТАРОЕ: U:Line
* U-lines обладают большей силой/властью, чем другие сервера. Это нужно устанавливать только на
* сервисы/сервера сбора статистики и НИКОГДА на обычные сервера UnrealIRCd!
* Синтаксис:
* ulines {
* (сервер в uline);
* (сервер в uline);
* [и т.д.]
* };
*/
ulines {
services.roxnet.org;
stats.roxnet.org;
};
/*
* НОВОЕ: drpass {}
* СТАРОЕ: X:Line
* Определяет пароли для использования команд /die и /restart.
* Синтаксис:
* drpass {
* restart "(пароль для перезапуска)";
* die "(пароль для отключения)";
* };
*/
drpass {
restart "Я-люблю-перезапускать-сервер";
die "умри-тупое!:)";
};
/*
* НОВОЕ: log {}
* СТАРОЕ: N/A
* Указыает ircd куда и что протоколировать (вести лог). Вы можете указать столько, сколько пожелаете.
*
* ФЛАГИ: errors, kills, tkl, connects, server-connects, oper
*
* Синтаксис:
* log "путь_к_лог_файлу"
* {
* flags
* {
* flag;
* flag;
* etc..
* };
* };
*/
log "ircd.log" {
/* Удалять логфайл и старовать новый, если размер превышает 2MB, оставьте это как есть, чтобы использовать
тот же самый файл */
maxsize 2097152;
flags {
oper;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* НОВОЕ: alias {}
* СТАРОЕ: N/A
* Позволяет установить вам псевдонимы на команды, такие как /nickserv, /chanserv и т.д.
* ФЛАГИ: services, stats, normal
*
* Синтаксис:
* alias "имя" {
* target "куда направить";
* type aliastype;
* };
*
* [ЗАМЕЧАНИЕ: Вы так же можете подключить уже определённый файл с псевдонимами,подробнее doc/unreal32docs.ru.html в секции 2.9]
*/
// Данный псевдноним /nickserv направляет команды пользователю NickServ, который подключён к серверу set::services-server
/*alias NickServ {
target "NickServ";
type services;
};*/
// Если вы хотите, чтобы команды направлялись на тот же ник, что и команда, вы можете не указывать target
//alias ChanServ { type services; };
// Указывает, что команда /statserv будет отправлена пользователю StatServ, подключённого к серверу set::stats-server
//alias StatServ { type stats; };
// Указывает, что команда /superbot будет отправлена пользователю SuperBot
//alias SuperBot { type normal; };
/* Стандартные псевдонимы */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
/*
* НОВОЕ: alias {}
* СТАРОЕ: N/A
* Позволяет установить такие псевдонимы на команды как /identify, /services и т.д.
*
* Синтаксис:
* alias "имя" {
* format "строка формата" {
* target "кому";
* type aliastype;
* parameters "список параметров";
* };
* type command;
* };
*/
/* Вынесено отдельно, так как имеются отличия по сравнению с предыдущим типом псевдонимов и имеются очень большие отличия в
* синтаксисе, так же используется для других целей, чем стандартные псевдонимы.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* Директива alias::format является регулярным выражением. Под первый формат подпадает команда /identify,
* если первым символом является #. Она посылает команду chanserv с параметрами IDENTIFY %1-.
* Второй формат срабатывает, если в команде, посланной посредством /identify первый символ не #. Тогда ircd
* передаёт эту команду nickserv с параметрами IDENTIFY %1-.
*/
/* alias::format::parameters сходно со скриптовыми языками. %N (где N число) представляет собой параметр, посланный командой
* (в случае /identify). Если вы указали %N-, так вы определили все параметры, начиная от N до последнего в этой строке.
* Вы можете так же указать %n, что будет означать ник пользователя.
*/
/* Стандартные псевдонимы */
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;
};
/* Тут идёт пример использования "действительно псевдонима" (real command alias) */
/* Данный пример - использование /GLINEBOT как /GLINE <параметры> 2d и т.д... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Боты запрещены на этом сервере, прочитайте ЧаВО на http://www.example.com/faq/123";
};
type command;
};
/*
* НОВОЕ: tld {}
* СТАРОЕ: T:Line
* Устанавливает различные different motd и rules файлы
* в зависимости от маски хостов клиентов.
* Синтаксис:
* tld {
* mask (идент@хост);
* motd "(файл motd)";
* rules "(файл rules)";
* };
*/
tld {
mask *@*.ru;
motd "ircd.motd.ru";
rules "ircd.rules.ru";
};
/* замечание: вы можете просто удалить блок выше, указанный для примера в случае, если есть в наличии
* файлы motd/rules, используемые по умолчанию (ircd.motd, ircd.rules), которые будут использоваться всеми
*/
/*
* НОВОЕ: ban nick {}
* СТАРОЕ: Q:Line
* Банит ник, он не может быть использован.
* Синтаксис:
* ban nick {
* mask "(ник для бана)";
* reason "(причина)";
* };
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Зарезервирован для сервисов";
};
/*
* НОВОЕ: ban ip {}
* СТАРОЕ: Z:Line
* Банит адрес ip при подключении в сеть.
* Синтаксис:
* ban ip { mask (адрес ip/маска хоста); reason "(причина)"; };
*/
ban ip {
mask 195.86.232.81;
reason "Отключённый сервер";
};
/*
* НОВОЕ: ban server {}
* СТАРОЕ: Серверный Q:Line
* Отключает сервер от попыток подключиться в сеть.
* Если сервер подключается к удалённому серверу в сети, локальный сервер
* будет отключён он сети.
* Синтаксис:
* ban server {
* mask "(имя сервера)";
* reason "(причина)";
* };
*/
ban server {
mask eris.berkeley.edu;
reason "Ламерский сервер :).";
};
/*
* НОВОЕ: ban user {}
* СТАРОЕ: K:Line
* Пользователь с указанной маской не может подключиться к вашему серверу.
* Синтаксис:
* ban user { mask (маска хоста/адрес ip); reason "(причина)"; };
*/
ban user {
mask *newiceman@*.irc.by;
reason "Идиот!";
};
/*
* НОВОЕ: ban realname {}
* СТАРОЕ: n:Line
* Банит по указанному пользователем реальному имени.
* Синтаксис:
* ban realname {
* mask "(Реальное имя)";
* reason "(причина)";
* };
*/
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
};
ban realname {
mask "sub7server";
reason "sub7";
};
/*
* ЗАМЕЧАНИЕ ДЛЯ ВСЕХ БАНОВ: они могут повторятся в случае необходимости уточнений!
*
* НОВОЕ: except ban {}
* СТАРОЕ: E:Line
* Предотвращает бан.
* Синтаксис:
* except ban { mask (идент@хост); };
* Повторите except ban {} столько раз, сколько хотите использовать различные хосты.
*/
except ban {
/* не банить wax */
mask *wax@195.222.*;
};
/*
* НОВОЕ: deny dcc {}
* СТАРОЕ: dccdeny.conf
* Используется чтобы запретить отправку dcc... служит для защиты от вирусов
* Синтаксис:
* deny dcc
* {
* filename "имя файла для блокироваки (т.е. *exe)";
* reason "причина";
* };
*/
deny dcc {
filename "*sub7*";
reason "Вероятность вируса Sub7";
};
/*
* НОВОЕ: deny channel {}
* СТАРОЕ: N/A (НОВОЕ)
* Запрещает вход на указанные каналы.
* Синтаксис:
* deny channel {
* channel "(канал)";
* reason "причина";
* };
*/
deny channel {
channel "*warez*";
reason "Warez нелегален";
};
/*
* НОВОЕ: vhost {}
* СТАРОЕ: файл Vhost.conf
* Устанавливает фейковый ip для не-операторов или операторы слишком
* ленивые, чтобы сделать /sethost :P
* Синтаксис:
* vhost {
* vhost (vhost.com);
* from {
* userhost (идент@хост, кому разрешено использовать);
* };
* login (логин);
* password (пароль);
* };
* чтобы использовать vhost, наберите /vhost (логин) (пароль) в IRC
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*.image.dk;
};
login stskeeps;
password moocowsrulemyworld;
};
/* Вы так же можете подключить и другие конфигурационные файлы */
/* include "klines.conf"; */
/* Конфигурация Сети */
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"; */
/* Ключи скрытия хостов должны быть одинаковы на всех серверах в сети.
* Они использутся для генерации замаскированных хостов и должны держаться в секрете.
* Ключи должен быть 3-мя случайными срочками с 5-100 символами в каждой
* (10-20 символов должно быть достаточно) и должны содержать прописные (a-z),
* заглавные (A-Z) буквы и цифрты (0-9) [смотрите пример первого ключа].
* Подсказка: В *NIX системах вы можете запустить './unreal gencloak' в вашем шелле, чтобы получить
* 3 строки, сгенерированные случайным образом.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"и ещё одна;
"и ещё одна";
};
/* хост on-oper */
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";
};
};
/* Специфическая конфигурация сервера */
set {
kline-address "set.this.email";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
options {
hide-ulines;
/* Если желаете, вы можете включить проверку ident */
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* Указывает минимальное время, сколько был подключен пользователь,
* прежде чем разрешать ему использовать сообщение QUIT.
* Должно помочь в борьбе со спамом */
anti-spam-quit-message-time 10s;
/* Устанавливает постоянное сообщение о выходе - значит, что локальный сервер не разрешит
различные сообщения о выходе */
/* static-quit "Клиент вышел"; */
/* Вы так же можете блокировать все сообщения о выходе из канала просто раскомментировав это и указать'yes'
* или указать какой-нибудь другой текст (например: "Пока пока!"), который всегда будет использован как причина. */
/* static-part yes; */
/* Позволяет сделать важные сообщения stats были использованы только операторами, используйте * для всех сообщений stats,
* или закомментируйте, что позволит пользователям видеть все сообщения stats. Чтобы получить весь список, введите '/stats'.
* Некоторые администраторы могут убрать 'kGs' для того, чтобы разрешить обычным пользователям видеть список
* klines, glines и shuns.
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Тротлинг: данный пример устанавливает предел в 3 попытки подключения в 60 секунд (для одного хоста). */
throttle {
connections 3;
period 60s;
};
/* Защита от флуда */
anti-flood {
nick-flood 3:60; /* 3 изменения ника в 60 секунд (по умолчанию) */
};
/* Фильтр спама */
spamfilter {
ban-time 1d; /* длительность по умолчанию бана *line, установленного spamfilter */
ban-reason "Спам/Реклама"; /* причина по умолчанию */
virus-help-channel "#help"; /* канал при использовании действия 'viruschan' */
/* except "#help"; канал для исключения действия фильтра */
};
};
/*
* Проблемы или нуждаетесь в более подробной информации?
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.ru.html
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- содержит 80% ваших вопросов!
* 3) Если у вас до сих пор остались проблемы, зайдите на irc.unrealircd.org #unreal-support,
* но мы требуем, чтобы вы ПРЕЖДЕ ПРОЧИТАЛИ ДОКУМЕНТАЦИЮ и ЧаВО!
*/
+787
View File
@@ -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.unrealircd.org sunucusu #unreal-support kanalına girebilirsiniz
* DÖKÜMANTASYON ve FAQ kısmını okumanızı gerekli gördüğümüzü belirtiyoruz!
*/
+90 -22
View File
@@ -15,7 +15,7 @@ help {
" zum Begriff 'who' wissen, ist einzugeben:";
" /HELPOP WHO";
" (Als HelpOp muss man /HELPOP ?WHO eingeben, also vor";
" den Begriff noch ein ? setzen);"
" den Begriff noch ein ? setzen)";
" In diesem Hilfesystem sind alle Server Befehle und";
" Optionen aufgeführt, die benutzt werden können.";
" Wird darüberhinaus noch Hilfe benötigt, kann diese";
@@ -60,7 +60,9 @@ help Opercmds {
" einen bestimmten Befehl zu erhalten.";
" -";
" ==-------------------------oOo-------------------------==";
" ADCHAT GLOBOPS OPERMOTD SPAMFILTER";
" ADCHAT DNS NACHAT SETIDENT";
" ADDMOTD GLINE OPER SHUN";
" ADDOMOTD GLOBOPS OPERMOTD SPAMFILTER";
" CHATOPS GZLINE REHASH SQUIT";
" CHGHOST HTM RESTART TEMPSHUN";
" CHGIDENT KILL RPING TRACE";
@@ -69,8 +71,6 @@ help Opercmds {
" CONNECT LOCOPS SAPART WALLOPS";
" DCCDENY MKPASSWD SDESC ZLINE";
" DIE MODULE SETHOST";
" DNS NACHAT SETIDENT";
" GLINE OPER SHUN";
" ==-------------------------oOo-------------------------==";
};
@@ -82,11 +82,11 @@ help Svscmds {
" einen bestimmten Befehl zu erhalten.";
" -";
" ==-------------------------oOo-------------------------==";
" SQLINE SVSKILL SVSNLINE SVSSNO";
" SVS2MODE SVSLUSERS SVSNOOP SVSWATCH";
" SVS2SNO SVSMODE SVSO SWHOIS";
" SVSFLINE SVSMOTD SVSPART UNSQLINE";
" SVSJOIN SVSNICK SVSSILENCE";
" SQLINE SVSKILL SVSNLINE SVSSILENCE";
" SVS2MODE SVSLUSERS SVSNOLAG SVSSNO";
" SVS2SNO SVSMODE SVSNOOP SVSWATCH";
" SVSFLINE SVSMOTD SVSO SWHOIS";
" SVSJOIN SVSNICK SVSPART UNSQLINE";
" ==-------------------------oOo-------------------------==";
};
@@ -126,12 +126,17 @@ help Umodes {
};
help Snomasks {
" Snomask seht für 'Service NOtice MASK'. Hiermit wird (hauptsächlich)";
" gesteuert, welche Server Notices empfangen werden.";
" Anwendung: /MODE nick +s <snomask>";
" Beispiel: /MODE blah +s +cF-j";
" Der Parameter legt fest, welche snomasks gewollt sind (oder nicht).";
" Man kann einzelne SNoMasks entfernen oder durch -s alle entfernen.";
" -";
" Hier eine Liste aller verfügbaren SNoMasks";
" SNoMasks werden mit dem UMode +s gesetzt, Sie sind ein zusätzlicher Parameter.";
" Als Beispiel, um SNoMask +f zu setzen tippt man:";
" /MODE <Dein Nick> +s +f";
" Man kann einzelne SNoMasks entfernen oder durch -s alle entfernen.";
" -";
" ==-------------------------oOo-----------------------==";
" c = Sieht alle lokalen Connects/Disconnects";
" e = Bekommt alle Server Meldungen für +e User (Eyes)";
@@ -160,8 +165,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 +202,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.";
" ~c | 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 +247,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";
@@ -430,7 +467,7 @@ help Lusers {
};
help Map {
" Zeigt eine pseude-grafische Netzwerks Karte an, aus der die;"
" Zeigt eine pseude-grafische Netzwerks Karte an, aus der die";
" Struktur des IRC Netzwerkes hervorgeht. Das wird hauptsächlich";
" zu Routing Zwecken benötigt.";
" -";
@@ -711,7 +748,7 @@ help Wallops {
};
help Globops {
" Sendet eine globale \"Nachricht\" an alle IRCops. Die Nachricht;"
" Sendet eine globale \"Nachricht\" an alle IRCops. Die Nachricht";
" kann nur von IRCops gelesen werden (anders, als WALLOPS, die";
" auch von normalen Usern gelesen werden können).";
" -";
@@ -749,12 +786,12 @@ help Nachat {
};
help Kill {
" Dieser Befehl entfernt einen User vom Server (anders als KICK";
" Dieser Befehl entfernt User vom Server (anders als KICK";
" wo der User nur vom Channel entfernt wird). Der User kann direkt";
" neu zum Server verbinden.";
" Befehl nur für IrcOps.";
" -";
" Syntax: KILL <user> <reason>";
" Syntax: KILL <user1>, <user2>, <user3>,... <reason>";
" Beispiel: KILL Jack16 Werbung für Dialer hier nicht erlaubt";
};
@@ -1153,7 +1190,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 +1284,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*";
};
@@ -1294,6 +1333,22 @@ help Svs2sno {
" Beispiel: SVS2SNO joe +Gc";
};
help Svsnolag {
" Aktiviert ein 'kein fake lag' für einen User.";
" Muss durch einen U:Lined Server gesendet werden.";
" -";
" Syntax: SVSNOLAG [+|-] <nickname>";
" Example: SVSNOLAG + joe";
};
help Svs2nolag {
" Aktiviert ein 'kein fake lag' für einen User.";
" Muss durch einen U:Lined Server gesendet werden.";
" -";
" Syntax: SVS2NOLAG [+|-] <nickname>";
" Example: SVS2NOLAG + joe";
};
help Spamfilter {
" Diese Befehle setzten oder löschen globale Spam Filter.";
" Spamfilter helfen, mit Spam, störenden Bots, Werbung etc. fertig zu werden.";
@@ -1308,7 +1363,7 @@ help Spamfilter {
" 'kill', 'tempshun' (Shun nur für aktuelle Session), 'shun',";
" 'kline', 'gline', 'zline', 'gzline', 'block' (blockiert Nachricht),";
" 'dccblock' (kann keine DCC mehr senden), 'viruschan' (verlässt alle Channels";
" und joint zwangsweise im Virus Help Channel).";
" und joint zwangsweise im Virus Help Channel), warn (Warnung für IrcOps).";
" [regex] hier handelt es sich um den Ausdruck in der Nachricht, auf den hin Reaktionen";
" erfolgen sollen.";
" [tkltime] die Zeitdauer, wie lange *LINEs, die durch [action] gesetzt wurden, gelten sollen";
@@ -1336,7 +1391,7 @@ help Tempshun {
" gilt der Shun nicht mehr.";
" -";
" Syntax: TEMPSHUN [+|-]<nickname> [reason]";
" Example: TEMPSHUN evilguy suspected infection";
" Example: TEMPSHUN evilguy vermutlich Infektion";
" TEMPSHUN -niceguy";
};
@@ -1347,3 +1402,16 @@ help DccAllow {
*/
};
help Addmotd {
" Fügt eine Zeile ans Ende der MOTD an.";
" -";
" Syntax: ADDMOTD <text>";
" Beispiel: ADDMOTD Spielt fair!";
};
help Addomotd {
" Fügt eine Zeile ans Ende der OPERMOTD an. ";
" -";
" Syntax: ADDOMOTD <text>";
" Beispiel: ADDOMOTD Abuse it and lose it!";
};
+512 -427
View File
File diff suppressed because it is too large Load Diff
+1517
View File
File diff suppressed because it is too large Load Diff
+1404
View File
File diff suppressed because it is too large Load Diff
+33 -13
View File
@@ -1,5 +1,6 @@
Numeric 005 Documentation (c) 2002-2005 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2.3)
Numeric 005 Documentation
(c) 2002-2005 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(c) 2005-2009 syzop (Bram Matthys) [syzop@vulnscan.org]
Numeric 005 allows the server to inform the client of any protocol specific features in the
IRCd. The numeric is sent at connection time immediately after numeric 004. Additionally
@@ -23,9 +24,9 @@ impractical and technically impossible to correctly implement due to existing li
in the standard. Therefore, this token is not currently supported.
Unreal does additionally provide a few tokens which are not specified in the standard, these
include: HCN, AWAYLEN, WATCH, SILENCE, EXTBAN, ELIST, and CMDS. Unreal also maintains a few
legacy tokens such as MAXCHANNELS and WALLCHOPS to ensure compatibility until the ISupport
standard is more widely accepted by clients.
include: HCN, AWAYLEN, WATCH, SILENCE, EXTBAN, ELIST, CMDS, NAMESX, UHNAMES, and WATCHOPTS.
Unreal also maintains a few legacy tokens such as MAXCHANNELS and WALLCHOPS to ensure
compatibility until the ISupport standard is more widely accepted by clients.
Token Value Default Value Description
------------------------------------------------------------------------------------------------
@@ -107,7 +108,7 @@ CASEMAPPING string ascii Specifies what defini
characters are upper/lowercase
of eachother.
EXTBAN prefix,types ~,cqr Specifies what extbans are
EXTBAN prefix,types ~,cqnr Specifies what extbans are
supported by the server. The prefix
defines which character indicates
an extban and the types defines
@@ -124,7 +125,7 @@ ELIST flags MNUCT Specifies the set of
flag allows topic set time
searching.
CMDS commands MAP,KNOCK,DCCALLOW,USERIP Specifies a series of commands that
CMDS commands MAP,KNOCK,DCCALLOW,USERIP Specifies a series of commands that
can be useful for the client to know
exist as they may provide a more
efficient means for the client to
@@ -132,29 +133,48 @@ CMDS commands MAP,KNOCK,DCCALLOW,USERIP Specifies a series of
token replaces the MAP and KNOCK
tokens.
STATUSMSG flags ~&@%+ Specifies the mode flags that may
STATUSMSG flags ~&@%+ Specifies the mode flags that may
prefix a channel name in a PRIVMSG
or NOTICE to limit who receives the
message to only those with a certain
level of access. This token will
replace the WALLCHOPS token.
EXCEPTS none none Indicates that channel ban exceptions
EXCEPTS none none Indicates that channel ban exceptions
(+e) are supported by the server.
INVEX none none Indicates that channel invite
INVEX none none Indicates that channel invite
exceptions (+I) are supported by
the server.
MAXLIST mode:num,... b:60,e:60,I:60 Specifies the maximum number of
MAXLIST mode:num,... b:60,e:60,I:60 Specifies the maximum number of
entries that may be added to a
particular mode list (type A modes).
This token replaces MAXBANS.
CHANLIMIT pfx:num,... #:10 Specifies the maximum number of
CHANLIMIT pfx:num,... #:10 Specifies the maximum number of
channels with the specified prefix
that a user may join at one time.
This token will replace MAXCHANNELS.
CHANNELLEN number 32 Provides the maximum length of a
CHANNELLEN number 32 Provides the maximum length of a
channel name that a user can create.
NAMESX none none Indicates that extended /NAMES info
is available on this server. If the
client sends "PROTOCTL NAMESX" then
the server will, from then on, send
all channel rights in a NAMES reply
instead of only the highest right
(eg: @+Person instead of @Person).
UHNAMES none none Indicates that (other) extended
/NAMES info is available on the
server. If the client sends
"PROTOCTL UHNAMES" then the server
will, from then on, send user@host
information in a NAMES reply
(eg: @nick!ident@hostname).
WATCHOPTS flags A WATCH options supported. 'A' means
Away Notification is available.
+15
View File
@@ -139,3 +139,18 @@ NICKCHARS This specifies a list of language characters that are allowed in n
The items in the list sent as NICKCHARS=.. must always be sorted.
If a server sends NICKCHARS= and if the remote parameters do not match the
charsets in use locally, then the server link is rejected.
CHANMODES Like CHANMODES from the 005 numeric. Useful to see which channel modes are
supported/used, and can also be used to properly eat parameters in parameter
modes in the MODE command (for eg: +jk 1:1 a).
EAUTH Early Authorization. This makes it possible for servers to authenticate each
other before the regular SERVER command. Needs to be done prior to using the
SERVERS token, and possibly other tokens or commands in the future. Hence,
is recommended to be sent as first (or early) PROTOCTL token. Note also that
the PASS command should be sent prior to this PROTOCTL token.
EAUTH=my.server.name[,options]
SERVERS Informs the other server about the other servers (numerics) on this network
(including our own numeric).
Syntax: SERVERS=numeric1,numeric2,numeric3,etc
+467
View File
@@ -0,0 +1,467 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- $Id$ -->
<html>
<head>
<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: 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>
<blockquote><p><a href="#S3_1">3.1 NICK - User Introduction and Nick Change</a></p></blockquote>
<blockquote><blockquote><p><a href="#S3_1_1">3.1.1 Nick Collisions</a></p></blockquote></blockquote>
<blockquote><p><a href="#S3_2">3.2 MODE, UMODE2 - User Mode Change</a></p></blockquote>
<blockquote><p><a href="#S3_3">3.3 QUIT - User Disconnect</a></p></blockquote>
<blockquote><p><a href="#S3_4">3.4 KILL - Force Disconnect</a></p></blockquote>
<blockquote><p><a href="#S3_5">3.5 SETHOST/CHGHOST - Change virtual host</a></p></blockquote>
<blockquote><p><a href="#S3_6">3.6 SETIDENT/CHGIDENT - Change a user's username</a></p></blockquote>
<blockquote><p><a href="#S3_7">3.7 SETNAME/CHGNAME - Change a user's realname</a></p></blockquote>
<blockquote><p><a href="#S3_8">3.8 WHOIS - User Information</a></p></blockquote>
<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_5">4.5 PONG - Live Connection Reply</a></p></blockquote>
<blockquote><p><a href="#S4_6">4.6 STATS - Server Stats</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>
<blockquote><p><a href="#S5_2">5.2 JOIN - Channel Join</a></p></blockquote>
<blockquote><p><a href="#S5_3">5.3 PART - Channel Part</a></p></blockquote>
<blockquote><p><a href="#S5_4">5.4 KICK - Channel Kick</a></p></blockquote>
<blockquote><p><a href="#S5_5">5.5 MODE - Channel Mode</a></p></blockquote>
<blockquote><p><a href="#S5_6">5.6 INVITE - Invite a user to a channel</a></p></blockquote>
<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>
<blockquote><p><a href="#S6_3">6.3 SVSSNO, SVS2SNO - Forced SNomask Change</a></p></blockquote>
<blockquote><p><a href="#S6_4">6.4 SVSNICK - Forced Nick Change</a></p></blockquote>
<blockquote><p><a href="#S6_5">6.5 SVSJOIN - Forced Join</a></p></blockquote>
<blockquote><p><a href="#S6_6">6.6 SVSPART - Forced Part</a></p></blockquote>
<blockquote><p><a href="#S6_7">6.7 SVSO - Oper Permissions</a></p></blockquote>
<blockquote><p><a href="#S6_8">6.8 SVSNOOP - Oper Lockdown</a></p></blockquote>
<blockquote><p><a href="#S6_9">6.9 SVSNLINE - RealName Ban</a></p></blockquote>
<blockquote><p><a href="#S6_10">6.10 SVSFLINE - File Ban</a></p></blockquote>
<p><a href="#S7">7 Messaging</a></p>
<blockquote><p><a href="#S7_1">7.1 PRIVMSG, NOTICE - Simple Message Transmission</a></p></blockquote>
<blockquote><p><a href="#S7_2">7.2 SENDUMODE, SMO - Usermode-based Delivery</a></p></blockquote>
<blockquote><p><a href="#S7_3">7.3 SENDSNO - SNomask-based Delivery</a></p></blockquote>
<blockquote><p><a href="#S7_4">7.4 CHATOPS - IRCop Chat</a></p></blockquote>
<blockquote><p><a href="#S7_5">7.5 WALLOPS - Wallop Chat</a></p></blockquote>
<blockquote><p><a href="#S7_6">7.6 GLOBOPS - FailOp Chat</a></p></blockquote>
<blockquote><p><a href="#S7_7">7.7 ADCHAT - Admin Chat</a></p></blockquote>
<blockquote><p><a href="#S7_8">7.8 NACHAT - NetAdmin Chat</a></p></blockquote>
<p><a href="#S8">8 Ban Control</a></p>
<blockquote><p><a href="#S8_1">8.1 TKL - Master Ban Control</a></p></blockquote>
<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><p><a href="#S9_2">9.2 Table for NICKIP.</a></p></blockquote>
<hr/>
<h1><a name="S1"></a>1 Introduction</h1>
<p>This document describes the UnrealIRCd server-to-server protocol as of protocol 2307 (Unreal 3.2.4).
It is currently slightly out of date, as the current protocol is 2310, but that should not matter much.</p>
<h2>A word about clocks.</h2>
<p>Unreal is very time-dependant. Users and channels, for example, are timestamped, and if server clocks are not synchronized properly, things can go very wrong very fast. See <a href="http://vulnscan.org/UnrealIrcd/faq/#67">http://vulnscan.org/UnrealIrcd/faq/#67</a> for more information on this. Note that there is a slight difference between server time and what is actually reported by the UNIX date command or by the C time() function. Unreal can apply an offset to the real time to create the server time, allowing servers to be virtually synchronized when synchronizing the real clocks is not possible (such as on shell servers).
I should make it quite clear that GMT time is used for everything. To be specific, timestamps in unreal are 32-bit integer values (actually, however many bits the time_t type is, which is 32 on 32-bit systems such as x86). This integer value is the number of seconds that have elapsed since Midnight January 1, 1970 GMT (can be referred to as Epoch time in the UNIX world). This means that timezones are no problem, nor is daylight savings time (or whatever your country of choice calls it).</p>
<hr/>
<h1><a name="S2"></a>2 Server Negotiation</h1>
<p>The first step to establish a server-to-server communication is to negotiate the connection as a server. Negotiation is done using standard IRC commands - no PROTOCTL options are in force until the link is established. The first step is to open a TCP/IP connection to the target server. The target port must be one described by a listen {} block in the remote server's configuration, and that listen block must not have the clientsonly option. After the connection is open, you will be treated as any other connection and be greeted with the "Looking up your hostname..." and "Checking identd..." notices as you would for a client. As these are NOTICE messages and your session as a server isn't established, they should simply be ignored. Use the commands below to introduce a server connection.</p>
<h2><a name="S2_1"></a>2.1 PASS - Connection Password</h2>
<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>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>
<li>TOKEN : Use tokenized commands. Tokens are case-sensitive, shortened versions of command names. Tokens will be usually one or two characters.</li>
<li>NICKv2 : Use extended NICK message for introducing users. See the NICK command for information about this.</li>
<li>VHP : When introducing a user, send his cloaked host as if it were a vhost. Usually used for services to avoid having duplicate code.</li>
<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 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>CLK : Supports an extra field in NICK for sending the cloaked host (not vhost).</li>
</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>
<p><b>Syntax (normal):</b> <tt>SERVER <i>server.name</i> 1 :<i>server description</i></tt></p>
<p><b>Syntax (with VL):</b> <tt>SERVER <i>server.name</i> 1 :U<i>protocolversion</i>-<i>protocolflags</i> <i>server description</i></tt></p>
<p><b>Syntax (with VL and NS):</b> <tt>SERVER <i>server.name</i> 1 :U<i>protocolversion</i>-<i>protocolflags</i>-<i>servernumeric</i> <i>server description</i></tt></p>
<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>
<li>2310 - Unreal 3.2.9</li>
<li>2309 - Unreal 3.2.6, 3.2.7, 3.2.8</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>
<li>2304 - Unreal 3.2.1</li>
<li>2303 - Unreal 3.2beta* through 3.2 Release</li>
<li>2302 - Unreal 3.1.1 through 3.1.4</li>
<li>2301 - Unreal 3.1 Release</li>
<li>2300 - Unreal 3.0 Release</li>
</ul>
<p>The compile flags as specified in protocol flags are:</p>
<ul>
<li>c : Server is chrooted (#define CHROOTDIR).</li>
<li>C : Server has command line config (-f option) enabled (#define CMDLINE_CONFIG).</li>
<li>D : Server is in debugmode (#define DEBUGMODE).</li>
<li>F : Using filedescriptor lists.</li>
<li>h : Server is compiled with hub support (#define HUB or answer "Hub" to relevant ./Config prompt).</li>
<li>i : Server shows invisible users in /TRACE.</li>
<li>n : NOSPOOF (pingcookies) is enabled (#define NOSPOOF or answer "Yes" to relevant ./Config prompt).</li>
<li>V : Server is using valloc().</li>
<li>W : Windows IRCd.</li>
<li>Y : Syslog logging enabled.</li>
<li>6 : Server has IPv6 support (#define INET6 or answer "yes" to relevant ./Config prompt).</li>
<li>X : Server has badword stripping (user and channel modes +G) (#define STRIPBADWORDS).</li>
<li>P : Server is using poll().</li>
<li>e : Server has SSL Support (#define USE_SSL or answer "yes" (and have ssl libraries installed) to relevant ./Config prompt).</li>
<li>O : Server has OperOverride enabled (#undef NO_OPEROVERRIDE or answer "no" to relevant ./Config prompt).</li>
<li>o : Server has disabled Oper verify (#undef OPEROVERRIDE_VERIFY or answer "no" to relevant ./Config prompt).</li>
<li>Z : Server has ziplink support (#define ZIP_LINKS or answer "yes" to relevant ./Config prompt AND have the zlib dev libraries).</li>
<li>E : Server has extended channel mode support.</li>
<li>3 : 3rd party modules are loaded or some system libraries are wonky.</li>
<li>m : Private message handling is 'tainted' (one or modules registered a USERMSG hook).</li>
<li>M : Channel message handling is 'tainted' (one or modules registered a CHANMSG hook).</li>
<li>Additional Version flags can be added by 3rd-party modules.</li>
</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 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 &quot;Client connecting&quot; or &quot;Client exiting&quot; 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 &quot;Link bla bla bla is now synched&quot; 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: &amp;)</h2>
<p><b>Syntax (nick change):</b> <tt>:<i>oldnick</i> &amp; <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>&amp; <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>&amp; <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>&amp; <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>&amp; <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>&amp; <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>
<p>A nick collision occurs when a server receives a NICK message (or &amp; token) introducing a user that the server already sees on the network. When a collision occurs, one or both of the colliding clients must be disconnected. The timestamp is examined to determine which client loses. The client with the earlier timestamp remains. If both clients have equal timestamps, both are removed. Currently, Unreal handles NICK collisions both passively and agressively:</p>
<ul>
<li><b>Aggressive Handling:</b> The server actively sends a KILL message back across the link to terminate that end's client.</li>
<li><b>Passive Handling:</b> Upon receipt of a NICK message that should "win", the server simply silently exits it's own client.</li>
</ul>
<h2><a name="S3_2"></a>3.2 MODE, UMODE2 - User Mode Change (TOKEN: G or |)</h2>
<p><b>Syntax (MODE):</b> <tt>:<i>user</i> G <i>user</i> <i>modechange</i></tt></p>
<p><b>Syntax (UMODE2):</b> <tt>:<i>user</i> | <i>modechange</i></tt></p>
<p>This indicates a usermode change. The modechange can consist of zero or more strings of characters, each prefixed with either a + or -; the only delimiter between them being said + or -. If no + or - is at the beginning of the mode string, a + should be implied.</p>
<p>Some user modes are never sent between servers. Specifically, usermode +s and +O are not sent between servers. Modules can define additional usermodes that also might not be sent between servers. The UMODE2 saves bandwidth by not including the redundant target field for usermode changes, so use it when possible.</p>
<h2><a name="S3_3"></a>3.3 QUIT - User Disconnect (TOKEN: ,)</h2>
<p><b>Syntax:</b> <tt>:<i>user</i> , :<i>reason</i></tt></p>
<p>This command indicates that a user has disconnected. The reason field is filled in with the reason the user disconnected, which will be any of: quit message provided by the user in a /quit command, kill message for local operator kills, "Client exited" if the user does a brutal quit (clean (by TCP's definition) disconnect without sending a QUIT message), or a socket error message if present.</p>
<p>The QUIT message must NOT be prefixed when passing on to other servers. Only local user quit messages are affected by set::prefix-quit.</p>
<h2><a name="S3_4"></a>3.4 KILL - Force Disconnect (TOKEN: .)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> . <i>target</i> :<i>killpath</i>!<i>source</i> (<i>reason</i>)</tt></p>
<p>Used to indicate that an operator has used KILL on a user not on the same server. Anything beyond the last ! in the kill path is used as the reason. The source (reason) part is simply a standard used by Unreal. As each server passes on a KILL message, it usually prepends the bottommost part (up to the first .) of it's name followed by a ! character. When unreal receives a KILL from a directly connected irc operator, it will usually add that oper's vhost (or realhost if -x) as the first hop in the kill path, then follow with it's own name as mentioned before if it is passing to another server.</p>
<p>A server can also send KILLs on it's own. This is done in cases involving nickname collisions, fake senders, bad direction, and other cases of protocol errors. Usually, in these cases, the server puts it's own name as the source, and also prefixes with <i>bottompart</i>! like for any other ircop on that server. For example: @3 . someone :irc!irc.example.com (Nick collision)</p>
<h2><a name="S3_5"></a>3.5 SETHOST/CHGHOST - Change virtual host (TOKEN: AA or AL)</h2>
<p><b>Syntax (SETHOST):</b> <tt>:<i>source</i> AA <i>newvhost</i></tt></p>
<p><b>Syntax (CHGHOST):</b> <tt>:<i>source</i> AL <i>target</i> <i>newvhost</i></tt></p>
<p>Indicates the change of a user's virtual host. Currently, servers are expected to assume UMODE2 +xt on the target user in both commands. (In the case of SETHOST, the target is the sender.) Servers using PROTOCTL VHP will receive the cloaked host in a SETHOST message when a user activates his cloaked host. A server can also send CHGHOST (from one of it's opered clients) to change a user's hostname. This is generally used by HostServ implementations. To disable a cloaked host, use CHGHOST to set the user's virtual host equal to his real host, or use SVSMODE -xt, but the latter requires services.</p>
<h2><a name="S3_6"></a>3.6 SETIDENT/CHGIDENT - Change a user's username (TOKEN: AD or AZ)</h2>
<p><b>Syntax (SETIDENT):</b> <tt>:<i>source</i> AD <i>newusername</i></tt></p>
<p><b>Syntax (CHGIDENT):</b> <tt>:<i>source</i> AZ <i>target</i> <i>newusername</i></tt></p>
<p>Indicates the change of a user's username. No usermode change is associated with this. Unreal does not use a distinguished virtual username, so servers should only keep the original username (from the NICK message) if they intend to allow the user to reset the original username. Servers can use CHGIDENT to change a user's username.</p>
<h2><a name="S3_7"></a>3.7 SETNAME/CHGNAME - Change a user's realname (TOKEN: AE or BK)</h2>
<p><b>Syntax (SETNAME):</b> <tt>:<i>source</i> AE :<i>newrealname</i></tt></p>
<p><b>Syntax (CHGNAME):</b> <tt>:<i>source</i> BK <i>target</i> :<i>newrealname</i></tt></p>
<p>Indicates the change of a user's realname. No usermode change is associated with this. Unreal does not use a distinguished virtual realname, so servers should only keep the original realname (from the NICK message) if they intend to allow the user to reset the original realname. Servers can use CHGNAME to change a user's username. Note that servers must NOT check that the sender be an IRCop in SETNAME - normal users are permitted to use SETNAME.</p>
<h2><a name="#S3_8"></a>3.8 WHOIS - User Information (TOKEN: #)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> # [<i>from-server</i> ]<i>nick</i></tt></p>
<p>Requests the information on a user. This works exactly like the user /whois command - in fact, the source parameter must be a user, or the command will do nothing. <i>from-server</i> is the server to request the information from; if a server recives a WHOIS message without this parameter, it should return its own information on the user, otherwise it should pass the message to the given server. Note that <i>from-server</i> may name a user instead of a server (such as when a user uses /whois nick nick), in which case the the nick should be interpreted as naming the server that user is on. <i>nick</i> may be several users seperated by commas, but may not contain wildcards.</p>
<p>The reply to a WHOIS message uses the same numeric replies as the user command.</p>
<hr/>
<h1><a name="S4"></a>4 Server Operations</h1>
<p>This is different from server negotiation. Negotiation is when you are first connecting. Server introduction is used for introducing additional servers behind an existing server (aka hubbing). Hubbing is limited as specified by the hub, leaf, and leafdepth parameters in the link block and attempted violation of a hub restriction results in termination of the link. If no hub or leaf directive is given your server is a leaf by default, so any introduction of any server behind you would be an automatic drop. U:Lines don't matter here; services must be configured as a hub in the link block. The reason is U:Line is a permission rule, but hub privilege is a network structure rule.</p>
<h2><a name="S4_1"></a>4.1 SERVER - Server Introduction (TOKEN: ')</h2>
<p><b>Note: This command is also used for negotiation. Be warned that the token for this command is NOT VALID at that time! See section 2.3 for the syntax for negotiation.</b></p>
<p><b>Syntax (without PROTOCTL NS):</b> <tt>:<i>source</i> SERVER <i>new.server</i> <i>hopcount</i> :<i>description</i></tt></p>
<p><b>Syntax (with PROTOCTL NS):</b> <tt>@<i>sourcenumeric</i> SERVER <i>new.server</i> <i>hopcount</i> <i>numeric</i> :<i>description</i></tt></p>
<p>The command indicates that the server named new.server is being introduced by the source (the source is the server which new.server is directly linked to). The hopcount will be the number of links the receiving server would have to cross to reach new.server. In other words, new.server introduced itself with a hopcount of 1, and as the SERVER message is passed along, hopcount is incremented.</p>
<p>As an example, a services server faking a SERVER message for JUPE functionality would use a hopcount of 2.</p>
<h2><a name="S4_2"></a>4.2 SQUIT - Server Removal (TOKEN: -)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> SQUIT <i>server.name</i> <i>:reason</i></tt></p>
<p>From an IRCop or when server.name is not behind the source, this command requests the removal of the specified server.name. The command in this case is treated very much like KILL in the respect that the message is broadcasted to all servers, except server.name and any servers behind it. When the SQUIT reaches server.name's uplink, that server closes the link to server.name (which would then generate it's own SQUIT on behalf of it's uplink for the servers behind it).</p>
<p>A server can also use SQUIT in the same manner as QUIT to note the removal of a server behind it, or that it itself is quitting. In the former case, server.name is behind source, and the message is forward on to all other servers. In the latter case, source and server.name are equal, the receiving server closes the link and forwards the SQUIT message.</p>
<p>Unreal closes a direct link by simply sending an ERROR message and then closing the TCP connection. This typically causes the other end to generate an SQUIT bearing the message "Client exited" or similar, however, the ERROR will usually cause the server to send a message to all IRCops.</p>
<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 &quot;quiet&quot; 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>
<h2><a name="#S4_6"></a>4.6 STATS - Server Stats (TOKEN: 2)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> 2 [<i>type</i> [<i>server</i>] [<i>extended-params</i>]]</tt></p>
<p>Requests statistics or configuration information from a server. This command is used to transport cross-server STATS requests from users (eg: /stats o other.server), and should only be sent from a user (not a server). With no parameters, this will cause unreal to simply dump its help output. <i>type</i> is the type of stats to request, <i>server</i> names a server (or a user on that server) to request stats from, and <i>extended-params</i> is used to filter output from STATS G, etc. When received, it is up to the receiver to determine what stats to support and how to reply, but generally numeric replies are used. For the list of unreal's stats types, type /stats in a client for the helptext dump.</p>
<p><b>Note:</b> Stats set as oper-only (see set::oper-only-stats) will be refused from a server. In this case, it will be necessary to send the stats request from a psuedo-oper (such as a services agent, etc) for services/stats/etc.</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>
<h2><a name="S5_1"></a>5.1 SJOIN - Channel Burst (TOKEN: ~)</h2>
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> ~ <i>timestamp</i> <i>channel</i> +<i>modes</i>[ <i>modeparams</i>] :<i>memberlist</i> <i>&amp;ban</i> <i>"exempt</i> <i>'invex</i></tt></p>
<p>Timestamp is the channel timestamp and can be !b64 as defined by PROTOCTL SJB64. Modes should only include those in the last three mode sets listed in CHANMODES. Modeparams is one parameter for each mode character that requires one. Memberlist is a series of users (all of which must at least be behind the server sending the SJOIN), each user is prefixed with one or more characters indicating their status. Owners (+q) are prefixed with *, admins (+a) ~, ops (+o) @, halfops (+h) %, voices (+v) +. Normal users are not prefixed with anything. Ban, ban exception, and invite exception masks are also included, with bans prefixed with &amp;, ban exceptions prefixed with ", and invite exceptions with '. Note that when a &amp;, " or ' is encountered as the first character, further processing of ~, *, @, %, or + characters must not continue because ban, exempt, and invite masks can contain any of those characters. (Plus it's just not right for a ban mask to be marked as a channel admin...)</p>
<p>If the channel didn't already exist it is created with the information given in the SJOIN. Otherwise the timestamp is used to determine how the SJOIN information is handled. As a given, all members are joined into the channel, regardless. The mode information (modes, modeparams, memberlist prefixes, bans, exempts, and invites) is subject to the timestamp rules:</p>
<ul>
<li>If the channel's current timestamp is equal to the timestamp in SJOIN, then the mode information is merged.</li>
<li>If the channel's current timestamp is less than the SJOIN timestamp, then the mode information is ignored.</li>
<li>If the channel's current timestamp is greater than the SJOIN timestamp, then the channel's existing mode information is cleared (for example, deop, etc all local clients), and the SJOIN mode information is added.</li>
</ul>
<p>When merging modes, conflicting modes (including +p vs +s, differing +l limits or +k keys, etc) are handled as follows:</p>
<ul>
<li><b>Private (+p) vs. Secret (+s):</b> Secret (+s) is preferred. Private (+p) is removed. (Note: there is a <a href="http://bugs.unrealircd.org/view.php?id=2391">bug</a> in Unreal versions prior to 3.2.3 in which a desynch will occur in which one side is +p and the other is +s. Update to Unreal 3.2.4 if you have problems with this.)</li>
<li><b>Strip Color (+S) vs. Block Color (+c):</b> Block (+c) is preferred. Strip (+S) is removed. (Note: Bug for +p vs. +s in prior unreal versions apply here as well.)</li>
<li><b>Channel Limit:</b> Numericly larger limit is preferred (for example, +l 30 versus +l 15 : +l 30 wins).</li>
<li><b>Channel Key:</b> &quot;Larger&quot; key (as defined by strcmp) is preferred (for example, +k moo versus +k meow : +k moo wins).</li>
<li><b>Channel Link:</b> &quot;Larger&quot; link name (as defined by stricmp - not case sensitive) is preferred (for example, +L #moo versus +L #meow : +L #moo wins, but +L #Meow versus +L #meow : values are equal).</li>
<li><b>Flood String:</b> Not really sure on this. I think larger value in each component wins.</li>
<li><b>Join-Throttle:</b> Highest of time period wins, if equal, highest of join amount wins (so +j 3:40 beats +j 5:20 but +j 5:20 beats +j 3:20).</li>
<li>Parameterized modes in third party modules will define their own conflict resolution formula.</li>
</ul>
<h2><a name="S5_2"></a>5.2 JOIN - Channel Join (TOKEN: C)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> C <i>#channel</i></tt></p>
<p>Indicates a user has joined a channel. Only one channel is sent this way, and the key is not sent even if the user gave one one joining. If the channel parameter is the special "0" case, the server must interpret the message as a PART for all channels the user is on.</p>
<h2><a name="S5_3"></a>5.3 PART - Channel Part (TOKEN: D)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> D <i>#channel</i>[ :<i>reason</i></tt>]</p>
<p>Indicates a user has left a channel. Only one channel is sent this way. The reason parameter may be left out if no reason was given.</p>
<h2><a name="S5_4"></a>5.4 KICK - Channel Kick (TOKEN: H)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> H <i>#channel</i> <i>user</i> :<i>reason</i></tt></p>
<p>Orders the forced removal of user from #channel with the given reason. When updating state for this command, it should be the same as if :user PART #channel had been received - the user is removed from #channel's memberlist.</p>
<h2><a name="S5_5"></a>5.5 MODE - Channel Mode (TOKEN: G)</h2>
<p><b>Note:</b> This is the same command as that used for usermode changes.</p>
<p><b>Syntax:</b> <tt>:<i>source</i> G <i>#channel</i> <i>modechange</i> <i>modeparams</i>[ <i>timestamp</i>]</tt></p>
<p>Changes the specified modes on the given channel. If the source is a server and the last parameter is numeric, it is interpreted as timestamp (although it can also be consumed as a parameter for modes. For example: :server.name MODE #channel +l 4 &lt;-- 4 will be a timestamp and the +l parameter). When a mode change is timestamped in this way, the mode is treated as it is with SJOIN: the MODE message is ignored if the timestamp is greater than the channel timestamp. (If the timestamp is equal, the mode is simply added replacing any conflicting modes already in place.)</p>
<p>A services implementation can easily clear all entries in a list mode such as bans with SVSMODE (see below).</p>
<h2><a name="S5_6"></a>5.6 INVITE - Invite a user to a channel (TOKEN: *)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> * <i>target</i> <i>#channel</i></tt></p>
<p>Sends to target an invitation to join #channel. If the source is a channel operator on #channel, or a U:Lined server, the invitation grants the user the temporary ability to join the channel regardless of any bans or some restricting channel modes (not +O or +A).</p>
<h2><a name="S5_7"></a>5.7 SAJOIN - Channel Force Join (TOKEN: AX)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> AX <i>targetuser</i> <i>#channel</i></tt></p>
<p>This requests the forced join of targetuser to #channel. This type of forced join overrides bans, and most modes. The server to which targetuser is connected to must actually acknowledge the join for it to occur. Service implementations may ignore this command, as they would only ever receive it if an SAJOIN was targeted at a service client, in which case it should be ignored...</p>
<h2><a name="S5_8"></a>5.8 SAPART - Channel Force Part (TOKEN: AY)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> AY <i>targetuser</i> <i>#channel</i>[ :<i>reason</i>]</tt></p>
<p>This requests the forced part of targetuser from #channel. This is slightly different from a KICK in that the user's removal is announced with PART. The server to which targetuser is connected to must actually acknowledge the part for it to occur. Service implementations may ignore this command, as they would only ever receive it if an SAPART was targeted at a service client, in which case it should be ignored...</p>
<p>The reason field is optional. If provided the acknowledging PART message should prefix the message with &quot;SAPart:&quot;.</p>
<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></tt></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>
<h2><a name="S6_1"></a>6.1 SVSKILL - Force Disconnect by Service (TOKEN: h)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> h <i>target</i> :<i>reason</i></tt></p>
<p>This command is similar to KILL but differs in several ways. First of all: there is no mutilation of the reason value. The reason given is the exact reason used to generate QUIT messages sent to users. Second, it is silent; no server notice is generated in response to this command. Third, it can only be used by a U:Lined server or client (such as services).</p>
<p>Because this command can be dangerous in the hands of an abusive person, service implementations should avoid granting humans control over the reason parameter. In cases of commands where a person has control over such parameter, either use a regular KILL instead, or otherwise modify the reason so that operators can be held accountable if necessary.</p>
<h2><a name="S6_2"></a>6.2 SVSMODE, SVS2MODE - Force User Mode Change (TOKEN: n or v)</h2>
<p><b>Syntax (SVSMODE):</b> <tt>:<i>source</i> n <i>target</i> +<i>usermodes</i></tt></p>
<p><b>Syntax (SVS2MODE):</b> <tt>:<i>source</i> v <i>target</i> +<i>usermodes</i></tt></p>
<p>Judging by these commands alone, you'd think they are identical. Both commands force a usermode change to occur. This is typically used by services to set +r on a user who has successfully identified. They differ in that SVS2MODE also sends the mode change to the user, while SVSMODE does not (hidden mode change).</p>
<p>SVSMODE and SVS2MODE also give special treatment to usermode +d. Rather than setting the deaf mode like you might expect, SVS(2)MODE +d allows services to change a user's services stamp (which is given in the NICK message). This could allow services to set the service stamp to an easily identifiable value that could then be used to say "hey, this person identified already". The syntax of this is: +d <i>newservicestamp</i> and can be combined with setting other usermodes as well. The deaf mode <b>can</b> be set by using +d without the service stamp parameter; however, in this case you <b>cannot</b> set the service stamp in the same SVS(2)MODE message.</p>
<p><b>Note:</b> Do <b>NOT</b> use SVSMODE to remove IRCop status from a user. Use the SVSO command for that instead.</p>
<p>Alternatively, target can name a channel. In this case, the mode change parameter can consist of a - character, followed by any or all of: b, e, I, q, a, o, h, or v. These characters cause the corresponding lists to be cleared of all entries. For example: SVSMODE #channel -b removes ALL bans from #channel, and SVSMODE #channel -qaohv turns ALL users on #channel into normal users (removes all owner, admin, op, halfop, and voice status). In this case, the uplink will acknowledge with a MODE listing the bans, etc that were removed.</p>
<p>To completely clear a channel of all modes: MODE #channel -cfijklmnprstzACGMKLNOQRSTVu (plus any added by third-party module) followed by SVSMODE #channel -beIqaohv.</p>
<h2><a name="S6_3"></a>6.3 SVSSNO, SVS2SNO - Forced SNomask Change (TOKEN: BV or BW)</h2>
<p><b>Syntax (SVSSNO):</b> <tt>:<i>source</i> BV <i>target</i> +<i>snomasks</i></tt></p>
<p><b>Syntax (SVS2SNO):</b> <tt>:<i>source</i> BW <i>target</i> +<i>snomask</i></tt></p>
<p>Changes a user's snomasks. The difference between SVSSNO and SVS2SNO is the same as with SVSMODE versus SVS2MODE. If the user is not +s, you must add it via SVSMODE +s. For example:</p>
<pre>:OperServ v someuser +s
:OperServ BW someuser +ks</pre>
<h2><a name="S6_4"></a>6.4 SVSNICK - Forced Nick Change (TOKEN: e)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> e <i>target</i> <i>newnick</i> :<i>newtimestamp</i></tt></p>
<p>Forces the specified user to change his nick to newnick and also sets the nick timestamp to newtimestamp (so, for example, services could protect identified users from a nick collision by simply setting the nick timestamp to something way less than "now" - though currently this requires actually changing the nick too). SVSNICK requires the server to which the target is connected to acknowledge the nick change. If the user specified by newnick already exists, then target will be disconnected (even if it's something like a case-change).</p>
<h2><a name="S6_5"></a>6.5 SVSJOIN - Forced Join (TOKEN: BX)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> BX <i>target</i> <i>#channel</i></tt></p>
<p>This is identical to SAJOIN with a few exceptions: 1) It is U:Line-only. 2) No opernotice on use. 3) Bans and restricting modes are respected, a prior INVITE message must be sent to cause bans to be ignored.</p>
<h2><a name="S6_6"></a>6.6 SVSPART - Forced Part (TOKEN: BT)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> BT <i>target</i> <i>#channel</i> :<i>reason</i></tt></p>
<p>Also identical to SAPART with a few exceptions: no static prefix on the optional part reason, and no global notice, and requires a U:Line. Usage recommendation of SVSPART versus KICK is the same as for SVSKILL versus KILL.</p>
<h2><a name="S6_7"></a>6.7 SVSO - Oper Permissions (TOKEN: BB)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> BB <i>target</i> <i>flagchanges</i></tt></p>
<p>This allows a service to add or remove IRCop permission flags for a user. Flagchanges is formatted similar to that of MODE with the exception that operflags are used instead of usermodes. If the change string consists only of -, then all oper permissions, usermodes, and snomasks are removed (as if the user had himself typed MODE nick -Oo).</p>
<p>If you are granting IRCop permissions to a user who is not currently an IRCop, you should follow up with an SVSMODE +o or SVSMODE +O as appropriate. For example:</p>
<pre>:OperServ BB somenick +o
:OperServ BW somenick +cefknoqsSv
:OperServ AL somenick local.oper.somethinghere.net
:OperServ v somenick +Ohs </pre>
<h2><a name="S6_8"></a>6.8 SVSNOOP - Oper Lockdown (TOKEN: f)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> f <i>(op)</i><i>server.name</i></tt></p>
<p>The (op) parameter is either a + or - indicating if NOOP mode should be activated (+) or deactivated (-). When NOOP mode is activated, all IRCops on the server are deopered (including local operators) and the /oper command is disabled. IRCop privileges can still be granted through use of SVSO. On UnrealIRCd, it is not necessary to masskill all IRCops on the nooped server, as they are deopered automatically.</p>
<h2><a name="S6_9"></a>6.9 SVSNLINE - RealName Ban (TOKEN: BR)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> BR <i>op</i> <i>reason</i> :<i>realname mask</i></tt></p>
<p>Op is either + (add) or - (remove). In the case of +, reason is a space-escaped string (all space chars are encoded as _). If -, reason is ignored.</p>
<h2><a name="S6_10"></a>6.10 SVSFLINE - File Ban (TOKEN: BC)</h2>
<p><b>Syntax (add):</b> <tt>:<i>source</i> BC + <i>filemask</i> :<i>reason</i></tt></p>
<p><b>Syntax (remove):</b> <tt>:<i>source</i> BC - <i>filemask</i></tt></p>
<p><b>Syntax (clear):</b> <tt>:<i>source</i> BC *</tt></p>
<p>Adds or removes a DCCDENY item for the specified filemask on all servers. These DCCDENYs are hard dccdenies - the /dccallow command cannot override it. The last form removes all dccdenies added via SVSFLINE.</p>
<hr/>
<h1><a name="S7"></a>7 Messaging</h1>
<p>What good is Internet Relay <b>CHAT</b> if users cannot <b>CHAT</b>? This section addresses the commands through which arbitrary user messages are sent.</p>
<h2><a name="S7_1"></a>7.1 PRIVMSG, NOTICE - Simple Message Transmission (Token: ! or B)</h2>
<p><b>PRIVMSG Syntax:</b> <tt>:<i>source</i> ! <i>target</i> :<i>message</i></tt></p>
<p><b>NOTICE Syntax:</b> <tt>:<i>source</i> B <i>target</i> :<i>message</i></tt></p>
<p>Sends a messages to the given target. The target either names a single client, or identifies a list of clients in which the message is to be sent to. The available targets include:</p>
<ul>
<li><i>nickname</i>: Names a single user to whom the message is delivered.</li>
<li><i>nickname</i>@<i>servermask</i>: Also names a single user, but the message will only be delivered if the user is connected to a server matching the specified servermask. This is typically used for sending messages to services. The target must not be changed at any point along the path it must travel for delivery, even up to the final receipt of the message by the target. This allows the target to know it has been sent a message in this way.</li>
<li>#<i>channelname</i>: Sends a message to all users on the specified channel (except when channel is a moderated auditorium (+mu), in which case the wierd +mu sending behavior goes off).</li>
<li><i>modeprefix</i>#<i>channelname</i>: Sends a message to all users on the given channel having the given status or higher. For example: + means all voices, halfops, etc.</li>
<li>$<i>servermask</i>: Sends a message to ALL users on all servers matching the specified servermask (known as a server broadcast message). The RFC requirements of having a TLD with no wildcards is not applied to U:Lined clients.</li>
</ul>
<p>Unreal does not support the #hostmask format.</p>
<h2><a name="S7_2"></a>7.2 SENDUMODE, SMO - Usermode-based Delivery (TOKEN: AP or AU)</h2>
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> AU <i>umode</i> :<i>message</i></tt></p>
<p>Sends the specified message to all users with the given mode. Only one usermode may be given. This is a server-only command if you can't tell from the sender prefix :) .</p>
<p>The message will be displayed as coming from the receiving client's own server. It may be appropriate to add a &quot;*** Notice (or other leader here) -- from blah:&quot; if you wish to clarify where the message is from.</p>
<h2><a name="S7_3"></a>7.3 SENDSNO - SNomask-based Delivery (TOKEN: Ss)</h2>
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> Ss <i>snomask</i> :<i>message</i></tt></p>
<p>Sends the specified message to all users with the given snomask. Only one snomask may be given. This is a server-only command if you can't tell from the sender prefix :) .</p>
<p>The message will be displayed as coming from the receiving client's own server. It may be appropriate to add a &quot;*** Notice (or other leader here) -- from blah:&quot; if you wish to clarify where the message is from.</p>
<h2><a name="S7_4"></a>7.4 CHATOPS - IRCop Chat (TOKEN: p)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> p :<i>message</i></tt></p>
<p>Sends the message to all IRCops on all servers.</p>
<h2><a name="S7_5"></a>7.5 WALLOPS - Wallop Chat (TOKEN: =)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> = :<i>message</i></tt></p>
<p>Sends the message to all users with usermode +w, whether they are ircops or not.</p>
<h2><a name="S7_6"></a>7.6 GLOBOPS - FailOp Chat (TOKEN: ])</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> ] :<i>message</i></tt></p>
<p>Send the message to all IRCops with usermode +g.</p>
<h2><a name="S7_7"></a>7.7 ADCHAT - Admin Chat (TOKEN: x)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> x :<i>message</i></tt></p>
<p>Send the message to all Server and Network Admins (usermode +A).</p>
<h2><a name="S7_8"></a>7.8 NACHAT - NetAdmin Chat (TOKEN: AC)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> AC :<i>message</i></tt></p>
<p>Send the message to all Network Admins (usermode +N).</p>
<hr/>
<h1><a name="S8"></a>8 Ban Control</h1>
<p>Sometimes, you have the misfortune of encountering a user who has no purpose but to serve as an annoyance to your server or network. These commands transmit network-wide ban information amongst each other.</p>
<h2><a name="S8_1"></a>8.1 TKL - Master Ban Control (TOKEN: BD)</h2>
<p>The TKL command seems to have one oddity about it: the real ban source is included in the TKL command rather than in the sender prefix. Most likely this is done for synching reasons (so that the *line ban can be credited to the proper person even if he/she is offline). For this reason, the command syntax is given without any sender prefix at all. It is still permissible to use one, however.</p>
<h3><a name="S8_1_1"></a>8.1.1 GLINE - Network-wide user@host ban</h3>
<p><b>Add Syntax (TKL):</b> <tt>BD + G <i>userpart</i> <i>hostpart</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
<p><b>Remove Syntax (TKL):</b> <tt>BD - G <i>userpart</i> <i>hostpart</i> <i>source</i></tt></p>
<p>Adds and Removes Network-wide user@host bans, known as G:Lines. The GLINE command itself must not be used. The userpart and hostpart are the user portion and hostname portion of the ban mask. The expiretimestamp is 0 if the G:Line should not expire, otherwise it will expire at the given time. It is an absolute time, not relative, thus it's imperitive to have reasonably synchrnoized clocks or bans may be removed too early or even immediately!</p>
<h3><a name="S8_1_2"></a>8.1.2 GZLINE - Network-wide IP ban</h3>
<p><b>Add Syntax (TKL):</b> <tt>BD + Z * <i>ipmask</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
<p><b>Remove Syntax (TKL):</b> <tt>BD - Z * <i>ipmask</i> <i>source</i></tt></p>
<p>Adds and Removes Network-wide IP bans, known as Global Z:Lines. The GZLINE command itself must not be used. Ipmask permits CIDR notation as well as wildcard masks.</p>
<h3><a name="S8_1_3"></a>8.1.3 SQLINE, UNSQLINE - Network-wide Nickname ban (TOKEN: c or d)</h3>
<p><b>Add Syntax (TKL):</b> <tt>BD + Q <i>hold</i> <i>nickmask</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
<p><b>Add Syntax (SQLINE):</b> <tt>:<i>source</i> c <i>nickmask</i> :<i>reason</i></tt></p>
<p><b>Remove Syntax (TKL):</b> <tt>BD - Q <i>hold</i> <i>nickmask</i> <i>source</i></tt></p>
<p><b>Remove Syntax (UNSQLINE):</b> <tt>:<i>source</i> d <i>nickmask</i></tt></p>
<p>In the TKL syntax, the hold parameter is either a * to mark the qline as a nick ban, or an H to mark it as a services hold. A services hold does not trigger qline rejection notice, and is typically used by NickServ to reserve registered nicks until they are released by the owner. The (UN)SQLINE syntax can only be used by a server, but any user can be used as the source for the TKL syntax. Unlike G and GZ lines, Q:Lines do not cause existing matching users to be disconnected or otherwise affected.</p>
<p>The TKL syntax is preferred, since it is more flexible, but (UN)SQLINE is permitted for compatibility.</p>
<h3><a name="S8_1_4"></a>8.1.4 SPAMFILTER - Message Spam Filtration System</h3>
<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>
</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 &quot;digit&quot; 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 &quot;digit&quot; in the base64 encoded IP corresponds to 6 bits of the IP address.</p>
<p>An IPv4 address is 32 bits, so 6 base64 &quot;digits&quot; are needed. Since base64 requires values to come in multiples of 4 &quot;digits&quot;, 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 &quot;digits&quot; 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>
+1 -2
View File
@@ -1,9 +1,8 @@
Token List (c) 2002-2004 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2.3)
Command Token
------------------------------------------------------------------------------------------------
PRIVATE !
PRIVMSG !
WHOIS #
NICK &
SERVER '
+4 -1
View File
@@ -1,8 +1,11 @@
VL Information (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2-beta11)
Protocol Version
------------------------------------------------------------------------------------------------
2310 3.2.9
2309 3.2.6, 3.2.7, 3.2.8
2308 3.2.5
2307 3.2.4
2306 3.2.3
2305 3.2.2
2304 3.2.1
+401 -137
View File
@@ -12,7 +12,7 @@
.block_old { font-size: 14; }
.set { font-weight: bold; }
.desc { margin-left: 15px; }
pre { font: "times new roman"; font-style: normal;}
pre { font: "times new roman"; font-style: normal; background-color: #eeeeee;}
</style>
</head>
@@ -21,23 +21,25 @@
<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.gr.html">Greek</a> |
<a href="unreal32docs.nl.html">Dutch</a> |
<a href="unreal32docs.ru.html">Russian</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.3 </font><br>
<b>Letztes Dokumentation Update:</b> 2005-03-13</div>
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke<br>
<font size="4">Version: 3.2.9-RC1</font><br>
<b>Letztes Update dieses Handbuchs:</b> 2009-12-24</div>
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke<font face="Helvetica,Arial" size="-1">/
aquanight / WolfSage</font><br>
<b>Contributors:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
<b>Dokumentation</b><b>:</b> CKnight^ / Syzop<br>
<b>Deutsche Übersetzung:</b> Stylus740 (irc.smart-irc.net)<br>
<p>Aufgrund des wachsenden Umfangs der Dokumentation von UnrealIRCd3.2 wurde das
Dokument auf HTML umgestellt, um leichter navigieren und besser
Querverweisen folgen zu können. Um diese Dokumentation zu lesen, wird einer der
nachfolgenden Browser benötigt. Aktuelle Dokumentationen sind erhältlich&nbsp; @ <a href="http://www.vulnscan.org/UnrealIrcd/unreal32docs.html">http://www.vulnscan.org/UnrealIrcd/unreal32docs.html</a>
und&nbsp; eine FAQ @
<a href="http://www.vulnscan.org/UnrealIrcd/faq/.">http://www.vulnscan.org/UnrealIrcd/faq</a>/.</p>
<b>Deutsche Übersetzung:</b> LowDigit / Orginalübersetzung: stylus740<br>
<p>Um diese Dokumentation zu lesen, ist einer der unten aufgeführten
kompatiblen Browser erforderlich. Aktuelle Dokumentationen sind erhältlich&nbsp; @
<a href="http://www.vulnscan.org/UnrealIRCd/unreal32docs.html">http://www.vulnscan.org/UnrealIRCd/unreal32docs.html</a>
und&nbsp; eine FAQ @ <a href="http://www.vulnscan.org/UnrealIRCd/faq/.">http://www.vulnscan.org/UnrealIRCd/faq</a>/.</p>
<p><b>Kompatible Browser: </b><br>
<ul>
<li>Opera 6.02
@@ -68,9 +70,11 @@ und&nbsp; eine FAQ @
-- 3.14. <a href="#feature_spamfilter"> Spamfilter</a><br>
-- 3.15. <a href="#feature_cidr">CIDR<br>
</a>
-- 3.16. <a href="#feature_nickchars">Nick Zeichensätze</a><a href="#feature_cidr"><br>
-- 3.16. <a href="#feature_nickchars">Nick Zeichensätze<br>
</a>-- 3.17 <a href="#feature_cgiirc">CGI:IRC Unterstützung<br>
</a>-- 3.18 <a href="#feature_timesync">Zeitsynchronisation</a><a href="#feature_cidr"><br>
</a>
-- 3.17. <a href="#feature_other">Andere Features</a> <a href="#feature_other"><br>
-- 3.19. <a href="#feature_other">Andere Features</a> <a href="#feature_other"><br>
</a>
4. <a href="#configuringyourunrealircdconf">Konfiguration der unrealircd.conf
Datei</a><br>
@@ -109,8 +113,10 @@ Konfigurationsdatei</a><br>
---4.32. <a href="#aliasblock">Alias Block</a><br>
---4.33. <a href="#helpblock">Help Block<br>
</a>---4.34. <a href="#officialchannels"> Official Channels Block</a><br>
---4.35. <a href="#spamfilter"> Spamfilter Block</a><br>
---4.36. <a href="#setblock">Set Block -=- (networks/unrealircd.conf)</a><br>
---4.35. <a href="#spamfilter"> Spamfilter Block<br>
</a>---4.36. <a href="#cgiirc">Cgiirc Block</a><br>
---4.37. <a href="#setblock">Set Block -=- (networks/unrealircd.conf)</a><br>
---4.38. <a href="#filesblock">Files Block</a><br>
5. <a href="#addtlfiles">Additional Files</a><br>
6. <a href="#userchannelmodes">User & Channel Modi</a><br>
7. <a href="#useropercommands">User & Oper Befehlsliste<br>
@@ -148,15 +154,17 @@ Verwendung des Textes mit anderer Software oder das Anbieten zusammen mit
anderer Software ohne schriftliche Genehmigung des UnrealIRCd Entwicklungsteams
ist streng verboten. Solange es der Benutzung von UnrealIRCd dient, darf dieses
Dokument beliebig kopiert/gedruckt/veröffentlicht, jedoch nicht verändert
werden. &#8211; Copyright UnrealIRCd Development Team 2002-2005</p>
werden. &#8211; Copyright UnrealIRCd Development Team 2002-2006</p>
<p>Bitte lesen Sie diese Anleitung, bevor Sie um Hilfe bitten und schauen Sie
WIRKLICH erst ein mal in die <a href="#faq">FAQ</a>, da rund 80% der Fragen dort
WIRKLICH erst einmal in die <a href="#faq">FAQ</a>, da rund 80% der Fragen dort
beantwortet sind. Hilft
dies alles nicht, kann bzgl. Support bei irc.ircsystems.net
(Port 6667) Channel #unreal-support
dies alles nicht, kann bzgl. Support bei irc.unrealircd.org
(Port 6667) im Channel #unreal-support
nach Unterstützung gefragt werden (Wir erwarten UNBEDINGT, dass zuvor Dokumentation
und
FAQ gelesen wurden und wir helfen nur zu UnrealIRCd, nicht zu Services!). Im Falle eines echten Bugs (z.B. einem Crash) bitte Nachricht an
und <a href="#faq">
FAQ</a> gelesen wurden und wir helfen nur zu UnrealIRCd, nicht zu Services!).
Ebenso können Sie das Forum nutzen, welches über <a href="http://forums.unrealircd.com/" target="_blank">http://forums.unrealircd.com</a>
erreichbar ist. Im Falle eines echten Bugs (z.B. einem Crash) bitte Nachricht an
<a href="http://bugs.unrealircd.org" TARGET="_blank">http://bugs.unrealircd.org</a>.</p></div>
<p><font size="+2"><b><a name="notesonolder">1.1 &#8211; Anmerkungen zu Upgrade/Mixing 3.1.x -&gt; 3.2</a>&nbsp; </b></font><br>
@@ -179,7 +187,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 &quot;./Config&quot; und &quot;make&quot;
laufen lassen (*NIX).
@@ -204,7 +212,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, 3.9)
<li>Solaris (9,10)
</ul>
<li><b>Windows Versionen:</b>
@@ -223,12 +233,12 @@ Bug gemeldet wird!</p></div>
</ul>
<br>
Im Falle, dass Unreal3.2 korrekt unter anderen Betriebssystemen läuft, bitte
Details an <a href="mailto:coders@lists.unrealircd.com">coders@lists.unrealircd.com
Details an <a href="mailto:coders@lists.unrealircd.org">coders@lists.unrealircd.org
</a> senden. <p><b>Installationsanleitungen</b><br>
Linux:<br>
<ol>
<li>gunzip -d Unreal3.2.2.tar.gz
<li>tar xvf Unreal3.2.2.tar
<li>gunzip -d Unreal3.2.X.tar.gz
<li>tar xvf Unreal3.2.X.tar
<li>cd Unreal3.2
<li>./Config
<li>Die hierbei angezeigten Fragen nach bestem Wissen beantworten. Allgemein ist
@@ -252,7 +262,8 @@ erl
die .conf Datei bezogen wird (die Neuanfängern momentan noch unbekannt sein
dürfte).</p>
<p>Dieser Abschnitt kann auch übersprungen werden, obwohl es sinnvoll ist ihn
vor oder nach der Installation zu lesen.</p></div>
vor oder nach der Installation zu lesen, weil man ansonsten Konzepte wie
cloaking, snowmask etc. nicht verstehen wird..</p></div>
<p><font size="+2"><b><a name="feature_cloaking">3.1 - Cloaking</a></b></font></p><div class="desc">
<p>Das Cloaking ist eine Möglichkeit, den echten Hostnamen vor Usern zu verbergen.
@@ -269,7 +280,7 @@ einstellen k
Modul mitgeliefert:<br>
<b>cloak:</b><br>
Hierbei handelt es sich um das neue offizielle Cloaking Modul, welches viel
sicherer, als der alte Algorithmis ist. Es verwendet intern md5 und erfordert, dass 3
sicherer, als der alte Algorithmus ist. Es verwendet intern md5 und erfordert, dass 3
<b>set::cloak-keys::</b>
gesetzt sind, die gemischt Kleinbuchstaben (a-z), Großbuchstaben (A-Z) und
Ziffern (0-9) enthalten [z.B. "AopAS6WQH2Os6hfosh4SFJHs"] . Siehe auch
@@ -278,18 +289,22 @@ example.conf f
GEHEIM gehalten werden. Wenn jemand
diese drei Keys kennt, kann er den geschützten Host erkennen und den realen
Host ermitteln (was dem Usermodus +x sinnlos macht).</p>
<p>Tipp: Wenn man auf *NIX Systemen arbeitet und Cloak Keys neu erstellt werden
müssen, kann man in der Shell eingeben: '<font face="Courier New">./unreal
gencloak</font>' und erhält als Ausgabe 3 zufällig erzeugte Strings, die man
verwenden kann.</p>
</div>
<p><font size="+2"><b><a name="feature_modules">3.2 - Module</a></b></font></p><div class="desc">
<p>UnrealIRCd unterstützt Module, was sehr nützlich
ist, weil:<br>
- Module können bei laufendem ircd geladen/ersetzt/gelöscht werden (durch /rehash). Dadurch können verschiedene Bugs gefixt
oder neue Module hinzugefügt werden, ohne dass ein Neustart erforderlich ist!<br>
oder neue Module hinzugefügt werden, ohne dass ein Neustart erforderlich ist.<br>
- Andere Entwickler können weitere Module mit neuen Befehlen oder anderen
Usermodi erstellen.<br>
UnrealIRCd selbst enthält nur wenige Module. Durch eine Suche auf <a href="http://www.unrealircd.com"> www.unrealircd.com</a>
(modules) oder per Google können weitere 3rd party Module gefunden werden.</p>
<p>Achtung: Minimal müssen zwei Module geladen sein, oder der ircd wird nicht
starten!<br>
starten:<br>
- das commands Modul: commands.so (oder commands.dll bei Windows)<br>
- das cloaking Modul: üblicherweise cloak.so (oder cloak.dll bei Windows)</p>
</div>
@@ -338,7 +353,7 @@ die beispielsweise den Befehl <font face="Courier New" size="2">/register</font>
an Chanserv weiterleitet, wenn der erste Parameter mit einem # beginnt oder an
Nickserv, wenn der erste Parameter nicht mit einem # beginnt. (Im ersten Fall
soll ein Channel registriert werden, im zweiten Fall ein Nickname)</p>
<p>Aliases werden in alias Blocks in der Konfigurationsdatei definiert oder in
<p>Aliases werden in <a href="#aliasblock"> alias Blocks</a> in der Konfigurationsdatei definiert oder in
einer Include Datei mit den häufigsten Default Aliassen.&nbsp;</p></div>
<p><font size="+2"><b><a name="feature_helpop">3.5 - Helpop</a></b></font></p><div class="desc">
@@ -983,6 +998,24 @@ die *lines/shuns (Default: 'Spam/advertising'). Mehrere Worte sind durch Undersc
Channels, in den bei der Action 'viruschan' gejoined wird (Default: #help)<br>
<b>set::spamfilter::virus-help-channel-deny</b> ermöglicht es, normale Joins in
den virus-help-channel zu blockieren (Default: no)
<p>
<font size="+1"><b><a name="feature_spamfilter_slow">Erkennung langsamer
Spamfilter</a></b></font><br>
Ein Spamfilter Ausdruck (regex) kann einen IRCd beträchtlich verlangsamen. Das
hängt davon ab, welcher Ausdruck verwendet wird (und wie dieser Ausdruck
ausgewertet wird). Einige Spamfilter Ausdrücke sind sehr schnell und UnrealIRCd
kann Tausende von ihnen pro Sekunde verarbeiten. Andere können extrem langsam
sein und mehrere Sekunden für die Ausführung benötigen und dadurch den IRCd
regelrecht einfrieren..<br>
Zur Unterstützung gegen dieses Problem stellt Unreal eine Erkennung langsamer
Spamfilter ('Slow Spamfilter Detection' bereit: Für jeden Spamfilter wird bei jeder Ausführung die hierzu benötigte
Zeit überprüft. Wird ein
bestimmter Grenzwert erreicht, warnt der IRCd oder entfernt einfach diesen Spamfilter.<br>
Warnungen werden durch <b>set::spamfilter::slowdetect-warn</b> konfiguriert (Default:
250ms) und die automatische Löschung durch <b>set::spamfilter::slowdetect-fatal</b>
(Default: 500ms). Man kann beide Werte auf 0 setzen um die Erkennung langsamer
Spamfilter zu deaktivieren.<br>
Dieses Feature steht unter Windows derzeit noch nicht zur Verfügung.
</div>
<p><font size="+2"><b><a name="feature_cidr">3.15 - CIDR</a></b></font></p><div class="desc">
@@ -991,7 +1024,7 @@ erm
unter Verwendung von CIDR vergeben. Daher ist es möglich unter Verwendung eines
CIDR basierten Banns auf einfache Weise ganze ISPs zu sperren. Unreal
unterstützt CIDR sowohl für IPv4 als auch für IPv6. CIDR Masken können
benutzt werden bei: allow::ip, ban user::mask, ban ip::mask, except ban::mask, except
benutzt werden bei: allow::ip, oper::from::userhost, ban user::mask, ban ip::mask, except ban::mask, except
throttle::mask, und except tkl::mask (für gzline, gline, and shun). Zusätzlich
kann&nbsp; CIDR bei /kline, /gline, /zline, /gzline, und /shun benutzt werden. Unreal
verwendet die Standard Syntax von IP/bits, z.B. 127.0.0.0/8 (passt auf 127.0.0.0 - 127.255.255.255),
@@ -1002,45 +1035,51 @@ und fe80:0:0:123::/64 (passt auf fe80:0:0:123:0:0:0:0 - fe80:0:0:123:ffff:ffff:f
Zeichensätze/Sprachen in Nicknamen gestattet sein sollen. Dies wird festgelegt
in <b> set::allowed-nickchars</b>.<br>
Hier eine Liste der möglichen Einstellungen:<br>
<table border="1" width="868">
<tr><td width="98"><b>Name:</b></td> <td width="494"><b>Beschreibung:</b></td> <td width="254"><b>Character set/encoding:</b></td></tr>
<tr><td width="98">catalan</td> <td width="494">Katalanische Zeichen</td> <td width="254">iso8859-1 (latin1)</td></tr>
<tr><td width="98">danish</td> <td width="494"> Dänische Zeichen</td> <td width="254"> iso8859-1
<table border="1" width="868" height="902">
<tr><td width="98" height="19"><b>Name:</b></td> <td width="494" height="19"><b>Beschreibung:</b></td> <td width="254" height="19"><b>Character set/encoding:</b></td></tr>
<tr><td width="98" height="19">catalan</td> <td width="494" height="19">Katalanische Zeichen</td> <td width="254" height="19">iso8859-1 (latin1)</td></tr>
<tr><td width="98" height="19">danish</td> <td width="494" height="19"> Dänische Zeichen</td> <td width="254" height="19"> iso8859-1
(latin1)</td></tr>
<tr><td width="98">dutch</td> <td width="494"> Niederländische Zeichen</td> <td width="254"> iso8859-1 (latin1)</td></tr>
<tr><td width="98">french</td> <td width="494"> Französische Zeichen</td> <td width="254"> iso8859-1 (latin1)</td></tr>
<tr><td width="98">german</td> <td width="494"> Deutsche Zeichen </td> <td width="254">iso8859-1 (latin1)</td></tr>
<tr><td width="98">swiss-german</td> <td width="494"> Schweiz-Deutsche Zeichen
(kein 'ß')</td> <td width="254"> iso8859-1 (latin1)</td></tr>
<tr><td width="98">icelandic </td> <td width="494">Isländische Zeichen</td> <td width="254"> iso8859-1 (latin1)</td></tr>
<tr><td width="98">italian</td> <td width="494"> Italienische Zeichen</td> <td width="254"> iso8859-1 (latin1)</td></tr>
<tr><td width="98">spanish</td> <td width="494"> Spanische Zeichen</td> <td width="254"> iso8859-1 (latin1)</td></tr>
<tr><td width="98">swedish</td> <td width="494"> Schwedische Zeichen</td> <td width="254"> iso8859-1 (latin1)</td></tr>
<tr><td width="98"><b>latin1</b></td> <td width="494"> katalanisch, dänisch, niederländisch, französisch, deutsch, schweizer deutsch, spanisch,
isländisch, italienisch, schwedisch</td> <td width="254"> iso8859-1 (latin1)
<tr><td width="98">hungarian</td> <td width="494"> Ungarische Zeichen </td> <td width="254"> iso8859-2 (latin2), windows-1250</td></tr>
<tr><td width="98">polish</td> <td width="494"> Polnische Zeichen&nbsp; <td width="254"> iso8859-2 (latin2)</td></tr>
<tr><td width="98">romanian</td> <td width="494"> Rumänische Zeichen <td width="254"> iso8859-2 (latin2), windows-1250, iso8859-16</td></tr>
<tr><td width="98"><b>latin2</b></td> <td width="494"> ungarisch, polnisch,
rumänisch <td width="254"> iso8859-2 (latin2)</td></tr>
<tr><td width="98">polish-w1250</td> <td width="494"> Polnische Zeichen,
Windows Variante (leider mehr allgemein, als iso)<td width="254"> windows-1250</td></tr>
<tr><td width="98">slovak-w1250</td> <td width="494"> Slowakische Zeichen,
Windows Variante<td width="254"> windows-1250</td></tr>
<tr><td width="98">czech-w1250</td> <td width="494"> Tschechische Zeichen,
Windows Variante <td width="254">windows-1250</td></tr>
<tr><td width="98"><b>windows-1250</b></td> <td width="494"> polnisch-w1250,
slowakisch-w1250, tschechisch-w1250, ungarisch, rumänisch <td width="254">windows-1250</td></tr>
<tr><td width="98">greek</td> <td width="494"> Griechische Zeichen <td width="254">iso8859-7</td></tr>
<tr><td width="98">turkish</td> <td width="494"> Türkische Zeichen <td width="254">iso8859-9</td></tr>
<tr><td width="98">russian-w1251</td> <td width="494"> Russische Zeichen <td width="254">windows-1251</td></tr>
<tr><td width="98">hebrew</td> <td width="494"> Hebräische Zeichen <td width="254">iso8859-8-I/windows-1255</td></tr>
<tr><td width="98">chinese-simp</td> <td width="494"> Einfaches Chinesisch <td width="254">Multibyte: GBK/GB2312</td></tr>
<tr><td width="98">chinese-trad</td> <td width="494"> Traditionelles
Chinesisch <td width="254">Multibyte: GBK</td></tr>
<tr><td width="98">chinese-ja</td> <td width="494"> Japanisch Hiragana/Pinyin <td width="254">Multibyte: GBK</td></tr>
<tr><td width="98"><b>chinese</b></td> <td width="494"> chinese-* <td width="254">Multibyte: GBK</td></tr>
<tr><td width="98"><b>gbk</b></td> <td width="494"> chinese-* <td width="254">Multibyte: GBK</td></tr>
<tr><td width="98" height="19">dutch</td> <td width="494" height="19"> Niederländische Zeichen</td> <td width="254" height="19"> iso8859-1 (latin1)</td></tr>
<tr><td width="98" height="19">french</td> <td width="494" height="19"> Französische Zeichen</td> <td width="254" height="19"> iso8859-1 (latin1)</td></tr>
<tr><td width="98" height="19">german</td> <td width="494" height="19"> Deutsche Zeichen </td> <td width="254" height="19">iso8859-1 (latin1)</td></tr>
<tr><td width="98" height="19">swiss-german</td> <td width="494" height="19"> Schweiz-Deutsche Zeichen
(kein 'ß')</td> <td width="254" height="19"> iso8859-1 (latin1)</td></tr>
<tr><td width="98" height="19">icelandic </td> <td width="494" height="19">Isländische Zeichen</td> <td width="254" height="19"> iso8859-1 (latin1)</td></tr>
<tr><td width="98" height="19">italian</td> <td width="494" height="19"> Italienische Zeichen</td> <td width="254" height="19"> iso8859-1 (latin1)</td></tr>
<tr><td width="98" height="19">spanish</td> <td width="494" height="19"> Spanische Zeichen</td> <td width="254" height="19"> iso8859-1 (latin1)</td></tr>
<tr><td width="98" height="19">swedish</td> <td width="494" height="19"> Schwedische Zeichen</td> <td width="254" height="19"> iso8859-1 (latin1)</td></tr>
<tr><td width="98" height="57"><b>latin1</b></td> <td width="494" height="57"> katalanisch, dänisch, niederländisch, französisch, deutsch, schweizer deutsch, spanisch,
isländisch, italienisch, schwedisch</td> <td width="254" height="57"> iso8859-1 (latin1)
<tr><td width="98" height="19">hungarian</td> <td width="494" height="19"> Ungarische Zeichen </td> <td width="254" height="19"> iso8859-2 (latin2), windows-1250</td></tr>
<tr><td width="98" height="19">polish</td> <td width="494" height="19"> Polnische Zeichen&nbsp; <td width="254" height="19"> iso8859-2 (latin2)</td></tr>
<tr><td width="98" height="38">romanian</td> <td width="494" height="38"> Rumänische Zeichen <td width="254" height="38"> iso8859-2 (latin2), windows-1250, iso8859-16</td></tr>
<tr><td width="98" height="19"><b>latin2</b></td> <td width="494" height="19"> ungarisch, polnisch,
rumänisch <td width="254" height="19"> iso8859-2 (latin2)</td></tr>
<tr><td width="98" height="38">polish-w1250</td> <td width="494" height="38"> Polnische Zeichen,
Windows Variante (leider mehr allgemein, als iso)<td width="254" height="38"> windows-1250</td></tr>
<tr><td width="98" height="19">slovak-w1250</td> <td width="494" height="19"> Slowakische Zeichen,
Windows Variante<td width="254" height="19"> windows-1250</td></tr>
<tr><td width="98" height="19">czech-w1250</td> <td width="494" height="19"> Tschechische Zeichen,
Windows Variante <td width="254" height="19">windows-1250</td></tr>
<tr><td width="98" height="38"><b>windows-1250</b></td> <td width="494" height="38"> polnisch-w1250,
slowakisch-w1250, tschechisch-w1250, ungarisch, rumänisch <td width="254" height="38">windows-1250</td></tr>
<tr><td width="98" height="19">greek</td> <td width="494" height="19"> Griechische Zeichen <td width="254" height="19">iso8859-7</td></tr>
<tr><td width="98" height="19">turkish</td> <td width="494" height="19"> Türkische Zeichen <td width="254" height="19">iso8859-9</td></tr>
<tr><td width="98" height="19">russian-w1251</td> <td width="494" height="19"> Russische Zeichen <td width="254" height="19">windows-1251</td></tr>
<tr><td width="98" height="19">belarussian-w1251</td> <td width="494" height="19"> Belarussische
Zeichen <td width="254" height="19">windows-1251</td></tr>
<tr><td width="98" height="19">ukrainian-w1251</td> <td width="494" height="19"> Ukrainische
Zeichen <td width="254" height="19">windows-1251</td></tr>
<tr><td width="98" height="1"><b>windows-1251</b></td> <td width="494" height="26"> russisch-w1251,
belarussisch-w1251, ukrainisch-w1251 <td width="254" height="26">windows-1251</td></tr>
<tr><td width="98" height="19">hebrew</td> <td width="494" height="19"> Hebräische Zeichen <td width="254" height="19">iso8859-8-I/windows-1255</td></tr>
<tr><td width="98" height="19">chinese-simp</td> <td width="494" height="19"> Einfaches Chinesisch <td width="254" height="19">Multibyte: GBK/GB2312</td></tr>
<tr><td width="98" height="19">chinese-trad</td> <td width="494" height="19"> Traditionelles
Chinesisch <td width="254" height="19">Multibyte: GBK</td></tr>
<tr><td width="98" height="19">chinese-ja</td> <td width="494" height="19"> Japanisch Hiragana/Pinyin <td width="254" height="19">Multibyte: GBK</td></tr>
<tr><td width="98" height="19"><b>chinese</b></td> <td width="494" height="19"> chinese-* <td width="254" height="19">Multibyte: GBK</td></tr>
<tr><td width="98" height="19"><b>gbk</b></td> <td width="494" height="19"> chinese-* <td width="254" height="19">Multibyte: GBK</td></tr>
</table>
&nbsp;
<p>Anmerkung 1: Zu beachten ist, dass einige Kombinationen Probleme verursachen können.
@@ -1054,9 +1093,9 @@ Anmerkung 2: Die
welchem Kleinbuchstaben gehört, erfolgt nach dem US-ASCII, was bedeutet, dass
ö und Ö nicht als 'gleiches Zeichen' erkannt werden und deswegen jemand
beispielsweise den Nick Bär haben kann, während jemand anderes gleichzeitig
den Nick BÄr hat. Das ist eine Einschränkung durch das aktuelle SDystem und IRCd
den Nick BÄr hat. Das ist eine Einschränkung durch das aktuelle System und IRCd
Standards, die nicht binnen kurzer Zeit gelöst werden können. Den Usern sollte
diese Enschränkung klar sein. Zu beachten dabei ist, dass es diese
diese Einschränkung klar sein. Zu beachten dabei ist, dass es diese
Einschränkung schon immer bei den Channelnamen gegeben hat, in denen ja fast
alle Zeichen erlaubt sind und schon immer die US-ASCII Regeln der
Zeichenübereinstimmung gegolten haben.<br>
@@ -1064,6 +1103,7 @@ Zeichen
Anmerkung 3: Die Basis Nick Zeichen (a-z A-Z 0-9 [ \ ] ^ _ - { | }) sind immer
erlaubt/aktiviert.<br>
<br>
<br>
Beispiel 1, für West-Europäer:<br>
<br>
<font face="Courier">
@@ -1076,7 +1116,41 @@ Schriftzeichen gestatten will:<br>
<font face="Courier">
set { allowed-nickchars { chinese-simp; chinese-trad; }; };</font></div>
<p><font size="+2"><b><a name="feature_other">3.17 - Andere Features</a></b></font></p><div class="desc">
<p><font size="+2"><b><a name="feature_cgiirc">3.17 - CGI:IRC Unterstützung</a></b></font></p><div class="desc">
UnrealIRCD unterstützt eine CGI:IRC Host Manipulation. Das bedeutet: Man kann
bestimmte CGI:IRC Gateways als &quot;trusted&quot; (&quot;vertraut&quot;)
festlegen, wodurch der IRCd veranlasst wird, statt Host/IP des CGI:IRC Gatewäys
überall im IRC die reale Host/IP des Users anzuzeigen.
<p>Nähere Informationen, wie dies konfiguriert wird, stehen im <a href="#cgiirc">cgiirc
Block</a>&nbsp;</div>
<p><font size="+2"><b><a name="feature_timesync">3.18 - Zeitsynchronisation</a></b></font></p>
<div class="desc">
<p>Es ist für die IRC Server sehr wichtig, immer die korrekte Zeit
eingestellt zu haben. Ohne korrekte - insbesondere unterschiedliche Zeit
zwischen Servern - können Channel desynchronisieren (auf verschiedenen
Servern wird etwas anderes im gleichen Channel angezeigt), ahnungslose User
grundlos gekillt werden, Channels gar nicht oder falsch in der /List Anzeige
eingetragen sein. Kurzum: es entstehen sehr große Probleme.´</p>
<p>UnrealIRCd hat eine eine Unterstützung zur Zeitsybchronisation integriert.
Obwohl sie nicht optimal ist (die Zeiten können weiterhin um wenige Sekunden
differieren), sollten damit die meisten Zeitunterschiede beseitigt werden.
Soweit möglich ist es weiterhin empfehlenswert, eine Zeitsynchronisations
Software wie 'ntpd' auf&nbsp; *NIX Systemen oder den Zeit Synchonisations
Service von Windosws laufen zu haben. In diesem Fall kann man die Unreal Zeitsynchronisation
abschalten. (mehr dazu später)</p>
<p>Per Default versucht UnrealIRCd beim Start einen Versuch der
Zeitsynchronisation. Es werden hierzu einige Anforderungen an Zeitserver
gesendet und sobald die erste (schnellste) Antwort empfangen wird die interne
IRCD Uhr (NICHT die Systemuhr) danach eingestellt. Wenn aus irgendwelchen
Gründen nicht binnen 3 Sekunden eine Zeitabfrage beantwortet wird, startet
der IRCD ohne Zeitsynchronisation (sollte nur selten passieren).</p>
<p>Zeitsynchronisation wird im <b>set::timesynch</b> Block konfiguriert (oder
abgeschaltet). Siehe in der <a href="#setblock">Set-Block Beschreibung</a>
für weitere Informationen.</p>
</div>
<p><font size="+2"><b><a name="feature_other">3.18 - Andere Features</a></b></font></p><div class="desc">
<p>UnrealIRCd hat eine Reihe weiterer Features, die hier nicht alle einzeln
aufgeführt sind. Man wird sie während der Konfiguration selbst herausfinden ;)</p></div>
@@ -1085,11 +1159,11 @@ aufgef
der unrealircd.conf</a></b></font>
<a name="configuringyourunrealircdconf">&nbsp;</a></p><div class="desc">
<p>Beim ersten Mal wird das Erstellen einer guten unrealircd.conf Datei eine
gewisse Zeit in Anspruch nehmen - je nach Vorerfahrung etwa 10 - 60 Minuten. Man
kann versuchen, so rasch wie möglich den ircd zu starten und später zu
verfeinern oder man kann die Haupt Abschnitte Schritt für Schritt erlernen (was
der empfohlene Weg ist ;P). Im Falle auftretender Probleme zuerst die Syntax
überprüfen, diese Anleitung und auch die FAQ bevor man nach Hilfe fragt oder
gewisse Zeit in Anspruch nehmen - je nach Vorerfahrung etwa 15 - 60 Minuten.
Eine <u>gute</u> unrealircd.conf zu erstellen, wird bedeutend länger dauern.
Man sollte nicht hetzen, um den IRCd rasch gestartet zu bekommen, sondern lieber
Schritt für Schritt vorangehen.&nbsp; Im Falle auftretender Probleme zuerst die Syntax
überprüfen, diese Anleitung und auch die <a href="#faq"> FAQ</a> bevor man nach Hilfe fragt oder
einen Bug meldet.</p></div>
<p><b><font size="+2"><a name="configurationfileexplained">4.1 Erklärung der
Konfigurationsdatei<br>
@@ -1122,7 +1196,7 @@ werden oder in mehreren Zeilen. Normalerweise wird das oben angegebene Format
benutzt, welches leicht zu lesen ist und auch in der mitgelieferten
unrealircd.conf benutzt wird. </p>
<p>Achtung: Die Konfigurationsdatei ist derzeit &quot;case sensitive&quot;,
daher ist &quot;BLOCK-NAME&quot; nicht dasselbe wie &quot;block-name&quot;. Es
daher ist &quot;<i>BLOCK-NAME</i>&quot; nicht dasselbe wie &quot;<i>block-name</i>&quot;. Es
gibt eine spezielle Notation wie Einträge in der Konfigurationsdatei als
Beschreibung angegeben werden. Spricht man z.B. über &quot;&lt;directive-name&gt;&quot;
im obigen Beispiel, so wird angegeben &quot;&lt;block-name&gt;::&lt;block-directive&gt;&quot;
@@ -1140,10 +1214,10 @@ einem Unterblock sein, der keinen Namen hat.</p>
&nbsp;&nbsp;&nbsp; über mehrere<br>
&nbsp;&nbsp;&nbsp;&nbsp;Zeilen */<br>
</p>
<p>Es sollte nun klar sein, wie das Block Format der .conf funktioniert und nun
kann begonnen werden, eine eigene unrealircd.conf zu erstellen. Hierzu kann man
auch dei Beispielsdatei oder Teile der Dokumentation verwenden und sich die
entsprechenden Blöcke in die eigene Datei kopieren und editieren. Es ist
<p>Nachdem nun klar ist, wie das funktioniert, sollte man die <i>doc/example.conf</i>
in das UnrealIRCd Verzeichnis kopieren (z.B.: /home/user/Unreal3.2) und in <i>unrealircd.conf</i>
umbenennen. (Oder man erstellt eine unrealircd.conf und kopiert sich die
entsprechenden Blöcke und editieret sie). Es ist
empfehlenswert, sich Schritt für Schritt durch alle Blöcke und diese Anleitung
als Referenz durchzuarbeiten.</p>
<p></p></div>
@@ -1881,7 +1955,7 @@ in verschiedenen Dateien zu loggen.</p>
tkl</p>
</td>
<td width="484">
<p>zeichnet Infos auf über *lines, shuns und Spamfilter (setzen, löschen,
<p>zeichnet Infos auf über *lines (kline, zline etc), shuns und Spamfilter (setzen, löschen,
Ablauf)</p>
</td>
</tr>
@@ -1904,14 +1978,6 @@ Ablauf)</p>
</tr>
<tr>
<td width="113">
<p>
kline</p>
</td>
<td width="484"><p>Zeichnet Infos /kline auf</p>
</td>
</tr>
<tr>
<td width="113">
<p>
oper</p>
</td>
@@ -1956,7 +2022,6 @@ spamfilter
errors;
kills;
oper;
kline;
tkl;
};
};
@@ -1977,7 +2042,7 @@ bekannt als T:Line)</font><div class="desc">
channel &lt;channel-name&gt;;
options {
ssl;
}
};
};</pre>
<p>Mit dem TLD Block kann man eine motd (Messageoftheday), rules und channels für
User basierend auf deren Host festlegen. Das ist nützlich, falls man
@@ -2058,7 +2123,7 @@ bekannt als Z:Line)</font><div class="desc">
};</pre>
<p>Der Ban IP Block verhindert das Verbinden von bestimmten IP Adressen her zum
Server. Das gilt sowohl für Verbindungsversuche von Usern als auch von Servern.<br>
<b>ban::mask</b> ist eine IP, die Wildcards enthalten kann<br>
<b>ban::mask</b> ist eine IP, die Wildcards enthalten kann.<br>
<b>ban::reason</b> ist der Grund, warum der Bann eingetragen wurde.<br>
Da dieser Bann auch Server betreffen kann, sollte man beim Eintrag von IP
Adressen sehr vorsichtig sein.</p>
@@ -2131,7 +2196,7 @@ Maske kann Wildcards enthalten.<br>
<b>ban::reason</b> legt den Grund fest, der dem User angezeigt wird.<br>
<b>ban::action</b> kann ebenfalls festgelegt werden. Dabei ist der Default auf
&quot;kill&quot;. <i>tempshun</i> setzt ein shun auf die Verbindung des Users
und arbeitet effektiv gegen zombies und/oder Bots mit dynamischer IP, weil sie
und arbeitet effektiv gegen Zombies und/oder Bots mit dynamischer IP, weil sie
unschuldige User nicht beeinträchtigen. <i>shun/kline/zline/gzline</i> setzen
einen Bann auf die IP (*@IPADDR). Die Dauer dieser Banns kann mit 'set::ban-version-tkl-time'
konfiguriert werden und beträgt per Default 1 Tag.</p>
@@ -2188,6 +2253,9 @@ angegeben, welcher Bann Typ ausgenommen werden soll. G
gline, gzline, qline, gqline und shun, für Ausnahmen von Glines, Global Zlines,
Qlines, Global Qlines und Shuns. Wenn das {} Format benutzt wird, können
unterschiedliche Typen angegeben werden.</p>
<p>Anm. des Übersetzers: Die Ausnahmen funktionieren wirklich nur bei gebanntem
<b>breiteren </b>Host (123.123.* oder *@url). Man kann damit z.B. nicht einen
versehentlichen Bann auf Localhost verhindern.</p>
<p>Beispiel:
<pre>except tkl {
mask myident@my.isp.com;
@@ -2273,7 +2341,7 @@ angegebenen abgelehnt.<br>
haben oder nicht haben darf. Die Flags müssen direkt nacheinander ohne
Zwischenräume angegeben sein. Wird einem Zeichen ein &quot;!&quot;
vorangestellt, darf der Server dieses Flag nicht haben, steht kein &quot;!&quot;
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>
@@ -2290,7 +2358,7 @@ bekannt als D/d:Line)</font><div class="desc">
Linken ausschliessen kann.<br>
<b>deny::mask</b> definiert eine Wildcard Maske auf den Servernamen, für den
die Regel gelten soll.<br>
<b>deny::rule</b> ist ein sehr komplexer Ausdruck. Ein crule Ausdruck erlaubt
<b>deny::rule</b> ist ein sehr komplexer Ausdruck. Ein rule Ausdruck erlaubt
es, den Link sehr detailliert zu steuern und ist aufgebaut wie eine Programm
Anweisung. Vier Operatoren werden unterstützt:<br>
&nbsp;&nbsp;&nbsp; connected(&lt;servermask&gt;) ergibt 'wahr', wenn ein Server
@@ -2439,7 +2507,7 @@ im Oper Block bei &quot;oper::svhost&quot;.</p>
</a>
<font class="block_optional">OPTIONAL</font> <font class="block_old">(Früher
bekannt als badwords.*.conf)</font>
</p><div class="desc">
</p><div class="desc" style="width: 1195; height: 374">
<p>Syntax:
<pre>badword &lt;type&gt; {
word &lt;text-to-match&gt;;
@@ -2447,14 +2515,15 @@ bekannt als badwords.*.conf)</font>
action &lt;replace|block&gt;;
};</pre>
<p>Mit dem Badword Block kann die Liste für User- und Channelmodus +G
bearbeitet werden, um bestimmte &quot;badwords&quot; zu beahandeln. <b>badword::</b>
legt den Typ fest, wobei gültige Werte hier sind: channel, message und quit. channel
gilt für Channel Modus +G list, message gilt für User Modus +G list, und quit
bearbeitet werden, um bestimmte &quot;badwords&quot; zu behandeln. <b>badword::</b>
legt den Typ fest, wobei hier gültige Werte sind: 'channel', 'message' und 'quit'.
'channel'
gilt für Channel Modus +G Liste, 'message' gilt für User Modus +G Liste, und 'quit'
gilt für die quit Meldung. <b> badword::word</b> kann ein einfaches Wort sein
oder ein Ausdruck, nach dem gesucht werden soll. <b>badword::replace</b> ist ein
Ersetzungstext, der anstelle des gefundenen Badwords angezeigt wird. Wird hier
nichts eingetragen, so wird ein gefundenes Badword durch&nbsp; &lt;censored&gt;
erstezt. Bei <b> badword::action</b> wird angegeben, was im Falle eines
ersezt. Bei <b> badword::action</b> wird angegeben, was im Falle eines
gefundenen Badwords geschehen soll. Wird hier das Wort &quot;replace&quot;
eingetragen, dann wird das Badword ersetzt. Falls hier &quot;block&quot;
angegeben wird, wird die gesamte Nachricht gar nicht erst angezeigt. Falls
@@ -2556,19 +2625,23 @@ wie bei &quot;password-connect&quot;.
</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 &quot;leaf&quot; angegeben sein. Angegeben
wird die Tiefe (Anzahl der hops) die dieser Server darunter haben darf.
Dieser Wert gibt die&nbsp; 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
@@ -2598,7 +2671,8 @@ nicht ben
cache speichern, wird bei oft wechselndem Host benutzt (wie dyndns.org)</td></tr>
<tr><td><b>nohostcheck</b></td><td> den entfernten Host nicht überprüfen (link::hostname),
wird bei oft wechselndem Host benutzt (wie dyndns.org)</td></tr>
<tr><td><b>quarantine</b></td><td> Opers auf diesem Server behalten locop Status bei</td></tr>
<tr><td><b>quarantine</b></td><td> Opers auf diesem Server können keine GLOBAL
Oper Privilegien erhalten (sie werden gekilled), dient zu Test Links etc.</td></tr>
</table>
<p>Beispiel:</p>
<pre>link hub.mynet.com {
@@ -2626,6 +2700,7 @@ nicht vorhanden)</font>
<pre>alias &lt;name&gt; {
target &lt;nick-to-forward-to&gt;;
type &lt;type-of-alias&gt;;
spamfilter &lt;yes|no|&gt;
};</pre>
<p>(Hinweis: siehe auch <a href="#includedirective">hier</a> , welche Standard
Alias Dateien bei UnrealIRCd mitgeliefert werden.)</p>
@@ -2637,20 +2712,32 @@ der Nickname, an den weitergeleitet wird. Wenn &quot;alias::&quot; identisch mit
dem Nick ist, an den weitergeleitet wird, kann &quot;alias::target&quot;
weggelassen werden. <b> alias::type</b> gibt den Typ des Alias an, gültige
Typen sind hier &quot;services&quot; (der User ist auf dem Services Server),
&quot;stats&quot; (der User ist auf dem Stats Server), und &quot;normal&quot; (der
User ist normaler User auf irgendeinem Server). Der &quot;alias block&quot; hat
auch einen weiteren Zweck, der nachfolgend erklärt ist.</p>
&quot;stats&quot; (der User ist auf dem Stats Server) &quot;normal&quot; (der
User ist normaler User auf irgendeinem Server) und &quot;channel&quot; (das Ziel
ist ein Channel Name). Wenn <b>alias::spamfilter</b> (optional) auf 'yes'
eingestellt ist, werden auch Spamfilter geprüft (Default ist 'no'). Der &quot;alias block&quot; hat
auch einen weiteren nachfolgend erklärten Zweck.</p>
<p>Syntax [Befehl alias]:
<pre>alias &lt;name&gt; {
</pre>
<pre> /* Für Aliase, die an User/Channels gesendet werden */
format &lt;regex-expression&gt; {
target &lt;nick-to-forward-to&gt;;
type &lt;type-of-alias&gt;;
parameters &lt;parameter-string&gt;;
};
/* For 'echte Aliase' */
format &lt;regex-expression&gt; {
command &lt;command&gt;;
type real;
parameters &lt;parameter-string&gt;;
};
/* Etc... You can have as many format blocks as you wish.. */</pre>
<pre> format &lt;regex-expression&gt; {
...
};
type command;
spamfilter &lt;yes|no&gt;
};</pre>
<p>Wird der &quot;alias Block&quot; in diesem Format benutzt, ermöglicht er
eine breitere Anwendungsweise. Beispielsweise kann man einen Alias wie /identify
@@ -2660,15 +2747,19 @@ einen regul
Befehl gesandt wurde. Es können mehrere &quot;alias::format&quot; angegeben
werden, um unterschiedliche Dinge in Abhängigkeit vom gesandten Text
durchführen zu lassen. <b>alias::format::target</b> ist das Ziel (der Name), an den der
Alias weitergeleitet wird. <b> alias::format::type</b> definiert den Typ des
Alias, zu dem die Nachricht geleitet wird. <b> alias::format::parameters</b>
Alias weitergeleitet wird, bei &quot;realen Aliasen&quot; wird allerdings <b>alias::format::command</b>
benutzt. <b> alias::format::type</b> definiert den Typ des
Alias, zu dem die Nachricht geleitet wird. Neben den zuvor erwähnten Typen in
der Syntax bein Standard Alias, kann hier auch der Typ &quot;Real&quot; für
reale Aliase angegeben werden. <b>alias::format::parameters</b>
ist, was als Parameter an den Alias geschickt wird. Um Parameter für einen
Befehl an den Alias anzugeben, wird ein &quot;%&quot; gefolgt von einer Nummer
angegeben. So ist z.B. %1 der erste Parameter, %2 der zweite Parameter usw.&nbsp;
Man kann auch festlegen, dass ab einem Parameter alle bis zum Ende gelten
sollen, dann gibt man z.B. an:&nbsp; %1- (das Minuszeichen bedeutet: &quot;alle
weiteren&quot;) Zusätzlich kann man %n angeben, was durch den Nicknamen des
Users ersetzt wird, der den befehl ausgeführt hat. Um Beispiele zum Alias Block
Users ersetzt wird, der den Befehl ausgeführt hat.&nbsp;</p>
<p> Um Beispiele zum Alias Block
zu sehen, schaue man in doc/example.conf.</p>
<p>&nbsp;</p>
</div>
@@ -2758,7 +2849,66 @@ spamfilter {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reason &quot;Kein Spam erlaubt&quot;<br>
};<br>
</font></div>
<p><font class="block_section"><a name="setblock">4.36 - </a> </font><a name="setblock"><font class="block_name">Set Block</font>
<p><font class="block_section"><a name="cgiirc">4.36 - </a></font><a name="cgiirc"><font class="block_name">Cgiirc
Block</font></a> <font class="block_optional">OPTIONAL</font></p>
<div class="desc">
<p>Im Cgiirc Block können Host Manipulationen für vertraute CGI:IRC Gateways
konfiguriert werden (<a href="#feature_cgiirc">weitere Informationen</a>).</p>
<p>Syntax:<br>
</p>
<pre>cgiirc {
type &lt;webirc|old&gt;;
username &lt;mask&gt;; /* optional */
hostname &lt;mask&gt;;
password &lt;password&gt;; /* only for type webirc */
};</pre>
<p>&nbsp;</p>
<p><b>type</b> ist entweder 'webirc' oder 'old'.<br>
<b>username</b> wird auf die Ident geprüft (wenn angegeben). Falls nicht
definiert, wird '*' angenommen.<br>
<b>hostname</b> ist die Hostmaske, auf die geprüft wird.<br>
<b>password</b> ist das webirc Passwort, wird nur beim Typ 'webirc' benutzt.<br>
</p>
<p><b>Konfiguration mit der 'webirc' Methode (empfohlene Methode)</b><br>
In der CGI:IRC Konfigurationsdatei (cgiirc.conf) wird für &quot;webirc_password&quot;
ein gutes Passwort festgelegt.<br>
Danach wird in der unrealircd.conf ein cgiirc block eingetragen, um diesen
Host mit diesem Passwort zu erlauben.<br>
Dann wird für '<b>set cgiirc::type'</b>&nbsp; &quot;webirc&quot; eingetragen.<br>
<br>
Beispiel:<br>
In die CGI:IRC Konfigurationsdatei (cgiirc.conf) wird eingetragen:</p>
<pre>webirc_password = LpT4xqPI5</pre>
Danach wird die unrealircd.conf um einen Cgiirc Block erweitert:
<pre>cgiirc {
type webirc;
hostname &quot;1.2.3.4&quot;;
password &quot;LpT4xqPI5&quot;;
};</pre>
<p>&nbsp;</p>
<p><b>Konfiguration mit Methode 'old'</b><br>
ACHTUNG: Dies ist nicht die empfohlene Methode, da sie zwei Nachteile hat:
Diese Methode sendet den IP/Host, der zu verändern ist, als ein Server
Passwort, was bedeutet,&nbsp; als&nbsp; CGI:IRC User kein Server Passwort
angeben kann. Außerdem ist die Zugriffskontrolle nur IP-basiert und erfordert
kein Extra Passwort, wie die 'webirc' Methode. Kurz gesagt sollten Sie nicht
diese Methode nur verwenden, wenn es einen triftigen Grund dazu gibt.<br>
<br>
In der CGI:IRC Konfigurationsdatei (cgiirc.conf) wird 'realhost_as_password'
auf 1 gesetzt.<br>
Danach wird die unrealircd.conf um einen Cgiirc Block erweitert, um diesen
Host zu erlauben.<br>
<br>
Beispiel:<br>
In die CGI:IRC Konfigurationsdatei (cgiirc.conf) wird eingetragen:</p>
<pre>realhost_as_password = 1</pre>
Danach wird die unrealircd.conf um einen Cgiirc Block erweitert:
<pre>cgiirc {
type old;
hostname &quot;1.2.3.4&quot;;
};</pre>
</div>
<p><font class="block_section"><a name="setblock">4.37 - </a> </font><a name="setblock"><font class="block_name">Set Block</font>
</a> <font class="block_required">ERFORDERLICH</font> <font class="block_old">(Früher
bekannt als unrealircd.conf/networks file)</font>
</p><div class="desc">
@@ -2835,6 +2985,10 @@ eingeschr
Beispielsweise kann man&nbsp; +G in 'modes-on-connect' setzen und G in 'restrict-usermodes',
wodurch erreicht wird, dass sämtliche User&nbsp; +G erhalten, aber kein -G
anwenden können.</p>
<p><font class="set">set::level-on-join &lt;op|none&gt;</font><br>
Die Modus, der einem User beim ersten joinen eines Channels gegeben wird. Das
ist entweder 'op' (Channel Operator, Default) oder 'none', wenn kein Level
gegeben werden soll. Default ist Op.</p>
<p><font class="set">set::restrict-channelmodes &lt;modes&gt;</font><br>
Die Channel-Modi, die User wählen können werden auf die hier angegebenen Modi
eingeschränkt. (kein + oder - angeben!).<br>
@@ -2883,6 +3037,17 @@ bel
angezeigt werden sollen. Ohne Eintrag hier gibt es kein Limit.</p>
<p><font class="set">set::silence-limit &lt;limit&gt;;<br>
</font>Stellt den Maximalwert der anzeigbaren SILENCE Einträge ein. Ohne Eintrag ist hier ein Limit von 15 voreingestellt.</p>
<b><font face="Helvetica,Arial" size="-1">set::maxbans &lt;limit&gt;;<br>
</font></b>Stellt den Maximalwert der je Channel erlaubten Banns (+b) ein. Der
Defaultwert beträgt 60. Wenn dieser Wert geändert wird, sollte man sich
versichern, dass auch der Wert für 'maxbanlength' (siehe nächster Punkt)
sinnvoll eingestellt ist.
<p><b>set::maxbanlength &lt;limit&gt;;</b><br>
Ähnliche Funktion wie im Punkt zuvor, aber legt den Maximalwert der Zeichen
für alle Banns zusammen fest. Dadurch wird festgelegt, wie viel Speicherplatz
für alle Banns in einem Channel zusammen benutzt wird. Der Default beträgt
2048 (Bytes). Bei einem Default von 'set::maxbans 60' gestattet dies 2048:60=34
Zeichen je Bann im Durchschnitt.</p>
<p><font class="set">set::oper-only-stats &lt;stats-list&gt;;</font><br>
Definiert eine Liste von Stats-Flags, die nur von Opers benutzt werden können.
Die Flags sind ohne Trennungen (keine Kommata, keine Leerzeichen) anzugeben.
@@ -2890,7 +3055,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 {&lt;stats-flag>; &lt;stats-flag&gt;;};</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 &lt;amount-of-channels&gt;;</font><br>
Einstellung, in wie vielen Channels ein User gleichzeitig sein darf.</p>
<p><b>set::maxdccallow &lt;amount-of-entries&gt;;</b><br>
@@ -2901,7 +3066,7 @@ Zeichens
<p><font class="set">set::channel-command-prefix &lt;command-prefixes&gt;;<br>
</font>Stellt das Vorzeichen für Services in &quot;channel Befehlen&quot; ein.
Nachrichten, die mit einem dieser Zeichen beginnen, werden auch noch gesendet,
wenn der Client +d ist. Die Voreinstellung lautet "`".</p>
wenn der Client +d ist. Die Voreinstellung lautet &quot;`!.&quot;.</p>
<p><font class="set">set::allow-userhost-change [never|always|not-on-channels|force-rejoin]</font><br>
Einstellung, was passiert, wenn sich der user@host ändert (+x/-x/chghost/chgident/setident/vhost/etc).<br>
<i>never</i> schaltet sämtliche Befehle ab, <i>always</i> gestattet so
@@ -2949,12 +3114,13 @@ Oper Zugriff geloggt wurde.</p>
Ein Wert, der angibt, innerhalb welcher Zeit ein DNS Server zu antworten hat, bevor
&quot;timeout&quot; 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 &lt;number-of-retries&gt;;</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 &lt;name-of-dns-server&gt;;</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 &lt;name-of-network&gt;;</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
@@ -3019,6 +3185,17 @@ Gibt den Dateinamen an, wo das SSL Zertifikat des Servers liegt.</p>
Gibt den Dateinamen an, wo der private SSL Key des Servers liegt.</p>
<p><font class="set">set::ssl::trusted-ca-file &lt;filename&gt;;</font><br>
Gibt den Dateinamen der Zertifikate der vertrauten CAs an.</p>
<p><font class="set">set::ssl::server-cipher-list &lt;cipherlist&gt;;</font><br>
Legt fest, welche Verschlüsselungen erlaubt sind, was per Default für OpenSSL
eingestellt ist. Siehe <a href="http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT">http://www.openssl.org/docs/apps/ciphers.html</a>
wie eine Liste von Verschlüsselungen&nbsp; erstellt wird (englische Seite,
nicht übersetzt!).</p>
<p><font class="set">set::ssl::renegotiate-bytes &lt;value&gt;;</font><br>
Legt fest, wieviele Bytes bei einer SSL Session neu ausgehandelt werden sollen (z.B.:
20m für 20 Megabyte).</p>
<p><font class="set">set::ssl::renegotiate-timeout &lt;timevalue&gt;;</font><br>
Legt fest, nach welcher Zeit eine SSL Session neu ausgehandelt werden soll (z.B.:
1h für 1 Stunde).</p>
<p><font class="set">set::ssl::options::fail-if-no-clientcert;</font><br>
Stellt ein, dass Clients ohne Zertifikat nicht connecten können.</p>
<p><font class="set">set::ssl::options::no-self-signed;</font><br>
@@ -3026,6 +3203,9 @@ Verbietet Verbindungen von Usern mit selbst erstellten Zertifikaten.</p>
<p><font class="set">set::ssl::options::verify-certificate;</font><br>
Stellt ein, dass Unreal&nbsp; SSL Zertifikate auf Gültigkeit überprüft, bevor
eine Verbindung akzeptiert wird.</p>
<p><font class="set">set::ssl::options::no-starttls;</font><br>
Deaktiviert STARTTLS. STARTTLS ermöglicht es Clients, über reguläere (nicht
SSL) Ports zu verbinden.</p>
<p><font class="set">set::throttle::period &lt;timevalue&gt;</font><br>
Wie lange muss ein User zum erneuten Connecten warten, wenn er häufiger, als
unter 'set::throttle::connections' eingestellt, verbunden war.</p>
@@ -3081,15 +3261,93 @@ joinen.</p>
<b>set::spamfilter::except &lt;target(s)&gt;</b><br>
Diese Ziele werden vom Spamfilter ausgenommen (es wird also keine Aktion
durchgeführt). Es sind einzelne Ziele oder eine durch Kommata getrennte Liste
möglich. Beispiel: except "#help,#spamreport"</p> </div>
möglich. Beispiel: except &quot;#help,#spamreport&quot;</p>
<p><font class="set">set::spamfilter::slowdetect-warn &lt;value&gt;</font><br>
Wenn ein Spamfilter zur Ausführung länger als der hier festgelegte Wert dauert
(in Millisekunden,&nbsp; 1000ms = 1 Sekunde), wird eine Warnung per Notice an
alle Opers versandt. (Default: 250). Siehe auch <a href="#feature_spamfilter_slow">Erkennung
langsamer Spamfilter</a>.</p>
<p><font class="set">set::spamfilter::slowdetect-fatal &lt;value&gt;</font><br>
Wenn ein Spamfilter zur Ausführung länger als der hier festgelegte Wert dauert
(in Millisekunden,&nbsp; 1000ms = 1 Sekunde), wird er gelöscht50o). Siehe auch <a href="#feature_spamfilter_slow">Erkennung
langsamer Spamfilter</a>.</p>
<p><b>set::check-target-nick-bans &lt;yes|no&gt;</b><br>
Wann immer ein User seinen Nick ändert, wird überprüft, ob der NEUE Nick zu
bannen wäre. Ist das der Fall, wird der Nickwechsel nicht erlaubt. Default ist
'yes'.</p>
<p><b>set::timesynch::enabled&lt;yes|no&gt;</b><br>
Aktiviert oder deaktiviert die Zeitsynchronisation beim Start des IRCd. Default
ist 'yes'.</p>
<p><font class="set">set::timesynch::server &lt;IP&gt;</font><br>
Server mit dem die Zeit synchronisiert werden soll. Hier können bis zu 4 IP's
angegeben werden, die durch Komma zu trennen sind. Die Server müssen das NTP Protokoll
Version 4 unterstützen. Default ist die Benutzung von 3 Zeitservern (US, EU,
AU). Die Anforderungen an diese Server erfolgen zeitgleich, die schnellste
Antwort gewinnt.</p>
<p><font class="set">set::timesynch::timeout &lt;time&gt;</font><br>
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.
<p><font class="set">set::pingpong-warning&lt;yes|no&gt;</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, &nbsp;'/quote pong ..' zu
benutzen, wenn es beim Verbinden Probleme gibt.&nbsp; Voreingestellt ist 'no'.</p>
<p><font class="set">set::watch-away-notification &lt;yes|no&gt;</font><br>
Ermöglicht eine AWAY Meldung in WATCH. Der Default is yes.</p>
</div>
<p><font class="block_section"><a name="filesblock">4.38 - Files Block</a> </font><font class="block_optional" size="3">OPTIONAL</font>
</p>
<p>Es ist nicht nötig, für die Default Speicherorte der MOTD und Rules Dateien
einen <a href="#tldblock">TLD block</a> zu definieren. Der Files Block steuert
die Default Einstellungen für diese Dateien und zusätzlich für die pidfile und
irc.tune file. Für alles, was hier nicht angegeben ist, wird der Defaultwert
genommen, wie er in <a href="#addtlfiles">Additional Files</a> steht.</p>
<p>Relative Pfadnamen werden als relativ zum unrealIRCD Startverzeichnis
interpretiert, in dem normalerweise auch die <tt>unrealircd.conf</tt> steht.
Dieser Block kan dazu benutzt werden, mehr als einen IRCd im gleichen
Verzeichnis laufen zu lassen. In diesem Fall sollten mindestens verschiedene
pidfiles und tunefiles definiert werden - eines für jeden Server.</p>
<p>Syntax:<br>
</p>
<pre>files {
motd &lt;motd file&gt;;
shortmotd &lt;short motd file&gt;;
opermotd &lt;oper motd file&gt;;
svsmotd &lt;services motd file&gt;;
botmotd &lt;bot motd file&gt;;
rules &lt;rules file&gt;;
tunefile &lt;tune file&gt;;
pidfile &lt;pid file&gt;;
};
</pre>
<p>&nbsp;</p>
<p>Beispiel:<br>
</p>
<pre>files {
motd /etc/motd;
pidfile /var/lib/run/unrealircd.pid;
};
</pre>
<p>&nbsp;
</p>
<p><b><font size="+2"><a name="addtlfiles">5 &#8211; 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
Namen dieser dateien und ihr Verwendungszweck.<br>
Zu beachten ist, dass die motd Dateien (alle Typen) und die rules Dateien auch
in einem speziellen tld Block angegeben sein können. Dies sind nur die
in einem speziellen <a href="#tldblock"> tld Block </a>oder einem <a href="#filesblock">files
Block</a> angegeben sein können. Dies sind nur die
Dateien, die per Default benutzt werden (und für Anforderungen von
MOTD/RULES).
MOTD/RULES).<br>
<table width="83%" border="1">
<tr>
<td>ircd.motd</td><td>Wird angezeigt, wenn der /motd Befehl ausgeführt wird
@@ -3299,7 +3557,8 @@ m
</tr>
<tr>
<td height="19"><div align="center">d</div></td>
<td height="19">User kann keine Channel PRIVMSGs empfangen</td>
<td height="19">User kann keine Channel PRIVMSGs empfangen (mit der Ausnahme
von Text, dem bestimmte Zeichen vorangestellt sind. Siehe hierzu: 'set::channel-command-prefix'.</td>
</tr>
<tr>
<td height="19"><div align="center">G</div></td>
@@ -3672,13 +3931,13 @@ Befehlsliste</a></b></font></p><div class="desc">
</tr>
<tr>
<td height="33" width="267">globops &lt;message&gt;</td>
<td width="486" height="33">Schickt eine Nachricht an alle IRCops</td>
<td width="486" height="33">Schickt eine Nachricht an alle globalen IRCops</td>
<td width="93" height="33">IRCop</td>
</tr>
<tr>
<td height="33" width="267">chatops &lt;message&gt;</td>
<td width="486" height="33">Schickt eine Nachricht an alle IRCops mit dem
Usermode +c</td>
<td width="486" height="33">Schickt eine Nachricht an alle IRCops (lokal und
global)</td>
<td width="93" height="33">IRCop</td>
</tr>
<tr>
@@ -4177,12 +4436,19 @@ Datei</a></b></font></p>
erhöht den Aufwand für einen Angriff oder hack.</div>
<p><font size="+2"><b><a name="secantiexpolit">8.8 Schutz gegen Expolits</a></b></font></p>
<div class="desc">Es gibt Kernel Patches, die es Stack- oder Heap-basierenden
Expolits erschweren, zu arbeiten. Allerdings sollte man nicht nur primär
Expolits erschweren, zu arbeiten. Das ist schön, allerdings sollte man nicht nur primär
hierauf achten, es gibt weit größere Risiken mit Expolits, die andere
Punkte, als den Kernel angreifen.... aus verschiedenen Gründen.<br>
Eine andere Option ist es chrooting zu aktivieren (gibt es nur in *nix
Systemen), was bedeutet, dass bei einem erfolgreichen expolit der User auf auf
das UnrealIRCd Verzeichnis begrenzt ist und keinen Zugriff auf andere Dateien
hat. Dies erfordert root Rechte und Änderungen in der include/config.h (suche
nach CHROOTDIR und setze sowohl IRC_USER als auch IRC_GROUP und compiliere
neu.)
<p>
<br>
Eines allerdings sollte man tun: IMMER DIE NEUESTE VERSION BENUTZEN. Wenn man
sich in die <a href="http://mail1.sourceforge.net/mailman/listinfo/unreal-notify"> Unreal-notify mailinglist</a> einträgt, erhält man die Ankündigung
sich in die <a href="http://lists.sourceforge.net/mailman/listinfo/unreal-notify" target="_blank"> Unreal-notify mailinglist</a> einträgt, erhält man die Ankündigung
über neue Versionen (unreal-notify ist nur für Ankündigungen und man
erhält nur alle X Monate 1 Mail). Üblicherweise gibt es neue Releases, wenn
es (bedeutende) Sicherheits Fixes gibt, aber eigentlich ist es gut, in jedem
@@ -4256,16 +4522,14 @@ Datei</a></b></font></p>
Übereinstimmung mit 0 oder 1 der vorhergehenden Zeichen. Dieses
&quot;vorhergehende Zeichen&quot; ist auch der Punkt, worin sich das '?' in
einer regex von einer Wildcard unterscheidet. In Wildcards bedeutet die Angabe
von "a?c" eine Übereinstimmung mit einem "a", gefolgt von irgend einem (oder
keinem) anderen Zeichen, gefolgt von einem "c." In Regex hat dies eine andere
von "a?c" eine Übereinstimmung mit einem "a", gefolgt von irgend einem anderen Zeichen, gefolgt von einem "c." In Regex hat dies eine andere
Bedeutung. Es wird auf Übereinstimmung geprüft mit 0 oder einem
&quot;a&quot;, gefolgt von dem Buchstaben &quot;c&quot;.&nbsp; Damit
kann&nbsp; durch das ? angegeben werden, wie viele &quot;a&quot; vorhanden
sein dürfen. Soll das ? in einer Wildcard emuliert werden, wird der Punkt
Operator verwendet. Der Ausdruck "a.?c" ist gleichbedeutend mit der zuvor
Operator verwendet. Der Ausdruck &quot;a.c&quot; ist gleichbedeutend mit der zuvor
beschrieben Wildcard. Geprüft wird auf Übereinstimmung mit einem
&quot;a&quot;, gefolgt von irgend einem oder keinen anderen Zeichen (das ?
modifiziert den .), gefolgt von einem "c."</p><p>Der nächste
&quot;a&quot;, gefolgt von irgend einem anderen Zeichen, gefolgt von einem "c."</p><p>Der nächste
Wiederholungsoperator ist der *. Auch dieser ist wieder ähnlich zum Wildcard
Zeichen. Geprüft wird die Übereinstimmung mit 0 oder mehr der voranstehenden
Zeichen. Zu beachten ist, dass dieses &quot;vornstehende Zeichen&quot; das
+3300 -3168
View File
File diff suppressed because it is too large Load Diff
+4721 -3129
View File
File diff suppressed because it is too large Load Diff
+4416 -3793
View File
File diff suppressed because it is too large Load Diff
+546 -155
View File
File diff suppressed because it is too large Load Diff
+596 -211
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.
BIN
View File
Binary file not shown.
+132 -44
View File
@@ -56,7 +56,9 @@ help Opercmds {
" a specific command.";
" -";
" ==-------------------------oOo-------------------------==";
" ADCHAT GLOBOPS OPERMOTD SPAMFILTER";
" ADCHAT DNS NACHAT SETIDENT";
" ADDMOTD GLINE OPER SHUN";
" ADDOMOTD GLOBOPS OPERMOTD SPAMFILTER";
" CHATOPS GZLINE REHASH SQUIT";
" CHGHOST HTM RESTART TEMPSHUN";
" CHGIDENT KILL RPING TRACE";
@@ -65,8 +67,6 @@ help Opercmds {
" CONNECT LOCOPS SAPART WALLOPS";
" DCCDENY MKPASSWD SDESC ZLINE";
" DIE MODULE SETHOST";
" DNS NACHAT SETIDENT";
" GLINE OPER SHUN";
" ==-------------------------oOo-------------------------==";
};
@@ -79,11 +79,11 @@ help Svscmds {
" a specific command.";
" -";
" ==-------------------------oOo-------------------------==";
" SQLINE SVSKILL SVSNLINE SVSSNO";
" SVS2MODE SVSLUSERS SVSNOOP SVSWATCH";
" SVS2SNO SVSMODE SVSO SWHOIS";
" SVSFLINE SVSMOTD SVSPART UNSQLINE";
" SVSJOIN SVSNICK SVSSILENCE";
" SQLINE SVSKILL SVSNLINE SVSSILENCE";
" SVS2MODE SVSLUSERS SVSNOLAG SVSSNO";
" SVS2SNO SVSMODE SVSNOOP SVSWATCH";
" SVSFLINE SVSMOTD SVSO SWHOIS";
" SVSJOIN SVSNICK SVSPART UNSQLINE";
" ==-------------------------oOo-------------------------==";
};
@@ -127,7 +127,7 @@ help Snomasks {
" server notices you will receive.";
" Usage: /MODE nick +s <snomask>";
" Ex: /MODE blah +s +cF-j";
" The parameter specifies which snomasks you want (or don't want)."
" The parameter specifies which snomasks you want (or don't want).";
" You can also remove all snomasks by simply doing /MODE nick -s.";
"-";
" Below is a list of possible snomasks:";
@@ -159,41 +159,95 @@ help Chmodes {
" a <nickname> = Gives Channel Admin to the user";
" q <nickname> = Gives Owner status to the user";
" -";
" A = Server/Net Admin only channel (settable by Admins)";
" b <nick!ident@host> = Bans the nick!ident@host from the channel [h]";
" c = Block messages containing mIRC color codes [o]";
" C = No CTCPs allowed in the channel [o]";
" e <nick!ident@host> = Overrides a ban for matching users [h]";
" I <nick!ident@host> = Overrides +i for matching users [h]";
" f <floodparams> = Flood protection (for more info see /HELPOP CHMODEF) [o]";
" (For more info on extended bantypes, see /HELPOP EXTBANS)";
" G = Filters out all Bad words in messages with <censored> [o]";
" i = A user must be invited to join the channel [h]";
" I <nick!ident@host> = Overrides +i for matching users [h]";
" j <joins:sec> = Throttle joins per-user to 'joins' per 'sec' seconds [o]";
" k <key> = Users must specify <key> to join [h]";
" l <number of max users> = Channel may hold at most <number> of users [o]";
" m = Moderated channel (only +vhoaq users may speak) [h]";
" n = Users outside the channel can not send PRIVMSGs to the channel [h]";
" p = Private channel [o]";
" r = The channel is registered (settable by services only)";
" s = Secret channel [o]";
" t = Only +hoaq may change the topic [h]";
" z = Only Clients on a Secure Connection (SSL) can join [o]";
" A = Server/Net Admin only channel (settable by Admins)";
" C = No CTCPs allowed in the channel [o]";
" G = Filters out all Bad words in messages with <censored> [o]";
" M = Must be using a registered nick (+r), or have voice access to talk [o]";
" K = /KNOCK is not allowed [o]";
" L <chan2> = Channel link (If +l is full, the next user will auto-join <chan2>) [q]";
" l <number of max users> = Channel may hold at most <number> of users [o]";
" m = Moderated channel (only +vhoaq users may speak) [h]";
" M = Must be using a registered nick (+r), or have voice access to talk [o]";
" N = No Nickname changes are permitted in the channel [o]";
" n = Users outside the channel can not send PRIVMSGs to the channel [h]";
" O = IRC Operator only channel (settable by IRCops)";
" p = Private channel [o]";
" Q = No kicks allowed [o]";
" R = Only registered (+r) users may join the channel [o]";
" r = The channel is registered (settable by services only)";
" s = Secret channel [o]";
" S = Strips mIRC color codes [o]";
" T = No NOTICEs allowed in the channel [o]";
" V = /INVITE is not allowed [o]";
" t = Only +hoaq may change the topic [h]";
" u = Auditorium mode (/names and /who #channel only show channel ops) [q]";
" V = /INVITE is not allowed [o]";
" z = Only Clients on a Secure Connection (SSL) can join [o]";
" Z = All users on the channel are on a Secure connection (SSL) [server]";
" (This mode is set/unset by the server. Only if the channel is also +z)";
" -";
" [h] requires at least halfop, [o] requires at least chanop, [q] requires owner";
" ==------------------------------oOo----------------------------==";
};
help ExtBans {
" These bans let you ban based on things other than the traditional nick!user@host";
" mask. They also provide support for things like ``quieting'' users (on other IRCds";
" you might do +q <hostmask>, on UnrealIRCd use +b ~q:<hostmask>).";
" -";
" These bantypes specify which actions are affected by a ban:";
" ==-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 a user matches this, he may not join the channel. ";
" ~j | join | He may perform all other activities if he is already on ";
" | | the channel, such as speaking and changing his nick. ";
"-----------------------------------------------------------------------------------";
" -";
" These bantypes introduce new criteria which can be used:";
" ==-Type--------Name---------------------------Explanation-----------------------==";
" | | If the user is in this channel then (s)he is unable to ";
" | | join. A prefix can also be specified (+/%/@/&/~) which ";
" ~c | 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'. ";
"-----------------------------------------------------------------------------------";
" | | If a user has identified to services (usually NickServ) ";
" | | and matches this nickname, then this ban will match. ";
" | | This means this ban is really only useful for ban ";
" ~R | registered | exemptions (+e). Example: +e ~R:Nick ";
" | | Will allow Nick in the channel, regardless of other ";
" | | bans, if he identified to NickServ and is using the ";
" | | nickname Nick. ";
" ==------------------------------------------------------------------------------==";
" -";
"You may stack extended bans from the 1st group with the 2nd.";
"Example: +b ~q:~c:#lamers";
"The above would quiet all users who have joined #lamers.";
};
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 +261,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";
@@ -752,10 +806,10 @@ help Nachat {
};
help Kill {
" Forcefully Disconnects a user from an IRC Server.";
" Forcefully Disconnects users from an IRC Server.";
" IRC Operator only command.";
" -";
" Syntax: KILL <user> <reason>";
" Syntax: KILL <user1>,<user2>,<user3>,... <reason>";
" Example: KILL Jack16 Cloning is not allowed";
};
@@ -859,19 +913,22 @@ help Rehash {
" Prompts the server to reread the configuration files.";
" IRC Operator only command.";
" -";
" Syntax: REHASH <servername> -<flags>";
" REHASH -<flags>";
" Syntax: REHASH <servername> [flag]";
" REHASH -global [flag]";
" REHASH [flag]";
" -";
" If servername and flags are not specified this rehashes the";
" unrealircd.conf , removing any temporary k:lines.";
" If servername is specified, this is used to rehash config files on servername.";
" Only NetAdmins may specify a server name.";
" If servername and flag are not specified this rehashes the";
" unrealircd.conf, and re-reads all MOTD, BOTMOTD, OPERMOTD and RULES files.";
" If servername is specified, this is used to rehash the remote server.";
" If -global is specified, then all servers on the network are rehashed.";
" Only NetAdmins may specify a server name and use -global.";
" -";
" The flags are used to rehash other config files, valid flags are:";
" -motd - Rehashes all MOTD files and RULES files (including tld{})";
" -opermotd - Rehashes the OPERMOTD";
" -botmotd - Rehashes the BOTMOTD";
" -dns - Reinitializes and reloads the resolver";
" -garbage - Force garbage collection";
" -motd - Only re-read all MOTD, BOTMOTD, OPERMOTD and RULES files";
" (including those in tld{} blocks)";
" -ssl - Reloads SSL certificates";
};
help Restart {
@@ -1039,7 +1096,7 @@ help Sdesc {
};
help Mkpasswd {
" This command will return a 'hash' of the string that has been specified,"
" This command will return a 'hash' of the string that has been specified,";
" you can use this hash for any encrypted passwords in your configuration file:";
" eg: for oper::password, vhost::password, etc.";
" Available types (in order of 'secureness'):";
@@ -1132,7 +1189,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 +1283,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 +1303,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,9 +1331,24 @@ help Svs2sno {
" Must be sent through an U:Lined server.";
" -";
" Syntax: SVS2SNO <nickname> <snomasks>";
" Example: SVSSNO joe +Gc";
" Example: SVS2SNO joe +Gc";
};
help Svsnolag {
" Enable 'no fake lag' for a user.";
" Must be sent through an U:Lined server.";
" -";
" Syntax: SVSNOLAG [+|-] <nickname>";
" Example: SVSNOLAG + joe";
};
help Svs2nolag {
" Enable 'no fake lag' for a user.";
" Must be sent through an U:Lined server.";
" -";
" Syntax: SVS2NOLAG [+|-] <nickname>";
" Example: SVS2NOLAG + joe";
};
help Spamfilter {
" This command adds/removes global spam filters.";
@@ -1289,7 +1363,7 @@ help Spamfilter {
" 'kill', 'tempshun' (only shun current session), 'shun',";
" 'kline', 'gline', 'zline', 'gzline', 'block' (blocks the msg),";
" 'dccblock' (unable to send any dccs), 'viruschan' (part all channels";
" and join the virus help chan).";
" and join the virus help chan), 'warn' (warn for IRC Operators).";
" [regex] this is the actual regex where we should block on";
" [tkltime] the duration of the *LINEs placed by action (use '-' to use the default";
" set::spamfilter::ban-time, this value is ignored for block/tempshun');";
@@ -1325,3 +1399,17 @@ help DccAllow {
* stuff quickly gets out-of-synch.
*/
};
help Addmotd {
" Adds a line to the end of the MOTD ";
" -";
" Syntax: ADDMOTD <text>";
" Example: ADDMOTD Play nice!";
};
help Addomotd {
" Adds a line to the end of the OPERMOTD ";
" -";
" Syntax: ADDOMOTD <text>";
" Example: ADDOMOTD Abuse it and lose it!";
};
+1
View File
@@ -0,0 +1 @@
setup.h
-4
View File
@@ -5,11 +5,7 @@
#include <stdlib.h>
#include <string.h>
#ifndef _WIN32
#include "tre/regex.h"
#else
#include "win32/regex.h"
#endif
#define MAX_MATCH 1
#define MAX_WORDLEN 64
+77 -42
View File
@@ -99,6 +99,24 @@
*/
#define REMOTE_REHASH
/*
* Special remote include caching, see this Changelog item:
* - Added special caching of remote includes. When a remote include fails to
* load (for example when the webserver is down), then the most recent
* version of that remote include will be used, and the ircd will still boot
* and be able to rehash. Even though this is quite a simple feature, it
* can make a key difference when deciding to roll out remote includes on
* your network. Previously, servers would be unable to boot or rehash when
* the webserver was down, which would be a big problem (often unacceptable).
* The latest version of fetched urls are cached in the cache/ directory as
* cache/<md5 hash of url>.
* Obviously, if there's no 'latest version' and an url fails, the ircd will
* still not be able to boot. This would be the case if you added or changed
* the path of a remote include and it's trying to fetch it for the first time.
* There usually is no reason to disable this.
*/
#define REMOTEINC_SPECIALCACHE
/*
Stripbadwords patch
*/
@@ -112,6 +130,8 @@
/*
* THROTTLING
* This will only allow 1 connection per ip in set::throttle::period time
* NOTE: There's no reason to disable this (anymore) since it can be fully
* configured in the unrealircd.conf. Keep the define...
*/
#define THROTTLING
@@ -139,6 +159,13 @@
*/
#undef JOIN_INSTEAD_OF_SJOIN_ON_REMOTEJOIN
/*
* So called 'smart' banning: if this is enabled and a ban on like *!*@*h.com is present,
* then you cannot add a ban like *!*@*blah.com. In other words.. the ircd tries to be "smart".
* In general this is considered quite annoying. This was on by default until Unreal 3.2.8.
*/
#undef SOCALLEDSMARTBANNING
/*
** Freelinks garbage collector -Stskeeps
**
@@ -198,8 +225,12 @@
/*
* Full pathnames and defaults of irc system's support files. Please note that
* these are only the recommened names and paths. Change as needed.
* You must define these to something, even if you don't really want them.
* these are only the recommened names and paths. You must define PPATH if you
* want a pidfile written. Also, IRCDTUNE should be defined because it is needed for
* operation. All of these options are runtime-configurable (except for CPATH and LPATH)
* in the files block of unrealircd.conf. CPATH is runtime-configurable as a command-
* line argument. These used as the default values for options absent from the user's
* unrealircd.conf.
*/
#define CPATH "unrealircd.conf" /* server configuration file */
#define MPATH "ircd.motd" /* server MOTD file */
@@ -214,15 +245,32 @@
/* CHROOTDIR
*
* Define for value added security if you are a rooter.
* This enables running the IRCd chrooted (requires initial root privileges,
* but will be dropped to IRC_USER/IRC_GROUP privileges if those are defined).
*
* All files you access must be in the directory you define as DPATH.
* The directory to chroot to is simply DPATH (which is set via ./Config).
* (This may effect the PATH locations above, though you can symlink it)
*
* You may want to define IRC_UID and IRC_GID
* Usually you only simply need to enable this, and set IRC_USER and
* IRC_GROUP, you don't need to create a special chroot environment..
* UnrealIRCd will do that by itself (Unreal will create /dev/random,
* etc. etc.).
*
* Change to '#define CHROOTDIR' to enable...
*/
/* #define CHROOTDIR */
/*
* IRC_USER
*
* If you start the server as root but wish to have it run as another user,
* define IRC_USER to that user name. This should only be defined if you
* are running as root and even then perhaps not.
*/
/* #define IRC_USER "<user name>" */
/* #define IRC_GROUP "<group name>" */
/* SHOW_INVISIBLE_LUSERS
*
* As defined this will show the correct invisible count for anyone who does
@@ -281,19 +329,6 @@
#define BUFFERPOOL (18 * MAXSENDQLENGTH)
#endif
/*
* IRC_UID
*
* If you start the server as root but wish to have it run as another user,
* define IRC_UID to that UID. This should only be defined if you are running
* as root and even then perhaps not.
* use #define IRC_UID <uid>
* and #define IRC_GID <gid>
*/
#undef IRC_UID
#undef IRC_GID
/*
* CLIENT_FLOOD
*
@@ -311,17 +346,13 @@
#define NO_FLOOD_AWAY
/*
* Define your network service names here.
/* You can define the nickname of NickServ here (usually "NickServ").
* This is ONLY used for the ""infamous IDENTIFY feature"", which is:
* whenever a user connects with a server password but there isn't
* a server password set, the password is sent to NickServ in an
* 'IDENTIFY <pass>' message.
*/
#define ChanServ "ChanServ"
#define MemoServ "MemoServ"
#define NickServ "NickServ"
#define OperServ "OperServ"
#define HelpServ "HelpServ"
#define StatServ "StatServ"
#define InfoServ "InfoServ"
#define BotServ "BotServ"
/*
* How many open targets can one nick have for messaging nicks and
@@ -358,7 +389,7 @@
* 8MB or less core memory : 500 (at least 1/4 of max users)
* 8MB-16MB core memory : 500-750 (1/4 -> 1/2 of max users)
* 16MB-32MB core memory : 750-1000 (1/2 -> 3/4 of max users)
* 32MB or more core memory : 1000+ (> 3/4 if max users)
* 32MB or more core memory : 1000+ (> 3/4 of max users)
* where max users is the expected maximum number of users.
* (100 nicks/users ~ 25k)
* NOTE: this is directly related to the amount of memory ircd will use whilst
@@ -373,12 +404,13 @@
/*
* Time interval to wait and if no messages have been received, then check for
* PINGFREQUENCY and CONNECTFREQUENCY
* pings, outgoing connects, events, and a couple of other things.
* Imo this is quite useless nowdays, it only saves _some_ cpu on tiny networks
* with like 10 users all of them being inactive. On a normal network with >30
* users this value is completely irrelevant.
* The original value here was 60 (which was [hopefuly] never reached and was
* stupid anyway), changed to 2.
* DO NOT SET THIS TO ANYTHING MORE THAN 5. BETTER YET, JUST LEAVE IT AT 2!
*/
#define TIMESEC 2
@@ -387,15 +419,10 @@
* PINGFREQUENCY seconds, then the server will attempt to check for
* an active link with a PING message. If no reply is received within
* (PINGFREQUENCY * 2) seconds, then the connection will be closed.
* NOTE: This is simply the class::pingfreq for the default class, nothing fancy ;)
*/
#define PINGFREQUENCY 120 /* Recommended value: 120 */
/*
* If the connection to to uphost is down, then attempt to reconnect every
* CONNECTFREQUENCY seconds.
*/
#define CONNECTFREQUENCY 600 /* Recommended value: 600 */
/*
* Often net breaks for a short time and it's useful to try to
* establishing the same connection again faster than CONNECTFREQUENCY
@@ -429,16 +456,10 @@
/*
* Use much faster badwords replace routine (>100 times faster).
* Disabling this is not supported.
*/
#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
*/
@@ -464,6 +485,16 @@
*/
#define JOINTHROTTLE
/* Detect slow spamfilters? This requires a little more cpu time when processing
* any spamfilter (like on text/connect/..) but will save you from slowing down
* your IRCd to a near-halt (well, in most cases.. there are still cases like when
* it goes into a loop that it will still stall completely... forever..).
* This is kinda experimental, and requires getrusage.
*/
#ifndef _WIN32
#define SPAMFILTER_DETECTSLOW
#endif
/* ------------------------- END CONFIGURATION SECTION -------------------- */
#define MOTD MPATH
#define RULES RPATH
@@ -471,6 +502,10 @@
#define CONFIGFILE CPATH
#define IRCD_PIDFILE PPATH
#if defined(CHROOTDIR) && !defined(IRC_USER)
#error "ERROR: It makes no sense to define CHROOTDIR but not IRC_USER and IRC_GROUP! Please define IRC_USER and IRC_GROUP properly as the user/group to change to."
#endif
#ifdef __osf__
#define OSF
/* OSF defines BSD to be its version of BSD */
+61 -3
View File
@@ -80,8 +80,10 @@ struct zConfiguration {
unsigned dont_resolve:1;
unsigned use_ban_version:1;
unsigned mkpasswd_for_everyone:1;
unsigned allow_insane_bans;
unsigned allow_part_if_shunned:1;
unsigned use_egd;
unsigned check_target_nick_bans:1;
unsigned use_egd : 1;
long host_timeout;
int host_retries;
char *name_server;
@@ -109,20 +111,27 @@ struct zConfiguration {
#ifdef USE_SSL
char *x_server_cert_pem;
char *x_server_key_pem;
char *x_server_cipher_list;
char *trusted_ca_file;
long ssl_options;
int ssl_renegotiate_bytes;
int ssl_renegotiate_timeout;
#elif defined(_WIN32)
void *bogus1, *bogus2, *bogus3;
void *bogus1, *bogus2, *bogus3, *bogus5;
long bogus4;
int bogus6, bogus7;
#endif
enum UHAllowed userhost_allowed;
char *restrict_usermodes;
char *restrict_channelmodes;
char *restrict_extendedbans;
int new_linking_protocol;
char *channel_command_prefix;
long unknown_flood_bantime;
long unknown_flood_amount;
struct ChMode modes_on_join;
int level_on_join;
#ifdef NO_FLOOD_AWAY
unsigned char away_count;
long away_period;
@@ -145,7 +154,20 @@ struct zConfiguration {
char spamfilter_vchan_deny;
SpamExcept *spamexcept;
char *spamexcept_line;
long spamfilter_detectslow_warn;
long spamfilter_detectslow_fatal;
int maxbans;
int maxbanlength;
int timesynch_enabled;
int timesynch_timeout;
char *timesynch_server;
int pingpong_warning;
int watch_away_notification;
int uhnames;
aNetwork network;
#ifdef INET6
unsigned short default_ipv6_clone_mask;
#endif /* INET6 */
};
#ifndef DYNCONF_C
@@ -206,6 +228,7 @@ extern MODVAR aConfiguration iConf;
#define RESTRICT_USERMODES iConf.restrict_usermodes
#define RESTRICT_CHANNELMODES iConf.restrict_channelmodes
#define RESTRICT_EXTENDEDBANS iConf.restrict_extendedbans
#define NEW_LINKING_PROTOCOL iConf.new_linking_protocol
#ifdef THROTTLING
#define THROTTLING_PERIOD iConf.throttle_period
#define THROTTLING_COUNT iConf.throttle_count
@@ -214,6 +237,7 @@ extern MODVAR aConfiguration iConf;
#define UNKNOWN_FLOOD_BANTIME iConf.unknown_flood_bantime
#define UNKNOWN_FLOOD_AMOUNT iConf.unknown_flood_amount
#define MODES_ON_JOIN iConf.modes_on_join.mode
#define LEVEL_ON_JOIN iConf.level_on_join
#ifdef NO_FLOOD_AWAY
#define AWAY_PERIOD iConf.away_period
@@ -226,6 +250,7 @@ extern MODVAR aConfiguration iConf;
#define IDENT_READ_TIMEOUT iConf.ident_read_timeout
#define MKPASSWD_FOR_EVERYONE iConf.mkpasswd_for_everyone
#define ALLOW_INSANE_BANS iConf.allow_insane_bans
#define CHANCMDPFX iConf.channel_command_prefix
#define DEFAULT_BANTIME iConf.default_bantime
@@ -246,8 +271,25 @@ extern MODVAR aConfiguration iConf;
#define SPAMFILTER_VIRUSCHAN iConf.spamfilter_virus_help_channel
#define SPAMFILTER_VIRUSCHANDENY iConf.spamfilter_vchan_deny
#define SPAMFILTER_EXCEPT iConf.spamexcept_line
#define SPAMFILTER_DETECTSLOW_WARN iConf.spamfilter_detectslow_warn
#define SPAMFILTER_DETECTSLOW_FATAL iConf.spamfilter_detectslow_fatal
/* Used for duplicate checking */
#define CHECK_TARGET_NICK_BANS iConf.check_target_nick_bans
#define MAXBANS iConf.maxbans
#define MAXBANLENGTH iConf.maxbanlength
#define TIMESYNCH iConf.timesynch_enabled
#define TIMESYNCH_TIMEOUT iConf.timesynch_timeout
#define TIMESYNCH_SERVER iConf.timesynch_server
#define PINGPONG_WARNING iConf.pingpong_warning
#define WATCH_AWAY_NOTIFICATION iConf.watch_away_notification
#define UHNAMES_ENABLED iConf.uhnames
/* Used for "is present?" and duplicate checking */
struct SetCheck {
unsigned has_show_opermotd:1;
unsigned has_hide_ulines:1;
@@ -262,9 +304,11 @@ struct SetCheck {
unsigned has_mkpasswd_for_everyone:1;
unsigned has_allow_part_if_shunned:1;
unsigned has_ssl_egd:1;
unsigned has_ssl_server_cipher_list :1;
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;
@@ -277,6 +321,10 @@ struct SetCheck {
unsigned has_snomask_on_oper:1;
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_watch_away_notification:1;
unsigned has_uhnames:1;
unsigned has_oper_only_stats:1;
unsigned has_maxchannelsperuser:1;
unsigned has_maxdccallow:1;
@@ -289,15 +337,19 @@ struct SetCheck {
unsigned has_ssl_key:1;
unsigned has_ssl_trusted_ca_file:1;
unsigned has_ssl_options:1;
unsigned has_renegotiate_timeout : 1;
unsigned has_renegotiate_bytes : 1;
#endif
unsigned has_allow_userhost_change:1;
unsigned has_restrict_usermodes:1;
unsigned has_restrict_channelmodes:1;
unsigned has_restrict_extendedbans:1;
unsigned has_new_linking_protocol:1;
unsigned has_channel_command_prefix:1;
unsigned has_anti_flood_unknown_flood_bantime:1;
unsigned has_anti_flood_unknown_flood_amount:1;
unsigned has_modes_on_join:1;
unsigned has_level_on_join:1;
#ifdef NO_FLOOD_AWAY
unsigned has_anti_flood_away_count:1;
unsigned has_anti_flood_away_period:1;
@@ -307,6 +359,8 @@ struct SetCheck {
unsigned has_ident_read_timeout:1;
unsigned has_default_bantime:1;
unsigned has_who_limit:1;
unsigned has_maxbans:1;
unsigned has_maxbanlength:1;
unsigned has_silence_limit:1;
#ifdef NEWCHFLOODPROT
unsigned has_modef_default_unsettime:1;
@@ -342,7 +396,11 @@ struct SetCheck {
unsigned has_options_dont_resolve:1;
unsigned has_options_show_connect_info:1;
unsigned has_options_mkpasswd_for_everyone:1;
unsigned has_options_allow_insane_bans:1;
unsigned has_options_allow_part_if_shunned:1;
int cgiirc_type; /* cheat :( */
unsigned has_cgiirc_hosts:1;
unsigned has_cgiirc_webpass:1;
};
+71 -34
View File
@@ -73,6 +73,7 @@ extern MODVAR long lastsendK, lastrecvK;
* Configuration linked lists
*/
extern MODVAR ConfigItem_me *conf_me;
extern MODVAR ConfigItem_files *conf_files;
extern MODVAR ConfigItem_class *conf_class;
extern MODVAR ConfigItem_class *default_class;
extern MODVAR ConfigItem_admin *conf_admin;
@@ -112,6 +113,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);
@@ -123,6 +126,7 @@ ConfigItem_ulines *Find_uline(char *host);
ConfigItem_except *Find_except(aClient *, char *host, short type);
ConfigItem_tld *Find_tld(aClient *cptr, char *host);
ConfigItem_link *Find_link(char *username, char *hostname, char *ip, char *servername);
ConfigItem_cgiirc *Find_cgiirc(char *username, char *hostname, char *ip, CGIIRCType type);
ConfigItem_ban *Find_ban(aClient *, char *host, short type);
ConfigItem_ban *Find_banEx(aClient *,char *host, short type, short type2);
ConfigItem_vhost *Find_vhost(char *name);
@@ -132,8 +136,10 @@ ConfigItem_help *Find_Help(char *command);
int AllowClient(aClient *cptr, struct hostent *hp, char *sockhost, char *username);
int parse_netmask(const char *text, struct irc_netmask *netmask);
int match_ip(struct IN_ADDR addr, char *uhost, char *mask, struct irc_netmask *netmask);
#ifdef INET6
int match_ipv6(struct IN_ADDR *addr, struct IN_ADDR *mask, int bits);
#endif
ConfigItem_ban *Find_ban_ip(aClient *sptr);
extern MODVAR struct tm motd_tm, smotd_tm;
extern MODVAR Link *Servers;
void add_ListItem(ListStruct *, ListStruct **);
ListStruct *del_ListItem(ListStruct *, ListStruct **);
@@ -187,7 +193,13 @@ extern long get_access(aClient *, aChannel *);
extern int is_chan_op(aClient *, aChannel *);
extern int has_voice(aClient *, aChannel *);
extern int is_chanowner(aClient *, aChannel *);
#ifndef DISABLE_EXTBAN_STACKING
extern int ban_check_mask(aClient *, aChannel *, char *, int, int);
extern int extban_is_ok_nuh_extban(aClient *, aChannel *, char *, int, int, int);
extern char* extban_conv_param_nuh_or_extban(char *);
#endif
extern Ban *is_banned(aClient *, aChannel *, int);
extern Ban *is_banned_with_nick(aClient *, aChannel *, int, char *);
extern int parse_help(aClient *, char *, char *);
extern void ircd_log(int, char *, ...) __attribute__((format(printf,2,3)));
@@ -215,11 +227,11 @@ extern MODFUNC char *sock_strerror(int);
extern int dgets(int, char *, int);
extern char *inetntoa(char *);
#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
/* #ifndef _WIN32 XXX why was this?? -- Syzop. */
#ifndef HAVE_SNPRINTF
extern int snprintf (char *str, size_t count, const char *fmt, ...);
#endif
#ifndef HAVE_VSNPRINTF
extern int vsnprintf (char *str, size_t count, const char *fmt, va_list arg);
/* #endif */
#endif
#ifdef _WIN32
@@ -246,6 +258,7 @@ extern int get_sockerr(aClient *);
extern int inetport(aClient *, char *, int);
extern void init_sys();
extern void init_modef();
extern int verify_hostname(char *name);
#ifdef NO_FDLIST
extern int read_message(time_t);
@@ -263,15 +276,12 @@ extern void send_authports(aClient *);
extern void restart(char *);
extern void send_channel_modes(aClient *, aChannel *);
extern void server_reboot(char *);
extern void terminate(), write_pidfile();
extern void *MyMallocEx(size_t size);
extern int advanced_check(char *userhost, int ipstat);
extern int send_queued(aClient *);
/* i know this is naughty but :P --stskeeps */
extern void send_channel_modes_sjoin(aClient *cptr, aChannel *chptr);
extern void send_channel_modes_sjoin3(aClient *cptr, aChannel *chptr);
extern void sendto_locfailops(char *pattern, ...) __attribute__((format(printf,1,2)));
extern void sendto_connectnotice(char *nick, anUser *user, aClient *sptr, int disconnect, char *comment);
extern void sendto_serv_butone_nickcmd(aClient *one, aClient *sptr, char *nick, int hopcount,
@@ -321,14 +331,7 @@ extern MODVAR int writecalls, writeb[];
extern int deliver_it(aClient *, char *, int);
extern int check_for_chan_flood(aClient *cptr, aClient *sptr, aChannel *chptr);
extern int check_for_target_limit(aClient *sptr, void *target, const char *name);
extern char *stripbadwords_message(char *str, int *);
extern char *stripbadwords_channel(char *str, int *);
extern char *stripbadwords_quit(char *str, int *);
extern char *stripbadwords(char *, ConfigItem_badword *, int *);
extern unsigned char *StripColors(unsigned char *);
extern const char *StripControlCodes(unsigned char *text);
extern char *canonize(char *buffer);
extern int webtv_parse(aClient *sptr, char *string);
extern ConfigItem_deny_dcc *dcc_isforbidden(aClient *sptr, char *filename);
extern ConfigItem_deny_dcc *dcc_isdiscouraged(aClient *sptr, char *filename);
extern int check_registered(aClient *);
@@ -340,6 +343,7 @@ extern int exit_client(aClient *, aClient *, aClient *, char *);
extern void initstats(), tstats(aClient *, char *);
extern char *check_string(char *);
extern char *make_nick_user_host(char *, char *, char *);
extern inline char *make_nick_user_host_r(char *namebuf, char *nick, char *name, char *host);
extern char *make_user_host(char *, char *);
extern int parse(aClient *, char *, char *);
extern int do_numeric(int, aClient *, aClient *, int, char **);
@@ -347,7 +351,6 @@ extern int hunt_server(aClient *, aClient *, char *, int, int, char **);
extern int hunt_server_token(aClient *, aClient *, char *, char *, char *, int, int, char **);
extern int hunt_server_token_quiet(aClient *, aClient *, char *, char *, char *, int, int, char **);
extern aClient *next_client(aClient *, char *);
extern int m_names(aClient *, aClient *, int, char **);
extern int m_server_estab(aClient *);
extern void umode_init(void);
extern long umode_get(char, int, int (*)(aClient *, int));
@@ -385,7 +388,7 @@ extern struct hostent *get_res(char *);
extern struct hostent *gethost_byaddr(char *, Link *);
extern struct hostent *gethost_byname(char *, Link *);
extern void flush_cache();
extern void init_resolver(void);
extern void init_resolver(int firsttime);
extern time_t timeout_query_list(time_t);
extern time_t expire_cache(time_t);
extern void del_queries(char *);
@@ -397,7 +400,7 @@ extern int add_to_client_hash_table(char *, aClient *);
extern int del_from_client_hash_table(char *, aClient *);
extern int add_to_channel_hash_table(char *, aChannel *);
extern int del_from_channel_hash_table(char *, aChannel *);
extern int add_to_watch_hash_table(char *, aClient *);
extern int add_to_watch_hash_table(char *, aClient *, int);
extern int del_from_watch_hash_table(char *, aClient *);
extern int hash_check_watch(aClient *, int);
extern int hash_del_watch_list(aClient *);
@@ -485,7 +488,6 @@ extern int dopacket(aClient *, char *, int);
extern void debug(int, char *, ...);
#if defined(DEBUGMODE)
extern void send_usage(aClient *, char *);
extern void send_listinfo(aClient *, char *);
extern void count_memory(aClient *, char *);
extern int checkprotoflags(aClient *, int, char *, int);
#endif
@@ -548,12 +550,12 @@ extern int Auth_CheckError(ConfigEntry *ce);
extern long xbase64dec(char *b64);
extern aClient *find_server_b64_or_real(char *name);
extern aClient *find_server_by_base64(char *b64);
extern aClient *find_server_by_numeric(long value);
extern int is_chanownprotop(aClient *cptr, aChannel *chptr);
extern int is_skochanop(aClient *cptr, aChannel *chptr);
extern char *make_virthost(char *curr, char *new, int mode);
extern char *make_virthost(aClient *sptr, char *curr, char *new, int mode);
extern int channel_canjoin(aClient *sptr, char *name);
extern char *collapse(char *pattern);
extern void send_list(aClient *cptr, int numsend);
extern void dcc_sync(aClient *sptr);
extern void report_flines(aClient *sptr);
extern void report_network(aClient *sptr);
@@ -565,7 +567,6 @@ extern char *oflagstr(long oflag);
extern int rehash(aClient *cptr, aClient *sptr, int sig);
extern int _match(char *mask, char *name);
extern void outofmemory(void);
extern unsigned long our_crc32(const unsigned char *s, unsigned int len);
extern int add_listener2(ConfigItem_listen *conf);
extern void link_cleanup(ConfigItem_link *link_ptr);
extern void listen_cleanup();
@@ -579,8 +580,7 @@ extern int init_conf(char *filename, int rehash);
extern void validate_configuration(void);
extern void run_configuration(void);
extern void rehash_motdrules();
extern aMotd *read_file(char *filename, aMotd **list);
extern aMotd *read_file_ex(char *filename, aMotd **list, struct tm *);
extern void read_motd(const char *filename, aMotdFile *motd); /* s_serv.c */
extern CMD_FUNC(m_server_remote);
extern void send_proto(aClient *, ConfigItem_link *);
extern char *xbase64enc(long i);
@@ -639,13 +639,15 @@ extern void sendto_chmodemucrap(aClient *, aChannel *, char *);
extern void verify_opercount(aClient *, char *);
extern int valid_host(char *host);
extern int count_oper_sessions(char *);
extern char *unreal_mktemp(char *dir, char *suffix);
extern char *unreal_mktemp(const char *dir, const char *suffix);
extern char *unreal_getpathname(char *filepath, char *path);
extern char *unreal_getfilename(char *path);
extern int unreal_copyfile(char *src, char *dest);
extern int unreal_copyfileex(char *src, char *dest, int tryhardlink);
extern time_t unreal_getfilemodtime(char *filename);
extern void unreal_setfilemodtime(char *filename, time_t mtime);
extern char *unreal_mkcache(const char *url);
extern int has_cached_version(const char *url);
extern int unreal_copyfile(const char *src, const char *dest);
extern int unreal_copyfileex(const char *src, const char *dest, int tryhardlink);
extern time_t unreal_getfilemodtime(const char *filename);
extern void unreal_setfilemodtime(const char *filename, time_t mtime);
extern void DeleteTempModules(void);
extern MODVAR Extban *extbaninfo;
extern Extban *findmod_by_bantype(char c);
@@ -683,7 +685,6 @@ extern MODVAR aCtab cFlagTab[];
extern char *unreal_encodespace(char *s);
extern char *unreal_decodespace(char *s);
extern MODVAR Link *helpign;
extern MODVAR aMotd *rules;
extern MODVAR fdlist default_fdlist, busycli_fdlist, serv_fdlist, oper_fdlist;
extern void DCCdeny_add(char *filename, char *reason, int type, int type2);
extern void DCCdeny_del(ConfigItem_deny_dcc *deny);
@@ -729,16 +730,29 @@ extern MODVAR aTKline *(*tkl_expire)(aTKline * tmp);
extern MODVAR EVENT((*tkl_check_expire));
extern MODVAR int (*find_tkline_match)(aClient *cptr, int xx);
extern MODVAR int (*find_shun)(aClient *cptr);
extern MODVAR int (*find_spamfilter_user)(aClient *sptr);
extern MODVAR int (*find_spamfilter_user)(aClient *sptr, int flags);
extern MODVAR aTKline *(*find_qline)(aClient *cptr, char *nick, int *ishold);
extern MODVAR int (*find_tkline_match_zap)(aClient *cptr);
extern MODVAR int (*find_tkline_match_zap_ex)(aClient *cptr, aTKline **rettk);
extern MODVAR void (*tkl_stats)(aClient *cptr, int type, char *para);
extern MODVAR void (*tkl_synch)(aClient *sptr);
extern MODVAR int (*m_tkl)(aClient *cptr, aClient *sptr, int parc, char *parv[]);
extern MODVAR int (*place_host_ban)(aClient *sptr, int action, char *reason, long duration);
extern MODVAR int (*dospamfilter)(aClient *sptr, char *str_in, int type, char *target);
extern MODVAR int (*dospamfilter)(aClient *sptr, char *str_in, int type, char *target, int flags, aTKline **rettk);
extern MODVAR int (*dospamfilter_viruschan)(aClient *sptr, aTKline *tk, int type);
extern MODVAR void (*send_list)(aClient *cptr, int numsend);
extern MODVAR char *(*stripbadwords_channel)(char *str, int *blocked);
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);
extern MODVAR void (*send_protoctl_servers)(aClient *sptr, int response);
extern MODVAR int (*verify_link)(aClient *cptr, aClient *sptr, char *servername, ConfigItem_link **link_out);
extern MODVAR void (*send_server_message)(aClient *sptr);
/* /Efuncs */
extern MODVAR aMotd *opermotd, *svsmotd, *motd, *botmotd, *smotd;
extern MODVAR aMotdFile opermotd, svsmotd, motd, botmotd, smotd, rules;
extern MODVAR int max_connection_count;
extern int add_listmode(Ban **list, aClient *cptr, aChannel *chptr, char *banid);
extern int del_listmode(Ban **list, aChannel *chptr, char *banid);
@@ -748,7 +762,8 @@ extern void chanfloodtimer_del(aChannel *chptr, char mflag, long mbit);
extern char *clean_ban_mask(char *, int, aClient *);
extern void chanfloodtimer_stopchantimers(aChannel *chptr);
extern int find_invex(aChannel *chptr, aClient *sptr);
extern void DoMD5(unsigned char *mdout, unsigned char *src, unsigned long n);
extern void DoMD5(unsigned char *mdout, const unsigned char *src, unsigned long n);
extern char *md5hash(unsigned char *dst, const unsigned char *src, unsigned long n);
#ifdef JOINTHROTTLE
aJFlood *cmodej_addentry(aClient *cptr, aChannel *chptr);
void cmodej_delentry(aJFlood *e);
@@ -760,11 +775,33 @@ extern void charsys_addmultibyterange(char s1, char e1, char s2, char e2);
extern void charsys_addallowed(char *s);
extern void charsys_reset(void);
extern MODVAR char langsinuse[4096];
extern MODVAR char *casemapping[2];
extern MODVAR aTKline *tklines[TKLISTLEN];
extern char *cmdname_by_spamftarget(int target);
extern int isipv6(struct IN_ADDR *addr);
extern void inet4_to_inet6(const void *src_in, void *dst_in);
extern void unrealdns_delreq_bycptr(aClient *cptr);
extern void inet6_to_inet4(const void *src, void *dst);
extern void sendtxtnumeric(aClient *to, char *pattern, ...);
extern void sendtxtnumeric(aClient *to, char *pattern, ...) __attribute__((format(printf,2,3)));;
extern void unrealdns_gethostbyname_link(char *name, ConfigItem_link *conf);
extern void unrealdns_delasyncconnects(void);
extern int is_autojoin_chan(char *chname);
extern void unreal_free_hostent(struct hostent *he);
extern int match_esc(const char *mask, const char *name);
extern int iplist_onlist(IPList *iplist, char *ip);
extern struct hostent *unreal_create_hostent(char *name, struct IN_ADDR *addr);
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(aMotdFile *motd); /* s_serv.c */
extern void fix_timers(void);
extern char *chfl_to_sjoin_symbol(int s);
extern char chfl_to_chanmode(int s);
extern void add_pending_net(aClient *sptr, char *str);
extern void free_pending_net(aClient *sptr);
extern aPendingNet *find_pending_net_by_numeric_butone(int numeric, aClient *exempt);
extern aClient *find_pending_net_duplicates(aClient *cptr, aClient **srv, int *numeric);
extern aClient *find_non_pending_net_duplicates(aClient *cptr);
+4
View File
@@ -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
+1 -1
View File
@@ -22,7 +22,7 @@ typedef struct {
} MD5_CTX;
extern void MD5_Init(MD5_CTX *ctx);
extern void MD5_Update(MD5_CTX *ctx, void *data, unsigned long size);
extern void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size);
extern void MD5_Final(unsigned char *result, MD5_CTX *ctx);
#endif
+40 -1
View File
@@ -110,6 +110,7 @@ typedef struct {
#define MOBJ_CALLBACK 0x0200
#define MOBJ_ISUPPORT 0x0400
#define MOBJ_EFUNCTION 0x0800
#define MOBJ_CMODE 0x1000
typedef struct {
long mode;
@@ -222,6 +223,20 @@ typedef struct {
* aExtCMtableParam *: their parameter
*/
int (*sjoin_check)(aChannel *, CmodeParam *, CmodeParam *);
/** Local channel mode? Prevents remote servers from setting/unsetting this */
char local;
/** Is this mode being unloaded?
* This is set to 1 if the chanmode module providing this mode is unloaded
* and we are waiting to see if in our new round of loads a "new" chanmode
* module will popup to take this mode. This only happens during a rehash,
* should never be 0 outside an internal rehash.
*/
char unloaded;
/** Module owner */
Module *owner;
} Cmode;
typedef struct {
@@ -234,6 +249,7 @@ typedef struct {
void (*free_param)(CmodeParam *);
CmodeParam * (*dup_struct)(CmodeParam *);
int (*sjoin_check)(aChannel *, CmodeParam *, CmodeParam *);
char local;
} CmodeInfo;
#endif
@@ -245,10 +261,11 @@ typedef struct {
#define EXBTYPE_BAN 0 /* a ban */
#define EXBTYPE_EXCEPT 1 /* an except */
#define EXBTYPE_INVEX 2 /* an invite exception */
#define EXTBANTABLESZ 32
typedef enum ExtbanOptions { EXTBOPT_CHSVSMODE=0x1 } ExtbanOptions;
typedef enum ExtbanOptions { EXTBOPT_CHSVSMODE=0x1, EXTBOPT_ACTMODIFIER=0x2, EXTBOPT_NOSTACKCHILD=0x4, EXTBOPT_INVEX=0x8 } ExtbanOptions;
typedef struct {
/** extbans module */
@@ -334,6 +351,7 @@ typedef struct _ModuleObject {
Callback *callback;
Efunction *efunction;
Isupport *isupport;
Cmode *cmode;
} object;
} ModuleObject;
@@ -420,6 +438,7 @@ struct _Module
unsigned char errorcode;
char *tmp_file;
unsigned long mod_sys_version;
unsigned int compiler_version;
};
/*
* Symbol table
@@ -635,6 +654,12 @@ 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
#define HOOKTYPE_RAWPACKET_IN 49
#define HOOKTYPE_LOCAL_NICKPASS 50
#define HOOKTYPE_PACKET 51
#define HOOKTYPE_HANDSHAKE 52
/* Hook return values */
#define HOOK_CONTINUE 0
@@ -644,6 +669,7 @@ int CallCmdoverride(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, ch
/* Callback types */
#define CALLBACKTYPE_CLOAK 1
#define CALLBACKTYPE_CLOAKKEYCSUM 2
#define CALLBACKTYPE_CLOAK_EX 3
/* Efunction types */
#define EFUNC_DO_JOIN 1
@@ -670,6 +696,19 @@ int CallCmdoverride(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, ch
#define EFUNC_M_TKL 22
#define EFUNC_PLACE_HOST_BAN 23
#define EFUNC_DOSPAMFILTER 24
#define EFUNC_DOSPAMFILTER_VIRUSCHAN 25
#define EFUNC_FIND_TKLINE_MATCH_ZAP_EX 26
#define EFUNC_SEND_LIST 27
#define EFUNC_STRIPBADWORDS_CHANNEL 28
#define EFUNC_STRIPBADWORDS_MESSAGE 29
#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
#define EFUNC_SEND_PROTOCTL_SERVERS 35
#define EFUNC_VERIFY_LINK 36
#define EFUNC_SEND_SERVER_MESSAGE 37
/* Module flags */
#define MODFLAG_NONE 0x0000
+18 -5
View File
@@ -80,12 +80,25 @@
#define MYTOKEN_INET6 ""
#endif
#ifdef UNREALCORE
char our_mod_version[] = BASE_VERSION PATCH1 PATCH2 PATCH3 PATCH4 PATCH5 PATCH6 PATCH7 PATCH8 PATCH9 \
MYTOKEN_SSL MYTOKEN_ZIP MYTOKEN_NOSPOOF MYTOKEN_EXTCMODE MYTOKEN_JOINTHROTTLE \
MYTOKEN_NOFLDAWAY MYTOKEN_NEWCHF MYTOKEN_INET6;
#ifdef __GNUC__
#if defined(__GNUC_PATCHLEVEL__)
#define GCCVER ((__GNUC__ << 16) + (__GNUC_MINOR__ << 8) + __GNUC_PATCHLEVEL__)
#else
#define GCCVER ((__GNUC__ << 16) + (__GNUC_MINOR__ << 8))
#endif
#else
DLLFUNC char Mod_Version[] = BASE_VERSION PATCH1 PATCH2 PATCH3 PATCH4 PATCH5 PATCH6 PATCH7 PATCH8 PATCH9 \
#define GCCVER 0
#endif
#ifdef UNREALCORE
char our_mod_version[] = BASE_VERSION PATCH1 PATCH2 PATCH3 PATCH4 PATCH6 PATCH7 PATCH8 PATCH9 \
MYTOKEN_SSL MYTOKEN_ZIP MYTOKEN_NOSPOOF MYTOKEN_EXTCMODE MYTOKEN_JOINTHROTTLE \
MYTOKEN_NOFLDAWAY MYTOKEN_NEWCHF MYTOKEN_INET6;
unsigned int our_compiler_version = GCCVER;
#else
DLLFUNC char Mod_Version[] = BASE_VERSION PATCH1 PATCH2 PATCH3 PATCH4 PATCH6 PATCH7 PATCH8 PATCH9 \
MYTOKEN_SSL MYTOKEN_ZIP MYTOKEN_NOSPOOF MYTOKEN_EXTCMODE MYTOKEN_JOINTHROTTLE \
MYTOKEN_NOFLDAWAY MYTOKEN_NEWCHF MYTOKEN_INET6;
DLLFUNC unsigned int compiler_version = GCCVER;
#endif
-2
View File
@@ -303,8 +303,6 @@ extern int m_error();
extern int m_dns();
extern int m_info(), m_summon();
extern int m_users(), m_version();
extern int m_names();
extern int m_service();
extern int m_dalinfo();
extern int m_credits();
extern int m_license();
-388
View File
@@ -1,388 +0,0 @@
/*
* ++Copyright++ 1983, 1989, 1993
* -
* Copyright (c) 1983, 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS `AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* -
* Portions Copyright (c) 1993 by Digital Equipment Corporation.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies, and that
* the name of Digital Equipment Corporation not be used in advertising or
* publicity pertaining to distribution of the document or software without
* specific, written prior permission.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
* CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
* -
* Portions Copyright (c) 1995 by International Business Machines, Inc.
*
* International Business Machines, Inc. (hereinafter called IBM) grants
* permission under its copyrights to use, copy, modify, and distribute this
* Software with or without fee, provided that the above copyright notice and
* all paragraphs of this notice appear in all copies, and that the name of IBM
* not be used in connection with the marketing of any product incorporating
* the Software or modifications thereof, without specific, written prior
* permission.
*
* To the extent it has a right to do so, IBM grants an immunity from suit
* under its patents, if any, for the use, sale or manufacture of products to
* the extent that such products are used for performing Domain Name System
* dynamic updates in TCP/IP networks by means of the Software. No immunity is
* granted for any product per se or for any other function of any product.
*
* THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL,
* DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN
* IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES.
* --Copyright--
*/
/*
* @(#)nameser.h 8.1 (Berkeley) 6/2/93
* $NetBSD: nameser.h,v 1.14 2000/08/09 14:41:00 itojun Exp $
*/
#ifndef _ARPA_NAMESER_H_
#define _ARPA_NAMESER_H_
#ifdef PARAMH
#include <sys/param.h>
#endif
#ifdef _AUX_SOURCE
# include <sys/types.h>
#endif
/*
* revision information. this is the release date in YYYYMMDD format.
* it can change every day so the right thing to do with it is use it
* in preprocessor commands such as "#if (__BIND > 19931104)". do not
* compare for equality; rather, use it to determine whether your resolver
* is new enough to contain a certain feature.
*/
#define __BIND 19960801 /* interface version stamp */
/*
* Define constants based on rfc883
*/
#define PACKETSZ 512 /* maximum packet size */
#define MAXDNAME 1025 /* maximum presentation domain name */
#define MAXCDNAME 255 /* maximum compressed domain name */
#define MAXLABEL 63 /* maximum length of domain label */
#define HFIXEDSZ 12 /* #/bytes of fixed data in header */
#define QFIXEDSZ 4 /* #/bytes of fixed data in query */
#define RRFIXEDSZ 10 /* #/bytes of fixed data in r record */
#define INT32SZ 4 /* for systems without 32-bit ints */
#define INT16SZ 2 /* for systems without 16-bit ints */
#define INADDRSZ 4 /* IPv4 T_A */
#define IN6ADDRSZ 16 /* IPv6 T_AAAA */
/*
* Internet nameserver port number
*/
#define NAMESERVER_PORT 53
/*
* Currently defined opcodes
*/
#define QUERY 0x0 /* standard query */
#define IQUERY 0x1 /* inverse query */
#define STATUS 0x2 /* nameserver status query */
/*#define xxx 0x3*/ /* 0x3 reserved */
#define NS_NOTIFY_OP 0x4 /* notify secondary of SOA change */
/*
* Currently defined response codes
*/
#define NOERROR 0 /* no error */
#define FORMERR 1 /* format error */
#define SERVFAIL 2 /* server failure */
#define NXDOMAIN 3 /* non existent domain */
#define NOTIMP 4 /* not implemented */
#define REFUSED 5 /* query refused */
/*
* Type values for resources and queries
*/
#define T_A 1 /* host address */
#define T_NS 2 /* authoritative server */
#define T_MD 3 /* mail destination */
#define T_MF 4 /* mail forwarder */
#define T_CNAME 5 /* canonical name */
#define T_SOA 6 /* start of authority zone */
#define T_MB 7 /* mailbox domain name */
#define T_MG 8 /* mail group member */
#define T_MR 9 /* mail rename name */
#define T_NULL 10 /* null resource record */
#define T_WKS 11 /* well known service */
#define T_PTR 12 /* domain name pointer */
#define T_HINFO 13 /* host information */
#define T_MINFO 14 /* mailbox information */
#define T_MX 15 /* mail routing information */
#define T_TXT 16 /* text strings */
#define T_RP 17 /* responsible person */
#define T_AFSDB 18 /* AFS cell database */
#define T_X25 19 /* X_25 calling address */
#define T_ISDN 20 /* ISDN calling address */
#define T_RT 21 /* router */
#define T_NSAP 22 /* NSAP address */
#define T_NSAP_PTR 23 /* reverse NSAP lookup (deprecated) */
#define T_SIG 24 /* security signature */
#define T_KEY 25 /* security key */
#define T_PX 26 /* X.400 mail mapping */
#define T_GPOS 27 /* geographical position (withdrawn) */
#define T_AAAA 28 /* IP6 Address */
#define T_LOC 29 /* Location Information */
#define T_NXT 30 /* Next Valid Name in Zone */
#define T_EID 31 /* Endpoint identifier */
#define T_NIMLOC 32 /* Nimrod locator */
#define T_SRV 33 /* Server selection */
#define T_ATMA 34 /* ATM Address */
#define T_NAPTR 35 /* Naming Authority PoinTeR */
#define T_OPT 41 /* OPT pseudo-RR, RFC2761 */
/* non standard */
#define T_UINFO 100 /* user (finger) information */
#define T_UID 101 /* user ID */
#define T_GID 102 /* group ID */
#define T_UNSPEC 103 /* Unspecified format (binary data) */
/* Query type values which do not appear in resource records */
#define T_IXFR 251 /* incremental zone transfer */
#define T_AXFR 252 /* transfer zone of authority */
#define T_MAILB 253 /* transfer mailbox records */
#define T_MAILA 254 /* transfer mail agent records */
#define T_ANY 255 /* wildcard match */
/*
* Values for class field
*/
#define C_IN 1 /* the arpa internet */
#define C_CHAOS 3 /* for chaos net (MIT) */
#define C_HS 4 /* for Hesiod name server (MIT) (XXX) */
/* Query class values which do not appear in resource records */
#define C_ANY 255 /* wildcard match */
/*
* Flags field of the KEY RR rdata
*/
#define KEYFLAG_TYPEMASK 0xC000 /* Mask for "type" bits */
#define KEYFLAG_TYPE_AUTH_CONF 0x0000 /* Key usable for both */
#define KEYFLAG_TYPE_CONF_ONLY 0x8000 /* Key usable for confidentiality */
#define KEYFLAG_TYPE_AUTH_ONLY 0x4000 /* Key usable for authentication */
#define KEYFLAG_TYPE_NO_KEY 0xC000 /* No key usable for either; no key */
/* The type bits can also be interpreted independently, as single bits: */
#define KEYFLAG_NO_AUTH 0x8000 /* Key not usable for authentication */
#define KEYFLAG_NO_CONF 0x4000 /* Key not usable for confidentiality */
#define KEYFLAG_EXPERIMENTAL 0x2000 /* Security is *mandatory* if bit=0 */
#define KEYFLAG_RESERVED3 0x1000 /* reserved - must be zero */
#define KEYFLAG_RESERVED4 0x0800 /* reserved - must be zero */
#define KEYFLAG_USERACCOUNT 0x0400 /* key is assoc. with a user acct */
#define KEYFLAG_ENTITY 0x0200 /* key is assoc. with entity eg host */
#define KEYFLAG_ZONEKEY 0x0100 /* key is zone key for the zone named */
#define KEYFLAG_IPSEC 0x0080 /* key is for IPSEC use (host or user)*/
#define KEYFLAG_EMAIL 0x0040 /* key is for email (MIME security) */
#define KEYFLAG_RESERVED10 0x0020 /* reserved - must be zero */
#define KEYFLAG_RESERVED11 0x0010 /* reserved - must be zero */
#define KEYFLAG_SIGNATORYMASK 0x000F /* key can sign DNS RR's of same name */
#define KEYFLAG_RESERVED_BITMASK ( KEYFLAG_RESERVED3 | \
KEYFLAG_RESERVED4 | \
KEYFLAG_RESERVED10| KEYFLAG_RESERVED11)
/* The Algorithm field of the KEY and SIG RR's is an integer, {1..254} */
#define ALGORITHM_MD5RSA 1 /* MD5 with RSA */
#define ALGORITHM_EXPIRE_ONLY 253 /* No alg, no security */
#define ALGORITHM_PRIVATE_OID 254 /* Key begins with OID indicating alg */
/* Signatures */
/* Size of a mod or exp in bits */
#define MIN_MD5RSA_KEY_PART_BITS 512
#define MAX_MD5RSA_KEY_PART_BITS 2552
/* Total of binary mod and exp, bytes */
#define MAX_MD5RSA_KEY_BYTES ((MAX_MD5RSA_KEY_PART_BITS+7/8)*2+3)
/* Max length of text sig block */
#define MAX_KEY_BASE64 (((MAX_MD5RSA_KEY_BYTES+2)/3)*4)
/*
* Status return codes for T_UNSPEC conversion routines
*/
#define CONV_SUCCESS 0
#define CONV_OVERFLOW (-1)
#define CONV_BADFMT (-2)
#define CONV_BADCKSUM (-3)
#define CONV_BADBUFLEN (-4)
#ifndef BYTE_ORDER
#if (BSD >= 199103)
# include <machine/endian.h>
#else
#ifdef linux
# include <endian.h>
#else
#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax, pc) */
#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */
#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp)*/
#if defined(vax) || defined(ns32000) || defined(sun386) || defined(i386) || \
defined(MIPSEL) || defined(_MIPSEL) || defined(BIT_ZERO_ON_RIGHT) || \
defined(__alpha__) || defined(__alpha) || defined(__vax__) || defined(_WIN32)
#define BYTE_ORDER LITTLE_ENDIAN
#endif
#if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \
defined(is68k) || defined(tahoe) || defined(ibm032) || defined(ibm370) || \
defined(MIPSEB) || defined(_MIPSEB) || defined(_IBMR2) || defined(DGUX) ||\
defined(apollo) || defined(__convex__) || defined(_CRAY) || \
defined(__hppa) || defined(__hp9000) || \
defined(__hp9000s300) || defined(__hp9000s700) || \
defined (BIT_ZERO_ON_LEFT) || defined(m68k)
#define BYTE_ORDER BIG_ENDIAN
#endif
#endif /* linux */
#endif /* BSD */
#endif /* BYTE_ORDER */
#if !defined(BYTE_ORDER) || \
(BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN && \
BYTE_ORDER != PDP_ENDIAN)
/* you must determine what the correct bit order is for
* your compiler - the next line is an intentional error
* which will force your compiles to bomb until you fix
* the above macros.
*/
#error "Undefined or invalid BYTE_ORDER";
#endif
/*
* Structure for query header. The order of the fields is machine- and
* compiler-dependent, depending on the byte/bit order and the layout
* of bit fields. We use bit fields only in int variables, as this
* is all ANSI requires. This requires a somewhat confusing rearrangement.
*/
typedef struct {
unsigned id :16; /* query identification number */
#if BYTE_ORDER == BIG_ENDIAN
/* fields in third byte */
unsigned qr: 1; /* response flag */
unsigned opcode: 4; /* purpose of message */
unsigned aa: 1; /* authoritive answer */
unsigned tc: 1; /* truncated message */
unsigned rd: 1; /* recursion desired */
/* fields in fourth byte */
unsigned ra: 1; /* recursion available */
unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
unsigned ad: 1; /* authentic data from named */
unsigned cd: 1; /* checking disabled by resolver */
unsigned rcode :4; /* response code */
#endif
#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN
/* fields in third byte */
unsigned rd :1; /* recursion desired */
unsigned tc :1; /* truncated message */
unsigned aa :1; /* authoritive answer */
unsigned opcode :4; /* purpose of message */
unsigned qr :1; /* response flag */
/* fields in fourth byte */
unsigned rcode :4; /* response code */
unsigned cd: 1; /* checking disabled by resolver */
unsigned ad: 1; /* authentic data from named */
unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */
unsigned ra :1; /* recursion available */
#endif
/* remaining bytes */
unsigned qdcount :16; /* number of question entries */
unsigned ancount :16; /* number of answer entries */
unsigned nscount :16; /* number of authority entries */
unsigned arcount :16; /* number of resource entries */
} HEADER;
/*
* Defines for handling compressed domain names
*/
#define INDIR_MASK 0xc0
/*
* Inline versions of get/put short/long. Pointer is advanced.
*
* These macros demonstrate the property of C whereby it can be
* portable or it can be elegant but rarely both.
*/
#define GETSHORT(s, cp) { \
register const u_char *t_cp = (const u_char *)(cp); \
(s) = ((const u_int16_t)t_cp[0] << 8) \
| ((const u_int16_t)t_cp[1]) \
; \
(cp) += INT16SZ; \
}
#define GETLONG(l, cp) { \
register const u_char *t_cp = (const u_char *)(cp); \
(l) = ((const u_int32_t)t_cp[0] << 24) \
| ((const u_int32_t)t_cp[1] << 16) \
| ((const u_int32_t)t_cp[2] << 8) \
| ((const u_int32_t)t_cp[3]) \
; \
(cp) += INT32SZ; \
}
#define PUTSHORT(s, cp) { \
register u_int16_t t_s = (u_int16_t)(s); \
register u_char *t_cp = (u_char *)(cp); \
*t_cp++ = (u_int32_t)t_s >> 8; \
*t_cp = t_s; \
(cp) += INT16SZ; \
}
#define PUTLONG(l, cp) { \
register u_int32_t t_l = (u_int32_t)(l); \
register u_char *t_cp = (u_char *)(cp); \
*t_cp++ = t_l >> 24; \
*t_cp++ = t_l >> 16; \
*t_cp++ = t_l >> 8; \
*t_cp = t_l; \
(cp) += INT32SZ; \
}
#endif /* _ARPA_NAMESER_H_ */
+12
View File
@@ -336,6 +336,9 @@
* These are also in the range 600-799.
*/
#define RPL_REAWAY 597
#define RPL_GONEAWAY 598
#define RPL_NOTAWAY 599
#define RPL_LOGON 600
#define RPL_LOGOFF 601
#define RPL_WATCHOFF 602
@@ -344,6 +347,8 @@
#define RPL_NOWOFF 605
#define RPL_WATCHLIST 606
#define RPL_ENDOFWATCHLIST 607
#define RPL_CLEARWATCH 608
#define RPL_NOWISAWAY 609
#define RPL_DCCSTATUS 617
#define RPL_DCCLIST 618
@@ -354,8 +359,15 @@
#define RPL_DUMPRPL 641
#define RPL_EODUMP 642
#define RPL_SPAMCMDFWD 659
#define RPL_STARTTLS 670
#define RPL_WHOISSECURE 671
#define ERR_CANNOTDOCOMMAND 972
#define ERR_CANNOTCHANGECHANMODE 974
#define ERR_STARTTLS 691
#define ERR_NUMERICERR 999
+1 -2
View File
@@ -58,8 +58,7 @@ char *my_itoa(int i);
/* s_serv.c */
void load_tunefile(void);
extern EVENT(save_tunefile);
aMotd *read_rules(char *filename);
aMotd *read_motd(char *filename);
extern void read_motd(const char *filename, aMotdFile *motd);
/* s_user.c */
int check_for_target_limit(aClient *sptr, void *target, const char *name);
+1 -4
View File
@@ -1,9 +1,6 @@
/* OMG... OMG! WHAT AN INCLUDE HORROR !!! */
#undef strcasecmp
#undef strncasecmp
#ifdef WIN32
#include <win32/ares/setup.h>
#endif
#include <ares.h>
#include <ares_version.h>
#undef strcasecmp
@@ -77,6 +74,6 @@ struct _dnsstats {
extern ares_channel resolver_channel;
extern void init_resolver(void);
extern void init_resolver(int);
struct hostent *unrealdns_doclient(aClient *cptr);
+329 -206
View File
@@ -1,178 +1,107 @@
/* config.h.in. Generated automatically from configure.in by autoheader. */
/* include/setup.h.in. Generated from configure.ac by autoheader. */
/* Define if using alloca.c. */
#undef C_ALLOCA
/* Define if you have BSD signals */
#undef BSD_RELIABLE_SIGNALS
/* Define to empty if the keyword does not work. */
#undef const
/* Set to the bufferpool size you want */
#undef BUFFERPOOL
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
This function is required for alloca.c support on those systems. */
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c' support on those systems.
*/
#undef CRAY_STACKSEG_END
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
/* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
#undef HAVE_SYS_WAIT_H
/* The default permissions for configuration files. Set to 0 to prevent
unrealircd from calling chmod() on the files. */
#undef DEFAULT_PERMISSIONS
/* Define if you have the vprintf function. */
#undef HAVE_VPRINTF
/* Define to disable extended ban stacking (~q:~c:\#chan, etc) */
#undef DISABLE_STACKED_EXTBANS
/* Define as __inline if that's what the C compiler calls it. */
#undef inline
/* Define if you want to disable /set* and /chg* */
#undef DISABLE_USERMOD
/* Define if the `setpgrp' function takes no argument. */
#undef SETPGRP_VOID
/* Define if the setvbuf function takes the buffering type as its second
argument and the buffer pointer as the third, as on System V
before release 3. */
#undef SETVBUF_REVERSED
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown
*/
#undef STACK_DIRECTION
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Define if your <sys/time.h> declares struct tm. */
#undef TM_IN_SYS_TIME
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
/* Define if you do not have the index function. */
#undef NOINDEX
/* Define if you need the strtok function. */
#undef NEED_STRTOK
/* Define if you need the strtoken function. */
#undef NEED_STRTOKEN
/* Define if you have the times function. */
#undef HAVE_TIMES
/* Define if you have the <stddef.h> header file. */
#undef STDDEFH
/* Define if you have the <stdlib.h> header file. */
#undef STDLIBH
/* Define if you have the <string.h> header file. */
#undef STRINGH
/* Define if you have the <strings.h> header file. */
#undef STRINGSH
/* Define if you have the <sys/param.h> header file. */
#undef PARAMH
/* Define if you have the <sys/rusage.h> header file. */
#undef HAVE_SYS_RUSAGE_H
/* Define if you have the <sys/syslog.h> header file. */
#undef SYSSYSLOGH
/* Define if you have the <unistd.h> header file. */
#undef UNISTDH
/* Define to <malloc.h> you need malloc.h. */
#undef MALLOCH
/* Define if you have the <sys/rusage.h> header file. */
#undef RUSAGEH
/* Define if you have the <glob.h> header file. */
#undef GLOBH
/* Define if you have regex */
#undef HAVE_REGEX
/* Define if you don't have bcopy */
#undef NEED_BCOPY
/* Define if you don't have bcmp */
#undef NEED_BCMP
/* Define if you need bzero */
#undef NEED_BZERO
/* Define if you have syslog */
#undef HAVE_SYSLOG
/* Define if you have vsyslog */
#undef HAVE_VSYSLOG
/* Define if you want to allow SSL connections */
#undef USE_SSL
/* Define the location of the configuration files */
#undef DPATH
/* Define if you can set the core size to unlimited */
#undef FORCE_CORE
/* Define if you have strcasecmp */
#undef GOT_STRCASECMP
/* Define if you need inet_addr */
#undef NEED_INET_ADDR
/* Define if you need inet_ntoa */
#undef NEED_INET_NTOA
/* Define if you need inet_netof */
#undef NEED_INET_NETOF
/* Define if you have getrusage */
#undef GETRUSAGE_2
/* Define if you have gettimeofday */
#undef GETTIMEOFDAY
/* Define if you have lrand48 */
#undef LRAND48
/* Define if you have the <glob.h> header file. */
#undef GLOBH
/* Define if you have getrusage */
#undef GETRUSAGE_2
/* Define if you have strcasecmp */
#undef GOT_STRCASECMP
/* Define if you have times */
#undef TIMES_2
/* Define to 1 if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA
/* Define if you have O_NONBLOCK */
#undef NBLOCK_POSIX
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
#undef HAVE_ALLOCA_H
/* Define if you have O_NDELAY */
#undef NBLOCK_BSD
/* Define to 1 if you have the `bcmp' function. */
#undef HAVE_BCMP
/* Define if you have FIONBIO */
#undef NBLOCK_SYSV
/* Define to 1 if you have the `bcopy' function. */
#undef HAVE_BCOPY
/* Define if you have POSIX signals */
#undef POSIX_SIGNALS
/* Define to 1 if you have the `bzero' function. */
#undef HAVE_BZERO
/* Define if you have BSD signals */
#undef RELIABLE_BSD_SIGNALS
/* Define if you have a compiler with C99 variable length array support */
#undef HAVE_C99_VARLEN_ARRAY
/* Define if you have SYSV signals */
#undef UNRELIABLE_SYSV_SIGNALS
/* Define if you have crypt */
#undef HAVE_CRYPT
/* Define these to be unsigned integral internal types,
* of respecitvely 2 and 4 bytes in size, when not already
* defined in <sys/types.h>, <stdlib.h> or <stddef.h> */
#undef u_int16_t
#undef u_int32_t
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
#undef HAVE_DOPRNT
/* Define if you have setproctitle */
#undef HAVE_SETPROCTITLE
/* Define to 1 if you have the `getrusage' function. */
#undef HAVE_GETRUSAGE
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
/* Define to 1 if you have the `index' function. */
#undef HAVE_INDEX
/* Define to 1 if you have the `inet_addr' function. */
#undef HAVE_INET_ADDR
/* Define to 1 if you have the `inet_netof' function. */
#undef HAVE_INET_NETOF
/* Define to 1 if you have the `inet_ntoa' function. */
#undef HAVE_INET_NTOA
/* Define to 1 if you have the `inet_ntop' function. */
#undef HAVE_INET_NTOP
/* Define to 1 if you have the `inet_pton' function. */
#undef HAVE_INET_PTON
/* Define to 1 if the system has the type `intptr_t'. */
#undef HAVE_INTPTR_T
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the `lrand48' function. */
#undef HAVE_LRAND48
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define if you have PS_STRINGS */
#undef HAVE_PSSTRINGS
@@ -180,59 +109,143 @@
/* Define if you have pstat */
#undef HAVE_PSTAT
/* Define if you have crypt */
#undef HAVE_CRYPT
/* Define if you have setproctitle */
#undef HAVE_SETPROCTITLE
/* Local hostname of the server */
#undef DOMAINNAME
/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF
/* The OS name and version of the server */
#undef MYOSNAME
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* The default permissions for configuration files */
#undef DEFAULT_PERMISSIONS
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define if you want spoof protection */
#undef NOSPOOF
/* Define to 1 if you have the `strcasecmp' function. */
#undef HAVE_STRCASECMP
/* Define if you want +a/+q prefixes */
#undef PREFIX_AQ
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
/* Define if you want to compile as a hub */
#undef HUB
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define the location of the configuration files */
#undef DPATH
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define the location of the executable */
#undef SPATH
/* Define to 1 if you have the `strlcat' function. */
#undef HAVE_STRLCAT
/* Set to the listen backlog size you want */
#undef LISTEN_SIZE
/* Define to 1 if you have the `strlcpy' function. */
#undef HAVE_STRLCPY
/* Set to the max sendq you want */
#undef MAXSENDQLENGTH
/* Define to 1 if you have the `strlncat' function. */
#undef HAVE_STRLNCAT
/* Set to the nickname history length you want */
#undef NICKNAMEHISTORYLENGTH
/* Define to 1 if you have the `strtok' function. */
#undef HAVE_STRTOK
/* Set to the bufferpool size you want */
#undef BUFFERPOOL
/* Define to 1 if you have the `strtoken' function. */
#undef HAVE_STRTOKEN
/* Set to the max connections you want */
#undef MAXCONNECTIONS
/* Define to 1 if you have the `strtoul' function. */
#undef HAVE_STRTOUL
/* Define to 1 if you have the `syslog' function. */
#undef HAVE_SYSLOG
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the `times' function. */
#undef HAVE_TIMES
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if you have the `vprintf' function. */
#undef HAVE_VPRINTF
/* Define to 1 if you have the `vsnprintf' function. */
#undef HAVE_VSNPRINTF
/* Define to 1 if you have the `vsyslog' function. */
#undef HAVE_VSYSLOG
/* Define if you want IPv6 enabled */
#undef INET6
/* Set to the listen backlog size you want */
#undef LISTEN_SIZE
/* Define if you want modes shown in /list */
#undef LIST_SHOW_MODES
/* Define if you want nick!user@host shown for the topic setter */
#undef TOPIC_NICK_IS_NUHOST
/* Define if rlim_t is long long */
#undef LONG_LONG_RLIM_T
/* Define if you want users to be notified when their shun is removed */
#undef SHUN_NOTICES
/* Define if you have lrand48 */
#undef LRADN48
/* Define to <malloc.h> you need malloc.h. */
#undef MALLOCH
/* Set to the max connections you want */
#undef MAXCONNECTIONS
/* Set to the max sendq you want */
#undef MAXSENDQLENGTH
/* Define if you have O_NDELAY */
#undef NBLOCK_BSD
/* Define if you have O_NONBLOCK */
#undef NBLOCK_POSIX
/* Define if you have FIONBIO */
#undef NBLOCK_SYSV
/* Define if you don't have bcmp */
#undef NEED_BCMP
/* Define if you don't have bcopy */
#undef NEED_BCOPY
/* Define if you need bzero */
#undef NEED_BZERO
/* Define if you need inet_addr */
#undef NEED_INET_ADDR
/* Define if you need inet_netof */
#undef NEED_INET_NETOF
/* Define if you need inet_ntoa */
#undef NEED_INET_NTOA
/* Define if you need the strerror function. */
#undef NEED_STRERROR
/* Define if you need the strtok function. */
#undef NEED_STRTOK
/* Define if you need the strtoken function. */
#undef NEED_STRTOKEN
/* Set to the nickname history length you want */
#undef NICKNAMEHISTORYLENGTH
/* Define if you do not have the index function. */
#undef NOINDEX
/* Define if you want spoof protection */
#undef NOSPOOF
/* Define to 1 if your system has no in6addr_any. */
#undef NO_IN6ADDR_ANY
/* Define if you want OperOverride disabled */
#undef NO_OPEROVERRIDE
@@ -240,44 +253,154 @@
/* Define if you want opers to have to use /invite to join +s/+p channels */
#undef OPEROVERRIDE_VERIFY
/* Define if you want to disable /set* and /chg* */
#undef DISABLE_USERMOD
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define if you have the <sys/param.h> header file. */
#undef PARAMH
/* Define if you have POSIX signals */
#undef POSIX_SIGNALS
/* Define if you want +a/+q prefixes */
#undef PREFIX_AQ
/* Define if you have the <sys/rusage.h> header file. */
#undef RUSAGEH
/* Define to 1 if the `setpgrp' function takes no argument. */
#undef SETPGRP_VOID
/* Define if you want users to be notified when their shun is removed */
#undef SHUN_NOTICES
/* The size of `int', as computed by sizeof. */
#undef SIZEOF_INT
/* The size of `long', as computed by sizeof. */
#undef SIZEOF_LONG
/* The size of `rlim_t', as computed by sizeof. */
#undef SIZEOF_RLIM_T
/* The size of `short', as computed by sizeof. */
#undef SIZEOF_SHORT
/* Define the location of the executable */
#undef SPATH
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at runtime.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION
/* Link... statically(?) (defining this macro will probably cause the build
tofail) */
#undef STATIC_LINKING
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define if you have the <stddef.h> header file. */
#undef STDDEFH
/* Define if you have the <stdlib.h> header file. */
#undef STDLIBH
/* Define if you have the <string.h> header file. */
#undef STRINGH
/* Define if you have the <strings.h> header file. */
#undef STRINGSH
/* Define if you have the <sys/syslog.h> header file. */
#undef SYSSYSLOGH
/* Define if you have SYSV signals */
#undef SYSV_UNRELIABLE_SIGNALS
/* Define if you have times */
#undef TIMES_2
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
#undef TM_IN_SYS_TIME
/* Define if you want nick!user@host shown for the topic setter */
#undef TOPIC_NICK_IS_NUHOST
/* Define if your system prepends an underscore to symbols */
#undef UNDERSCORE
/* Define if rlim_t is long long */
#undef LONG_LONG_RLIM_T
/* Define if you have the <unistd.h> header file. */
#undef UNISTDH
/* Define if you have snprintf */
#undef HAVE_SNPRINTF
/* Define if you have libcurl installed to get remote includes and MOTD
support */
#undef USE_LIBCURL
/* Define if you have vsnprintf */
#undef HAVE_VSNPRINTF
/* Define if you want to allow SSL connections */
#undef USE_SSL
/* Define if you have strlcpy */
#undef HAVE_STRLCPY
/* Define if you have zlib and want zip links support. */
#undef ZIP_LINKS
/* Define if you have strlcat */
#undef HAVE_STRLCAT
/* Define if you are compiling unrealircd on Sun's (or Oracle's?) Solaris */
#undef _SOLARIS
/* Define if you have strlncat */
#undef HAVE_STRLNCAT
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define if you have inet_pton */
#undef HAVE_INET_PTON
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
/* Define if you have inet_ntop */
#undef HAVE_INET_NTOP
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
#undef inline
#endif
/* Define if you have a compiler with C99 variable length array support */
#undef HAVE_C99_VARLEN_ARRAY
/* Define to `short' if <sys/types.h> does not define. */
#undef int16_t
/* Define if you have alloca.h */
#undef HAVE_ALLOCA_H
/* Define to `long' if <sys/types.h> does not define. */
#undef int32_t
/* Define if you have alloca */
#undef HAVE_ALLOCA
/* Define to the type of a signed integer type wide enough to hold a pointer,
if such a type exists, and if the system does not define it. */
#undef intptr_t
/* Define to 1 if your system has no in6addr_any. */
#undef NO_IN6ADDR_ANY
/* Define to `int' if <sys/types.h> does not define. */
#undef mode_t
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t
/* Define to `unsigned short' if <sys/types.h> does not define. */
#undef u_int16_t
/* Define to `unsigned long' if <sys/types.h> does not define. */
#undef u_int32_t
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
+144 -29
View File
@@ -24,6 +24,7 @@
#define __struct_include__
#include "config.h"
#include "sys.h"
/* need to include ssl stuff here coz otherwise you get
* conflicting types with isalnum/isalpha/etc @ redhat. -- Syzop
*/
@@ -64,17 +65,10 @@
#include "zip.h"
#endif
#include "auth.h"
#ifndef _WIN32
#include "tre/regex.h"
#else
#include "win32/regex.h"
#endif
#include "channel.h"
#if defined(_WIN32) && !defined(NOSPOOF)
#error "Compiling win32 without nospoof is VERY insecure and NOT supported"
#endif
extern MODVAR int sendanyways;
@@ -94,6 +88,7 @@ typedef struct _configflag_ban ConfigFlag_ban;
typedef struct _configflag_tld ConfigFlag_tld;
typedef struct _configitem ConfigItem;
typedef struct _configitem_me ConfigItem_me;
typedef struct _configitem_files ConfigItem_files;
typedef struct _configitem_admin ConfigItem_admin;
typedef struct _configitem_class ConfigItem_class;
typedef struct _configitem_oper ConfigItem_oper;
@@ -109,6 +104,7 @@ typedef struct _configitem_allow_dcc ConfigItem_allow_dcc;
typedef struct _configitem_vhost ConfigItem_vhost;
typedef struct _configitem_except ConfigItem_except;
typedef struct _configitem_link ConfigItem_link;
typedef struct _configitem_cgiirc ConfigItem_cgiirc;
typedef struct _configitem_ban ConfigItem_ban;
typedef struct _configitem_badword ConfigItem_badword;
typedef struct _configitem_deny_dcc ConfigItem_deny_dcc;
@@ -141,7 +137,12 @@ typedef struct SChanFloodProt ChanFloodProt;
typedef struct SRemoveFld RemoveFld;
typedef struct ListOptions LOpts;
typedef struct FloodOpt aFloodOpt;
typedef struct MotdItem aMotd;
typedef struct Motd aMotdFile; /* represents a whole MOTD, including remote MOTD support info */
typedef struct MotdItem aMotdLine; /* one line of a MOTD stored as a linked list */
#ifdef USE_LIBCURL
typedef struct MotdDownload aMotdDownload; /* used to coordinate download of a remote MOTD */
#endif
typedef struct trecord aTrecord;
typedef struct Command aCommand;
typedef struct _cmdoverride Cmdoverride;
@@ -149,6 +150,7 @@ typedef struct SMember Member;
typedef struct SMembership Membership;
typedef struct SMembershipL MembershipL;
typedef struct JFlood aJFlood;
typedef struct PendingNet aPendingNet;
#ifdef ZIP_LINKS
typedef struct Zdata aZdata;
@@ -171,14 +173,12 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define REALLEN 50
#define TOPICLEN 307
#define CHANNELLEN 32
#define PASSWDLEN 32 /* orig. 20, changed to 32 for nickpasswords */
#define PASSWDLEN 48 /* was 20, then 32, now 48. */
#define KEYLEN 23
#define LINKLEN 32
#define BUFSIZE 512 /* WARNING: *DONT* CHANGE THIS!!!! */
#define MAXRECIPIENTS 20
#define MAXKILLS 20
#define MAXBANS 60
#define MAXBANLENGTH 1024
#define MAXSILELENGTH NICKLEN+USERLEN+HOSTLEN+10
#define UMODETABLESZ (sizeof(long) * 8)
/*
@@ -232,6 +232,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define STAT_LOG -7 /* logfile for -x */
#define STAT_CONNECTING -6
#define STAT_SSL_STARTTLS_HANDSHAKE -8
#define STAT_SSL_CONNECT_HANDSHAKE -5
#define STAT_SSL_ACCEPT_HANDSHAKE -4
#define STAT_HANDSHAKE -3
@@ -254,9 +255,11 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define IsLog(x) ((x)->status == STAT_LOG)
#ifdef USE_SSL
#define IsSSLStartTLSHandshake(x) ((x)->status == STAT_SSL_STARTTLS_HANDSHAKE)
#define IsSSLAcceptHandshake(x) ((x)->status == STAT_SSL_ACCEPT_HANDSHAKE)
#define IsSSLConnectHandshake(x) ((x)->status == STAT_SSL_CONNECT_HANDSHAKE)
#define IsSSLHandshake(x) (IsSSLAcceptHandshake(x) || IsSSLConnectHandshake(x))
#define IsSSLHandshake(x) (IsSSLAcceptHandshake(x) || IsSSLConnectHandshake(x) | IsSSLStartTLSHandshake(x))
#define SetSSLStartTLSHandshake(x) ((x)->status = STAT_SSL_STARTTLS_HANDSHAKE)
#define SetSSLAcceptHandshake(x) ((x)->status = STAT_SSL_ACCEPT_HANDSHAKE)
#define SetSSLConnectHandshake(x) ((x)->status = STAT_SSL_CONNECT_HANDSHAKE)
#endif
@@ -270,6 +273,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define SetLog(x) ((x)->status = STAT_LOG)
#define IsSynched(x) (x->serv->flags.synced)
#define IsServerSent(x) (x->serv && x->serv->flags.server_sent)
/* opt.. */
#define OPT_SJOIN 0x0001
@@ -290,6 +294,8 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define OPT_NOT_TKLEXT 0x8000
#define OPT_NICKIP 0x10000
#define OPT_NOT_NICKIP 0x20000
#define OPT_CLK 0x10000
#define OPT_NOT_CLK 0x20000
/* client->flags (32 bits): 28 used, 4 free */
#define FLAGS_PINGSENT 0x0001 /* Unreplied ping sent */
@@ -307,12 +313,12 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define FLAGS_GOTID 0x1000 /* successful ident lookup achieved */
#define FLAGS_DOID 0x2000 /* I-lines say must use ident return */
#define FLAGS_NONL 0x4000 /* No \n in buffer */
#define FLAGS_TS8 0x8000 /* Why do you want to know? */
#define FLAGS_CGIIRC 0x8000 /* CGI IRC host: flag set = ip/host data has been filled in already */
#define FLAGS_ULINE 0x10000 /* User/server is considered U-lined */
#define FLAGS_SQUIT 0x20000 /* Server has been /squit by an oper */
#define FLAGS_PROTOCTL 0x40000 /* Received a PROTOCTL message */
#define FLAGS_PING 0x80000
#define FLAGS_ASKEDPING 0x100000
#define FLAGS_EAUTH 0x100000
#define FLAGS_NETINFO 0x200000
#define FLAGS_HYBNOTICE 0x400000
#define FLAGS_QUARANTINE 0x800000
@@ -325,7 +331,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#ifdef USE_SSL
#define FLAGS_SSL 0x10000000
#endif
#define FLAGS_UNOCCUP4 0x20000000 /* [FREE] */
#define FLAGS_NOFAKELAG 0x20000000 /* Exception from fake lag */
#define FLAGS_DCCBLOCK 0x40000000 /* Block all DCC send requests */
#define FLAGS_MAP 0x80000000 /* Show this entry in /map */
/* Dec 26th, 1997 - added flags2 when I ran out of room in flags -DuffJ */
@@ -358,8 +364,9 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define PROTO_SJB64 0x0800
#define PROTO_TKLEXT 0x1000 /* TKL extension: 10 parameters instead of 8 (3.2RC2) */
#define PROTO_NICKIP 0x2000 /* Send IP addresses in the NICK command */
/* note: client->proto is currently a 'short' (max is 0x8000) */
#define PROTO_NAMESX 0x4000 /* Send all rights in NAMES output */
#define PROTO_CLK 0x8000 /* Send cloaked host in the NICK command (regardless of +x/-x) */
#define PROTO_UHNAMES 0x10000 /* Send n!u@h in NAMES */
/*
* flags macros.
@@ -405,14 +412,15 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define IsOutgoing(x) ((x)->flags & FLAGS_OUTGOING)
#define GotNetInfo(x) ((x)->flags & FLAGS_NETINFO)
#define SetNetInfo(x) ((x)->flags |= FLAGS_NETINFO)
#define IsCGIIRC(x) ((x)->flags & FLAGS_CGIIRC)
#define SetEAuth(x) ((x)->flags |= FLAGS_EAUTH)
#define IsEAuth(x) ((x)->flags & FLAGS_EAUTH)
#define IsShunned(x) ((x)->flags & FLAGS_SHUNNED)
#define SetShunned(x) ((x)->flags |= FLAGS_SHUNNED)
#define ClearShunned(x) ((x)->flags &= ~FLAGS_SHUNNED)
#define IsVirus(x) ((x)->flags & FLAGS_VIRUS)
#define SetVirus(x) ((x)->flags |= FLAGS_VIRUS)
#define ClearVirus(x) ((x)->flags |= FLAGS_VIRUS)
#define ClearVirus(x) ((x)->flags &= ~FLAGS_VIRUS)
#ifdef USE_SSL
#define IsSecure(x) ((x)->flags & FLAGS_SSL)
#else
@@ -427,10 +435,16 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define IsZipStart(x) (0)
#endif
/* Fake lag exception */
#define IsNoFakeLag(x) ((x)->flags & FLAGS_NOFAKELAG)
#define SetNoFakeLag(x) ((x)->flags |= FLAGS_NOFAKELAG)
#define ClearNoFakeLag(x) ((x)->flags &= ~FLAGS_NOFAKELAG)
#define IsHybNotice(x) ((x)->flags & FLAGS_HYBNOTICE)
#define SetHybNotice(x) ((x)->flags |= FLAGS_HYBNOTICE)
#define ClearHybNotice(x) ((x)->flags &= ~FLAGS_HYBNOTICE)
#define IsHidden(x) ((x)->umodes & UMODE_HIDE)
#define IsSetHost(x) ((x)->umodes & UMODE_SETHOST)
#define IsHideOper(x) ((x)->umodes & UMODE_HIDEOPER)
#ifdef USE_SSL
#define IsSSL(x) IsSecure(x)
@@ -462,6 +476,7 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define SetAccess(x) ((x)->flags |= FLAGS_CHKACCESS); Debug((DEBUG_DEBUG, "SetAccess(%s)", (x)->name))
#define SetBlocked(x) ((x)->flags |= FLAGS_BLOCKED)
#define SetOutgoing(x) do { x->flags |= FLAGS_OUTGOING; } while(0)
#define SetCGIIRC(x) do { x->flags |= FLAGS_CGIIRC; } while(0)
#define DoingAuth(x) ((x)->flags & FLAGS_AUTH)
#define NoNewLine(x) ((x)->flags & FLAGS_NONL)
#define IsDCCNotice(x) ((x)->flags & FLAGS_DCCNOTICE)
@@ -517,6 +532,9 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define SupportSJ3(x) (CHECKPROTO(x, PROTO_SJ3))
#define SupportVHP(x) (CHECKPROTO(x, PROTO_VHP))
#define SupportTKLEXT(x) (CHECKPROTO(x, PROTO_TKLEXT))
#define SupportNAMESX(x) (CHECKPROTO(x, PROTO_NAMESX))
#define SupportCLK(x) (CHECKPROTO(x, PROTO_CLK))
#define SupportUHNAMES(x) (CHECKPROTO(x, PROTO_UHNAMES))
#define SetSJOIN(x) ((x)->proto |= PROTO_SJOIN)
#define SetNoQuit(x) ((x)->proto |= PROTO_NOQUIT)
@@ -529,6 +547,9 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define SetSJ3(x) ((x)->proto |= PROTO_SJ3)
#define SetVHP(x) ((x)->proto |= PROTO_VHP)
#define SetTKLEXT(x) ((x)->proto |= PROTO_TKLEXT)
#define SetNAMESX(x) ((x)->proto |= PROTO_NAMESX)
#define SetCLK(x) ((x)->proto |= PROTO_CLK)
#define SetUHNAMES(x) ((x)->proto |= PROTO_UHNAMES)
#define ClearSJOIN(x) ((x)->proto &= ~PROTO_SJOIN)
#define ClearNoQuit(x) ((x)->proto &= ~PROTO_NOQUIT)
@@ -606,6 +627,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)
@@ -693,6 +719,46 @@ struct FloodOpt {
TS firstmsg;
};
#ifdef USE_LIBCURL
struct Motd;
struct MotdDownload
{
struct Motd *themotd;
};
#endif /* USE_LIBCURL */
struct Motd
{
struct MotdItem *lines;
struct tm last_modified; /* store the last modification time */
#ifdef USE_LIBCURL
/*
This pointer is used to communicate with an asynchronous MOTD
download. The problem is that a download may take 10 seconds or
more to complete and, in that time, the IRCd could be rehashed.
This would mean that TLD blocks are reallocated and thus the
aMotd structs would be free()d in the meantime.
To prevent such a situation from leading to a segfault, we
introduce this remote control pointer. It works like this:
1. read_motd() is called with a URL. A new MotdDownload is
allocated and the pointer is placed here. This pointer is
also passed to the asynchrnous download handler.
2.a. The download is completed and read_motd_asynch_downloaded()
is called with the same pointer. From this function, this pointer
if free()d. No other code may free() the pointer. Not even free_motd().
OR
2.b. The user rehashes the IRCd before the download is completed.
free_motd() is called, which sets motd_download->themotd to NULL
to signal to read_motd_asynch_downloaded() that it should ignore
the download. read_motd_asynch_downloaded() is eventually called
and frees motd_download.
*/
struct MotdDownload *motd_download;
#endif /* USE_LIBCURL */
};
struct MotdItem {
char *line;
struct MotdItem *next;
@@ -741,6 +807,7 @@ struct User {
unsigned short joined; /* number of channels joined */
char username[USERLEN + 1];
char realhost[HOSTLEN + 1];
char cloakedhost[HOSTLEN + 1]; /* cloaked host (masked host for caching). NOT NECESSARILY THE SAME AS virthost. */
char *virthost;
char *server;
char *swhois; /* special whois thing */
@@ -763,6 +830,7 @@ struct User {
#ifdef JOINTHROTTLE
aJFlood *jflood;
#endif
TS lastaway;
};
struct Server {
@@ -779,6 +847,7 @@ struct Server {
#endif
struct {
unsigned synced:1; /* Server linked? (3.2beta18+) */
unsigned server_sent:1; /* SERVER message sent to this link? (for outgoing links) */
} flags;
};
@@ -818,6 +887,9 @@ struct Server {
#define SPAMF_AWAY 0x0100 /* a */
#define SPAMF_TOPIC 0x0200 /* t */
/* Other flags only for function calls: */
#define SPAMFLAG_NOWARN 0x0001
struct _spamfilter {
unsigned short action; /* see BAN_ACT* */
regex_t expr;
@@ -897,6 +969,8 @@ typedef struct {
#define LISTENER_SSL 0x000040
#define LISTENER_BOUND 0x000080
#define IsServersOnlyListener(x) ((x) && ((x)->umodes & LISTENER_SERVERSONLY))
#define CONNECT_SSL 0x000001
#define CONNECT_ZIP 0x000002
#define CONNECT_AUTO 0x000004
@@ -907,6 +981,8 @@ typedef struct {
#define SSLFLAG_FAILIFNOCERT 0x1
#define SSLFLAG_VERIFYCERT 0x2
#define SSLFLAG_DONOTACCEPTSELFSIGNED 0x4
#define SSLFLAG_NOSTARTTLS 0x8
struct Client {
struct Client *next, *prev, *hnext;
anUser *user; /* ...defined, if this is a User */
@@ -947,7 +1023,7 @@ struct Client {
#ifdef NOSPOOF
u_int32_t nospoof; /* Anti-spoofing random number */
#endif
short proto; /* ProtoCtl options */
int proto; /* ProtoCtl options */
long sendM; /* Statistics: protocol messages send */
long sendK; /* Statistics: total k-bytes send */
long receiveM; /* Statistics: protocol messages received */
@@ -1063,6 +1139,7 @@ struct _configflag_tld
#define BAN_ACT_BLOCK 8
#define BAN_ACT_DCCBLOCK 9
#define BAN_ACT_VIRUSCHAN 10
#define BAN_ACT_WARN 11
#define CRULE_ALL 0
@@ -1083,6 +1160,12 @@ struct _configitem_me {
unsigned short numeric;
};
struct _configitem_files {
char *motd_file, *rules_file, *smotd_file;
char *botmotd_file, *opermotd_file, *svsmotd_file;
char *pid_file, *tune_file;
};
struct _configitem_admin {
ConfigItem *prev, *next;
ConfigFlag flag;
@@ -1119,6 +1202,9 @@ struct _configitem_allow {
ConfigItem_class *class;
struct irc_netmask *netmask;
ConfigFlag_allow flags;
#ifdef INET6
unsigned short ipv6_clone_mask;
#endif /* INET6 */
};
struct _configitem_oper {
@@ -1137,6 +1223,7 @@ struct _configitem_oper_from {
ConfigItem *prev, *next;
ConfigFlag flag;
char *name;
struct irc_netmask *netmask;
};
struct _configitem_drpass {
@@ -1156,10 +1243,10 @@ struct _configitem_ulines {
struct _configitem_tld {
ConfigItem *prev, *next;
ConfigFlag_tld flag;
char *mask, *motd_file, *rules_file, *smotd_file;
char *botmotd_file, *opermotd_file, *channel;
struct tm motd_tm, smotd_tm;
aMotd *rules, *motd, *smotd, *botmotd, *opermotd;
char *mask, *channel;
char *motd_file, *rules_file, *smotd_file;
char *botmotd_file, *opermotd_file;
aMotdFile rules, motd, smotd, botmotd, opermotd;
u_short options;
};
@@ -1201,6 +1288,19 @@ struct _configitem_link {
#endif
};
typedef enum {
CGIIRC_PASS=1, CGIIRC_WEBIRC=2
} CGIIRCType;
struct _configitem_cgiirc {
ConfigItem *prev, *next;
ConfigFlag flag;
CGIIRCType type;
char *username;
char *hostname;
anAuthStruct *auth;
};
struct _configitem_except {
ConfigItem *prev, *next;
ConfigFlag_except flag;
@@ -1217,6 +1317,13 @@ struct _configitem_ban {
unsigned short action;
};
typedef struct _iplist IPList;
struct _iplist {
IPList *prev, *next;
char *mask;
/* struct irc_netmask *netmask; */
};
#ifdef FAST_BADWORD_REPLACE
#define BADW_TYPE_INVALID 0x0
#define BADW_TYPE_FAST 0x1
@@ -1301,7 +1408,7 @@ struct _configitem_unknown_ext {
typedef enum {
ALIAS_SERVICES=1, ALIAS_STATS, ALIAS_NORMAL, ALIAS_COMMAND, ALIAS_CHANNEL
ALIAS_SERVICES=1, ALIAS_STATS, ALIAS_NORMAL, ALIAS_COMMAND, ALIAS_CHANNEL, ALIAS_REAL
} AliasType;
struct _configitem_alias {
@@ -1310,6 +1417,7 @@ struct _configitem_alias {
ConfigItem_alias_format *format;
char *alias, *nick;
AliasType type;
unsigned int spamfilter:1;
};
struct _configitem_alias_format {
@@ -1340,7 +1448,7 @@ struct _configitem_help {
ConfigItem *prev, *next;
ConfigFlag flag;
char *command;
aMotd *text;
aMotdLine *text;
};
struct _configitem_offchans {
@@ -1652,7 +1760,7 @@ struct liststruct {
*/
#define MyConnect(x) ((x)->fd != -256)
#define MyClient(x) (MyConnect(x) && IsClient(x))
#define MyOper(x) (MyConnect(x) && IsOper(x))
#define MyOper(x) (MyConnect(x) && IsAnOper(x))
#ifdef CLEAN_COMPILE
#define TStime() (time(NULL) + TSoffset)
@@ -1699,7 +1807,7 @@ struct liststruct {
/* misc variable externs */
extern MODVAR char *version, *infotext[], *dalinfotext[], *unrealcredits[];
extern MODVAR char *version, *infotext[], *dalinfotext[], *unrealcredits[], *unrealinfo[];
extern MODVAR char *generation, *creation;
extern MODVAR char *gnulicense[];
/* misc defines */
@@ -1793,6 +1901,13 @@ struct JFlood {
};
#endif
struct PendingNet {
aPendingNet *prev, *next; /* Previous and next in list */
aClient *sptr; /**< Client to which these servers belong */
int numservers; /**< Amount of servers in list */
int servers[1]; /** The list of servers (array of integer server numerics) */
};
void init_throttling_hash();
int hash_throttling(struct IN_ADDR *in);
struct ThrottlingBucket *find_throttling_bucket(struct IN_ADDR *in);
+25 -7
View File
@@ -22,6 +22,9 @@
#ifndef __sys_include__
#define __sys_include__
/* PATH_MAX */
#include <limits.h>
/* alloca stuff */
#ifdef _WIN32
# include <malloc.h>
@@ -43,11 +46,7 @@
#ifdef ISC202
#include <net/errno.h>
#else
# ifndef _WIN32
#include <sys/errno.h>
# else
#include <errno.h>
# endif
#endif
#include "setup.h"
#include <stdio.h>
@@ -71,18 +70,28 @@
# include <string.h>
# endif
#endif
/* get intptr_t if the system provides it -- otherwise, ./configure will define it for us */
#ifdef HAVE_STDINT_H
#include <stdint.h>
#else
#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#endif /* HAVE_INTTYPES_H */
#endif /* HAVE_STDINT_H */
#ifdef SSL
#include <openssl/ssl.h>
#endif
#ifdef INET6
#ifndef _WIN32
#include <netinet/in.h>
#include <sys/socket.h>
#else
#endif
#ifdef _WIN32
#define _WIN32_WINNT 0x0501
#include <winsock2.h>
#include <ws2tcpip.h>
#endif
#endif
#ifndef GOT_STRCASECMP
#define strcasecmp mycmp
#define strncasecmp myncmp
@@ -132,6 +141,13 @@ extern char *rindex(char *, char);
#define dn_skipname __dn_skipname
#endif
/*
* Mac OS X Tiger Support (Intel Only)
*/
#if defined(macosx) || (defined(__APPLE__) && defined(__MACH__))
#define OSXTIGER
#endif
#ifndef _WIN32
extern VOIDSIG dummy();
#endif
@@ -147,6 +163,8 @@ typedef unsigned int u_int;
#define MYOSNAME OSName
extern char OSName[256];
#define PATH_MAX MAX_PATH
#else
#define MYOSNAME getosname()
#endif
#ifdef DEBUGMODE
// #define ircsprintf sprintf
+4 -4
View File
@@ -2,10 +2,10 @@
#define URL_H
#include "types.h"
int MODFUNC url_is_valid(char *);
char MODFUNC *url_getfilename(char *);
char MODFUNC *download_file(char *, char **);
void MODFUNC download_file_async(char *, time_t, vFP);
int MODFUNC url_is_valid(const char *);
char MODFUNC *url_getfilename(const char *url);
char MODFUNC *download_file(const char *, char **);
void MODFUNC download_file_async(const char *, time_t, vFP, void *callback_data);
void MODFUNC url_do_transfers_async(void);
void MODFUNC url_init(void);
+27 -5
View File
@@ -23,14 +23,36 @@
#endif
/**/
#define COMPILEINFO DEBUGMODESET DEBUGSET
/*
* Version Unreal3.2.2
/* 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.
*/
#define UnrealProtocol 2306
/** These UNREAL_VERSION_* macros can be used so (3rd party) modules
* can easily distinguish versions.
*/
/** The generation version number (eg: 3 for Unreal3*) */
#define UNREAL_VERSION_GENERATION 3
/** The major version number (eg: 2 for Unreal3.2*) */
#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 9
/** Year + week of the year (ISO week number, with Monday as first day of 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 201120
#define UnrealProtocol 2310
#define PATCH1 "3"
#define PATCH2 ".2"
#define PATCH3 ".3"
#define PATCH4 ""
#define PATCH3 ".9"
#define PATCH4 "-rc1"
#define PATCH5 ""
#define PATCH6 ""
#define PATCH7 ""
-250
View File
@@ -1,250 +0,0 @@
/*
regex.h - POSIX.2 compatible regexp interface and TRE extensions
Copyright (C) 2001-2004 Ville Laurikari <vl@iki.fi>.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 (June
1991) as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef TRE_REGEX_H
#define TRE_REGEX_H 1
#include "tre-config.h"
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif /* HAVE_SYS_TYPES_H */
#ifdef HAVE_LIBUTF8_H
#include <libutf8.h>
#endif /* HAVE_LIBUTF8_H */
#ifdef TRE_USE_SYSTEM_REGEX_H
/* Include the system regex.h to make TRE ABI compatible with the
system regex. */
#include TRE_SYSTEM_REGEX_H_PATH
#endif /* TRE_USE_SYSTEM_REGEX_H */
#ifdef __cplusplus
extern "C" {
#endif
#ifdef TRE_USE_SYSTEM_REGEX_H
#ifndef REG_OK
#define REG_OK 0
#endif /* !REG_OK */
#ifndef HAVE_REG_ERRCODE_T
typedef int reg_errcode_t;
#endif /* !HAVE_REG_ERRCODE_T */
#if !defined(REG_NOSPEC) && !defined(REG_LITERAL)
#define REG_LITERAL 0x1000
#endif
/* Extra regcomp() flags. */
#define REG_RIGHT_ASSOC (REG_LITERAL << 1)
/* Extra regexec() flags. */
#define REG_APPROX_MATCHER 0x1000
#define REG_BACKTRACKING_MATCHER (REG_APPROX_MATCHER << 1)
#else /* !TRE_USE_SYSTEM_REGEX_H */
/* If the we're not using system regex.h, we need to define the
structs and enums ourselves. */
typedef int regoff_t;
typedef struct {
size_t re_nsub; /* Number of parenthesized subexpressions. */
void *value; /* For internal use only. */
} regex_t;
typedef struct {
regoff_t rm_so;
regoff_t rm_eo;
} regmatch_t;
typedef enum {
REG_OK = 0, /* No error. */
/* POSIX regcomp() return error codes. (In the order listed in the
standard.) */
REG_NOMATCH, /* No match. */
REG_BADPAT, /* Invalid regexp. */
REG_ECOLLATE, /* Unknown collating element. */
REG_ECTYPE, /* Unknown character class name. */
REG_EESCAPE, /* Trailing backslash. */
REG_ESUBREG, /* Invalid back reference. */
REG_EBRACK, /* "[]" imbalance */
REG_EPAREN, /* "\(\)" or "()" imbalance */
REG_EBRACE, /* "\{\}" or "{}" imbalance */
REG_BADBR, /* Invalid content of {} */
REG_ERANGE, /* Invalid use of range operator */
REG_ESPACE, /* Out of memory. */
REG_BADRPT
} reg_errcode_t;
/* POSIX regcomp() flags. */
#define REG_EXTENDED 1
#define REG_ICASE (REG_EXTENDED << 1)
#define REG_NEWLINE (REG_ICASE << 1)
#define REG_NOSUB (REG_NEWLINE << 1)
/* Extra regcomp() flags. */
#define REG_BASIC 0
#define REG_LITERAL (REG_NOSUB << 1)
#define REG_RIGHT_ASSOC (REG_LITERAL << 1)
/* POSIX regexec() flags. */
#define REG_NOTBOL 1
#define REG_NOTEOL (REG_NOTBOL << 1)
/* Extra regexec() flags. */
#define REG_APPROX_MATCHER (REG_NOTEOL << 1)
#define REG_BACKTRACKING_MATCHER (REG_APPROX_MATCHER << 1)
#endif /* !TRE_USE_SYSTEM_REGEX_H */
/* REG_NOSPEC and REG_LITERAL mean the same thing. */
#ifdef REG_LITERAL
#define REG_NOSPEC REG_LITERAL
#elif defined(REG_NOSPEC)
#define REG_LITERAL REG_NOSPEC
#endif /* defined(REG_NOSPEC) */
/* The maximum number of iterations in a bound expression. */
#undef RE_DUP_MAX
#define RE_DUP_MAX 255
/* The POSIX.2 regexp functions */
int regcomp(regex_t *preg, const char *regex, int cflags);
int regexec(const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags);
size_t regerror(int errcode, const regex_t *preg, char *errbuf,
size_t errbuf_size);
void regfree(regex_t *preg);
#ifdef TRE_WCHAR
#ifdef HAVE_WCHAR_H
#include <wchar.h>
#endif /* HAVE_WCHAR_H */
/* Wide character versions (not in POSIX.2). */
int regwcomp(regex_t *preg, const wchar_t *regex, int cflags);
int regwexec(const regex_t *preg, const wchar_t *string, size_t nmatch,
regmatch_t pmatch[], int eflags);
#endif /* TRE_WCHAR */
/* Versions with a maximum length argument and therefore the capability to
handle null characters in the middle of the strings (not in POSIX.2). */
int regncomp(regex_t *preg, const char *regex, size_t len, int cflags);
int regnexec(const regex_t *preg, const char *string, size_t len,
size_t nmatch, regmatch_t pmatch[], int eflags);
#ifdef TRE_WCHAR
int regwncomp(regex_t *preg, const wchar_t *regex, size_t len, int cflags);
int regwnexec(const regex_t *preg, const wchar_t *string, size_t len,
size_t nmatch, regmatch_t pmatch[], int eflags);
#endif /* TRE_WCHAR */
#ifdef TRE_APPROX
/* Approximate matching parameter struct. */
typedef struct {
int cost_ins; /* Default cost of an inserted character. */
int cost_del; /* Default cost of a deleted character. */
int cost_subst; /* Default cost of a substituted character. */
int max_cost; /* Maximum allowed cost of a match. */
int max_ins; /* Maximum allowed number of inserts. */
int max_del; /* Maximum allowed number of deletes. */
int max_subst; /* Maximum allowed number of substitutes. */
int max_err; /* Maximum allowed number of errors total. */
} regaparams_t;
/* Approximate matching result struct. */
typedef struct {
size_t nmatch; /* Length of pmatch[] array. */
regmatch_t *pmatch; /* Submatch data. */
int cost; /* Cost of the match. */
int num_ins; /* Number of inserts in the match. */
int num_del; /* Number of deletes in the match. */
int num_subst; /* Number of substitutes in the match. */
} regamatch_t;
/* Approximate matching functions. */
int regaexec(const regex_t *preg, const char *string,
regamatch_t *match, regaparams_t params, int eflags);
int reganexec(const regex_t *preg, const char *string, size_t len,
regamatch_t *match, regaparams_t params, int eflags);
#ifdef TRE_WCHAR
/* Wide character approximate matching. */
int regawexec(const regex_t *preg, const wchar_t *string,
regamatch_t *match, regaparams_t params, int eflags);
int regawnexec(const regex_t *preg, const wchar_t *string, size_t len,
regamatch_t *match, regaparams_t params, int eflags);
#endif /* TRE_WCHAR */
/* Sets the parameters to default values. */
void regaparams_default(regaparams_t *params);
#endif /* TRE_APPROX */
#ifdef TRE_WCHAR
typedef wchar_t tre_char_t;
#else /* !TRE_WCHAR */
typedef unsigned char tre_char_t;
#endif /* !TRE_WCHAR */
typedef struct {
int (*get_next_char)(tre_char_t *c, unsigned int *pos_add, void *context);
void (*rewind)(size_t pos, void *context);
int (*compare)(size_t pos1, size_t pos2, size_t len, void *context);
void *context;
} tre_str_source;
int reguexec(const regex_t *preg, const tre_str_source *string,
size_t nmatch, regmatch_t pmatch[], int eflags);
/* Returns the version string. The returned string is static. */
char *tre_version(void);
/* Returns the value for a config parameter. The type to which `result'
must point to depends of the value of `query', see documentation for
more details. */
int tre_config(int query, void *result);
enum {
TRE_CONFIG_APPROX,
TRE_CONFIG_WCHAR,
TRE_CONFIG_MULTIBYTE,
TRE_CONFIG_SYSTEM_ABI,
TRE_CONFIG_VERSION
};
/* Returns 1 if the compiled pattern has back references, 0 if not. */
int tre_have_backrefs(const regex_t *preg);
/* Returns 1 if the compiled pattern uses approximate matching features,
0 if not. */
int tre_have_approx(const regex_t *preg);
#ifdef __cplusplus
}
#endif
#endif /* TRE_REGEX_H */
/* EOF */
+24 -1
View File
@@ -21,6 +21,7 @@
#ifndef __setup_include__
#define __setup_include__
#undef PARAMH
#undef UNISTDH
#define STRINGH
@@ -43,11 +44,33 @@
#undef TIMES_2
#undef GETRUSAGE_2
#define HAVE_ALLOCA
/* vc 2005 */
#if defined(_MSC_VER) && _MSC_VER >= 1400
# define HAVE_VSNPRINTF
# define HAVE_SNPRINTF
# define snprintf _snprintf
#endif
#define SPATH "."
#define DPATH "."
#define DOMAINNAME "irc.net"
#define NO_U_TYPES
#define NEED_U_INT32_T
#define PREFIX_AQ
#define LIST_SHOW_MODES
#ifndef mode_t
/*
Needed in s_conf.c for the third argument of open(3p).
Should be an int because of http://msdn.microsoft.com/en-us/library/z0kc8e3z(VS.71).aspx
*/
#define mode_t int
#endif
/*
make up for win32 (and win64?) users not being able to run ./configure.
*/
#ifndef intptr_t
#define intptr_t long
#endif
#endif
-52
View File
@@ -1,52 +0,0 @@
/* tre-config.h. This file defines all compile time definitions
that are needed in `regex.h' for Win32. */
#ifndef HAVE_ALLOCA
/* Define to 1 if you have `alloca', as a function or macro. */
#define HAVE_ALLOCA 1
#endif
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
#define HAVE_ALLOCA_H 1
/* Define to 1 if you have the <libutf8.h> header file. */
/* #undef HAVE_LIBUTF8_H */
/* Define to 1 if the system has the type `reg_errcode_t'. */
/* #undef HAVE_REG_ERRCODE_T */
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <wchar.h> header file. */
#define HAVE_WCHAR_H 1
/* Define if you want to enable approximate matching functionality. */
#define TRE_APPROX 1
/* Define to enable multibyte character set support. */
#undef TRE_MULTIBYTE
/* Define to the absolute path to the system regex.h */
/* #undef TRE_SYSTEM_REGEX_H_PATH */
/* Define if you want TRE to use alloca() instead of malloc() when allocating
memory needed for regexec operations. */
#define TRE_USE_ALLOCA 1
/* Define to include the system regex.h from TRE regex.h */
/* #undef TRE_USE_SYSTEM_REGEX_H */
/* Define to enable wide character (wchar_t) support. */
#undef TRE_WCHAR
/* TRE version string. */
#define TRE_VERSION "0.7.2"
/* TRE version level 1. */
#define TRE_VERSION_1 0
/* TRE version level 2. */
#define TRE_VERSION_2 7
/* TRE version level 3. */
#define TRE_VERSION_3 2
+1
View File
@@ -0,0 +1 @@
ircdchk
-1
View File
@@ -1 +0,0 @@
0,10,20,30,40,50 * * * * /home/mydir-to/ircdcron/ircdchk >/dev/null 2>&1
+1
View File
@@ -0,0 +1 @@
0,10,20,30,40,50 * * * * @IRCDDIR@/ircdcron/ircdchk >/dev/null 2>&1
+102 -41
View File
@@ -4,9 +4,26 @@
CC=cl
LINK=link
RC=rc
MT=mt
############################ USER CONFIGURATION ############################
# You are encouraged NOT to set these values here, but instead make a batch file
# which passes all these arguments to nmake, like:
# nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib" etc etc...
# Both ways will work, but if you use a batch file it's easier with
# upgrading Unreal as you won't have to edit this makefile again.
### TRE ###
#TRE_LIB_DIR="C:\dev\tre\win32\release"
#TRE_INC_DIR="C:\dev\tre"
#TRELIB="tre.lib"
### C-ARES ####
#CARES_LIB_DIR="C:\dev\c-ares\vc\cares\dll-release"
#CARES_INC_DIR="C:\dev\c-ares"
#CARESLIB="cares.lib"
##### REMOTE INCLUDES ####
#To enable remote include support you must have libcurl installed on your
#system and it must have ares support enabled.
@@ -54,21 +71,43 @@ RC=rc
#
######### END SSL ########
###### RELEASE BUILD #####
#To make a release build comment out the next line a release build
#does not contain debugging symbols and can not be used to locate
#the source of a crash or bug
DEBUG=1
###### _EXTRA_ DEBUGGING #####
# We always build releases with debugging information, since otherwise
# we cannot trace the source of a crash. Plus we do not mind the extra
# performance hit caused by not enabling super-optimization, tracing
# crashes properly is more important.
# You can choose (at your own risk) to enable EVEN MORE debugging,
# note that this causes /MDd to be used instead of /MD which can make
# libraries incompatible, plus all the other side-effects such as
# requiring a different dll we do not ship (and maybe you are not even
# allowed to ship due to license agreements), etc...
# In any case, this probably should not be used, unless debugging a
# problem locally, in which case it can be useful.
#DEBUGEXTRA=1
#
#
#### END RELEASE BUILD ###
############################# END CONFIGURATION ############################
!IFDEF CARES_INC_DIR
CARES_INC=/I "$(CARES_INC_DIR)"
!ENDIF
!IFDEF CARES_LIB_DIR
CARES_LIB=/LIBPATH:"$(CARES_LIB_DIR)"
!ENDIF
!IFDEF TRE_INC_DIR
TRE_INC=/I "$(TRE_INC_DIR)"
!ENDIF
!IFDEF TRE_LIB_DIR
TRE_LIB=/LIBPATH:"$(TRE_LIB_DIR)"
!ENDIF
!IFDEF USE_REMOTEINC
CURLCFLAGS=/D USE_LIBCURL
CURLOBJ=SRC/URL.OBJ
CURLLIB=libcurl.lib
CURLLIB=libcurl_imp.lib
!IFDEF LIBCURL_INC_DIR
LIBCURL_INC=/I "$(LIBCURL_INC_DIR)"
!ENDIF
@@ -100,26 +139,31 @@ OPENSSL_LIB=/LIBPATH:"$(OPENSSL_LIB_DIR)"
!ENDIF
!ENDIF
!IFDEF DEBUG
DBGCFLAG=/MD /Zi
DBGLFLAG=/debug /debugtype:BOTH
MODDBGCFLAG=/LDd /MD /Zi
!IFDEF DEBUGEXTRA
DBGCFLAG=/MDd /Zi /Od
DBGCFLAGST=/MTd /Zi /Od
DBGLFLAG=/debug
MODDBGCFLAG=/LDd /MDd /Zi
!ELSE
DBGCFLAG=/MD /O2 /G5
MODDBGCFLAG=/LD /MD
DBGCFLAG=/MD /Zi
DBGCFLAGST=/MT /Zi
DBGLFLAG=/debug
MODDBGCFLAG=/LDd /MD /Zi
!ENDIF
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
CFLAGS=$(DBGCFLAG) $(TRE_INC) $(CARES_INC) $(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 _CRT_NONSTDC_NO_DEPRECATE /D _USE_32BIT_TIME_T
CFLAGSST=$(DBGCFLAGST) $(TRE_INC) $(CARES_INC) $(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 _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) \
dbghelp.lib oldnames.lib comctl32.lib comdlg32.lib $(CARES_LIB) $(CARESLIB) $(TRE_LIB) $(TRELIB) $(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
MODLFLAGS=/link /def:src/modules/module.def wircd.lib $(OPENSSL_LIB) $(SSLLIBS) \
/Fosrc/modules/ /nologo $(TRE_INC) $(CARES_INC) $(LIBCURL_INC) $(ZLIB_INC) $(OPENSSL_INC) /I ./INCLUDE /D \
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 ws2_32.lib $(TRE_LIB) $(TRELIB) $(CARES_LIB) $(OPENSSL_LIB) $(SSLLIBS) \
$(ZLIB_LIB) $(ZIPLIB) $(LIBCURL_LIB) $(CURLLIB)
INCLUDES=./include/struct.h ./include/config.h ./include/sys.h \
@@ -135,10 +179,10 @@ EXP_OBJ_FILES=SRC/CHANNEL.OBJ SRC/SEND.OBJ SRC/SOCKET.OBJ \
SRC/S_ERR.OBJ SRC/PACKET.OBJ SRC/S_BSD.OBJ \
SRC/S_SERV.OBJ SRC/S_USER.OBJ SRC/CHARSYS.OBJ \
SRC/VERSION.OBJ SRC/S_KLINE.OBJ SRC/S_EXTRA.OBJ SRC/IRCSPRINTF.OBJ SRC/LUSERS.OBJ \
SRC/SCACHE.OBJ SRC/ALN.OBJ SRC/BADWORDS.OBJ SRC/WEBTV.OBJ SRC/RES.OBJ SRC/MODULES.OBJ \
SRC/SCACHE.OBJ SRC/ALN.OBJ SRC/RES.OBJ SRC/MODULES.OBJ \
SRC/S_SVS.OBJ SRC/EVENTS.OBJ SRC/UMODES.OBJ SRC/AUTH.OBJ SRC/CIDR.OBJ SRC/SSL.OBJ \
SRC/RANDOM.OBJ SRC/EXTCMODES.OBJ SRC/MD5.OBJ SRC/API-ISUPPORT.OBJ SRC/API-COMMAND.OBJ \
SRC/EXTBANS.OBJ $(ZIPOBJ) $(CURLOBJ)
SRC/EXTBANS.OBJ SRC/TIMESYNCH.OBJ $(ZIPOBJ) $(CURLOBJ)
OBJ_FILES=$(EXP_OBJ_FILES) SRC/GUI.OBJ SRC/SERVICE.OBJ SRC/DEBUG.OBJ SRC/RTF.OBJ \
SRC/EDITOR.OBJ SRC/WIN32.OBJ
@@ -150,7 +194,7 @@ MOD_FILES=SRC/MODULES/L_COMMANDS.C SRC/MODULES/M_CHGHOST.C SRC/MODULES/M_SDESC.C
SRC/MODULES/M_SVSNOOP.C SRC/MODULES/M_MKPASSWD.C SRC/MODULES/M_SVSO.C \
SRC/MODULES/M_SVSNICK.C SRC/MODULES/M_ADMINCHAT.C SRC/MODULES/M_AKILL.C \
SRC/MODULES/M_CHGNAME.C SRC/MODULES/M_GUEST.C SRC/MODULES/M_HTM.C SRC/MODULES/M_LAG.C \
SRC/MODULES/M_MESSAGE.C SRC/MODULES/M_NACHAT.C SRC/MODULES/M_OPER.C \
SRC/MODULES/M_MESSAGE.C SRC/MODULES/WEBTV.C SRC/MODULES/M_NACHAT.C SRC/MODULES/M_OPER.C \
SRC/MODULES/M_PINGPONG.C SRC/MODULES/M_QUIT.C SRC/MODULES/M_RAKILL.C SRC/MODULES/M_RPING.C \
SRC/MODULES/M_SENDUMODE.C SRC/MODULES/M_SQLINE.C SRC/MODULES/M_KILL.C \
SRC/MODULES/M_TSCTL.C SRC/MODULES/M_UNKLINE.C SRC/MODULES/M_UNSQLINE.C \
@@ -174,7 +218,8 @@ MOD_FILES=SRC/MODULES/L_COMMANDS.C SRC/MODULES/M_CHGHOST.C SRC/MODULES/M_SDESC.C
SRC/MODULES/M_NICK.C SRC/MODULES/M_USER.C SRC/MODULES/M_MODE.C \
SRC/MODULES/M_WATCH.C SRC/MODULES/M_PART.C SRC/MODULES/M_JOIN.C \
SRC/MODULES/M_MOTD.C SRC/MODULES/M_OPERMOTD.C SRC/MODULES/M_BOTMOTD.C \
SRC/MODULES/M_LUSERS.C
SRC/MODULES/M_LUSERS.C SRC/MODULES/M_NAMES.C SRC/MODULES/M_SVSNOLAG.C \
SRC/MODULES/M_STARTTLS.C SRC/MODULES/M_NOPOST.C SRC/MODULES/M_ISSECURE.C
DLL_FILES=SRC/MODULES/M_CHGHOST.DLL SRC/MODULES/M_SDESC.DLL SRC/MODULES/M_SETIDENT.DLL \
SRC/MODULES/M_SETNAME.DLL SRC/MODULES/M_SETHOST.DLL SRC/MODULES/M_CHGIDENT.DLL \
@@ -209,7 +254,9 @@ DLL_FILES=SRC/MODULES/M_CHGHOST.DLL SRC/MODULES/M_SDESC.DLL SRC/MODULES/M_SETIDE
SRC/MODULES/M_NICK.DLL SRC/MODULES/M_USER.DLL SRC/MODULES/M_MODE.DLL \
SRC/MODULES/M_WATCH.DLL SRC/MODULES/M_PART.DLL SRC/MODULES/M_JOIN.DLL \
SRC/MODULES/M_MOTD.DLL SRC/MODULES/M_OPERMOTD.DLL SRC/MODULES/M_BOTMOTD.DLL \
SRC/MODULES/M_LUSERS.DLL \
SRC/MODULES/M_LUSERS.DLL SRC/MODULES/M_NAMES.DLL SRC/MODULES/M_SVSNOLAG.DLL \
SRC/MODULES/M_STARTTLS.DLL \
SRC/MODULES/M_NOPOST.DLL SRC/MODULES/M_ISSECURE.DLL \
SRC/MODULES/CLOAK.DLL
@@ -230,22 +277,23 @@ CLEAN:
-@erase src\modules\*.ilk >NUL
./UNREAL.EXE: SRC/UNREAL.OBJ SRC/WIN32/UNREAL.RES
$(LINK) advapi32.lib src/unreal.obj src/win32/unreal.res
$(LINK) $(DBGLFLAGST) advapi32.lib src/unreal.obj src/win32/unreal.res
CONF:
-@copy include\win32\setup.h include\setup.h >NUL
$(CC) src/win32/config.c
-@config.exe
./WIRCD.EXE: $(OBJ_FILES) SRC/win32/WIN32.RES
$(LINK) $(LFLAGS) $(OBJ_FILES) SRC/win32/WIN32.RES SRC/WIN32/TRE.LIB SRC/WIN32/ARESLIB.LIB /MAPINFO:LINES /MAP
$(LINK) $(LFLAGS) $(OBJ_FILES) SRC/win32/WIN32.RES /MAP
-@erase src\win32\win32.res
!IFNDEF DEBUG
@echo Non Debug version built
$(MT) -manifest WIRCD.EXE.manifest -outputresource:WIRCD.EXE;1
!IFNDEF DEBUGEXTRA
@echo Standard version built
!ELSE
@echo Debug version built ...
@echo Extra-Debug version built ...
!ENDIF
#Source files
@@ -256,12 +304,6 @@ src/version.obj: src/version.c
src/parse.obj: src/parse.c $(INCLUDES)
$(CC) $(CFLAGS) src/parse.c
src/badwords.obj: src/badwords.c $(INCLUDES)
$(CC) $(CFLAGS) src/badwords.c
src/webtv.obj: src/webtv.c $(INCLUDES)
$(CC) $(CFLAGS) src/webtv.c
src/socket.obj: src/socket.c $(INCLUDES)
$(CC) $(CFLAGS) src/socket.c
@@ -311,6 +353,9 @@ src/list.obj: src/list.c $(INCLUDES)
src/res.obj: src/res.c $(INCLUDES)
$(CC) $(CFLAGS) src/res.c
src/timesynch.obj: src/timesynch.c $(INCLUDES)
$(CC) $(CFLAGS) src/timesynch.c
src/s_bsd.obj: src/s_bsd.c $(INCLUDES)
$(CC) $(CFLAGS) src/s_bsd.c
@@ -387,7 +432,7 @@ src/win32.obj: src/win32/win32.c $(INCLUDES)
$(CC) $(CFLAGS) src/win32/win32.c
src/unreal.obj: src/win32/unreal.c $(INCLUDES)
$(CC) $(CFLAGS) src/win32/unreal.c
$(CC) $(CFLAGSST) src/win32/unreal.c
src/help.obj: src/help.c $(INCLUDES)
$(CC) $(CFLAGS) src/help.c
@@ -457,9 +502,10 @@ MODULES: $(DLL_FILES)
src/modules/commands.dll: $(MOD_FILES) $(INCLUDES)
$(CC) $(MODDBGCFLAG) $(LIBCURL_INC) $(ZLIB_INC) $(OPENSSL_INC) /nologo \
$(SSLCFLAGS) $(ZIPCFLAGS) $(CURLCFLAGS) /Fosrc/modules/ \
/I ./INCLUDE /D NOSPOOF /D MODULE_COMPILE $(MOD_FILES) \
$(MODLFLAGS) src/win32/tre.lib /OUT:src/modules/commands.dll
$(SSLCFLAGS) $(ZIPCFLAGS) $(CURLCFLAGS) $(TRE_INC) /Fosrc/modules/ \
/I ./INCLUDE /D NOSPOOF /D MODULE_COMPILE /D _CRT_SECURE_NO_DEPRECATE \
/D _USE_32BIT_TIME_T $(MOD_FILES) \
$(MODLFLAGS) /OUT:src/modules/commands.dll
src/modules/m_chghost.dll: src/modules/m_chghost.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_chghost.c $(MODLFLAGS)
@@ -486,7 +532,7 @@ src/modules/m_svsmode.dll: src/modules/m_svsmode.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_svsmode.c $(MODLFLAGS)
src/modules/m_tkl.dll: src/modules/m_tkl.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_tkl.c $(MODLFLAGS) src/win32/tre.lib
$(CC) $(MODCFLAGS) src/modules/m_tkl.c $(MODLFLAGS)
src/modules/m_swhois.dll: src/modules/m_swhois.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_swhois.c $(MODLFLAGS)
@@ -534,7 +580,7 @@ src/modules/m_lag.dll: src/modules/m_lag.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_lag.c $(MODLFLAGS)
src/modules/m_message.dll: src/modules/m_message.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_message.c $(MODLFLAGS)
$(CC) $(MODCFLAGS) src/modules/m_message.c src/modules/webtv.c $(MODLFLAGS)
src/modules/m_nachat.dll: src/modules/m_nachat.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_nachat.c $(MODLFLAGS)
@@ -761,9 +807,24 @@ src/modules/m_botmotd.dll: src/modules/m_botmotd.c $(INCLUDES)
src/modules/m_lusers.dll: src/modules/m_lusers.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_lusers.c $(MODLFLAGS)
src/modules/m_names.dll: src/modules/m_names.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_names.c $(MODLFLAGS)
src/modules/cloak.dll: src/modules/cloak.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/cloak.c $(MODLFLAGS)
src/modules/m_svsnolag.dll: src/modules/m_svsnolag.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_svsnolag.c $(MODLFLAGS)
src/modules/m_starttls.dll: src/modules/m_starttls.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_starttls.c $(MODLFLAGS)
src/modules/m_nopost.dll: src/modules/m_nopost.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_nopost.c $(MODLFLAGS)
src/modules/m_issecure.dll: src/modules/m_issecure.c $(INCLUDES)
$(CC) $(MODCFLAGS) src/modules/m_issecure.c $(MODLFLAGS)
dummy:
+2
View File
@@ -0,0 +1,2 @@
ircd
version.c
+11 -12
View File
@@ -21,13 +21,13 @@
CC = danger will robinson
OBJS=res.o s_bsd.o auth.o aln.o badwords.o channel.o cloak.o crule.o dbuf.o \
OBJS=timesynch.o res.o s_bsd.o auth.o aln.o channel.o cloak.o crule.o dbuf.o \
events.o fdlist.o hash.o help.o ircd.o ircsprintf.o list.o lusers.o \
match.o modules.o packet.o parse.o s_auth.o \
s_conf.o s_debug.o s_err.o s_extra.o s_kline.o \
s_misc.o s_numeric.o s_serv.o s_svs.o $(STRTOUL) socket.o \
ssl.o s_user.o charsys.o scache.o send.o support.o umodes.o \
version.o webtv.o whowas.o zip.o cidr.o random.o extcmodes.o \
version.o whowas.o zip.o cidr.o random.o extcmodes.o \
extbans.o md5.o api-isupport.o api-command.o $(URL)
SRC=$(OBJS:%.o=%.c)
@@ -41,14 +41,14 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
'CRYPTOLIB=${CRYPTOLIB}' \
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' 'URL=${URL}' \
MAKE = make $(MAKEARGS)
MY_MAKE = $(MAKE) $(MAKEARGS)
INCLUDES = ../include/auth.h ../include/badwords.h ../include/channel.h \
../include/class.h ../include/common.h ../include/config.h ../include/dbuf.h \
../include/dynconf.h ../include/events.h ../include/fdlist.h ../include/h.h \
../include/hash.h ../include/inet.h ../include/ircsprintf.h \
../include/license.h ../include/macros.h ../include/md5.h \
../include/modules.h ../include/modversion.h ../include/msg.h ../include/nameser.h \
../include/modules.h ../include/modversion.h ../include/msg.h \
../include/numeric.h ../include/proto.h \
../include/resource.h ../include/setup.h ../include/sjoin.h \
../include/sock.h ../include/ssl.h ../include/struct.h ../include/sys.h \
@@ -60,7 +60,7 @@ all: build
build: ircd mods
custommodule:
cd modules; $(MAKE) MODULEFILE=$(MODULEFILE) 'EXLIBS=$(EXLIBS)' custommodule
cd modules; $(MY_MAKE) MODULEFILE=$(MODULEFILE) 'EXLIBS=$(EXLIBS)' custommodule
ircd: $(OBJS)
$(CC) $(CFLAGS) $(CRYPTOLIB) -o ircd $(OBJS) $(LDFLAGS) $(IRCDLIBS) $(CRYPTOLIB)
@@ -83,7 +83,7 @@ mods:
@if [ ! -r modules ] ; then \
echo "You havent done cvs update -P -d"; \
fi
cd modules; $(MAKE) all
cd modules; $(MY_MAKE) all
version.c: version.c.SH ../Changes
$(SHELL) version.c.SH
@@ -105,9 +105,6 @@ dbuf.o: dbuf.c $(INCLUDES)
packet.o: packet.c $(INCLUDES)
$(CC) $(CFLAGS) -c packet.c
badwords.o: badwords.c $(INCLUDES)
$(CC) $(CFLAGS) -c badwords.c
aln.o: aln.c $(INCLUDES)
$(CC) $(CFLAGS) -c aln.c
@@ -120,15 +117,14 @@ zip.o: zip.c $(INCLUDES)
send.o: send.c $(INCLUDES)
$(CC) $(CFLAGS) -c send.c
webtv.o: webtv.c $(INCLUDES)
$(CC) $(CFLAGS) -c webtv.c
ssl.o: ssl.c $(INCLUDES)
$(CC) $(CFLAGS) -c ssl.c
match.o: match.c $(INCLUDES)
$(CC) $(CFLAGS) -c match.c
modules.o: modules.c $(INCLUDES)
support.o: support.c $(INCLUDES)
$(CC) $(CFLAGS) -c support.c
@@ -183,6 +179,9 @@ lusers.o: lusers.c $(INCLUDES)
res.o: res.c $(INCLUDES) ../include/res.h
$(CC) $(CFLAGS) -c res.c
timesynch.o: timesynch.c $(INCLUDES)
$(CC) $(CFLAGS) -c timesynch.c
cloak.o: cloak.c $(INCLUDES)
$(CC) $(CFLAGS) -c cloak.c
+1
View File
@@ -116,6 +116,7 @@ void CommandDel(Command *command) {
if (!*tmp)
{
IsupportDel(IsupportFind("CMDS"));
free(tmp);
cmdstr = NULL;
}
else
+5
View File
@@ -132,6 +132,8 @@ void isupport_init(void)
IsupportAdd(NULL, "CHANTYPES", "#");
IsupportAdd(NULL, "MODES", my_itoa(MAXMODEPARAMS));
IsupportAdd(NULL, "SILENCE", my_itoa(SILENCE_LIMIT));
if (WATCH_AWAY_NOTIFICATION)
IsupportAdd(NULL, "WATCHOPTS", "A");
IsupportAdd(NULL, "WATCH", my_itoa(MAXWATCH));
IsupportAdd(NULL, "WALLCHOPS", NULL);
IsupportAdd(NULL, "MAXTARGETS", my_itoa(MAXTARGETS));
@@ -147,6 +149,9 @@ void isupport_init(void)
IsupportAdd(NULL, "MAXCHANNELS", my_itoa(MAXCHANNELSPERUSER));
IsupportAdd(NULL, "HCN", NULL);
IsupportAdd(NULL, "SAFELIST", NULL);
IsupportAdd(NULL, "NAMESX", NULL);
if (UHNAMES_ENABLED)
IsupportAdd(NULL, "UHNAMES", NULL);
if (cmdstr)
IsupportAdd(NULL, "CMDS", cmdstr);
}
+12 -6
View File
@@ -94,6 +94,12 @@ int Auth_CheckError(ConfigEntry *ce)
ce->ce_fileptr->cf_filename, ce->ce_varlinenum);
return -1;
}
if (ce->ce_entries && ce->ce_entries->ce_next)
{
config_error("%s:%i: you may not have multiple authentication methods",
ce->ce_fileptr->cf_filename, ce->ce_varlinenum);
return -1;
}
if (ce->ce_entries)
{
if (ce->ce_entries->ce_varname)
@@ -310,9 +316,9 @@ char *saltstr, *hashstr;
SHA1_Update(&hash, para, strlen(para));
SHA1_Final(result1, &hash);
#else
if (!CryptCreateHash(hProv, CALG_SHA1, 0, 0, &hHash)) return NULL;
if (!CryptHashData(hHash, para, strlen(para), 0)) return NULL;
if (!CryptGetHashParam(hHash, HP_HASHVAL, result1, &size, 0)) return NULL;
if (!CryptCreateHash(hProv, CALG_SHA1, 0, 0, &hHash)) return -1;
if (!CryptHashData(hHash, para, strlen(para), 0)) return -1;
if (!CryptGetHashParam(hHash, HP_HASHVAL, result1, &size, 0)) return -1;
CryptDestroyHash(hHash);
#endif
/* Add salt to result */
@@ -324,9 +330,9 @@ char *saltstr, *hashstr;
SHA1_Update(&hash, result1, rsaltlen+20);
SHA1_Final(result2, &hash);
#else
if (!CryptCreateHash(hProv, CALG_SHA1, 0, 0, &hHash)) return NULL;
if (!CryptHashData(hHash, result1, 20+rsaltlen, 0)) return NULL;
if (!CryptGetHashParam(hHash, HP_HASHVAL, result2, &size, 0)) return NULL;
if (!CryptCreateHash(hProv, CALG_SHA1, 0, 0, &hHash)) return -1;
if (!CryptHashData(hHash, result1, 20+rsaltlen, 0)) return -1;
if (!CryptGetHashParam(hHash, HP_HASHVAL, result2, &size, 0)) return -1;
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
#endif
-293
View File
@@ -1,293 +0,0 @@
/*
* IRC - Internet Relay Chat, badwords.c
* Copyleft (C) 2000 meow <csi@gnu.net>
*
* Provides functions, for loading and filtering unwanted words out of
* a string, or in this case part of a message. Please note that this
* is flawed because when mode_strip is set, mode_stripbadwords is not
* active. This is due to the structure of m_message(), and therefore
* will not change until I (or someone else) revamps the code.
*
* You can redistribute and/or modify this under the terms of the GNU
* General Public License as published by the Free Software Foundation.
*
* Disclaimer: You have no rights. Use at your own risk. Don't drink
* too much pepsi.
*/
#ifndef _WIN32
#include <unistd.h>
#endif
#include "config.h"
#include "struct.h"
#include "common.h"
#include "h.h"
#ifdef STRIPBADWORDS
#include "badwords.h"
/* This was modified a bit in order to use newconf. The loading functions
* have been trashed and integrated into the config parser. The striping
* function now only uses REPLACEWORD if no word is specifically defined
* for the word found. Also the freeing function has been ditched. -- codemastr
*/
#ifdef FAST_BADWORD_REPLACE
/*
* our own strcasestr implementation because strcasestr is often not
* available or is not working correctly (??).
*/
char *our_strcasestr(char *haystack, char *needle) {
int i;
int nlength = strlen (needle);
int hlength = strlen (haystack);
if (nlength > hlength) return NULL;
if (hlength <= 0) return NULL;
if (nlength <= 0) return haystack;
for (i = 0; i <= (hlength - nlength); i++) {
if (strncasecmp (haystack + i, needle, nlength) == 0)
return haystack + i;
}
return NULL; /* not found */
}
inline int fast_badword_match(ConfigItem_badword *badword, char *line)
{
char *p;
int bwlen = strlen(badword->word);
if ((badword->type & BADW_TYPE_FAST_L) && (badword->type & BADW_TYPE_FAST_R))
return (our_strcasestr(line, badword->word) ? 1 : 0);
p = line;
while((p = our_strcasestr(p, badword->word)))
{
if (!(badword->type & BADW_TYPE_FAST_L))
{
if ((p != line) && !iswseperator(*(p - 1))) /* aaBLA but no *BLA */
goto next;
}
if (!(badword->type & BADW_TYPE_FAST_R))
{
if (!iswseperator(*(p + bwlen))) /* BLAaa but no BLA* */
goto next;
}
/* Looks like it matched */
return 1;
next:
p += bwlen;
}
return 0;
}
/* fast_badword_replace:
* a fast replace routine written by Syzop used for replacing badwords.
* searches in line for huntw and replaces it with replacew,
* buf is used for the result and max is sizeof(buf).
* (Internal assumptions: max > 0 AND max > strlen(line)+1)
*/
inline int fast_badword_replace(ConfigItem_badword *badword, char *line, char *buf, int max)
{
/* Some aliases ;P */
char *replacew = badword->replace ? badword->replace : REPLACEWORD;
char *pold = line, *pnew = buf; /* Pointers to old string and new string */
char *poldx = line;
int replacen = -1; /* Only calculated if needed. w00t! saves us a few nanosecs? lol */
int searchn = -1;
char *startw, *endw;
char *c_eol = buf + max - 1; /* Cached end of (new) line */
int run = 1;
int cleaned = 0;
Debug((DEBUG_NOTICE, "replacing %s -> %s in '%s'", badword->word, replacew, line));
while(run) {
pold = our_strcasestr(pold, badword->word);
if (!pold)
break;
if (replacen == -1)
replacen = strlen(replacew);
if (searchn == -1)
searchn = strlen(badword->word);
/* Hunt for start of word */
if (pold > line) {
for (startw = pold; (!iswseperator(*startw) && (startw != line)); startw--);
if (iswseperator(*startw))
startw++; /* Don't point at the space/seperator but at the word! */
} else {
startw = pold;
}
if (!(badword->type & BADW_TYPE_FAST_L) && (pold != startw)) {
/* not matched */
pold++;
continue;
}
/* Hunt for end of word */
for (endw = pold; ((*endw != '\0') && (!iswseperator(*endw))); endw++);
if (!(badword->type & BADW_TYPE_FAST_R) && (pold+searchn != endw)) {
/* not matched */
pold++;
continue;
}
cleaned = 1; /* still too soon? Syzop/20050227 */
/* Do we have any not-copied-yet data? */
if (poldx != startw) {
int tmp_n = startw - poldx;
if (pnew + tmp_n >= c_eol) {
/* Partial copy and return... */
memcpy(pnew, poldx, c_eol - pnew);
*c_eol = '\0';
return 1;
}
memcpy(pnew, poldx, tmp_n);
pnew += tmp_n;
}
/* Now update the word in buf (pnew is now something like startw-in-new-buffer */
if (replacen) {
if ((pnew + replacen) >= c_eol) {
/* Partial copy and return... */
memcpy(pnew, replacew, c_eol - pnew);
*c_eol = '\0';
return 1;
}
memcpy(pnew, replacew, replacen);
pnew += replacen;
}
poldx = pold = endw;
}
/* Copy the last part */
if (*poldx) {
strncpy(pnew, poldx, c_eol - pnew);
*(c_eol) = '\0';
} else {
*pnew = '\0';
}
return cleaned;
}
#endif
/*
* Returns a string, which has been filtered by the words loaded via
* the loadbadwords() function. It's primary use is to filter swearing
* in both private and public messages
*/
void badwords_stats(aClient *sptr)
{
}
char *stripbadwords(char *str, ConfigItem_badword *start_bw, int *blocked)
{
regmatch_t pmatch[MAX_MATCH];
static char cleanstr[4096];
char buf[4096];
char *ptr;
int matchlen, m, stringlen, cleaned;
ConfigItem_badword *this_word;
*blocked = 0;
if (!start_bw)
return str;
/*
* work on a copy
*/
stringlen = strlcpy(cleanstr, StripControlCodes(str), sizeof cleanstr);
memset(&pmatch, 0, sizeof pmatch);
matchlen = 0;
buf[0] = '\0';
cleaned = 0;
for (this_word = start_bw; this_word; this_word = (ConfigItem_badword *)this_word->next)
{
#ifdef FAST_BADWORD_REPLACE
if (this_word->type & BADW_TYPE_FAST)
{
if (this_word->action == BADWORD_BLOCK)
{
if (fast_badword_match(this_word, cleanstr))
{
*blocked = 1;
return NULL;
}
}
else
{
int n;
/* fast_badword_replace() does size checking so we can use 512 here instead of 4096 */
n = fast_badword_replace(this_word, cleanstr, buf, 512);
if (!cleaned && n)
cleaned = n;
strcpy(cleanstr, buf);
memset(buf, 0, sizeof(buf)); /* regexp likes this somehow */
}
} else
if (this_word->type & BADW_TYPE_REGEX)
{
#endif
if (this_word->action == BADWORD_BLOCK)
{
if (!regexec(&this_word->expr, cleanstr, 0, NULL, 0))
{
*blocked = 1;
return NULL;
}
}
else
{
ptr = cleanstr; /* set pointer to start of string */
while (regexec(&this_word->expr, ptr, MAX_MATCH, pmatch,0) != REG_NOMATCH)
{
if (pmatch[0].rm_so == -1)
break;
m = pmatch[0].rm_eo - pmatch[0].rm_so;
if (m == 0)
break; /* anti-loop */
cleaned = 1;
matchlen += m;
strlncat(buf, ptr, sizeof buf, pmatch[0].rm_so);
if (this_word->replace)
strlcat(buf, this_word->replace, sizeof buf);
else
strlcat(buf, REPLACEWORD, sizeof buf);
ptr += pmatch[0].rm_eo; /* Set pointer after the match pos */
memset(&pmatch, 0, sizeof(pmatch));
}
/* All the better to eat you with! */
strlcat(buf, ptr, sizeof buf);
memcpy(cleanstr, buf, sizeof cleanstr);
memset(buf, 0, sizeof(buf));
if (matchlen == stringlen)
break;
}
#ifdef FAST_BADWORD_REPLACE
}
#endif
}
cleanstr[511] = '\0'; /* cutoff, just to be sure */
return (cleaned) ? cleanstr : str;
}
char inline *stripbadwords_channel(char *str, int *blocked)
{
return stripbadwords(str, conf_badword_channel, blocked);
}
char inline *stripbadwords_message(char *str, int *blocked)
{
return stripbadwords(str, conf_badword_message, blocked);
}
char inline *stripbadwords_quit(char *str, int *blocked)
{
return stripbadwords(str, conf_badword_quit, blocked);
}
#endif
+161 -997
View File
File diff suppressed because it is too large Load Diff
+35 -12
View File
@@ -90,11 +90,12 @@ struct _langlist
/* MUST be alphabetized (first column) */
static LangList langlist[] = {
{ "belarussian-w1251", "blr", LANGAV_ASCII|LANGAV_W1251 },
{ "catalan", "cat", LANGAV_ASCII|LANGAV_LATIN1 },
{ "chinese", "chi-s,chi-t,chi-j", LANGAV_GBK },
{ "chinese", "chi-j,chi-s,chi-t", LANGAV_GBK },
{ "chinese-ja", "chi-j", LANGAV_GBK },
{ "chinese-simp", "chi-s", LANGAV_GBK },
{ "chinese-trad", "chi-t", LANGAV_GBK },
{ "chinese-ja", "chi-j", LANGAV_GBK },
{ "czech", "cze-m", LANGAV_ASCII|LANGAV_W1250 },
{ "danish", "dan", LANGAV_ASCII|LANGAV_LATIN1 },
{ "dutch", "dut", LANGAV_ASCII|LANGAV_LATIN1 },
@@ -106,7 +107,7 @@ static LangList langlist[] = {
{ "hungarian", "hun", LANGAV_ASCII|LANGAV_LATIN2W1250 },
{ "icelandic", "ice", LANGAV_ASCII|LANGAV_LATIN1 },
{ "italian", "ita", LANGAV_ASCII|LANGAV_LATIN1 },
{ "latin1", "cat,dan,dut,fre,ger,ita,spa,swe", LANGAV_ASCII|LANGAV_LATIN1 },
{ "latin1", "cat,dut,fre,ger,ita,spa,swe", LANGAV_ASCII|LANGAV_LATIN1 },
{ "latin2", "hun,pol,rum", LANGAV_ASCII|LANGAV_LATIN2 },
{ "polish", "pol", LANGAV_ASCII|LANGAV_LATIN2 },
{ "polish-w1250", "pol-m", LANGAV_ASCII|LANGAV_W1250 },
@@ -117,7 +118,9 @@ static LangList langlist[] = {
{ "swedish", "swe", LANGAV_ASCII|LANGAV_LATIN1 },
{ "swiss-german", "swg", LANGAV_ASCII|LANGAV_LATIN1 },
{ "turkish", "tur", LANGAV_ASCII|LANGAV_ISO8859_9 },
{ "ukrainian-w1251", "ukr", LANGAV_ASCII|LANGAV_W1251 },
{ "windows-1250", "cze-m,pol-m,rum,slo-m,hun", LANGAV_ASCII|LANGAV_W1250 },
{ "windows-1251", "rus,ukr,blr", LANGAV_ASCII|LANGAV_W1251 },
{ NULL, NULL, 0 }
};
@@ -242,7 +245,7 @@ ILangList *e, *e_next;
*/
void charsys_addmultibyterange(char s1, char e1, char s2, char e2)
{
MBList *m = MyMallocEx(sizeof(m));
MBList *m = MyMallocEx(sizeof(MBList));
m->s1 = s1;
m->e1 = e1;
@@ -369,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;
@@ -390,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;
@@ -405,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];
@@ -427,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;
@@ -472,7 +475,7 @@ char tmp[512], *lang, *p;
void charsys_add_language(char *name)
{
char latin1=0, latin2=0, w1250=0, chinese=0;
char latin1=0, latin2=0, w1250=0, w1251=0, chinese=0;
/** Note: there could well be some characters missing in the lists below.
* While I've seen other altnernatives that just allow pretty much
@@ -493,6 +496,8 @@ char latin1=0, latin2=0, w1250=0, chinese=0;
latin2 = 1;
else if (!strcmp(name, "windows-1250"))
w1250 = 1;
else if (!strcmp(name, "windows-1251"))
w1251 = 1;
else if (!strcmp(name, "chinese") || !strcmp(name, "gbk"))
chinese = 1;
@@ -548,8 +553,8 @@ char latin1=0, latin2=0, w1250=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"))
{
@@ -603,13 +608,31 @@ char latin1=0, latin2=0, w1250=0, chinese=0;
}
/* [windows 1251] */
if (!strcmp(name, "russian-w1251"))
if (w1251 || !strcmp(name, "russian-w1251"))
{
/* supplied by Roman Parkin:
* 128-159 and 223-254
*/
charsys_addallowed("ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¨¸");
}
if (w1251 || !strcmp(name, "belarussian-w1251"))
{
/* 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("ÀÁÂÃÄŨÆÇ²ÉÊËÌÍÎÏÐÑÒÓ¡ÔÕÖרÛÜÝÞßàáâãä叿ç³éêëìíîïðñòó¢ôõö÷øûüýþÿ");
}
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("ÀÁÂÃ¥ÄŪÆÇȲ¯ÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÜÞßàáâã´äåºæç賿éêëìíîïðñòóôõö÷øùüþÿ");
}
/* [GREEK] */
if (!strcmp(name, "greek"))
+4 -1
View File
@@ -295,6 +295,8 @@ int parse_netmask(const char *text, struct irc_netmask *netmask)
/* The address matching stuff... */
/* int match_ipv6(struct IN_ADDR *, struct IN_ADDR *, int)
* Input: An IP address, an IP mask, the number of bits in the mask.
* Only the first bits of the IP mask will be compared, so
* it doesn't need to be zeroed out after bits bits.
* Output: if match, 1 else 0
* Side effects: None
*/
@@ -308,7 +310,8 @@ int match_ipv6(struct IN_ADDR *addr, struct IN_ADDR *mask, int bits)
return 0;
if ((m = bits % 8) == 0)
return 1;
if ((addr->s6_addr[n] & ~((1 << (8 - m)) - 1)) == mask->s6_addr[n])
if ((addr->s6_addr[n] & ~((1 << (8 - m)) - 1))
== (mask->s6_addr[n] & ~((1 << (8 - m)) - 1)))
return 1;
return 0;
}
+6 -125
View File
@@ -15,12 +15,6 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
#ifdef CLEAN_COMPILE
static char sccxid[] = "@(#)cloak.c 9.00 7/12/99 UnrealIRCd";
#endif
*/
#include "struct.h"
#include "common.h"
#include "sys.h"
@@ -33,124 +27,8 @@ static char sccxid[] = "@(#)cloak.c 9.00 7/12/99 UnrealIRCd";
#include <string.h>
#include "h.h"
/* The implementation here was originally done by Gary S. Brown. I have
borrowed the tables directly, and made some minor changes to the
crc32-function (including changing the interface). //ylo */
/* ============================================================= */
/* COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or */
/* code or tables extracted from it, as desired without restriction. */
/* */
/* First, the polynomial itself and its table of feedback terms. The */
/* polynomial is */
/* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 */
/* */
/* Note that we take it "backwards" and put the highest-order term in */
/* the lowest-order bit. The X^32 term is "implied"; the LSB is the */
/* X^31 term, etc. The X^0 term (usually shown as "+1") results in */
/* the MSB being 1. */
/* */
/* Note that the usual hardware shift register implementation, which */
/* is what we're using (we're merely optimizing it by doing eight-bit */
/* chunks at a time) shifts bits into the lowest-order term. In our */
/* implementation, that means shifting towards the right. Why do we */
/* do it this way? Because the calculated CRC must be transmitted in */
/* order from highest-order term to lowest-order term. UARTs transmit */
/* characters in order from LSB to MSB. By storing the CRC this way, */
/* we hand it to the UART in the order low-byte to high-byte; the UART */
/* sends each low-bit to hight-bit; and the result is transmission bit */
/* by bit from highest- to lowest-order term without requiring any bit */
/* shuffling on our part. Reception works similarly. */
/* */
/* The feedback terms table consists of 256, 32-bit entries. Notes: */
/* */
/* The table can be generated at runtime if desired; code to do so */
/* is shown later. It might not be obvious, but the feedback */
/* terms simply represent the results of eight shift/xor opera- */
/* tions for all combinations of data and CRC register values. */
/* */
/* The values must be right-shifted by eight bits by the "updcrc" */
/* logic; the shift must be unsigned (bring in zeroes). On some */
/* hardware you could probably optimize the shift in assembler by */
/* using byte-swap instructions. */
/* polynomial $edb88320 */
/* */
/* -------------------------------------------------------------------- */
static unsigned long crc32_tab[] = {
0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
0x2d02ef8dL
};
/* Return a 32-bit CRC of the contents of the buffer. */
unsigned long our_crc32(const unsigned char *s, unsigned int len)
{
unsigned int i;
unsigned long crc32val;
crc32val = 0;
for (i = 0; i < len; i ++)
{
crc32val =
crc32_tab[(crc32val ^ s[i]) & 0xff] ^
(crc32val >> 8);
}
return crc32val;
}
/* mode = 0, just use strncpyzt, 1 = Realloc new and return new pointer */
char *make_virthost(char *curr, char *new, int mode)
char *make_virthost(aClient *sptr, char *curr, char *new, int mode)
{
char host[256], *mask, *x, *p, *q;
@@ -163,11 +41,14 @@ char host[256], *mask, *x, *p, *q;
*q = '\0';
/* Call the cloaking layer */
mask = RCallbacks[CALLBACKTYPE_CLOAK]->func.pcharfunc(host);
if (RCallbacks[CALLBACKTYPE_CLOAK_EX])
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)
+246 -23
View File
@@ -230,7 +230,7 @@ char *p = ban+3, symbol = '\0';
}
for (lp = sptr->user->channel; lp; lp = lp->next)
{
if (!match(p, lp->chptr->chname))
if (!match_esc(p, lp->chptr->chname))
{
/* Channel matched, check symbol if needed (+/%/@/etc) */
if (symbol)
@@ -250,13 +250,12 @@ char *ban = banin + 3;
if (type != BANCHK_MSG)
return 0;
if ((ban_realhost && !match(ban, ban_realhost)) ||
(ban_virthost && !match(ban, ban_virthost)) ||
(ban_ip && !match(ban, ban_ip)))
return 1;
return 0;
#ifdef DISABLE_STACKED_EXTBANS
return extban_is_banned_helper(ban);
#else
return ban_check_mask(sptr, chptr, ban, type, 0);
#endif
}
int extban_moden_is_banned(aClient *sptr, aChannel *chptr, char *banin, int type)
@@ -268,15 +267,79 @@ char *ban = banin + 3;
if (has_voice(sptr, chptr))
return 0;
if ((ban_realhost && !match(ban, ban_realhost)) ||
(ban_virthost && !match(ban, ban_virthost)) ||
(ban_ip && !match(ban, ban_ip)))
return 1;
return 0;
#ifdef DISABLE_STACKED_EXTBANS
return extban_is_banned_helper(ban);
#else
return ban_check_mask(sptr, chptr, ban, type, 0);
#endif
}
/* a ban that affects JOINs only */
int extban_modej_is_banned(aClient *sptr, aChannel *chptr, char *banin, int type)
{
char *sub_ban;
if (type != BANCHK_JOIN)
return 0;
sub_ban = banin + 3;
#ifdef DISABLE_STACKED_EXTBANS
return extban_is_banned_helper(sub_ban);
#else
return ban_check_mask(sptr, chptr, sub_ban, type, 0);
#endif
}
#ifndef DISABLE_STACKED_EXTBANS
/** General is_ok for n!u@h stuff that also deals with recursive extbans.
*/
int extban_is_ok_nuh_extban(aClient* sptr, aChannel* chptr, char* para, int checkt, int what, int what2)
{
char *mask = (para + 3);
Extban *p = NULL;
int isok;
static int extban_is_ok_recursion = 0;
/* Mostly copied from clean_ban_mask - but note MyClient checks aren't needed here: extban->is_ok() according to m_mode isn't called for nonlocal. */
if ((*mask == '~') && mask[1] && (mask[2] == ':'))
{
if (extban_is_ok_recursion)
return 0; /* Fail: more than one stacked extban */
/* We can be sure RESTRICT_EXTENDEDBANS is not *. Else this extended ban wouldn't be happening at all. */
if (what == EXBCHK_PARAM && RESTRICT_EXTENDEDBANS && !IsAnOper(sptr))
{
if (strchr(RESTRICT_EXTENDEDBANS, mask[1]))
{
sendnotice(sptr, "Setting/removing of extended bantypes '%s' has been disabled.", RESTRICT_EXTENDEDBANS);
return 0; /* Fail */
}
}
p = findmod_by_bantype(mask[1]);
if (!p)
{
if (what == MODE_DEL)
{
return 1; /* Always allow killing unknowns. */
}
return 0; /* Don't add unknown extbans. */
}
/* Now we have to ask the stacked extban if it's ok. */
if (p->is_ok)
{
extban_is_ok_recursion++;
isok = p->is_ok(sptr, chptr, mask, checkt, what, what2);
extban_is_ok_recursion--;
return isok;
}
}
return 1; /* Either not an extban, or extban has NULL is_ok. Good to go. */
}
#endif
/** Some kind of general conv_param routine,
* to ensure the parameter is nick!user@host.
* most of the code is just copied from clean_ban_mask.
@@ -311,6 +374,100 @@ char pfix[8];
return retbuf;
}
#ifndef DISABLE_STACKED_EXTBANS
/** conv_param to deal with stacked extbans.
*/
char* extban_conv_param_nuh_or_extban(char* para)
{
#if (USERLEN + NICKLEN + HOSTLEN + 32) > 256
#error "wtf?"
#endif
static char retbuf[256];
static char printbuf[256];
char *mask;
char tmpbuf[USERLEN + NICKLEN + HOSTLEN + 32];
char bantype = para[1];
char *ret = NULL;
Extban *p = NULL;
static int extban_recursion = 0;
if (para[3] == '~' && para[4] && para[5] == ':')
{
/* We're dealing with a stacked extended ban.
* Rules:
* 1) You can only stack once, so: ~x:~y:something and not ~x:~y:~z...
* 2) The first item must be an action modifier, such as ~q/~n/~j
* 3) The second item may never be an action modifier, nor have the
* EXTBOPT_NOSTACKCHILD flag set (for things like a textban).
*/
/* Rule #1. Yes the recursion check is also in extban_is_ok_nuh_extban,
* but it's possible to get here without the is_ok() function ever
* being called (think: non-local client). And no, don't delete it
* there either. It needs to be in BOTH places. -- Syzop
*/
if (extban_recursion)
return NULL;
/* Rule #2 */
p = findmod_by_bantype(para[1]);
if (p && !(p->options & EXTBOPT_ACTMODIFIER))
{
/* Rule #2 violation */
return NULL;
}
strncpyzt(tmpbuf, para, sizeof(tmpbuf));
mask = tmpbuf + 3;
/* Already did restrict-extended bans check. */
p = findmod_by_bantype(mask[1]);
if (!p)
{
/* Handling unknown bantypes in is_ok. Assume that it's ok here. */
return para;
}
if ((p->options & EXTBOPT_ACTMODIFIER) || (p->options & EXTBOPT_NOSTACKCHILD))
{
/* Rule #3 violation */
return NULL;
}
if (p->conv_param)
{
extban_recursion++;
ret = p->conv_param(mask);
extban_recursion--;
if (ret)
{
/*
* If bans are stacked, then we have to use two buffers
* to prevent ircsprintf() from going into a loop.
*/
ircsprintf(printbuf, "~%c:%s", bantype, ret); /* Make sure our extban prefix sticks. */
memcpy(retbuf, printbuf, sizeof(retbuf));
return retbuf;
}
else
{
return NULL; /* Fail. */
}
}
/* I honestly don't know what the deal is with the 80 char cap in clean_ban_mask is about. So I'm leaving it out here. -- aquanight */
/* I don't know why it's 80, but I like a limit anyway. A ban of 500 characters can never be good... -- Syzop */
if (strlen(para) > 80)
{
strlcpy(retbuf, para, 128);
return retbuf;
}
return para;
}
else
{
return extban_conv_param_nuh(para);
}
}
#endif
/** Realname bans - conv_param */
char *extban_moder_conv_param(char *para)
{
@@ -321,12 +478,35 @@ static char retbuf[REALLEN + 8];
mask = retbuf+3;
if (strlen(mask) > REALLEN + 3)
mask[REALLEN + 3] = '\0';
if (*mask == '~')
*mask = '?'; /* Is this good? No ;) */
return retbuf;
}
int extban_moder_is_banned(aClient *sptr, aChannel *chptr, char *banin, int type)
{
char *ban = banin+3;
if (!match(ban, sptr->info))
if (!match_esc(ban, sptr->info))
return 1;
return 0;
}
/** Registered user ban */
char *extban_modeR_conv_param(char *para)
{
static char retbuf[NICKLEN + 4];
strlcpy(retbuf, para, sizeof(retbuf));
if (do_nick_name(retbuf+3) == 0)
return NULL;
return retbuf;
}
int extban_modeR_is_banned(aClient *sptr, aChannel *chptr, char *banin, int type)
{
char *ban = banin+3;
if (IsRegNick(sptr) && !strcasecmp(ban, sptr->name))
return 1;
return 0;
}
@@ -335,23 +515,66 @@ void extban_init(void)
{
ExtbanInfo req;
memset(&req, 0, sizeof(ExtbanInfo));
req.flag = 'q';
#ifdef DISABLE_STACKED_EXTBANS
req.conv_param = extban_conv_param_nuh;
#else
req.conv_param = extban_conv_param_nuh_or_extban;
req.is_ok = extban_is_ok_nuh_extban;
#endif
req.options = EXTBOPT_ACTMODIFIER;
req.is_banned = extban_modeq_is_banned;
ExtbanAdd(NULL, req);
memset(&req, 0, sizeof(ExtbanInfo));
req.flag = 'j';
#ifdef DISABLE_STACKED_EXTBANS
req.conv_param = extban_conv_param_nuh;
#else
req.conv_param = extban_conv_param_nuh_or_extban;
#endif
req.is_banned = extban_modej_is_banned;
req.is_ok = extban_is_ok_nuh_extban;
req.options = EXTBOPT_ACTMODIFIER;
ExtbanAdd(NULL, req);
memset(&req, 0, sizeof(ExtbanInfo));
req.flag = 'n';
#ifdef DISABLE_STACKED_EXTBANS
req.conv_param = extban_conv_param_nuh;
#else
req.conv_param = extban_conv_param_nuh_or_extban;
req.is_ok = extban_is_ok_nuh_extban;
#endif
req.is_banned = extban_moden_is_banned;
req.options = EXTBOPT_ACTMODIFIER;
ExtbanAdd(NULL, req);
memset(&req, 0, sizeof(ExtbanInfo));
req.flag = 'c';
req.conv_param = extban_modec_conv_param;
req.is_banned = extban_modec_is_banned;
req.is_ok = extban_modec_is_ok;
req.options = EXTBOPT_INVEX;
ExtbanAdd(NULL, req);
req.flag = 'q';
req.conv_param = extban_conv_param_nuh;
req.is_banned = extban_modeq_is_banned;
ExtbanAdd(NULL, req);
req.flag = 'n';
req.conv_param = extban_conv_param_nuh;
req.is_banned = extban_moden_is_banned;
ExtbanAdd(NULL, req);
memset(&req, 0, sizeof(ExtbanInfo));
req.flag = 'r';
req.conv_param = extban_moder_conv_param;
req.is_banned = extban_moder_is_banned;
req.options = EXTBOPT_CHSVSMODE;
req.options = EXTBOPT_CHSVSMODE|EXTBOPT_INVEX;
ExtbanAdd(NULL, req);
memset(&req, 0, sizeof(ExtbanInfo));
req.flag = 'R';
req.conv_param = extban_modeR_conv_param;
req.is_banned = extban_modeR_is_banned;
req.options = EXTBOPT_INVEX;
ExtbanAdd(NULL, req);
/* When adding new extbans, be sure to always add a prior memset like above
* so you don't "inherit" old options (we are 2005 and the 20 nanoseconds
* per-boot/rehash is NOT EXACTLY a problem....) -- Syzop.
*/
}
+88 -16
View File
@@ -1,6 +1,6 @@
/************************************************************************
* IRC - Internet Relay Chat, s_unreal.c
* (C) 2003 Bram Matthys (Syzop) and the UnrealIRCd Team
* IRC - Internet Relay Chat, extcmodes.c
* (C) 2003-2007 Bram Matthys (Syzop) and the UnrealIRCd Team
*
* See file AUTHORS in IRC package for additional names of
* the programmers.
@@ -151,7 +151,7 @@ void extcmode_init(void)
load_extendedchanmodes();
}
Cmode *CmodeAdd(Module *reserved, CmodeInfo req, Cmode_t *mode)
Cmode *CmodeAdd(Module *module, CmodeInfo req, Cmode_t *mode)
{
short i = 0, j = 0;
char tmpbuf[512];
@@ -162,17 +162,23 @@ Cmode *CmodeAdd(Module *reserved, CmodeInfo req, Cmode_t *mode)
break;
else if (Channelmode_Table[i].flag == req.flag)
{
if (reserved)
reserved->errorcode = MODERR_EXISTS;
return NULL;
if (Channelmode_Table[i].unloaded)
{
Channelmode_Table[i].unloaded = 0;
break;
} else {
if (module)
module->errorcode = MODERR_EXISTS;
return NULL;
}
}
i++;
}
if (i == EXTCMODETABLESZ)
{
Debug((DEBUG_DEBUG, "CmodeAdd failed, no space"));
if (reserved)
reserved->errorcode = MODERR_NOSPACE;
if (module)
module->errorcode = MODERR_NOSPACE;
return NULL;
}
*mode = Channelmode_Table[i].mode;
@@ -186,12 +192,21 @@ Cmode *CmodeAdd(Module *reserved, CmodeInfo req, Cmode_t *mode)
Channelmode_Table[i].free_param = req.free_param;
Channelmode_Table[i].dup_struct = req.dup_struct;
Channelmode_Table[i].sjoin_check = req.sjoin_check;
Channelmode_Table[i].local = req.local;
Channelmode_Table[i].owner = module;
for (j = 0; j < EXTCMODETABLESZ; j++)
if (Channelmode_Table[j].flag)
if (j > Channelmode_highest)
Channelmode_highest = j;
if (reserved)
reserved->errorcode = MODERR_NOERROR;
if (module)
{
ModuleObject *cmodeobj = MyMallocEx(sizeof(ModuleObject));
cmodeobj->object.cmode = &Channelmode_Table[i];
cmodeobj->type = MOBJ_CMODE;
AddListItem(cmodeobj, module->objects);
module->errorcode = MODERR_NOERROR;
}
if (loop.ircd_booted)
{
make_cmodestr();
@@ -203,20 +218,75 @@ Cmode *CmodeAdd(Module *reserved, CmodeInfo req, Cmode_t *mode)
return &(Channelmode_Table[i]);
}
void CmodeDel(Cmode *cmode)
void unload_extcmode_commit(Cmode *cmode)
{
char tmpbuf[512];
/* TODO: remove from all channel */
if (cmode)
cmode->flag = '\0';
char tmpbuf[512];
aChannel *chptr;
if (!cmode)
return;
if (cmode->paracount == 1)
{
/* If we don't do this, we will crash anyway.. but then with severe corruption / suckyness */
ircd_log(LOG_ERROR, "FATAL ERROR: ChannelMode module for chanmode +%c is misbehaving: "
"all chanmode modules with parameters should be tagged PERManent.", cmode->flag);
abort();
}
for (chptr = channel; chptr; chptr = chptr->nextch)
if (chptr->mode.extmode && cmode->mode)
{
/* Unset channel mode and send MODE -<char> to other servers */
sendto_channel_butserv(chptr, &me, ":%s MODE %s -%c",
me.name, chptr->chname, cmode->flag);
sendto_serv_butone(NULL, ":%s MODE %s -%c 0",
me.name, chptr->chname, cmode->flag);
chptr->mode.extmode &= ~cmode->mode;
}
cmode->flag = '\0';
make_cmodestr();
make_extcmodestr();
/* Not unloadable, so module object support is not needed (yet) */
ircsprintf(tmpbuf, CHPAR1 "%s," CHPAR2 "%s," CHPAR3 "%s," CHPAR4 "%s",
EXPAR1, EXPAR2, EXPAR3, EXPAR4);
IsupportSetValue(IsupportFind("CHANMODES"), tmpbuf);
}
void CmodeDel(Cmode *cmode)
{
/* It would be nice if we could abort() here if a parameter module is trying to unload which is extremely dangerous/crashy/disallowed */
if (loop.ircd_rehashing)
cmode->unloaded = 1;
else
unload_extcmode_commit(cmode);
if (cmode->owner)
{
ModuleObject *cmodeobj;
for (cmodeobj = cmode->owner->objects; cmodeobj; cmodeobj = cmodeobj->next) {
if (cmodeobj->type == MOBJ_CMODE && cmodeobj->object.cmode == cmode) {
DelListItem(cmodeobj, cmode->owner->objects);
MyFree(cmodeobj);
break;
}
}
cmode->owner = NULL;
}
}
void unload_all_unused_extcmodes(void)
{
int i;
for (i = 0; i < EXTCMODETABLESZ; i++)
if (Channelmode_Table[i].flag && Channelmode_Table[i].unloaded)
{
unload_extcmode_commit(&Channelmode_Table[i]);
}
}
/** searches in chptr extmode parameters and returns entry or NULL. */
CmodeParam *extcmode_get_struct(CmodeParam *p, char ch)
{
@@ -249,6 +319,7 @@ CmodeParam *extcmode_duplicate_paramlist(CmodeParam *lst)
}
}
n = tbl->dup_struct(lst);
n->next = n->prev = NULL; /* safety (required!) */
if (head)
{
AddListItem(n, head);
@@ -454,6 +525,7 @@ aModejEntry *r = (aModejEntry *)r_in;
aModejEntry *w = (aModejEntry *)MyMalloc(sizeof(aModejEntry));
memcpy(w, r, sizeof(aModejEntry));
w->next = w->prev = NULL;
return (CmodeParam *)w;
}
+63 -21
View File
@@ -480,7 +480,7 @@ void clear_watch_hash_table(void)
/*
* add_to_watch_hash_table
*/
int add_to_watch_hash_table(char *nick, aClient *cptr)
int add_to_watch_hash_table(char *nick, aClient *cptr, int awaynotify)
{
unsigned int hashv;
aWatch *anptr;
@@ -516,11 +516,13 @@ int add_to_watch_hash_table(char *nick, aClient *cptr)
lp = anptr->watch;
anptr->watch = make_link();
anptr->watch->value.cptr = cptr;
anptr->watch->flags = awaynotify;
anptr->watch->next = lp;
lp = make_link();
lp->next = cptr->watch;
lp->value.wptr = anptr;
lp->flags = awaynotify;
cptr->watch = lp;
cptr->watches++;
}
@@ -536,6 +538,10 @@ int hash_check_watch(aClient *cptr, int reply)
unsigned int hashv;
aWatch *anptr;
Link *lp;
int awaynotify = 0;
if ((reply == RPL_GONEAWAY) || (reply == RPL_NOTAWAY) || (reply == RPL_REAWAY))
awaynotify = 1;
/* Get us the right bucket */
@@ -554,22 +560,46 @@ int hash_check_watch(aClient *cptr, int reply)
/* Send notifies out to everybody on the list in header */
for (lp = anptr->watch; lp; lp = lp->next)
{
if (IsWebTV(lp->value.cptr))
sendto_one(lp->value.cptr, ":IRC!IRC@%s PRIVMSG %s :%s (%s@%s) "
" %s IRC",
me.name, lp->value.cptr->name, cptr->name,
(IsPerson(cptr) ? cptr->user->username : "<N/A>"),
(IsPerson(cptr) ?
(IsHidden(cptr) ? cptr->user->virthost : cptr->
user->realhost) : "<N/A>"), reply == RPL_LOGON ?
"is now on" : "has left");
else
sendto_one(lp->value.cptr, rpl_str(reply), me.name,
lp->value.cptr->name, cptr->name,
(IsPerson(cptr) ? cptr->user->username : "<N/A>"),
(IsPerson(cptr) ?
(IsHidden(cptr) ? cptr->user->virthost : cptr->
user->realhost) : "<N/A>"), anptr->lasttime, cptr->info);
if (!awaynotify)
{
/* Most common: LOGON or LOGOFF */
if (IsWebTV(lp->value.cptr))
sendto_one(lp->value.cptr, ":IRC!IRC@%s PRIVMSG %s :%s (%s@%s) "
" %s IRC",
me.name, lp->value.cptr->name, cptr->name,
(IsPerson(cptr) ? cptr->user->username : "<N/A>"),
(IsPerson(cptr) ?
(IsHidden(cptr) ? cptr->user->virthost : cptr->
user->realhost) : "<N/A>"), reply == RPL_LOGON ?
"is now on" : "has left");
else
sendto_one(lp->value.cptr, rpl_str(reply), me.name,
lp->value.cptr->name, cptr->name,
(IsPerson(cptr) ? cptr->user->username : "<N/A>"),
(IsPerson(cptr) ?
(IsHidden(cptr) ? cptr->user->virthost : cptr->
user->realhost) : "<N/A>"), anptr->lasttime, cptr->info);
} else
{
/* AWAY or UNAWAY */
if (!lp->flags)
continue; /* skip away/unaway notification for users not interested in them */
if (reply == RPL_NOTAWAY)
sendto_one(lp->value.cptr, rpl_str(reply), me.name,
lp->value.cptr->name, cptr->name,
(IsPerson(cptr) ? cptr->user->username : "<N/A>"),
(IsPerson(cptr) ?
(IsHidden(cptr) ? cptr->user->virthost : cptr->
user->realhost) : "<N/A>"), cptr->user->lastaway);
else /* RPL_GONEAWAY / RPL_REAWAY */
sendto_one(lp->value.cptr, rpl_str(reply), me.name,
lp->value.cptr->name, cptr->name,
(IsPerson(cptr) ? cptr->user->username : "<N/A>"),
(IsPerson(cptr) ?
(IsHidden(cptr) ? cptr->user->virthost : cptr->
user->realhost) : "<N/A>"), cptr->user->lastaway, cptr->user->away);
}
}
return 0;
@@ -751,9 +781,17 @@ struct MODVAR ThrottlingBucket *ThrottlingHash[THROTTLING_HASH_SIZE+1];
void init_throttling_hash()
{
long v;
bzero(ThrottlingHash, sizeof(ThrottlingHash));
EventAddEx(NULL, "bucketcleaning", (THROTTLING_PERIOD ? THROTTLING_PERIOD : 120)/2, 0,
e_clean_out_throttling_buckets, NULL);
if (!THROTTLING_PERIOD)
v = 120;
else
{
v = THROTTLING_PERIOD/2;
if (v > 5)
v = 5; /* accuracy, please */
}
EventAddEx(NULL, "bucketcleaning", v, 0, e_clean_out_throttling_buckets, NULL);
}
int hash_throttling(struct IN_ADDR *in)
@@ -813,10 +851,14 @@ EVENT(e_clean_out_throttling_buckets)
{ p = strchr(serveropts, 'm'); *p = '\0'; }
if (!Hooks[18] && strchr(serveropts, 'M'))
{ p = strchr(serveropts, 'M'); *p = '\0'; }
if (!Hooks[49] && !Hooks[51] && strchr(serveropts, 'R'))
{ p = strchr(serveropts, 'R'); *p = '\0'; }
if (Hooks[17] && !strchr(serveropts, 'm'))
*p++ = 'm';
if (Hooks[18] && !strchr(serveropts, 'M'))
*p++ = 'M';
if ((Hooks[49] || Hooks[51]) && !strchr(serveropts, 'R'))
*p++ = 'R';
*p = '\0';
for (mi = Modules; mi; mi = mi->next)
if (!(mi->options & MOD_OPT_OFFICIAL))
@@ -869,9 +911,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;
}
}
+1 -1
View File
@@ -47,7 +47,7 @@ ConfigItem_help *Find_Help(char *command) {
int parse_help(aClient *sptr, char *name, char *help)
{
ConfigItem_help *helpitem;
aMotd *text;
aMotdLine *text;
if (BadPtr(help))
{
helpitem = Find_Help(NULL);
+335 -47
View File
@@ -37,6 +37,7 @@ Computing Center and Jarkko Oikarinen";
#ifndef _WIN32
#include <sys/file.h>
#include <pwd.h>
#include <grp.h>
#include <sys/time.h>
#else
#include <io.h>
@@ -89,13 +90,11 @@ extern MODVAR char *buildid;
time_t timeofday = 0;
int tainted = 0;
LoopStruct loop;
extern MODVAR aMotd *opermotd;
extern MODVAR aMotd *svsmotd;
extern MODVAR aMotd *motd;
extern MODVAR aMotd *rules;
extern MODVAR aMotd *botmotd;
extern MODVAR aMotd *smotd;
MODVAR MemoryInfo StatsZ;
#ifndef _WIN32
uid_t irc_uid = 0;
gid_t irc_gid = 0;
#endif
int R_do_dns, R_fin_dns, R_fin_dnsc, R_fail_dns, R_do_id, R_fin_id, R_fail_id;
@@ -141,6 +140,9 @@ char trouble_info[1024];
extern void url_init(void);
#endif
time_t highesttimeofday=0, oldtimeofday=0, lasthighwarn=0;
void save_stats(void)
{
FILE *stats = fopen("ircd.stats", "w");
@@ -166,7 +168,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 */
@@ -349,15 +355,14 @@ void server_reboot(char *mesg)
if (!(bootopt & (BOOT_TTY | BOOT_DEBUG)))
(void)close(2);
(void)close(1);
if ((bootopt & BOOT_CONSOLE) || isatty(0))
(void)close(0);
(void)close(0);
(void)execv(MYNAME, myargv);
#else
close_connections();
if (!IsService)
{
CleanUp();
(void)execv(myargv[0], myargv);
WinExec(cmdLine, SW_SHOWDEFAULT);
}
#endif
#ifndef _WIN32
@@ -450,7 +455,7 @@ static TS try_connections(TS currenttime)
/*
* Also when already connecting! (update holdtimes) --SRB
*/
if (!(aconf->options & CONNECT_AUTO))
if (!(aconf->options & CONNECT_AUTO) || (aconf->flag.temporary == 1))
continue;
cltmp = aconf->class;
@@ -486,7 +491,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.",
@@ -586,12 +591,11 @@ extern TS check_pings(TS currenttime)
reason : "no reason");
if (bconf->reason) {
if (IsPerson(cptr))
snprintf(banbuf,
sizeof banbuf - 1,
"User has been banned (%s)",
bconf->reason);
snprintf(banbuf, sizeof banbuf - 1,
"Banned (%s)", bconf->reason);
snprintf(banbuf, sizeof banbuf - 1,
"User has been banned (%s)", bconf->reason);
else
snprintf(banbuf, sizeof banbuf - 1,
"Banned (%s)", bconf->reason);
(void)exit_client(cptr, cptr, &me,
banbuf);
} else {
@@ -610,12 +614,12 @@ extern TS check_pings(TS currenttime)
/* Do spamfilter 'user' banchecks.. */
if (loop.do_bancheck_spamf_user && IsPerson(cptr))
{
if (find_spamfilter_user(cptr) == FLUSH_BUFFER)
if (find_spamfilter_user(cptr, SPAMFLAG_NOWARN) == FLUSH_BUFFER)
continue;
}
if (loop.do_bancheck_spamf_away && IsPerson(cptr) && cptr->user->away)
{
if (dospamfilter(cptr, cptr->user->away, SPAMF_AWAY, NULL) == FLUSH_BUFFER)
if (dospamfilter(cptr, cptr->user->away, SPAMF_AWAY, NULL, SPAMFLAG_NOWARN, NULL) == FLUSH_BUFFER)
continue;
}
/*
@@ -846,7 +850,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);
@@ -900,6 +904,145 @@ int error = 0;
extern time_t TSoffset;
extern int unreal_time_synch(int timeout);
extern MODVAR Event *events;
extern struct MODVAR ThrottlingBucket *ThrottlingHash[THROTTLING_HASH_SIZE+1];
/** This functions resets a couple of timers and does other things that
* are absolutely cruicial when the clock is adjusted - particularly
* when the clock goes backwards. -- Syzop
*/
void fix_timers(void)
{
int i, cnt;
aClient *acptr;
Event *e;
struct ThrottlingBucket *n;
struct ThrottlingBucket z = { NULL, NULL, {0}, 0, 0};
/* Client time stuff */
for (i = 0; i <= LastSlot; i++)
{
if (!(acptr = local[i]) || IsMe(acptr))
continue;
/* all (servers AND users) */
if (MyConnect(acptr))
{
if (acptr->since > TStime())
{
Debug((DEBUG_DEBUG, "fix_timers(): %s: acptr->since %ld -> %ld",
acptr->name, acptr->since, TStime()));
acptr->since = TStime();
}
if (acptr->lasttime > TStime())
{
Debug((DEBUG_DEBUG, "fix_timers(): %s: acptr->lasttime %ld -> %ld",
acptr->name, acptr->lasttime, TStime()));
acptr->lasttime = TStime();
}
if (acptr->last > TStime())
{
Debug((DEBUG_DEBUG, "fix_timers(): %s: acptr->last %ld -> %ld",
acptr->name, acptr->last, TStime()));
acptr->last = TStime();
}
}
/* users */
if (MyClient(acptr))
{
if (acptr->nextnick > TStime())
{
Debug((DEBUG_DEBUG, "fix_timers(): %s: acptr->nextnick %ld -> %ld",
acptr->name, acptr->nextnick, TStime()));
acptr->nextnick = TStime();
}
if (acptr->nexttarget > TStime())
{
Debug((DEBUG_DEBUG, "fix_timers(): %s: acptr->nexttarget %ld -> %ld",
acptr->name, acptr->nexttarget, TStime()));
acptr->nexttarget = TStime();
}
}
}
/* Reset all event timers */
for (e = events; e; e = e->next)
{
if (e->last > TStime())
{
Debug((DEBUG_DEBUG, "fix_timers(): %s: e->last %ld -> %ld",
e->name, e->last, TStime()-1));
e->last = TStime()-1;
}
}
/* Just flush all throttle stuff... */
cnt = 0;
for (i = 0; i < THROTTLING_HASH_SIZE; i++)
for (n = ThrottlingHash[i]; n; n = n->next)
{
z.next = (struct ThrottlingBucket *) DelListItem(n, ThrottlingHash[i]);
cnt++;
MyFree(n);
n = &z;
}
Debug((DEBUG_DEBUG, "fix_timers(): removed %d throttling item(s)", cnt));
Debug((DEBUG_DEBUG, "fix_timers(): updating nextping/nextconnect/nextdnscheck/nextexpire (%ld/%ld/%ld/%ld)",
nextping, nextconnect, nextdnscheck, nextexpire));
nextping = nextconnect = nextdnscheck = nextexpire = 1;
}
#ifndef _WIN32
static void generate_cloakkeys()
{
/* Generate 3 cloak keys */
#define GENERATE_CLOAKKEY_MINLEN 10
#define GENERATE_CLOAKKEY_MAXLEN 20 /* Length of cloak keys to generate. */
char keyBuf[GENERATE_CLOAKKEY_MAXLEN + 1];
int keyNum;
int keyLen;
int charIndex;
int value;
fprintf(stderr, "Here are 3 random cloak keys:\n");
for (keyNum = 0; keyNum < 3; ++keyNum)
{
keyLen = (getrandom8() % (GENERATE_CLOAKKEY_MAXLEN - GENERATE_CLOAKKEY_MINLEN + 1)) + GENERATE_CLOAKKEY_MINLEN;
for (charIndex = 0; charIndex < keyLen; ++charIndex)
{
switch (getrandom8() % 3)
{
case 0: /* Uppercase. */
keyBuf[charIndex] = (char)('A' + (getrandom8() % ('Z' - 'A')));
break;
case 1: /* Lowercase. */
keyBuf[charIndex] = (char)('a' + (getrandom8() % ('z' - 'a')));
break;
case 2: /* Digit. */
keyBuf[charIndex] = (char)('0' + (getrandom8() % ('9' - '0')));
break;
}
}
keyBuf[keyLen] = '\0';
(void)fprintf(stderr, "%s\n", keyBuf);
}
}
#endif
/* MY tdiff... because 'double' sucks.
* This should work until 2038, and very likely after that as well
* because 'long' should be 64 bit on all systems by then... -- Syzop
*/
#define mytdiff(a, b) ((long)a - (long)b)
#ifndef _WIN32
int main(int argc, char *argv[])
#else
@@ -913,6 +1056,8 @@ int InitwIRCD(int argc, char *argv[])
uid_t uid, euid;
gid_t gid, egid;
TS delay = 0;
struct passwd *pw;
struct group *gr;
#endif
#ifdef HAVE_PSTAT
union pstun pstats;
@@ -924,6 +1069,14 @@ int InitwIRCD(int argc, char *argv[])
#ifndef NO_FDLIST
TS nextfdlistcheck = 0; /*end of priority code */
#endif
memset(&botmotd, '\0', sizeof(aMotdFile));
memset(&rules, '\0', sizeof(aMotdFile));
memset(&opermotd, '\0', sizeof(aMotdFile));
memset(&motd, '\0', sizeof(aMotdFile));
memset(&smotd, '\0', sizeof(aMotdFile));
memset(&svsmotd, '\0', sizeof(aMotdFile));
#ifdef _WIN32
CreateMutex(NULL, FALSE, "UnrealMutex");
SetErrorMode(SEM_FAILCRITICALERRORS);
@@ -934,19 +1087,52 @@ int InitwIRCD(int argc, char *argv[])
euid = geteuid();
gid = getgid();
egid = getegid();
#ifndef IRC_USER
if (!euid)
{
fprintf(stderr,
"WARNING: You are running UnrealIRCd as root and it is not\n"
" configured to drop priviliges. This is _very_ dangerous,\n"
" as any compromise of your UnrealIRCd is the same as\n"
" giving a cracker root SSH access to your box.\n"
" You should either start UnrealIRCd under a different\n"
" account than root, or set IRC_USER in include/config.h\n"
" to a nonprivileged username and recompile.\n");
}
#endif /* IRC_USER */
# ifdef PROFIL
(void)monstartup(0, etext);
(void)moncontrol(1);
(void)signal(SIGUSR1, s_monitor);
# endif
#endif
#if defined(IRC_USER) && defined(IRC_GROUP)
if ((int)getuid() == 0) {
pw = getpwnam(IRC_USER);
gr = getgrnam(IRC_GROUP);
if ((pw == NULL) || (gr == NULL)) {
fprintf(stderr, "ERROR: Unable to lookup to specified user (IRC_USER) or group (IRC_GROUP): %s\n", strerror(errno));
exit(-1);
} else {
irc_uid = pw->pw_uid;
irc_gid = gr->gr_gid;
}
}
#endif
#ifdef CHROOTDIR
if (chdir(dpath)) {
perror("chdir");
fprintf(stderr, "ERROR: Unable to change to directory '%s'\n", dpath);
exit(-1);
}
ircd_res_init();
if (geteuid() != 0)
fprintf(stderr, "WARNING: IRCd compiled with CHROOTDIR but effective user id is not root!? "
"Booting is very likely to fail...\n");
init_resolver(1);
{
struct stat sb;
mode_t umaskold;
@@ -994,7 +1180,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
@@ -1092,6 +1282,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);
@@ -1164,9 +1362,14 @@ int InitwIRCD(int argc, char *argv[])
}
# endif
exit(0);
#endif
#ifndef _WIN32
case 'k':
generate_cloakkeys();
exit(0);
#endif
default:
bad_command();
return bad_command();
break;
}
}
@@ -1189,8 +1392,14 @@ int InitwIRCD(int argc, char *argv[])
#endif
#ifndef _WIN32
mkdir("tmp", S_IRUSR|S_IWUSR|S_IXUSR); /* Create the tmp dir, if it doesn't exist */
#if defined(USE_LIBCURL) && defined(REMOTEINC_SPECIALCACHE)
mkdir("cache", S_IRUSR|S_IWUSR|S_IXUSR); /* Create the cache dir, if using curl and it doesn't exist */
#endif
#else
mkdir("tmp");
#if defined(USE_LIBCURL) && defined(REMOTEINC_SPECIALCACHE)
mkdir("cache");
#endif
#endif
#ifndef _WIN32
/*
@@ -1206,14 +1415,19 @@ int InitwIRCD(int argc, char *argv[])
}
#endif
/* HACK! This ifndef should be removed when the restart-on-w32-brings-up-dialog bug
* is fixed. This is just an ugly "ignore the invalid parameter" thing ;). -- Syzop
*/
#ifndef _WIN32
if (argc > 0)
return bad_command(); /* This should exit out */
#endif
#ifndef _WIN32
fprintf(stderr, "%s", unreallogo);
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());
@@ -1234,7 +1448,7 @@ int InitwIRCD(int argc, char *argv[])
DeleteTempModules();
booted = FALSE;
/* Hack to stop people from being able to read the config file */
#if !defined(_WIN32) && !defined(_AMIGA) && DEFAULT_PERMISSIONS != 0
#if !defined(_WIN32) && !defined(_AMIGA) && !defined(OSXTIGER) && DEFAULT_PERMISSIONS != 0
chmod(CPATH, DEFAULT_PERMISSIONS);
#endif
init_dynconf();
@@ -1339,16 +1553,20 @@ int InitwIRCD(int argc, char *argv[])
Debug((DEBUG_ERROR, "Port = %d", portnum));
if (inetport(&me, conf_listen->ip, portnum))
exit(1);
set_non_blocking(me.fd, &me);
conf_listen->options |= LISTENER_BOUND;
me.umodes = conf_listen->options;
conf_listen->listener = &me;
run_configuration();
botmotd = (aMotd *) read_file(BPATH, NULL);
rules = (aMotd *) read_file(RPATH, NULL);
opermotd = (aMotd *) read_file(OPATH, NULL);
motd = (aMotd *) read_file_ex(MPATH, NULL, &motd_tm);
smotd = (aMotd *) read_file_ex(SMPATH, NULL, &smotd_tm);
svsmotd = (aMotd *) read_file(VPATH, NULL);
ircd_log(LOG_ERROR, "UnrealIRCd started.");
read_motd(conf_files->botmotd_file, &botmotd);
read_motd(conf_files->rules_file, &rules);
read_motd(conf_files->opermotd_file, &opermotd);
read_motd(conf_files->motd_file, &motd);
read_motd(conf_files->smotd_file, &smotd);
read_motd(conf_files->svsmotd_file, &svsmotd);
strncpy(me.sockhost, conf_listen->ip, sizeof(me.sockhost) - 1);
if (me.name[0] == '\0')
strncpyzt(me.name, me.sockhost, sizeof(me.name));
@@ -1389,7 +1607,7 @@ int InitwIRCD(int argc, char *argv[])
R_fin_id = strlen(REPORT_FIN_ID);
R_fail_id = strlen(REPORT_FAIL_ID);
#if !defined(IRC_UID) && !defined(_WIN32)
#if !defined(IRC_USER) && !defined(_WIN32)
if ((uid != euid) && !euid) {
(void)fprintf(stderr,
"ERROR: do not run ircd setuid root. Make it setuid a normal user.\n");
@@ -1397,29 +1615,45 @@ int InitwIRCD(int argc, char *argv[])
}
#endif
#if defined(IRC_UID) && defined(IRC_GID)
#if defined(IRC_USER) && defined(IRC_GROUP)
if ((int)getuid() == 0) {
if ((IRC_UID == 0) || (IRC_GID == 0)) {
/* NOTE: irc_uid/irc_gid have been looked up earlier, before the chrooting code */
if ((irc_uid == 0) || (irc_gid == 0)) {
(void)fprintf(stderr,
"ERROR: SETUID and SETGID have not been set properly"
"\nPlease read your documentation\n(HINT:SETUID or SETGID can not be 0)\n");
"\nPlease read your documentation\n(HINT: IRC_USER and IRC_GROUP in include/config.h cannot be root/wheel)\n");
exit(-1);
} else {
/*
* run as a specified user
*/
(void)fprintf(stderr,
"WARNING: ircd invoked as root\n");
(void)fprintf(stderr, " changing to uid %d\n",
IRC_UID);
(void)fprintf(stderr, " changing to gid %d\n",
IRC_GID);
(void)setgid(IRC_GID);
(void)setuid(IRC_UID);
(void)fprintf(stderr, "WARNING: ircd invoked as root\n");
(void)fprintf(stderr, " changing to uid %d\n", irc_uid);
(void)fprintf(stderr, " changing to gid %d\n", irc_gid);
if (setgid(irc_gid))
{
fprintf(stderr, "ERROR: Unable to change group: %s\n", strerror(errno));
exit(-1);
}
if (setuid(irc_uid))
{
fprintf(stderr, "ERROR: Unable to change userid: %s\n", strerror(errno));
exit(-1);
}
}
}
#endif
if (TIMESYNCH)
{
if (!unreal_time_synch(TIMESYNCH_TIMEOUT))
ircd_log(LOG_ERROR, "TIME SYNCH: Unable to synchronize time: %s. "
"This means UnrealIRCd was unable to synchronize the IRCd clock to a known good time source. "
"As long as the server owner keeps the server clock synchronized through NTP, everything will be fine.",
unreal_time_synch_error());
}
fix_timers(); /* Fix timers AFTER reading tune file AND timesynch */
write_pidfile();
Debug((DEBUG_NOTICE, "Server ready..."));
SetupEvents();
@@ -1474,14 +1708,68 @@ void SocketLoop(void *dummy)
for (;;)
#endif
{
time_t oldtimeofday;
oldtimeofday = timeofday;
#define NEGATIVE_SHIFT_WARN -15
#define POSITIVE_SHIFT_WARN 20
timeofday = time(NULL) + TSoffset;
if (timeofday - oldtimeofday < 0) {
sendto_realops("Time running backwards! %ld - %ld < 0",
timeofday, oldtimeofday);
if (oldtimeofday == 0)
oldtimeofday = timeofday; /* pretend everything is ok the first time.. */
if (mytdiff(timeofday, oldtimeofday) < NEGATIVE_SHIFT_WARN) {
/* tdiff = # of seconds of time set backwards (positive number! eg: 60) */
long tdiff = oldtimeofday - timeofday;
ircd_log(LOG_ERROR, "WARNING: Time running backwards! Clock set back ~%ld seconds (%ld -> %ld)",
tdiff, oldtimeofday, timeofday);
ircd_log(LOG_ERROR, "[TimeShift] Resetting a few timers to prevent IRCd freeze!");
sendto_realops("WARNING: Time running backwards! Clock set back ~%ld seconds (%ld -> %ld)",
tdiff, oldtimeofday, timeofday);
sendto_realops("Incorrect time for IRC servers is a serious problem. "
"Time being set backwards (either by TSCTL or by resetting the clock) is "
"even more serious and can cause clients to freeze, channels to be "
"taken over, and other issues.");
sendto_realops("Please be sure your clock is always synchronized before "
"the IRCd is started or use the built-in timesynch feature.");
sendto_realops("[TimeShift] Resetting a few timers to prevent IRCd freeze!");
fix_timers();
nextfdlistcheck = 0;
} else
if (mytdiff(timeofday, oldtimeofday) > POSITIVE_SHIFT_WARN) /* do not set too low or you get false positives */
{
/* tdiff = # of seconds of time set forward (eg: 60) */
long tdiff = timeofday - oldtimeofday;
ircd_log(LOG_ERROR, "WARNING: Time jumped ~%ld seconds ahead! (%ld -> %ld)",
tdiff, oldtimeofday, timeofday);
ircd_log(LOG_ERROR, "[TimeShift] Resetting some timers!");
sendto_realops("WARNING: Time jumped ~%ld seconds ahead! (%ld -> %ld)",
tdiff, oldtimeofday, timeofday);
sendto_realops("Incorrect time for IRC servers is a serious problem. "
"Time being adjusted (either by TSCTL or by resetting the clock) "
"more than a few seconds forward/backward can lead to serious issues.");
sendto_realops("Please be sure your clock is always synchronized before "
"the IRCd is started or use the built-in timesynch feature.");
sendto_realops("[TimeShift] Resetting some timers!");
fix_timers();
nextfdlistcheck = 0;
}
if (highesttimeofday+NEGATIVE_SHIFT_WARN > timeofday)
{
if (lasthighwarn > timeofday)
lasthighwarn = timeofday;
if (timeofday - lasthighwarn > 300)
{
ircd_log(LOG_ERROR, "[TimeShift] The (IRCd) clock was set backwards. "
"Waiting for time to be OK again. This will be in %ld seconds",
highesttimeofday - timeofday);
sendto_realops("[TimeShift] The (IRCd) clock was set backwards. Timers, nick- "
"and channel-timestamps are possibly incorrect. This message will "
"repeat itself until we catch up with the original time, which will be "
"in %ld seconds", highesttimeofday - timeofday);
lasthighwarn = timeofday;
}
} else {
highesttimeofday = timeofday;
}
oldtimeofday = timeofday;
LockEventSystem();
DoEvents();
UnlockEventSystem();
+2
View File
@@ -162,6 +162,8 @@ void free_client(aClient *cptr)
if (cptr->zip)
zip_free(cptr);
#endif
if (cptr->hostp)
unreal_free_hostent(cptr->hostp);
}
MyFree((char *)cptr);
}
+114 -132
View File
@@ -37,21 +37,6 @@ ID_Copyright("(C) 1990 Jarkko Oikarinen");
u_char touppertab[], tolowertab[];
#define tolowertab2 tolowertab
#endif
/*
* match()
* written by binary
*/
static inline int match2(const char *mask, const char *name)
{
u_char *m; /* why didn't the old one use registers */
u_char *n; /* because registers suck -- codemastr */
u_char cm;
u_char *wsn;
u_char *wsm;
m = (u_char *)mask;
cm = *m;
#ifndef USE_LOCALE
#define lc(x) tolowertab2[x] /* use mylowertab, because registers are FASTER */
@@ -59,134 +44,131 @@ static inline int match2(const char *mask, const char *name)
#define lc(x) tolower(x)
#endif
n = (u_char *)name;
if (cm == '*')
/* Match routine for special cases where escaping is needed in a normal fashion.
* Checks a string ('name') against a globbing(+more) pattern ('mask').
* Original by Douglas A Lewis (dalewis@acsu.buffalo.edu).
* Code based on hybrid7's version (match_esc()).
* Various modifications by Bram Matthys (Syzop).
* Instead of our previous code, this one is less optimized but actually _readable_ ;).
* Modifications I (Syzop) had to do vs the hybrid7 code:
* - Got rid of (u_char *) casts, since we already compile with
* chars defaulting to unsigned [or else major things break] ;).
* - Use 0 for match and non-zero for no match (a la strcmp), not the reverse.
* - Support for '_'.
* - Rip out support for '#'.
*/
int match_esc(const char *mask, const char *name)
{
const u_char *m = mask;
const u_char *n = name;
const u_char *ma = NULL;
const u_char *na = name;
while(1)
{
if (m[1] == '\0') /* mask is just "*", so true */
return 0;
}
else if (cm != '?' && lc(cm) != lc(*n))
return 1; /* most likely first chars won't match */
else if ((cm == '_') && (*n != ' ') && (*n != '_'))
return 1; /* false: '_' but first character not '_' nor ' ' */
else if ((*m == '\0') && (*n == '\0'))
return 0; /* true: both are empty */
else if (*n == '\0')
return 1; /* false: name is empty */
else
{
m++;
n++;
}
cm = lc(*m);
wsm = (char *)NULL;
wsn = (char *)NULL;
while (1)
{
if (cm == '*') /* found the * wildcard */
if (*m == '*')
{
m++; /* go to next char of mask */
if (!*m) /* if at end of mask, */
return 0; /* function becomes true. */
while (*m == '*') /* while the char at m is "*" */
{
m++; /* go to next char of mask */
if (!*m) /* if at end of mask, */
return 0; /* function becomes true. */
}
cm = *m;
if (cm == '\\') /* don't do ? checking if a \ */
{
cm = *(++m); /* just skip this char, no ? checking */
/* In case of something like: '*\', return false. */
if (!*m)
return 1;
}
else if (cm == '?') /* if it's a ? */
{
do
{
m++; /* go to the next char of both */
if (!*n)
return 1; /* false: no character left */
n++;
if (!*n) /* if end of test string... */
return (!*m ? 0 : 1); /* true if end of mask str, else false */
}
while (*m == '?'); /* while we have ?'s */
cm = *m;
if (!cm) /* last char of mask is ?, so it's true */
return 0;
}
cm = lc(cm);
while (lc(*n) != cm)
{ /* compare */
if (!*n) /* if at end of n string */
return 1; /* function becomes false. */
n++; /* go to next char of n */
}
wsm = m; /* mark after where wildcard found */
cm = lc(*(++m)); /* go to next mask char */
wsn = n; /* mark spot first char was found */
n++; /* go to next char of n */
continue;
while (*m == '*') /* collapse.. */
m++;
ma = m;
na = n;
}
if (cm == '?') /* found ? wildcard */
if (!*m)
{
cm = lc(*(++m)); /* just skip and go to next */
if (!*n)
return 1; /* false: no character left */
n++;
if (!*n) /* return true if end of both, */
{
if ((m[0] == '*') && (m[1] == '\0'))
return 0; /* special case.. a '?*' */
return (cm ? 1 : 0); /* false if end of test str only */
}
continue;
}
if (cm == '_') /* found _: check for '_' or ' ' */
return 0;
if (!ma)
return 1;
for (m--; (m > (const u_char *)mask) && (*m == '?'); m--);
if (*m == '*')
return 0;
m = ma;
n = ++na;
} else
if (!*n)
{
cm = lc(*(++m)); /* just skip and go to next */
if ((*n != ' ') && (*n != '_'))
return 1; /* false: didnt match or no character left */
n++;
if (!*n) /* return true if end of both, */
{
if ((m[0] == '*') && (m[1] == '\0'))
return 0; /* special case.. a '?*' */
return (cm ? 1 : 0); /* false if end of test str only */
}
continue;
while (*m == '*') /* collapse.. */
m++;
return (*m != 0);
}
if (cm == '\\') /* next char will not be a wildcard. */
{ /* skip wild checking, don't continue */
cm = lc(*(++m));
n++;
}
/* Complicated to read, but to save CPU time. Every ounce counts. */
if (lc(*n) != cm) /* if the current chars don't equal, */
if (*m != '?')
{
if (!wsm) /* if there was no * wildcard, */
return 1; /* function becomes false. */
n = wsn + 1; /* start on char after the one we found last */
m = wsm; /* set m to the spot after the "*" */
cm = lc(*m);
while (cm != lc(*n))
{ /* compare them */
if (!*n) /* if we reached end of n string, */
return 1; /* function becomes false. */
n++; /* go to next char of n */
if (*m == '\\')
if (!*++m)
return 1; /* unfinished escape sequence */
if ((lc(*m) != lc(*n)) && !((*m == '_') && (*n == ' ')))
{
if (!ma)
return 1;
m = ma;
n = ++na;
} else
{
m++;
n++;
}
wsn = n; /* mark spot first char was found */
} else
{
m++;
n++;
}
if (!cm) /* cm == cn, so if !cm, then we've */
return 0; /* reached end of BOTH, so it matches */
m++; /* go to next mask char */
n++; /* go to next testing char */
cm = lc(*m); /* pointers are slower */
}
return 1;
}
/** Same credit/copyright as match_esc() applies, except escaping removed.. ;p */
static inline int match2(const char *mask, const char *name)
{
const u_char *m = mask;
const u_char *n = name;
const u_char *ma = NULL;
const u_char *na = name;
while(1)
{
if (*m == '*')
{
while (*m == '*') /* collapse.. */
m++;
ma = m;
na = n;
}
if (!*m)
{
if (!*n)
return 0;
if (!ma)
return 1;
for (m--; (m > (const u_char *)mask) && (*m == '?'); m--);
if (*m == '*')
return 0;
m = ma;
n = ++na;
} else
if (!*n)
{
while (*m == '*') /* collapse.. */
m++;
return (*m != 0);
}
if ((lc(*m) != lc(*n)) && !((*m == '_') && (*n == ' ')) && (*m != '?'))
{
if (!ma)
return 1;
m = ma;
n = ++na;
} else
{
m++;
n++;
}
}
return 1;
}
/*
+22 -4
View File
@@ -16,6 +16,7 @@
*/
#include "config.h"
#include <stdio.h>
#if !defined(USE_SSL)
#include <string.h>
@@ -69,9 +70,9 @@
* This processes one or more 64-byte data blocks, but does NOT update
* the bit counters. There're no alignment requirements.
*/
static void *body(MD5_CTX *ctx, void *data, unsigned long size)
static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
{
unsigned char *ptr;
const unsigned char *ptr;
MD5_u32plus a, b, c, d;
MD5_u32plus saved_a, saved_b, saved_c, saved_d;
@@ -187,7 +188,7 @@ void MD5_Init(MD5_CTX *ctx)
ctx->hi = 0;
}
void MD5_Update(MD5_CTX *ctx, void *data, unsigned long size)
void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
{
MD5_u32plus saved_lo;
unsigned long used, free;
@@ -284,7 +285,7 @@ void MD5_Final(unsigned char *result, MD5_CTX *ctx)
* @param src[in] The input data used to generate the checksum.
* @param n[in] Length of data.
*/
void DoMD5(unsigned char *mdout, unsigned char *src, unsigned long n)
void DoMD5(unsigned char *mdout, const unsigned char *src, unsigned long n)
{
MD5_CTX hash;
@@ -292,3 +293,20 @@ MD5_CTX hash;
MD5_Update(&hash, src, n);
MD5_Final(mdout, &hash);
}
/** Generates an MD5 checksum - ASCII printable string (0011223344..etc..).
* @param dst[out] Buffer to store result in, this will be the result will be
* 32 characters + nul terminator, so needs to be at least 33 characters.
* @param src[in] The input data used to generate the checksum.
* @param n[in] Length of data.
*/
char *md5hash(unsigned char *dst, const unsigned char *src, unsigned long n)
{
unsigned char tmp[16];
DoMD5(tmp, src, n);
sprintf(dst, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
tmp[0], tmp[1], tmp[2], tmp[3], tmp[4], tmp[5], tmp[6], tmp[7], tmp[8],
tmp[9], tmp[10], tmp[11], tmp[12], tmp[13], tmp[14], tmp[15]);
return dst;
}

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