]> arthur.barton.de Git - ngircd.git/log
ngircd.git
10 years agongIRCd Release 20.3 branch-20.x rel-20.3
Alexander Barton [Fri, 23 Aug 2013 19:54:40 +0000 (21:54 +0200)]
ngIRCd Release 20.3

10 years agoCorrectly handle return code of Handle_Write()
Alexander Barton [Tue, 20 Aug 2013 23:28:49 +0000 (01:28 +0200)]
Correctly handle return code of Handle_Write()

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.

(cherry picked from commit 309122017ebc6fff039a7cab1b82f632853d82d5)

11 years agongIRCd Release 20.2 rel-20.2
Alexander Barton [Fri, 15 Feb 2013 11:18:02 +0000 (12:18 +0100)]
ngIRCd Release 20.2

11 years agoKICK: Fix denial of service bug
Sebastian Köhler [Thu, 14 Feb 2013 18:21:01 +0000 (19:21 +0100)]
KICK: Fix denial of service bug

Test if the user that it is to be kicked is on the channel before user
channel modes are tested. Otherwise assert( cl2chan != NULL ); in
line 742 would fail and stop the service.
(cherry picked from commit 0e63fb3fa7ac4ca048e8c2b648d2be3fd0572311)

11 years ago"WHO <hostmask>": use displayed hostname for matching
Alexander Barton [Fri, 8 Feb 2013 16:18:43 +0000 (17:18 +0100)]
"WHO <hostmask>": use displayed hostname for matching

Use the currently "displayed hostname" (which can be cloaked!) for
hostname matching, not the real one. In other words: don't display
all the cloaked users on a specific real hostname!

Thanks to DNS <dns@rbose.org> for reporting this issue.
(cherry picked from commit 1e8b775a7a6d0c390e037bd73332072e7c510525)

11 years agoautogen.sh: Don't use "egrep -o", use "sed"
Alexander Barton [Sun, 27 Jan 2013 11:25:58 +0000 (12:25 +0100)]
autogen.sh: Don't use "egrep -o", use "sed"

"egrep -o" isn't portable and not available on OpenBSD, for example. So
let's use sed instead to get the automake version. The expression used
now is less specific but should work as well ...
(cherry picked from commit 419ff38a07cb0b1637b444c96cd6868a7a9e5524)

11 years agoconfigure: "netinet/in_systm.h" is optional
Alexander Barton [Thu, 24 Jan 2013 21:45:00 +0000 (22:45 +0100)]
configure: "netinet/in_systm.h" is optional

The header file "netinet/in_systm.h" already is optional in ngIRCd, so
don't require it in the configure script. Now ngIRCd can be built on
Minix 3 again :-)
(cherry picked from commit fd260404caa7ce174ada663024d19cd789c152b5)

11 years agoReturn better "Connection not registered as server link" errors
Alexander Barton [Tue, 22 Jan 2013 09:54:06 +0000 (10:54 +0100)]
Return better "Connection not registered as server link" errors

Now ngIRCd returns a more specific error message for numeric
ERR_NOTREGISTERED(451) when a regular user tries to use a command that
isn't allowed for users but for servers: ERR_NOTREGISTEREDSERVER(451).
(cherry picked from commit 508ca3044dd6d1a88686efceda92a7f2a9b4a926)

11 years agoMODE: don't report error on "more modes than parameters"
Alexander Barton [Sun, 13 Jan 2013 15:52:00 +0000 (16:52 +0100)]
MODE: don't report error on "more modes than parameters"

Don't report ERR_NEEDMOREPARAMS(461) when a MDOE command with more modes
than nicknames is handled, as well as for channel limit and key changes
without specifying the limit or key parameters.

This is how a lot (all?) other IRC servers behave, including ircd2.11,
InspIRCd, and ircd-seven. And because of clients (tested with Textual and
mIRC) sending bogus MODE commands like "MODE -ooo nick", end-users got the
expected result as well as correct but misleading error messages ...

If ngIRCd is compiled using "strict mode", these errors are still reported.

Reported-by: Tim <tim@stackwatch.net>
(cherry picked from commit d8f2964710985597281de73aecd0a1ece30ecb03)

11 years agoCorrectly detect when SSL subsystem must be initialized
Alexander Barton [Mon, 7 Jan 2013 17:42:57 +0000 (18:42 +0100)]
Correctly detect when SSL subsystem must be initialized

