1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-28 16:16:38 +02:00
Commit Graph

737 Commits

Author SHA1 Message Date
Bram Matthys d272d2d6a0 - Services coders: Added support for ESVID. Instead of a number you can
now store a string (of max NICKLEN size) as service stamp. See
  protoctl.txt and serverprotocol.html in doc/technical for more
  information.
  Patch from nenotopia (#3966).
2011-12-25 14:26:53 +01:00
Bram Matthys e8244902f8 - Tweak: send actual channel name and not user supplied channel in KICK, reported and patch by Stealth (#3298). 2011-12-25 14:06:19 +01:00
Bram Matthys 0e4d604c04 - Added patch from nenotopia to use more modern LUSERS numerics (#3967). 2011-12-25 12:55:02 +01:00
Nathan Phillip Brink 5a57a8f496 - Include CMDS=STARTTLS in ISUPPORT/numeric 005 to let clients discover STARTTLS support through VERSION, before or after registration (#4064). 2011-12-20 22:27:16 +00:00
Bram Matthys 5298c36d64 some last-minute text fixes 2011-11-05 10:11:58 +01:00
Nathan Phillip Brink 1157b77e5e Add .hgignore, removing replaced .cvsignore files. 2011-07-13 13:11:57 -04:00
binki b994ad33bd - Enable parallel building of modules. 2010-12-15 18:45:31 +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 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 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
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
binki 08f86d9b2e - Always display the real host of successful OPERing up. Reported by Josh. (#3950) 2010-09-20 12:30:59 +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 c144008217 - Fix /msg IRC WHOIS response for persons with secure connections. (#3947) 2010-08-24 16:46:29 +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 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
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
binki 4cc0244c58 - Remove remaining nameser.h references from Makfiles. 2010-07-12 01:25:14 +00:00
binki 2a6a4b31ff - Fixed a few trivial compilation warnings. 2010-06-29 03:00:34 +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
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 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 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
binki 9f6492169b - SVSMODE now triggers HOOKTYPE_UMODE_CHANGE and HOOKTYPE_REMOTE_CHANMODE. 2010-05-17 02:41:43 +00:00
binki 38b7350f7c Remove m_addline from commands.so 2010-05-15 21:17:57 +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
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 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
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 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 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 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
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
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
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 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 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
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 5ce5d49c89 - Win32 compile fixes. 2008-12-17 16:46:20 +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