1
0
mirror of https://github.com/osmarks/ngircd.git synced 2024-10-27 20:36:18 +00:00
Commit Graph

3601 Commits

Author SHA1 Message Date
Alexander Barton
b4c8e74ccb Use a default "IncludeDir" only when no config file was specified
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-21 20:15:47 +01:00
Alexander Barton
3ab6c85284 Add an introduction and generic info to doc/QuickStart.md 2024-01-21 14:21:57 +01:00
Alexander Barton
ae9cfade44 Debian package: Configure the system CA certificates store 2024-01-21 14:14:59 +01:00
Alexander Barton
aa92837b02 Do not log channel keys ("passwords") for predefined channels 2024-01-21 14:14:59 +01:00
Alexander Barton
c349f2a6ba CI: Fix YAML, there shouldn't have been tabs in the file! 2024-01-21 01:51:46 +01:00
Alexander Barton
7dcf9f1ad3 CI: Looks like "cache-apt-pkgs-action" needs exact package names
And list only one package per line; way easier to read and maintain :-)
2024-01-21 01:37:52 +01:00
Alexander Barton
2984dad8b4 "ngIRCd CI" GitHub Action: Update and use cache-apt-pkgs-action 2024-01-21 01:20:46 +01:00
Alexander Barton
bb8b6f0fba Make the description of the "Info" option more precise
The "Info" option in the "[Global]" section is optional (so comment it
out in the sample configuration file) and set to the server software
name and its version when not set (so add this information to the sample
configuration file and the ngircd.conf(5) manual page).
2024-01-21 01:20:46 +01:00
Alexander Barton
3c39094b52 Deduce a server name when not set in the configuration
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-21 01:20:46 +01:00
Alexander Barton
669d71f3fe Explicitly test for the empty string in Channel_UserHasMode()
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-20 16:43:54 +01:00
Alexander Barton
dbfe54ce62 Update the AUTHORS.md file 2024-01-20 16:43:54 +01:00
Alexander Barton
39d41001bc Update the mailing list address to ngircd@lists.barton.de 2024-01-20 16:43:54 +01:00
Alexander Barton
e339d9c381 Convert the AUTHORS file to Markdown 2024-01-20 16:43:54 +01:00
Alexander Barton
47f9c6d0a0 Update included Debian package configuration
- Rewrite using current dh_make.
- Standards-Version: 4.6.2.
- No longer build 3 different packages; only build "ngircd" which now
  includes support for IDENT, PAM (disabled in the ngircd.conf installed
  by the package), SSL (OpenSSL), ZLib and IPv6.
- Update package description accordingly.
- No longer install a SysV init file, only install ngircd.service unit.
2024-01-20 16:43:54 +01:00
Alexander Barton
c65c3435e3 Remove outdated and obsolete targets from the toplevel Makefile
This affects targets for Apple Xcode and Package Maker, which both are
no longer supported/included in the ngIRCd distribution.

See commits 0652c99b and 07219281, this is a leftover ...
2024-01-20 16:43:54 +01:00
Alexander Barton
a87b124648 Use -Werror when testing for -Wno-format-truncation
Clang does not know the -Wno-format-truncation option of (current) GCC,
but accepts unknown -W... options (exit core 0) but issues a warning
message on every invocation. So for example on macOS, where Clang is
used as "gcc", a new warning message was shown for every file to
compile, since we enabled -Wno-format-truncation in commit 1d527eaf:

  warning: unknown warning option '-Wno-format-truncation' [-Wunknown-warning-option]

Clang no longer acceps unknown -W... options by enabling -Werror, which
this patch adds to the CFLAGS while testing for -Wno-format-truncation,
which fixes this issue.