This patch introduces the new function Conf_SSLInUse() to check when the
current server configuration requires the SSL subsystem to be initialized
and accounts incoming as well as outgoing connections -- so this fixes
commit bb20aeb9 ("Initialize SSL when needed only, and disable SSL on
errors") which only handled the inbound case  ...

Tested-by: Brett Smith <brett@w3.org>
(cherry picked from commit ab009976984ede815c31c9a6b318c80006823b81)

11 years agoautogen.sh: Enforce serial test harness on automake >=1.13
Alexander Barton [Sat, 5 Jan 2013 02:05:56 +0000 (03:05 +0100)]
autogen.sh: Enforce serial test harness on automake >=1.13

(cherry picked from commit 0703fcd71983bd04f70101fd0143660174d22f84)

11 years agongIRCd Release 20.1 rel-20.1
Alexander Barton [Wed, 2 Jan 2013 21:37:55 +0000 (22:37 +0100)]
ngIRCd Release 20.1

11 years agoUpdate Copyright notices for 2013
Alexander Barton [Tue, 1 Jan 2013 18:23:56 +0000 (19:23 +0100)]
Update Copyright notices for 2013

11 years agoAllow ERROR command on server and service links only
Alexander Barton [Mon, 31 Dec 2012 20:46:41 +0000 (21:46 +0100)]
Allow ERROR command on server and service links only

Ignore it and add a penalty time on all other link types.

11 years agoGet rid of Conn_ResetPenalty(), it is unused
Alexander Barton [Mon, 31 Dec 2012 17:23:21 +0000 (18:23 +0100)]
Get rid of Conn_ResetPenalty(), it is unused

11 years agoMode setting: only check channel user modes when on channel
Alexander Barton [Mon, 31 Dec 2012 17:13:18 +0000 (18:13 +0100)]
Mode setting: only check channel user modes when on channel

Only check the channel user modes of the initiator if he is joined to
this channel and not an IRC operator enforcing modes (which requires
the configuration option "OperCanUseMode" to be enabled), because trying
to check channel user modes of a non-member results in this assertion:

 Assertion failed: (cl2chan != NULL), function Channel_UserModes,
  file channel.c, line 742.

This closes bug #147, thanks to James Kirwill <james.kirwill@bk.ru>
for tracking this down!

11 years agoAdd some more casts in assert() statemens
Alexander Barton [Tue, 25 Dec 2012 18:21:40 +0000 (19:21 +0100)]
Add some more casts in assert() statemens

This fixes the following warning messages of gcc 4.5.3 on Cygwin when
building with debug code enabled:

 ng_ipaddr.c: In function ‘ng_ipaddr_init’:
 ng_ipaddr.c:52:2: warning: comparison between signed and
                   unsigned integer expressions
 ng_ipaddr.c:53:20: warning: comparison between signed and
                    unsigned integer expressions

 resolve.c: In function ‘ForwardLookup’:
 resolve.c:271:3: warning: comparison between signed and
                  unsigned integer expressions

11 years agoMakefiles: Correctly quote sed expressions
Alexander Barton [Tue, 25 Dec 2012 18:13:55 +0000 (19:13 +0100)]
Makefiles: Correctly quote sed expressions

Now the Makefiles support spaces in "$sysconfdir", which isn't uncommon
for Cygwin for example, when $HOME contains whitespaces ("/home/User Name")
and ngIRCd is installed into the user home ("./configure --prefix=$HOME").

11 years agoAdd Cygwin binaries (*.exe) to .gitignore files
Alexander Barton [Tue, 25 Dec 2012 17:52:49 +0000 (18:52 +0100)]
Add Cygwin binaries (*.exe) to .gitignore files

11 years agoAdd a cast in ForwardLookup() to fix a gcc warning on Cygwin
Alexander Barton [Tue, 25 Dec 2012 17:49:28 +0000 (18:49 +0100)]
Add a cast in ForwardLookup() to fix a gcc warning on Cygwin

This fixes the following warning message of 4.5.3 on Cygwin:

 resolve.c: In function ‘ForwardLookup’:
 resolve.c:273:21: warning: comparison between signed and
                   unsigned integer expressions

11 years agongIRCd Release 20 rel-20
Alexander Barton [Mon, 17 Dec 2012 12:14:32 +0000 (13:14 +0100)]
ngIRCd Release 20

11 years agoUpdate NEWS and ChangeLog files
Alexander Barton [Wed, 12 Dec 2012 10:06:35 +0000 (11:06 +0100)]
Update NEWS and ChangeLog files

11 years agoAllow user names up to 20 characters
Alexander Barton [Mon, 10 Dec 2012 09:41:36 +0000 (10:41 +0100)]
Allow user names up to 20 characters

This patch allows user names up to 20 characters when ngIRCd has not been
configured for "strict RFC mode".

Patch suggested by Brett Smith <brett@w3.org>, see
<http://arthur.barton.de/pipermail/ngircd-ml/2012-October/000579.html>.

11 years agongIRCd 20~rc2 rel-20-rc2
Alexander Barton [Sun, 2 Dec 2012 17:51:51 +0000 (18:51 +0100)]
ngIRCd 20~rc2

11 years agoUpdate NEWS and ChangeLog files
Alexander Barton [Sun, 2 Dec 2012 17:49:11 +0000 (18:49 +0100)]
Update NEWS and ChangeLog files

11 years agoUpdate doc/Platforms.txt
Alexander Barton [Mon, 26 Nov 2012 10:54:23 +0000 (11:54 +0100)]
Update doc/Platforms.txt

11 years agoRework cloaked hostname handling, implement "METADATA cloakhost"
Alexander Barton [Sat, 24 Nov 2012 15:15:35 +0000 (16:15 +0100)]
Rework cloaked hostname handling, implement "METADATA cloakhost"

Now ngIRCd uses two fields internally, one to store the "real" hostname
and one to save the "cloaked" hostname. And both fields can be set
independently using the "METADATA host" and "METADATA cloakhost" commands.

This allows "foreign servers" (aka "IRC services") to alter the real and
cloaked hostnames of clients without problems, even when the user itself
issues additional "MODE +x" and "MODE -x" commands.

11 years agoRPL_UMODEIS: send correct target name, even on server links
Alexander Barton [Sat, 24 Nov 2012 14:57:45 +0000 (15:57 +0100)]
RPL_UMODEIS: send correct target name, even on server links

11 years agoClient_HostnameCloaked() -> Client_HostnameDisplayed()
Alexander Barton [Sat, 24 Nov 2012 12:37:56 +0000 (13:37 +0100)]
Client_HostnameCloaked() -> Client_HostnameDisplayed()

11 years agoplatformtest.sh: Only generate configure script when missing
Alexander Barton [Tue, 13 Nov 2012 22:21:09 +0000 (23:21 +0100)]
platformtest.sh: Only generate configure script when missing

11 years agoUpdate platformtest.sh to follow autoconf changes
Alexander Barton [Tue, 13 Nov 2012 21:42:49 +0000 (22:42 +0100)]
Update platformtest.sh to follow autoconf changes

11 years agoTest suite: correctly execute tests when stdout is redirected
Alexander Barton [Tue, 13 Nov 2012 21:41:23 +0000 (22:41 +0100)]
Test suite: correctly execute tests when stdout is redirected

11 years agoAdd a few casts, fix compiler warnings on NetBSD 5
Alexander Barton [Mon, 12 Nov 2012 21:39:57 +0000 (22:39 +0100)]
Add a few casts, fix compiler warnings on NetBSD 5

This fixes a few warnings of this type:
  XXX.c: In function 'AAA':
  XXX.c:YY: warning: array subscription has type 'char'

Tested on NetBSD 5.0.2 with gcc 4.1.3.

11 years agoirc-info.c: Use strlcpy() instead of strcpy()
Alexander Barton [Sun, 11 Nov 2012 15:46:57 +0000 (16:46 +0100)]
irc-info.c: Use strlcpy() instead of strcpy()

This fixes the following warning of gcc (tested on OpenBSD 5.0:)
  irc-info.c:990: warning: strcpy() is almost always misused,
                  please use strlcpy

11 years agongIRCd 20~rc1 rel-20-rc1
Alexander Barton [Sun, 11 Nov 2012 15:03:40 +0000 (16:03 +0100)]
ngIRCd 20~rc1

11 years agoUpdate Xcode project files
Alexander Barton [Sun, 11 Nov 2012 11:40:47 +0000 (12:40 +0100)]
Update Xcode project files

11 years agoconf.c: Use strlcpy() instead of strcpy()
Alexander Barton [Sun, 11 Nov 2012 10:18:53 +0000 (11:18 +0100)]
conf.c: Use strlcpy() instead of strcpy()

This fixes the following warning of gcc on OpenBSD 5.0:
  conf.c:728: warning: strcpy() is almost always misused, please use strlcpy()

11 years agotool.h: Don't check for and #define PF_INET
Alexander Barton [Sun, 11 Nov 2012 10:05:21 +0000 (11:05 +0100)]
tool.h: Don't check for and #define PF_INET

This is correctly handled by ipaddr/ng_ipaddr.h today, and the check
in tool.h isn't required any more -- and caused errors on OpenBSD 5.0:

  In file included from ./../tool/tool.h:23:
  /usr/include/arpa/inet.h:74:
    warning: "struct in_addr" declared inside parameter list

11 years agoconf-ssl.h: Use "gnutls_session_t" instead of "gnutls_session"
Alexander Barton [Sun, 11 Nov 2012 09:49:06 +0000 (10:49 +0100)]
conf-ssl.h: Use "gnutls_session_t" instead of "gnutls_session"

This fixes the following warning with current versions of GnuTLS:
  conf-ssl.h:36: warning: "gnutls_session" is deprecated

11 years agoAdd new IRC+ server flag "X": "XOP modes supported"
Alexander Barton [Sat, 10 Nov 2012 22:33:19 +0000 (23:33 +0100)]
Add new IRC+ server flag "X": "XOP modes supported"

This flag indicates, that the server supports the enhanced "xop channel
user modes", like channel owner, admin, and halfop. This information is
used to make sure that no unsupported CHANINFO commands are sent to
servers not supporting such mode prefixes, for example.

11 years agoUpdate autoconf/automake version numbers in doc/HowToRelease.txt
Alexander Barton [Sat, 10 Nov 2012 20:50:36 +0000 (21:50 +0100)]
Update autoconf/automake version numbers in doc/HowToRelease.txt

11 years agoUpdate NEWS and ChangeLog files
Alexander Barton [Sat, 10 Nov 2012 20:49:02 +0000 (21:49 +0100)]
Update NEWS and ChangeLog files

11 years agoRemove Anope "ngircd" protocol module patches
Alexander Barton [Sun, 4 Nov 2012 12:58:25 +0000 (13:58 +0100)]
Remove Anope "ngircd" protocol module patches

Starting with Anope 1.9.8, the ngIRCd protocol module is included in the
Anope distribution, so there's no longer any need to support our own (but
now heavily outdated!) patches. Therefore remove them.

