diff options
| -rw-r--r-- | .gitignore | 40 | ||||
| -rw-r--r-- | AUTHORS | 8 | ||||
| -rw-r--r-- | ChangeLog | 43 | ||||
| -rw-r--r-- | NEWS | 28 | ||||
| -rw-r--r-- | README | 12 | ||||
| -rw-r--r-- | doc/.gitignore | 1 | ||||
| -rw-r--r-- | doc/Contributing.txt | 8 | ||||
| -rw-r--r-- | doc/GIT.txt | 65 | ||||
| -rw-r--r-- | doc/Makefile.am | 3 | ||||
| -rw-r--r-- | doc/Modes.txt | 1 | ||||
| -rw-r--r-- | doc/src/.gitignore | 1 | ||||
| -rw-r--r-- | man/.gitignore | 2 | ||||
| -rw-r--r-- | src/.gitignore | 4 | ||||
| -rw-r--r-- | src/ipaddr/.gitignore | 1 | ||||
| -rw-r--r-- | src/ngircd/.gitignore | 5 | ||||
| -rw-r--r-- | src/ngircd/irc-login.c | 17 | ||||
| -rw-r--r-- | src/ngircd/irc-mode.c | 1 | ||||
| -rw-r--r-- | src/ngircd/messages.h | 1 | ||||
| -rw-r--r-- | src/portab/.gitignore | 3 | ||||
| -rw-r--r-- | src/testsuite/.gitignore | 24 | ||||
| -rw-r--r-- | src/tool/.gitignore | 1 |
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 |