summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)Author
2013-10-16Add support for arc4randomFederico G. Schwindt
If arc4random is present it will be used over the srand/rand interface. This fixes some warnings in OpenBSD-current.
2013-10-16Fix another strcat warning missed in commit 4c5b43Federico G. Schwindt
2013-10-07ngircd.c, main(): use strlcat() instead of strcat()Alexander Barton
This fixes the following warning on OpenBSD 5.3: ngircd.o(.text+0xeb4): In function `main': src/ngircd/ngircd.c:300: warning: strcat() is almost always misused, please use strlcat() Thanks to Götz Hoffart for reporting this!
2013-10-01Actually KILL clients on GLINE/KLINEAlexander Barton
Kill all clients that match a new GLINE/KLINE mask and genrate apropriate KILL commands. These KILL commands can be superfluous, but are required when the IRC Operator isn't allowd to set remote G-Lines or if there are older servers in the network that don't kill clients on GLINE/KLINE. Closes bug #156.
2013-10-01Don't forward KILL commands for unknown clientsAlexander Barton
2013-10-01New function IRC_KillClient() to kill clientsAlexander Barton
The old local function Kill_Nick() in irc.c has been an ugly hack. This patch implements a generic function for killing clients. Adjust all callers of Kill_Nick() and respect the return code!
2013-09-26Adjust log messages for invalid and spoofed prefixesAlexander Barton
Now invalid prefixes aren't logged no more when originating from an other server (besides in debug mode), and spoofed prefixes are correctly logged using LOG_WARNING (from an other server) or LOG_ERR (from a client) levels. In addition, the log message texts have been adjusted to better reflect what will happen: commands with invalid prefixes are ignored and logged, commands with spoofed prefixes will result in the client being disconncted (regular users) or the command being ignored (other servers). This cleans up logging of commands related to already KILL'ed clients.
2013-09-25Remove CLIENT.oper_by_my, Client_SetOperByMe() and Client_OperByMe()Alexander Barton
All places where Client_OperByMe() is used can either be converted to Client_HasMode(Client, 'o') or Op_Check(). And Op_Check() itself can use the connection handle for deciding whether the IRC Operator is a local user or not.
2013-09-24Add support to show user links using "STATS L"Federico G. Schwindt
Change "stats L" to show servers and user links and restrict it to IRC Operators.
2013-09-24Log an error (not info) when working directory can't be changedAlexander Barton
2013-09-17Change the certificate fingerprint digest to sha256Federico G. Schwindt
While here correct some indentation.
2013-09-17Change cipher defaultsFederico G. Schwindt
Switch cipher defaults to HIGH:!aNULL:@STRENGTH (OpenSSL) or SECURE128 (GnuTLS).
2013-09-16Merge remote-tracking branch 'alex/bug162-SSLCipherList'Alexander Barton
* alex/bug162-SSLCipherList: Cipher list selection for GnuTLS ConnSSL_Init_SSL(): correctly set CONN_SSL flag Cipher list selection for OpenSSL ConnSSL_InitLibrary(): Code cleanup
2013-09-16Fix server reconnectionFederico G. Schwindt
In some error cases conn_id will be left as SERVER_WAIT and subsequently ignored in Check_Servers(). Ensure conn_id is set to NONE before returning from New_Server() if we couldn't establish the connection. Prompted by a report from gabrielgi-at-gmail-dot-com.
2013-09-16Don't ignore SSL-related errors during startupAlexander Barton
Without this patch, ngIRCd ignores SSL-related messages and continues to start up but only listens on plain text communication ports -- and this most probably isn't what the administrator wanted ... Closes bug #163.
2013-09-15Cipher list selection for GnuTLSAlexander Barton
This patch implements the missing functionality for cipher list selection using GnuTLS (our OpenSSL code has this already).
2013-09-15ConnSSL_Init_SSL(): correctly set CONN_SSL flagAlexander Barton
The CONN_SSL flag must be set before any calls to ConnSSL_Free()!
2013-09-15Cipher list selection for OpenSSLAlexander Barton
This patch introduces the possibility to arbitrarily select ciphers which should be promoted resp. declined when establishing a SSL connection with a client by implementing the new configuration option "CipherList". By default, OpenSSL would accept low and medium strength and RC-4 ciphers, which nowadays are known to be broken. This patch only implements the feature for OpenSSL. A GnuTLS counterpart has to be implemented in another patch ... Original patch by Bastian <bastian-ngircd@t6l.de>. Closes bug #162.
2013-09-15ConnSSL_InitLibrary(): Code cleanupAlexander Barton
2013-09-07TRACE: fix error message when there are too many parametersAlexander Barton
ircd 2.11 ignores additional parameters silently, but I don't think that this is the correct behaviour either ...
2013-09-07IRC_SetPenalty(): Code cleanupAlexander Barton
2013-09-06Add more penalty timesFederico G. Schwindt
Ensure before every numeric 461 there is a call to IRC_SetPenalty().
2013-09-06Rework check for number of parametersFederico G. Schwindt
Move most of the checks that return numeric 461 into Handle_Request().
2013-09-05Reorder checksFederico G. Schwindt
Move oper and Conf_MorePrivacy checks after checking the number of parameters.
2013-09-05Move the IRC_SetPenalty() call after the assertsFederico G. Schwindt
2013-09-05Correct numeric returned by whoisFederico G. Schwindt
As per RFC whois should return 431 if no nick is provided. While here convert upper check to use irc-macros. As a bonus we get to set the penalty for free.
2013-09-05Minor cosmetic changeFederico G. Schwindt
Add a define to indicate any client. While I'm here use hex values instead of decimal, it's somewhat clearer that they could be OR'ed together.
2013-09-03getpid.sh: use /bin/pidof when availableAlexander Barton
2013-09-03Don't enforce channel types for other serversAlexander Barton
The configuration option "AllowedChannelTypes" must only be enforced for regular clients and not for remote servers. Channels created by other servres are always allowed, because they already exist and the daemon must stay in sync with the network.
2013-09-02Only log "IDENT ... no result" when IDENT was looked upAlexander Barton
Without this patch, ngIRCd logged the "IDENT lookup for connection X: no result"-message even when IDENT lookups have been disabled using the "Ident = no" configuration option, which is a little bit misleading. Reported by "btwe" in #ngircd.
2013-08-31ngircd: use setgid/setuid errno value in error pathFlorian Westphal
Need to use saved errno value as strerror argument, else you get bogus output ('success') in the log message.
2013-08-31Show connection flag "s" (SSL) in RPL_TRACE{LINK|SERVER}Alexander Barton
Now you can check if a server-to-server link is SSL-encrypted or not using the IRC "TRACE" command. Idea by Götz Hoffart, thanks!
2013-08-27Change away to be allocated dynamicallyFederico G. Schwindt
2013-08-27Ignore "operation not permitted" while dropping groupsAlexander Barton
Without this exception, you can't start ngIRCd as user any more, it is analog to setting the user and group ID.
2013-08-27ngircd: discard supplementary group ids on startupFlorian Westphal
The intention was to switch to JUST uid:gid, but setgid is not sufficient. Reported-by: Michael Scherer <misc@zarb.org>
2013-08-26Merge branch 'bug159-WebircIPA'Alexander Barton
* bug159-WebircIPA: Introduce Free_Client() function to free CLIENT structure Save client IP address text for "WebIRC" users
2013-08-26Introduce Free_Client() function to free CLIENT structureAlexander Barton
2013-08-26Save client IP address text for "WebIRC" usersAlexander Barton
This patch introduces a new field in the CLIENT structure, "ipa_text", which points to an optional textual representation of the client IP address (or NULL) which can be used to store the "real" IP address information of a client using the "WEBIRC" protocol. Without this patch, ngIRCd ignored the <ip-address> paramater ... In addition, the functions Client_SetIPAText() and Client_IPAText() have been introduced to set and get the textual representation of the client IP address. Client_IPAText() can be used even when no "IP address text" has been set before, it then returns the real IP address of the connection. Closes bug #159.
2013-08-26Implement new configuration option "DefaultUserModes"Alexander Barton
The new configuration option "DefaultUserModes" lists user modes that become automatically set on new local clients right after login. Please note that only modes can be set that the client could set on itself, you can't set "a" (away) or "o" (IRC Op), for example! User modes "i" (invisible) or "x" (cloaked) etc. are "interesting", though. Default: set no modes (like without this patch). Closes bug #160.
2013-08-26Change strdup() to strndup()Federico G. Schwindt
2013-08-26private strndup() implementation in case libc does not provide itFederico G. Schwindt
2013-08-25Silence warningFederico G. Schwindt
Cast the result of the operation to long, not the time(NULL) call. On systems where sizeof(time_t) is other than long this will produce a warning.
2013-08-25Plug memory leakFederico G. Schwindt
2013-08-25Implement account login supportFederico G. Schwindt
This is done via the `accountname' METADATA command and used to automatically identify users after netsplits or across service restarts.
2013-08-24Fix spellingFederico G. Schwindt
2013-08-23Correctly handle return code of Handle_Write()Alexander Barton
There have been code paths that ignored the return code of Handle_Write() when sending "notice auth" messages to new clients connecting to the server. But because Handle_Write() would have closed the client connection again if an error occurred, this would have resulted in new errors and assert()'s later on that could have crashed the server (denial of service). Only setups having the configuration option "NoticeAuth" enabled are affected, which is not the default. CVE-2013-5580.
2013-08-21Enhance log messages on "recursive" connection errorsAlexander Barton
2013-08-21Add some assert() calls to ng_ipaddr libraryAlexander Barton
2013-08-17Merge branch 'ssl-log-messages'Alexander Barton
* ssl-log-messages: Make SSL-related log messages more readable ConnSSL_HandleError: Code cleanup, more documentation
2013-08-14Make SSL-related log messages more readableAlexander Barton
- Don't use internal function names but describe the error. - Streamline wording, use "SSL" for SSL and TLS. - Streamline punctuation.