about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore40
-rw-r--r--AUTHORS8
-rw-r--r--ChangeLog43
-rw-r--r--NEWS28
-rw-r--r--README12
-rw-r--r--doc/.gitignore1
-rw-r--r--doc/Contributing.txt8
-rw-r--r--doc/GIT.txt65
-rw-r--r--doc/Makefile.am3
-rw-r--r--doc/Modes.txt1
-rw-r--r--doc/src/.gitignore1
-rw-r--r--man/.gitignore2
-rw-r--r--src/.gitignore4
-rw-r--r--src/ipaddr/.gitignore1
-rw-r--r--src/ngircd/.gitignore5
-rw-r--r--src/ngircd/irc-login.c17
-rw-r--r--src/ngircd/irc-mode.c1
-rw-r--r--src/ngircd/messages.h1
-rw-r--r--src/portab/.gitignore3
-rw-r--r--src/testsuite/.gitignore24
-rw-r--r--src/tool/.gitignore1
21 files changed, 150 insertions, 119 deletions
diff --git a/.gitignore b/.gitignore
index 183dca29..e8b9f315 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 Makefile
+Makefile.am
 Makefile.in
 aclocal.m4
 ansi2knr.1
@@ -7,6 +8,7 @@ ansi2knr.h
 ar-lib
 autom4te.cache
 build-stamp-ngircd*
+build+*
 compile
 config.cache
 config.log
@@ -24,3 +26,41 @@ ngircd.dest
 .deps
 *.a
 *.o