11 years agodoc/Services.txt: Update documentation for Anope 1.9.8
Alexander Barton [Sat, 10 Nov 2012 20:24:55 +0000 (21:24 +0100)]
doc/Services.txt: Update documentation for Anope 1.9.8

Starting with Anope 1.9.8, the ngIRCd protocol module is rewritten from
scratch by "DukePyrolator" and included in the Anope distribution. So no
patching is required any more, yeah!

Drawback: Anope 1.9.8 is in development and not yet released ...

11 years agoCorrectly add irc-metadata.{c|h} to Makefile.ng ...
Alexander Barton [Mon, 5 Nov 2012 22:57:14 +0000 (23:57 +0100)]
Correctly add irc-metadata.{c|h} to Makefile.ng ...

11 years agodoc/Protocol.txt: Document METADATA command
Alexander Barton [Mon, 5 Nov 2012 22:51:52 +0000 (23:51 +0100)]
doc/Protocol.txt: Document METADATA command

11 years agoGenerate "METADATA host" commands on "MODE +/-x"
Alexander Barton [Mon, 5 Nov 2012 22:49:12 +0000 (23:49 +0100)]
Generate "METADATA host" commands on "MODE +/-x"

Use "METADATA host" commands to let servers supporting this command
know which (possibly cloaked) hostname is in effect for a specific
client. This prevents "double cloaking" of hostnames and even cloaked
hostnames are in sync on all servers supporting "METADATA" now.

