about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)Author
2024-02-05testsuite: Pass -nameopt to openssl s_client.Sebastian Andrzej Siewior
The default value for the -nameopt option changed in OpenSSL 3.2 from `oneline' to `utf8'. The `oneline' option also included a space around the fields which is not the case for `utf8'. This means that CN = my.first.domain.tld changed to CN=my.first.domain.tld and is now longer recognized, leading to test failure. This can be fixed by either going back to `oneline' or keeping `utf8' and adding additionally `space_eq'. Anoter way would be to teach the expect that the space is optional. Add explicit -nameopt option with `utf8,space_eq' which is understood by by OpenSSL 3.2 and earlier to make explicit. Remove the wildcard. Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
2024-01-232nd attempt to always show the correct config file name ...Alexander Barton
But we are getting there!
2024-01-23Testsuite: Test for the openssl command before using itAlexander Barton
And skip the tests calling it instead of failing!
2024-01-23Correctly show the configuration file usedAlexander Barton
2024-01-21Don't show the default config file name on config errorsAlexander Barton
The configuration can be set in drop-in files in the include directory, too, so it is not clear in which file it is actually missing.
2024-01-21Use a default "IncludeDir" only when no config file was specifiedAlexander Barton
No longer use a default built-in value for the "IncludeDir" directive when a configuration file was explicitly specified on the command line using "--config"/"-f": This way no default include directory is scanned when a possibly non-default configuration file is used which (intentionally) did not specify an "IncludeDir" directive. With this patch you now can use "-f /dev/null" for checking all built-in defaults, regardless of any local configuration files in the default drop-in directory (which would have been read in until this change).
2024-01-21Do not log channel keys ("passwords") for predefined channelsAlexander Barton
2024-01-21Deduce a server name when not set in the configurationAlexander Barton
The server "Name" in the "[Global]" section of the configuration file is optional now: When not set (or empty), ngIRCd now tries to deduce a valid IRC server name from the local host name ("node name"), possibly adding a ".host" extension when the host name does not contain a dot (".") which is required in an IRC server name ("ID"). This new behaviour, with all configuration parameters now being optional, allows running ngIRCd without any configuration file at all.
2024-01-20Explicitly test for the empty string in Channel_UserHasMode()Alexander Barton
Basically this is unnecessary, as Channel_UserModes() always returns a valid pointer and strchr() can deal with an empty (NULL-terminated) string perfectly fine, bit it makes the code a bit more obvious and silences the following warning: In function ‘Channel_UserHasMode’, inlined from ‘Channel_Kick’ at channel.c:384:7: channel.c:784:16: warning: ‘strchr’ reading 1 or more bytes from a region of size 0 [-Wstringop-overread] 784 | return strchr(Channel_UserModes(Chan, Client), Mode) != NULL; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This was seen with "gcc (Debian 12.2.0-14) 12.2.0" at least.
2024-01-18Annotate "fall through" cases to silence warningsAlexander Barton
Add a "/* fall through */" annotation to "case" statements which actually should "fall through" to silences GCC warning like this: hash.c: In function ‘jenkins_hash’: hash.c:110:27: warning: this statement may fall through [-Wimplicit-fallthrough=] 110 | case 12: c+=((UINT32)k[11])<<24; | ~^~~~~~~~~~~~~~~~~~~~~
2024-01-16Spelling fixes, mostly in file commentsAlexander Barton
2024-01-16Do IDENT requests even when DNS lookups are disabledAlexander Barton
Without this patch, disabling DNS in the configuration disabled IDENT lookups as well (for no good reason). This patch allows enabling/disabling DNS lookups and IDENT requests completely separately and enhances the messages sent to the client when "NoticeBeforeRegistration" is enabled, too. Thanks for reporting this, Miniontoby! Closes #291.
2024-01-11Channel Admins are not allowed to set Channel Owner status!Alexander Barton
This was reported back in April 2021, thanks Sarah! Subject: NGIRCD bug report Date: April 28 2021, 14:30:08 MESZ To: alex@barton.de Hello, I am writing to you to report a bug in ngircd. In any give channel, if an user is with mode +a (admin), he/she can sets mode +/-q(owner) to any other user. This is not inline with the documentation. I've looked into the code irc-mode.c, apparently an if block is missing. Below are the code snippets that I believe fixes the bug. This patch is what Sarah sent in. Thanks a lot!
2024-01-11Test suite: Update for OpenSSL 3.xAlexander Barton
2024-01-11Allow SSL client-only configurations without keys/certificatesAlexander Barton
You don't need to configure certificates/keys as long as you don't configure SSL-enabled listening ports. This can make sense when you want to only link your local daemon to an uplink server using SSL and only have clients on your local host or in you fully trusted network, where SSL is not required.
2024-01-112024 =:)Alexander Barton
2024-01-06Fix showing the "Ident" option in --configtest outputAlexander Barton
We tested for the wrong #define ... ooops!
2024-01-06Change GnuTLS "slot handling" messages to debug levelAlexander Barton
Those messages are about an internal implementation detail, not relevant for an administrator of ngIRCd.
2024-01-06Enlarge buffer for log messagesAlexander Barton
For example, SSL/TLS certificate information can easily get longer than 256 characters. So enlarge the log buffer to 1 KB.
2024-01-06Respect "SSLConnect" option for incoming connectionsAlexander Barton
Don't accept incoming plain-text ("non SSL") server connections for servers configured with "SSLConnect" enabled. If "SSLConnect" is not set for an incoming connection the server still accepts both plain-text and encrypted connections. This change prevents an authenticated client-server being able to force the server-server to send its password on a plain-text connection when SSL/TLS was intended.
2024-01-06Always initiate closing a connection on errors.Alexander Barton
Always try to close a connection with errors immediately, but try hard to avoid too much recursion. Without this patch, an outgoing server connection could get stuck in an "endless" state trying to write out data over and over again. This tries to fix 04de1423eb26.
2023-09-17Return ERR_NOTEXTTOSEND on empty PRIVMSG contentValentin Lorentz
They are dropped further down the line anyway; and sending ERR_NOTEXTTOSEND early matches other servers' behavior.
2023-09-17Merge branch 'katp32/master'Alexander Barton
Thanks Katherine Peeters for the patch and pull request! Closes #294. * katp32/master: Improve documentation for --syslog Added command line flag to enable syslog Split NoSyslog from behaviour of NoDaemon
2023-09-17Conf_Test(): Use yesno_to_str() instead of individual tests and outputAlexander Barton
2023-09-17Channel autojoin: Add missing variable in --configtest outputAlexander Barton
2023-09-17Silence compiler warning in Init_New_Client()Alexander Barton
Use strdup() instead of pointless strndup() to fix the following compiler warning: client.c: In function ‘Init_New_Client’: client.c:216:32: warning: ‘strndup’ specified bound 127 exceeds source size 5 [-Wstringop-overread] 216 | client->away = strndup(DEFAULT_AWAY_MSG, CLIENT_AWAY_LEN - 1); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2023-09-17Various fixes and enhancements for the "Autojoin" patchAlexander Barton
- Bring sample-ngircd.conf and ngircd.conf.5 description in line. - Fix configuration parsing, it always showed the 'Unknown variable "Autojoin"' error message, even when everything was perfectly fine. - And fix a build error (at least on macOS with Apple Clang 14): login.c:234:3: error: call to undeclared function 'IRC_JOIN'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] IRC_JOIN(Client, &Req); ^ The #include for the "irc.channel.h" header was missing! - Remove a unused variable that caused a compiler warning: login.c:222:12: warning: unused variable 'n' [-Wunused-variable] size_t i, n, channel_count = array_length(&Conf_Channels, sizeof(*conf_chan)); ^ - Add a explicit cast to fix a compiler warning: login.c:235:15: warning: assigning to 'char *' from 'const char[51]' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers] Req.argv[0] = conf_chan->name; ^ ~~~~~~~~~~~~~~~
2023-09-16Channel autojoin functionalityIvan Agarkov
2023-08-032023!Alexander Barton
2023-08-03Hide +i users on "WHOIS <pattern>"Alexander Barton
Let's behave like most(?) other IRC daemons (at least ircd2.11) and hide all +i users when WHOIS is used with a pattern. Otherwise privacy of this users is not guaranteed and the +i mode a bit useless ... Reported by Cahata on #ngircd, thanks!
2023-07-18Update the final "closing connection" messageAlexander Barton
Add some more information (nick name, user name, host name) and bring it in line with some other implementations (at least ircd2.11 and Hybrid).
2023-07-18Fix RPL_INVITING message: It must originate from the serverAlexander Barton
All numeric replies must originate from an IRC server, never from a client. So fix the RPL_INVITING message! Thanks tommyrot for reporting this! Closes #307.
2023-07-05Enhance log messages for refused connectionsAlexander Barton
2023-01-02Add "+DEBUG" to the version string only when configured with --enable-debugAlexander Barton
The debug log messages are always available and a runtime option (since commit c7de505c), but the assert()'s are only active when ngIRCd was configured with the "--enable-debug" option. So only add "+DEBUG" to the version string when the latter is the case.
2023-01-02Make the debug loglevel always availablemichi
This basically means to unifdef DEBUG in (almost) all places. We keep it in src/portab/portab.h so DEBUG stays available to enable assert(). Also add a comment about this.
2023-01-02Better validate MODE +k & +l parameters and return errorsAlexander Barton
Implement new numeric ERR_INVALIDMODEPARAM_MSG(696) and: - Reject channel keys with spaces and return ERR_INVALIDMODEPARAM_MSG; This was possible until now and resulted in garbled IRC commands later. - Reject empty channel keys and return ERR_INVALIDMODEPARAM_MSG; This was possible until now and resulted in garbled IRC commands later. - Return ERR_INVALIDMODEPARAM_MSG when user limit is out of bounds; This was silently ignored until now. Closes #290. Thanks Val Lorentz for reporting it!
2023-01-02Channel modes +k & +l: Always report an error when a parameter is missingAlexander Barton
This relates to #290 and considerations which errors to show when: and I think it is the better approach to give feedback instead of silently failing. Note that this code path is also used when handling modes of channels defined in "[Channel]" blocks in configuration files: in this case the client is the local server and we can't send messages to it, because it has no socket connection! Therefore we need those "is_machine" checks and log an error im this case.
2023-01-02Refactor Channel_Mode(), get rid of some nestingAlexander Barton
No functional changes.
2023-01-02Allow ircops to use WHO on any channel.michi
2022-12-27Refactor join_send_topic() into IRC_Send_Channel_Info() and use it for JOIN ↵Alexander Barton
and NJOIN handlers This reduces code duplication and brings the order of messages on JOIN and NJOIN in line. Fixes #288.
2022-12-26Send NAMES list and channel topic to NJOIN'ed usersewired
Send the NAMES list and channel topic to users "forcefully" joined to a channel using NJOIN, like they joined on their own using JOIN. Closes #288.
2022-12-26Channel mode setting: The local server is allowed to work on local channelsAlexander Barton
Don't forbid the local server to change modes on local channels: this happens when overriding modes on local (&) channels in the server configuration file, for example, and is perfectly fine. Without this patch, the server worked as expected but showed critical error messages for each local channel in its configuration file: "Got remote MODE command for local channel!? Ignored."
2022-12-25Spelling fixes, mostly in file commentsAlexander Barton
2022-12-17Use "||" instead of "|"hello-smile6
2022-12-17Fix gline/kline with cloaked hostnames9pfs
2022-12-17Convert uses of Log(LOG_DEBUG, ...) to LogDebug()Jules Maselbas
2022-11-01Improve documentation for --syslogKatherine Peeters
2022-11-01fix typo in conn.csalaaad2
2022-10-29Added command line flag to enable syslogKatherine Peeters
This allows -y / --syslog to be used to override -n / --nodaemon disabling it
2022-10-29Split NoSyslog from behaviour of NoDaemonKatherine Peeters
Allows syslog to be enabled/disabled seperately from daemonization