+doc/sample-ngircd.conf
+doc/src/html
+man/ngircd.8
+man/ngircd.conf.5
+src/config.h
+src/config.h.in
+src/config.h.in~
+src/stamp-h1
+src/ngircd/check-help
+src/ngircd/check-version
+src/ngircd/ngircd
+src/ngircd/ngircd.exe
+src/portab/portabtest
+src/portab/portabtest.exe
+src/testsuite/*.e_
+src/testsuite/channel-test
+src/testsuite/connect-test
+src/testsuite/invite-test
+src/testsuite/join-test
+src/testsuite/kick-test
+src/testsuite/logs
+src/testsuite/message-test
+src/testsuite/misc-test
+src/testsuite/mode-test
+src/testsuite/ngircd-test1.log
+src/testsuite/ngircd-test1.motd
+src/testsuite/ngircd-test2.log
+src/testsuite/ngircd-test2.motd
+src/testsuite/opless-channel-test
+src/testsuite/server-link-test
+src/testsuite/T-ngircd1
+src/testsuite/T-ngircd1.exe
+src/testsuite/T-ngircd2
+src/testsuite/T-ngircd2.exe
+src/testsuite/tests
+src/testsuite/tests-skipped.lst
+src/testsuite/who-test
+src/testsuite/whois-test
diff --git a/AUTHORS b/AUTHORS
index ce6d1131..d12e6518 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -9,9 +9,11 @@
                        -- AUTHORS and CONTRIBUTORS --
 
 
-Note: If you have critics, patches or something else, please feel free to
-post a mail to the ngIRCd mailing list: <ngircd-ml@arthur.barton.de> (please
-see <http://ngircd.barton.de/#ml> for details).
+Note:
+If you have comments, patches or something else, please feel free to post
+a mail to the ngIRCd mailing list: <ngircd-ml@ngircd.barton.de> (please see
+<http://ngircd.barton.de/support.php> for details) or join the ngIRCd IRC
+channel: <irc://irc.barton.de/ngircd>.
 
 Don't mail the people listed here directly, if possible!
 
diff --git a/ChangeLog b/ChangeLog
index bd653664..477bba4d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,49 @@
                                -- ChangeLog --
 
 
+ngIRCd 23
+
+  - Specify session context for OpenSSL clients. This enables some OpenSSL
+    clients, including Pidgin and stunnel 5.06, to reuse a session.
+    Patch by Tom Ryder <tom@sanctum.geek.nz>, thanks! Closes #182.
+  - Keep track of who placed bans, invites, and excepts.
+    Idee and implementation by LucentW, Thanks! Closes #203.
+  - Make setgroups(3) function optional: For example, Interix is missing
+    this function, which prevented ngIRCd to build on this platform. When
+    setgroups(3) isn't available, a warning message is issued on startup.
+  - Implement numeric RPL_LISTSTART(321). lightIRC and other clients
+    expecting RPL_LISTSTART should now behave correctly.
+    Idee and implementation by LucentW, Thanks! Closes #207.
+  - Update ngircd.conf.5: "CloadUserToNick" hides user _and_ real name.
+    This closes #208.
+  - Fix case insensitive pattern matching: Up to now, only the the input
+    string became lowercased and was then compared to the pattern -- which
+    failed when the pattern itself wasn't all lowercase!
+  - Streamline the effect of "MorePrivacy" option: Update documentation
+    in ngircd.conf(5); don't hide channels for IRC Ops on LIST and don't
+    hide IP addresses/hostnames on WHOIS when "MorePrivacy" is in effect.
+    This closes #198.
+  - IRC operators now can kick anyone when "OperCanMode" is set.
+    Idee and implementation by LucentW, Thanks! Closes #202.
+  - Implement user mode "I": Hide channels on WHOIS: this mode prevents
+    ngIRCd from showing channels on WHOIS (IRC Operators can always see
+    the channel list).
+    Idee and implementation by LucentW, Thanks! Closes #197.
+  - INVITE command: Implement ERR_USERNOTONSERV(504) numeric and make sure
+    that the target user is on the same server when inviting other users
+    to local ("&") channels.
+    Idea by Cahata, thanks! Closes #183.
+  - INVITE command: Enforce 1 second penalty time, which prevents flooding
+    of the target client.
+    This closes #186. Reported by Cahata, thanks!
+  - MODE command: Always report channel creation time. Up to now when
+    receiving a MODE command, ngIRCd only reported the channel creation
+    time to clients that were members of the channel. This patch reports
+    the channel creation time to all clients, regardless if they are joined
+    to that channel or not. At least ircd-seven behaves like this.
+    This closes #188. Reported by Cahata, thanks!
+  - Update Xcode project for latest Xcode version (6.3).
+
 ngIRCd 22.1 (2015-04-06)
 
   - Update doc/Platforms.txt and doc/FAQ.txt.
diff --git a/NEWS b/NEWS
index 578b9f07..86958770 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,34 @@
                                   -- NEWS --
 
 
+ngIRCd 23
+
+  - Keep track of who placed bans, invites, and excepts.
+    Idee and implementation by LucentW, Thanks! Closes #203.
+  - Implement numeric RPL_LISTSTART(321). lightIRC and other clients
+    expecting RPL_LISTSTART should now behave correctly.
+    Idee and implementation by LucentW, Thanks! Closes #207.
+  - Streamline the effect of "MorePrivacy" option: Update documentation
+    in ngircd.conf(5); don't hide channels for IRC Ops on LIST and don't
+    hide IP addresses/hostnames on WHOIS when "MorePrivacy" is in effect.
+    This closes #198.
+  - IRC operators now can kick anyone when "OperCanMode" is set.
+    Idee and implementation by LucentW, Thanks! Closes #202.
+  - Implement user mode "I": Hide channels on WHOIS: this mode prevents
+    ngIRCd from showing channels on WHOIS (IRC Operators can always see
+    the channel list).
+    Idee and implementation by LucentW, Thanks! Closes #197.
+  - INVITE command: Implement ERR_USERNOTONSERV(504) numeric and make sure
+    that the target user is on the same server when inviting other users
+    to local ("&") channels.
+    Idea by Cahata, thanks! Closes #183.
+  - MODE command: Always report channel creation time. Up to now when
+    receiving a MODE command, ngIRCd only reported the channel creation
+    time to clients that were members of the channel. This patch reports
+    the channel creation time to all clients, regardless if they are joined
+    to that channel or not. At least ircd-seven behaves like this.
+    This closes #188. Reported by Cahata, thanks!
+
 ngIRCd 22.1 (2015-04-06)
 
   - Update "CipherList" to not enable SSLv3 by default. Idea, initial patch,
diff --git a/README b/README
index ef71c273..05644ec7 100644
--- a/README
+++ b/README
@@ -74,7 +74,7 @@ releases there.
 If you are interested in the latest development versions (which are not
 always stable), then please read the section about "GIT" on the homepage and
 the file "doc/GIT.txt" which describes the use of GIT, the version control
-system used by ngIRCd (homepage: http://git-scm.com/).
+system used by ngIRCd (homepage: <http://git-scm.com/>).
 
 
 VI. Bugs
@@ -83,11 +83,11 @@ VI. Bugs
 If you find bugs in the ngIRCd (which might be there :-), please report
 them at the following URL:
 
-<http://ngircd.barton.de/bugtracker.php>
+<https://github.com/ngircd/ngircd/issues>
 
 There you can read about known bugs and limitations, too.
 
-If you have critics, patches or something else, please feel free to post a
-mail to the ngIRCd mailing list: <ngircd-ml@arthur.barton.de> (please see
-<http://ngircd.barton.de/support.php#ml> for details) or join the ngIRCd
-IRC channel: <irc://irc.barton.de/ngircd>.
+If you have comments, patches or something else, please feel free to post
+a mail to the ngIRCd mailing list: <ngircd-ml@ngircd.barton.de> (please see
+<http://ngircd.barton.de/support.php> for details) or join the ngIRCd IRC
+channel: <irc://irc.barton.de/ngircd>.
diff --git a/doc/.gitignore b/doc/.gitignore
deleted file mode 100644
index 0035855c..00000000
--- a/doc/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-sample-ngircd.conf
diff --git a/doc/Contributing.txt b/doc/Contributing.txt
index 089afd4c..677a1b80 100644
--- a/doc/Contributing.txt
+++ b/doc/Contributing.txt
@@ -2,7 +2,7 @@
                      ngIRCd - Next Generation IRC Server
                            http://ngircd.barton.de/
 
-               (c)2001-2011 Alexander Barton and Contributors.
+               (c)2001-2015 Alexander Barton and Contributors.
                ngIRCd is free software and published under the
                    terms of the GNU General Public License.
 
@@ -52,3 +52,9 @@ get an idea of how to do it the best :-)
 
    And this is open source, your work must not be 100% finished and perfect,
    work in progress is interesting, too: "release early, release often"!
+
+- Use GitHub to create "Pull Requests"
+
+  ngIRCd is hosted on GitHub (<https://github.com/ngircd>), so please use the
+  tools available there and open issues (comment!) and create pull requests!
+  See <https://help.github.com/articles/using-pull-requests/> for details.
diff --git a/doc/GIT.txt b/doc/GIT.txt
deleted file mode 100644
index f3b2e63c..00000000
--- a/doc/GIT.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-
-                     ngIRCd - Next Generation IRC Server
-                           http://ngircd.barton.de/
-
-               (c)2001-2011 Alexander Barton and Contributors.
-               ngIRCd is free software and published under the
-                   terms of the GNU General Public License.
-
-                                 -- GIT.txt --
-
-
-The source code of ngIRCd is maintained using GIT, an distributed version
-control system. Homepage including documentation: <http://git-scm.com/>.
-
-
-I. Viewing the source code online
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The ngIRCd "GITweb" interface allows you to browse the GIT repository and
-to see all individual files, tags, branches, commits etc.:
-
- <http://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git>
-
-
-II. Getting the source code
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To access (copy, clone) the source tree repository anonymously, run:
-
- $ git clone git://ngircd.barton.de/ngircd.git
-
-Thereby a new folder "ngircd" will be created containing all the individual
-source files.
-
-The newly created directory ("ngircd") is the "working directory", all
-GIT commands will be executed from within this directory in the future.
-
-Please note: When checking out a fresh copy of ngIRCd using GIT, the
-configure script doesn't exist; you have to run the autogen.sh shell script
-(which is included in the source tree) to generate it. This requires you to
-have GNU automake and GNU autoconf installed on your system. Please see the
-file INSTALL for details!
-
-To update the local GIT repository:
-
- $ git pull
-
-This retrieves all changes and merges them into the current branch.
-
-
-III. Contributing
-~~~~~~~~~~~~~~~~~
-
-Patches should be sent to the ngircd mailing list. List homepage:
-http://arthur.barton.de/mailman/listinfo/ngircd-ml
-
-If you do not want to send them to the list, you can also mail them
-to Alex Barton, <alex@barton.de>.
-
-
-IV. Write Access
-~~~~~~~~~~~~~~~~
-
-If you want to contribute a couple of patches and write access to the GIT
-repository would be handy, please contact Alex Barton, <alex@barton.de>.
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 27942dd3..5913c94e 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,6 +1,6 @@
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors
+# Copyright (c)2001-2015 Alexander Barton (alex@barton.de) and Contributors
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -23,7 +23,6 @@ static_docs = \
 	Commands.txt \
 	Contributing.txt \
 	FAQ.txt \
-	GIT.txt \
 	HowToRelease.txt \
 	Modes.txt \
 	PAM.txt \
diff --git a/doc/Modes.txt b/doc/Modes.txt
index 07f16eb0..d2f6dad7 100644
--- a/doc/Modes.txt
+++ b/doc/Modes.txt
@@ -56,6 +56,7 @@ users to lists (e.g. "invite list", "ban list"), others have parameters
   m	0.3.0	Channel is moderated, only "voiced" users can send messages.
   M	20	Only registered users (and IRC Ops) can send messages.
   n	0.3.0	Channel doesn't allow messages of users not being members.
+  N     23      Users can't change their nickname while on this channel.
   O	18	Only IRC operators are allowed to join this channel.
   P	0.5.0	Channel is "persistent".
   Q	20	Nobody can be kicked from the channel.
diff --git a/doc/src/.gitignore b/doc/src/.gitignore
deleted file mode 100644
index 1936cc1d..00000000
--- a/doc/src/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-html
diff --git a/man/.gitignore b/man/.gitignore
deleted file mode 100644
index af7d6f1d..00000000
--- a/man/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-ngircd.8
-ngircd.conf.5
diff --git a/src/.gitignore b/src/.gitignore
deleted file mode 100644
index 5f069df5..00000000
--- a/src/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-config.h
-config.h.in
-config.h.in~
-stamp-h1
diff --git a/src/ipaddr/.gitignore b/src/ipaddr/.gitignore
deleted file mode 100644
index 08a6d725..00000000
--- a/src/ipaddr/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-Makefile.am
diff --git a/src/ngircd/.gitignore b/src/ngircd/.gitignore
deleted file mode 100644
index 39a55e78..00000000
--- a/src/ngircd/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-Makefile.am
-check-help
-check-version
-ngircd
-ngircd.exe
diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c
index 98ac0e7f..9fca622b 100644
--- a/src/ngircd/irc-login.c
+++ b/src/ngircd/irc-login.c
@@ -172,6 +172,7 @@ GLOBAL bool
 IRC_NICK( CLIENT *Client, REQUEST *Req )
 {
 	CLIENT *intr_c, *target, *c;
+	CHANNEL *chan;
 	char *nick, *user, *hostname, *modes, *info;
 	int token, hops;
 
@@ -259,6 +260,22 @@ IRC_NICK( CLIENT *Client, REQUEST *Req )
 				Client_SetType( Client, CLIENT_GOTNICK );
 		} else {
 			/* Nickname change */