This fixes commit 1d527eaf.
2024-01-19 17:07:47 +01:00
Alexander Barton
c83d55f758 Annotate "fall through" cases to silence warnings
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-18 22:49:48 +01:00
Alexander Barton
1d527eaf17 Disable GCC -Wformat-truncation when suported
Pass -Wno-format-truncation when this is supported by GCC so silence
warnings like this:

  conf.c: In function ‘Read_Config’:
  conf.c:985:60: warning: ‘snprintf’ output may be truncated before
                 the last format character [-Wformat-truncation=]
    985 |                         snprintf(file, sizeof(file), "%s/%s",
        |                                                            ^
  conf.c:985:25: note: ‘snprintf’ output 2 or more bytes (assuming 257)
                 into a destination of size 256
    985 |                         snprintf(file, sizeof(file), "%s/%s",
        |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    986 |                                  Conf_IncludeDir, entry->d_name);
        |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The warning is correct, but this is basically why we use snprintf() in
the first place.
2024-01-18 22:49:48 +01:00
Alexander Barton
d702ebab0a Spelling fixes, mostly in file comments 2024-01-16 22:32:33 +01:00
Alexander Barton
5f494ec5fe autogen.sh: Prefere automake 1.11 over other releases
GNU automake 1.11 is the last release supporting "de-ANSI-fication"
using the included ansi2knr tool. And becuase we _want_ to support old
K&R platforms, we try hard to use this release of automake when
available to generate our build system.
2024-01-16 22:32:33 +01:00
Alexander Barton
ccb0cf3170 Autodetect support for IPv6 by default
Until now, IPv6 support was disabled by default, which seems a bit
outdated in 2024. Note: You still can pass "--enable-ipv6" or
"--disable-ipv6" to the ./configure script to forcefully activate or
deactivate IPv6 support.
2024-01-16 22:32:33 +01:00
Alexander Barton
00dc9d2845 Do IDENT requests even when DNS lookups are disabled
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-16 22:32:33 +01:00
Alexander Barton
499ca9ce6f Start preparing the ChangeLog for the next release ... 2024-01-11 15:12:54 +01:00
Alexander Barton
f54fb9ee14 Update config.guess and config.sub to recent versions
- config.guess: 2023-08-22
- config.sub: 2023-09-19
2024-01-11 15:12:54 +01:00
Alexander Barton
a06f33d4e5 Channel Admins are not allowed to set Channel Owner status!
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-11 15:12:54 +01:00
Alexander Barton
5413518586 Convert the FAQ to Markdown and enhance it! 2024-01-11 15:12:54 +01:00
Alexander Barton
2877706660 Test suite: Update for OpenSSL 3.x 2024-01-11 15:12:54 +01:00
Alexander Barton
2448d047f9 Allow SSL client-only configurations without keys/certificates
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-11 15:12:54 +01:00
Alexander Barton
07219281ef Remove unmaintained contrib/MacOSX/ folder
This includes removing the Xcode project.

The sample launchd(8) configuration properties list file was moved to
"contrib/de.barton.ngircd.plist" and kept.
2024-01-11 15:12:48 +01:00
Alexander Barton
a5de81e489 QuickStart.md: Update title and fix Markdown syntax 2024-01-11 15:11:56 +01:00
Alexander Barton
9a71ac8a91 Update the project description, enhance & fix the README.md 2024-01-11 15:11:56 +01:00
Alexander Barton
0061394d7f 2024 =:) 2024-01-11 15:11:56 +01:00
Alexander Barton
bc7148f4ac Fix showing the "Ident" option in --configtest output
We tested for the wrong #define ... ooops!
2024-01-06 16:21:01 +01:00
Alexander Barton
f96966a62f Change GnuTLS "slot handling" messages to debug level
Those messages are about an internal implementation detail, not relevant
for an administrator of ngIRCd.
2024-01-06 16:21:01 +01:00
Alexander Barton
7c90264f1f Enlarge buffer for log messages
For example, SSL/TLS certificate information can easily get longer than
256 characters. So enlarge the log buffer to 1 KB.
2024-01-06 16:21:01 +01:00
Alexander Barton
21c1751b04 Respect "SSLConnect" option for incoming connections
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-06 16:21:01 +01:00
Alexander Barton
843cbfc0f3 Always initiate closing a connection on errors.
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 04de1423eb.
2024-01-06 16:21:01 +01:00
Alexander Barton
9540d0c0a4 Add "hopm.service" to "Wants" and "Before" dependencies in systemd unit file 2023-10-17 16:15:38 +02:00
Alexander Barton
f31d64eb1c Update Debian package configuration
This not only bumps the "compat" version, but updates the package
dependencies and build rules accordingly.

Closes #299.
2023-09-17 23:42:08 +02:00
Alexander Barton
4a548e1220 Update config.guess and config.sub to recent versions
- config.guess: 2022-01-09
- config.sub: 2022-01-03
2023-09-17 23:39:05 +02:00
Valentin Lorentz
0714466af8 Return ERR_NOTEXTTOSEND on empty PRIVMSG content
They are dropped further down the line anyway; and sending ERR_NOTEXTTOSEND
early matches other servers' behavior.
2023-09-17 22:25:40 +02:00
Alexander Barton
445e559dbd Update and enhance the manual pages a bit 2023-09-17 22:03:12 +02:00
Alexander Barton
8fdb8f90b1 Merge branch 'katp32/master'
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-17 21:37:45 +02:00
Alexander Barton
a106d18d7d Conf_Test(): Use yesno_to_str() instead of individual tests and output 2023-09-17 20:28:52 +02:00
Alexander Barton
a7f448e713 Channel autojoin: Add missing variable in --configtest output 2023-09-17 20:27:14 +02:00
Alexander Barton
232c7382de Silence compiler warning in Init_New_Client()
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-17 20:16:35 +02:00
Alexander Barton
30ba325dde Various fixes and enhancements for the "Autojoin" patch
- 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-17 19:56:07 +02:00
Ivan Agarkov
cfd7d4288e Channel autojoin functionality 2023-09-16 12:40:33 +02:00
Alexander Barton
3b70f4ba0c 2023! 2023-08-03 14:22:53 +02:00
Alexander Barton
335ae4f0d0 Hide +i users on "WHOIS <pattern>"
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-08-03 10:57:27 +02:00