aboutsummaryrefslogtreecommitdiffstats
path: root/include/struct.h
Commit message (Collapse)AuthorAgeFilesLines
* For services who allow you to log in by account name but still allow you toGravatar Bram Matthys2014-07-051-0/+1
| | | | | | | | | | | | | | use a different nick: when you're logged in you are now considered registered as far as channel mode +M (only registered users may speak and +R (only registered users may join) are concerned. Same for user mode +R (only allow private messages from registered users). Tech: whenever services set SVID and it's not * and does not start with a number, then we consider this user to be 'logged in'. Whenever a user is set +r (s)he is also considered 'logged in'. This way it's compatible with both older and new services and doesn't introduce security issues with older services using servicetimestamp for nick tracking or other means. This issue was reported by ShawnSmith (#4318).
* Added set::spamfilter::stop-on-first-match [yes|no]:Gravatar Bram Matthys2014-01-201-12/+12
| | | | | | | | | | | | By default this is set to 'yes' which means that once a spamfilter matches UnrealIRCd will take action immediately and any additional (other) spamfilters will not be processed. When this is set to 'no' then after the first spamfilter match other spamfilters will still be checked. All of these matches will be logged and a message will go to IRCOps (snomask +S) for each one. The affected user, however, will only see one spamfilter action (eg: block or kill) which will be the spamfilter with the 'gravest action' (gzline is highest, block and warn are lowest).
* Added SVIDLEN so this value is now separate from NICKLEN. Previously if youGravatar Bram Matthys2014-01-121-1/+2
| | | | | would lower NICKLEN to 9 then services timestamps would be cut off. Reported by Jobe (#4248).
* - Use our own (v)snprintf if not available.Gravatar Bram Matthys2012-11-041-1/+4
|
* - Fix bug where recursive includes would hang the IRCd, patch fromGravatar Bram Matthys2012-10-141-0/+14
| | | | binki with some minor modifications, reported by warg (#3919).
* - Add 'class' option to allow/deny channel so you can allow/denyGravatar Bram Matthys2012-10-061-2/+2
| | | | users based on their class. Patch from fspijkerman (#4125).
* Add optional oper::require-modes setting to the oper block. (#4008 by katsklaw)Gravatar Nathan Phillip Brink2011-07-131-1/+1
| | | | | | Any attempt to /OPER by someone who doesn't have one of the listed usermodes is rejected. This can be used to restrict oper blocks to registered nicks (+r) or secure clients (SSL, +z).
* - Add support for server-enforced mode locks (MLOCK).Gravatar William Pitcock2012-05-041-0/+2
| | | | | | This allows the IRCd to enforce MLOCKs that are set by services, which eliminates clashes between users setting modes and services enforcing it's mlock on channels. (#3055)
* - Add support for account-notify client capability (#4098). This capabilityGravatar William Pitcock2012-04-091-0/+1
| | | | can be used to request passive notifications for accountname changes.
* - Added 'away-notify' client capability, which informs the client of any ↵Gravatar Bram Matthys2012-04-091-0/+1
| | | | AWAY state changes of users on the same channel. Patch from nenolod (#4097).
* - Added support for SASL, patch from nenolod (#4079).Gravatar Bram Matthys2012-03-251-0/+6
|
* - Moved nospoof to config file, suggested by and patch from nenolod (#4078).Gravatar Bram Matthys2012-02-261-6/+0
| | | | | This means ping cookies are now controlled by set::ping-cookie [yes|no]. The default is 'yes' (enabled).
* - Advertise 'tls' (STARTTLS) capability in CAP. Patch from nenolod (#4081).Gravatar Bram Matthys2012-01-221-0/+1
|
* - Add CAP support. Currently implemented are: multi-prefix (NAMESX), andGravatar Bram Matthys2012-01-201-0/+1
| | | | userhost-in-names (UHNAMES). Patch from nenotopia (#4018, #4066)
* - Services coders: Added support for ESVID. Instead of a number you canGravatar Bram Matthys2011-12-251-1/+9
| | | | | | | 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).
* ** 3.2.9 release **Gravatar Bram Matthys2011-11-051-0/+2
|
* - Fix remote MOTDs for URLs whose path components containGravatar binki2010-12-251-1/+0
| | | | | subdirectories, in the process much simplifying my remote MOTD code. Reported by goldenwolf (#3986).
* - Win32: show missing /INFO in GUIGravatar Bram Matthys2010-12-121-1/+1
|
* ...Gravatar Bram Matthys2010-12-121-4/+0
|
* Major win32 build system cleanup:Gravatar Bram Matthys2010-12-121-1/+1
| | | | | | | | | | | - 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
* - Updated doc/compiling_win32.txt with current free MS SDK information,Gravatar Bram Matthys2010-10-241-3/+0
| | | | patch from goldenwolf.
* - IPv6 clones detection support (#2321). allow::ipv6-clone-mask determines ↵Gravatar binki2010-08-151-0/+3
| | | | 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.
* - Added error message for unknown directives in the "files" blockGravatar binki2010-06-161-9/+56
| | | | | | | - 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.
* linking bug & ipv6 thing (the latter is completely untested):Gravatar Bram Matthys2010-04-251-0/+2
| | | | | | | | | | | | | | | - 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).
* PROTOCTL EAUTH/SERVERS/new linking protocol:Gravatar Bram Matthys2010-01-011-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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; };
* - Added support for STARTTLS. This allows users to switch to SSL withoutGravatar Bram Matthys2009-12-061-1/+6
| | | | | | | | | | 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()
* - Applied patch from ohnobinki (#0003863) which makes run-time configurationGravatar Bram Matthys2009-11-221-0/+7
| | | | of files (tune, pid, motd) possible.
* - Don't do show-connect-info on servers-only portsGravatar Bram Matthys2009-04-221-0/+2
|
* - #0002833 reported and patched by tabrisnet, implementing UHNAMESGravatar Bram Matthys2008-08-191-0/+3
| | | | [Backport, only slightly modified for speed]
* - Backport from 3.3 away notification from Oct 2006, this is v0, a furtherGravatar Bram Matthys2008-02-291-0/+1
| | | | patch will follow soon and the numerics will be changed.
* - Added oper CIDRGravatar stskeeps2007-06-141-0/+1
|
* - #0002846 reported by alex323, patched by WolfSage, regarding local ircop ↵Gravatar Bram Matthys2007-04-251-1/+1
| | | | cannot issue CLOSE command
* - Changed password length from 32 to 48, is allocated dynamically anyway.Gravatar Bram Matthys2007-02-061-1/+1
|
* - Added ability to enable "no fake lag" for a user through through services ↵Gravatar Bram Matthys2007-01-221-1/+6
| | | | | | | | | 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.
* - Made it so undefining SHOW_SECRET (not the default) properly hides +s ↵Gravatar Bram Matthys2006-07-041-0/+5
| | | | | | channels from ircops (except netadmins), as it should. Reported and patch supplied by Jason (#0002965).
* - Added 'real' aliases, this are aliases that map to real commands, so you ↵Gravatar Bram Matthys2006-05-211-1/+1
| | | | | | | | | | | | 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.
* - Made the IRCd calculate the cloaked host only once upon connect, and store ↵Gravatar Bram Matthys2006-04-161-0/+7
| | | | | | | | | | | | | | | | | | | | (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.
* - Fixed bug in currently unused code, reported by DeadNotBuried (#0002835).Gravatar Bram Matthys2006-02-261-5/+5
| | | | | | | | | | | | | | | | | | - 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 ;).
* - Redid whole CGI:IRC support. Configuration is now moved to cgiirc { } blocks.Gravatar Bram Matthys2006-02-161-0/+14
| | | | | | | 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).
* - Added CGI:IRC host spoofing support. This means you can mark specific ↵Gravatar Bram Matthys2006-02-141-1/+10
| | | | | | | | | 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.
* - Made the "max bans per channel" setting dynamic. This can be changed by ↵Gravatar Bram Matthys2006-01-161-2/+0
| | | | | | | | | | 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.
* - Added option to apply spamfilters to aliases as well (such as /MS, etc). ↵Gravatar Bram Matthys2005-12-091-0/+1
| | | | | | | | | 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.
* - Added 'warn' target which is basically the same as 'block' except it does ↵Gravatar Bram Matthys2005-09-251-0/+4
| | | | | | | | | | | | | | | | 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).
* CMDLINE_CONFIG change & FAKELAG_CONFIGURABLE added:Gravatar Bram Matthys2005-08-281-0/+3
| | | | | | | | | | | | | | | | - CMDLINE_CONFIG behavior change: command line configuration is now still permitted if #undef'ed (which is the default) if uid==euid && gid==egid, since it doesn't make any sense to disable it then and is in fact just plain annoying. - Added FAKELAG_CONFIGURABLE option in include/config.h, this enables an option called class::options::nofakelag, which disables "fake lag" for a certain class (that is: the artificial delay introduced by the ircd to prevent flooding is turned off, allowing the user to flood at full speed). IT'S USE IS DISCOURAGED UNLESS YOU REALLY KNOW WHAT YOU ARE DOING. Sorry, option is not in ./Config -advanced since I don't get autoconf working, but it's such a scary option that this might as well be a good idea to keep in config.h anyway. This feature has been suggested for several years (and refused), but the final suggestion (with implementation specific hints) came from Gilou in bug #0002207. - changed a comment slightly in m_tkl.c to get rid of harmless warning ;)
* - Fixed a TKL crash on incorrect *line, reported by nanookles1234 (#0002524).Gravatar Bram Matthys2005-05-261-0/+5
| | | | | | | | | | | | | | - Redid include dependencies in Makefile, this makes things safer because on any .h change it would force a recompile of all files, but it could mean things will be a bit slower for us coders unless we tweak it later on. - Changed whois a bit to print less useless results. - Added several indicators to the "detect binary incompatible modules"-system such as detecting of a ziplinks module on non-ziplinks (on windows this is ok however), nospoof module on a a server without nospoof server, etc. Hopefully this will help some people preventing odd crashes because they did not recompile or (re)install modules properly. - Added './unreal backtrace', so far this has only been tested on Linux and FreeBSD. - Fixed a bug making ./Config not load the previously stored settings on Solaris 10 and probably other Unixes, reported by lion-o (#0002474).
* REVERT OF PREVIOUS 2, CHANGED TO AUTO-CONVERT:Gravatar Bram Matthys2005-02-271-1/+1
| | | | | | | - If a locop now has can_override/can_gkline/can_gzline we will print out a warning and convert it to globops. This is also what we always did for can_globalroute/can_gkill (well, except the warning). Giving such NETWORK (GLOBAL) privileges to a LOCAL operator does not make any sense and is therefore no longer allowed.
* - No longer cutoff nick upon illegal character -- just reject the whole ↵Gravatar Bram Matthys2005-02-191-1/+2
| | | | | | | | | | | | | | | | | nick. The nick is still cutoff if the nick is too long. Basically this is the same way as Hybrid does it so it should work ok :). - Added nick character system. This allows you to choose which (additional) characters to allow in nicks via set::allowed-nickchars. See unreal32docs.html -> section 3.16 for a list of available languages and more info on how to use it. Current list: dutch, french, german, italian, spanish, euro-west, chinese-trad, chinese-simp, chinese-ja, chinese. If you wonder why your language is not yet included or why a certain mistake is present, then please understand that we are most likely not experienced (at all) in your language. If you are a native of your language (or know the language well), and your language is not included yet or you have some corrections, then contact syzop@vulnscan.org or report it as a bug on http://bugs.unrealircd.org/
* - Added channelmode +j (jointhrottle), syntax: /mode #chan +j X:Y, and then ↵Gravatar Bram Matthys2005-02-121-0/+49
| | | | | | | | it will throttle the number of joins per-user to X in Y seconds. Idea from Angrywolf (who wrote a module that did this before). This might need some more testing :). It's enabled by default but can be #undef'ed in include/config.h (line 449).
* - Added spamfilter topic support ('t' in /spamfilter, or 'topic' in conf), ↵Gravatar Bram Matthys2005-02-041-0/+1
| | | | | | suggested by Z3l3zT (#0001929).
* - Made m_template.c use CommandAdd() and CMD_FUNC()Gravatar Bram Matthys2005-02-031-0/+6
| | | | | | | - Modulized a lot of commands and related subfunctions: NICK (750 lines), USER (200), MODE (2300), WATCH (250), JOIN (600), PART (250), MOTD (100), OPERMOTD (100), BOTMOTD (100), LUSERS (100). More will follow soon (probably including more subfunctions related to existing commands).