11 years agoDon't cloak already cloaked hostname when using METADATA
Alexander Barton [Mon, 5 Nov 2012 22:46:26 +0000 (23:46 +0100)]
Don't cloak already cloaked hostname when using METADATA

A client for which a METADATA command has been received from one of
its peers got the client flag "M" set. So it's safe to assume that
such a client gets "METADATA host" commands for its cloaked hostname
and the server must not cloak the hostname on its own, even when the
client mode "+x" is set.

11 years agoImplement METADATA command to update client metadata
Alexander Barton [Mon, 5 Nov 2012 22:34:21 +0000 (23:34 +0100)]
Implement METADATA command to update client metadata

The METADATA command can be used by other servers to update "metadata"
of registered clients, like the client info text ("real name"), user
name, and hostname:

  :<prefix> METADATA <target> <key> :<value>

It is distributed in the network, unknown <key> names are silently ignored
and passed on, too. This allows for further extensions.

11 years agodoc/Protocol.txt: add/fix CHARCONV description
Alexander Barton [Mon, 5 Nov 2012 22:11:41 +0000 (23:11 +0100)]
doc/Protocol.txt: add/fix CHARCONV description

11 years agoPredefChannelsOnly: Fix message for non pre-defined channels
DNS777 [Tue, 16 Oct 2012 05:28:44 +0000 (07:28 +0200)]
PredefChannelsOnly: Fix message for non pre-defined channels