+
+			/* Check that the user isn't on any channels set +N */
+			if(Client_Type(Client) == CLIENT_USER &&
+			   !Client_HasMode(Client, 'o')) {
+				chan = Channel_First();
+				while (chan) {
+					if(Channel_HasMode(chan, 'N') &&
+					   Channel_IsMemberOf(chan, Client))
+						return IRC_WriteErrClient(Client,
+									  ERR_NONICKCHANGE_MSG,
+									  Client_ID(Client),
+									  Channel_Name(chan));
+					chan = Channel_Next(chan);
+				}
+			}
+
 			Change_Nick(Client, target, Req->argv[0],
 				    Client_Type(Client) == CLIENT_USER ? true : false);
 			IRC_SetPenalty(target, 2);
diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c
index 2f922506..99255df1 100644
--- a/src/ngircd/irc-mode.c
+++ b/src/ngircd/irc-mode.c
@@ -580,6 +580,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
 		case 'M': /* Only identified nicks can write */
 		case 'm': /* Moderated */
 		case 'n': /* Only members can write */
+		case 'N': /* Can't change nick while on this channel */
 		case 'Q': /* No kicks */
 		case 't': /* Topic locked */
 			if(is_oper || is_machine || is_owner ||
diff --git a/src/ngircd/messages.h b/src/ngircd/messages.h
index 8a7215b4..4f1632b0 100644
--- a/src/ngircd/messages.h
+++ b/src/ngircd/messages.h
@@ -127,6 +127,7 @@
 #define ERR_USERONCHANNEL_MSG		"443 %s %s %s :is already on channel"
 #define ERR_SUMMONDISABLED_MSG		"445 %s :SUMMON has been disabled"
 #define ERR_USERSDISABLED_MSG		"446 %s :USERS has been disabled"
+#define ERR_NONICKCHANGE_MSG		"447 %s :Cannot change nickname while on %s(+N)"
 #define ERR_NOTREGISTERED_MSG		"451 %s :Connection not registered"
 #define ERR_NOTREGISTEREDSERVER_MSG	"451 %s :Connection not registered as server link"
 #define ERR_NEEDMOREPARAMS_MSG		"461 %s %s :Syntax error"
diff --git a/src/portab/.gitignore b/src/portab/.gitignore
deleted file mode 100644
index 9b94606b..00000000
--- a/src/portab/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-Makefile.am
-portabtest
-portabtest.exe
diff --git a/src/testsuite/.gitignore b/src/testsuite/.gitignore
deleted file mode 100644
index d6715ae4..00000000
--- a/src/testsuite/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-Makefile.am
-T-ngircd1
-T-ngircd1.exe
-T-ngircd2
-T-ngircd2.exe
-channel-test
-connect-test
-invite-test
-join-test
-kick-test
-message-test
-misc-test
-mode-test
-opless-channel-test
-server-link-test
-who-test
-whois-test
-ngircd-test1.log
-ngircd-test2.log
-ngircd-test1.motd
-ngircd-test2.motd
-logs
-tests
-tests-skipped.lst
diff --git a/src/tool/.gitignore b/src/tool/.gitignore
deleted file mode 100644
index 08a6d725..00000000
--- a/src/tool/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-Makefile.am