If PredefChannelsOnly is enabled, and if someone tries to create
a channel which does not exist, then the error message is a 474.
The 474 Error message changed recently and does not match anymore:
'Cannot join channel (+b) -- You are banned'.

Changed the error message to numeric 403 'No such channel'.

Bug introduced by commit 9a82304a.

(cherry picked from commit 2c2e08f34187a33c1da745995c5f213e33a91410)

11 years agoTest suite: add some "remote checks" to whois-test.e
Alexander Barton [Sun, 4 Nov 2012 18:50:02 +0000 (19:50 +0100)]
Test suite: add some "remote checks" to whois-test.e

11 years agoSend NICK commands with prefix of (target) user
Alexander Barton [Sun, 4 Nov 2012 17:01:49 +0000 (18:01 +0100)]
Send NICK commands with prefix of (target) user

Now NICK commands are always generated using the prefix of the target
user, even when the nickname change has been initiated by some other
(pseudo) server or using the SVSNICK command. In this case, the prefix
of the initiator has been used, but this isn't compatible with clients
(at least weechat and irssi don't handle such NICK commands correctly).

11 years agoUpdate doc/Services.txt, sort services alphabetically
Alexander Barton [Sun, 4 Nov 2012 12:22:26 +0000 (13:22 +0100)]
Update doc/Services.txt, sort services alphabetically

11 years agoImplement SVSNICK command to change remote nicknames
Alexander Barton [Fri, 2 Nov 2012 16:50:31 +0000 (17:50 +0100)]
Implement SVSNICK command to change remote nicknames

The SVSNICK command allows other servers (and services on
"pseudo-servers") to forcefully change nicknames of remote users.

Syntax: ":<from> SVSNICK <oldnick> <newnick>"

The SVSNICK command itself doesn't change the nickname, but it becomes
forwarded to the server to which the user is connected to. And then this
server initiates the real nickname changing using regular NICK commands.

This allows to still run networks with old servers not supporting the
SVSNICK command, because SVSNICK commands for nicknames on such servers
are silently ignored and don't cause a desync of the network.

11 years agoIRC_NICK(): Code cleanup, new function Change_Nick()
Alexander Barton [Fri, 2 Nov 2012 13:36:29 +0000 (14:36 +0100)]
IRC_NICK(): Code cleanup, new function Change_Nick()

11 years agoSpelling fix: "nick name" -> "nickname"
Alexander Barton [Fri, 2 Nov 2012 13:30:19 +0000 (14:30 +0100)]
Spelling fix: "nick name" -> "nickname"

11 years agoXcode: correctly #define PACKAGE and PACKAGE_NAME
Alexander Barton [Fri, 2 Nov 2012 13:16:58 +0000 (14:16 +0100)]
Xcode: correctly #define PACKAGE and PACKAGE_NAME

11 years agoFix warning message introduced when cleaning up IRC_SERVER()
Alexander Barton [Mon, 29 Oct 2012 10:44:45 +0000 (11:44 +0100)]
Fix warning message introduced when cleaning up IRC_SERVER()

This reverts a not intentional code change and fixes the following compiler
warning message (tested with gcc 4.4.5):

 irc-server.c: In function "IRC_SERVER":
 irc-server.c:142: warning: suggest parentheses around operand of "!"
                            or change "&" to "&&" or "!" to "~"

11 years agoMake server reconnect time a little bit more random
Alexander Barton [Sun, 28 Oct 2012 19:19:57 +0000 (20:19 +0100)]
Make server reconnect time a little bit more random

Add randomly up to 15 seconds to the reconnect delay for outgoing server
links when the connection has been "short" and therefore the "ConnectRetry"
delay is being enforced.

This should make it even more unlikely that two servers deadlock each
other when both are trying to connect to the other one at the same time,
for example in test environments.

11 years agoDon't accept connections for servers already beeing linked
Alexander Barton [Sun, 28 Oct 2012 18:48:24 +0000 (19:48 +0100)]
Don't accept connections for servers already beeing linked

If two servers try to link each other, there was a time frame that
could result in one connection overwriting the other, e. g. the incoming
connection overwriting the status of the outgoing one. And this could
lead to all kind of weirdness (even crashes!) later on.

So now such incoming connections are dropped. But this most probably
prevents the two servers from linking until timing changes somehow
(network latency?) because each server drops the incoming connection of
the other one, so no connection survives in the end.

But this has to be addressed by an other patch ...

11 years agoIRC_SERVER(): Code cleanup
Alexander Barton [Sun, 28 Oct 2012 17:52:37 +0000 (18:52 +0100)]
IRC_SERVER(): Code cleanup

11 years agoUse lowercase "package name" for syslog logging again
Alexander Barton [Mon, 29 Oct 2012 09:24:27 +0000 (10:24 +0100)]
Use lowercase "package name" for syslog logging again

This is how ngIRCd up to release 19.2 behaved; "bug" introduced by commit
67e882, "configure.in: require autoconf 2.67 and automake 1.11", which
changed the "PACKAGE_NAME" to "ngIRCd"; so use "PACKAGE" which still is
the lowercase version for initializing syslog logging.

11 years agoDocument new configuration option "MaxListSize"
Alexander Barton [Sun, 28 Oct 2012 19:36:58 +0000 (20:36 +0100)]
Document new configuration option "MaxListSize"

11 years agoMake the maximum /list reply length a configurable limit.
Brett Smith [Thu, 25 Oct 2012 18:46:29 +0000 (14:46 -0400)]
Make the maximum /list reply length a configurable limit.

11 years agoUpdate NEWS and ChangeLog files
Alexander Barton [Wed, 24 Oct 2012 20:03:56 +0000 (22:03 +0200)]
Update NEWS and ChangeLog files

11 years agoAllow remote servers and IRC Ops to change channel topics
Alexander Barton [Fri, 19 Oct 2012 17:45:44 +0000 (19:45 +0200)]
Allow remote servers and IRC Ops to change channel topics

Remote servers are always allowed to change all channel topics,
and IRC Operators are allowed to change all channel topics if the
configuration option "OperCanUseMode" is enabled.

Bug introduced by commit 7b01bb8 and reported by DNS777.

11 years agoIncreased maximum number of possible user and channel modes
DNS [Wed, 10 Oct 2012 23:53:20 +0000 (01:53 +0200)]
Increased maximum number of possible user and channel modes

Currntly ngIRCd supports 13 user and 15 channel modes, because there
have been quite a few additions since our last release. But our data
structures can only hold 15 user and -- even worse! -- only 9 channel
modes! So enlarge the buffers to 20 bytes (actually 21 including NULL)
to allow storing of all mode characters and to have some space left
for more modes to come ...

(cherry picked from commit 8996d777621d88d4bcc439ab4792b2814920687f)

11 years agoUpdate error messages for user mode +b and channel Mode +M.
DNS777 [Fri, 19 Oct 2012 16:37:33 +0000 (18:37 +0200)]
Update error messages for user mode +b and channel Mode +M.

Replaced error message for channel mode +M with ERR_NEEDREGGEDNICK_MSG
(used by Bahamut, inspircd, ircu & Unreal too) and using numeric 477
and the msg simliar like inspircd.

Replaced the error message ERR_CANNOTSENDTONICK_MSG for user mode +b
with ERR_NONONREG_MSG and using numeric 486, similar like unrealircd.

(cherry picked from commit 55a61ab17f63a9e757b7c7598c31b98ce5a132e8
and commit 3737d9ab7da1ea0485cefc07c65dc5308bf0db02)

11 years agoTest suite: add more checks to whois-test.e
Alexander Barton [Mon, 15 Oct 2012 19:39:08 +0000 (21:39 +0200)]
Test suite: add more checks to whois-test.e

11 years agoAdd "i586/pc/haiku" to doc/Platforms.txt
Alexander Barton [Thu, 11 Oct 2012 15:05:21 +0000 (15:05 +0000)]
Add "i586/pc/haiku" to doc/Platforms.txt

11 years agoDisable UID/GID checks on "single user OS"
Alexander Barton [Thu, 11 Oct 2012 14:54:13 +0000 (14:54 +0000)]
Disable UID/GID checks on "single user OS"

Don't abort on "single user operating systems" that don't know more than
one user account and therefore can't change user and group IDs.

Currently, the only such system supported by ngIRCd is Haiku, a BeOS
clone.

11 years agoSearch gethostbyname() in libbind and libnetwork
Alexander Barton [Thu, 11 Oct 2012 14:50:45 +0000 (14:50 +0000)]
Search gethostbyname() in libbind and libnetwork

This is required for Haiku (BeOS clone) at least.

11 years agoUpdate manual pages
Alexander Barton [Tue, 9 Oct 2012 11:13:01 +0000 (13:13 +0200)]
Update manual pages

Among other little things, bring project description in line with website.

11 years agoTest suite: add test for user mode "b"
Alexander Barton [Mon, 8 Oct 2012 10:15:34 +0000 (12:15 +0200)]
Test suite: add test for user mode "b"

11 years agoImplement user mode "b": block messages
DNS777 [Mon, 8 Oct 2012 10:11:04 +0000 (12:11 +0200)]
Implement user mode "b": block messages

When a user has set mode "b", all private messages and notices to this
user are blocked if they don't originate from a registered user, an IRC Op,
server or service. The originator gets an error numeric sent back in this
case, ERR_CANNOTSENDTONICK_MSG(976), which is/was(?) used by KineIRCd, too.

This closes bug #144.

11 years agoFix ERR_CANNOTSENDTOCHAN_MSG message
Alexander Barton [Sun, 7 Oct 2012 13:11:05 +0000 (15:11 +0200)]
Fix ERR_CANNOTSENDTOCHAN_MSG message

This error message is not only used if one can not send to a channel
because it is moderated, but for _all_ reasons when a message can not
be delivered (moderated, banned, no external messages, ...), so strip
the "(+m) -- Moderated" part of the error message again.

Bug introduced by commit 9a82304a.

11 years agoShorten filenames of Anope protocol module patchfiles
Alexander Barton [Sun, 7 Oct 2012 10:06:11 +0000 (12:06 +0200)]
Shorten filenames of Anope protocol module patchfiles

Filenames have been too long and couldn't be stored in all tar
archive formats ...

11 years agoWHOIS: show RPL_WHOISHOST_MSG to all IRC Ops in the network
Alexander Barton [Sat, 6 Oct 2012 22:05:25 +0000 (00:05 +0200)]
WHOIS: show RPL_WHOISHOST_MSG to all IRC Ops in the network

Not only show RPL_WHOISHOST_MSG to local IRC opreators, but show
it to all IRC operators in the network. And don't show it to anybody
if the "more privacy" configuration option is enabled.

This closes bug #134.

11 years agoTest suite: make expect scripts more verbose
Alexander Barton [Mon, 24 Sep 2012 21:05:24 +0000 (23:05 +0200)]
Test suite: make expect scripts more verbose

Now tests.sh transforms each expect script it executes using sed(1)
and inserts a 'puts -nonewline stderr "."' in front of each "expect"
command.

11 years agoTest suite: remove indentation of messages
Alexander Barton [Mon, 24 Sep 2012 20:25:58 +0000 (22:25 +0200)]
Test suite: remove indentation of messages

11 years agoMerge branch 'bug141-ModesQq'
Alexander Barton [Sat, 6 Oct 2012 20:37:57 +0000 (22:37 +0200)]
Merge branch 'bug141-ModesQq'

This closes bug #141.

* bug141-ModesQq:
  KICK-protect IRC services
  Implement channel mode "Q" and user mode "q"

Conflicts:
src/ngircd/defines.h
src/ngircd/messages.h

11 years agoShow active user modes in WHOIS reply
DNS777 [Sat, 6 Oct 2012 19:56:59 +0000 (21:56 +0200)]
Show active user modes in WHOIS reply

Implement numeric RPL_WHOISMODES_MSG(379) and show user modes in the
reply of the WHOIS command for the user himself or, if MorePrivacy
isn't set, for request initiated by an IRC operator.

Numeric 379 is used by Unreal and InspIRCd for this purpose, too.

Closes bug #129.

11 years agoImplement channel mode 'V' (invite disallow)
DNS777 [Sat, 6 Oct 2012 18:49:35 +0000 (20:49 +0200)]
Implement channel mode 'V' (invite disallow)

If the new channel mode "V" is set, the INVITE command becomes invalid
and all clients get the new ERR_NOINVITE_MSG(518) reply.

Unreal and InspIRCd uses this mode, too.

This closes bug #143.

11 years agoAllow channel admins to "de-admin" channel members
DNS777 [Sat, 6 Oct 2012 17:52:00 +0000 (19:52 +0200)]
Allow channel admins to "de-admin" channel members

This patch fixes unsetting of channel user mode "+a" (channel admin)
and adds a better error message: without this patch, a channel admin is
unable to unset this mode.

This closes bug #142.

11 years agoKICK-protect IRC services
Alexander Barton [Sat, 6 Oct 2012 17:23:05 +0000 (19:23 +0200)]
KICK-protect IRC services

11 years agoMerge branch 'bug109-CHARCONV'
Alexander Barton [Sat, 6 Oct 2012 16:25:43 +0000 (18:25 +0200)]
Merge branch 'bug109-CHARCONV'

This closes bug #109.

* bug109-CHARCONV:
  Debian: require "telnet" or "telnet-ssl" for building
  Debian ngircd-full[-dbg]: enable CHARCONV
  Add "CHARCONV" to "feature string" when enabled
  Implement new IRC+ "CHARCONV" command
  Added new configure option "--with-iconv"

Conflicts:
src/ngircd/messages.h

11 years agoImplement channel mode "Q" and user mode "q"
Alexander Barton [Sat, 6 Oct 2012 16:13:01 +0000 (18:13 +0200)]
Implement channel mode "Q" and user mode "q"

Both modes protect users from channel kicks: only IRC operators and
servers can kick users having mode "q" or in channels with mode "Q".

Original patch by DNS777 <dns@rbose.org>, thanks!

This closes bug #141.

11 years agoDefine HAVE_SETSID for Mac OS X Xcode builds
Alexander Barton [Sat, 6 Oct 2012 15:58:44 +0000 (17:58 +0200)]
Define HAVE_SETSID for Mac OS X Xcode builds

11 years agoFix spelling: ERR_CHANOPPRIVTOLOW_MSG -> ERR_CHANOPPRIVTOOLOW_MSG
Alexander Barton [Sat, 6 Oct 2012 15:21:32 +0000 (17:21 +0200)]
Fix spelling: ERR_CHANOPPRIVTOLOW_MSG -> ERR_CHANOPPRIVTOOLOW_MSG

Thanks to DNS for pointing this out, see bug #126!

11 years agoDebian: require "telnet" or "telnet-ssl" for building
Alexander Barton [Sat, 6 Oct 2012 14:36:34 +0000 (16:36 +0200)]
Debian: require "telnet" or "telnet-ssl" for building

11 years agoDebian ngircd-full[-dbg]: enable CHARCONV
Alexander Barton [Sat, 6 Oct 2012 14:36:07 +0000 (16:36 +0200)]
Debian ngircd-full[-dbg]: enable CHARCONV

11 years agoMakefile.am: don't use "make -C", it isn't portable
Alexander Barton [Wed, 26 Sep 2012 23:11:01 +0000 (01:11 +0200)]
Makefile.am: don't use "make -C", it isn't portable

11 years agoTest suite: don't use "mkdir -p"
Alexander Barton [Wed, 26 Sep 2012 22:56:03 +0000 (00:56 +0200)]
Test suite: don't use "mkdir -p"

"mkdir -p" is not supported on all platforms.
Tested with Apple A/UX 3.1.x.

11 years agoERR_CHANNELISFULL_MSG: better wording
Federico G. Schwindt [Wed, 26 Sep 2012 12:26:50 +0000 (13:26 +0100)]
ERR_CHANNELISFULL_MSG: better wording

(cherry picked from commit 0fcfa7e00fa8e098dd3724c7188c88ac82a52881)

11 years agoFix getpid.sh to work on Apple A/UX again
Alexander Barton [Wed, 26 Sep 2012 22:19:31 +0000 (00:19 +0200)]
Fix getpid.sh to work on Apple A/UX again

11 years agoSend RPL_REHASHING if rehash was accepted
Federico G. Schwindt [Wed, 26 Sep 2012 12:13:10 +0000 (13:13 +0100)]
Send RPL_REHASHING if rehash was accepted

(cherry picked from commit f1b171a09cd076f743a7fff221fa7aa752abb374)

11 years agoChange variable name "SSLDHFile" to "DHFile" in log messages
Federico G. Schwindt [Tue, 18 Sep 2012 23:52:50 +0000 (00:52 +0100)]
Change variable name "SSLDHFile" to "DHFile" in log messages

(cherry picked from commit d96db0a2e56d310177edb45d0a8b164a37992ab1)

11 years agoMove ConnSSL_InitLibrary() "dummy" from header into C file
Federico G. Schwindt [Tue, 18 Sep 2012 23:34:29 +0000 (00:34 +0100)]
Move ConnSSL_InitLibrary() "dummy" from header into C file

(cherry picked from commit 5fd88c81a70d0c9e627f08522e57d251586288eb)

11 years agoNJOIN: correctly reset channel level flags
Alexander Barton [Wed, 26 Sep 2012 21:51:05 +0000 (23:51 +0200)]
NJOIN: correctly reset channel level flags

This fixes commit 7b01bb83.
Bug reported by DNS777 <dns@rbose.org>, thanks!