1
0
mirror of https://github.com/osmarks/ngircd.git synced 2025-09-18 02:04:03 +00:00

Compare commits

...

2347 Commits

Author SHA1 Message Date
Alexander Barton
25d35dd6f4 ngIRCd Release 20 2012-12-17 13:14:32 +01:00
Alexander Barton
a445abc10e Update NEWS and ChangeLog files 2012-12-12 11:06:35 +01:00
Alexander Barton
1342f78b09 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>.
2012-12-10 10:41:36 +01:00
Alexander Barton
a0d57a6afd ngIRCd 20~rc2 2012-12-02 18:51:51 +01:00
Alexander Barton
c6ae353756 Update NEWS and ChangeLog files 2012-12-02 18:49:11 +01:00
Alexander Barton
12768e7a54 Update doc/Platforms.txt 2012-11-26 11:54:23 +01:00
Alexander Barton
35e2dcff88 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.
2012-11-24 16:15:35 +01:00
Alexander Barton
dc89e42ef5 RPL_UMODEIS: send correct target name, even on server links 2012-11-24 15:57:45 +01:00
Alexander Barton
4a2d74c9ab Client_HostnameCloaked() -> Client_HostnameDisplayed() 2012-11-24 13:37:56 +01:00
Alexander Barton
cd48b8128e platformtest.sh: Only generate configure script when missing 2012-11-13 23:21:09 +01:00
Alexander Barton
301d4915bc Update platformtest.sh to follow autoconf changes 2012-11-13 22:46:06 +01:00
Alexander Barton
8061056cec Test suite: correctly execute tests when stdout is redirected 2012-11-13 22:46:06 +01:00
Alexander Barton
44926b7f9f 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.
2012-11-12 22:39:57 +01:00
Alexander Barton
d11a700589 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
2012-11-11 16:46:57 +01:00
Alexander Barton
0a26079af2 ngIRCd 20~rc1 2012-11-11 16:03:40 +01:00
Alexander Barton
b6e49f3920 Update Xcode project files 2012-11-11 12:40:47 +01:00
Alexander Barton
4123118d5a 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()
2012-11-11 11:18:53 +01:00
Alexander Barton
e29d198700 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
2012-11-11 11:05:21 +01:00
Alexander Barton
6f531a3c99 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
2012-11-11 10:50:32 +01:00
Alexander Barton
53917fa4b8 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.
2012-11-10 23:33:19 +01:00
Alexander Barton
646218e6f4 Update autoconf/automake version numbers in doc/HowToRelease.txt 2012-11-10 21:50:36 +01:00
Alexander Barton
4185c4a44a Update NEWS and ChangeLog files 2012-11-10 21:49:02 +01:00
Alexander Barton
45b0bb5aff 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.
2012-11-10 21:26:25 +01:00
Alexander Barton
c7db2f8429 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 ...
2012-11-10 21:24:55 +01:00
Alexander Barton
f0b86e6c26 Correctly add irc-metadata.{c|h} to Makefile.ng ... 2012-11-05 23:57:14 +01:00
Alexander Barton
7871a904d7 doc/Protocol.txt: Document METADATA command 2012-11-05 23:51:52 +01:00
Alexander Barton
40e3daf560 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.
2012-11-05 23:49:12 +01:00
Alexander Barton
44b7ff02fd 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.
2012-11-05 23:46:26 +01:00
Alexander Barton
35ed57e6c1 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.
2012-11-05 23:34:21 +01:00
Alexander Barton
79731a57f3 doc/Protocol.txt: add/fix CHARCONV description 2012-11-05 23:11:41 +01:00
DNS777
a7f37cebdc 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)
2012-11-04 20:38:36 +01:00
Alexander Barton
47b99c69cc Test suite: add some "remote checks" to whois-test.e 2012-11-04 19:50:02 +01:00
Alexander Barton
757f3497bc 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).
2012-11-04 18:01:49 +01:00
Alexander Barton
f2455cbe33 Update doc/Services.txt, sort services alphabetically 2012-11-04 13:22:26 +01:00
Alexander Barton
e3f300d323 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.
2012-11-02 17:50:31 +01:00
Alexander Barton
497edbaf3e IRC_NICK(): Code cleanup, new function Change_Nick() 2012-11-02 14:36:29 +01:00
Alexander Barton
48326e061a Spelling fix: "nick name" -> "nickname" 2012-11-02 14:30:19 +01:00
Alexander Barton
84e9dcbab0 Xcode: correctly #define PACKAGE and PACKAGE_NAME 2012-11-02 14:16:58 +01:00
Alexander Barton
30b32e84fe 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 "~"
2012-10-29 11:44:45 +01:00
Alexander Barton
fb92493376 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.
2012-10-29 11:33:49 +01:00
Alexander Barton
eb4f9eac0c 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 ...
2012-10-29 11:33:49 +01:00
Alexander Barton
d7b5dd1bbf IRC_SERVER(): Code cleanup 2012-10-29 11:33:49 +01:00
Alexander Barton
b18e81b631 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.
2012-10-29 10:24:27 +01:00
Alexander Barton
8ff153d7d4 Document new configuration option "MaxListSize" 2012-10-28 20:36:58 +01:00
Brett Smith
32f63abb59 Make the maximum /list reply length a configurable limit. 2012-10-25 14:46:29 -04:00
Alexander Barton
23572af942 Update NEWS and ChangeLog files 2012-10-24 22:03:56 +02:00
Alexander Barton
8d9cfa157a 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.
2012-10-19 19:45:44 +02:00
DNS
58abd0777b 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)
2012-10-19 18:44:15 +02:00
DNS777
3ee98d9f72 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)
2012-10-19 18:38:46 +02:00
Alexander Barton
b1a5ade88f Test suite: add more checks to whois-test.e 2012-10-15 21:39:08 +02:00
Alexander Barton
73229249d8 Add "i586/pc/haiku" to doc/Platforms.txt 2012-10-11 15:05:21 +00:00
Alexander Barton
e0da56fc7b 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.
2012-10-11 14:54:13 +00:00
Alexander Barton
cdaaae0cb2 Search gethostbyname() in libbind and libnetwork
This is required for Haiku (BeOS clone) at least.
2012-10-11 14:50:45 +00:00
Alexander Barton
c319fb8eaa Update manual pages
Among other little things, bring project description in line with website.
2012-10-09 13:13:01 +02:00
Alexander Barton
538e612a47 Test suite: add test for user mode "b" 2012-10-08 12:15:34 +02:00
DNS777
9d97004a28 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.
2012-10-08 12:11:04 +02:00
Alexander Barton
87deb43012 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.
2012-10-07 15:11:05 +02:00
Alexander Barton
a9cbb375b7 Shorten filenames of Anope protocol module patchfiles
Filenames have been too long and couldn't be stored in all tar
archive formats ...
2012-10-07 12:06:11 +02:00
Alexander Barton
161adbb1aa 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.
2012-10-07 00:05:25 +02:00
Alexander Barton
de2fa78d92 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.
2012-10-06 23:17:07 +02:00
Alexander Barton
8bede388af Test suite: remove indentation of messages 2012-10-06 23:17:06 +02:00
Alexander Barton
c9d166747d 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
2012-10-06 22:37:57 +02:00
DNS777
56cdc2175c 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.
2012-10-06 21:56:59 +02:00
DNS777
de453d71cb 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.
2012-10-06 20:49:35 +02:00
DNS777
23b07bdf50 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.
2012-10-06 19:52:15 +02:00
Alexander Barton
9ac94339dc KICK-protect IRC services 2012-10-06 19:23:05 +02:00
Alexander Barton
46b0eef721 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
2012-10-06 18:26:25 +02:00
Alexander Barton
d3ae351236 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.
2012-10-06 18:13:01 +02:00
Alexander Barton
4790d78c98 Define HAVE_SETSID for Mac OS X Xcode builds 2012-10-06 17:58:44 +02:00
Alexander Barton
c66e20ce6e Fix spelling: ERR_CHANOPPRIVTOLOW_MSG -> ERR_CHANOPPRIVTOOLOW_MSG
Thanks to DNS for pointing this out, see bug #126!
2012-10-06 17:21:32 +02:00
Alexander Barton
343a90dc37 Debian: require "telnet" or "telnet-ssl" for building 2012-10-06 16:36:34 +02:00
Alexander Barton
09ab0704f4 Debian ngircd-full[-dbg]: enable CHARCONV 2012-10-06 16:36:07 +02:00
Alexander Barton
114644cdb0 Makefile.am: don't use "make -C", it isn't portable 2012-09-27 01:11:01 +02:00
Alexander Barton
cf9f9e1f30 Test suite: don't use "mkdir -p"
"mkdir -p" is not supported on all platforms.
Tested with Apple A/UX 3.1.x.
2012-09-27 00:57:37 +02:00
Federico G. Schwindt
19ce256a95 ERR_CHANNELISFULL_MSG: better wording
(cherry picked from commit 0fcfa7e00fa8e098dd3724c7188c88ac82a52881)
2012-09-27 00:22:48 +02:00
Alexander Barton
eba53f652c Fix getpid.sh to work on Apple A/UX again 2012-09-27 00:19:31 +02:00
Federico G. Schwindt
d8ee498a65 Send RPL_REHASHING if rehash was accepted
(cherry picked from commit f1b171a09cd076f743a7fff221fa7aa752abb374)
2012-09-27 00:07:40 +02:00
Federico G. Schwindt
e3a1a61868 Change variable name "SSLDHFile" to "DHFile" in log messages
(cherry picked from commit d96db0a2e56d310177edb45d0a8b164a37992ab1)
2012-09-27 00:05:07 +02:00
Federico G. Schwindt
1a2bdd9e4c Move ConnSSL_InitLibrary() "dummy" from header into C file
(cherry picked from commit 5fd88c81a70d0c9e627f08522e57d251586288eb)
2012-09-27 00:03:56 +02:00
Alexander Barton
384f965fba NJOIN: correctly reset channel level flags
This fixes commit 7b01bb83.
Bug reported by DNS777 <dns@rbose.org>, thanks!
2012-09-26 23:51:48 +02:00
Alexander Barton
005340c83f Simplify check for valid user names in IRC_USER().
Patches from Federico G. Schwindt, thanks!

(cherry picked from commit a44b7126227ba1118ec02b399e31b08102af5e8c
and 6fbe9583753b2620da275676cde46a89cb4d06c2)
2012-09-26 23:28:13 +02:00
Alexander Barton
d21afce2b6 Allow user mode +x only when "CloakHostModeX" is set
Allow users to "cloak" their hostname only when the configuration
variable "CloakHostModeX" (introduced in 19.2) is set. Otherwise, only
IRC opertators, other servers, and services are allowed to set mode +x.

This prevents regular users from changing their hostmask to the name
of the IRC server itself, which confused quite a few people ;-)

This fixes bug #133.
2012-09-26 22:55:10 +02:00
DNS777
808c291c76 New configuration option "OperChanPAutoOp"
If disabled, IRC operators don't become channel operators in persistent
channels when joining. Enabled by default, which has been the behavior
of ngIRCd up to this patch.

Closes bug #135.

(Cosmetic fixes by Alex.)
2012-09-25 13:08:39 +02:00
DNS777
62a07596d6 Allow opers to see secret (+s) channels in LIST command
As long as 'MorePrivacy' isn't enabled in the configuration file, local
IRC operators can see secret (+s) channels when using the LIST command.

Closes bug #136.
2012-09-25 12:55:07 +02:00
Alexander Barton
b730b64bbe configure: only use AM_PROG_AR when available
This fixes commit 78d189fb on systems with older automake ...
2012-09-24 20:56:24 +02:00
Alexander Barton
3e22fc32f3 Remove all geneerated Makefile.am on "make maintainer-clean" 2012-09-24 20:45:37 +02:00
Alexander Barton
e65a35e964 Rename configure.in to configure.ac
This fixes

  automake: warning: autoconf input should be named 'configure.ac',
  not 'configure.in'

when running the autogen.sh script.
2012-09-24 20:40:31 +02:00
Alexander Barton
78d189fbf7 configure.ng: use AM_PROG_AR to check ar(1) command
This fixes

  automake-1.12/am/library.am: warning: 'libngipaddr.a':
   linking libraries using a non-POSIX .../automake-1.12/am/library.am:
   archiver requires 'AM_PROG_AR' in 'configure.in'
   src/ipaddr/Makefile.am:12: while processing library 'libngipaddr.a'

and similar warnings of automake.
2012-09-24 20:39:06 +02:00
Alexander Barton
8cfb910441 Merge branch 'automake-am11-am12'
* automake-am11-am12:
  autogen.sh: detect automake version format a.b.c and a.b
  configure.ng: don't require GIT tree to detect version string
  Include .mailmap file in distribution archives
  Include all build-system files into distribution archives
  Change build system to support new and old GNU automake
2012-09-24 20:28:02 +02:00
Alexander Barton
039a939cb8 autogen.sh: detect automake version format a.b.c and a.b 2012-09-24 18:01:47 +02:00
Alexander Barton
d7d5f4330b configure.ng: don't require GIT tree to detect version string 2012-09-24 18:00:36 +02:00
Alexander Barton
79c1222896 Include .mailmap file in distribution archives 2012-09-24 17:50:32 +02:00
Alexander Barton
a3f3a1097b INSTALL: update GNU automake/autoconf requirements 2012-09-24 17:46:22 +02:00
Alexander Barton
d4df626d88 automake: don't use INCLUDES, it's AM_CPPFLAGS nowadays 2012-09-24 17:45:15 +02:00
Alexander Barton
eed8a4ee6e automake: enable colored test output, if available
The "color-tests" option can't be checked for, but is available starting
with automake 1.11 which introduced AM_SILENT_RULES -- so we check this ...
2012-09-24 17:43:02 +02:00
Alexander Barton
b1b83831d1 Add doc/Contributing.txt to distribution archive 2012-09-24 17:40:33 +02:00
Alexander Barton
8e1beae4e7 Include all build-system files into distribution archives 2012-09-24 14:34:16 +02:00
Alexander Barton
baed0618ed Loose GNU autoconf / automake requirements a bit
Now ngIRCd requires at least GNU autoconf 2.61 and automake 1.10, the
requirements of commit 67e882d4 have been too restrictive:

             19.2      67e882d4  now
  ---------- --------- --------- ---------
  autoconf   >=2.50    >=2.67    >=2.61
  automake   >=1.6     >=1.11    >=1.10

The tools required now are supported by Debian GNU/Linux 4.0 "Etch",
RedHat Enterprise Linux 5, and Mac OS X 10.6.x for example.

I read the changelogs of autoconf and automake, and I think ther's nothing
that prevents it from working with these older versions; and we don't want
to force users to upgrade without real benefits.

Please note: the recommended versions are still autoconf 1.11.x and the
most recent autoconf release that works with automake 1.11.x!
2012-09-24 10:22:21 +02:00
Alexander Barton
e3e181f4b3 Merge branch 'bug92-xop'
By Alexander Barton (5) and Sebastian Köhler (2)

* bug92-xop:
  Fix NAMES/WHO response when client has multi-prefix
  Fix prefix of "halfop" when "multi-prefix" is active
  Clean up doc/.gitignore
  doc/Modes.txt: add version number to new channel modes
  Fix some "whitespace glitches"
  Tests and documentation for xop
  Implemented xop support

Conflicts (because of "multi-prefix fix"):
	src/ngircd/irc-info.c

This fixes bug #92 "ngircd does not support XOP usermodes".
2012-09-23 20:06:14 +02:00
Alexander Barton
1f2aa4da6f Fix NAMES/WHO response when client has multi-prefix
This has been fixed by commit 16f94546 "Fix NAMES response when
client has multi-prefix" in the master branch, fix it in this patch
series, too.
2012-09-23 19:37:06 +02:00
Alexander Barton
fc39146f48 Fix prefix of "halfop" when "multi-prefix" is active 2012-09-23 19:23:23 +02:00
Alexander Barton
192e304b94 Change build system to support new and old GNU automake
Starting with GNU automake 1.12, the "de-ANSI-fication support" has been
removed, which ngIRCd used to enable building itself on very old systems.

Now the problem is, that using automake >= 1.12 isn't working because of
the now unsupported M4 macros. Therefore the solution that this patch
implements is to dynamically generate the automake input files with our
own ./autogen.sh script:

  configure.ng => configure.in
  Makefile.ng => Makefile.am

This is quite an ugly approach, but it works and enables us to:

  1. use current automake >= 1.12 for development and "private builds",
  2. still build distribution archives using automake 1.11.x that have
     "de-ANSI-fication support" enabled in the generated Makefile's.

And if you are using Makefile's generated with a automake version newer
than 1.11.x (without "de-ANSI-fication support"), the ./configure script
warns you not to use this generated build system to generate distribution
archives.

Drawback of this patch: you MUST use our autogen.sh script, you can't call
the autoconf/automake commands directly any more; but autoreconf should
still work ...
2012-09-23 18:13:55 +02:00
Alexander Barton
1744a8d145 Clean up doc/.gitignore 2012-09-23 17:52:53 +02:00
Alexander Barton
b12acddf4f doc/Modes.txt: add version number to new channel modes 2012-09-23 17:52:26 +02:00
Alexander Barton
ef82ef4ddb Free all listen ports on initialization
Now you can reconfigure listen ports and reload the server configuration
on runtime. Without this patch, no ports could be removed.
2012-09-21 10:41:03 +02:00
Alexander Barton
bb20aeb9bc Initialize SSL when needed only, and disable SSL on errors
With this patch, the SSL subsystem will only be initialized if at least
one SSL ports is configured; so you won't get "SSL initialization failed"
messages if you didn't configured it at all.

And if SSL initialization fails, no SSL listen ports will be enabled
later which never could establish a working SSL connection at all ...
2012-09-21 10:36:09 +02:00
Alexander Barton
e9d0b2f039 Add "CHARCONV" to "feature string" when enabled 2012-09-17 01:00:05 +02:00
Alexander Barton
222ecbffbb Implement new IRC+ "CHARCONV" command
See bug 109 and doc/Protocol.txt for details and documentation.
2012-09-17 00:56:36 +02:00
Alexander Barton
ce736fc15b Added new configure option "--with-iconv"
The iconv library should be used for implementing the new CHARCONV
IRC command discussed in bug 109.

And because CHARCONV will be an IRC+ feature, we only test for libiconv
if IRC+ is enabled as well.
2012-09-17 00:56:36 +02:00
Alexander Barton
1413a4886f Sort "feature string" alphabetically 2012-09-17 00:55:30 +02:00
Alexander Barton
cfec819f0d Include CAP command even when using "strict RFC mode" 2012-09-16 14:08:52 +02:00
Alexander Barton
107bfdc821 Merge branch 'autoconf-update'
Update GNU autoconf and automake infrastructure.
Tested on modern systems as well as Apple A/UX :-)

* autoconf-update:
  AUTOMAKE_OPTIONS: fix ansi2knr option, include path
  Don't use AC_FUNC_MALLOC and AC_FUNC_REALLOC
  Make our own targets "silent", if enabled
  configure.in: use AC_CHECK_{FUNCS|HEADERS}_ONCE
  Updated config.{guess|sub} to version 2012-08-14
  Make autogen.sh more verbose when VERBOSE=1 is set
  configure.in: use AC_SEARCH_LIBS (not AC_CHECK_LIB)
  configure.in: use AS_HELP_STRING macro
  configure.in: use AC_CANONICAL_HOST (not AC_CANONICAL_TARGET)
  configure.in: inttypes.h is an optional header file
  Use HAVE_SETSID #define when testing for setsid()
  Don't include <stdint.h>, it is included by "portab.h"
  Don't check type.h availability, it is required
  configure.in: Use AC_CONFIG_FILES macro
  configure.in: Don't use AC_C_PROTOTYPES
  configure.in: Update checks for required and optional features
  configure.in: require autoconf 2.67 and automake 1.11
  configure.in: sort some lists (templates, output, ...)
2012-09-16 13:05:23 +02:00
Alexander Barton
5c160921ff AUTOMAKE_OPTIONS: fix ansi2knr option, include path
Set correct relative path to ansi2knr.c in AUTOMAKE_OPTIONS, so that
ansi2knr.{1|c} is only included once in the distribution archive.
2012-09-16 12:43:12 +02:00
Alexander Barton
fe3bef55b7 Don't use AC_FUNC_MALLOC and AC_FUNC_REALLOC
We don't expect the GNU'ish behaviour of of malloc() and realloc() and never
implemented the replacement functions rpl_malloc()/rpl_realloc() -- so these
test result in linking failues on systems that don't have a GNU'ish malloc()
and realloc() even though we don't require it!

Introduced by commit 47ad9afc.
2012-09-15 20:26:59 +02:00
Alexander Barton
5300f0082c Make our own targets "silent", if enabled 2012-09-15 19:15:16 +02:00
Brett Smith
85abfd84be Allow limited punctuation in usernames, for better PAM integration. 2012-09-14 11:56:38 -04:00
Alexander Barton
005ffeaa8c configure.in: use AC_CHECK_{FUNCS|HEADERS}_ONCE 2012-09-13 18:48:25 +02:00
Alexander Barton
5c8c6d3c70 Updated config.{guess|sub} to version 2012-08-14 2012-09-13 18:32:28 +02:00
Alexander Barton
7eb3932d3a Make autogen.sh more verbose when VERBOSE=1 is set 2012-09-13 18:25:50 +02:00
Alexander Barton
ebf2f991b5 configure.in: use AC_SEARCH_LIBS (not AC_CHECK_LIB)
Use the AC_SEARCH_LIBS macro to test for "sometimes but not always"
required libraries, not AC_CHECK_LIB.
2012-09-13 16:40:04 +02:00
Alexander Barton
a451cb22f1 configure.in: use AS_HELP_STRING macro 2012-09-13 00:25:09 +02:00
Alexander Barton
82bf4eb059 configure.in: use AC_CANONICAL_HOST (not AC_CANONICAL_TARGET)
See the autoconf manual for details:
http://www.gnu.org/software/autoconf/manual/autoconf.html#Specifying-Target-Triplets
2012-09-13 00:06:08 +02:00
Alexander Barton
d53d58fff2 configure.in: inttypes.h is an optional header file 2012-09-12 16:01:11 +02:00
Alexander Barton
a072180c92 Merge pull request #2 from briancollins/master
Fix IRC_Send_NAMES not sending correct prefix for certain clients.
2012-09-11 11:29:14 -07:00
Alexander Barton
0fd9a8505a Correctly re-initialize signal handlers on RESTART
This fixes part 2 of bug #127 :-)
2012-09-11 15:44:31 +02:00
Alexander Barton
b2482b39e4 Use HAVE_SETSID #define when testing for setsid() 2012-09-11 14:38:19 +02:00
Alexander Barton
74c7d7131f Don't include <stdint.h>, it is included by "portab.h" 2012-09-11 14:37:31 +02:00
Alexander Barton
4dd1c31dc7 Don't check type.h availability, it is required 2012-09-11 14:36:34 +02:00
Alexander Barton
2e13e821f8 configure.in: Use AC_CONFIG_FILES macro 2012-09-11 14:36:02 +02:00
Alexander Barton
2478c5816b configure.in: Don't use AC_C_PROTOTYPES
Don't use AC_C_PROTOTYPES, AM_C_PROTOTYPES is already used.
2012-09-11 14:34:30 +02:00
Alexander Barton
47ad9afcf3 configure.in: Update checks for required and optional features
Update checks for required and optional header files, data types,
and functions.
2012-09-11 14:32:17 +02:00
Alexander Barton
67e882d4bb configure.in: require autoconf 2.67 and automake 1.11
And use newer features such as bug reporting address and project URL.
2012-09-11 14:30:49 +02:00
Alexander Barton
25c216cbdf configure.in: sort some lists (templates, output, ...) 2012-09-11 14:13:17 +02:00
Alexander Barton
f5441d2170 New_Connection(): mark "IsSSL" parameter as UNUSED
This fixes the following warning message when building without SSL support:

 conn.c: In function "New_Connection":
 conn.c:1365: warning: unused parameter "IsSSL"

Introduced by commit 01b62202.
2012-09-11 13:15:16 +02:00
Alexander Barton
0d67be3f30 Fix some "whitespace glitches"
Some have been introduced by commit 7b01bb83, some are older.
2012-09-11 12:48:51 +02:00
Alexander Barton
f37600ee01 Merge branch 'xop' of https://github.com/kart0ffelsack/ngircd into bug92-xop
* 'xop' of https://github.com/kart0ffelsack/ngircd:
  Tests and documentation for xop
  Implemented xop support

Conflicts (because of merge of the 'cmode-M' branch):
	src/ngircd/channel.c
	src/ngircd/defines.h
	src/ngircd/messages.h
2012-09-11 12:30:19 +02:00
Alexander Barton
f38a9035e5 Show a warning on startup if config file is not a full path
ngIRCd is a long-running process and changes its working directory to "/" to
not block mounted filesystems and the like when running as daemon ("not in the
foreground"); therefore the path to the configuration file must be relative to
"/" (or the chroot() directory), which basically is "not relative", to ensure
that "kill -HUP" and the "REHASH" command work as expected later on.

This fixes parts of bug #127.
2012-09-11 11:40:47 +02:00
Alexander Barton
a12d6ff257 Create &SERVER channel after predefined channels
This patch allows you to define &SERVER in a [Channel] block yourself
and to overwrite the built-in topic and channel modes.

Fixes bug #131.
2012-09-10 17:59:15 +02:00
Alexander Barton
2205227c3b WHO #channel: don't limit list size
It makes no sense to limit the list size when doing WHO for a channel
and not to return all the users in that channel, so I removed the check.
But if there are more than MAX_RPL_WHO(25) replies, the client requesting
the list will be "penalized" one second more (then 2 in total).

This fixes bug #125.
2012-09-10 12:43:44 +02:00
Alexander Barton
d2d867ea36 Define EV_SET() for kqueue() on systems that don't have it
Some systems, notably FreeBSD 4.x, do have the kqueue() function but
lack the definition of EV_SET() in their header files -- but don't
worry, we can #define it on our own ;-)

Definition taken from /usr/include/sys/event.h of FreeBSD 8.1.
Patch tested on FreeBSD 4.1 by Götz Hoffart. Thanks!
2012-09-04 23:28:32 +02:00
Alexander Barton
b232ae2f17 Fix contrib/Makefile.am to list all files in EXTRA_DIST 2012-09-04 22:49:45 +02:00
Alexander Barton
53b2acc00b Update project description 2012-09-04 13:09:27 +02:00
Alexander Barton
01b62202b2 New function Conn_StartLogin() to finish connection initialization
Conn_StartLogin() is called after the connection has been established and
fully innitialized, including the SSL handshake, for example.

Up to this patch, the "NoticeAuth" option broke the SSL handshake ...
2012-08-29 17:24:19 +02:00
Alexander Barton
b68bb560e9 Convert CONN_ID and Conf_MaxConnections to "int" datatype
We can't handle more connections than accept(2) can supply, and
accept(2) returns an "int" ...
2012-08-29 17:03:41 +02:00
Alexander Barton
21467c76f1 Introduce numeric RPL_HOSTHIDDEN_MSG(396)
This numeric is sent to the client each time it changes its displayed
hostname using "MODE +/-x", and if "CloakHost" is set right after the
MOTD has been sent.
2012-08-28 23:28:56 +02:00
Alexander Barton
33fae67579 Always cloak client hostname, if needed
Not only cloak the hostname in Client_MaskCloaked(), but also in
Client_HostnameCloaked() -- so move the actual cloaking to this function
and call it in Client_MaskCloaked() to get the (cloaked) hostname.

This fixes USERHOST not displaying the correctly cloaked hostname,
for example.
2012-08-28 23:26:43 +02:00
Alexander Barton
864015fa3f NoticeAuth: make sure messages are flushed immediately 2012-08-28 22:09:06 +02:00
Alexander Barton
1d3def0cc6 Merge branch 'umode-B'
This patch series allows ngIRCd to support the user mode "B" ("Bot flasg"):
it is settable and unsettable by every (non-restricted) client.
According to DNS777, this is how Unreal and InspIRCd do behave, so do we :-)

By Alexander Barton (1) and DNS777 (1)

* umode-B:
  Add new user mode "B" to doc/Modes.txt
  Implement an Unreal-like user mode "B" ("Bot mode")
2012-08-27 23:27:30 +02:00
Alexander Barton
e01e8f1cb6 Merge branch 'recognize-umode-R'
By Alexander Barton (1) and DNS777 (1)

* recognize-umode-R:
  Only allow IRC services to modify user mode "R"
  Recognize user mode "R"
2012-08-27 23:21:28 +02:00
Alexander Barton
186ab51137 Only allow IRC services to modify user mode "R" 2012-08-27 23:20:32 +02:00
Alexander Barton
74be904018 ngt_RandomStr(): : make it buildable with pre-ANSI C compilers 2012-08-27 22:42:52 +02:00
Alexander Barton
298cd9a327 Get_CAP_String(): make it buildable with pre-ANSI C compilers 2012-08-27 22:42:04 +02:00
Alexander Barton
414bfe65eb Enhance "NOTICE AUTH": show hostname and IDENT reply 2012-08-27 22:05:55 +02:00
Alexander Barton
c519ba9920 Merge branch 'cmode-M'
By Alexander Barton (2) and DNS777 (1)

* cmode-M:
  Add new channel mode "M" to doc/Modes.txt
  Remove Can_Send_To_Channel_Identified()
  Implement channel mode "M"
2012-08-27 21:22:58 +02:00
Alexander Barton
fee8ff37b3 Add new channel mode "M" to doc/Modes.txt 2012-08-27 21:17:49 +02:00
Alexander Barton
fee591b759 Remove Can_Send_To_Channel_Identified()
Move the functionality directly into Can_Send_To_Channel() function.
There should be no functional change ...
2012-08-27 21:15:12 +02:00
Brian Collins
16f94546f5 Fix NAMES response when client has multi-prefix
Two fixes here: IRC_Send_NAMES was checking the capability of the
wrong client when responding, and it didn't return any prefix for
clients that had either +v or +o but not both.
2012-08-27 16:23:57 +01:00
Alexander Barton
55859c1bef Merge branch 'better-chan-errors'
By Alexander Barton (1) and DNS777 (1)

* better-chan-errors:
  Remove unused ERR_CANNOTSENDTOCHAN2_MSG message
  Add some more information to channel error numerics
2012-08-26 19:42:08 +02:00
Alexander Barton
bcefdef1ea Merge branch 'move-connection-password' of git://arthur.barton.de/ngircd-alex
This patch series converts the statically allocated password buffer in the
CLIENT structure into a dynamically (and only when needed) allocated buffer
which is referenced by the CONNECTION structure.

This a) saves memory for clients not using passwords at all and b) allows
for "arbitrarily" long passwords.

By Brett Smith (5) and Alexander Barton (2).

* 'move-connection-password' of git://arthur.barton.de/ngircd-alex:
  Login_User(): use "conn" insted of calling Client_Conn(Client)
  Free already saved password when storing a new one
  Indentation and style fixes.
  Connection password is not constant.
  Implementation clean-ups.
  Dynamically allocate memory for connection password.
  Move client password from the Client to the Connection struct.
2012-08-26 19:14:29 +02:00
Alexander Barton
f79d41e927 Login_User(): use "conn" insted of calling Client_Conn(Client) 2012-08-26 19:11:44 +02:00
Alexander Barton
1680ea02da Free already saved password when storing a new one
This shouldn't happen (clients aren't allowed to send more than one PASS
command), but who knows ...
2012-08-26 19:07:38 +02:00
DNS777
1aaf54ac24 Implement channel mode "M"
Only the server, identified users and IRC operators are able to talk.
2012-08-26 16:40:49 +02:00
Alexander Barton
a5984c702a Remove unused ERR_CANNOTSENDTOCHAN2_MSG message 2012-08-26 16:15:44 +02:00
DNS777
9a82304ae9 Add some more information to channel error numerics 2012-08-26 16:14:40 +02:00
Alexander Barton
a26e37b746 Add new user mode "B" to doc/Modes.txt 2012-08-26 16:03:00 +02:00
DNS777
c2b39fdede Implement an Unreal-like user mode "B" ("Bot mode") 2012-08-26 15:58:37 +02:00
DNS777
8349a1c0d9 Recognize user mode "R"
This allows users to unset the user mode "R".
2012-08-26 15:30:49 +02:00
Alexander Barton
360a254be0 Enhance "ServiceMask" to handle a list of masks
The "ServiceMask" variable in "Server" blocks now can handle more than
one mask using the new MatchCaseInsensitiveList() function.

This makes marking "service clients" much more specific, which is a
good thing per se, but which is the prerequisite for reasonably
blocking these nick names, too (see commit a6dd2e3 for details).
2012-08-26 13:24:54 +02:00
Alexander Barton
ab1fcebeff New function MatchCaseInsensitiveList() to check list of patterns 2012-08-26 13:11:45 +02:00
Alexander Barton
a6dd2e33c2 Block nicknames that are reserved for services
This patch introduces the new function Conf_NickIsBlocked() which checks
if a given nick name matches with the "service mask" of a configured server.
And Client_CheckNick() uses this information to deny such names for regular
IRC users.

So nick names intended for IRC services are more protected and can't be used
by regular users even when the "services pseudo-server" isn't connected to
the network.

But please note:

Up to now, there can be only one "ServiceMask" pattern per server, which
most probably blocks much more nick names than really required ...
So "ServiceMask" should allow more than one pattern which can be more
specific, and most probably it should be possible to block nick names in
the global server configuration as well.

Nick names introduced by other servers/services are never restricted.
2012-08-26 12:33:21 +02:00
Alexander Barton
9d8974d509 Rename Conf_IsService() to Conf_NickIsService() 2012-08-26 12:27:51 +02:00
Alexander Barton
037b4b76df Check_Connections(): code cleanup 2012-08-26 12:04:40 +02:00
Brett Smith
be97fa8ab1 Indentation and style fixes. 2012-08-23 14:18:15 -04:00
Brett Smith
164954a788 Connection password is not constant.
Saying otherwise makes a warning when we assign this to
conv.appdata_ptr in pam.c.
2012-08-23 13:59:17 -04:00
Brett Smith
c1d7f6216f Implementation clean-ups.
* Have Conn_Password return an empty string when no password has been set,
  to play better with pam.c.

* Use strdup in Conn_SetPassword.
2012-08-23 12:24:34 -04:00
Brett Smith
7df4c12da9 Dynamically allocate memory for connection password. 2012-08-23 12:12:15 -04:00
Brett Smith
0d5de60584 Move client password from the Client to the Connection struct.
This is a relatively naive implementation, basically doing the bare minimum
necessary to make the switchover go.  Subsequent commits can focus on
improving the implementation.
2012-08-23 11:07:08 -04:00
Alexander Barton
4b0f526006 Xcode: use certificate of Alex for code signing
When doing non-debug Xcode builds, use the "Developer ID Application:
Alexander Barton" certificate for code signing by default.
2012-08-22 00:50:15 +02:00
Alexander Barton
4cf65b973c "make uninstall": remove ngircd.conf if not modified
Now "make uninstall" removes the installed "ngircd.conf" file, if it
is still equal to our "sample-ngircd.conf" file and therefore hasn't
been modified by the user. If it has been modified, it isn't removed
and a notice is displayed to the user.

In addition, "make install" now displays a message when no ngircd.conf
file exists and the "sample-ngircd.conf" file will be installed as a
starting point.
2012-08-18 23:50:20 +02:00
Alexander Barton
160f728530 contrib/ngircd.service: systemd service file for ngircd
Thanks to Kyle Keen <keenerd@gmail.com>:

Date: Sat, 18 Aug 2012 08:28:22 -0400
Message-ID: <CAAKTTKNNmrB=8XtxcV6w1Q-RQ6J_xTTDGD4MHQFaDy6V3=B19Q@mail.gmail.com>
From: keenerd <keenerd@gmail.com>
To: ngircd-ml@ngircd.barton.de
Subject: [ngIRCd-ML] systemd service

Hello all.

Linked is a service file for ngircd.  Please add this to your source
tree so other people don't have to learn to write service files ;-)

https://projects.archlinux.org/svntogit/community.git/plain/trunk/ngircd.service?h=packages/ngircd

-Kyle Keen
Arch Linux TU
http://kmkeen.com
2012-08-18 16:01:51 +02:00
Alexander Barton
922540306e ngt_RandomStr(): Add implicit cast to "unsigned".
This fixes the following warning of Xcode 4.5:

 src/tool/tool.c:150:19:
  Implicit conversion loses integer precision: 'long' to 'unsigned int'
2012-08-18 12:34:11 +02:00
Alexander Barton
d48e440a72 Fix a buffer overflow when initializing the random salt for "+x"
This "off by one" buffer overflow has been introduced in commit 49385a98,
"Implemented hashed cloaked hostnames for +x".
2012-08-16 23:51:28 +02:00
Alexander Barton
0709a0f050 configure.in: Use AC_CONFIG_HEADER instead of AM_CONFIG_HEADER
AM_CONFIG_HEADER is marked obsolete and will be removed in Automake 1.13.
2012-08-11 16:29:14 +02:00
Sebastian Köhler
097c72aa65 Tests and documentation for xop 2012-08-06 04:42:20 +02:00
Sebastian Köhler
7b01bb833f Implemented xop support
3 new channel user modes have been added.

Half Op: +h(Prefix: %) can set the channel modes +imntvIbek
and kick all +v and normal users.

Admin: +a(Prefix: &) can set channel modes +imntvIbekoRsz and kick all
+o, +h, +v and normal users.

Owner: +q(Prefix: ~) can set channel modes +imntvIbekoRsz and kick all
+a, +o, +h, +v and normal users
2012-08-06 04:42:09 +02:00
Alexander Barton
cfd0bddc30 Fix compiler warning when not building with ZLIB support
This fixes:

 irc.c: In function ‘Option_String’:
 irc.c:333:9: error: variable ‘options’ set but not used
2012-08-06 01:35:56 +02:00
Alexander Barton
b53b12aa5f Update NEWS and ChangeLog files for hashed cloaked hostnames 2012-08-03 23:55:25 +02:00
Sebastian Köhler
d0bb185cf5 Hashed hostnames for CloakHost
Implemented support for hashed hostnames for CloakHost. The admin can
use '%x' in both the CloakHost and CloakHostModeX setting. The config
option CloakHostModeX was renamed to CloakHostSalt. This salt is used
for both cloaking options.
2012-08-03 04:10:11 +02:00
Sebastian Köhler
49385a98b2 Implemented hashed cloaked hostnames for +x
CloakHostModeX can now contain '%x'. It will be replace by the hash of
the original client hostname. The new config option CloakHostModeXSalt
defines the salt for the hash function. When CloakHostModeXSalt is not
set a random salt will be generated after each server restart.

Spelling fix in defines.h
2012-08-03 04:09:37 +02:00
Alexander Barton
b9e6cb3e55 ngIRCd release 19.2 2012-06-19 11:47:15 +02:00
Alexander Barton
dffe5a9d60 doc/Capabilities.txt: document "multi-prefix" capability 2012-06-13 12:19:56 +02:00
Alexander Barton
d7eb343ea0 ngIRCd release 19.2~rc1 2012-06-13 11:40:24 +02:00
Alexander Barton
bf5610a3b9 Merge branch 'bug124-CloakHostModeX'
* bug124-CloakHostModeX:
  Describe "CloakHostModeX" in sample-ngircd.conf an ngircd.conf(5)
  Rename "CloakModeHost" option to "CloakHostModeX"
  Introduce new configuration option "CloakModeHost"

This closes bug #124.
2012-06-11 10:44:28 +02:00
Alexander Barton
7bce6780ca Update ChangeLog and NEWS files 2012-06-09 12:53:44 +02:00
Alexander Barton
bf121ae95f Describe "CloakHostModeX" in sample-ngircd.conf an ngircd.conf(5) 2012-06-09 02:04:50 +02:00
Alexander Barton
7b6b492bdd Rename "CloakModeHost" option to "CloakHostModeX" 2012-06-09 01:58:40 +02:00
Christoph Biedl
aa7db2c0e9 Introduce new configuration option "CloakModeHost"
This closes bug #124.
2012-06-09 01:58:25 +02:00
Alexander Barton
684e50f0a4 Correctly handle asynchronously re-established server links
Don't try to establish an outgoing server link after DNS lookup when this
server re-connected on its own in the meantime.
In addition, log a warning message if we try to update the connection
index of an already connected server structure -- and ignore it.

Up to now, both behaviour could lead to a race when the remote server
connects to this daemon while it still prepares the outgoing connection:

 - The local server prepares the new outgoing connection ...
 - in the meantime the remote server becomes connected and registered.
 - Now the new outgoing connection overwrites the (correct) socket handle,
 - then the 2nd connection becomes disconnected: "already registered",
 - and the 1st connection becomes unhandled ("gets lost") because the
   configuration structure is reset because of the wrong socket handle.

This patch hopefully fixes all these problems.
2012-06-09 01:03:48 +02:00
Alexander Barton
4a90959cb5 Log a debug message when SIGUSR2 is handled 2012-06-08 22:08:52 +02:00
Alexander Barton
9b1cf420f1 doc/Platforms.txt: more updates
Added:
 - armv6l/unkn./linux-gnueabi, gcc 4.4.5
 - i686/pc/linux-gnu, gcc 2.7.2

Updated:
 - i386/pc/solaris2.11, gcc 4.2.3

Thanks to Götz Hoffart!
2012-06-07 17:09:45 +02:00
Alexander Barton
e7e47e77a3 NoticeAuth: Fix test if IDENT reply has been invalid
This fixes

 conn.c: In function ‘cb_Read_Resolver_Result’:
 conn.c:2252: warning: comparison between pointer and integer
2012-06-02 00:32:19 +02:00
Alexander Barton
695df6532e IDENT reply: only allow alphanumeric characters in user name
Only alphanumeric characters are allowed in the user name, so ignore
all IDENT replies that would violate this rule and use the one supplied
by the USER command.
2012-06-02 00:24:53 +02:00
Alexander Barton
6680b536c4 USER command: only allow alphanumeric characters in user name
Only alphanumeric characters are allowed in the user name, so terminate
the connection if any "strage" characters have been supplied by the user.

This is how other IRC daemons (like ircd2.11 and ircd-seven) behave ...
2012-06-01 23:57:51 +02:00
Alexander Barton
a21a7d8b66 doc/Platforms.txt: add powerpc/apple/darwin7.9.0 2012-05-29 17:21:03 +02:00
Alexander Barton
c0d059cd0e Change wording of "TLS initialized" message
Don't use the word "socket" to identify the connection number, but use the
word "connection" like on all the other messages logged.
2012-05-23 17:12:31 +02:00
Alexander Barton
7faa3ed7d6 Pidfile_Create(): Don't leak file descriptor on error path
Detected by cppcheck:
 [src/ngircd/ngircd.c:502]: (error) Resource leak: pidfd
2012-05-22 13:31:08 +02:00
Alexander Barton
c9b152fa41 INSTALL: Add "satisfy prerequisites" section
Include information for RedHat/Fedora and Debian/Ubuntu based
Linux distributions.
2012-05-19 00:45:23 +02:00
Alexander Barton
ae27571414 NEWS, ChangeLog: fixed some misspellings 2012-05-07 22:38:26 +02:00
Alexander Barton
5e5377a063 Numeric 005 (ISUPPORT), CHANMODES: add missing mode "r" 2012-05-01 13:42:57 +02:00
Alexander Barton
884c5bcff1 doc/Platforms.txt: add "armv7l/unknown/linux-gnueabi" 2012-04-29 22:45:46 +02:00
William Pitcock
3a2fcc32cd Add instructions for setting up Atheme. 2012-04-29 19:48:48 +02:00
Alexander Barton
a8aa8c6cbc irc-cap.c: mark arguments of Handle_CAP_ACK() as "unused"
This fixes

 irc-cap.c: In function ‘Handle_CAP_ACK’:
 irc-cap.c:163: warning: unused parameter ‘Client’
 irc-cap.c:163: warning: unused parameter ‘Arg’
2012-04-29 12:39:28 +02:00
Alexander Barton
f01b09ce84 irc-login.c, login.c: add missing include of "string.h"
This fixes the following warnings with GCC 4.4.5 on Linux:

 irc-login.c: In function ‘IRC_PASS’:
 irc-login.c:92: warning: implicit declaration of function ‘strlen’
 irc-login.c:92: warning: incompatible implicit declaration of built-in function ‘strlen’
 irc-login.c:113: warning: incompatible implicit declaration of built-in function ‘strlen’
 irc-login.c:129: warning: implicit declaration of function ‘strchr’
 irc-login.c:129: warning: incompatible implicit declaration of built-in function ‘strchr’
 irc-login.c:133: warning: implicit declaration of function ‘strcmp’
 irc-login.c: In function ‘IRC_SERVICE’:
 irc-login.c:556: warning: incompatible implicit declaration of built-in function ‘strchr’
 login.c: In function ‘Login_User’:
 login.c:131: warning: implicit declaration of function ‘strcmp’
2012-04-29 12:36:23 +02:00
Alexander Barton
2419a701d8 doc/Modes.txt: Document missing channel mode "e" 2012-04-29 12:11:50 +02:00
Alexander Barton
110be707c3 Merge branch 'master' of /srv/git/ngircd
* 'master' of /srv/git/ngircd:
  "multi-prefix" capability 2/2: adjust NAME and WHO handlers
  "multi-prefix" capability 1/2: implement complete CAP infrastructure
  IRC_Send_NAMES(): Code cleanup
  New function Client_CapSet() in addition to Client_Cap{Add|Del}
  "CAP REQ" starts capability negotiation and delays user registration
  Xcode: update project file for Xcode 4.3
  Correctly handle "CAP END", new client type CLIENT_WAITCAPEND
  Implement core IRC capability handling and "CAP" command
  New "login" source file
  Introduce_Client() => Client_Introduce(), and move it to client.c
2012-04-28 01:00:34 +02:00
Alexander Barton
b2743af0ed contrib/platformtest.sh: support "CC=xxx MAKE=yyy ./platformtest.sh"
Now you can use contrib/platformtest.sh on platforms that require a "special"
make (not "make") or compiler (not cc/gcc) binary.
2012-04-28 00:58:23 +02:00
Alexander Barton
76565022fb Merge branch 'capabilities'
* capabilities:
  "multi-prefix" capability 2/2: adjust NAME and WHO handlers
  "multi-prefix" capability 1/2: implement complete CAP infrastructure
  IRC_Send_NAMES(): Code cleanup
  New function Client_CapSet() in addition to Client_Cap{Add|Del}
  "CAP REQ" starts capability negotiation and delays user registration
  Correctly handle "CAP END", new client type CLIENT_WAITCAPEND
  Implement core IRC capability handling and "CAP" command
  New "login" source file
  Introduce_Client() => Client_Introduce(), and move it to client.c
2012-04-28 00:49:37 +02:00
Alexander Barton
4602cb9891 "multi-prefix" capability 2/2: adjust NAME and WHO handlers
The NAME and WHO commands now return multiple usermode prfixes when
the "multi-prefix" capability is in effect for the requesting client.

See <http://ircv3.atheme.org/extensions/multi-prefix-3.1>
2012-04-28 00:39:21 +02:00
Alexander Barton
1d7e99531a "multi-prefix" capability 1/2: implement complete CAP infrastructure
Now ngIRCd is able to handle "CAP LS", "CAP REQ", "CAP LIST", and
"CAP CLEAR" commands.

"multi-prefix" can be set/unset, but has no functionality - yet!
2012-04-28 00:36:41 +02:00
Alexander Barton
f0a9dbe3ad IRC_Send_NAMES(): Code cleanup 2012-04-28 00:20:42 +02:00
Alexander Barton
245782897b New function Client_CapSet() in addition to Client_Cap{Add|Del} 2012-04-27 23:56:56 +02:00
Alexander Barton
2327b17656 "CAP REQ" starts capability negotiation and delays user registration
New helper function Set_CAP_Negotiation().
2012-04-27 22:47:22 +02:00
Alexander Barton
359732af85 Xcode: update project file for Xcode 4.3
(No changes needed)
2012-04-27 15:52:09 +02:00
Alexander Barton
1dea0d91a0 platformtest.sh: Detect Open64 C compiler 2012-04-24 12:10:35 +02:00
Alexander Barton
d67d077a71 Fix 8ec17063: "Lists_Add(): use size of destination when copying data"
Thanks to Florian Westphal for spotting my silliness ...
2012-04-18 17:54:54 +02:00
Alexander Barton
69be7a85a2 Xcode: correctly sort conn-ssl.{c|h} files in file list 2012-04-17 12:57:27 +02:00
Alexander Barton
8ec17063a6 Lists_Add(): use size of destination when copying data
This fixes the following warning of clang:

/src/ngircd/lists.c:152:44:
 warning: size argument in 'strlcpy' call appears to be size of the
 source; expected the size of the destination [-Wstrlcpy-strlcat-size]

But it isn't a real problem, because the size of the source always is the
same than the size of the destination ...
2012-04-17 12:54:38 +02:00
Alexander Barton
da4c1ebe81 Correctly handle "CAP END", new client type CLIENT_WAITCAPEND 2012-03-31 16:37:31 +02:00
Alexander Barton
bd3a7ccb15 Implement core IRC capability handling and "CAP" command
This patch implements the core functions to support "IRC Capabilities"
and the IRC "CAP" command as used by other servers and specified here:
<http://www.leeh.co.uk/draft-mitchell-irc-capabilities-02.html>.

It enables ngIRCd to support the defined handshake, but it doesn't
implement any capabilities, so "CAP LS" and "CAP LIST" always return
the empty set and "CAP REQ ..." always fails with "CAP NAK".
2012-03-31 15:59:06 +02:00
Alexander Barton
edfcc2f9d5 New "login" source file
Rename Hello_User[_PostAuth] to Login_User[_PostAuth] and move it to the
new login.c; and move cb_Read_Auth_Result(), too. This will enable further
code to easily call Login_User() when required.
2012-03-31 15:38:46 +02:00
Alexander Barton
ee362b3bd2 Introduce_Client() => Client_Introduce(), and move it to client.c 2012-03-31 15:24:30 +02:00
Alexander Barton
67bd1bf34f Makefiles: list each source files on a separate line
Patches that add/remove source files become much nicer this way :-)
2012-03-31 12:52:58 +02:00
Alexander Barton
9f3af061cf Add missing documentation files to Xcode project 2012-03-31 12:51:33 +02:00
Alexander Barton
88c3d4896a Don't ignore "permission denied" errors when enabling chroot
Up to now, ngIRCd silently ignored permission denied errors when trying
to enable a chroot setup: only the "not running chrooted" message became
logged later on.

This patch lets ngIRCd exit with a fatal error when the chroot can't
be enabled on startup -- this is the much safer bevahiour!
2012-03-28 11:30:48 +02:00
Alexander Barton
7b6ef3bc8e FAQ: enhance description of chroot setup 2012-03-28 11:29:26 +02:00
Alexander Barton
fbaa751da8 ngIRCd Release 19.1 2012-03-19 19:19:58 +01:00
Alexander Barton
06b6327875 Update ChangeLog for upcoming ngIRCd 19.1 release 2012-03-16 13:55:00 +01:00
Alexander Barton
0d9740b9fa Fix gcc warning, initialize "list" variable to NULL
This fixes the following warning with gcc 4.6.3.:

  irc-mode.c: In function "Channel_Mode":
  irc-mode.c:947:26: error: "list" may be used uninitialized
                     in this function
  irc-mode.c:884:25: error: "list" may be used uninitialized
                     in this function

(The variable has never been used uninitialized, so don't worry)
2012-03-12 22:27:55 +01:00
Alexander Barton
e9be3334d1 Fix manual page "hyphen-used-as-minus-sign" error (lintian)
Thanks to Christoph Biedl for reporting this!
2012-03-12 11:02:17 +01:00
Alexander Barton
0ae74ceaed Fix typo: Please not -> Please note
Thanks to Götz Hoffart!
2012-03-12 09:49:24 +01:00
Alexander Barton
17ffda1c8a Fix typo: recieved -> received
Thanks to Christoph Biedl.
2012-03-12 09:47:19 +01:00
Alexander Barton
0de11ead36 Update NEWS and ChangeLog files 2012-03-05 22:29:53 +01:00
Alexander Barton
9d486db460 Really include _all_ patches to build the Anope module 2012-03-05 21:30:38 +01:00
Christoph Biedl
257fe922d2 getpid.sh: Fix testcase error for Debian using sbuild
When

 * building the ngircd Debian package (on Linux at least) and
 * using the sbuild build system,

the command "ps -af" does not include the commands running inside the
sbuild system. Therefore, start-server.sh will report a fail as getpid.sh
cannot not  find the ./T-ngircd1 just started although it's actually
running. This results in a funny build log ...

         starting server 1 ... failure!
   FAIL: start-server1
         running connect-test ... ok.
   PASS: connect-test

The self-test of getpid.sh however will likely succeed as it's happy if
it sees any process with "sh" somewhere in the name. Things go downhill
from there.

The confusing things are:

  * The alternative cowbuilder/pbuilder does not have this problem.
  * The alternative usage "ps ax" does fine.

So, as a quick hack, the patch attached adds another switch to getpid.sh.
2012-03-03 18:53:03 +01:00
Alexander Barton
1068f88377 Don't log "ngIRCd hello message" two times
Start "regular" logging not until the configuration file has been read in
and "SyslolgFacility" is set, and log all configuration errors using the
generic "daemon" facility.

So if there are no configuration errors, logging starts right after parsing
the configuration and we log the configuration file used _after_ reading it.
But this is no problem because every configuration error message includes
the configuration file name as well.

(The "double hello" has been introduced by commit 3641e51109)
2012-03-02 09:41:13 +01:00
Alexander Barton
9e7360e5fa ngIRCd release 19 2012-02-29 17:35:32 +01:00
Alexander Barton
273d4bdd32 Merge branch 'master' of /srv/git/ngircd
* 'master' of /srv/git/ngircd:
  Update doc/Platforms.txt for ngIRCd 19
  doc/README-Interix.txt: note that GNU make should be used
2012-02-29 14:47:37 +01:00
Alexander Barton
27d244dfae Update doc/Platforms.txt for ngIRCd 19 2012-02-29 14:46:34 +01:00
Alexander Barton
a39a1a5273 doc/README-Interix.txt: note that GNU make should be used 2012-02-29 13:20:09 +01:00
Alexander Barton
ef392e7d37 Update config.guess and config.sub to recent versions 2012-02-27 17:19:44 +01:00
Alexander Barton
c38751191f Don't accept "[SSL]" in config when no SSL support is built in 2012-02-26 15:52:12 +01:00
Alexander Barton
5cbdcf4f0d Fix C syntax: duplicate ";;" should be ";"
Using gcc 2.7.2, this fixes:

 irc-channel.c: In function `join_allowed':
 irc-channel.c:86: parse error before `const'
2012-02-26 15:27:04 +01:00
Alexander Barton
3641e51109 Correctly re-open syslog logging after reading of configuration
Syslog logging has been initialized before reading the configuraton
file, so ngIRCd always used the default facility and ignored the
"SyslogFacility" configuration option.

Thanks to Patrik Schindler for reporting this issue!
2012-02-14 11:01:13 +01:00
Alexander Barton
3f46e93ccc Logging: remove "Activating ..." info message 2012-02-14 10:32:58 +01:00
Alexander Barton
8e3c56e5b2 ngIRCd release 19~rc1 2012-02-12 17:58:50 +01:00
Alexander Barton
e1026d5dd1 Update RPM spec file description to match Debian "control file" 2012-02-12 17:57:33 +01:00
Alexander Barton
f7bdee5f13 Update NEWS and ChangeLog files 2012-02-12 16:48:57 +01:00
Alexander Barton
391aa8d1f7 Fix forwarding of LIST commands
Bug reported by Cahata, thanks!
2012-02-12 13:51:43 +01:00
Alexander Barton
89d99e2ff9 Update preliminary ngIRCd protocol module for Anope 1.9.6 2012-02-04 12:55:41 +01:00
Alexander Barton
c16133c5ee New_Connection(): don't set the client hostname twice
Setting the hostname twice doesn't do much harm a lot, but isn't elegant.
And for IPv6 addresses, it isn't correct the first time (missing []) ...
2012-01-25 17:11:44 +01:00
Alexander Barton
4888984429 Client_SetHostname(): Code cleanup, more debug logging 2012-01-25 17:11:00 +01:00
Florian Westphal
44bb22d23e io: use define for number of possible events 2012-01-24 22:25:22 +01:00
Florian Westphal
c7dd5ea0ba io: remove outer do {} while loops for epoll/kqueue/devpoll backends
simplifies things a bit. io_dispatch() is called repeatedly from the
main loop.
2012-01-24 21:57:23 +01:00
Alexander Barton
871760583c Enhance server command limits
This patch updates the limits for handling commands from a remote server:

 - "<user count> / 5 + <min>" using "<min>=10" during normal operation,
 - the above count multiplied with 5 while servers are syncing.

The intention is to a) make the limit dependent of the number of users
in the network (the more users, the more commands required to sync) and
b) to significantly rise this limit while servers are joining the network
to make the login and synchronization faster.
2012-01-24 02:55:53 +01:00
Alexander Barton
bc20f9ec10 Send a PING at the end of the server sync to detect it
At the end of sending all "state" to the remote server, a PING command
is sent to request a PONG reply. Until then, no "regual" PING was sent,
so Conn_LastPing(<connection>) is null and now becomes non-null in the
PONG command handler.

So the servers are still synchronizing when Conn_LastPing(<connection>)
is 0, which could easily be tested.
2012-01-24 02:46:12 +01:00
Alexander Barton
5a200e1543 New function Conn_UpdatePing() to update the "ping timestamp" 2012-01-24 02:44:57 +01:00
Alexander Barton
d2df7396a8 Conn_UpdateIdle(): Code cleanup 2012-01-24 02:43:55 +01:00
Alexander Barton
3d27073d61 RPL_ISUPPORT_MSG(005): add "EXCEPTS=e INVEX=I"
Thanks to Cahata for the idea!
2012-01-23 22:07:40 +01:00
Alexander Barton
b6f19ea8fe Fix "MAXLIST=beI:50": the limit is the sum of all lists
"Modes which are specified in the same pair share the same maximum size",
so "beI:50" means a total of 50 entries, regardless of the list.

See <http://www.irc.org/tech_docs/draft-brocklesby-irc-isupport-03.txt>,
thanks to Cahata for reporting this!
2012-01-23 21:51:38 +01:00
Alexander Barton
8c46067b34 Update NEWS and ChangeLog files 2012-01-23 12:30:16 +01:00
Alexander Barton
594fdd02aa New RPL_WHOISHOST_MSG(378): show hostname and IP address
The numeric RPL_WHOISHOST_MSG(378) returns the DNS hostname (if
available) and the IP address of a client in the WHOIS reply.

Only the user itself and local IRC operators get this numeric.
2012-01-22 22:41:39 +01:00
Alexander Barton
6a308fcb42 New function Conn_GetIPAInfo(): get IP address of a connection 2012-01-22 22:35:27 +01:00
Alexander Barton
1537c79132 G/K-Lines: only add and delete valid IRC masks 2012-01-22 18:53:16 +01:00
Alexander Barton
e0c9931ad8 Check G/K-Lines before the client has been registered, too
This allows to use "*!<user>@<host>" or "*!*@<host>" masks to reject
clients even before receiving PASS, NICK and USER commands and before
forking authentication child processes which reduces resource usage.
2012-01-22 18:35:54 +01:00
Alexander Barton
eba95bb0d2 Streamline handling of connection rejects (bad password, G/K-line)
- Use Client_Reject(), get rid of Reject_Client().
 - Refactor Class_IsMember() to Class_GetMemberReason(),
 - New function Class_HandleServerBans().
2012-01-22 18:33:45 +01:00
Alexander Barton
51a6a33056 New function Client_Reject() to reject clients on connect 2012-01-22 18:17:28 +01:00
Alexander Barton
6e28f4a7d1 New function Lists_CheckReason() to get reason of list entries 2012-01-22 18:11:24 +01:00
Alexander Barton
9882e578e9 Update NEWS and ChangeLog files 2012-01-22 15:58:39 +01:00
Alexander Barton
73781c1b38 Fix ERR_{SUMMON|USERS}DISABLED: don't repeat command name in reply 2012-01-22 15:42:11 +01:00
Alexander Barton
f2fa1045e2 Implement channel exception list (mode 'e')
This allows a channel operator to define exception masks that allow users
to join the channel even when a "ban" would match and prevent them from
joining: the exception list (e) overrides the ban list (b).
2012-01-21 19:59:57 +01:00
Alexander Barton
33a165721b {Add|Del}_Ban_Invite > {Add_To|Del_From}_List(): more generic 2012-01-21 19:27:03 +01:00
Alexander Barton
a3a4b5f696 Rename ShowInvitesBans() to ShowChannelList(), make it more flexible 2012-01-21 13:48:31 +01:00
Alexander Barton
39412d6486 PRIVMSG/NOTICE: handle nick!user@host masks case-insensitive
And enhance our test suite to check this a little bit better :-)
2012-01-21 13:21:36 +01:00
Alexander Barton
c1656256df PRIVMSG/NOTICE: don't stop list processing on invalid target
Process further targets, even if one has been a server ID:
just skip this one with an error message and continue.
2012-01-16 12:37:37 +01:00
Alexander Barton
1f4711a547 Implement user mode 'C': require "same channel" to send message
If the target user of a PRIVMSG or NOTICE command has the user mode 'C'
set, it is required that both sender and receiver are on the same channel.

This prevents private flooding by completely unknown clients.
2012-01-16 11:43:22 +01:00
Alexander Barton
4d0069c3a8 New RPL_WHOISREGNICK_MSG(307) numeric: indicate if nick is registered 2012-01-16 02:18:24 +01:00
Alexander Barton
12c60a670e IRC_WHOIS_SendReply(): Code cleanup 2012-01-16 02:15:41 +01:00
Alexander Barton
2f7d0c0839 Limit channel invite and ban lists to 50 entries
- New function Lists_Count().
 - New limit #define MAX_HNDL_CHANNEL_LISTS = 50.
 - New numeric #define ERR_LISTFULL_MSG(478).
 - Adjust numeric RPL_ISUPPORT2_MSG(005) accordingly ("MAXLIST")
2012-01-16 00:29:36 +01:00
Alexander Barton
1afbf71236 Make Send_ListChange() a little bit more generic 2012-01-16 00:15:26 +01:00
Alexander Barton
7ed08f01ef Remove unused prototype of Lists_AlreadyRegistered()
This prototype has been introduced by commit fa7bb279 in 2006,
but as far as I can see, this function never existed ...
2012-01-15 19:46:00 +01:00
Alexander Barton
81cc5f82b5 Channel lists: Fix duplicate check and error messages
- Check correct list for duplicates when adding items.
 - Don't generate any messages when adding duplicates or removing
   non-existing items (this is how ircd-seven and ircu behave).
 - Code cleanup: Add_Ban_Invite(), Del_Ban_Invite().
2012-01-15 19:11:03 +01:00
Alexander Barton
78a3b4c7d6 Don't enforce MAX_HNDL_MODES_ARG on server and service links 2012-01-15 14:33:04 +01:00
Alexander Barton
39d630c00d Update documentation (fix some URL, update some info) 2012-01-14 12:29:53 +01:00
Alexander Barton
4fe6b42c53 Update NEWS and ChangeLog for next ngIRCd release once more 2012-01-13 19:23:07 +01:00
Alexander Barton
d4d8102fc9 Don't stop join handling on faulty channel, skip it (part #2)
Commit 565523cb allowed processing of further channel names given to the
JOIN command when a single name was invalid.

After this patch, the JOIN command handler continues to process channel
name lists even after errors like "channel is full", "too many channels",
and the like and generates appropriate error messages for all the
channels given by the client.
2012-01-13 10:50:00 +01:00
Alexander Barton
77f68b4fd1 JOIN command: don't check channel limit if already member
Don't check the channel limit and don't report "too many channels"
when trying to join a channel that the client is already a member of.
2012-01-13 10:40:20 +01:00
Alexander Barton
2f8877ded4 Return ERR_UNKNOWNMODE(472) for unknown channel modes
The daemon reported ERR_UMODEUNKNOWNFLAG(501), which is wrong.
2012-01-09 23:18:39 +01:00
Alexander Barton
4bff3daf92 Numberic 005 (ISUPPORT), CHANMODES: add "O", "R", "z" modes 2012-01-09 12:34:55 +01:00
Alexander Barton
c5beca8aab Limit list replies of LIST, WHO, WHOIS, and MAX_RPL_WHOWAS
Introduce new #define's MAX_RPL_LIST(100), MAX_RPL_WHO(25),
MAX_RPL_WHOIS(10), and MAX_RPL_WHOWAS(25).
2012-01-06 20:06:25 +01:00
Alexander Barton
f8405b1a4f New function IRC_CheckListTooBig() to check size of list replies
It the limit is reached, a NOTICE is sent to the client and list
processing should stop.
2012-01-06 20:05:07 +01:00
Alexander Barton
fdfc27265e LIST command: compare pattern case insensitive 2012-01-06 19:55:21 +01:00
Alexander Barton
a4d1e6007f IRC_LIST(): Code cleanup 2012-01-06 19:54:23 +01:00
Alexander Barton
9260759cec DEFAULT_WHOWAS->DEF_RPL_WHOWAS; MAX_CMODES_ARG->MAX_HNDL_MODES_ARG
To streamline naming, in preparation for MAX_RPL_WHO and MAX_RPL_WHOWAS :-)
2012-01-06 18:57:31 +01:00
Alexander Barton
c2ac1ad3ba defines.h: Code cleanup and (a little bit) more documentation 2012-01-06 18:25:10 +01:00
Alexander Barton
470d2e2362 RPL_ISUPPORT (numeric 005): Report MODES=<MAX_CMODES_ARG>
"Maximum number of channel modes with parameter allowed per MODE command."
See <http://www.irc.org/tech_docs/005.html> for details.
2012-01-06 17:46:52 +01:00
Alexander Barton
888664435a Channel modes: really break handling when MAX_CMODES_ARG is hit
This fixes 98493077.
2012-01-06 17:43:20 +01:00
Alexander Barton
98493077a2 channel modes: only handle MAX_CMODES_ARG modes with arguments
Limit the MODE command to handle a maximum of MAX_CMODES_ARG (5) channel
modes that require an argument (+Ibkl) per call.

Please note: Further modes that require arguments are silently ignored
and end the handling of any further modes.
This is similar to the behavior of ircd2.11 (silently ignores but seems
to handle other modes) as well as ircd-seven (silently ignores but handles
some(!) other modes) ...
2012-01-06 17:27:29 +01:00
Alexander Barton
1fa2af5b3a Fix handling of channel mode sequence with/without arguments
For example, don't generate wrong error messages when handling
"MODE #chan +IIIIItn *!aa@b *!bb@c *!cc@d *!dd@e *!ee@f".
2012-01-06 17:24:55 +01:00
Alexander Barton
05cc9bf9b0 Conn_Write(): Make sure there is a client when detecting its type
The assert(client != NULL) got triggered during our tests, so there is
an error path that resulted in the connection being still established
(sock >= 0) but the client structure already freed.

So Conn_Write() should handle it!
2012-01-06 03:26:24 +01:00
Alexander Barton
cc06e1ff89 Proc_Close(): Only close socket if it is still valid
It could be invalid when calling Proc_Close() a 2nd time, for exmaple,
which could happen when we hit a timeout doing IDENT requests :-(
2012-01-06 02:26:04 +01:00
Alexander Barton
9fbf592924 WHOIS command: make sure matching is case-insensitive
And make sure that RPL_ENDOFWHOIS replies with the unmodified mask
like it has been received from the client.
2012-01-05 00:51:39 +01:00
Alexander Barton
adf92302bf WHOIS command: don't anser queries for IRC servers
Thanks to Cahata for spotting this!
2012-01-05 00:24:46 +01:00
Alexander Barton
566a451299 WHOIS command: make sure the reply ends with RPL_ENDOFWHOIS
Up to now, each reply for itself ended in RPL_ENDOFWHOIS and queries
for unknown nick names lacked the RPL_ENDOFWHOIS -- both is wrong.
2012-01-05 00:22:57 +01:00
Alexander Barton
e0f8ce093a README: update features list, borrow from list on our website 2012-01-04 23:30:55 +01:00
Alexander Barton
5e3449a241 LINKS command: support <mask> parameter
The <mask> can be used to limit the servers shown in the listing.
2012-01-04 22:51:02 +01:00
Alexander Barton
762b0325df IRC_LINKS(): Code cleanup; more documentation 2012-01-04 22:49:18 +01:00
Alexander Barton
6b62a5ec4f Add 1 second penalty for every further target on PRIVMSG/NOTICE
This reduces the possibility of flooding channels with commands like
"PRIVMSG/NOTICE #a,#n,#c,... :message" a little bit.

Problem noticed by Cahata -- thanks!
2012-01-04 21:46:58 +01:00
Alexander Barton
b24d645ca1 Conn_SetPenalty(): Add new "penalty time" on each function call
Until now, the penalty time has only been set when longer as the
already set one, so it didn't accumulate.

And add documentation for and clean up code in Conn_SetPenalty() and
Conn_ResetPenalty() functions.
2012-01-04 21:39:46 +01:00
Alexander Barton
1bb2fbedcc Enhance log messages when setting user and group 2012-01-03 21:05:35 +01:00
Alexander Barton
3193d5477c NGIRCd_getNobodyID(): Code cleanup 2012-01-03 20:49:42 +01:00
Alexander Barton
edab86e0f8 Display correct error message when "Server{UID|GID}" is invalid
This partly closes bug #118. ngIRCd still starts up even when
Server{UID|GID} is invalid: then the daemon falls back to "nobody"
when running with root(0) privileges (as before).
2012-01-03 20:37:41 +01:00
Alexander Barton
e4006a93e3 NGIRCd_Init(): Code cleanup 2012-01-03 19:34:54 +01:00
Alexander Barton
9069380ddf main(): Code cleanup 2012-01-03 19:25:31 +01:00
Alexander Barton
ab188c1486 README: point to included COPYING file, not gnu.org 2012-01-03 18:56:31 +01:00
Alexander Barton
5eb9f2e717 Update Copyright notices for 2012 2012-01-03 11:30:45 +01:00
Florian Westphal
abfc5c6e27 lists: don't crash if reason ptr is NULL
commit 15fec92ed7
(Update list item, if it already exists) can make ngircd
crash because 'Reason' can be NULL, as reported by
Cahata on the ngircd mailing list.

Doesn't affect any released ngircd versions.

Also, make sure that we do not pass NULL as arguments
to a '%s' printf-like function.
2012-01-02 23:43:13 +01:00
Alexander Barton
565523cbb4 Don't stop join handling on faulty channel, skip it
When JOIN is received with more than one channel name, don't stop
processing on the first error (e.g. bad name, wrong channel key, ...)
but report an error and continue with the other given channel names.

Reported by Cahata -- thanks!
2012-01-02 15:23:17 +01:00
Alexander Barton
013298d4c6 IRC_JOIN(): Code cleanup 2012-01-02 15:22:52 +01:00
Alexander Barton
af13732ec7 ISON command: reply with correct upper-/lowercase nick names
Reported by Cahata -- thanks!
2012-01-02 15:06:44 +01:00
Alexander Barton
408a74b865 IRC_ISON(): Code cleanup 2012-01-02 15:04:40 +01:00
Alexander Barton
f47904bf95 Remove unused "bool have_arg" from IRC_WHO()
This fixes:

 irc-info.c: In function ‘IRC_WHO’:
 irc-info:936:18: warning: variable ‘have_arg’ set but not used
2012-01-02 00:56:31 +01:00
Alexander Barton
70eb8219f5 Update NEWS and ChangeLog for next ngIRCd release 2012-01-01 23:14:28 +01:00
Alexander Barton
9e5b9ddad0 ngircd.conf.5: reword description of "Ports" variable 2012-01-01 17:39:07 +01:00
Alexander Barton
56b7e67307 New configuration option "PAMIsOptional"
When "PAMIsOptional" is set, clients not sending a password are still
allowed to connect: they won't become "identified" and keep the "~"
character prepended to their supplied user name.
2012-01-01 17:12:36 +01:00
Alexander Barton
b681aa5b9f PAM: don't use global password buffer for conv struct
Use the pointer of the password of the client directly.
Eventually we can get rid of the global password again ...
2011-12-31 18:06:17 +01:00
Alexander Barton
b32f3b76e9 doc/Modes.txt: document channel mode "r"
And make clear, that user mode "r" and channel mode "r" are not set by
ngIRCd itself but by IRC services.
2011-12-31 18:04:58 +01:00
Alexander Barton
1a5ed654b4 Fixed handling of WHO commands
This fixes two bugs:
 - "WHO <nick>" returned nothing at all if the user was "+i"
   (reported by Cahata, thanks).
 - "WHO <nick|nickmask>" returned channel names instead of "*"
   when the user was member of a (visible) channel.

Clean up code and add documentation as well.
2011-12-30 14:57:12 +01:00
Alexander Barton
9cbb8f3bb8 Remove unused "time_t now" from Lists_Check()
This fixes:

 lists.c: In function ‘Lists_Check’:
 lists.c:330:9: warning: variable ‘now’ set but not used
2011-12-30 01:03:59 +01:00
Alexander Barton
e19ce437ca Fixed some spelling errors in documentation and code comments
Thanks to Christoph Biedl!
2011-12-30 00:50:27 +01:00
Alexander Barton
4e550bf9ef contrib/Debian/control: Update and complete "Build-Depends" 2011-12-30 00:40:18 +01:00
Alexander Barton
1d29a59f7e Update our Debian package descriptions with "official" ones
See Debian Bug #648241 for details.
2011-12-30 00:36:26 +01:00
Alexander Barton
765c2f26ea Fixed typo in two error messages
Thanks to Christoph Biedl!
2011-12-30 00:32:11 +01:00
Alexander Barton
69fa6f268a LUSERS reply: only count "visible" channels
Rename Channel_Count() to Channel_CountVisible() and only count channels
that are visible to the requesting client, so the existence of secret
channels is no longer revealed by using LUSERS.

Reported by Cahata -- thanks!
2011-12-28 15:11:01 +01:00
Alexander Barton
43509fd22c IRC_Send_LUSERS(): Code cleanup 2011-12-28 14:52:21 +01:00
Alexander Barton
a71abfef4b Don't stop mode handling on unknown modes; skip it
Unknown user and channel modes no longer stop the mode parser, but are
simply ignored. Therefore modes after the unknown one are now handled.

This is how ircd2.10/ircd2.11/ircd-seven behave, at least.

Reported by Cahata -- thanks!
2011-12-28 14:46:17 +01:00
Alexander Barton
8a8e8a3a23 IRC_xLINE(): output an error message for unexpected "lines"
This fixes:

 irc-oper.c: In function ‘IRC_xLINE’:
 irc-oper.c:429: warning: ‘class’ may be used uninitialized in this function
 irc-oper.c:430: warning: ‘class_c’ may be used uninitialized in this function
2011-12-25 20:11:43 +01:00
Alexander Barton
65befdafaa README: Update list of implemented commands 2011-12-25 20:01:28 +01:00
Alexander Barton
15fec92ed7 Update list item, if it already exists
This updates the "validity" (timeout) as well as the "reason" text,
if given.
2011-12-25 19:43:00 +01:00
Alexander Barton
1e4a00f94f Lists_CheckDupeMask(): return pointer to already existing item
The old behavior of returning true/false is compatible to this change,
so there are no other code changes required.
2011-12-25 19:42:03 +01:00
Alexander Barton
338758799d Log better error messages when rejecting clients 2011-12-25 19:27:06 +01:00
Alexander Barton
164e15b8c6 Synchronize G-Lines on server login 2011-12-25 19:12:40 +01:00
Alexander Barton
32bfafafd9 Op_Check(): always accept commands from a remote server itself 2011-12-25 19:11:43 +01:00
Alexander Barton
6ef20e0f9a Class_GetList() now retuns a pointer to list_head structure 2011-12-25 19:11:07 +01:00
Alexander Barton
e86e193e01 Check G-Line and K-Line lists after authenticating clients 2011-12-25 18:03:35 +01:00
Alexander Barton
ae5ebfb9f0 New functions Lists_Expire() and Class_Expire()
GLINE and KLINE lists are cleared automatically now, not when they are
checked. So "STATS g" and "STATS k" no longer show expired entries :-)
2011-12-25 17:44:20 +01:00
Alexander Barton
e9e6224aae Implement IRC_xLINE(): handler for "GLINE" and "KLINE" commands 2011-12-25 16:57:36 +01:00
Alexander Barton
e23f025dd6 Op_Check(): return client that initiated the request or NULL
The old behavior of returning true/false is compatible to this change,
so there are no other code changes required.
2011-12-25 16:52:31 +01:00
Alexander Barton
3ca8703309 irc-oper.c: code cleanup; more documentation 2011-12-25 16:08:00 +01:00
Alexander Barton
fc82efc3e8 Implement IRC "STATS g" and "STATS k" command 2011-12-25 14:50:19 +01:00
Alexander Barton
dc9fcb0fb2 New function Class_GetList() 2011-12-25 14:49:52 +01:00
Alexander Barton
2b95c69ea1 lists.{c|h}: code cleanup; more documentation 2011-12-25 14:48:13 +01:00
Alexander Barton
af70c3dbc9 List and class handling: add optional "reason" text
Adjust Lists_Add() and Class_AddMask() accordingly, implement
Lists_GetReason() and Lists_GetValidity().
2011-12-25 14:19:45 +01:00
Alexander Barton
1e054e0b82 Add new class.{c|h} module to Xcode project 2011-12-24 14:24:07 +01:00
Alexander Barton
06a20b87c4 Add new class.{c|h} to project
Implement Class_{AddMask|DeleteMask|IsMember}() functions.
2011-12-24 13:40:27 +01:00
Alexander Barton
fea2194fc0 Lists: change "only once" property into "valid until"
The old "only once" true/false behavior is still supported, so there
are no other code changes required.
2011-12-24 13:34:25 +01:00
Alexander Barton
872dc5042d Xcode: update project file for Xcode 4.2 2011-12-24 13:22:34 +01:00
Alexander Barton
e1315f30fd define HAVE_GAI_STRERROR for Mac OS X Xcode builds
On Mac OS X 10.7 Lion, this fixes

  In file included from .../contrib/MacOSX/../../src/ngircd/client.c:28:
   /Developer/SDKs/MacOSX10.7.sdk/usr/include/netdb.h:272:13:
   error: expected identifier or '('
2011-12-24 13:16:38 +01:00
Alexander Barton
0a85c58878 Configuration: get rid of Conf_Oper_Count and Conf_Channel_Count
Count elements dynamically when needed.
2011-12-07 10:52:30 +01:00
Alexander Barton
ee21490887 ./configure: Fix logic and quoting of poll() detection code
This fixes commit 8e193df ...
2011-12-05 00:20:27 +01:00
Alexander Barton
8fa92f0a24 Suppress 'Can't create pre-defined channel: invalid name: ""' messages
Skip predefined channel structures that have configured no name,
like the "--configtest" does.
2011-12-04 22:35:20 +01:00
Alexander Barton
8e193df973 Only use poll() when poll.h exists as well 2011-11-25 22:06:44 +01:00
Alexander Barton
9d348d00d9 Not only check for poll(), make sure poll.h exists as well
This fixes building ngIRCd on Debian GNU/Linux 1.3 "Bo" :-)
2011-11-25 21:56:33 +01:00
Alexander Barton
9e48f3f8f8 whois-test: handle local hostname = "localhost.localdomain"
Use the pattern "localhost*" for valid local hostnames.
2011-11-10 11:54:22 +01:00
Alexander Barton
e4a06844a3 sample-ngircd.conf: show correct default for "PAM" variable
The default of "PAM" is "yes" when ngIRCd has been configured to use it,
so show the correct default value in the sample configuration file.

Closes #119.
2011-11-08 21:12:01 +01:00
Alexander Barton
20ccc1bba7 Update GPL 2 license text to current version
See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.
2011-11-06 21:53:15 +01:00
Alexander Barton
13d9e0c5a7 Test for gai_strerror()
If gai_strerror() isn't available, use a macro that simply returns
a static error message (regardless of the real error code).

For example, GNU libc 2.0.7 doesn't implement gai_strerror().
2011-11-06 14:16:59 +01:00
Alexander Barton
a7911e35af Only use AI_NUMERICHOST if it is #define'd
It isn't using GNU libc 2.0.7, for example ...
2011-11-06 14:13:49 +01:00
Alexander Barton
60812b6fdf defines.h: fix comment: "lenth" -> "length"
Reported by Christoph Biedl in #ngircd. Thanks!
2011-11-05 00:35:18 +01:00
Alexander Barton
1ea6811616 Init_Server_Struct(): correctly zero Server->bind_addr
Don't use the size of the pointer, use the size of the variable!
2011-11-05 00:21:19 +01:00
Alexander Barton
d2f54abbed Clean up and fix comments of Check_ArgIsTrue()
Thanks to kaFux for pointing this out!
And fix code formatting as well ...
2011-11-03 09:54:28 +01:00
Alexander Barton
07dbb73c92 Update doc/GIT.txt 2011-09-07 15:39:41 +02:00
Alexander Barton
30796698a9 Only close "unrelated" sockets in forked child processes
This fixes the problem that ngIRCd can't do any IDENT lookups because
of the socket has already been closed in the child process.

The bug has been introduced starting with ngIRCd 17 ... :-(
(commit ID 6ebb31ab35)
2011-09-07 14:51:16 +02:00
Alexander Barton
f173a974be Added doc/Modes.txt: document modes supported by ngIRCd 2011-08-26 16:16:53 +02:00
Alexander Barton
8aac366802 Implemented user mode "R" and channel mode "R"
- User mode "R": indicates that the nick name of this user is "registered".
   This mode isn't handled by ngIRCd itself, but must be set and unset by
   IRC services like Anope.

 - Channel mode "R": only registered users (having the user mode "R" set)
   are allowed to join this channel.
2011-08-26 15:26:38 +02:00
Alexander Barton
69803d6ff1 Use Proc_Close() to remove no longer unused pipes to child processes
This removes spurious (but harmless) debug messages.
2011-08-23 12:32:05 +02:00
Alexander Barton
be6994aece New function Proc_Close() to shutdown pipes to child processes 2011-08-23 12:31:17 +02:00
Alexander Barton
1361b3742d Introduce DEBUG_BUFFER, rework some debug messages
DEBUG_BUFFER is off by default and therefore disables these messages:
 - "Handle_Write() called for connection XX, YY bytes pending ..."
 - "Connection XX: ZZ bytes left in read buffer."
2011-08-23 12:28:04 +02:00
Alexander Barton
d3036c74e9 Testsuite: bind to loopback (127.0.0.1) interface only 2011-08-22 16:54:24 +02:00
Alexander Barton
553e8b6aa3 doc/Platforms.txt: ngIRCd 18 on Nexenta works
Thanks to Götz Hoffart for testing!
2011-08-19 15:51:56 +02:00
Alexander Barton
51d7674ee7 New 2nd message "Nickname too long" for error code 432 2011-08-19 11:09:40 +02:00
Alexander Barton
1189200d4a Client_CheckNick(), Client_IsValidNick(): code cleanup 2011-08-19 10:44:26 +02:00
Alexander Barton
7795b07c53 Merge branch 'ServerMode'
* ServerMode:
  Handle channel user modes 'a', 'h', and 'q' from remote servers
  Handle unknown channel modes on server links
  Handle unknown user modes on server links
  IRC_MODE(), Client_Mode(): code cleanup [2/2]
  Enlarge client user mode buffer, reduce client flags buffer
  Infom clients when other servers change their user modes
  IRC_MODE(), Client_Mode(): code cleanup [1/2]
2011-08-13 21:04:01 +02:00
Alexander Barton
d9325e8030 Merge branch 'bug113-SrvPrefix'
* bug113-SrvPrefix:
  Slightly change (and document!) IRC_KILL() calling convention
  Spoofed prefixes: close connection on non-server links only
2011-08-09 10:16:56 +02:00
Alexander Barton
641045249c Xcode: update project file to Xcode 3.2 or newer
Xcode requires Mac OS X 10.6 or newer; Xcode 4 supports this project
format as well, so effectively you can use Mac OS X 10.6.x or 10.7.x
for building ngIRCd with the Apple Xcode IDE.
2011-08-07 14:42:49 +02:00
Alexander Barton
69f81a359a Xcode: Mac OS X config.h: support 10.5 as well as 10.6/10.7 SDK 2011-08-07 14:41:11 +02:00
Alexander Barton
be03bc672c Xcode: exclude more Xcode 4 specific directories in ".gitignore" 2011-08-02 16:04:23 +02:00
Alexander Barton
160c52400f Cast getpid() and time() results for srand() input
This fixes:

src/ngircd/ngircd.c:596: warning: implicit conversion
 shortens 64-bit value into a 32-bit value

(i686-apple-darwin11-llvm-gcc-4.2)
2011-08-02 13:24:13 +02:00
Alexander Barton
0b8acf1205 Xcode: update and add missing files to project 2011-08-02 13:16:28 +02:00
Alexander Barton
88f6fc5fd8 IRC_QUIT(): disconnect directly linked servers sending QUIT
Without this patch, the server becomes removed from the network and
the client structures, but the connection isn't shut down at all ...
2011-08-02 00:56:49 +02:00
Alexander Barton
da897a2a14 contrib/ngindent: detect "gindent" as GNU indent 2011-08-01 23:39:29 +02:00
Alexander Barton
989c9fa531 Handle channel user modes 'a', 'h', and 'q' from remote servers
These channel user modes aren't used for anything at the moment, but
ngIRCd knows that these three modes are "channel user modes" and not
"channel modes", that is that these modes take an "nick name" argument.

Like unknown user and channel modes, these modes are saved and forwarded,
but ignored otherwise.
2011-08-01 23:30:55 +02:00
Alexander Barton
2fd42667c2 Handle unknown channel modes on server links 2011-08-01 22:30:00 +02:00
Alexander Barton
2dfa24d2fa Handle unknown user modes on server links 2011-08-01 22:09:40 +02:00
Alexander Barton
1ed602eb47 IRC_MODE(), Client_Mode(): code cleanup [2/2] 2011-08-01 21:51:31 +02:00
Alexander Barton
ea725b99b7 Enlarge client user mode buffer, reduce client flags buffer
We have to enlage our user mode buffer, so we can handle even unknown
user modes in the future; and reduce the client flags buffer, because
I can't imagine why we ever would need ~100 flags!?

Now we support up to 15 user modes (was: 8) and up to 15 flags (was: 99).

So in the end, we even save 99-15+8-15=77 bytes for each client structure!
2011-08-01 21:28:55 +02:00
Alexander Barton
3dc3a03538 Infom clients when other servers change their user modes 2011-08-01 21:10:16 +02:00
Alexander Barton
95f0e4033c doc/Platforms.txt: re-add mipsel/unknown/linux-gnu with gcc 4.1.2 2011-08-01 10:42:22 +02:00
Alexander Barton
409b2c86c8 Updated doc/Platforms.txt: mipsel/unknown/linux-gnu 2011-08-01 09:08:14 +02:00
Alexander Barton
d692286d7a IRC_MODE(), Client_Mode(): code cleanup [1/2] 2011-08-01 09:07:32 +02:00
Alexander Barton
456e55921d Slightly change (and document!) IRC_KILL() calling convention 2011-07-30 19:48:48 +02:00
Alexander Barton
9f3690c39c Testsuite: make getpid.sh work even when run as root
Use ps(1) flag "-a" (as well as "-f"):
"Select all processes except both session leaders (see getsid(2)) and
processes not associated with a terminal."

Thanks to Götz Hoffart for reporting this problem!
2011-07-30 18:47:58 +02:00
Alexander Barton
6cbe13085d Spoofed prefixes: close connection on non-server links only
On server-links, spoofed prefixes can happen because of the asynchronous
nature of the IRC protocol. So don't break server-links, only log a message
and ignore the command.

This fixes bug 113, see:
<https://arthur.barton.de/bugzilla/show_bug.cgi?id=113>
2011-07-19 16:07:34 +02:00
Alexander Barton
b7780e3f2a Fix typo in doc/Platforms.txt; make Linux footnote more generic 2011-07-10 22:32:29 +02:00
Alexander Barton
04744e9d89 ngIRCd release 18 2011-07-10 20:05:16 +02:00
Alexander Barton
54f04f81e9 Update ChangeLog and NEWS for ngIRCd release 18 2011-07-10 20:02:01 +02:00
Alexander Barton
95e156b519 Updated doc/Platforms.txt for ngIRCd release 18 2011-07-10 19:58:41 +02:00
Alexander Barton
e160121698 MorePrivacy: Don't register WHOWAS information
Citing an email from Florian to the ngIRCd mailing list:

"I wonder what the expected behaviour is when Conf_MorePrivacy is changed
 from 'yes' to 'no' and the config is reloaded.

 At the moment, WHOWAS will start giving out information on Users that
 were connected during Conf_MorePrivacy=yes period.  If this is not
 wanted, Client_RegisterWhowas() should be changed to not store a record
 when Conf_MorePrivacy is enabled."

And I think it is "not wanted" :-)
2011-07-10 14:45:33 +02:00
Alexander Barton
54566b6b32 Add preliminary ngIRCd protocol module for Anope 1.9
See contrib/Anope/README and doc/Services.txt for more details
and installation instructions!
2011-07-10 14:23:11 +02:00
Alexander Barton
c041bb340c Update timestamp of ngircd(8) manual page 2011-07-02 22:02:43 +02:00
Alexander Barton
af60f04fef ngIRCd release 18~rc2 2011-06-29 10:22:46 +02:00
Alexander Barton
2d35731399 GnuTLS: use 1024 (DH_BITS_MIN) as minimum size of the DH prime
For outgoing connections, we use 2048 (DH_BITS) since commit 49b2d0e.

This patch enables ngIRCd to accept incoming connections from other servers
and clients that use at least 1024 bits (and no longer requires 2048 for
incoming connections, too).

Patch proposed by Florian Westphal.
2011-06-28 13:48:33 +02:00
Alexander Barton
7ae7ace579 ngircd.8: document debugging options 2011-06-28 13:45:16 +02:00
Alexander Barton
5f400694cf ngircd.conf.5: strip "SSL" prefix from variables in [SSL] section 2011-06-28 13:21:38 +02:00
Alexander Barton
bd118c65fd Fix some wording, use spellchecker ;-) 2011-06-28 13:12:06 +02:00
Alexander Barton
29c49f643f doc/SSL.txt: adopt to new configuration file layout 2011-06-28 13:11:14 +02:00
Alexander Barton
b6185b1ac8 ngIRCd release 18~rc1 2011-06-27 23:00:30 +02:00
Alexander Barton
14afdaee08 hash: Use UINT32 instead of uint32_t 2011-06-27 10:27:07 +02:00
Alexander Barton
949c8ea7c7 Update NEWS and ChangeLog file for our upcoming next release 2011-06-27 00:33:58 +02:00
Florian Westphal
1765f0ae0b hash: use more recent lookup3 algorithm instead of lookup2
Bob Jenkins published a newer hash function in May 2006, it has
better distribution.

See http://burtleburtle.net/bob/hash/doobs.html for lengthy
comparisions.
2011-06-27 00:16:37 +02:00
Alexander Barton
7f8d0ea5a3 Use srand()/rand() instead of srandom()/random(); seems to be more portable 2011-06-26 23:39:20 +02:00
Alexander Barton
d99edb7728 Merge branch 'MorePrivacy'
* MorePrivacy:
  New configuration opion "MorePrivacy" to "censor" some user information
2011-06-26 15:41:27 +02:00
Alexander Barton
cb28c4ff03 sample-ngircd.conf: remove "SSL" prefix from SSL-related variables 2011-06-26 15:39:39 +02:00
Alexander Barton
269310f04b Merge branch 'ScrubCTCP'
* ScrubCTCP:
  Add documentation for "ScrubCTCP" configuration option
  New option to scrub incoming CTCP commands
2011-06-26 15:38:53 +02:00
Alexander Barton
3282c1325e Merge branch 'newconfig'
* newconfig:
  sample-ngircd.conf: "SyslogFacility" should be commented out
  Move SSL-related configuration variables to new [SSL] section
  CheckFileReadable(): only check when a filename is given ...
  PAM: make clear which "Password" config option is ignored
  Really remove [Features] in our manual pages
  INSTALL: document changed location of configuration variables
  Update sample config file and manual page for new config structure
  Testsuite: update configuration files for new config file format
  Display configuration errors more prominent on "--configtest"
  conf.c: code cleanup
  Check for redability of SSL-related files like for MOTD file
  Restructure ngIRCd configuration, introduce [Limits] and [Options]
2011-06-26 15:24:07 +02:00
Alexander Barton
3d0ce77f12 sample-ngircd.conf: "SyslogFacility" should be commented out 2011-06-26 00:10:22 +02:00
Alexander Barton
946d838de4 Move SSL-related configuration variables to new [SSL] section 2011-06-26 00:09:36 +02:00
Alexander Barton
a085444035 CheckFileReadable(): only check when a filename is given ... 2011-06-26 00:07:47 +02:00
Alexander Barton
449ad1eeea PAM: make clear which "Password" config option is ignored 2011-06-25 23:55:54 +02:00
Alexander Barton
9dfde13f0c Really remove [Features] in our manual pages 2011-06-25 23:54:41 +02:00
xor
5410d96748 Add documentation for "ScrubCTCP" configuration option 2011-06-25 22:27:56 +02:00
xor
b80e115f39 New configuration opion "MorePrivacy" to "censor" some user information
this patch contains:

  * Fix for Conf_CloakUserToNick to make it conceal user details
  * Adds MorePrivacy-feature

MorePrivacy censors some user information from being reported by the
server. Signon time and idle time is censored. Part and quit messages
are made to look the same. WHOWAS requests are silently dropped. All
of this is useful if one wish to conceal users that access the ngircd
servers from TOR or I2P.
2011-06-25 22:21:20 +02:00
xor
f087c68a99 New option to scrub incoming CTCP commands
This patch makes it possible to scrub incomming CTCP commands from
other servers and clients alike. The ngircd oper can enable it from
the config file, by adding "ScrubCTCP = yes" under [OPTIONS]. It is
default off.

CTCP can be used to profile IRC users (get user clients name and
version, and also their IP addresses). This is not something we like
to happen when user pseudonymity/secrecy is important.

The server silently drops incomming CTCP requests from both other
servers and from users. The server that scrubs CTCP will not forward
the CTCP requests to other servers in the network either, which can
spell trouble if not every oper knows about the CTCP-scrubbing.
Scrubbing CTCP commands also means that it is not possible to send
files between users.

There is one exception to the CTCP scrubbing performed: ACTION ("/me
commands") requests are not scrubbed. ACTION is not dangerous to users
(unless they use OTR, which does not encrypt CTCP requests) and most
users would be confused if they were just dropped.

A CTCP request looks like this:

ctcp_char, COMMAND, arg0, arg1, arg2, .. argN, ctcp_char

ctcp_char is 0x01. (just like bold is 0x02 and color is 0x03.)

They are sent as part of a message and can be delivered to channels
and users alike.
2011-06-25 21:37:17 +02:00
Alexander Barton
6aad5a6706 INSTALL: document changed location of configuration variables 2011-06-25 14:59:02 +02:00
Alexander Barton
eba14d937d Update sample config file and manual page for new config structure 2011-06-25 14:58:12 +02:00
Alexander Barton
c438c227b5 Testsuite: update configuration files for new config file format 2011-06-25 14:57:26 +02:00
Alexander Barton
d41f4d6d20 Display configuration errors more prominent on "--configtest" 2011-06-25 14:56:27 +02:00
Alexander Barton
391cf4e2a1 conf.c: code cleanup 2011-06-25 14:55:34 +02:00
Alexander Barton
7ef6cb4584 Check for redability of SSL-related files like for MOTD file
Remove functions ssl_print_configvar() and ConfSSL_Puts(), introduce
new function CheckFileReadable().
2011-06-25 14:50:52 +02:00
Alexander Barton
e7256bb8ac Restructure ngIRCd configuration, introduce [Limits] and [Options]
The intention of this restructuring is to make the [Global] section much
cleaner, so that it only contains variables that most installations must
adjust to the local requirements.

All the optional variables are moved to [Limits], for configurable limits
and timers of ngIRCd, and [Options], for optional features.

The old variables in the [Global] section are deprecated now, but still
recognized.
2011-06-25 14:45:36 +02:00
Alexander Barton
b1786f309e New documentation: "how to contribute" 2011-06-24 21:01:18 +02:00
Florian Westphal
42b32f8a2a conn: fix error handling when connecting to server
The io_event_create error handling seems to miss a 'return'
statement.

Fix this by moving io_event_create() call around so we do not
need the Conn_Close/Init calls in the error case.
2011-06-05 15:00:32 +02:00
Florian Westphal
49b2d0ec98 ssl: gnutls: bump dh bitsize to 2048
problem is that some clients refuse to connect to severs that only offer
1024.  For interoperability it would be best to just use 4096, but that
takes minutes, even on current hardware.
2011-06-04 22:57:29 +02:00
Alexander Barton
dd7d64f577 Mac OS X: split up make targets
New targets are: "have-packagemaker", "osxpkg-dest"
2011-05-12 00:21:18 +02:00
Florian Westphal
605b6a67bc fix clang warning about dead stores
clang 'scan-build':
Value stored to 'r' is never read
Value stored to 'fd' is never read
2011-05-06 20:31:56 +02:00
Alexander Barton
10c7a15687 contrib/platformtest.sh: fix gcc version detection
Now the version of GNU C is detected correctly on SuSE Linux, too ...
2011-04-30 01:03:17 +02:00
Florian Westphal
05748aa5ee parse: fix logical expression testing for non RFC1459 links
parse.c:284: warning: suggest parentheses around operand of '!' or
change '&' to '&&' or '!' to '~'

The expression looks dubious, this should probably be
an if-not-set, then... test.
2011-04-29 23:27:56 +02:00
Florian Westphal
0bb892bb5f conn: avoid needlesly scary 'buffer overflow' messages
When the write buffer space grows too large, ngircd has to disconnect
the client to avoid wasting too much memory.

ngircd logs this with a scary 'write buffer overflow' message.
Change this to a more descriptive wording.
2011-04-29 23:10:01 +02:00
Alexander Barton
c26ca7773b Only require server prefixes on non RFC1459 links
Not all servers (and services!) using the RFC1459 protocol style send
prefixes on all commands; so don't require them to do so.

This relaxes the requirements introduced by commit 15775e679.
2011-04-29 12:33:58 +02:00
Alexander Barton
1cb2f5739d Merge branch 'master' of git://arthur.barton.de/ngircd-alex
* 'master' of git://arthur.barton.de/ngircd-alex:
  Do reverse lookups using the AF of the incoming connection
  resolve: fix reverse lookups of client connections with ConnectIPv6=no
2011-04-26 12:04:22 +02:00
Alexander Barton
160f5725a6 Do reverse lookups using the AF of the incoming connection
This fixes errors like this one:
  Address mismatch: 2001🔢abcd:1::1 != 192.168.1.1
2011-04-26 11:10:50 +02:00
Florian Westphal
e4e1595bff resolve: fix reverse lookups of client connections with ConnectIPv6=no
We re-use the same helper function for both forward lookups
(when we want to connect to a peer server) and for validation of reverse
loopups (where we make a lookup on the hostname returned
by a reverse lookup on the IP address that connected).

Problem:

When ConnectIPv6=no, the forward lookup helper sets the adderss family
to AF_INET, and, if out client connected via ipv6, we fail to validate
the result.

Thus move the ConnectIPvX check out of the helper.
2011-04-25 18:00:10 +02:00
Alexander Barton
66315cab9a Mac OS X: install on root volume only, and set correct permissions
Update Mac OS X Installer.app description bundle, so that the ngIRCd
package can only be installed on the root volume ("/"); and make sure
that all installed files and directories have correct ownership and
permissions.
2011-04-16 15:18:43 +02:00
Alexander Barton
67a9d994e3 Mac OS X: update installer texts and add logo. 2011-04-14 11:24:07 +02:00
Alexander Barton
1cd8d7f386 Doxygen'ify conf.c 2011-04-12 23:15:29 +02:00
Alexander Barton
9a102ca96b New function Config_Error_Section(); and code cleanup 2011-04-12 21:55:32 +02:00
Alexander Barton
e70e81460b Add some type casts to random() and srandom() functions
This fixes two gcc warnings (on Mac OS X):
 "warning: implicit conversion shortens 64-bit value into a 32-bit value"
2011-04-12 21:23:14 +02:00
Florian Westphal
5acb90fafc ngircd: improve rng initialisation
we do not need this for cryptographic purposes, but we can do better
than plain srandom(getpid()).

Also, keep in mind that rng state is inherited across fork(), so re-init
it in the child.
2011-03-28 00:29:58 +02:00
Alexander Barton
d61fbfc6e3 Merge branch 'AuthPing'
* AuthPing:
  Add documentation for "RequireAuthPing" configuration option
  New configuration option "RequireAuthPing": PING-PONG on login
2011-03-27 20:58:18 +02:00
Alexander Barton
cf7e3b1c02 Merge branch 'NoticeAuth'
* NoticeAuth:
  Add documentation for "NoticeAuth" configuration option
  Configuration: move "NoticeAuth" to GLOBAL section
  New configuration option "NoticeAuth": send NOTICE AUTH on connect
2011-03-27 20:56:50 +02:00
Alexander Barton
1b5d1064de ngircd.conf.5: Add variable type to "CloakHost" and "CloakUserToNick" 2011-03-27 20:46:16 +02:00
Alexander Barton
5b2512c215 Xcode: don't list sample-ngircd.conf, use sample-ngircd.conf.tmpl 2011-03-27 20:41:48 +02:00
Alexander Barton
680db6755b Add documentation for "NoticeAuth" configuration option 2011-03-27 20:40:28 +02:00
Alexander Barton
fc0b026149 Add documentation for "RequireAuthPing" configuration option 2011-03-27 20:34:44 +02:00
Alexander Barton
162433398e New configuration option "RequireAuthPing": PING-PONG on login
When enabled, this configuration option lets ngIRCd send a PING with an
numeric "token" to clients logging in; and it will not become registered
in the network until the client responds with the correct PONG.

This is used by QuakeNet for example (ircu/snircd), and looks like this:

  NICK nick
  :irc.example.net PING :1858979527
  USER user . . :real name
  PONG 1858979527
  :irc.example.net 001 nick :Welcome to the Internet Relay Network ...
2011-03-27 19:33:48 +02:00
Alexander Barton
f99d33ddd9 Configuration: move "NoticeAuth" to GLOBAL section 2011-03-26 17:11:44 +01:00
Alexander Barton
d29e389779 New configuration option "NoticeAuth": send NOTICE AUTH on connect
When enabling "NoticeAuth" in the [Features] section, ngircd will send
"NOTICE AUTH" messages on client connect like e.g. snircd (QuakeNet) does.
2011-03-25 12:15:11 +01:00
Alexander Barton
f1a4a4dc88 Warn when unknown variables are found in [Features] section 2011-03-25 12:12:20 +01:00
Alexander Barton
6cb90f399d Update doc/GIT.txt 2011-03-25 11:14:04 +01:00
Alexander Barton
d587926eb0 Update INSTALL text 2011-03-23 01:08:49 +01:00
Alexander Barton
770a58ac6d Generate WALLOPS message on SQUIT from IRC operator
So SQUIT now behaves like CONNECT and DISCONNECT commands, when called
by an IRC operator (and not received from an other server).
2011-03-21 23:52:42 +01:00
Alexander Barton
15775e6790 Commands received from other servers must have prefixes
Make sure that all commands received from other servers do have
valid prefixes.

Only exceptions are PING and ERROR commands that can occure without
prefixes when generated by the remote peer itself.
2011-03-21 10:46:09 +01:00
Alexander Barton
62f705f97e Allow servers to send more commands in the first 10 secods
This helps to speed up server login and network synchronisation.
2011-03-21 09:42:01 +01:00
Alexander Barton
a39e2f22c9 IRC_CHANINFO(): Code cleanup 2011-03-19 17:29:19 +01:00
Alexander Barton
dcb1951efd Handle_GLOBAL(): don't use multi-line strings
They aren't supported by elder C compilers ...
2011-03-19 17:28:38 +01:00
Alexander Barton
fa8b83e69b Merge branches 'CloakUserHost', 'QuitOnHTTP' and 'bug72-WHOIS-List'
* CloakUserHost:
  Add a note not to use a percent sign ("%") in CloakHost variable
  Rename ClientHost to CloakHost, and ClientUserNick to CloakUserToNick
  Don't use "the.net" in sample-ngircd.conf, use "example.net"
  ngircd.conf.5: document "ClientHost" and "ClientUserNick"
  Move "ClientHost" and "ClientUserNick" to end of [Global] section
  ClientUserNick setting
  ClientHost setting

* QuitOnHTTP:
  Only "handle" HTTP commands on unregistered connections
  Don't use IRC_QUIT_HTTP() if STRICT_RFC is #define'd
  IRC_QUIT_HTTP(): enhance error message
  Move IRC_QUIT_HTTP() below IRC_QUIT()
  quit on HTTP commands: GET & POST

* bug72-WHOIS-List:
  Add "whois-test" to testsuite and distribution archive
  Add support for up to 3 targets in WHOIS queries.
2011-03-19 17:16:14 +01:00
Alexander Barton
acd7a5d6d4 Add a note not to use a percent sign ("%") in CloakHost variable
The percent sign is reserved for future extensions, for example to
expand some variables like %H to a hash value of the real host name ...

Idea by kaFux in #ngircd.
2011-03-19 17:04:57 +01:00
Alexander Barton
ae7470ceb5 Rename ClientHost to CloakHost, and ClientUserNick to CloakUserToNick 2011-03-19 16:58:29 +01:00
Alexander Barton
d1f604ab89 Add "whois-test" to testsuite and distribution archive
Test script proposed by Dana Dahlstrom, 2008-02-17.
See <https://arthur.barton.de/bugzilla/show_bug.cgi?id=72> ...
2011-03-19 15:03:15 +01:00
Florian Westphal
ff2a425ab8 Add support for up to 3 targets in WHOIS queries.
also allow up to one wildcard query from local hosts.
Follows ircd 2.10 implementation rather than RFC 2812.
At most 10 entries are returned per wildcard expansion.

WHOIS test cases by Dana Dahlstrom.
2011-03-19 15:03:15 +01:00
Alexander Barton
f419a369bf Doxygen: Remove header.inc.html and ngircd-doc.css from distribution 2011-03-19 15:02:28 +01:00
Alexander Barton
152b529abf ngircd.conf.5: describe types of variables
Describe the possible types of variables in ngircd.conf:
booleans, text strings, integer numbers.

And add type information to each variable description.
2011-03-18 11:15:48 +01:00
Alexander Barton
fc55c945db Don't use "the.net" in sample-ngircd.conf, use "example.net"
"the.net" is an existing domain of the Texas Higher Education Network ...
See RFC 2606.
2011-03-18 10:46:56 +01:00
Alexander Barton
b19f7d73cb Only "handle" HTTP commands on unregistered connections 2011-03-17 00:03:10 +01:00
Alexander Barton
38747b40dc Don't use IRC_QUIT_HTTP() if STRICT_RFC is #define'd 2011-03-16 23:58:39 +01:00
Alexander Barton
dbb66695c9 IRC_QUIT_HTTP(): enhance error message 2011-03-16 23:58:01 +01:00
Alexander Barton
77cff9e47c Move IRC_QUIT_HTTP() below IRC_QUIT() 2011-03-16 23:56:27 +01:00
Alexander Barton
c0d13c4713 ngircd.conf.5: document "ClientHost" and "ClientUserNick" 2011-03-16 23:44:00 +01:00
Alexander Barton
25dd193e9b Move "ClientHost" and "ClientUserNick" to end of [Global] section 2011-03-16 23:43:29 +01:00
Gabor Adam Toth
71d8c37171 ClientUserNick setting 2011-03-16 23:15:50 +01:00
Gabor Adam Toth
52f59149ad ClientHost setting 2011-03-16 23:15:50 +01:00
Gabor Adam Toth
33e8c24806 quit on HTTP commands: GET & POST 2011-03-16 22:59:57 +01:00
Florian Westphal
5417a72536 channel: always reject zero-length channel key
previously, any client could join in this configuration:

[Channel]
  Name = #test
  Modes = tnk
  KeyFile = /tmp/foobar

fix this by checking for zero-length key before comparing
key to channel key.
2011-02-28 23:28:24 +01:00
Alexander Barton
94e4562c1c PAM-Auth child: log if result can't be reported
This fixes the followin GCC warning on modern Linux systems as well:

irc-login.c:     In function ‘Hello_User’:
irc-login.c:876: warning: ignoring return value of ‘write’,
                 declared with attribute warn_unused_result
2011-02-23 22:55:45 +01:00
Alexander Barton
6caa947f98 Protocol.txt: Update description of CHANINFO command 2011-02-17 12:26:56 +01:00
Alexander Barton
e49109e36d Add cscope.out to .gitignore file 2011-02-16 14:06:25 +01:00
Alexander Barton
adfa968f99 Correctly detect errors when handling "MODE x" commands 2011-02-14 01:44:40 +01:00
Alexander Barton
07f241ff6d Enhance documentation for the WEBIRC command 2011-02-13 17:52:39 +01:00
Alexander Barton
53fecf5a2b Doxygen'ify irc-login.c 2011-02-13 17:52:39 +01:00
Alexander Barton
8a674c3263 Doxygen'ify irc-channel.c 2011-02-13 17:52:39 +01:00
Alexander Barton
1f5fbd5992 Doxygen'ify conn.c 2011-02-13 17:52:39 +01:00
Alexander Barton
5858dc3886 Doxygen'ify proc.h 2011-02-13 17:52:39 +01:00
Alexander Barton
af6ac0fa41 Doxygen'ify parse.h 2011-02-13 17:52:39 +01:00
Alexander Barton
f3ec90f3f0 Doxygen'ify and update comments in ngircd.{c|h} 2011-02-13 17:52:39 +01:00
Alexander Barton
c6a7de869c Doxygen'ify and update comments in match.c 2011-02-13 17:52:39 +01:00
Alexander Barton
4ef23df813 Update and translate comments in hash.c 2011-02-13 17:52:39 +01:00
Alexander Barton
5555b6cc86 Doxygen'ify conf.h 2011-02-13 17:52:39 +01:00
Alexander Barton
72a982ae7e Add missong Doxygen @file tags to ngircd.h and irc-op.h 2011-02-13 17:52:39 +01:00
Alexander Barton
2a7dd06ebd Code cleanup: mostly removing empty lines 2011-02-13 17:52:38 +01:00
Alexander Barton
ebfcdb088b Doxygen: define ZLIB, PAM, and ZEROCONF 2011-02-13 17:52:38 +01:00
Alexander Barton
03628dbeaf Add Doxygen @file documentation to each source and header file 2011-02-13 17:52:38 +01:00
Alexander Barton
408cefd15d Updated Doxygen configuration file
Removed unnecessary variables DETAILS_AT_TOP, EXTRACT_PRIVATE,
EXTRACT_LOCAL_CLASSES, added SHOW_DIRECTORIES=YES, STRIP_CODE_COMMENTS=NO,
REFERENCED_BY_RELATION=YES, REFERENCES_RELATION=YES,
HTML_DYNAMIC_SECTIONS=YES and GENERATE_DOCSET=NO; updated PREDEFINED.
2011-02-13 17:52:38 +01:00
Alexander Barton
f59f773cfe Doxygen: remove own header and CSS file
Use the ones of Doxygen instead, this has the advantage that we
benefit of new functionality of Doxygen without having to make changes.
2011-02-13 17:52:38 +01:00
Alexander Barton
f732c7117e Make write buffers bigger, but flush early
This patch
 - makes the server write buffer bigger: 64k,
 - makes the regular write buffer bigger: 32k,
 - tries to flush the write buffer starting at 4K.

Before this patch, a client got disconnected if the buffer flushing at 4k
failed, now regular clients can store up to 32k and servers up 64k even
if flushing is not possible at the moment (e.g. on slow links).
2011-02-12 23:24:56 +01:00
Alexander Barton
477224be5c Enhance logging on "write buffer overflow" 2011-02-12 23:24:26 +01:00
Alexander Barton
493ccd57f4 Clean up Validate_Prefix(); don't send punctuation in ERROR commands 2011-01-29 16:05:55 +01:00
Alexander Barton
8700f4d93c Better check for invalid IRC+ PASS command
Don't do a NULL-pointer dereference when a remote server using the
IRC+ protocol sends an invalid PASS command without the required
<serverversion> parameter ...
2011-01-23 18:38:36 +01:00
Alexander Barton
765dc320f1 Read_Request(): don't access possibly free'd CLIENT structure
Handle_Buffer() can shut down connections and remove clients, so after
calling it, we have to make sure that our CLIENT pointer is still valid.
2011-01-23 15:14:18 +01:00
Alexander Barton
9fff9f6a2b ngircd-test2.conf: really disable Ident and PAM ... 2011-01-19 01:19:40 +01:00
Alexander Barton
b856a58051 Log "Can't read MOTD file" as "configuration error"
Now this error message is displayed in the console without debug prefix
when running the configuration test (--configtest).
2011-01-18 23:44:07 +01:00
Alexander Barton
8927700b22 Allow "Port = 0" in [Server] blocks
Port number 0 marks remote servers that try to connect to this
daemon, but where this daemon never tries to establis a connection
on its own: only incoming connections are allowed.
2011-01-18 22:45:01 +01:00
Alexander Barton
58a4dae56d conf: fix 'Value of "..." is not a number!' for negative values
Don't use isdigit() function any more, because it only checks the
first character of the variable value and because it doesn't know
about the minus sign which is required e.g. for "Group = -1".
2011-01-18 22:41:27 +01:00
Alexander Barton
914d6a26d8 Don't read MOTD file twice
The MOTD file is read in Read_Config(), so don't read it when handling
the "MotdFile" configuration variable. Instead make sure that it is
initialized properly when (re-)reading the configuration.
2011-01-18 22:01:27 +01:00
Alexander Barton
c98e794b38 Add [Features] section to ngircd-test{1|2}.conf
Fix commit 5a34bb203a:
It is not enough to strip the "No" prefix from "Ident" and "PAM",
but we have to introduce the new [Features] section to fix all
warning messages of ngIRCd.

Variables "Ident" and "PAM" in [Global] are completely wrong :-(
2011-01-18 21:39:48 +01:00
Alexander Barton
a990bd72ec Enable WHOIS command to return information about services 2011-01-18 21:04:55 +01:00
Alexander Barton
5a34bb203a Update testsuite configuration: strip No... prefixes 2011-01-18 14:28:39 +01:00
Alexander Barton
d3ef2239e1 Add connection/socket information to some log messages 2011-01-16 23:24:41 +01:00
Alexander Barton
a57748e1a1 Implement channel mode 'O': "IRC operators only"
This channel mode is used on DALnet (bahamut), for example.
2011-01-10 12:15:05 +01:00
Alexander Barton
6600ce3445 Remove ZeroConf variable from sample-ngircd.conf 2011-01-10 00:10:01 +01:00
Alexander Barton
4a6d44dce2 Remove support for ZeroConf/Bonjour/Rendezvous service registration 2011-01-09 23:51:30 +01:00
Alexander Barton
5ed7a4ea57 TOPIC command: test for channel admin rights correctly
This enables other servers, services and IRC operators to change
channel topics, even when the client is not joined to this channel.

Now the handler for TOPIC behaves like the one for MODE.
2011-01-09 23:08:15 +01:00
Alexander Barton
ba32d594fd Channel_CheckAdminRights(): test if client can admin a channel
This generic function tests if a client is allowed to do administrative
tasks to a specific channel:

 - servers and services are always truested ("allowed everything"),
 - channel operators are allowed,
 - IRC operarors are allowed if OperCanUseMode is set in the config.
2011-01-09 22:40:11 +01:00
Florian Westphal
3460c87c58 conf: fix 'unknown section' FEATURES parse error
pointed out by Alex:
ngircd.conf, line 105: Unknown section "[Features]"!
2011-01-09 22:19:17 +01:00
Alexander Barton
02592f912e IRC_TOPIC(): code cleanup 2011-01-09 22:10:30 +01:00
Florian Westphal
1964bda252 conf: move 'run-time-feature-disable' options to new FEATURE section 2011-01-09 19:42:42 +01:00
Florian Westphal
23ce0393b2 array: remove check for allocated == 0
allocated can only be zero if ->mem is NULL.
2011-01-09 19:40:54 +01:00
Florian Westphal
994a003aba array: remove alignment of requested size
libc should know better than us.
Also, this helps debugging with tools like valgrind:
When you allocate an array of size x, and then erronoulsy
use x+1 valgrind cannot detect the bug because due to ALIGN_()
made by array.c we might have allocated more than size x...
2011-01-09 19:28:50 +01:00
Florian Westphal
eda2556e09 conf: Warn if PAM=true when ngircd was built without PAM support 2011-01-09 18:17:35 +01:00
Florian Westphal
9402bcaa73 conf: add missing static qualifier
internal helper, so it should be static.

also, add UNUSED to 'Line'.
2011-01-09 17:54:21 +01:00
Alexander Barton
6d11fb1497 Update copyright notices for 2010 :)
And update the NEWS and ChangeLog file as well.
2011-01-09 16:11:12 +01:00
Alexander Barton
28bbd7e27a Make NoZeroConf option work with Howl 2011-01-09 14:31:18 +01:00
Florian Westphal
1dca082fc6 config: deprecate NoXX-Options
ngircd unfortunately uses several options using double-negation, e.g.

NoIdent = No, NoPam = No, etc.

This renames all options by dropping the "No" prefix, e.g.
"NoIdent = no" becomes "Ident = yes".

The old options will continue to work, but will cause a warning
message.

Also update man pages and default config.

To prevent silly
'Ident = yes' from appearing in  --configtest output in the
'ident support not compiled in and Ident Option not used' case,
make default value depend on feature availability.
If feature is available, enable by default, otherwise disable.

We might consider moving these options to a new
[Feature]

section, or something like that, because none of these options are
essential.

Another possible improvement:

'Ident = yes' option in ngircd.conf causes a warning if ngircd was
built without ident support.

This does not happen with e.g. zeroconf....
2011-01-09 13:59:33 +01:00
Florian Westphal
4a5dfcc3ac channel: fix confusing "adding to invite list" debug output
adding entries to ban list produced 'invite list' debug output...
2010-12-31 11:35:40 +01:00
Alexander Barton
f37e495a2b Command throttling: introduce MAX_COMMANDS_SERVICE
New MAX_COMMANDS_SERVICE (currently set to MAX_COMMANDS_SERVER[10]),
so that services are handled like servers (and not regular users).
2010-12-29 14:19:51 +01:00
Alexander Barton
21cbf37db5 Don't throttle services and servers beeing registered 2010-12-29 14:12:34 +01:00
Alexander Barton
4188a82e76 Xcode: correctly sort files 2010-12-29 14:11:40 +01:00
Alexander Barton
36d4f6c601 Don't assert() when serching a client for an invalid server token
This is only relevant when a trusted server on a server-server link
sends invalid commands.
2010-12-24 12:48:03 +01:00
Alexander Barton
186b14f332 ngIRCd release 17.1 2010-12-19 15:59:00 +01:00
Alexander Barton
8ea1c5bb82 --configtest: remember if MOTD is configured by file or phrase
Configuration variables "MotdFile" and "MotdPhrase" are mutually
exclusive; so don't display content in both of them when running
"ngircd --configtest": instead remember which one is beeing used.
2010-12-02 16:51:21 +01:00
Alexander Barton
79ca5fe04d Enhance log messages when establishing server links a little bit 2010-12-02 13:40:08 +01:00
Alexander Barton
60bb40d67a Reset ID of outgoing server link on DNS error correctly
Not resetting the ID prevents the daemon from trying to re-establish
outgoing server links when the DNS resolver failed to resole a hostname.
2010-12-02 13:38:42 +01:00
Alexander Barton
5da98ec389 Don't log critical (or worse) messages to stderr
stderr isn't redirected to the "error file" any more, so there is
no point in trying to log to it ...
2010-12-02 13:36:19 +01:00
Alexander Barton
0305f75456 Manual page ngircd(8): add SIGNALS section 2010-12-01 22:04:28 +01:00
Alexander Barton
65bcff35ff Manual pages: update and simplyfy AUTHORS section 2010-12-01 22:04:01 +01:00
Alexander Barton
790fa89e67 Remove "error file" when compiled with debug code enabled
The information written to the "error file" (/tmp/ngircd-<PID>.err) when
ngIRCd is compiled with debug code enabled isn't that usefule, so don't
create this file at all.
2010-12-01 21:22:20 +01:00
Alexander Barton
ce448e9077 README: Updated list of implemented commands 2010-11-19 21:38:03 +01:00
Alexander Barton
dd580d3ea7 add doc/README-Interix.txt and doc/Bopm.txt to distribution tarball 2010-11-15 20:11:16 +01:00
Alexander Barton
de6f08cc04 Merge branch 'numeric-329'
* numeric-329:
  New numeric 329: get channel creation time on "MODE #chan" commands
  Save channel creation time; new function Channel_CreationTime()
2010-11-15 19:36:21 +01:00
Florian Westphal
678d5411e2 add doc/PAM.txt to distribution tarball
doc/PAM.txt was not included in the release tarball.
reported by Christoph Biedl.
2010-11-14 23:17:04 +01:00
Alexander Barton
7321be2ccd New numeric 329: get channel creation time on "MODE #chan" commands 2010-11-11 12:39:49 +01:00
Alexander Barton
9bc5d565bb Save channel creation time; new function Channel_CreationTime() 2010-11-11 12:39:19 +01:00
Alexander Barton
0d19f2b43a ngIRCd release 17 2010-11-07 17:24:07 +01:00
Alexander Barton
5a14942b0a Updated doc/Platforms.txt for upcoming release 17 2010-11-07 17:20:28 +01:00
Alexander Barton
2bca14b52e contrib/platformtest.sh: make command name quoting consistent 2010-11-07 15:26:26 +01:00
Alexander Barton
29b41a4ecc contrib/ngircd-redhat.init: updated email address of Naoya Nakazawa 2010-11-07 14:18:04 +01:00
Alexander Barton
30b6e72b96 Fix up generation and distribution of sample-ngircd.conf
- Add generated sample-ngircd.conf to new .gitignore file,
- refactor Makefile.am to generate sample-ngircd.conf on "make all",
  to clean it up on "make clean", and to install it to the correct place.
- Make sure path names in sample-ngircd.conf are separated by "/".
2010-11-03 23:47:21 +01:00
Florian Westphal
4a19763868 doc: change path names in sample-ngircd.conf depending on sysconfdir 2010-11-03 20:41:42 +01:00
Alexander Barton
bdcf3f0e24 ngIRCd Release 17~rc3 2010-10-27 22:31:05 +02:00
Alexander Barton
d7ad956a06 Fix connect attempts to further IP addresses of outgoing server links
If a hostname resolves to more than one IP address (round-robin DNS,
IPv4 and IPv6) and an attempt to connect to the first address fails,
ngIRCd should try to connect to the 2nd address, 3rd address etc.

But because of a wrong variable used in the call to New_Server(),
the wrong server structure has been used in further connection attemps
which possibly lead to connection attempts to already connected servers.
2010-10-27 21:59:51 +02:00
Alexander Barton
e2c9290030 Debian: Install default /etc/pam.d/ngircd allowing all logins
This is required for backwards compatibility when installing the -full
or -full-dbg package variant: PAM is enabled now but no configuration
present, so all login attempts would be denied ...

Creating /etc/pam.d/ngircd including "auth required pam_permit.so"
restores the old behaviour of allowing all connections.
2010-10-27 00:43:02 +02:00
Alexander Barton
5edde9a760 Debian: update standards to 3.9.1; add libpam0g-dev dependency 2010-10-26 22:56:01 +02:00
Alexander Barton
864f3df575 Make contrib/platformtest.sh more portable 2010-10-26 22:18:30 +02:00
Alexander Barton
ffccfb0975 Mac OS X package ("make osxpkg"): generate PAM configuration 2010-10-26 15:15:06 +02:00
Alexander Barton
76f40bdb98 Xcode builds ("make xcode"): disable pam_fail_delay()
disable pam_fail_delay() only is available starting with Mac
OS X 10.6; but we use the 10.5 SDK for campatibility, so don't use
this function at all when building using Xcode.
2010-10-26 15:13:24 +02:00
Alexander Barton
3dd91923e4 Xcode: update project file, use 10.5.x SDK
This is required for universal 32 bit and 64 bit builds: now code
for ppc, i386, and x86_64 is generated (which requires 10.5 or newer).
2010-10-26 15:10:14 +02:00
Alexander Barton
a4de27deee Xcode builds ("make xcode"): detect version number correctly 2010-10-26 15:09:01 +02:00
Alexander Barton
8449e08245 ngIRCd release 17~rc2 2010-10-25 18:51:32 +02:00
Alexander Barton
05d1df97c3 Updated contrib/platformtest.sh (new version scheme)
- handle version numbers generated by "git describe"
 - detect gcc compiler version correctly when "-std=xxx" is used
2010-10-25 18:49:54 +02:00
Alexander Barton
01c39ba001 New doc/HowToRelease.txt file describing the release process 2010-10-25 14:46:58 +02:00
Alexander Barton
0c0cac641d ZeroConf: include header files missing since commit a988bbc86a 2010-10-25 00:17:46 +02:00
Alexander Barton
8288878122 Generate ngIRCd version number from GIT tag
Now the ngIRCd release/version number is deduced from the "current"
annotated GIT tag; see "git describe --help" for details. This is the
same scheme the Linux kernel uses and gives much more details version
numbers for interim releases and inofficial source archives generated
using "make dist".

Please note: the version number is only updated it the autogen.sh
script is run; so after pulling in and pushing out new commits, you
should run ./autogen.sh!
2010-10-24 21:51:38 +02:00
Alexander Barton
596bc096b0 Make sourcecode compatible with ansi2knr again
This allows to compile ngIRCd using a pre-ANSI K&R C compiler again:
all source files are automatically converted by the included ansi2knr
program (of GNU automake/autoconf) before compiling them with the
K&R C compiler, but a few coding standards must be met.

Tested on Apple A/UX 3.x.
Regression testing on Linux and Mac OS X.
2010-10-24 21:48:32 +02:00
Alexander Barton
5700329f8c ./configure: check if C compiler can compile ISO Standard C
This is required for enabling ansi2knr on systems that don't have an
ANSI C compiler installed (e.g. on A/UX with Apple standard C compiler).
2010-10-24 14:14:30 +02:00
Alexander Barton
3b74280879 ./configure: check support for C prototypes again 2010-10-24 13:50:22 +02:00
Alexander Barton
f1267ca375 Don't use PARAMS() macro for function implementations
The PARAMS() macro is only needed for function prototypes;
don't use it for the actual implementations.
2010-10-24 13:41:51 +02:00
Alexander Barton
ccb175dce6 Added m68k/apple/aux3.0.1 (gcc 2.7.2) to doc/Platforms.txt 2010-10-19 22:19:18 +02:00
Alexander Barton
99e08eaced Only try to set FD_CLOEXEC if this flag is defined
A/UX 3.x doesn't implement this constant, for example.
2010-10-19 22:17:12 +02:00
Alexander Barton
5f2bc55d36 Only use "__attribute__ ((unused))" if GCC >=2.8 is used
At least GCC 2.7.2 doesn't support this attribute.
2010-10-19 22:13:48 +02:00
Alexander Barton
1fa5b11995 doc/Makefile.am: don¹t set docdir, automake handles it already
And elder make(1) programs don¹t like "x ?= y" ...
2010-10-13 22:46:29 +02:00
Alexander Barton
d00a0f1e7c ngIRCd release 17~rc1 2010-10-11 23:25:48 +02:00
Alexander Barton
a988bbc86a New configuration option "NoZeroConf" to disable ZeroConf registration
If ngIRCd is compiled to register its services using ZeroConf (e.g. using
Howl, Avahi or on Mac OS X) this parameter can be used to disable service
registration at runtime.
2010-10-11 16:54:49 +02:00
Alexander Barton
4226db873f Xcode: only build current architecture in "Debug" target 2010-10-09 20:13:54 +02:00
Alexander Barton
f579043671 doc/Platforms.txt: added NetBSD 5.0.2 2010-10-07 13:20:30 +02:00
Alexander Barton
50cb321bb1 Updated doc/Platforms.txt 2010-10-05 23:19:54 +02:00
Alexander Barton
ade8902b88 Make sure sighandlers.h is listed in noinst_HEADERS
... because it must be included in the distribution archive :-)
2010-10-05 21:57:01 +02:00
Alexander Barton
3a826b774a const'ify ngt_SyslogFacilityName() function
This fixes the following gcc compiler warning:

tool.c: In function 'ngt_SyslogFacilityName':
tool.c:195: warning: return discards qualifiers from pointer target type
2010-10-05 20:16:35 +02:00
Alexander Barton
c51cc88eb0 Debian packages: build "-full" and "-full-dbg" with support for PAM 2010-10-03 15:06:07 +02:00
Alexander Barton
5e82a91d13 New configuration option "SyslogFacility"
The new option "SyslogFacility" deines the syslog "facility" to which
ngIRCd should send log messages.

Possible values are system dependant, but most probably "auth", "daemon",
"user" and "local1" through "local7" are possible values; see syslog(3).
Default is "local5" for historical reasons.
2010-09-24 17:39:11 +02:00
Alexander Barton
4943bbb066 New functions ngt_SyslogFacilityName() and ngt_SyslogFacilityID()
These both functions translate syslog facility names to ID numbers
and vice versa. On systems that don't define the facilitynames[] array
in syslog.h, we try to build one ourself.
2010-09-24 16:29:55 +02:00
Alexander Barton
e2ba7e08b4 Explicitly cast return value of read(2) to "int"
This fixes the following gcc warning, emitted by Xcode:

src/ngircd/sighandlers.c: In function 'Signal_Callback':
src/ngircd/sighandlers.c:239: warning: implicit conversion shortens 64-bit value into a 32-bit value
2010-09-22 14:15:46 +02:00
Alexander Barton
b1a117cd98 Add sighandlers.{c|h} to Xcode project
And update static Mac OS X config.h used by the Xcode project.
2010-09-22 14:11:30 +02:00
Alexander Barton
4a770e8e2d Don't call sigaction() if it is not available on the system 2010-09-22 14:10:09 +02:00
Florian Westphal
ba720fcbae Fix signalpipe file descriptor leak on RESTART
Signals_Init() must only be called once.
This does not affect any ngircd release version.

Earlier version of this patch moved the io and sighandler
initialization before the while() loop, but as Alexander
Barton noticed that broke all systems without builtin select
support in io.c...
2010-09-14 23:53:59 +02:00
Alexander Barton
b3cfbc3d28 sighandlers.{c|h}: Code cleanup
- declare signals_catch[] array not between the function implementations.
 - rename now local function NGIRCd_Rehash() to Rehash().
 - remove empty and therefore not used "catch SIGHUP; break;".
2010-09-14 00:30:45 +02:00
Alexander Barton
74578890b7 Make sighandlers.{c|h} compatible with ansi2knr 2010-09-14 00:29:34 +02:00
Alexander Barton
212311efc5 Updated ChangeLog to include signal handler changes 2010-09-14 00:18:20 +02:00
Alexander Barton
fe5c7cb22d Bump version number to "17-dev" 2010-09-14 00:05:31 +02:00
Alexander Barton
cdae82413d Update ChangeLog and NEWS: include SIGUSR1/SIGUSR2 changes 2010-09-14 00:05:31 +02:00
Alexander Barton
3600dc60fc Output connection status when dumping the internal server state 2010-09-14 00:05:31 +02:00
Alexander Barton
cd954ee7e9 Reformat "server state" debug messages a little bit 2010-09-14 00:04:04 +02:00
Alexander Barton
355828e64f Enable the daemon to dump its internal state in debug-mode.
This patch allows ngIRCd to dump its internal state (connected clients,
actual configuration) when compiled with --enable-debug. The daemon
catches two more signals:

 - SIGUSR1: toggle debug mode (on/off),
 - SIGUSR2: dump internal state to console/syslog.
2010-09-14 00:02:02 +02:00
Florian Westphal
755f54b150 signalhandlers: add fallback to deprecated sysv API 2010-09-11 11:36:12 +02:00
Florian Westphal
ef3dbf96eb remove NGIRCd_SignalRehash
now that the main signal handling is done from the dispatcher
loop we can call NGIRCD_Rehash() directly.

the /REHASH handler can queue the Rehash() function for
execution by sending a SIGHUP.  It will be run when we
return back to the dispatch loop.
2010-09-11 11:36:12 +02:00
Florian Westphal
1fe17e246c Add new 'delayed' signal handlers.
Allows to defer/queue signal processing for execution on the next
event dispatch call, i.e. we can perform any signal action in
normal, non-signal context.

Example uses:
- Reload everything on HUP without writing a global "SIGHUP_received"
  variable
- Dump status of internal Lists on SIGUSR1, etc.
2010-09-11 11:36:12 +02:00
Florian Westphal
c135d0dded io: add io_cloexec to set close-on-exec flag. 2010-09-11 11:36:12 +02:00
Florian Westphal
1e281a8baa ng_ipaddr.h: include assert.h
We use assert() in this header, so we should include assert.h.
2010-09-11 11:35:01 +02:00
Alexander Barton
6349ec8bb3 Conn_SyncServerStruct(): test all connections; and work case insensitive
Fix synchronization of established connections and configured server
structures after a configuration update:

 - Not only test servers that already have a connection, but also check
   and update configured servers to which a new connection is beeing
   established (SERVER_WAIT state).

 - And do the server name comparision case-insensitive.
2010-09-08 02:02:01 +02:00
Alexander Barton
8d68fe3f86 Check_Servers(): skip servers already beeing connected
Let CheckServers() not only skip servers that already have a
connection, but also skip servers to which a new connection is
already beeing established (SERVER_WAIT state).
2010-09-08 00:45:23 +02:00
Alexander Barton
4f6c19712e Check_Servers(): Code cleanup 2010-09-08 00:42:57 +02:00
Alexander Barton
4833f9e5c8 Update ChangeLog and NEWS in preparation for the next release ... 2010-08-29 18:10:49 +02:00
Alexander Barton
90a186158b Fix linebreak in INSTALL text to fit in 80 columns 2010-08-29 18:09:57 +02:00
Alexander Barton
b52d5e2a78 configure: correctly indent IPv6 yes/no summary output 2010-08-25 00:02:06 +02:00
Alexander Barton
04e38f17ae Don't reset My_Connections[Idx].lastping when reading data
This fixes PING-PONG lag calculation (which resulted in "0" before).

The "lastping" time is still reset it if a time shift backwards has
been detected to prevent the daemon from miscalculating ping timeouts.
2010-08-19 15:58:55 +02:00
Alexander Barton
32188d821b write_whoreply(): respect hostname cloaking 2010-08-18 00:01:14 +02:00
Alexander Barton
6f4a348b75 IRC_USERHOST(): respect hostname cloaking 2010-08-17 23:56:36 +02:00
Alexander Barton
a51670005f IRC_USERHOST(): Code cleanup & some documentation 2010-08-17 23:55:40 +02:00
Alexander Barton
0263fa4c66 Send_Message(): respect hostname cloaking 2010-08-17 21:16:46 +02:00
Alexander Barton
31ea0f8ee9 IRC_WriteStrClientPrefix() / Get_Prefix(): respect hostname cloaking 2010-08-17 21:14:51 +02:00
Alexander Barton
fd4dfccc30 Refactor IRC_WriteStr{Channel|Related}Prefix(); support cloaking
Move common code to new local function Send_Marked_Connections()
and respect hostname cloaking.
2010-08-17 21:11:37 +02:00
Alexander Barton
2a4bf67aac Implement user mode "x": hostname cloaking (closes: #102)
When a client has user mode "x" set, its real hostname is cloaked
by substituting it with the server name (as configured in ngircd.conf).

Restricted clients (user mode "r") aren't allowed to change mode "x".

Please note that hostname cloaking is only in effect in server-client
communication! The server still uses the real hostname for its own
logging and for all server-server communication -- therefore all servers
in the network must support user mode "x" to prevent older servers
from leaking the real hostname of a cloaked client!
2010-08-17 21:05:06 +02:00
Alexander Barton
575485eb82 WHOWAS: respect hostname cloaking
Store cloaked hostname if user mode "x" is set when the client
disconnects from the server.
2010-08-17 21:02:39 +02:00
Alexander Barton
3fd4f320b7 WHOIS: respect hostname cloaking 2010-08-17 21:00:47 +02:00
Alexander Barton
6fdd3479f1 Implement Client_HostnameCloaked() and Client_MaskCloaked()
These two functions return the cloaked hostname, if the client has
enabled hostname cloaking indicated by the -- still to implement --
user mode "x". See furter patches :-)
2010-08-17 20:54:33 +02:00
Alexander Barton
617640e0a3 Clean up an document Client_Hostname() and Client_Mask() 2010-08-17 20:51:14 +02:00
Alexander Barton
f72e22d361 Make configure switch "--docdir" work (closes: #108) 2010-08-17 15:59:54 +02:00
Alexander Barton
c65bf5d2ce Reformat and update FAQ.txt a little bit 2010-08-13 15:53:24 +02:00
Florian Westphal
9c6230e177 INSTALL: mention SSL and IPv6 2010-08-12 21:46:51 +02:00
Florian Westphal
479a43b1c6 INSTALL: mention changed handling of MotdFile. 2010-08-12 21:46:51 +02:00
Florian Westphal
056de78e31 ngircd: change MOTD file handling
previously, the given MotdFile file was read whenever a client
requested it.

Change handling to read the MotdFile contents into memory once
during config file parsing.

Two side effects:
- changes to the MOTD file do not have any effect until ngircds
  configuration is reloaded
- MOTD file does no longer have to reside in the chroot directory
  (the MOTD contents will then not be re-read on reload in that case)
2010-08-12 21:46:47 +02:00
Florian Westphal
a02bc9cc6f startup: open /dev/null before chroot
before people had to create a /dev/null inside the chroot to make
redirection work.
2010-08-01 00:07:33 +02:00
Alexander Barton
01e40f4b55 Allow IRC ops to change channel modes even without OperServerMode set 2010-07-25 16:44:38 +02:00
Florian Westphal
acb66d6463 Allow IRC operators to use MODE command on any channel (closes: #100)
This allows IRC operators to change channel modes of ANY channel,
even without joining these channels first.
2010-07-25 16:18:25 +02:00
Alexander Barton
63a304755a Added mailmap file for git-[short]log and git-blame 2010-07-25 15:13:50 +02:00
Alexander Barton
6ebb31ab35 Remove Proc_Kill(), use timeout to kill child processes
This avoids a race and potentionally killing the wrong process on
systems that use randomized process IDs; now the child itself is
responsible to exit in a timely manner using SIGALRM.
2010-07-14 10:29:05 +02:00
Alexander Barton
cf93881dfb New function Conn_CloseAllSockets() to close all open sockets
This is useful in forked child processes, for example, to make sure that
they don't hold connections open that the main process wants to close.
2010-07-14 10:27:55 +02:00
Alexander Barton
560492a4a4 Authenticated users should be registered without the "~" mark 2010-07-13 23:18:54 +02:00
Alexander Barton
9cd3494de9 Don't Proc_Kill() childs after Proc_Read(): done there already. 2010-07-13 22:29:06 +02:00
Alexander Barton
6131822af6 Don't even fork a PAM-subprocess if "NoPAM" option is set 2010-07-13 22:14:53 +02:00
Alexander Barton
57a2faf4a7 Use Proc_GenericSignalHandler() as handler for SIGTERM by default 2010-07-13 22:04:35 +02:00
Alexander Barton
41034950d9 Mark some variables as "unused" to prevent compiler warnings
Some variables are only used when compiling with IDENT or PAM support
or when the debug code is enabled. Mark them as "unused" so that gcc
doesn't generate warnings when neither of these options is enabled.
2010-07-13 16:50:00 +02:00
Alexander Barton
6faf44bc6d Set NoPAM=yes in configuration files used for the testsuite 2010-07-13 16:48:24 +02:00
Alexander Barton
f369177617 New configuration option "NoPAM" to disable PAM
When the "NoPAM" configuration option is set and ngIRCd is compiled
with support for PAM, ngIRCd will not call any PAM functions: all
connection attemps without password will succeed instead and all
connection attemps with password will fail.

If ngIRCd is compiled without PAM support, this option is a dummy
option and nothing changes: the global server password will still be
in effect.
2010-07-13 16:47:01 +02:00
Alexander Barton
37ee0a3313 io.c: Include conn.h when using the select() API 2010-07-12 13:24:45 +02:00
Alexander Barton
03457135b7 Use correct preprocessor syntax when testing for PAM and IDENTAUTH 2010-07-12 13:22:48 +02:00
Alexander Barton
28424d013d Make sure signal.h is #include'd when needed 2010-07-12 13:22:19 +02:00
Alexander Barton
583c50476b Initial documentation for using PAM with ngIRCd 2010-07-12 13:07:07 +02:00
Alexander Barton
808d4f6e85 Implement asynchronous user authentication using PAM
For each client connection a child process is forked which handles the
actual PAM authentication and reports the result back to the master
process using a pipe for communication.

While the PAM authentication is in process the daemon does not block.
2010-07-12 12:56:33 +02:00
Alexander Barton
fb4b5acfb8 Add new pam.{c|h} module to Xcode project
Adjust Xcode project and Mac OS X static config.h header to use PAM.
2010-07-12 12:54:01 +02:00
Alexander Barton
77870ddf2d Add pam.{c|h} to project and implement PAM_Authenticate() function 2010-07-12 12:53:08 +02:00
Alexander Barton
1995af0ed6 New functions Client_[Set]OrigUser() to get/set user specified by peer
The Client_SetOrigUser() function is used to store the peer-provided
user name (see USER command) in its original form, not changed by
IDENT results, for example.
2010-07-11 17:03:43 +02:00
Alexander Barton
761b2284b9 Detect PAM libraries 2010-07-11 17:01:45 +02:00
Alexander Barton
79be1c477e Refactor Resolve_Read() into generic Proc_Read() function 2010-07-11 16:58:30 +02:00
Alexander Barton
7b5e2fe38e Make Proc_Kill() more fault-tolerant 2010-07-11 16:54:44 +02:00
Alexander Barton
bf8b646304 New function Conn_GetProcStat()
Get PROC_STAT sub-process structure of a given connection.
2010-07-11 15:15:23 +02:00
Alexander Barton
e4ffcd00bd Code cleanup: don't reset penalty time on DNS resolver result
See commit d4632a727f: it's not necessary any more!
2010-07-11 15:12:17 +02:00
Alexander Barton
4cc4c29e38 New function Proc_GenericSignalHandler() 2010-07-01 00:39:35 +02:00
Alexander Barton
0db9a31e50 Rename Log_[{Init|Exit}_]Resolver to Log_[{Init|Exit}_]Subprocess
Rename Log_Init_Resolver, Log_Exit_Resolver, and Log_Resolver to
Log_Init_Subprocess, Log_Exit_Subprocess, and Log_Subprocess and
make it more generic thereby.
2010-07-01 00:34:56 +02:00
Alexander Barton
5462c6c50f Don't #include client.h when conn.h/conn-func.h is already included
conn.h and cinn-func.h both already #include client.h, so it is
not needed to do it twice.
2010-06-30 23:49:52 +02:00
Alexander Barton
3d49fa5bff New function Conn_GetFromProc() to get CONN_ID of a subprocess
Get CONN_ID from file descriptor associated to a subprocess structure.
2010-06-29 23:38:39 +02:00
Alexander Barton
2d4ea28835 Resolver: Implement signal handler and catch TERM signal 2010-06-29 22:55:27 +02:00
Alexander Barton
d4632a727f Don't set a penalty time when doing DNS lookups
The logic isn't as described in the source and intended by this code:
ngIRCd doesn't wait for the asynchronous resolver process until the set
penalty time is over, but until the forked process terminates or the
initial connection timeout (= PongTimeout) triggers.

So don't set the penalty time at all and remove the wrong comment.
2010-06-29 22:55:27 +02:00
Alexander Barton
60f5dd5b29 Update comments: subprocesses not only can be resolver processes 2010-06-29 22:55:27 +02:00
Alexander Barton
89e73ad4b4 Refactoring: Rename CONNECTION.res_stat to .proc_stat
We want to use this process status variable not only for the
resolver subprocesses but other asynchronous tasks as well;
so let's name it more generic.
2010-06-29 22:55:27 +02:00
Alexander Barton
54e67ea9ee New "module" proc.c/proc.h for generic process handling
The new "module" proc.c is used for functions dealing with child
processes. At the moment, it is only used by the asynchronous resolver.

All the functions already implemented habe been migrated from the
resolver code base, and the rest of the ngIRCd source code has been
adepted to the new namespace and calling conventions.

The goal is to develop "generic" process handling functions that can
be used for other purposes as well, e.g. running processes on client
connects etc.
2010-06-29 22:55:27 +02:00
Alexander Barton
cc336b7558 Only #include resolve.h if it is really needed 2010-06-29 22:55:27 +02:00
Alexander Barton
ae55d4f500 Fix redundant redeclaration of Conn_Count*() functions
The wrongly placed #endif lead to the following compiler warnings:

conn.h:125: warning: redundant redeclaration of ‘Conn_Count’
conn.h:125: warning: previous declaration of ‘Conn_Count’ was here
conn.h:126: warning: redundant redeclaration of ‘Conn_CountMax’
conn.h:126: warning: previous declaration of ‘Conn_CountMax’ was here
conn.h:127: warning: redundant redeclaration of ‘Conn_CountAccepted’
conn.h:127: warning: previous declaration of ‘Conn_CountAccepted’ was here
2010-06-26 00:45:11 +02:00
Alexander Barton
edfa215481 const'ify Conn_WriteStr() function 2010-06-26 00:44:37 +02:00
Alexander Barton
c6742192a6 const'ify Send_ListChange() function in irc-mode.c 2010-06-26 00:42:12 +02:00
Alexander Barton
0c0d4af55a const'ify IRC_WriteStrXXX() and Get_Prefix() functions 2010-06-26 00:38:20 +02:00
Alexander Barton
8605e9c0fe const'ify command name variable in _COMMAND strcuture 2010-06-26 00:37:06 +02:00
Alexander Barton
a68103771c const'ify Client_TypeText() 2010-06-26 00:31:08 +02:00
Alexander Barton
8ad1c23ae4 Add some documentation for using BOPM with ngIRCd 2010-06-25 15:19:39 +02:00
Alexander Barton
f76e0a1db6 Implement user mode "c": receive connect/disconnect NOTICEs
Users having the user mode "c" set receive NOTICE messages on each
new client connection to the local server as well as disconnects.
Only IRC operators (users having the mode "o" set) are allowed to
set the 'c' user mode.

These connect/disconnect messages can be useful for open proxy
scanners -- BOPM (http://wiki.blitzed.org/BOPM) is now functional
with ngIRCd, for example.
2010-06-25 00:33:01 +02:00
Alexander Barton
51ed742054 Refactor Wall_ServerNotice() into more generic Log_ServerNotice()
Log_ServerNotice() sends a messages to all users having a given
user mode set.
2010-06-25 00:33:00 +02:00
Alexander Barton
60eac5e952 New function Conn_IPA(): get client IP address as string 2010-06-25 00:33:00 +02:00
Alexander Barton
139d6303e7 ngircd.init: require $network $remote_fs when stopping ngircd 2010-06-25 00:10:56 +02:00
Neale Pickett
28f8b50174 Show SSL status in WHOIS, numeric 275
"I've been wanting this for years and finally took the 5 minutes to
patch it in. I took the response code (275) from whatever's running
OFTC's IRC network."
  -- Neale Pickett <neale@woozle.org>, Fri, 11 Jun 2010 17:32:41 -0500

(OFTC is running Hybrid ircd.)
2010-06-23 11:00:09 +02:00
Alexander Barton
e2930f3f5e Include correct header files when testing for arpa/inet.h (Closes: #105)
Tested on OpenBSD 4.7, OpenBSD 4.1, FreeBSD 8, Linux and Mac OS X.
Thanks to rck <dev.rck@gmail.com> for reporting and testing!
2010-06-09 12:03:08 +02:00
Florian Westphal
059e707249 Revert "configure: make implicit declarations fatal"
This reverts commit b3a6c33da0b12ba74dc395979b677813d4bc2c0f.

apparently not all gcc versions support this 8-(
2010-06-09 12:03:00 +02:00
Florian Westphal
b849e63fbf configure: make implicit declarations fatal
from bugzilla #105:
"ngircd-16 works great under openbsd4.7/i386, but it segfaults on
openbsd4.7/amd64."

Caused by missing function prototypes and the resulting truncation of
pointer to int.

Lets try to catch these bugs during compilation instead of SIGSEGV.
2010-06-09 11:49:57 +02:00
Alexander Barton
55190f2d3d Don't access already freed memory in IRC_KILL()
It is not possible to call Conn_Close() after Client_Destroy() has been
called, because Conn_Close wants to access the CLIENT structure which
then has been freed already.

Fix IRC_KILL to use Conn_Close() for local clients and Client_Destroy()
for remote clients only (and never both).
2010-05-22 17:03:54 +02:00
Florian Westphal
6dc80bd195 fix "beeing" typo
reported by Fabio Scotoni via bugzilla #101.
2010-05-14 19:43:08 +02:00
Florian Westphal
df359835d1 SSL/TLS: fix bogus 'socket closed' error message
When we get there then the ssl handshake has failed, or
we could not create a ssl context because ssl library
initialization failed on startup.

Reflect that in the log message.
2010-05-07 23:25:59 +02:00
Alexander Barton
defd7e09af ngIRCd release 16 2010-05-02 15:25:35 +02:00
Florian Westphal
29d448ed63 doc/SSL: remove line continuation marker
some people got confused by the '\' line continuation marker,
thus put everything in a single line, even if the line gets overly long.
2010-05-01 20:29:18 +02:00
Alexander Barton
bdec5ac1f3 ngIRCd release 16~rc2 2010-04-25 13:13:11 +02:00
Alexander Barton
73fd26e9fa Don't reset counters on RESTART
When ngIRCd restarts, all the connection counters are preserved now,
as well as the command counters for example.

It's unclear if resetting or not resetting is the "correct" behaviour,
but it's quite clear that the behaviour should be consistent for all the
counters ngIRCd uses ...

And initializing "WCounter", the global but temporary write counter,
is not necessarry at all: it is initialized (reset) before its use in
the command parser (see parse.c).
2010-04-25 12:54:13 +02:00
Alexander Barton
79e1ec2b1e New numeric RPL_STATSCONN (250): display connection statistics
The RPL_STATSCONN numeric (250) displays information about the
highest simoultaneous connection count and the number of all
accepted connections since the daemon started up.

Used by ircd-Hybrid, Bahamut, and Unreal for example.
2010-04-23 23:30:14 +02:00
Alexander Barton
615d09459e Display total number of served connections on daemon shutdown 2010-04-23 23:29:22 +02:00
Alexander Barton
1338ade650 Enhace connection statistics counters
This patch enables ngIRCd to count the highest maximum simultaneous
connections and all the connections accepted since startup.

New functions:
- Conn_Count(): get current connections
- Conn_CountMax(): maximum simultaneous connections
- Conn_CountAccepted(): number of connections accepted
2010-04-23 23:25:34 +02:00
Alexander Barton
21140500f1 Conn_Init: code cleanup 2010-04-23 22:23:51 +02:00
Alexander Barton
77ceb9f8ab Updated doc/Platforms.txt 2010-04-23 11:04:39 +02:00
Alexander Barton
b042363e88 Only include <netinet/in_systm.h> if it exists 2010-04-23 11:04:15 +02:00
Alexander Barton
6b0bb665c3 Include netinet/{in.h, in_systm.h} when checking for netinet/ip.h
This solves warning messages of autoconf on e.g. FreeBSD 8:

configure: WARNING: netinet/ip.h: present but cannot be compiled
configure: WARNING: netinet/ip.h:   check for missing prerequisite headers?
2010-04-23 10:55:50 +02:00
Alexander Barton
1caa3fb94b Include netinet/in_systm.h alongside netinet/ip.h
This fixes the following error when compiling on e.g. FreeBSD 6.x:

In file included from conn.c:40:
/usr/include/netinet/ip.h:160: error: syntax error before "n_long"
/usr/include/netinet/ip.h:163: error: syntax error before "n_long"
2010-04-11 16:58:29 +00:00
Alexander Barton
025342fe46 Fix gcc warning "ignoring return value of ..."
This patch fixes two warnings of gcc 4.4.3 when used with eglibc 2.11.1:

ngircd.c: In function ‘NGIRCd_Init’:
ngircd.c:801: warning: ignoring return value of ‘chdir’, declared with
 attribute warn_unused_result
conn.c: In function ‘Simple_Message’:
conn.c:2041: warning: ignoring return value of ‘write’, declared with
 attribute warn_unused_result

The first by checking the return code and an appropriate error message,
the second by "better" ignoring it (which is correct there!) ...
2010-04-09 20:14:11 +02:00
Alexander Barton
628c6c962b Only compile in Get_Error() if really needed
This fixes "resolve.c:150: warning: ‘Get_Error’ defined but not used".
2010-04-09 20:06:44 +02:00
Alexander Barton
1ed49de83a Updated some more copyright notices, it's 2010 already (part 2)
Silly me forgot the most important place, the program output itself ...
2010-04-02 14:22:07 +02:00
Alexander Barton
bb914b93e9 Updated some more copyright notices, it's 2010 already :-) 2010-04-02 14:19:36 +02:00
Alexander Barton
50e8a62c5c ngIRCd release 16~rc1 2010-03-25 15:57:11 +01:00
Alexander Barton
aa32fec1b6 Updated NEWS and ChangeLog file for ngIRCd 16-rc1 2010-03-25 14:55:31 +01:00
Alexander Barton
cbe41ec875 Don't use port 6668 as example for both "Ports" and "SSLPorts" 2010-03-16 16:16:03 +01:00
Florian Westphal
20276f7cc9 configure.in: only add -lnsl when needed
dpkg-shlibdeps: warning: dependency on libnsl.so.1 [..]
(they use none of its symbols).

As shown via commit 2b14234abc
(dpkg-shlibdeps: warning: dependency on libnsl.so.1) and the
following revert of that commit, we cannot simply drop
the AC_CHECK_LIB(nsl). Although -lnsl is indeed unneeded
when glibc is used, some platforms (e.g. Solaris) need it.

Use AC_SEARCH_LIBS instead to only link when the library exports
a particular symbol.
2010-02-17 22:25:30 +01:00
Alexander Barton
6e8cf51bb2 Implement WEBIRC command
The WEBIRC command is used by some Web-to-IRC gateways to set the correct
user name and host name of users instead of their own.

Syntax: WEBIRC <password> <username> <hostname> <ip-address>

The <password> must be set using the new configuration variable "WebircPassword" in the [Global] section of ngircd.conf.

Please note that the <ip-address> is currently not used by ngIRCd (we don't store it in the CLIENT structure, only the resolved hostname).
2010-02-11 00:01:53 +01:00
Alexander Barton
53fc0ebff6 ngircd.conf.5: Document missing "Password" variable 2010-02-10 23:47:05 +01:00
Alexander Barton
9b3e143a26 Re-format Init_New_Client() function 2010-02-10 23:40:03 +01:00
Alexander Barton
f1bbc92b39 New README-Interix.txt for running ngIRCd on MS SFU and MS SUA 2010-02-05 00:24:33 +01:00
Alexander Barton
1da3e25e65 Added "i586/pc/interix3.5" (MS Services for UNIX) to Platforms.txt 2010-01-22 18:26:26 +01:00
Alexander Barton
e1de769ab9 Quote received messages of ERROR commands in log output 2010-01-19 19:20:56 +01:00
Alexander Barton
9f58418765 Implemented new "secure clients only" channel mode: +z
Only clients using a SSL encrypted connection to the server are
allowed to join such a channel.

But please note three things:

a) already joined clients are not checked when setting this mode,
b) IRC operators are always allowed to join every channel, and
c) remote clients using a server not supporting this mode are not
   checked either and therefore always allowed to join.
2010-01-17 14:20:07 +01:00
Alexander Barton
ef157715a0 Clean up and document IRC_STATS() function 2010-01-16 23:24:19 +01:00
Alexander Barton
ecad9f32c8 Clean up and document IRC_JOIN() and join_allowed() functions 2010-01-16 22:30:55 +01:00
Alexander Barton
f58c8b94d9 Show our name (IRCD=ngIRCd) in ISUPPORT (005) numeric
Inspired by Hyperion IRC daemon.
2010-01-16 14:59:07 +01:00
Alexander Barton
3a2ac66f7f Added missing modes to USERMODES #define
Now the numeric 004 correctly reports all the supported user and channel
modes (user modes "r" and "w" were missing), e. g.:

  :a.irc.net 004 a a.irc.net ngircd-15 aiorsw biIklmnoPstv
2010-01-16 14:07:27 +01:00
Alexander Barton
cf05bf31a7 Updated links to ngIRCd homepage (bug tracker, mailing list) 2010-01-01 18:58:56 +01:00
Alexander Barton
a4d7c6f145 setsockopt(): use IPPROTO_IP instead of SOL_IP to set IPTOS_LOWDELAY 2009-12-31 00:57:02 +01:00
Alexander Barton
1ddc74f13e Really test for netinet/ip.h and set HAVE_NETINET_IP_H 2009-12-31 00:38:47 +01:00
Alexander Barton
75dabcaae5 ReverseLookup(): fix documentation comment 2009-12-30 23:45:02 +01:00
Alexander Barton
1b73e68e6e Move NewConnection handling from callbacks to New_Connection() 2009-12-30 23:42:43 +01:00
Alexander Barton
03cde2efd3 Connection functions: add some more documentation comments 2009-12-30 23:35:17 +01:00
Alexander Barton
cb6faed61c Clean up conn.{c|h} a little bit 2009-12-30 23:32:47 +01:00
Alexander Barton
c62c2d349b Xcode: fix "-Wuninitialized is not supported without -O"
Fix Apple Xcode warning "cc1: warning: -Wuninitialized is not supported
without -O" when using the "Debug" build target:

Detection of uninitialized automatic variable requires data flow analsys
that is only enabled during optimized compilation.
2009-12-27 17:21:37 +01:00
Alexander Barton
60137a7139 Added i686/unknown/kfreebsd7.2-gnu 2009-12-02 22:22:35 +01:00
Alexander Barton
513a75c919 platformtest.sh: Only show latest commit
Only show latest GIT commuit ID as version number,
even when the last commit has been a merge.
2009-11-15 18:25:36 +01:00
Alexander Barton
4f1b5400e9 Merge commit 'cade80dcf516f40e7d53124bc98526e6e5b3fb66'
* commit 'cade80dcf516f40e7d53124bc98526e6e5b3fb66':
  Added missing contrib/platformtest.sh to distribution
2009-11-07 21:51:36 +01:00
Alexander Barton
cade80dcf5 Added missing contrib/platformtest.sh to distribution 2009-11-07 21:06:30 +01:00
Florian Westphal
28ca31e576 Remove limit on max number of configured irc operators. 2009-11-07 17:42:54 +01:00
Alexander Barton
c414d0bd3a ngIRCd release 15 2009-11-07 13:57:15 +01:00
Florian Westphal
bc88b2cb06 configtest: print ssl config options even when unset
Print "SSLOptionVar =" instead of omitting the option when
running --configtest with ssl enabled.
This better matches the behaviour of other options, e.g.  ChrootDir.
2009-10-17 15:35:26 +02:00
Alexander Barton
bc1ac7fbc5 ngIRCd release 15~rc1 2009-10-15 10:04:34 +02:00
Alexander Barton
37e950a40c Updated NEWS and ChangeLog files 2009-10-03 16:45:09 +02:00
Alexander Barton
55c04e691d Make sure forwarded CONNECT commands are handled correctly 2009-09-30 16:00:06 +02:00
Alexander Barton
881b9af251 Generate WALLOPS message on operator-generated SQUIT 2009-09-30 16:00:06 +02:00
Alexander Barton
294320ed62 Enable SQUIT command for IRC Operators
This patch enables IRC Operators to use the SQUIT command as specified in
RFC 2812, section 3.1.8 "Squit".

When forwarding SQUIT commands, the server connected to the target will
drop the connection (not the target server itself!).

Please note:

 - the configuration option "AllowRemoteOper" mus be enabled on the
   server disconnecting the target to allow forwarding of SQUIT commands.
 - if the remote server is configured to establish the connection, it
   will just do this; so the disconnect is not permanent in this case!
2009-09-30 16:00:06 +02:00
Alexander Barton
03b70229eb Xcode: added new op.{c|h} to project file 2009-09-30 16:00:06 +02:00
Alexander Barton
9918dfc1d5 Use functions provided by op.c "module"
Local functions Check_Oper() and No_Privileges() have been replaced by
global functions in op.c "module": Op_Check() and Op_NoPrivileges().
2009-09-30 16:00:06 +02:00
Alexander Barton
e46cf64cc1 New "module" op.c/op.h for IRC operator related functions
The new "module" op.c is used to implement functions related to IRC Ops.
At the moment, these two functions are available:

 - Op_Check() to check for a valid IRC Op, and
 - Op_NoPrivileges() to generate "permission denied" messages.
2009-09-30 16:00:06 +02:00
Alexander Barton
113bd34878 Allow forwarding of CONNECT commands.
The syntax of the CONNECT command now is:

  - CONNECT <server-id>
  - CONNECT <server-id> <port>
  - CONNECT <server-id> <port> <target>
  - CONNECT <server-id> <port> <host> <my-pwd> <peer-pwd>
  - CONNECT <server-id> <port> <host> <my-pwd> <peer-pwd> <target>

Note: the configuration option "AllowRemoteOper" mus be enabled on the
target server to allow forwarding of CONNECT commands.
2009-09-30 16:00:06 +02:00
Alexander Barton
4a3e40bc95 Check_Oper(): check origin of forwarded messages instead of server. 2009-09-30 16:00:05 +02:00
Alexander Barton
45b1a45c97 No_Privileges(): handle forwarded messages. 2009-09-30 16:00:05 +02:00
Alexander Barton
7d6de7c352 IRC_SendWallops(): support format string and variable parameter lists. 2009-09-30 16:00:05 +02:00
Alexander Barton
30b584c2e8 CONNECT, DISCONNECT: generate WALLOPS messages 2009-09-30 16:00:05 +02:00
Alexander Barton
eaaf0c3bd5 New function IRC_SendWallops().
Implement new global function IRC_SendWallops() that can be called by
other functions to generate WALLOPS messages to users with +w mode.
2009-09-30 16:00:05 +02:00
Alexander Barton
9a7499af8b Code cleanup of IRC_DISCONNECT(). 2009-09-30 16:00:05 +02:00
Alexander Barton
bce16c2864 Code cleanup of IRC_SQUIT() in preparation to deal with bug #73. 2009-09-30 16:00:05 +02:00
Alexander Barton
926204cacd New local functions Check_Oper() and No_Privileges(). 2009-09-30 16:00:05 +02:00
Alexander Barton
3bf0c6f3b9 Bad_OperPass(): code cleanup. 2009-09-30 16:00:05 +02:00
Alexander Barton
f78b0c61e9 New configuration option "AllowRemoteOper"
Added new configuration option "AllowRemoteOper" to control whether
remote IRC operators are allowed to use administrative commands that
affect this server or not

This commit introduces the configuration variable, but actually no
function is using it. That's up for the next patches to come ...
2009-09-30 16:00:04 +02:00
Florian Westphal
fa09883c72 fix assertion failure in ng_ipaddr.c
when building with debugging enabled, but without ipv6 support,
ngircd dumped core when loading a config file that specified an ipv6
listen address.

ngircd: ng_ipaddr.c:45: ng_ipaddr_init: Assertion `sizeof(*addr) >=
res0->ai_addrlen' failed.
2009-09-26 11:12:47 +02:00
Florian Westphal
affa03b277 configtest: complain when ssl keys are not readable 2009-09-20 23:22:28 +02:00
Alexander Barton
5b1efaee67 Check for sockaddr_in.sin_len and initialize it
Test for sockaddr_in.sin_len and initialize it to the correct value
which some systems (notably Mac OS X) require.

Note: this code path is only relevant when not using getaddrinfo().
2009-09-14 01:23:19 +02:00
Alexander Barton
d5f80b2a8d Always use get{addr|name}info() when available
Both getaddrinfo() and getnameinfo() are now used always when available, and
not only when compiling ngIRCd with support for IPv6.

This not only enables ngIRCd to handle multiple addresses per hostname when
compiled without support for IPv6, but fixes binding ngIRCd to IP addresses
on Mac OS X (and probably other BSD-based systems) as well: these systems
require that sockaddr_in is zeroed out and sockaddr_in.sin_len is set to
sizeof(sockaddr_in) like that:

  src/ipaddr/ng_ipaddr.c, line 54:

        assert(ip_str);
      + memset(addr, 0, sizeof *addr);
      + addr->sin4.sin_len = sizeof(addr->sin4);
        addr->sin4.sin_family = AF_INET;

But this would break all the systems not using sockaddr_in.sin_len, for
example Linux -- so we assume that all these systems provide getaddrinfo()
and use that for now.
2009-09-14 01:07:39 +02:00
Alexander Barton
60fc4d6335 Xcode: add "debug" configuration to project 2009-09-14 00:23:44 +02:00
Alexander Barton
536538968c Fix cb_connserver() to handle aborted outgoing connections
A configured server could have been removed while a connection apptempt
is still in progress. So the cb_connserver() callback has to test if the
server configuration record is still valid.
2009-09-12 00:17:42 +02:00
Florian Westphal
4daf780f01 conn.c: fix more sizeof(..dst_addr) misuse
the wrong sizeof() usage fixed in
d76910ce7b
(conn.c: fix resolver server address backlog) was a bit more
widespread, fix all others, too.
2009-09-11 23:31:46 +02:00
Florian Westphal
ed72bf4ceb resolve.c: fix valgrind 'uninitialized memory' warning
fix the following warning generated by valgrind if ipv6 is enabled:

Syscall param write(buf) points to uninitialised byte(s)
   at 0x4000982: (within /lib/ld-2.9.so)
   by 0x80681A8: Resolve_Name (resolve.c:477)
   by 0x805439F: Conn_Handler (conn.c:1658)
   by 0x804AA7C: main (ngircd.c:331)

The warning is because ng_ipaddr_t can be a union, and only the
necessary parts are initialised.  The callers know what part
of the union is valid, so this is not a bug.
2009-09-11 23:09:11 +02:00
Florian Westphal
d76910ce7b conn.c: fix resolver server address backlog
if more than one ip address is returned for a single host
name, ngircd is supposed to try other addresses in case
connect() to the first address returned fails for some
reason.

Alexander Barton noticed that this did not work at all,
as the additional results were not stored.
2009-09-11 22:55:32 +02:00
Alexander Barton
8fd0e29d46 Fix "implicit conversion shortens 64-bit value" warning
This patch fixes the following gcc warning in our sources:
"implicit conversion shortens 64-bit value into a 32-bit value"
2009-09-11 22:52:12 +02:00
Alexander Barton
bfa48f3448 Xcode: use gcc 4.0 for Mac OS X 10.4 compatibility 2009-09-11 20:19:51 +02:00
Alexander Barton
66c6458ae7 Channel_Mode(): fix return code of function
Fix error handling of Channel_Mode() to return the correct connection
status ("connected"/"disconnected") insted of always returning success.
2009-09-11 00:48:07 +02:00
Alexander Barton
3b37ad334b IRC_SERVER(): code cleanup, remove unneeded variable 2009-09-11 00:41:12 +02:00
Alexander Barton
c191ea53a9 IRC_PASS(): remove unnecessary variable initialization 2009-09-10 11:50:43 +02:00
Alexander Barton
e1598e2670 Conn_Close(): remove unused variable "txt" 2009-09-10 11:49:39 +02:00
Alexander Barton
44acf41cc1 Mac OS X: fix test for packagemaker(1) tool in Makefile 2009-09-10 11:48:14 +02:00
Alexander Barton
933da741c6 Fix --with-{openssl|gnutls} to accept path names
This patch fixes --with-openssl and --with-gnutls and enables both to
accept path names, so that you can use "./configure --with-XXX=/path".
All the other --with-XXX parameters support this already.
2009-09-02 14:28:09 +02:00
Florian Westphal
cf7e19193b do not add default listening port if ssl ports were specified
Cosmo Kastemaa reported that its impossible to create an ssl-only setup,
as ngircd binds to port 6667 by default, even if setting "Ports =".

Only add the default port if _both_ "Ports" and "SSLPorts" are
unspecified.

Fixes bugzilla #98.
2009-08-31 22:08:35 +02:00
Alexander Barton
5f1e43416a Fix LSB header of Debian init script 2009-08-29 23:57:39 +02:00
Alexander Barton
5debe20509 Use AM_SILENT_RULES([yes]), if available
Starting with GNU automake 1.11 "AM_SILENT_RULES([yes])" is available to
make the build process less verbose ("Linux 2.6 style") which helps to
spot warning and error messages.

So we use it if it is available.
2009-08-16 16:08:21 +02:00
Alexander Barton
a7eef6666b Update NEWS and ChangeLog for next release 2009-08-12 14:48:33 +02:00
Alexander Barton
56a8abc253 Updated doc/Platforms.txt 2009-08-04 22:53:38 +02:00
Alexander Barton
21bb2bd658 New script contrib/platformtest.sh
This script analyzes the build process of ngIRCd and generates output
suitable for inclusion in doc/Platforms.txt.
2009-08-04 22:30:59 +02:00
Florian Westphal
bddfd67550 doc/Platforms.txt: ngircd builds on hppa2.0w-hp-hpux11.11 target
Goetz Hoffart reports successful compile on HPUX/HPPA (on ngircd mailing list):

             Target: hppa2.0w-hp-hpux11.11
           Compiler: gcc
     Compiler flags: -g -O2 -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes -fstack-protector -D_XOPEN_SOURCE_EXTENDED
-DSYSCONFDIR='"$(sysconfdir)"'
          Libraries: -lz -lnsl

     Syslog support: yes     Enable debug code: no
   zlib compression: yes           IRC sniffer: no
   Use TCP Wrappers: no        Strict RFC mode: no
   Zeroconf support: no          IRC+ protocol: yes
      IDENT support: no            I/O backend: "poll()"
      IPv6 protocol: no            SSL support: no
2009-07-22 22:06:36 +02:00
Alexander Barton
805bf03490 Client_CheckID(): fix connection information
This patch fixes the following silly log messages:
'ID "XXX" already registered (on connection -1)!'

If the ID is already registered on a local connection, the local
connection ID is printed; and if the ID is connected via a remote
server, "via network" is displayed.
2009-07-17 16:16:04 +02:00
Alexander Barton
63cbc6cd42 Fix return code of Conf_EnableServer()
Conf_EnableServer() only reports success if all required variables,
including host name and port, are set for the specific server.
2009-07-17 14:55:30 +02:00
Florian Westphal
b3cacf86df AUTHORS: update my email address 2009-06-08 12:25:35 +02:00
Florian Westphal
0ef94edad7 add section and rfc number to comment about QUIT error 2009-06-05 01:39:33 +02:00
Florian Westphal
643ae1b48b enforce upper limit on maximum number of handled commands
reported on #ngircd: pasting lots of lines into a channel can kill off
many people on the channel if the read buffer is drained quickly enough
and the client-side TCP can't keep up with the incoming data.

This implements a throttling scheme:
- an irc client may send up to 3 commands per second before a one second
pause is enforced.
- an irc client may send up to 256 bytes per second before a one second
pause is enforced.

After discussion with Alexander Barton, server <-> server links are
treated specially: There is no artificial limit on the number of bytes
sent per second, and up to 10 commands are processed per second before
a pause is enforced.

It may be neccessary to make those limits tuneable to accomondate larger
networks, but for now they are compile time values.
2009-05-25 22:25:18 +02:00
Florian Westphal
9b1c47220f conn.c: fix NumConnections imbalance
New_Server() can call Conn_Close() in its error paths,
but that function decrements the number of current active
connections. Thus we need to increment it earlier.
2009-05-17 21:32:53 +02:00
Florian Westphal
8e2c5816ee SSL/TLS: fix error handling when ssl ctx init for outgoing server link fails 2009-05-17 21:27:27 +02:00
Florian Westphal
f31c3a3aa2 SSL/TLS: fix error path in gnutls ssl ctx allocation 2009-05-17 21:18:04 +02:00
Florian Westphal
b0931f322b manpage: move SSLConnect option to the right section 2009-05-17 01:22:18 +02:00
Florian Westphal
5196e9bcb1 SSL/TLS: remove redundant asserts/ifdefs 2009-05-16 20:48:43 +02:00
Florian Westphal
57aa64e117 SSL/TLS: proper indentation, remove erroneous comment 2009-05-14 00:00:55 +02:00
Alexander Barton
fd7e85b798 Update copyright notice, it's 2009 already! 2009-05-05 17:08:48 +02:00
Alexander Barton
b1852f3029 Updated Debian "changelog" file for ngIRCd 14.1 2009-05-05 13:14:23 +02:00
Alexander Barton
822c1e9265 ngIRCd release 14.1 2009-05-05 12:58:51 +02:00
Alexander Barton
5b4a3eda08 Added start/stop script for Red Hat based distributions
Script contributed by Naoya Nakazawa <naoya@sanow.net>.
2009-05-05 12:50:55 +02:00
Alexander Barton
a83554b572 Renamed contrib/ngircd.sh to contrib/ngircd-bsd.sh 2009-05-05 11:41:26 +02:00
Florian Westphal
627b0b713c security: fix remotely triggerable crash in SSL/TLS code
When a server is running with SSL/TLS support compiled in,
it is trivial to crash the server by sending an MOTD request
via another server in the network.

- ONLY servers without ssl/tls support compiled in are not affected.
  Disabling SSL in the configuration (no ssl listening ports, etc)
  does NOT help.
- servers that are running standalone (i.e., not connected to any
  other servers) are not affected, either.

This affects all ngircd releases since ngircd 13 (earlier versions
have no SSL/TLS support).
2009-05-05 10:21:20 +02:00
Alexander Barton
95428a72ff Fixed "Conflicts:" line in debian/control: missing comma 2009-05-04 11:23:19 +02:00
Alexander Barton
6b83d1740e Debian: build ngircd-full-dbg package
In addition to the "ngircd" and "ngircd-full" packages a new package named
"ngircd-full-dbg" is build: this package contains all the features of the
"full" package but includes debug code and both the --debug and --sniffer
options and the resulting binaries are _not_ stripped.
2009-04-29 02:14:17 +02:00
Alexander Barton
c8bba8e5c3 debian/rules: whitespace fixes 2009-04-29 02:12:56 +02:00
Tassilo Schweyer
37359799eb Fix server list announcement
When ngircd announces the list of currently known servers
to a new (connecting) server, it sent the introducer of
the servers instead of the top server.

Assuming this network:

irc1.example.com
|--irc2.example.com
|    `--irc3.example.com
|         `--irc4.example.com
`--irc5.example.com

When irc4 connects to irc3, irc3 tells irc4 that irc5 was
connected to irc2. (irc2 had introduced irc5 to irc3; but thats
not what ngircd should have sent to the new server).

This also placed users on the wrong servers.
2009-04-26 00:30:49 +02:00
Alexander Barton
4a14fb252d Doxygen: update source code repository link to GIT 2009-04-25 00:53:47 +02:00
David Kingston
9b59f043c8 allow ping timeout quit messages to show the timeout value 2009-04-23 21:39:45 +02:00
Florian Westphal
b545d38ae4 irc-server: do not remove hostnames from info text
that code does not really make sense -- the info
text is freely cofngiureable and des not follow a specific
format.

Also, that "+2" might have caused invalid memory accesses.
2009-04-22 23:15:17 +02:00
Florian Westphal
84eaed6c9a conn-zip: fix error handling
callers of (Un)Zip_Buffer() assume that
the function closes the connection on error.

However, this was not always the case.
2009-04-21 21:00:43 +02:00
Florian Westphal
544b9884f4 remove or translate old comments 2009-04-21 20:58:30 +02:00
Florian Westphal
5e16b6df2d client.c: remove unecessary comments 2009-04-21 20:58:28 +02:00
Florian Westphal
ea041b8838 add const qualifier to pointers where possible 2009-04-21 20:58:23 +02:00
Alexander Barton
68835a1d1a ngIRCd release 14 2009-04-20 11:36:27 +02:00
Alexander Barton
54879b432b Display IPv6 addresses as "[<addr>]" when accepting connections.
With this patch ngIRCd displays IPv6 addresses as "[<addr>]:<port>" when
accepting new connections and later, if no successful DNS lookup could
be made (or DNS is disabled altogether).
2009-04-10 13:22:03 +02:00
Alexander Barton
d9355d53f8 Xcode: #define include __DATE__ in VERSION
Change VERSION to include the __DATE__ when compiling from within Xcode.

When building using "make xcode" or "make osxpkg" VERSION already is defined
to the "real" version number set in configure.in.
2009-04-10 13:08:04 +02:00
Alexander Barton
8c0137a6e0 Fix ChangeLog: Local channels are already implemented in Release 13 2009-04-09 15:17:44 +02:00
Alexander Barton
166ab3925e Fix up last Debian changelog entry 2009-03-30 13:44:04 +02:00
Alexander Barton
1f6a5744f6 ngIRCd release 14~rc1 2009-03-29 17:16:02 +02:00
Alexander Barton
156569d263 Updated NEWS and ChangeLog files 2009-03-29 17:05:37 +02:00
Alexander Barton
c3a8d6a73e Updated Debian/Linux init script
- PidFile, ServerUID and ServerGID are read from actual server configuration
- Exit code and behaviour is more LSB compliant
- New "status" and "test" sub-functions
2009-03-29 16:37:06 +02:00
Dana Dahlstrom
3a7d59c1ac misspelling in ERR_NORECIPIENT reply 2009-03-25 20:44:40 +01:00
Alexander Barton
51b88b12f3 Add missing contributors to AUTHORS file 2009-03-11 11:51:59 +01:00
Florian Westphal
ea35ba74b6 testsuite: add more predefined channels to server config
make sure it creates & and +, and accepts channel names without
a special character (ngircd should treat
'Name = chan' as 'Name = #chan').
2009-03-07 00:30:11 +01:00
Florian Westphal
2d4361d088 allow creation of persistent modeless channels 2009-03-07 00:21:43 +01:00
Florian Westphal
e9e7fc33f1 add and use Channel_IsModeless()
avoid "name[0] == '+'" where possible, having Channel_IsModeless()
makes things much more obvious.
2009-03-07 00:13:25 +01:00
Alexander Barton
c09742c518 Enhance INFO command to report compile time, if available 2009-03-05 16:04:36 +01:00
Alexander Barton
c56ab96270 Update NEWS and ChangeLog files 2009-03-03 17:59:43 +01:00
Alexander Barton
0a9608a26f Channel mode changes: break on error
Don't echo multiple syntax error messages (461) on invalid commands,
but break after the first one.
In addition, this solves corrupted 'Unknown mode "+' messages.
2009-03-03 16:33:40 +01:00
Alexander Barton
dee89c2355 Channel_Mode(): code cleanup (no functional changes) 2009-03-03 15:06:34 +01:00
Florian Westphal
b8c6dd503f TLS/SSL: remove useless error message when ssl connection is closed
When using OpenSSL, the following annoying "error" message was logged whenever
an encrypted connection was shut down in a orderly fashion:
TLS/SSL Connection shutdown: ConnSSL_Read: Unable to determine error

of course, this isn't an error at all.
2009-02-05 23:47:28 +01:00
Florian Westphal
66d6c3c84b update ChangeLog. 2009-02-04 23:33:46 +01:00
Florian Westphal
2fce4667a8 SSL/TLS: clear all ssl realted flags on shutdown
one ssl related flags was not cleared on ssl shutdown.
introduce and use CONN_SSL_FLAGS_ALL to zap them all.
2009-02-04 23:23:12 +01:00
Florian Westphal
c6a43fbaf0 TLS/SSL: fix memory leak when using compressed server links with ssl
commit 6bc2d3d06e
(New connection option CONN_RFC1459) forgot to adjust the ssl bitmasks.

The result is that when a compressed AND encrypted server link goes down
the memory allocated by zlib and the r/w buffers are no longer
free'd as the previous ConnSSL_Free() would then also remove the CONN_ZIP flag
from the flag mask.
2009-02-04 23:01:53 +01:00
Alexander Barton
3be9c477be Fix spelling of log message: "channek" vs. "channel" ... 2009-01-20 17:20:30 +01:00
Alexander Barton
d09094812f Channel key file: store file name and open on each access.
Store the file name of channel key files and reopen them on each access
(on each JOIN command) insted of just storing the file handles.

This eliminates the special requirements (no delete) and makes sure
that always the actual file contents are used in all circumstances.
2009-01-20 17:20:30 +01:00
Alexander Barton
c5000694d1 Support individual channel keys for pre-defined channels.
This patch introduces the new configuration variable "KeyFile" for
[Channel] sections in ngircd.conf. Here a file can be configured for each
pre-defined channel which contains individual channel keys for different
users. This file is line-based and must have the following syntax:

  <user>:<nick>:<key>

<user> and <nick> can contain the wildcard character "*".

Please not that these channel keys are only in effect, when the channel
has a regular key set using channel mode "k"!
2009-01-20 17:20:30 +01:00
Alexander Barton
2c1b6280fa RFC 2812, sec. 3.3.1: really check for the last dot
This fixes commit 5a3128243f and makes the test suite ("make check")
run again without errors.
2009-01-20 16:49:34 +01:00
Florian Westphal
5a3128243f irc.c: reject masks with wildcard after last dot
RFC 2812 says in section 3.3.1 ("Private Messages"):

The mask MUST have at least 1 (one) "." in it and no wildcards
following the last ".".
2009-01-18 00:36:38 +01:00
Florian Westphal
95e8320ca9 irc.c: Fix handling of channels containing dots
commit 2546a13ad2
('Cumulative Message Patch') broke PRIVMSG to channels
containing dots.

Fix this by switching evaluation order:
Check first if the target matches a existing channel and only do a check
for target masks if that failed.

PRIVMSG with host/server masks is described in RFC 2812, section 3.3.1.

Makes one wonder how a server is _really_ supposed to tell the difference
between hostmasks and channel names.

Sigh.
2009-01-18 00:20:38 +01:00
Ask Bjørn Hansen
8f46681bc8 Update ngircd.spec file
- Change Copyright to License
- Update URL
- Make BuildRoot use %{_tmppath} macro
- Add basic BuildRequires
- Compile with zlib and openssl
- Install all docs in standard document location

Signed-off-by: Ask Bjørn Hansen <ask@develooper.com>
2009-01-13 11:01:09 +01:00
Florian Westphal
1c7b9dbe93 remove unneeded LOG_DEBUG when not compiling with DEBUG support
when ngircd is build without DEBUG enabled, LOG_DEBUG messages
are always discarded.

To avoid the extra code, ngircd has a LogDebug() wrapper which
gets removed by the compiler when compiling without DEBUG defined.

Update a few functings which were using the
Log(LOG_DEBUG, .. interface directly without #ifdef DEBUG guards.

   text	   data	    bss	    dec	    hex	filename
 127748	   1900	  28280	 157928	  268e8	ngircd.before
 126836	   1896	  28280	 157012	  26554	ngircd.after
2009-01-10 00:54:07 +01:00
Florian Westphal
0acef7c598 documentation: gnutls does not support password-protected privkeys
already mentioned in man page and sample config file, but for
completeness also document it in doc/SSL.txt.
2009-01-09 21:33:19 +01:00
Alexander Barton
00c8dfa8be Mac OS X: update texts for Mac OS X Installer.app 2009-01-06 17:40:25 +01:00
Alexander Barton
75243ffb37 Xcode: build ngIRCd with IPv6 support on Mac OS X 2009-01-06 17:39:11 +01:00
Alexander Barton
5468ba3744 Xcode: get release number dynamically; new make target "xcode-clean".
- make target "xcode" now detects the release number stored in the
  configure.in file and passes it to Xcode.
- new make target "xcode-clean" which removes all files generated by
  "make xcode" and removes the Xcode build directory.
2009-01-06 16:02:27 +01:00
Alexander Barton
eb159e0a8d Xcode: define TARGET_VENDOR and TARGET_OS 2009-01-06 16:00:15 +01:00
Alexander Barton
df3473c9c1 Add new and missing files to Mac OS X Xcode project 2009-01-06 15:09:39 +01:00
Alexander Barton
a11e895045 Rename Channel_Free() to Free_Channel(), it is a local function 2009-01-05 13:53:33 +01:00
Alexander Barton
175f0af979 Clean up channel allocation table on shutdown/restart.
Silly bug: the condition of a while() loop in the Channel_Exit() function
used the wrong variable and therefore got never executed ...

This bug is in the code since the beginning (see commit bb19cfda in 2002);
shame on me!
2009-01-05 12:58:37 +01:00
Florian Westphal
40a0e9abbe Add Channel_Free().
Central function to free a channel structure and all its resources
(invite/ban lists, topic, ...).
2009-01-05 12:48:48 +01:00
Alexander Barton
0659503afd Clean up (reformat and comment) Delete_Channel() function. 2009-01-04 15:25:07 +01:00
Alexander Barton
18efc7469c Free topic array on channel deletion.
The topic array in the CHANNEL structure must be free()'d before the
channel itself becomes deleted.
2009-01-04 15:22:32 +01:00
Alexander Barton
fd9266df78 Fix spelling in some documents. 2009-01-01 17:56:42 +01:00
Alexander Barton
0e4e22a7a6 Allow pre-defined server local channels ("&"). 2008-12-30 19:23:03 +01:00
Alexander Barton
9d20397470 Spell check and enhance ngIRCd manual pages. 2008-12-30 19:20:09 +01:00
Florian Westphal
307cdce908 man ngircd.conf: line break missing before the SSLConnect description
reported by Christoph Biedl.
2008-12-29 23:34:20 +01:00
Florian Westphal
dc9f42dc3c defines.h: remove MAX_LISTEN_PORTS, MAX_SERVICES
_SERVICES was never used; _LISTEN_PORTS is a leftover from
commit 51ccb5928a
('internal changes needed for future ssl support').
2008-12-27 23:51:52 +01:00
Florian Westphal
a971047bc5 Remove limit on max number of predefined channels.
This resolves Bugzilla Bug 68 ('Too many pre-defined channels configured.')
2008-12-26 01:07:56 +01:00
Florian Westphal
6500d443fc channel.c: constify a few function arguments. 2008-12-26 01:07:52 +01:00
Florian Westphal
d26a283ea9 use %ld as format specifier for posix data types
in the same vein as the earlier commit:
cast posix data types (pid_t, ...) to long and use
%ld as format specifier. This will avoid problems
when sizeof(int) != sizeof(type).

We could also cast to int, but this might truncate the value.
2008-12-26 01:07:13 +01:00
Alexander Barton
4b83a23d9d ngIRCd release 13 2008-12-25 23:18:29 +01:00
Florian Westphal
8a94ec9728 don't print pid_t type with %ld format specifier
Reported by Christoph Biedl:
ngircd[21581]: Running as user irc(39), group irc(39), with PID 140733193409613.

cast pid_t to long to avoid this.
While we are there, cast uid_t and gid_t, too.
2008-12-17 22:55:20 +01:00
Alexander Barton
e5fea5380d Update the date ("Dec 2008") of the manual pages. 2008-12-06 00:20:59 +01:00
Alexander Barton
9a82ca0d6b doc/Platforms.txt: added x86_64/unknown/linux-gnu 2008-12-05 22:35:23 +01:00
Alexander Barton
e573f54b0c doc/Platforms.txt: update list of tested platforms. 2008-12-05 18:11:50 +01:00
Alexander Barton
e070d93f64 doc/SSL.txt: enhance documentation. 2008-12-04 13:20:38 +01:00
Alexander Barton
1519afa391 doc/Services.txt: explain which IRC Services versions are compatible 2008-12-04 11:14:26 +01:00
Alexander Barton
85ce82e504 Testsuite start-server.sh: return correct exit code.
src/testsuite/start-server.sh returns 0 when no errors occurred and the
daemon has been startet and 1 on errors. Always returning 0 is wrong ...
2008-12-03 16:49:55 +01:00
Alexander Barton
83c699d5a5 Make testsuite (getpid.sh) work on OpenSolaris (i386/pc/solaris2.11). 2008-12-03 16:49:17 +01:00
Alexander Barton
56cf95278e doc/Services.txt: document using ngIRCd with IRC Services. 2008-12-02 15:41:57 +01:00
Alexander Barton
d0b2526a01 sample-ngircd.conf: remove now unused CVS "$Id$" 2008-11-22 14:47:01 +01:00
Alexander Barton
7cf9d93aee ngIRCd release 13~rc1 2008-11-21 22:08:23 +01:00
Alexander Barton
ffc5f93ef5 Fix double minus signs in manual pages
This patch fixes the following lintian(1) warning: "Manual page seems
to contain a hyphen where a minus sign was intended. '-' chars are
interpreted as hyphens (U+2010) by groff, not as minus signs (U+002D).
Since options to programs use minus signs (U+002D), this means for
example in UTF-8 locales that you cannot cut&paste options, nor search
for them easily. '-' must be escaped ('\-') to be interpreted as minus."
2008-11-21 21:37:03 +01:00
Alexander Barton
97d97ef5c4 Debian package ("make deb"): fix some lintian(1) warnings 2008-11-21 21:36:59 +01:00
Alexander Barton
2eb564ccaa Change formatting of some log messages
- Fix formatting of some log messages, mostly punctuation.
- cb_Connect_to_Server(): don't use string concatenation, because it
  is not supported by pre-ANSI C compilers ...
2008-11-20 23:50:26 +01:00
Alexander Barton
14baf64f41 Fix pem_passwd_cb(): unused variable "rwflag" (OpenSSL)
This patch fixes the following warning of GCC (version 4.3.2) in
function pem_passwd_cb() when compiling with OpenSSL support and
without debug code:

conn-ssl.c: In function 'pem_passwd_cb':
conn-ssl.c:122: warning: unused parameter 'rwflag'
2008-11-20 23:46:20 +01:00
Alexander Barton
4c113d8850 New configuration option "NoIdent" to disable IDENT lookups
The new configuration option "NoIdent" in ngircd.conf can be used to
disable IDENT lookups even when the ngIRCd daemon is compiled with IDENT
lookups enabled.
2008-11-19 19:11:39 +01:00
Alexander Barton
3243d9ee44 Implement the IRC command "SERVLIST"
The IRC command "SERVLIST" lists all the registered services, see RFC 2811, section 3.5.1.
The syntax is "SERVLIST [<mask> [<type>]]". The parameter <type> is not used by ngIRCd at
the moment, all registered services are of type 0 (which is the default when omitted).
2008-11-19 18:16:26 +01:00
Alexander Barton
672b391523 Updated NEWS and ChangeLog, using NEWS for news only :-) 2008-11-19 11:46:37 +01:00
Alexander Barton
0eda085f1e Create local &SERVER channel and log server messages to it
ngIRCd now creates a server-local channel &SERVER with channel modes
+mnPt (moderated, no messages from outside the channel, persistent and
with the topic locked) and logs all the messages to it that a user with
mode +s ("server messages") receives.

If an IRC operator withdraws the +P ("persistent") mode and the &SERVER
channel is freed because of no members, nothing special happens. The
channel can be recerated any time later and ngIRCd would begin logging
to it again.
2008-11-17 23:27:06 +01:00
Alexander Barton
2cc21caf32 Implement local channels (prefix "&")
This patch implements server-local channels, prefix "&", that are only
visible to users of the same local server and not in the network.

Patch written by Scott Perry (2008-06-04), see:
 - http://arthur.barton.de/cgi-bin/bugzilla/show_bug.cgi?id=87
 - http://arthur.barton.de/cgi-bin/bugzilla/attachment.cgi?id=24&action=view
2008-11-17 21:52:56 +01:00
Alexander Barton
7b69bc2ae8 Added some missing files of GIT tree to distribution archives
The following bits and bytes were not included in distribution archives:
 - contrib: ngindent, ngircd.sh
 - contrib/Debian: ngircd.postinst
 - contrib/MacOSX: preinstall.sh, postinstall.sh
 - doc/src: Doxyfile, header.inc.html, footer.inc.html, ngircd-doc.css
 - src/portab: splint.h
2008-11-13 23:17:32 +01:00
Alexander Barton
7ad167f4c4 Test suite: start two servers and test server-server links
I changed the test suite to start two test servers (on port 6789 and 6790),
so server-server links can be tested as well for which I included the new
test script "server-link-test.e".

In addition the documentation of the test suite (src/testsuite/README) has
been updated and is more complete now.
2008-11-13 22:46:06 +01:00
Alexander Barton
920d0636ff Add conf-ssl.h to "noinst_HEADERS"
conf-ssl.h must be listed in "noinst_HEADERS" so that it becomes included
in distribution archives generated by "make dist" and "make distcheck".
2008-11-13 00:22:25 +01:00
Alexander Barton
54e6a2dce5 Re-add CVE identifiers to ChangeLog.
I'm lame. My last commit removed all the CVE numbers recently added in
commit 598df0758 to the ChangeLog ... shame on me!

See all the CVE entries of ngIRCd at:
<http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=ngircd>
2008-11-13 00:01:07 +01:00
Alexander Barton
b01a9bd864 Updated NEWS and ChangeLog to include 0.12.1 and the development version 2008-11-12 22:34:51 +01:00
Alexander Barton
9f067a059d Connection counter: count outgoing connections as well.
This patch lets ngIRCd count outgoing connections as well as incoming
connections (up to now only outgoing connections have been counted). This
change is required because the Conn_Close() function doesn't know whether
it closes an outgoing connection or not and therefore would decrement the
counter below zero when an outgoing connection existed -- which would
trigger an assert() call ...

Please note that this patch changes the (so far undocumented but now fixed)
behaviour of the "MaxConnections" configuration option to account the sum
of the in- and outbound connections!
2008-11-12 01:26:04 +01:00
Alexander Barton
5a91d62100 Ignore numeric 020 ("please wait while we process your coinnection")
Some servers send the numeric 020 ("please wait while we process your
connection") when a client connects. This is no useful information for
this server, so we simply ignore it :-)
2008-11-11 23:11:49 +01:00
Alexander Barton
3a5b7b63ae GNUTLS: define new API types when installed library is too old
This patch enables ngIRCd to use GNUTLS in really old versions, tested
with version 1.0.16, that don't define the "new" data types ending in
xxx_t. LIBGNUTLS_VERSION_MAJOR isn't defined there as well, so we use
it to test if we must define the new types on our own.
2008-11-11 22:03:11 +01:00
Alexander Barton
9308541e6d Console log: output timestamp (seconds since start) for resolver, too 2008-11-11 22:01:27 +01:00
Alexander Barton
027cf22267 Console log: output timestamp (seconds since start of daemon) 2008-11-10 18:41:19 +01:00
Florian Westphal
125c05fba0 conn-ssl.c: work around gnutls API problems on 64 bit platforms
Alexander Barton reported a compiler warning on 64-bit platforms:
cc1: warnings being treated as errors
conn-ssl.c: In function 'ConnSSL_Init_SSL':
conn-ssl.c:403: error: cast to pointer from integer of
different size

Unfortunately, I couldn't find a real solution; the GNUTLS
API expects 'gnutls_transport_ptr_t' (which is void*),
but the default push/pull functions (send/recv) expect an int.

The only alternative solution is to pass in an address to the
file descriptor, then add send/recv wrappers that expect a pointer.

What a mess[tm].
2008-10-29 23:51:39 +01:00
Alexander Barton
fb19b05e1e GIT: don't ignore cvs-version.{h|new}, because it isn't used any more. 2008-10-29 22:33:03 +01:00
Alexander Barton
34b2f0085d Fix ForwardLookup(): "ISO C90 forbids specifying subobject to initialize"
This patch fixes the following warning of GCC (version 4.3.2) in
function ForwardLookup():

resolve.c: In function 'ForwardLookup':
resolve.c:282: warning: ISO C90 forbids specifying subobject to initialize
resolve.c:284: warning: ISO C90 forbids specifying subobject to initialize
resolve.c:285: warning: ISO C90 forbids specifying subobject to initialize
2008-10-19 20:07:35 +02:00
Alexander Barton
ce2541a826 Fix ConnSSL_LogCertInfo(): unused variable "cred" (GNUTLS)
This patch fixes the following warning of GCC (version 4.3.2) in
function ConnSSL_LogCertInfo() when compiling with GNUTLS support:

conn-ssl.c: In function 'ConnSSL_LogCertInfo':
conn-ssl.c:542: warning: unused variable 'cred'
2008-10-19 20:06:30 +02:00
Alexander Barton
d44a7dac26 Debian: build ngircd-full with support for GNU TLS and IPv6. 2008-10-03 16:45:09 +02:00
Alexander Barton
475ce1e93c Debian: make sure that /var/run/ircd is owned by user "irc". 2008-10-03 16:43:54 +02:00
Alexander Barton
0cba8f362a GIT: Ignore Debian-related generated files.
Added files that become generated while building Debian GNU/Linux
packages of ngIRCd to the .gitignore lists.
2008-10-03 15:50:35 +02:00
Alexander Barton
afd65bc728 Updated config.{guess|sub} to version 2008-01-16. 2008-10-03 15:35:43 +02:00
Alexander Barton
f92a614a35 Enable KICK to be handled from remote servers and from services. 2008-09-23 11:53:16 +02:00
Alexander Barton
ec0b405d9d Respect RFC 1459 compatibility mode when announcing channels (no NJOIN). 2008-09-23 11:53:16 +02:00
Alexander Barton
1d6dcb25c4 Document the server flag "S": SERVICE command is supported. 2008-09-23 11:53:16 +02:00
Alexander Barton
178f9cbdac Announce IRC services in the network.
This patch
 - introduces a new server flag "S" to indicate that the server can handle
   the SERVICE command (on server links),
 - implements the IRC command "SERVICE" for server-server links,
 - uses the "SERVICE" command to announce IRC services when a new
   server connects to it,
 - and fixes the Send_Message() function to let it send messages to
   services using a "target mask".

If the remote server doesn't indicate that it can handle the "SERVICE"
command (it has not set the "S" flag), services are announced as regular
users as before.
2008-09-23 11:53:16 +02:00
Alexander Barton
6356418ae5 Change Introduce_Client() to set the correct client type (user/service). 2008-09-23 11:53:16 +02:00
Alexander Barton
28e9888764 Convert SQUERY to PRIVMSG on RFC 1459 compliant links. 2008-09-23 11:53:16 +02:00
Alexander Barton
3afa0e0658 Don't allow SQUERY to send to "target masks" and channels; only services! 2008-09-23 11:53:16 +02:00
Alexander Barton
3913de3cff Fix PRIVMSG/NOTICE handler (II): keep command when forwarding to channels.
- new function ngt_UpperStr().
- change Channel_Write() to take command name and error flag.
- remove now unneeded function Channel_Notice().
2008-09-23 11:53:15 +02:00
Alexander Barton
91e87a3705 New function ngt_UpperStr() 2008-09-23 11:53:15 +02:00
Alexander Barton
71e9ac486f Fix PRIVMSG/NOTICE handler Send_Message(): don't forward NOTICE as PRIVMSG. 2008-09-23 11:53:15 +02:00
Alexander Barton
d93030ad27 Make real use of the CLIENT_SERVICE client type.
This patch enables ngIRCd to handle IRC services as real services, and not
as "fake users":

  - Set correct client type CLIENT_SERVICE for services,
  - Change log messages to include correct client type,
  - PRIVMSG: allow users to send messages to services,
  - Send services nick names to other servers (as users).

Please note that this patch doesn't announce services as services in the
network, but as regular users (as before). Only the local server knows
of services as services (see LUSERS command, for example). It is up to
one of the next patches to fix this and to introduce the SERVICE command
in server to server communication.

The propagation of services as regular users between servers doesn't limit
the functionality of the IRC services and will be the fallback for servers
that don't support "real" services propagation in the future.
2008-09-23 11:53:15 +02:00
Alexander Barton
4e125fb67c Allow IRC services to change their nick names. 2008-09-23 11:53:15 +02:00
Alexander Barton
33f32dbd67 New function Client_TypeText() and Destroy_UserOrService().
Client_TypeText() is used to get correct naming ("Client", "Service", ...)
for log messages, and Destroy_UserOrService() is used to correctly destroy
user and services clients.
2008-09-23 11:53:15 +02:00
Alexander Barton
74aac88dbf Send_Message(): really enforce target client type. 2008-09-23 11:53:14 +02:00
Alexander Barton
0337b1ac1e sample-ngircd.conf & ngircd.conf(5): document "ServiceMask" option. 2008-09-23 11:53:14 +02:00
Alexander Barton
02d7623074 Allow ngIRCd to detect services connected to an "virtual services server".
Introduce a new configuration variable "ServiceMask" in SERVER blocks to
define a mask matching nick names that should be treated as services.
Regular servers don't need this parameter (leave it empty, the default),
but you should set it to "*Serv" when connection ircservices, for example.

This patch allows ngIRCd to detect services, it doesn't change the
functionality: you only get different log messages ;-)
2008-09-23 11:51:16 +02:00
Alexander Barton
c5342fb467 Centralize logging functions in Introduce_Client(). 2008-09-23 11:47:17 +02:00
Alexander Barton
557be8c56b Get rid of INTRO_INFO structure again: we don't need it at all!
All the required information is already stored in the CLIENT structure
of new new connection, so pass this to Introduce_Client() and don't
invent an unneeded new structure ...
2008-09-23 11:47:17 +02:00
Alexander Barton
687784d276 Announce_User(): support RFC 1459 compatibility mode. 2008-09-23 11:47:17 +02:00
Alexander Barton
92603f7c80 Introduce_Client(): send MODES in RFC 1459 mode, too. 2008-09-23 11:47:17 +02:00
Alexander Barton
d070ec08ab numeric.c: whitespace fixes ... 2008-09-23 11:47:17 +02:00
Alexander Barton
a60465be3e Server links: detect RFC 1459 mode direct after SERVER command
This patch allows ngIRCd to detect right after receiving the SERVER command
from the peer whether the RFC 1459 compatibility mode must be used or not.
And it fixes the announcement of users during establishing new server links
with such peers.
2008-09-23 11:47:17 +02:00
Alexander Barton
14048c4717 Send and handle NICK+USER commands for user registration (RFC 1459).
This patch enables ngIRCd to deal with NICK and USER commands following
RFC 1459 to register new clients, and to send these commands instead of one
full NICK command as specified in RFC 2813 on connections that are in RFC
1459 compatibility mode.

Can be useful for e. g. IRC services that simulate a RFC 1459 server.
2008-09-23 11:47:17 +02:00
Alexander Barton
f199d63724 New function IRC_WriteStrServersPrefixFlag_CB() using a callback function. 2008-09-23 11:47:17 +02:00
Alexander Barton
4f759d8113 New function Introduce_Client() to announce new local and remote users. 2008-09-23 11:47:17 +02:00
Alexander Barton
6bc2d3d06e New connection option CONN_RFC1459.
This new connection option CONN_RFC1459 indicates that the peer on this
link only supports the IRC protocol as defined in RFC 1459 and that the
compatibility mode (e. g. for outgoing commands like NICK) should be used.
2008-09-23 11:47:17 +02:00
Alexander Barton
a5735f68d7 New global function Conn_SetOption(). 2008-09-23 11:47:16 +02:00
Alexander Barton
13f1d57e84 USER: servers and services can alter user information after registration.
This is required to do RFC 1459 style user registration on server links,
and is used by some services packages, too. See RFC 1459 section 4.1.3.
2008-09-23 11:47:16 +02:00
Alexander Barton
068d43352d NICK: allow servers and services to use RFC 1459 syntax (2 parameters).
This patch allows servers and services to call the NICK command using the
syntax defined in RFC 1459 to register new users, with only two parameters.
See section 4.1.2.

Useful for some services packages, which emulate this protocol.
2008-09-23 11:47:16 +02:00
Alexander Barton
e56bd8ff89 Whitespace fixes: remove trailing tabulator characters. 2008-09-23 11:47:16 +02:00
Florian Westphal
2fce881d96 conn-ssl.c: don't append a newline to ConnSSL_GetCipherInfo 2008-09-15 12:25:54 +02:00
Florian Westphal
ef3327d372 TLS/SSL support: code changes.
This adds the required code to enable ssl/tls support
during compile and run time, respectively.
2008-09-13 15:10:32 +02:00
Florian Westphal
ebf5edfd87 TLS/SSL support: documentation. 2008-09-13 15:10:08 +02:00
Florian Westphal
bdd44eb0ab TLS/SSL support: core files.
Contains support for both OpenSSL and GNU TLS.
Certificate Authentification is not yet supported.
2008-09-13 15:08:11 +02:00
Florian Westphal
c997e04325 Fix handling of MaxConnections option
Config option claimed to be 'number of connections' but in reality this
was treated as 'largest file descriptor allowed'.

This also fixes another bug in New_connection, where the
ng_ipaddr_tostr_r error path was missing a return statement.
2008-08-30 15:37:19 +02:00
Alexander Barton
2c2c93e311 Include "mcheck.h" when using mtrace(). 2008-08-18 23:27:56 +02:00
Alexander Barton
41a23d20e4 SECURITY: Fixed a message handling bug which could crash the daemon.
Some message targets could lead to a NULL pointer dereference and therefore
could crash the daemon (denial of service).
(cherry picked from commit e493ad2d30ff80bca2556cde2212e367cb006517)
2008-08-17 17:37:36 +02:00
Alexander Barton
c769cbecb6 Enable GNU libc "memory tracing" when compiled with debug code.
This patch lets ngIRCd activate "memory tracing" of the GNU libc when
compiled with debug code (configure: --enable-debug) and the functionality
is available on the system.
(http://www.gnu.org/software/libc/manual/html_node/Allocation-Debugging.html)
2008-08-13 16:00:57 +02:00
Alexander Barton
707cc42dec New make target: "osxpkg" to create an Mac OS X installer package.
This patch adds a new make target, "osxpkg", to the main Makefile which
gereates a Apple Mac OS X installer package of ngIRCd. The packagemaker(1)
project bundle is stored in contrib/MacOSX/ngIRCd.pmdoc.
2008-08-12 17:30:38 +02:00
Alexander Barton
30f1ed211d Clean up Mac OS X Xcode environment.
- Remove obsolete contrib/MacOSX/cvs-version.h
- Change SDK to 10.4
2008-08-11 17:39:26 +02:00
Alexander Barton
415ebc04a2 doc/Platforms.txt: added Debian GNU/Hurd, "i686/unknown/gnu0.3" 2008-08-10 18:08:09 +02:00
Alexander Barton
598df07584 Added CVE identifiers to ChangeLog.
see http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=ngircd
2008-08-10 14:26:51 +02:00
Alexander Barton
e4b4bb5e71 Remove de.barton.ngircd.plist on "make clean", its a generated file. 2008-08-06 19:47:53 +02:00
Alexander Barton
dfc3de131c Make ngIRCd compile and run on NeXTSTEP 3.3 and OPENSTEP 4.2
by Steven D. Blackford <kb7sqi@aol.com>:

"I wanted to let you know that I've done a quick port of ngircd-0.12.0 for
NEXTSTEP3.3/OPENSTEP4.2. There wasn't a lot of changes required to get it
to compile clean, but I did make the necessary changes so that I didn't
have to use -posix flag. The NeXT has a pretty buggy POSIX implementation
so I always try to work around it. :-)
Anway, here's the changes required to get it to compile."
2008-08-01 16:21:16 +02:00
Alexander Barton
338c643250 Merge branch 'master' of git://ngircd.barton.de/ngircd 2008-07-31 14:36:39 +02:00
Alexander Barton
5af91fc005 Install /Library/LaunchDaemons/de.barton.ngircd.plist into $(DESTDIR) 2008-07-31 14:35:22 +02:00
Florian Westphal
0ca8156efd FAQ: add entry about /OPER and OperCanUseMode 2008-07-31 14:13:06 +02:00
Alexander Barton
ccbbd7d1a5 GIT: added src/testsuite/message-test to ignore list. 2008-07-27 20:51:37 +02:00
Alexander Barton
e5cf73b9ee Fix Validate_Args(): unused parameter "Idx" and "Req"
This patch fixes the following error message of GCC (tested with version
4.3.0) when not compiling ngIRCd in "strict RFC" mode:

parse.c: In function "Validate_Args":
parse.c:341: error: unused parameter "Idx"
parse.c:341: error: unused parameter "Req"
2008-07-27 20:35:01 +02:00
Alexander Barton
5df56111c4 message-test: Disable two tests using "localhost" as host name
Some operating systems, for example OpenBSD and OpenSolaris, use
"localhost.<domain>" instead of just "localhost" for 127.0.0.1, so
the "message-test" using "localhost" failed on such systems.

Don't have an idee how to make this work on all platforms ... :-/

So I simply disabled the two affected tests to make the testsuite
run on OpenBSD and OpenSolaris again.
2008-07-27 18:03:13 +02:00
Alexander Barton
e5174c629c Fix Send_Message(): "lastCurrentTarget" may be used uninitialized
This patch fixes the following warning of GCC 4.3.1:

irc.c: In function "Send_Message":
irc.c:315: error: "lastCurrentTarget" may be used uninitialized in
this function
2008-07-27 17:16:41 +02:00
Alexander Barton
3358ad07d7 Fix t_diff(): declaration of 'div' shadows a global declaration
This patch fixes the following GCC warning message:
irc-info.c:422: warning: declaration of 'div' shadows a global declaration
2008-07-27 15:58:06 +02:00
Alexander Barton
318c8b238b Cosmetic whitespace and line length fixes, mostly in Send_Message(). 2008-07-27 15:50:51 +02:00
Alexander Barton
f8381aafb4 Added "message-test" to Makefile, so it is distrubuted and run. 2008-07-27 14:45:04 +02:00
Brandon Beresini
d4eb55c79f Cleaned up PRIVMSG and NOTICE patches. 2008-07-27 01:23:20 +02:00
Brandon Beresini
2546a13ad2 Cumulative Message Patch 2008-07-27 01:23:04 +02:00
Alexander Barton
b92a7627f3 Don't allow empty channel names ("#") in strict RFC mode.
This closes Bug #88.

Patch proposed by Eric <egrunow@ucsd.edu>, but with wrong length
comparision: please note that Channel_IsValidName() checks the name
INCLUDING the prefix, so the test must be length<=1!
2008-07-22 13:24:14 +02:00
Alexander Barton
258143897c Return 461 (syntax error) on "JOIN :" and "PART :"
Up to this patch ngIRCd did not return any result (GIT master) or a badly
formated 403 (":irc.server 403 test  :No such channel" [note the two
spaces!], branch-0-12-x) on the above commands, this patch changes the
behaviour to reflect ircd 2.11 which returns 461 in both cases.
2008-07-22 13:18:19 +02:00
Alexander Barton
477f2fd9e7 Channel_Join(): Code cleanup. 2008-07-22 13:07:57 +02:00
Alexander Barton
e37080400b Added more supported and tested platforms to doc/Platforms.txt. 2008-07-21 14:59:28 +02:00
Alexander Barton
3f01324160 Fixes to misc-test: accept "localhost.<domain>" as well as "localhost"
Some operating systems, for example OpenBSD, use "localhost.<domain>"
instead of "localhost", so the "who-test" expecting "localhost" failed
on such systems.

(Please see 149859c5fecc..., which fixes this for the who-test already)
2008-07-21 13:40:22 +02:00
Alexander Barton
4467d127c2 Revert "dpkg-shlibdeps: warning: dependency on libnsl.so.1 [..]"
- Solaris needs both -lsocket _and_ -lnsl
- A/UX needs -lUTIL

"... which totally sucks because we'd link libnsl on Linux, too
(where its not needed at all). So, we have to figure out how to tell
autocrap to NOT put -lnsl there unless it exports a symbol we need.
This also means that [...] has to be reverted (or done properly)."
					-- Florian Westphal @ #ngircd

This reverts commit 2b14234abc.
2008-07-09 18:36:40 +02:00
Florian Westphal
2b14234abc dpkg-shlibdeps: warning: dependency on libnsl.so.1 [..]
(they use none of its symbols).

So, rip out that AC_CHECK_LIB cruft, pointed out by Christoph Biedl.

If there are platforms that really need that we should
only link when we actually use these libraries.
2008-07-09 18:33:48 +02:00
Alexander Barton
b945726ac2 Merge autogen.sh changes
Merge commit 'alex/master'
2008-06-27 06:07:41 +02:00
Alexander Barton
da160d020e autogen.sh: Don't set AUTO{CONF|MAKE}_VERSION and WANT_AUTO{CONF|MAKE}
On some systems (for example Gentoo Linux, FreeBSD, and OpenBSD), these
variables are used to select which version of GNU automake and autoconf
to use, but we shouldn't depend on a specific version -- instead we
should use the "system default". So probably it is up to the user to
set these variables accordingly to set up some wrapper scripts of his
operating system distribution.
2008-06-27 05:55:45 +02:00
Alexander Barton
b95345731e autogen.sh: correctly test for and export ACLOCAL variable 2008-06-27 05:44:04 +02:00
Eric Grunow
71562ebe57 Translated comments from German to English 2008-06-16 13:58:56 +02:00
Alexander Barton
258e39e89f Fix GCC warnings for possibly uninitialized variables in IRC_JOIN
This patch fixes the following two warnings of GCC 4.2.4:

irc-channel.c: In function "IRC_JOIN":
irc-channel.c:185:
 warning: "lastkey" may be used uninitialized in this function
irc-channel.c:185:
 warning: "lastchan" may be used uninitialized in this function
2008-06-16 13:18:03 +02:00
Alexander Barton
e142c50ae6 GIT: added src/src/config.h.in~ to ignore list. 2008-06-11 16:02:06 +02:00
Alexander Barton
a84f7dcee5 Allow mixed line terminations (CR+LF/CR/LF) in non-RFC-compliant mode
Up to now ngIRCd accepted CR+LF as well as a single CR or LF in "non RFC
compliant" mode (the default). But ngIRCd became confused when it received
data containing mixed line endings (e. g. "111\r222\n333\r\n").

This patch enables ngIRCd (in "non RFC compliant" mode) to detect CR+LF,
CR, and LF as equally good line termination sequences and to always end the
command after the first one detected.

Some clients (for exmaple Trilian) are that ... broken to send such mixed
line terminations ...

First patch proposed by Scott Perry <scperry@ucsd.edu>,
Thanks to Ali Shemiran <ashemira@ucsd.edu> for testing!
2008-06-11 16:00:38 +02:00
Alexander Barton
8644cbf197 Don't allow stray \r or \n in command parameters
If ngircd receives an input line like "COMMAND arg\nIRRELEVANT\r\n",
"arg\nIRRELEVANT" is passed as an argument to COMMAND. This can lead
to output like:

:ngircd.test.server 322 nick #chan 1 :
topicwithprecedingnewline
:ngircd.test.server 322 nick #nxtchan 1 :
[..]

Worse, this allows clients to piggyback irc commands, e.g.
"TOPIC #a :test\n:fake!~a@nonexistant JOIN :#a\r\n", which
causes the client to receive a JOIN command during /LIST output.

Bug reported by Scott Perry, first patch by Florian Westphal.
2008-05-30 14:58:25 +02:00
Alexander Barton
4c121f277d GIT: ignore de.barton.ngircd.plist, it is a generated file. 2008-05-28 03:00:22 +02:00
Alexander Barton
12f5b0579b ngircd.init: use LSB logging functions, if available. 2008-05-28 01:50:18 +02:00
Alexander Barton
6f7b669bec --configtest: return non-zero exit code if there are errors 2008-05-28 00:31:20 +02:00
Alexander Barton
951314cb79 Handle_Buffer(): code cleanup.
Both callers ignore the return code of this function, so get rid of it,
but make sure that the client is disconnected on errors.
2008-05-26 23:38:32 +02:00
Alexander Barton
d360871394 Conn_Handler(): cleanup code, add/translate comments.
In addition, the "timeout" variable has been removed because it is
unnecessary today: Handle_Buffer() handles all the data it can handle,
and io_dispatch() returns immediately when new data is available. So
we don't have to double-check but better sleep. Pointed out by Florian.
2008-05-26 21:38:27 +02:00
Scott Perry
b90f71ca2a Use strtok_r instead of strchr in IRC_JOIN.
This patch does significant cleanup on the join code by using strtok_r
instead of mangling strchr to parse channel names and keys in parallel when
a JOIN command contains a list of channels and keys.

Also adds an strtok_r implementation to libportab.
2008-05-26 21:20:03 +02:00
Alexander Barton
d060e90de0 Mac OS X LaunchDaemon script: log messages to /Library/Logs/ngIRCd.log 2008-05-26 17:48:02 +02:00
Florian Westphal
73f7201ab3 configure.in: don't check for "obvious" standard functions.
Drop checks for the following C standard functions:
malloc, memmove, memset, realloc, strchr, strcspn, strerror, strstr.

Rationale: These are standard K&R/C89 functions, no point in
''making sure they exist''.
2008-05-25 20:16:25 +02:00
Alexander Barton
956bbe2c28 Reset client idle time on NICK, JOIN, and PART 2008-05-24 21:50:54 +02:00
Florian Westphal
e19f7a8c19 Remove ListenIPv4/ListenIPv6 options.
Use "Listen = list,of,addresses" instead.
2008-05-19 14:34:48 +02:00
Florian Westphal
4ed2cb1a02 make Listen parameter a comma-seperated list of addresses.
this also obsoletes ListenIPv4 and ListenIPv6 options.
If Listen is unset, it is treated as Listen="::,0.0.0.0".

Note: ListenIPv4 and ListenIPv6 options are still recognized,
but ngircd will print a warning if they are used in the config file.

Also, some plattforms require that ai_socktype
is set in the getaddrinfo() hints structure.
2008-05-19 14:27:35 +02:00
Jari Aalto
818a206a42 Add option aliases -V (for --version) and -h (for --help).
This patch adds -h and -V short options (to complement the usage).

It is based on a patch attached to Debian bug #466063, see
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=466063>.

Idea by Jari Aalto <jari.aalto@cante.net>,
patch adapted by Alexander Barton <alex@barton.de>.
2008-05-18 16:19:41 +02:00
Florian Westphal
1d9067b019 Add FAQ entry for 'Where is the log file'? 2008-05-15 15:41:23 +02:00
Brandon Beresini
5d87f6ba80 Add tests for MOTD, VERSION, TIME, USERHOST
The misc-test.e file is also somewhat reorganized and commented here.

Patch from Brandon Beresini, Bryan Caldwell and Dana Dahlstrom.
2008-05-15 11:13:45 +02:00
Alexander Barton
7cf187c09f Updated list of authors (AUTHORS file) 2008-05-13 16:21:14 +02:00
Alexander Barton
9486bc7465 Update master development branch
- use "dev" instead of "HEAD" as "version number",
- update ChangeLog and NEWS to reflect the 0.12.0 release.
2008-05-13 16:12:15 +02:00
Alexander Barton
d02b083543 Merge commit 'aad49bd260494878aed6795c7a897ad1d28c3082' 2008-05-13 12:14:14 +02:00
Scott Perry
70254a5553 This patch implements a (maybe) compliant WHOWAS command.
It is hard to test this in the test suite because we 1) shouldn't rely on
previous tests populating WHOWAS and 2) don't connect a user for more than 30
seconds.

Also makes WHOWAS return ERR_NONICKNAMEGIVEN_MSG as implied by RFC.
2008-05-12 18:56:31 +02:00
Florian Westphal
b1d38de4d2 If bind() fails, also print ip address and not just the port number. 2008-05-12 18:46:55 +02:00
Alexander Barton
aad49bd260 Update ngIRCd manual pages
- Update timestamp,
- enhance some phrasing,
- and fix "Passive" ([Server]) formatting.
2008-05-11 17:08:46 +02:00
Alexander Barton
d90cc7add0 GIT: ignore symbolic links to tests in testsuite directory
Added symbolic links to new tests (invite-test, join-test, and kick-test)
to .gitignore file.
2008-05-11 15:20:46 +02:00
Alexander Barton
149859c5fe Fixes to who-test: accept "localhost.<domain>" as well as "localhost"
Some operating systems, for example OpenBSD, use "localhost.<domain>"
instead of "localhost", so the "who-test" expecting "localhost" failed
on such systems.
2008-05-11 15:17:22 +02:00
Florian Westphal
d9c26f3aeb ng_ipaddr.h must include netinet/in.h.
compile on FreeBSD 5.4 failed with:
./../ipaddr/ng_ipaddr.h:34: error: field `sin4' has incomplete type

Reported and tested by Jefferson S Almeida.
2008-05-10 21:49:51 +02:00
Brandon Beresini
0510bbe958 Removed space after # so that Cygwin's version of expect recognizes comments. 2008-05-09 21:54:47 +02:00
Ali Shemiran
12cd554af1 Fix secret channel information leak
/who on a secret channel that the user is not a member of
now returns proper RPL_ENDOFWHO_MSG instead of nothing.
2008-05-09 21:47:31 +02:00
ashemira@ucsd.edu
5cf5ba31eb Added Cygwin uid kludge. (verified working) 2008-05-08 13:04:25 +02:00
Eric Grunow
75b719a0c8 Anglified and improved comments in channel.c and channel.h
[Dana Dahlstrom: repair tab/space conversion in patch]
2008-05-08 03:15:04 +02:00
Alexander Barton
4e56e5341f Implement IRC commands SERVICE, SERVLIST, and SQUERY as dummy functions
SERVICE, SERVLIST, and SQUERY are required by RFC 2812 (it states in
section 3 that "all commands described in this section MUST be implemented
by any server for this protocol." -- So we implement them without (much)
actual functionality ...
2008-05-05 18:06:43 +02:00
Florian Westphal
3895b42d1b Add invite-test.e to test suite. 2008-05-05 16:12:41 +02:00
Dana Dahlstrom
6c81ffaece Tests for the INVITE command. 2008-05-05 16:12:41 +02:00
Dana Dahlstrom
97cc58fb13 Invite: prefix last argument with colon when necessary. 2008-05-05 16:12:41 +02:00
Dana Dahlstrom
c63d8fd051 tests for JOIN and various replies
Brandon Beresini sent me a patch yesterday adding tests for JOIN under
various circumstances, which I believe he worked on with Bryan Caldwell
and Ali Shemiran. I made a few modifications; the result is below.
2008-05-05 16:12:41 +02:00
Bryan Caldwell
3d8eda9c86 Allow KICK to handle comma-delimited lists (of channels, nicks).
includes test cases.

[fw@strlen.de:
	- move code around to avoid duplication
	- use const where possible
	- integrate test case]
2008-05-05 16:12:41 +02:00
Florian Westphal
3283d275ba Invite: Send RPL_AWAY to client sending the invite if target is away. 2008-05-05 15:52:41 +02:00
Dana Dahlstrom
faf9b6ea16 Fixes to who-test: accept any ident, escape some '*' flags.
This prevents who-test.e from failing when ngircd
is performing ident lookups and an ident server is running.
2008-05-05 15:40:00 +02:00
Florian Westphal
452fb28394 IRC_INVITE: coding style cleanup. 2008-05-05 15:39:54 +02:00
Florian Westphal
0428a1c4ea Constify some of Channel_Kick()s arguments. 2008-05-05 15:38:47 +02:00
Florian Westphal
98a8ea105c constify Client_Search() argument. 2008-05-05 15:38:43 +02:00
Rolf Eike Beer
83bfdddf99 Allow IRC ops to ignore channel limits when joining
Allow IRC ops to ignore any channel limit (bans, invite only etc.) when they
want to join a channel.
2008-05-05 14:45:28 +02:00
Alexander Barton
2a790861a1 Handle 1-character messages terminated with CR or LF correctly
Code cleanup and fix for Bug #83, "ngIRCd chokes on 1-character messages" in
function Handle_Buffer(): the buffer is now correctly cleared when ngIRCd
receives 1-character messages terminated with either CR or LF (in violation
to RFC 2812, section 2.3 "Messages", 5th paragraph).
2008-05-02 02:14:15 +02:00
Alexander Barton
4e507881f3 On AIX (for example) socklen_t is defined in sys/socket.h
On AIX and probably other systems socklen_t is defined in sys/socket.h,
so we have to include it here explicitly (tested by Florian).
2008-05-01 20:25:39 +02:00
Florian Westphal
f7c2e8223f Always enable modeless channels.
Modeless channels (+channels) are described in RFC 2811;
so my modifications to
530112b114
('Add support for modeless channels')
to disable +channels for --strict-rfc configurations
were wrong. This reverts those changes.
2008-05-01 18:08:07 +02:00
Alexander Barton
60acc62af7 Prevent GIT to complain about opless-channel-test link 2008-05-01 16:31:13 +02:00
Ali Shemiran
530112b114 Add support for modeless channels
Add support for modeless channels (+channels).

[fw@strlen.de:
 - integrate test cases
 - don't support +channels when compiled with --strict-rfc
 - do not set +o mode for channel creator
 - force +nt mode when channel is created ]
2008-05-01 15:55:12 +02:00
Alexander Barton
6cfc56064e Updated NEWS and ChangeLog for ngIRCd 0.12.0-pre2. 2008-04-29 15:34:15 +02:00
Alexander Barton
4a81367dac --configtest: fix missing whitespace at "ConnectIPv4" option. 2008-04-29 15:27:44 +02:00
Alexander Barton
8c425945a2 --enable-ipv6: fix indentation in ./configure --help output. 2008-04-29 15:26:20 +02:00
Alexander Barton
bb6ee46892 Merge branch 'master' of git://git.breakpoint.cc/fw/ngircd-fw 2008-04-29 15:15:28 +02:00
Florian Westphal
9194319399 Testsuite: remove erroneous ConfUID setting in config file.
The config file for ngircds test suite contained obsolete
ConfUID/ConfGID settings, causing ngircd to needlesly complain when
started as non-root (which is hopefully the _normal_ case...)
2008-04-29 13:32:29 +02:00
Alexander Barton
33b1204349 Get rid of cvs-version.* and CVSDATE definition.
(cherry picked from commit b187fac244)
2008-04-25 00:14:11 +02:00
Alexander Barton
09968ee843 Documentation: get rid of some more references to CVS, switch to GIT.
(cherry picked from commit 6e9389b86c)
2008-04-25 00:13:07 +02:00
Alexander Barton
523a6fad09 Report ERR_NOTONCHANNEL when trying to part a channel one is not member of.
When trying to part a channel ("PART #channel") the client is not member of
the daemon now correctly reports the numeric ERR_NOTONCHANNEL (442) insted
of ERR_NOSUCHCHANNEL (403).
2008-04-24 23:52:54 +02:00
Alexander Barton
54b17fc201 Channel_Part(): Code and comment cleanup. 2008-04-24 23:47:33 +02:00
Alexander Barton
25f48a2a34 IRC_PART(): code and comment cleanup. 2008-04-24 23:46:59 +02:00
Florian Westphal
22fa782be7 IPv6: Add config options to disabe ipv4/ipv6 support.
This also enables ipv6-only setups.
2008-04-21 00:45:19 +02:00
Alexander Barton
2f6d7a649c Don't include doc/CVS.txt in distribution archive, use doc/GIT.txt now!
(cherry picked from commit a8e0eb62e9)
2008-04-20 17:37:21 +02:00
Alexander Barton
7df90846e1 Synchronized branch-0-12-x (ngIRCd 0.12.0-pre1) with master.
(cherry picked from commit 4ea2932967)
2008-04-20 16:20:53 +02:00
Alexander Barton
92a9092208 Updated NEWS and ChangeLog for upcoming 0.12.0-pre1 release. 2008-04-20 15:48:49 +02:00
Alexander Barton
a0efcdccfa Updated copyright notice to read "2001-2008". 2008-04-20 15:48:22 +02:00
Alexander Barton
012aeca32b Added make target "testsuite"
This make target runs the testsuite located in src/testsuite without running
alle the other tests that "make check" would run.
2008-04-20 14:52:00 +02:00
Alexander Barton
c4a505d3a8 Fixed "xcode" make target (used to build ngIRCd with Mac OS X Xcode) 2008-04-20 14:50:46 +02:00
Florian Westphal
8df445316a Channel_Mode: Remove duplicate code.
Incidentially, this doesn't even change the
generated code...
2008-04-19 16:58:00 +02:00
Florian Westphal
11af32466f Channel_Mode: change order of if (set) and if (client) check. 2008-04-19 16:51:42 +02:00
Florian Westphal
5538115537 Channel_Mode: Re-indent switch.
No functional changes were made.
2008-04-19 16:45:31 +02:00
Florian Westphal
b8643477ba Channel_Mode: check return type of Invite/Ban Add/Del function 2008-04-19 16:17:11 +02:00
Florian Westphal
796dcf6a62 Channel_Mode: unify 'b' and 'I' switch/case handling. 2008-04-19 14:16:17 +02:00
Florian Westphal
6b0c094809 Channel_Mode: Unify Del_Invite and Del_Ban handler 2008-04-19 14:12:06 +02:00
Florian Westphal
b36fc3b095 Constify Lists_MakeMask argument and return type. 2008-04-19 14:11:25 +02:00
Florian Westphal
2dd51a98e4 Channel_Mode: Unify Add_Invite and Add_Ban handler 2008-04-19 14:02:54 +02:00
Alexander Barton
761ae2b1a4 Enable more compiler warnings when using Xcode. 2008-04-13 23:43:12 +02:00
Alexander Barton
87cae1465b GIT should ignore user preferences files inside Xcode projects.
Added filter for GIT to ignore Xcode user preferences files (*.mode1v3 and
*.pbxuser) which are automatically generated inside the project bundle when
opened in Xcode.
2008-04-12 23:29:58 +02:00
Alexander Barton
b7135ea76a Updated Xcode project file. 2008-04-12 23:27:11 +02:00
Florian Westphal
248f8e0b70 Convert CVS commands to their git equivalents.
Also mention that patches should be sent to the mailing list.
2008-04-12 21:51:15 +02:00
Alexander Barton
7b33424c13 Added "portabtest" binary to .gitignore file in src/portabtest/. 2008-04-09 19:46:26 +02:00
Alexander Barton
7c82cc236b Include Mac OS X Xcode project in distribution archives. (Part 2)
I forgot to include the new Makefile.am in contrib/MacOSX/ngIRCd.xcodeproj/ ...
2008-04-09 19:24:22 +02:00
Alexander Barton
307f8abd74 Include Mac OS X Xcode project in distribution archives.
Oops, it has not been included since ... ages??
2008-04-09 19:09:23 +02:00
Alexander Barton
bc63064d5c Moved .cvsignore files to .gitignore
Since we are using GIT starting from now, I converted all the
.cvsignore files to .gitignore files.
2008-04-09 18:54:52 +02:00
Florian Westphal
be844d74d3 Fix client.c sparse warnings.
client.c:72:6: warning: symbol 'Max_Users' was not declared. Should it be static?
client.c:72:21: warning: symbol 'My_Max_Users' was not declared. Should it be static?
2008-04-04 23:22:06 +02:00
Florian Westphal
637d739285 io.c: kill select FD_SETSIZE sanity check in io_library_init.
We already have way too many.
2008-04-03 23:20:26 +02:00
Florian Westphal
66e68de16a io.c: fix select FD_SETSIZE check when using epoll as io backend 2008-04-03 23:20:22 +02:00
Florian Westphal
7f44a2ad1c io.c: try to cut down the number of ifdefs.
consolidate backend-specific helpers and
add empty statinc inle stubs in the ifndef case
to let the compiler remove the functions at compile time.
2008-03-27 16:53:39 +01:00
Florian Westphal
abb1abeb77 Do not exit unconditionally if config file cannot be opened
ngircd will exit if the config file cannot be opened. While
thats okay if ngircd starts up for the first time, it isn't
when we are re-reading the config file after a /REHASH or SIGHUP.
2008-03-26 21:31:13 +01:00
Alexander Barton
ab1f48a346 Fix #include's: search log.h locally, include string.h. The latter is required because we include conn.h, which includes resolve.h, which includes ng_ipaddr.h, which contains a macro using strlcpy() ... 2008-03-11 15:42:58 +01:00
Florian Westphal
feb31e4200 IPv6 support.
all references to struct sockaddr/in_addr have been
removed from src/ngircd.
libngipaddr (in src/ipaddr/) hides all the gory details.
See src/ipaddr/ng_ipaddr.h for API description.
2008-02-26 23:50:35 +01:00
Alexander Barton
c31ad221a6 Updated ChangeLog to include 0.11.1. 2008-02-26 23:49:33 +01:00
Rolf Eike Beer
44cdf1b1ca Fix sending of JOINs between servers.
This does hit only operators that join a channel with at least 2 servers active in the net
the server the oper connects to sends "channel^Go" to the other servers
the other server first searches for the channel and then strips the modes from the channel name
he has to do the other way round: first strip and then check the channel name.
2008-02-26 23:49:33 +01:00
Florian Westphal
e710e8ae37 Channel_Mode cleanups
- better indentation
- move answering request into seperate function.
2008-02-26 23:49:33 +01:00
Alexander Barton
89ba1bdcba LaunchDaemon plist for Mac OS X/Darwin launchd. 2008-02-26 23:49:33 +01:00
Alexander Barton
0250acc50b Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X. 2008-02-26 23:49:33 +01:00
Alexander Barton
ec80cc99c6 Added new test files to Xcode project. 2008-02-26 23:49:33 +01:00
Alexander Barton
5147b675cb Removed the SQUIT test for now, actually we don't support it yet. 2008-02-26 23:49:33 +01:00
Alexander Barton
ddecfcd831 Implemented IRC commands INFO, USERS (dummy), and SUMMON (dummy). 2008-02-26 23:49:33 +01:00
Dana Dahlstrom
2f71fbb2a1 Include flags in RPL_WHOREPLY messages.
RPL_WHOREPLY messages generated by IRC_WHO don't include flags (*,@,+)
that should appear according to this description:

http://www.mishscript.de/reference/rawhelp3.htm#raw352

Other IRC servers do include the flags.

Modify who-test.e to expose missing flags,
modify ngircd-test.conf to accommodate who-test.e, and fix
irc-info.c to correct these problems.
2008-02-26 23:49:33 +01:00
Dana Dahlstrom
1784180bf3 Don't send trailing space in MODE messages
Under some circumstances ngIRCd currently issues a channel MODE message
with a trailing space after the last parameter, which isn't permitted by
the grammar in RFC 2812 section 2.3.1:

http://tools.ietf.org/html/rfc2812#section-2.3.1

The following patch modifies mode-test.e to expose this, and modifies
irc-mode.c to correct it.
2008-02-26 23:49:33 +01:00
Florian Westphal
634ef8c131 IRC_JOIN cleanups.
- put sending of mode and forwarding of JOIN to other clients
 into seperate function.
- put sending of topic/channel names into seperate function.
- put access check into seperate function.
- translate/remove remaining german comments.
- stop if JOIN to a channel in a list (JOIN #a,#,b,#c...) fails
(This doesn't change the behaviour: skip-to-next-channel-on-error
did never work as intended)
2008-02-26 23:49:33 +01:00
Florian Westphal
4d152b771e Make IRC_WHO also search username/servername/hostname.
Dana Dahlstrom reported that IRC_WHO did not follow
RFC 2812, Section 3.6.1. Specifically:

- IRC_WHO did not send "G" flag instead if "H" if client was away
- did not search username/servername/hostname etc. if argument
  was not a channel.

Fix all of the above and tidy things up a bit.
Also add IRC_WHO test script contributed by Dana.
2008-02-26 23:49:33 +01:00
Dana Dahlstrom
c634303765 Remove duplicate Channel_FirstChannelOf().
noticed there's a way to make the loop
slightly more elegant.

[fw@strlen.de: Extra () to silence gcc.]
2008-02-26 23:49:33 +01:00
Florian Westphal
cb0d594e61 Make Channel_Part name and reason parameters 'const'. 2008-02-26 23:49:33 +01:00
Florian Westphal
000a227a74 Updated NEWS to reflect ChangeLog. 2008-02-26 23:49:33 +01:00
Dana Dahlstrom
6bd35bf090 Implement RFC 2812 handling of "0" argument to JOIN
The students in my software-engineering class are writing IRC clients in
Java, and I'm running ngIRCd as a sandbox for them to play in. We
noticed ngIRCd doesn't obey the "JOIN 0" command specified in RFC 2812:

   JOIN 0             ; Leave all currently joined
                      channels.

http://tools.ietf.org/html/rfc2812#section-3.2.1
I believe the following patch addresses this. Cheers!

[fw@strlen.de: put it into a seperate function]
2008-02-26 23:49:33 +01:00
Florian Westphal
3022d7cff3 Don't use Client_Type after command has been processed.
This caused a read from already free'd memory, if the processed
command (IRC_QUIT) calls Client_Destroy.
2008-02-26 23:49:33 +01:00
Alexander Barton
f86ce17f1c Updated NEWS to reflect ChangeLog. 2008-02-26 23:49:33 +01:00
Florian Westphal
42db159d26 Fix wrong strncpy usage if CVSDATE defined
Hello_User() used strncpy with overlapping src/dest.
Use memmove instead.
2008-02-26 23:49:33 +01:00
Florian Westphal
59b19ea6a3 This adds support for sending NOTICEs to a channel.
[also see Bug #70 in ngircd bugzilla].

Based on a patch by Fabian Schlager <fabian.schlager@gmail.com>.
2008-02-26 23:49:33 +01:00
Florian Westphal
4add9c29ed [Parser]: Fix minor sparse warnings
parse.c:56:9: warning: symbol 'My_Commands' was not declared. Should it be static?
parse.c:107:9: warning: symbol 'My_Numerics' was not declared. Should it be static?

Also move handling of numerics into a seperate helper function.
2008-01-13 16:12:49 +00:00
Alexander Barton
d1364ab488 Updated ChangeLog to reflect changes in 0.10.x and 0.11.x branches. 2008-01-07 23:08:14 +00:00
Alexander Barton
56256535c5 Updated Debian changelog [from 0.10.x; 0.11.x] 2008-01-07 23:06:24 +00:00
Alexander Barton
35b6f3997c Document NoDNS configuration option. 2008-01-07 23:02:29 +00:00
Florian Westphal
463c5cb7c5 IRC_PART could reference invalid memory. 2008-01-07 11:42:00 +00:00
Alexander Barton
7548aa089c Remove entry about ngircd failing on Linux 2.4:
ngircd can now fall back to select. [from 0.11.x]
2008-01-02 22:47:58 +00:00
Alexander Barton
478a8c01f9 Updated NEWS and ChangeLog files. 2008-01-02 11:31:48 +00:00
Florian Westphal
61e6b5c0aa [Resolver]: Use dotted-decimal IP address if hostname is >= 64 2008-01-02 11:03:29 +00:00
Florian Westphal
91a6fffaa0 io_event_disable: return if event-to-disable is already off 2008-01-02 10:29:51 +00:00
Florian Westphal
2ce5b734bd kqueue: check for EV_ERROR in .flags
if kevent() returns events, check for EV_ERROR in event flags, too.
2007-12-27 18:25:26 +00:00
Florian Westphal
f99f9a8f02 Fix format arg: ListenAddress was printed instead of Bind address. 2007-12-13 01:30:16 +00:00
Florian Westphal
4715ccf9ca Fix format string in error path: didn't print strerror(errno) 2007-12-13 01:05:01 +00:00
Florian Westphal
8974e90552 implement '/STAT u' (uptime) 2007-12-11 11:29:43 +00:00
Florian Westphal
2fe13f0a45 Fix fmt string: int, not long 2007-12-07 21:19:01 +00:00
Florian Westphal
20ce56cc5b include <arpa/inet.h> inside tool.h
In file included from hash.c:24:
../tool/tool.h:27: warning: `struct in_addr' declared inside parameter list
2007-11-25 18:42:37 +00:00
Florian Westphal
47a0379e2b remove ip-string from Conf_Server struct
struct Conf_Server stored the ip address to connect to
in dotted-decimal notation; but we only need this for connect()
so long-time storage isn't necessary.
2007-11-23 16:28:37 +00:00
Florian Westphal
37563537a9 document new "Bind" server config option in changelog. 2007-11-23 16:28:05 +00:00
Florian Westphal
82d32ffb28 bind ListenAddress for outgoing connections
ngircd would always use INADDR_ANY for outgoing connections;
which might not be desirable. Added new [Server] option
"Bind" to set source ip.
2007-11-23 16:26:03 +00:00
Alexander Barton
024588dbe7 Funktions to handle numerics sent to the server. 2007-11-21 12:20:32 +00:00
Alexander Barton
47ca178a21 Introduce option to configure the maximum nick name lenth in ngircd.conf
- New configuration option "MaxNickLength" to specify the allowed maximum
  length of user nick names. Note: must be unique in an IRC network!
- Enhanced the IRC+ protocol to support an enhanced "server handshake" and
  enable server to recognice numeric 005 (ISUPPORT) and 376 (ENDOFMOTD).
  See doc/Protocol.txt for details.
2007-11-21 12:16:33 +00:00
Alexander Barton
12db0bdc4f Re-added doc/SSL.txt to distribution -- got lost somewhere!? 2007-11-20 21:39:35 +00:00
Alexander Barton
53b98fd7e9 Fixes the wrong logging output when nested servers are introduced
to the network as well as the wrong output of the LINKS command.
2007-11-20 20:02:40 +00:00
Alexander Barton
c7d4d85666 Remove some bogus files from project ... 2007-11-19 23:38:59 +00:00
Alexander Barton
4659dae6eb Update Mac OS X Xcode project file for Xcode 3.
Allow building of ngIRCd using Xcode 3 without running ./configure.
2007-11-19 22:11:36 +00:00
Alexander Barton
68f896eee0 Adjust test suite to be usable on HP/UX 11.11 :-) 2007-11-18 15:07:16 +00:00
Alexander Barton
06bfb3adfb Fix code to compile using K&R C compiler and ansi2kr again. 2007-11-18 15:05:35 +00:00
Florian Westphal
2f305331a1 add tiny note about ngircd using syslog(3) by default. 2007-11-15 01:03:29 +00:00
Florian Westphal
ad7361dfe0 if ngircd doesn't run chrooted, it tries to chdir
to the users working directory (as returned by getpwuid()).
Failing to chdir to that directory isn't an error; so
log with LOG_INFO and prefix the message with "Notice".
2007-11-15 01:03:01 +00:00
Florian Westphal
e47c9d750f Document NoDNS Option in changelog 2007-10-25 11:03:02 +00:00
Florian Westphal
001c00b273 New config option NoDNS: disables all DNS queries. 2007-10-25 11:01:19 +00:00
Florian Westphal
b861f536b2 configtest would still print "-1" for MaxConnections, MaxConnectionsIP and MaxJoins
if any of those values was set to 0.
2007-10-24 00:48:41 +00:00
Alexander Barton
877bcc55f2 Updates NEWS to reflect changes in CVS HEAD 2007-10-14 14:17:32 +00:00
Alexander Barton
8f162f4e17 Fixed propagation of channel mode 'P' on server links. 2007-10-14 12:08:57 +00:00
Alexander Barton
089ca21b3d Xcode project: include manual page template files, not generated pages. 2007-10-14 11:25:45 +00:00
Alexander Barton
137a139112 Updated Mac OS X project file for Xcode. 2007-10-14 10:37:20 +00:00
Florian Westphal
b160f574de fix doc and manpage wrt. MaxConnections, MaxConnectionsIP and MaxJoins values 2007-10-13 20:45:11 +00:00
Florian Westphal
d223b587e4 accoring to comments in the code, MaxConnections, MaxConnectionsIP and MaxJoins
options allow setting values < 0 -- this isn't the case. Comments adjusted.
2007-10-13 19:11:06 +00:00
Alexander Barton
77939c382d Updated preferred automake version to 1.9. Only set preferences if not
already defined by some environment variables.
2007-10-07 13:02:15 +00:00
Alexander Barton
f586052f2b Made pointer to the mailing list more prominent. 2007-10-04 15:18:48 +00:00
Alexander Barton
d4ed056147 Numeric 317: implemented "signon time" (displayed in WHOIS result). 2007-10-04 15:03:55 +00:00
Alexander Barton
9021ea2070 Updated documentation ("Passive" option, for example). 2007-10-04 10:14:52 +00:00
Florian Westphal
640367e886 we now support /WALLOPS 2007-08-02 10:16:28 +00:00
Florian Westphal
4b9e52eb4d implement /WALLOPS as described in RFC 2812, section 4.7. 2007-08-02 10:14:26 +00:00
Alexander Barton
69081851ac SECURITY: Fixed a severe bug in handling JOIN commands, which could
cause the server to crash. Thanks to Sebastian Vesper, <net@veoson.net>.
2007-07-31 18:56:13 +00:00
Florian Westphal
efcca62a35 last fix accidentially broke reconnect timer. 2007-07-21 18:46:28 +00:00
Florian Westphal
cd65e0a56e Don't connect to a server if a connection to another server within the same group
is in progress.
2007-06-28 15:13:38 +00:00
Florian Westphal
2275add327 Add new server config option to disable automatic connect. (Tassilo Schweyer) 2007-06-28 05:15:12 +00:00
Alexander Barton
fd1091541b Updated documentation to include changes of ngIRCd 0.10.2. 2007-06-13 14:32:13 +00:00
Florian Westphal
5675be4cd9 fix compile /w gcc 2.95 (reported by Tassilo Schweyer) 2007-06-11 20:06:46 +00:00
Alexander Barton
f1486e6a53 Updated config.guess and config.sub. 2007-05-26 10:44:12 +00:00
Alexander Barton
22a9ed6694 Add note to INSTALL document. 2007-05-20 22:37:05 +00:00
Alexander Barton
ddf56cbe5f Updated ChangeLog. 2007-05-17 23:38:14 +00:00
Alexander Barton
255edf7eab Reworked read and write buffer handling, introduced WRITEBUFFER_SLINK_LEN. 2007-05-17 23:34:24 +00:00
Alexander Barton
5930a29197 Zip_Flush(): close the connection in all error cases. 2007-05-17 15:16:47 +00:00
Florian Westphal
07d8da60de array_start() cannot legally return NULL if array_length() > 0 --> use assert(). 2007-05-17 14:46:14 +00:00
Alexander Barton
44afe042d1 Make Zip_Flush() more graceful. 2007-05-17 13:49:49 +00:00
Florian Westphal
a073bc89c4 there is no need to treat servers differently than clients on the read side. 2007-05-17 12:39:25 +00:00
Florian Westphal
63e89ceb21 make needlesly global function Conn_Write static. 2007-05-09 13:21:11 +00:00
Florian Westphal
09416f36bf remove ZBUFFER constants and increase max buffer size of server links 2007-05-09 08:55:14 +00:00
Florian Westphal
508b55126f fix compressed server links 2007-05-02 12:34:30 +00:00
Alexander Barton
9f65979979 2007 :-) 2007-04-09 01:24:05 +00:00
Alexander Barton
2e34ddae53 Updated documentation. 2007-04-08 11:39:08 +00:00
Florian Westphal
09deb857ce - change return type of Conn_InitListeners to unsigned
- remove minor whitespace damage
2007-04-04 21:52:12 +00:00
Florian Westphal
8c14d397ba put parentheses around argument 2007-04-03 22:08:10 +00:00
Florian Westphal
99eab1e216 if we can't bind a socket we now Log the port number, too. 2007-02-21 11:06:06 +00:00
Florian Westphal
c93d089736 return false instead of NULL in error path 2007-01-29 21:13:26 +00:00
Alexander Barton
429f85b77a Remove Client_DestroyNow() to keep semantik "every CONNECTON has a CLIENT". 2007-01-23 16:07:19 +00:00
Florian Westphal
ea2a4b3370 fix broken IO_DEBUG build 2007-01-19 13:52:54 +00:00
Florian Westphal
f9b9850662 io_event_add: return if eventtype is already registered. 2007-01-18 00:25:26 +00:00
Florian Westphal
1b852fce72 add support for predefined-channel configuration of k and l modes 2006-12-29 14:09:48 +00:00
Alexander Barton
82aaffe55d Added "html" directory to CVS ignore list (it is generated by doxygen). 2006-12-28 14:12:45 +00:00
Alexander Barton
40199e0b56 distclean: remove "html" folder. 2006-12-28 14:04:28 +00:00
Alexander Barton
95b7dbcc18 Updated documentation, refer to all the supported IO APIs. 2006-12-28 13:53:19 +00:00
Alexander Barton
43f8d149bb added "portabtest" binary to list of files to ignore. 2006-12-28 13:34:43 +00:00
Alexander Barton
949a4ef793 Added .cvsignore files to hide generated files from CVS. 2006-12-28 13:20:07 +00:00
Alexander Barton
f74781647a array_free(): enable debug code only when DEBUG_ARRAY is #define'd. 2006-12-28 12:53:41 +00:00
Alexander Barton
5c78230283 New configure option "--without-select"; when usin epoll() IO API include
support for select() as well by default and fall back on runtime when needed.
2006-12-26 16:00:45 +00:00
Alexander Barton
ee568cc444 Only "fiddle" with /etc/ngircd in "configure" stage. 2006-12-26 14:44:40 +00:00
Alexander Barton
2d9a3ec484 Added LSB compliant header. 2006-12-26 14:43:46 +00:00
Alexander Barton
262d945284 Fixed typo in #ifdef which tests if this header is already included or not. 2006-12-25 22:53:52 +00:00
Alexander Barton
f6ce2d557a Customize manual pages to reflect the actual installation location of files. 2006-12-25 16:13:26 +00:00
Florian Westphal
4243cae985 register io handler before creating new local client structure 2006-12-25 01:11:12 +00:00
Florian Westphal
40226d26b2 revert to last good revision again 8-/ 2006-12-17 23:04:45 +00:00
Florian Westphal
d2f7d3087d do not call Conn_Close when io_event_create fails 2006-12-17 22:55:07 +00:00
Florian Westphal
3f1e03edd9 fix possibe buffer-off-by one 2006-12-17 22:52:43 +00:00
Florian Westphal
23e7f7f0dd don't call Resolve_Shutdown() when io_event_create fails 2006-12-17 22:50:51 +00:00
Alexander Barton
f36746a4d0 Updated ChangeLog/NEWS to reflect release of ngIRCd 0.10.1. 2006-12-17 21:00:30 +00:00
Florian Westphal
8cb0e3af68 removed errouneous FD_SETSIZE limit when not using select() 2006-12-16 22:48:34 +00:00
Florian Westphal
eb3ddace46 add PredefChannelsOnly option to man page 2006-12-11 22:07:09 +00:00
Florian Westphal
5040d56489 minor cleanup 2006-12-07 22:24:14 +00:00
Florian Westphal
fb0fbe908d remove unused function Channel_PCount 2006-12-07 22:23:39 +00:00
Florian Westphal
fa7bb2790a moved invite/ban lists to channel structure 2006-12-07 17:57:20 +00:00
Florian Westphal
5877bca4bc fix RPL_LOCALUSERS_MSG (%ld -> %lu) 2006-12-02 14:24:36 +00:00
Florian Westphal
37602d1523 Log(LOG_DEBUG, .. -> LogDebug() 2006-12-02 14:10:48 +00:00
Florian Westphal
a09034563a predefined channels MUST start with '#', but this is not very intuitive,
since # is also used as a comment character in ngircd.conf. Thus
we prefix the name with '#' if it is missing.
2006-11-20 19:32:07 +00:00
Alexander Barton
5b35b101f2 Fixed validation of server names containing digits. 2006-11-10 10:05:00 +00:00
Florian Westphal
058d3085a9 New configuration option "PredefChannelsOnly": if set, make
all JOINs to-non existants channel return ERR_BANNEDFROMCHAN_MSG,
restricting users to those channels defined in the config file.
2006-11-05 13:03:46 +00:00
Alexander Barton
74883f57da Added OpenBSD/ppc to list of tested platforms. 2006-10-08 14:09:16 +00:00
Florian Westphal
018e351630 -Whitespace Damage; Client_OperCount(), Client_UnknownCount(), Client_MyServerCount() return unsigned long 2006-10-07 10:40:52 +00:00
Florian Westphal
6e105bf87e channel maxusers now unsigned long 2006-10-06 21:32:58 +00:00
Florian Westphal
61966a6088 add const qualifier to Hash() and Matche() Arguments 2006-10-06 21:23:47 +00:00
Florian Westphal
27c96632f1 Client_IsValidNick: no need to strcpy. 2006-10-06 19:57:56 +00:00
Florian Westphal
4108e16be6 Channel_Join was severely broken. 2006-10-05 18:26:54 +00:00
Alexander Barton
4e02bdc322 Update info text of local server after re-reading configuration. 2006-10-03 10:59:40 +00:00
Alexander Barton
ca5e09865e Removed an unused variable -- but where did it come from!? Strange ... 2006-10-03 10:28:38 +00:00
Florian Westphal
fb0c7ad252 add test for strcspn. 2006-10-02 21:57:13 +00:00
Florian Westphal
d8950c5dd0 cleaned up Channel_IsValidName (now uses strcspn()) 2006-10-02 21:55:49 +00:00
Alexander Barton
257312b102 Changed Numerics 265 and 266 to follow ircd 2.11.x "standards". 2006-10-01 19:13:32 +00:00
Alexander Barton
27d947fb7d Allow PASS syntax defined in RFC 1459 for server links, too.
Removed client status CLIENT_GOTPASSSERVER.
2006-10-01 19:05:00 +00:00
Alexander Barton
bed98979dc Enhanced ISUPPORT message (numeric 005). 2006-10-01 19:03:05 +00:00
Alexander Barton
bddb4914b4 Updated files from ngIRCd 0.10.0. 2006-10-01 17:23:36 +00:00
Florian Westphal
4c6c6ecf0e array_get: no need to multiply again. remove unneeded checks. remove array_free_wipe(). 2006-09-30 21:49:46 +00:00
Florian Westphal
a2f5a05ff8 io_close_poll()s closing brace mysteriously disappeared... fixed. 2006-09-19 18:21:30 +00:00
Florian Westphal
639eb40035 Added support for the /dev/poll i/o interface. 2006-09-17 10:41:06 +00:00
Florian Westphal
0d6f9d4e3e simplify io_library_init* 2006-09-16 16:47:27 +00:00
Florian Westphal
147de9dfa9 add support for the poll() interface 2006-09-16 15:00:09 +00:00
Florian Westphal
f6e729443e cleanup 2006-09-16 14:49:26 +00:00
Florian Westphal
e426c131c7 fix embarassing fileptr leak 2006-09-16 12:22:09 +00:00
Alexander Barton
b9661ae65d Updated autoconf helper scripts to version as of 2006-07-02. 2006-09-11 18:19:29 +00:00
Florian Westphal
035f7fb2fe only test for stack smashing protector if we are using gcc;
use -fstack-protector-all for the test to make sure the guard variable is added.
2006-09-09 17:07:39 +00:00
Alexander Barton
1b2c228de5 Updated documentation. 2006-08-29 23:59:35 +00:00
Florian Westphal
4d7d1d23be fix gcc 4.1 -fstack-protector detection. 2006-08-13 18:11:18 +00:00
Florian Westphal
e2aacff7d4 s/Log(LOG_DEBUG/LogDebug(/ , translated comments, etc. 2006-08-12 11:58:21 +00:00
Florian Westphal
0eccdbc137 -whitespace damage 2006-08-12 11:56:24 +00:00
Florian Westphal
939ee6a39b simplify Resolve_Read(). 2006-08-12 11:54:23 +00:00
Alexander Barton
8423b89996 Updated platform list once more ... 2006-08-07 07:45:45 +00:00
Alexander Barton
7d87318b04 Updated platform list. 2006-08-07 07:29:30 +00:00
Florian Westphal
83caef4598 if compiling without -DDEBUG, make LogDebug 'static inline' so gcc optimizes it away. 2006-08-05 09:16:21 +00:00
Florian Westphal
7378860aea check if compiler supports inline keyword. 2006-08-05 08:58:16 +00:00
Alexander Barton
6eb3f3055d Added support for Solaris 11. 2006-08-05 00:15:28 +00:00
Alexander Barton
c888c81adf Synchronized documentation with branch-0-10-x ... 2006-08-03 14:37:29 +00:00
Alexander Barton
fac4682212 Updated debian changelog. 2006-08-02 09:53:54 +00:00
Alexander Barton
47026e14ce Don't assert() when a pre-defined channel has no topic. 2006-07-24 22:54:09 +00:00
Alexander Barton
63626449f8 Flag the format parameter of LogDebug() as "unused" when not compiling with
debug code to avoid gcc warnings. Added some documentation comments.
2006-07-23 23:23:45 +00:00
Alexander Barton
184eb1c54b Removed unused variable "ret" when using the select() API. 2006-07-23 23:11:44 +00:00
Alexander Barton
5ce6bf28d1 Removed (theoretically) division by zero; reformated some code. 2006-07-23 23:05:20 +00:00
Alexander Barton
f1f94f07e1 Validate "ServerName" variable. 2006-07-23 16:42:45 +00:00
Alexander Barton
c8fd051e06 Updated documentation. 2006-07-23 15:47:26 +00:00
Alexander Barton
3e8978d836 Allow DIE to send a message to all locally connected clients. Closes bug #48. 2006-07-23 15:43:18 +00:00
Alexander Barton
9a2d4eef44 "Enhanced" debug message for Handle_Write(), only print when data in buffer. 2006-07-23 15:22:56 +00:00
Alexander Barton
0d5fc770d3 Output some debug messages only if DEBUG_ZIP is #define'd. 2006-07-23 15:19:20 +00:00
Alexander Barton
5590f8624b Don't include conn.h, conn-func.h is enough. 2006-07-23 14:55:40 +00:00
Alexander Barton
fdc7ae22e9 Updated CVS URLs; enhanced documentation a little bit. 2006-07-23 12:43:15 +00:00
Alexander Barton
179d61c588 Updated some patch names on Arthur. 2006-07-23 12:19:57 +00:00
Alexander Barton
47e581e453 Updated copyright notice ;-) 2006-07-23 12:07:33 +00:00
Alexander Barton
65573d7a07 Updated autoconf helper scripts. 2006-07-23 12:03:14 +00:00
Alexander Barton
155056f386 Added ngindent. 2006-07-23 11:34:32 +00:00
Florian Westphal
3833f8aae3 remove fd from io_event structure 2006-07-12 19:27:12 +00:00
Florian Westphal
161340d486 ALIGN_XXX( v ) macros now leave v alone if it was already aligned. 2006-07-01 22:11:48 +00:00
Alexander Barton
e9e1fa459b Sorted channel modes alphabetically. 2006-06-15 20:28:15 +00:00
Alexander Barton
581f5479a2 Detect the Avahi "howl-compatibility" as well as Howl itself. 2006-05-17 16:44:14 +00:00
Alexander Barton
00ab67dcdb The third parameter of bind() is of type "socklen_t", not "int". 2006-05-12 11:53:04 +00:00
Alexander Barton
dd3a3bc603 Use some more specific data types (e. g. pid_t vs. int), make "SPLint" happy :-) 2006-05-10 21:24:01 +00:00
Florian Westphal
0a3f562f36 make splint complain less... 2006-05-10 17:33:36 +00:00
Florian Westphal
9dfd42a7e6 disabled most (rather annoying) debug messages using DEBUG_ARRAY / DEBUG_IO defines 2006-05-09 17:02:40 +00:00
Alexander Barton
a65eb347ec Removed kqueue bug fix (never released), rephrased some internal changes,
and added "time shift" bug fix.
2006-05-09 15:45:30 +00:00
Alexander Barton
2af87e9152 Handle time shifts backwards gracefully. 2006-05-09 14:49:08 +00:00
Florian Westphal
d0045afb09 kqueue now tested on NetBSD3.0, FreeBSD6 and Darwin7.9.0 2006-05-07 11:07:13 +00:00
Florian Westphal
1f5bdaec84 kqueue fix. 2006-05-07 10:55:43 +00:00
Florian Westphal
185004cb30 kqueue support was completely broken; seemed to work on FreeBSD just because of sheer luck. 2006-05-07 10:54:42 +00:00
Florian Westphal
4a2eea2939 minor cleanup, removed unneeded check in safemult_sizet 2006-05-07 10:52:47 +00:00
Alexander Barton
6d3686e73d Send invite and ban lists only once and not repeatedly for every channel. 2006-04-30 21:31:43 +00:00
Florian Westphal
5d0ba011c7 Fix Connection Pool resizing. 2006-04-29 16:19:46 +00:00
Florian Westphal
87f4b1c6f6 Client_GetFromConn() removed and replaced with new function Conn_GetClient() 2006-04-23 10:37:27 +00:00
Florian Westphal
8067bab106 changes some comments, minor cleanup 2006-04-23 10:33:37 +00:00
Alexander Barton
097c7bd741 Fix up ngt_TrimStr() once more ... :-/ 2006-04-09 12:53:07 +00:00
Alexander Barton
c7bd9da446 Mostly whitespace fixes. 2006-04-09 12:27:23 +00:00
Alexander Barton
3d0ab6bd2e Added maintainer-clean-local target to purge generated Makefiles. 2006-04-08 16:35:03 +00:00
Florian Westphal
bebfbedf3f fix ngt_TrimStr(), fix format string 2006-03-24 23:25:38 +00:00
Alexander Barton
cba9270845 ngt_TrimStr(): code cleanup. 2006-03-22 08:05:10 +00:00
Florian Westphal
2a9ffe7037 use strlcat return value; don't call time() repeatedly. 2006-03-18 22:27:09 +00:00
Florian Westphal
4000e01b28 corrected return value 2006-03-16 20:14:16 +00:00
Florian Westphal
68d3d36dd6 removed silly if (foo) { if (foo){ }} statement 2006-03-16 19:56:34 +00:00
Florian Westphal
eedfc35bbc s/gehoert// 2006-03-11 10:43:49 +00:00
Florian Westphal
d39d3ec4b9 Client_RegisterWhowas(): call time() only once 2006-03-11 10:33:30 +00:00
Alexander Barton
79dfd60a0c Don't use "awk" directly, instead use $(AWK) variable. 2006-03-11 01:48:50 +00:00
Alexander Barton
29ad5e0d94 Moved now local prototype of Client_New() to C file, renamed it to
Init_New_Client() and cleaned up some code and comments.
2006-03-11 01:37:31 +00:00
Florian Westphal
7e8ac0afcf Client_New() not used outside client.c -> static 2006-03-10 20:25:29 +00:00
Florian Westphal
93df629b69 changed connection structure to array-api 2006-02-16 19:21:57 +00:00
Florian Westphal
66060dbce9 new Function: LogDebug() 2006-02-08 17:33:28 +00:00
Florian Westphal
0701afedee removed Resolve_SUCCESS() Macro and Res_Stat->sucess boolean (no longer used/needed) 2006-02-08 15:24:10 +00:00
Florian Westphal
a17745d6d7 Make connid same as connection fd. 2006-02-08 15:20:21 +00:00
Florian Westphal
1249acfdba removed obsolete "int Conn_MaxFD" 2006-02-02 21:00:21 +00:00
Florian Westphal
c8fb6a2258 simplify IRC_Show_MOTD() 2006-01-27 17:19:58 +00:00
Alexander Barton
7215737038 Enhanced documentation. Use "default" port 6667 in the example for server links. 2006-01-09 11:03:35 +00:00
Alexander Barton
6eb2e37234 Added some documentation for --with-XXX options of the configure script. 2005-12-30 22:43:23 +00:00
Alexander Barton
fb9707de98 Added test if the stress-test expect script itself completes without errors. 2005-12-30 22:13:21 +00:00
Alexander Barton
db9afbbf0e Modified expect script to work with servers having IDENT support. 2005-12-30 22:12:28 +00:00
Florian Westphal
e1b9409e63 add FAQ entry about epoll(): Function not implemented error 2005-12-09 21:14:56 +00:00
Florian Westphal
4b2f966b7e Fix Bugzilla #64 -- ngicrd did not reconnect to other servers after failed forward dns lookup. 2005-12-09 09:26:55 +00:00
Alexander Barton
a293088027 Make clear that "IO backend: select" is not a request but a C API function. 2005-12-06 22:37:50 +00:00
Alexander Barton
bd043449f2 Don't remove doc/src on "make distclean". 2005-11-29 20:59:57 +00:00
Alexander Barton
0570e13cac Minor whitespace fixes. 2005-11-21 16:31:30 +00:00
Alexander Barton
6b21249151 Remove direct call of Conf_UnsetServer(): it's already indirectly called
by Conn_Close() a few lines above.
2005-11-21 15:06:37 +00:00
Alexander Barton
4f8d646e2a Adjusted ChangeLog for ngIRCd release 0.9.2. 2005-10-31 21:40:17 +00:00
Alexander Barton
ac55a80d9f Updated autoconf helper scripts. 2005-10-15 13:16:52 +00:00
Alexander Barton
bc09a3e487 Changed Handle_Write() to not close sockets itself but to call Conn_Close. 2005-10-11 19:29:23 +00:00
Alexander Barton
ff218617db gcc 4: "warning: declaration of 'dup' shadows a global declaration". 2005-09-24 17:06:54 +00:00
Florian Westphal
b65358b17c avoid 2nd time() call in Check_Servers(), improve comments 2005-09-24 02:48:46 +00:00
Florian Westphal
e9f3e69f36 use io_close instead of plain close in Conn_ExitListeners() 2005-09-24 02:20:00 +00:00
Florian Westphal
5b2364b236 merge new resolver code 2005-09-12 19:10:20 +00:00
Florian Westphal
4db29b0076 Minimal changes (needed for merging resolver changes) 2005-09-11 11:42:48 +00:00
Florian Westphal
0aae3ec5d7 Mostly formatting; changes needed for SSL merge 2005-09-10 23:42:12 +00:00
Florian Westphal
468a1c7767 Handle_Write(): Report write attempts on closed sockets when in debug mode. 2005-09-05 09:10:08 +00:00
Alexander Barton
ab3ac4e466 Removed obsolete debug message. 2005-09-05 08:11:11 +00:00
Alexander Barton
4d18ac83a2 Set one second penalty on unknown commands. 2005-09-04 23:42:24 +00:00
Alexander Barton
660b529c10 Add debug code to Conn_SetPenalty(). 2005-09-04 23:38:32 +00:00
Florian Westphal
565129f992 io_close(): explicitly remove fd from epoll set 2005-09-04 13:38:59 +00:00
Alexander Barton
b2a3bc3257 Updated build configurations. 2005-09-03 15:13:14 +00:00
Alexander Barton
bcf8a5bee6 Updated XCode project files to XCode version 2.1. 2005-09-03 14:57:27 +00:00
Florian Westphal
fc4cd39202 Wait for DNS reverse lookup (and ident request) before writing results to pipe. 2005-09-03 11:17:16 +00:00
Alexander Barton
b5b7c7f174 Updated Changelog: fixed file descriptor leak in resolver code. 2005-09-02 22:12:43 +00:00
Florian Westphal
6444442931 fix fd leak (happens on failure of fork() ). 2005-09-02 21:47:30 +00:00
Alexander Barton
e899c75d7e Updated copyright notice. 2005-09-02 17:12:58 +00:00
Florian Westphal
cae9a3aee5 small formatting change 2005-09-02 17:01:23 +00:00
Alexander Barton
e708790566 JOIN now supports more than one channel key at a time. 2005-09-02 15:46:49 +00:00
Florian Westphal
0dd0015d16 Mention ':' MyPassword restriction in man page. 2005-09-02 14:38:59 +00:00
Florian Westphal
dd3d2e2c39 Complain if MyPassword starts with ':'. (Reported by Ben Korvemaker) 2005-09-02 13:58:52 +00:00
Florian Westphal
9275dc4dc4 reformatted Handle_SERVER() 2005-09-02 13:50:52 +00:00
Alexander Barton
af9123fd82 Cleaned up some code, comments and log/debug messages. 2005-09-02 13:28:30 +00:00
Alexander Barton
ca32c1b311 Implementec numeric "333": Time and user name who set a channel topic. 2005-09-02 12:50:25 +00:00
Florian Westphal
342f20f889 Add warning about leading : in passwords. (thx Ben Korvemaker for pointing this out) 2005-09-01 18:16:29 +00:00
Alexander Barton
a5b5a6a99a Make PONG handler compatible with ngIRCd <= 0.9 ("make it more relaxed"). 2005-09-01 10:51:24 +00:00
Florian Westphal
c65343e719 reformatted a few lines. 2005-08-30 22:08:00 +00:00
Florian Westphal
a7197f579c check if gcc supports -fstack-protector 2005-08-30 20:59:30 +00:00
Florian Westphal
30c11b2313 use size_t for array length variables 2005-08-30 13:38:16 +00:00
Florian Westphal
b7033e1478 use size_t instead of unsigned int. 2005-08-30 13:36:32 +00:00
Florian Westphal
db992975eb last cleanup accidentally broke kqueue backend. 2005-08-29 13:58:54 +00:00
Alexander Barton
c12dc45f17 Added prefix to connection statistic NOTICE. 2005-08-29 11:11:15 +00:00
Alexander Barton
a2e4eb5aaf Fixed server NOTICEs to users with "s" mode ("server messages"). 2005-08-29 10:58:00 +00:00
Florian Westphal
58b8fb5d12 remove unneeded variable "bool action" 2005-08-28 16:51:20 +00:00
Florian Westphal
8efeae1714 fix embarassing cut&paste error 2005-08-28 12:18:50 +00:00
Florian Westphal
21ad5dcfff array_cat0_temporary(): removed confusing DEBUG messages 2005-08-28 11:47:02 +00:00
Alexander Barton
4074fd9149 Enhanced the handler for PING and PONG commands: fix forwarding and enable
back-passing of a client supplied additional argument of PING.
2005-08-28 11:40:13 +00:00
Florian Westphal
2f105b1c0a if the request is empty, remove \r\n (or single \n or \r) from receive buffer. 2005-08-28 00:19:29 +00:00
Florian Westphal
a2cdc08c39 fix handling of empty requests 2005-08-27 23:42:23 +00:00
Alexander Barton
e728bd2e1a Changed handling of timeouts for unregistered connections: don't reset
the counter if data is received and disconnect clients earlier.
2005-08-27 23:33:10 +00:00
Florian Westphal
12e288c062 removed misleading const qualifier 2005-08-27 23:23:54 +00:00
Alexander Barton
733e15bb64 Two spelling fixes. 2005-08-27 22:59:06 +00:00
Alexander Barton
99544e8d5d Forgot to mention last change ... 2005-08-27 22:55:13 +00:00
Florian Westphal
f36337fab3 fix kevent() warning on powerpc-apple-darwin8-gcc-4.0.0 2005-08-27 20:27:07 +00:00
Florian Westphal
1a46b37bd5 remove unneeded call io_event_kqueue_commit_cache() 2005-08-27 20:25:54 +00:00
Alexander Barton
5f87474a74 Fixed parameter description of CHANINFO. 2005-08-27 19:00:06 +00:00
Florian Westphal
6434d0b23e return PING argument in PONG reply if STRICT_RFC is not defined. 2005-08-27 18:39:56 +00:00
Alexander Barton
d5c5d2a37f Updated ChangeLog (from 0.9.1 branch). 2005-08-25 09:00:16 +00:00
Alexander Barton
ac96fe5877 Changed log level of "Initialization failed" message from ERR to ALERT. 2005-08-25 08:48:43 +00:00
Alexander Barton
a6d1d26a43 Fixed line lengths ... 2005-08-25 08:40:15 +00:00
Alexander Barton
c2f5399b51 Fixed format string bug in "connection statistics" message; code cleanups. 2005-08-15 23:02:40 +00:00
Alexander Barton
ae6e6616a6 Made test script run a longer time. 2005-08-12 21:38:52 +00:00
Alexander Barton
a5915f75c9 Set timeout. 2005-08-12 21:35:12 +00:00
Alexander Barton
f2ba8abec5 Detect source directory correctly. 2005-08-12 21:34:19 +00:00
Alexander Barton
701c259394 Added start script for FreeBSD. 2005-08-12 21:32:45 +00:00
Alexander Barton
a32b404863 Updated URL and some minor changes. 2005-08-12 13:20:54 +00:00
Alexander Barton
b15d906dff The KILL command killed much more than desired (including server links!)
when the target user is connected to a remote server.  [from 0.9.x]
2005-08-02 23:19:21 +00:00
Alexander Barton
1c14e2e0a2 Removed some line feeds in debug statements. 2005-08-02 22:48:57 +00:00
Alexander Barton
77f54693ef Removed unnecessary #define of "LOCAL", now use plain C "static" instead. 2005-07-31 20:13:07 +00:00
Alexander Barton
b61407713d Removed "U" unsignet suffix: caused problems with older compilers and is
not necessary for this constants.
2005-07-30 22:53:16 +00:00
Alexander Barton
b120c2a271 Fixed line wrapping. 2005-07-30 21:00:19 +00:00
Florian Westphal
51ccb5928a internal changes needed for future ssl support 2005-07-29 09:29:47 +00:00
Florian Westphal
890c3d9d72 add topic length changelog entry 2005-07-28 16:28:11 +00:00
Florian Westphal
84706af7fe topic no longer limited to 127 chars (now only limited by protocol) 2005-07-28 16:23:55 +00:00
Florian Westphal
46a191caf6 changed RES_STAT buffer to array 2005-07-28 16:13:09 +00:00
Florian Westphal
20ff63a8a1 add array_cat0_temporary() and array_init() 2005-07-28 16:12:50 +00:00
Alexander Barton
21a067e0b1 Updated documentation from CVS branch-0-9-x. 2005-07-26 19:41:49 +00:00
Alexander Barton
8c7521af25 Updated Debian changelog from branch-0-9-x. 2005-07-26 19:37:38 +00:00
Alexander Barton
e96b4aad2e Run "basename" on our script name when it is a symlink as well. [from 0-9-x] 2005-07-26 19:37:18 +00:00
Florian Westphal
2e794a6943 Reverse lookup now checks result by additional forward lookup 2005-07-25 09:20:10 +00:00
Alexander Barton
1e9e16fa3b Updated config.guess and config.sub to latest versions used in Debian. 2005-07-24 22:40:04 +00:00
Florian Westphal
6ecccd2644 add reverse lookup check 2005-07-24 21:42:00 +00:00
Alexander Barton
9db49e8f2c Added "STRIP_FROM_PATH" variable to generate relative path names. 2005-07-23 00:48:38 +00:00
Alexander Barton
74cb2e2768 Eliminate some compiler warnings ("unused parameter"). 2005-07-22 21:31:05 +00:00
Alexander Barton
e5097bf2e6 Added style definitions for source code listings. 2005-07-22 21:23:22 +00:00
Alexander Barton
3237d28bfb New subdirectory "doc/src" for the source code documentation. 2005-07-22 21:02:22 +00:00
Alexander Barton
317841529b Moved "srcdoc" target from src/Makefile to doc/Makefile. 2005-07-22 21:01:52 +00:00
Alexander Barton
68dc35b548 Removed "srcdoc" target for src/ tree (now in doc/ subdirectory). 2005-07-22 21:01:03 +00:00
Alexander Barton
d6e6350523 New subdirectory "src" for the source code documentation, and new make
target "srcdoc" to generate the documentation using Doxygen.
2005-07-22 21:00:22 +00:00
Alexander Barton
7036111a6c New files for the Doxygen source code documentation system. 2005-07-22 20:58:22 +00:00
Florian Westphal
987559e46d change Handle_OPERATOR() formatting 2005-07-17 18:58:04 +00:00
Florian Westphal
fca29bfa23 prevent io_masterfd leak when library_init() is called twice 2005-07-14 14:35:38 +00:00
Alexander Barton
63db3daafe Cleaned up some log messages. 2005-07-14 09:20:39 +00:00
Alexander Barton
2e858755c5 Brought some debug log messages "in line". 2005-07-14 09:14:12 +00:00
Alexander Barton
b682a5e485 Reformatted some comments. 2005-07-14 09:11:38 +00:00
Florian Westphal
efbfe4ae83 removed unneeded variable "bsize" 2005-07-13 16:06:55 +00:00
Florian Westphal
c92e57fec3 add better error checks for io_ routines 2005-07-12 20:44:46 +00:00
Florian Westphal
ca130e6db6 removed unneeded return statement 2005-07-12 20:44:13 +00:00
Florian Westphal
248d75e566 fix embarassing buffer-off-by one 2005-07-11 20:58:05 +00:00
Florian Westphal
4715b17106 make Conn_NewListener local to conn.c 2005-07-11 14:56:38 +00:00
Florian Westphal
70facb7f6e made a few config options unsigned. 2005-07-11 14:11:35 +00:00
Florian Westphal
76604f847a change assertions to stop splint from complaining 2005-07-11 14:10:53 +00:00
Florian Westphal
c7693f625e s/strcpy/strlcpy/ 2005-07-10 21:07:22 +00:00
Florian Westphal
e50d049074 minor cosmetic changes 2005-07-09 21:35:20 +00:00
Florian Westphal
dd003e23b7 removed some Debug-Code. 2005-07-09 20:23:00 +00:00
Florian Westphal
178b564c51 io_library_shutdown: return void 2005-07-09 20:22:29 +00:00
Alexander Barton
b976ec032f Updated some URLs in the documentation. 2005-07-09 14:39:42 +00:00
Alexander Barton
8916b201fa Only setuid()/setgid() if it differs from current UID/GID.
Solves problems with Cygwin.
2005-07-08 23:19:20 +00:00
Alexander Barton
ead79d3e39 Use "ServerUID" (and not internal variable name) for error message. 2005-07-08 21:04:39 +00:00
Alexander Barton
0e2f5a4f3d Updated documentation. 2005-07-08 16:23:00 +00:00
Alexander Barton
78692f1e87 Added "doc/Zeroconf.txt" to distribution. 2005-07-08 16:19:03 +00:00
Alexander Barton
02b0a51517 Renamed "Rendezvous" to "Zeroconf". 2005-07-08 16:18:38 +00:00
Alexander Barton
a874c26c25 New section "runtime". 2005-07-08 12:40:09 +00:00
Alexander Barton
1eca0aea4f Whitespace fixes. 2005-07-08 12:39:38 +00:00
Florian Westphal
7b5a1bbe3c safemult_uint(): return bool 2005-07-07 21:26:31 +00:00
Florian Westphal
b88e97f193 document b0rken resolver on GNU/Linux 2005-07-07 20:53:35 +00:00
Florian Westphal
6b4ecf8c83 new buffer/IO API. 2005-07-07 18:50:23 +00:00
Florian Westphal
6093af49d5 test for epoll and kqueue support 2005-07-07 18:49:58 +00:00
Florian Westphal
0d180a913f use new io event API. 2005-07-07 18:49:04 +00:00
Florian Westphal
60ae9c827e use dynamically sized unzip/zip buffer 2005-07-07 18:48:33 +00:00
Florian Westphal
c857e9c887 new io/buffer api. 2005-07-07 18:47:46 +00:00
Florian Westphal
579fce1831 remove FD_SETSIZE check (now in io_* functions) 2005-07-07 18:46:46 +00:00
Florian Westphal
2bf77fb0c3 use dynamic io buffers 2005-07-07 18:45:33 +00:00
Florian Westphal
774c6cda4d use new buffer API 2005-07-07 18:39:45 +00:00
Florian Westphal
afef7dee82 cleanup, use new io layer. 2005-07-07 18:39:08 +00:00
Florian Westphal
7eca418465 add new IO layer 2005-07-07 18:38:35 +00:00
Florian Westphal
ebbf92898e add new buffer abstraction layer 2005-07-07 18:38:14 +00:00
Florian Westphal
733ef4c815 removed Resolve_Init() 2005-07-07 18:37:36 +00:00
Alexander Barton
e5a19fa3a0 Fixed maximum length of user names, now allow up to 9 characters. 2005-07-05 22:44:47 +00:00
Alexander Barton
ccb747cb3b Updated documentation. 2005-07-02 14:46:38 +00:00
Alexander Barton
9a6b6f527b Handle oversized messages which should be sent to the network better. 2005-07-02 14:36:03 +00:00
Alexander Barton
43d644ed92 Code and comment cleanups, new #define "CUT_TXTSUFFIX". 2005-07-02 14:33:45 +00:00
Alexander Barton
eeccc193dd Prepare documentation for release 0.9.0 ... 2005-06-26 21:54:01 +00:00
Alexander Barton
0e3ce63ec1 Fix compiler warning "comparision between signed and unsigned". 2005-06-26 13:43:59 +00:00
Alexander Barton
0c33f46fc2 Fixed wrong order of #includes in test for "socklen_t" (caused problems on OpenBSD). 2005-06-26 13:42:11 +00:00
Alexander Barton
117a9e21e7 Updated URLs. 2005-06-24 20:59:13 +00:00
Alexander Barton
162338b8c8 Ignore unknown commands received before the client is registered. 2005-06-24 20:56:46 +00:00
Alexander Barton
de395db8e3 Get rid of Log_SetDaemonized(). 2005-06-24 19:55:10 +00:00
Florian Westphal
dbea187373 removed global variable NGIRCd_NoDaemon 2005-06-24 19:20:56 +00:00
Florian Westphal
d81dab99fa put badchars back in 2005-06-18 08:57:37 +00:00
Florian Westphal
9dc5e50226 fix embarassing cut&paste error (add missing } ) 2005-06-17 23:17:09 +00:00
Florian Westphal
c06c815c28 fix "Can't get user information for UID" error message 2005-06-17 23:13:41 +00:00
Florian Westphal
04169f34cf only chdir() to users home when running as daemon 2005-06-17 20:35:45 +00:00
Florian Westphal
aec535c8b6 s/sprintf/snprintf 2005-06-17 19:16:53 +00:00
Florian Westphal
2d4dd33627 use strlcpy 2005-06-17 19:15:43 +00:00
Florian Westphal
b0699efdab remove unneeded strpy() 2005-06-17 19:14:58 +00:00
Florian Westphal
1ca8bb5255 startup: fork only once, never run with uid 0 2005-06-17 19:04:53 +00:00
Florian Westphal
bc2dac3c74 startup: fork only once, never run with uid 0. 2005-06-17 18:22:45 +00:00
Alexander Barton
94dd7fa7d6 IRC_LIST(): Added missing calls of Client_ID() and cleand up the code. 2005-06-12 18:23:59 +00:00
Florian Westphal
fcf65beea4 changed formatting to match ngircd coding style 2005-06-12 18:02:09 +00:00
Florian Westphal
1cf8ccd8fe Make sure SimpleMessage() sends <= 512 chars 2005-06-12 17:21:46 +00:00
Florian Westphal
74424cb1a5 set 3 second penalty after failed /oper command. 2005-06-12 17:18:27 +00:00
Alexander Barton
5c20474fdb Only register clients that have been connected at least 30 sec. in WHOIS database. 2005-06-12 16:39:42 +00:00
Alexander Barton
8b0ac2306e Modified Conn_StartTime() to use information of the CLIENT structure. 2005-06-12 16:32:17 +00:00
Alexander Barton
5195555c5a Removed CONNECTION[].starttime, now saved in CLIENT structure. 2005-06-12 16:28:55 +00:00
Alexander Barton
a4660f40db New function Client_StartTime(). 2005-06-12 16:18:49 +00:00
Alexander Barton
9fa9c1fdda Updated manual pages. 2005-06-04 13:39:20 +00:00
Florian Westphal
cac9f279fa send RFC compliant netsplit messages. 2005-06-04 12:32:09 +00:00
Florian Westphal
517321807e Fix Handling of quit messages: always send only one QUIT message. 2005-06-04 11:53:24 +00:00
Florian Westphal
ae98008c1c remove Try_Write(), Call Handle_Write() directly instead. 2005-06-04 11:49:20 +00:00
Alexander Barton
45404a1644 Added some Doxygen documentation. 2005-06-01 21:52:18 +00:00
Alexander Barton
50338126e0 Fixed handling of symbolic links as used in /etc/rc.X directories. 2005-06-01 21:51:11 +00:00
Florian Westphal
8ac701d6c8 add FreeRes_stat(), wait for resolver timeout. 2005-06-01 21:28:50 +00:00
Florian Westphal
158bf554c3 minor cleanup 2005-05-28 10:46:50 +00:00
Alexander Barton
9c3c7e5a09 Handle splint errors more gracefully. 2005-05-23 00:11:15 +00:00
Alexander Barton
cd0dc8627d Don't exit server if closing of a socket fails; instead ignore it and
pray that this will be "the right thing" ...
2005-05-22 23:55:57 +00:00
Alexander Barton
44fdde7610 Added version information to summary text. 2005-05-21 21:34:47 +00:00
Alexander Barton
95f8b963a6 Reformatted and documented code of the first part of the IRC_NICK()
function; and register WHOWAS entries on nickname changes, too.
2005-05-17 23:24:43 +00:00
Alexander Barton
1aeaf64c66 New function Client_RegisterWhowas(). 2005-05-17 23:18:54 +00:00
Alexander Barton
06caecb0c4 Implemented IRC function "WHOWAS". 2005-05-16 12:25:15 +00:00
Alexander Barton
b1c14598e1 New functions Client_GetWhowas and Client_GetLastWhowasIndex; new structure WHOWAS. 2005-05-16 12:24:31 +00:00
Alexander Barton
7f0d101184 New functions Client_GetWhowas, Client_GetLastWhowasIndex, and Register_Whowas. 2005-05-16 12:23:48 +00:00
Alexander Barton
9f247ebd5a New defines MAX_WHOWAS and DEFAULT_WHOWAS. 2005-05-16 12:22:32 +00:00
Alexander Barton
dd9b4bc956 Away status texts set due to "a"-Modes received from other servers have
been fixed: the status text of the server has been set instead of the
away status text of the client (most probably introduced by patch 1.36).
2005-05-14 20:29:34 +00:00
Alexander Barton
6f97dd4938 Remove "doc/src" directory on "make distclean". 2005-04-27 07:52:29 +00:00
Alexander Barton
a02f25a810 Added #include of "defines.h", necessary due to removal of the #include of
"defines.h" in the client.h header file.
2005-04-27 07:46:50 +00:00
Alexander Barton
aa25cd7da2 Reorder #includes, necessary due to removal of #include "defines.h" in
the client.h header file.
2005-04-27 07:38:00 +00:00
Alexander Barton
70fcdf1b5c Removed "invalid" #include of "defines.h" (don't include further header
files from a header file!).
2005-04-27 07:36:25 +00:00
Alexander Barton
dfe662ad45 Added missing #include of "defines.h". 2005-04-27 07:34:25 +00:00
Florian Westphal
7daa7fb278 removed Conn_UnsetOption() function. It was not used anymore.
removed Conn_SetOption(). replaced its only call (in conn-zip.c) with Conn_OPTION_ADD() macro.
2005-04-25 18:37:16 +00:00
Florian Westphal
e7c2c86aee removed "my_connects" fd_set. 2005-04-23 14:28:44 +00:00
Florian Westphal
c4bc2114c9 conn.h: option filed in CONNECTION struct is now UINT16.
conn-func.h: add accessor Macros

Conn_OPTION_ADD( conn, CONN_OPTION )
Conn_OPTION_DEL( conn, CONN_OPTION )
Conn_OPTION_ISSET( conn, CONN_OPTION )

To add, remove or test for a certain option field attribute (e.g. CONN_ISCLOSING)
These Macros should be used instead of accessing conn->options directly.
2005-04-18 21:08:31 +00:00
Alexander Barton
129a22a29b Cleaned up (and documented) the IRC_KILL() function. 2005-04-18 15:44:39 +00:00
Florian Westphal
8304210c06 fix spelling 2005-04-16 20:50:03 +00:00
Florian Westphal
aee48a3b38 added kludge to make ngircd (with syslog) compile on mips-dec-ultrix4.5 2005-04-16 09:31:30 +00:00
Florian Westphal
77faf14b29 use strdup() to add oper hostname mask. 2005-04-16 09:23:01 +00:00
Florian Westphal
8b17579e60 private strdup() implementation in case libc does not provide it. 2005-04-16 09:20:53 +00:00
Florian Westphal
b4363162ce s/malloc(x*y)/calloc(x,y)/ 2005-04-16 09:19:49 +00:00
Florian Westphal
873edc6311 check for strdup() 2005-04-16 07:26:44 +00:00
Alexander Barton
6ed37415fc Used a spellchecker :-) 2005-04-13 21:40:49 +00:00
Alexander Barton
55fadbfb1d Fixed wrong location of "Doxyfile" ... argl. 2005-04-09 18:29:30 +00:00
Alexander Barton
ca8ab38cac Use typedef instead of #define to declare the socklen_t type if needed. 2005-04-09 18:27:16 +00:00
Alexander Barton
dec7eba531 Added "-unrecog" to splint command line. 2005-04-09 18:23:37 +00:00
Alexander Barton
b0ae15e01d Target "lint": check whether splint command is available and suppress
warnings related to the used command line in the output.
2005-04-09 12:30:55 +00:00
Alexander Barton
43ba1bc805 Two new targets: "srcdoc" to generate Doxygen source documentation, and
"xcode" to build ngIRCd using the Xcode command line tools on Mac OS X.
2005-04-09 12:27:40 +00:00
Alexander Barton
811ac48bd2 Added new target "srcdoc" to generate the Doxygen source documentation. 2005-04-09 12:22:41 +00:00
Alexander Barton
e936a79f6b Added the control file for the Doxygen source documentation system. 2005-04-09 12:21:51 +00:00
Alexander Barton
0545288ebd New build style "deployment", cleaned up options for build style
"development" (enabled "ZeroLink") and fixed path of "ngircd.spec".
2005-04-09 11:25:28 +00:00
Alexander Barton
e635ed43bf Don't enable assert() calls when not ./configure'd with --enable-debug. 2005-03-30 17:00:42 +00:00
Alexander Barton
4d0b03b423 Debine NDEBUG if DEBUG isn't defined to disable all assert() checks as well. 2005-03-30 16:37:02 +00:00
Alexander Barton
f6df13d5f8 When validationg the configuration file wait for a keypress only if both
stdin and(!) stdout are valid tty's.
2005-03-22 18:57:08 +00:00
Alexander Barton
f56a1bdf20 Use tabulator, not 8 spaces ... 2005-03-21 22:22:09 +00:00
Alexander Barton
9dfcc6504e Fixed ./configure test for TCP Wrappers: now it runs on Mac OS X as well. 2005-03-21 22:15:15 +00:00
Alexander Barton
a822153309 Enhanced configure script: now you can pass an (optional) search path
to all --with-XXX parameters, e. g. "--with-ident=/opt/ident".
2005-03-20 17:23:36 +00:00
Florian Westphal
49f5a4d454 Conf_Test(): check if stdin (and not stdout...) is connected to a terminal. 2005-03-20 15:00:25 +00:00
Florian Westphal
326607eea1 changed type of Conf_ListenPorts[] from "unsigned int" to UINT16. 2005-03-20 13:54:06 +00:00
Florian Westphal
bfba1f37ed Init_Conn_Struct(): Zero structure using memset(). 2005-03-20 11:00:31 +00:00
Florian Westphal
374f90f392 Add notice about typedef removal and stdbool.h/inttypes.h 2005-03-19 18:53:16 +00:00
Florian Westphal
8adff59223 Remove INT, LONG, BOOLEAN, STATIC, CONST, CHAR datatypes.
use stdbool.h / inttypes.h if available.
2005-03-19 18:43:48 +00:00
Florian Westphal
27d93d7d8c fix Config_Error_NaN prototype (first argument missed "const") 2005-03-19 15:46:38 +00:00
Florian Westphal
8a2ed0a75f removed unneeded log.h include. 2005-03-19 14:50:59 +00:00
Alexander Barton
5fdd5be12b Added login of Florian ("fw") to AUTHORS list. 2005-03-19 14:24:52 +00:00
Alexander Barton
795802f2b0 Removed indentation of preprocessor statements in test for socklen_t. 2005-03-19 14:09:32 +00:00
Alexander Barton
1869766331 Fixed too long lines. 2005-03-15 16:58:01 +00:00
Alexander Barton
1d08d51e2e New configuration option "OperServerMode". 2005-03-15 16:56:16 +00:00
Alexander Barton
5e929effca New function New_Res_Stat() to initialize RES_STAT structure. 2005-03-05 12:57:14 +00:00
Alexander Barton
e618041168 Reduce the number of calls of strlen(). Idea by Florin Westphal. 2005-03-05 11:44:01 +00:00
Alexander Barton
e7f8782831 Added missing include of "match.h". 2005-03-03 08:36:19 +00:00
Alexander Barton
4ef172d603 Implemented support for "secret channels" (channel mode "s"). 2005-03-02 16:35:10 +00:00
Alexander Barton
490c9d04d7 New configuration option "Mask" for [Operator] sections to limit OPER command. 2005-03-02 16:07:30 +00:00
Alexander Barton
8579b2a1e5 Clean up the mode handling code: remove redundant parts ... 2005-02-27 20:09:44 +00:00
Alexander Barton
3da942e237 Updated to latest strl{cat|cpy} code of rsync:
- Make sure that strlcpy() returns the right value when the bufsize is 0.
- Fixed a bug in strlcat() where it would not properly detect a no-change
  condition if called with an initial string longer than the specified
  size limit (due to an unsigned var's inability to go negative).
Patch by Florian Westphal, <westphal@foo.fh-furtwangen.de>.
2005-02-27 09:29:13 +00:00
Alexander Barton
bcb6cf3ffa Added AUTOMAKE_VERSION and AUTOCONF_VERSION (for OpenBSD). 2005-02-21 15:23:23 +00:00
Alexander Barton
972b07ff29 Fixed the detection of tools named like "tool-Major.Minor" (used on OpenBSD). 2005-02-21 09:48:50 +00:00
Alexander Barton
ba19fb8ff4 Enable Pidfile /var/run/ircd/ngircd.pid 2005-02-14 00:44:48 +00:00
Alexander Barton
8d8b133bdf Added description for "PidFile", fixed description of "Ports". 2005-02-14 00:42:41 +00:00
Alexander Barton
ec30cd4e5f Whitespace fixes. 2005-02-11 13:52:37 +00:00
Alexander Barton
f2fbf206b6 Don't play games with FILE* stdin/out/err, only touch "real" descriptors. 2005-02-10 16:55:52 +00:00
Alexander Barton
1fdd5478c6 Renamed NGIRCd_FillVersion() to Fill_Version(); Code cleanups. 2005-02-10 13:09:11 +00:00
Alexander Barton
9537542647 Write "error file" (/tmp/ngircd-XXX.err) only if compiled with debug
code ("--enable-debug") and running as daemon process.
2005-02-10 12:49:04 +00:00
Alexander Barton
0993ff81bb Added a note about the change of the maximum password length. 2005-02-10 08:20:09 +00:00
Alexander Barton
894cd2cd68 Don't create version information string each time a client connects but
insetead on server startup. By Florian Westphal.
2005-02-09 09:52:58 +00:00
Alexander Barton
c16d1b03aa Added an empty /etc/ngircd/ngircd.motd to the packages. And ngircd.conf
becomes modified to enable the PID file (/var/run/ircd/ngircd.cond) and
to change the user and group to "irc".
2005-02-07 23:09:31 +00:00
Alexander Barton
451315643f Set owner and group of /var/run/ircd to "irc:irc". 2005-02-07 23:07:52 +00:00
Alexander Barton
d77182e7a6 Updated debian changelog file from branch-0-8-x ... 2005-02-07 19:57:05 +00:00
Alexander Barton
8edeed8418 Make sure that errno of fopen() isn't overwritten by the logging code. 2005-02-07 19:31:34 +00:00
Alexander Barton
112102b10c New configuration variable "PidFile", section "[Global]": if defined,
the server writes its process ID (PID) to this file. Default: off.
Idea by Florian Westphal, <westphal@foo.fh-furtwangen.de>.
2005-02-04 14:24:20 +00:00
Alexander Barton
ae63ed04c5 ngIRCd 0.8.3. 2005-02-04 14:21:35 +00:00
Alexander Barton
85acb82469 Use ngt_TrimLastChr() where useful, by Florian Westphal. 2005-02-04 13:15:38 +00:00
Alexander Barton
51d09fb4f7 Add ngt_TrimLastChr() to header file. By Florian Westphal. 2005-02-04 13:09:03 +00:00
Alexander Barton
8308c170db Fixed a bug that could case a root exploit when the daemon is compiled
to do IDENT lookups and is logging to syslog. Bug discovered by CoKi,
<coki@nosystem.com.ar>, thanks a lot!
(http://www.nosystem.com.ar/advisories/advisory-11.txt)
2005-02-03 09:26:42 +00:00
Alexander Barton
07fe19889b Updated ChangeLog for 0.8.2. 2005-02-03 09:11:43 +00:00
Alexander Barton
0c293ae988 Updated config.sub and config.guess 2005-01-27 00:15:53 +00:00
Alexander Barton
18c92d9de7 We are in the year 2005 now! :-) 2005-01-26 22:03:15 +00:00
Alexander Barton
2440ed080c Fixed a buffer overflow that could cause the daemon to crash. Bug found
by Florian Westphal, <westphal@foo.fh-furtwangen.de>.
2005-01-26 13:23:24 +00:00
Alexander Barton
669da58715 Updated list of contributors. 2005-01-26 13:21:00 +00:00
Alexander Barton
39f1ddd9d0 New function ngt_TrimLastChr(), prototype by Florian Westphal. 2005-01-25 16:16:48 +00:00
Alexander Barton
34e912d9f2 Fixed a typo in variable name ... 2005-01-24 14:19:04 +00:00
Alexander Barton
44172a8c7f Fixed a possible buffer underrun when reading the MOTD file. Thanks to
Florian Westphal, <westphal@foo.fh-furtwangen.de>.
2005-01-24 14:17:21 +00:00
Alexander Barton
a6d7fb8739 Code cleanups from Florian Westphal, <westphal@foo.fh-furtwangen.de>:
wrote functions for common error messages.
2005-01-20 00:13:08 +00:00
Alexander Barton
d16ce5a735 Code cleanups from Florian Westphal, <westphal@foo.fh-furtwangen.de>. 2005-01-20 00:11:49 +00:00
Alexander Barton
a40a026d15 Fixed detection of IRC lines which are too long to send. Detected by
Florian Westphal, <westphal@foo.fh-furtwangen.de>.
2005-01-19 23:33:53 +00:00
Alexander Barton
6c5f4beb53 Fixed return values of our own implementation of strlcpy(). The code has
been taken from rsync and they fixed it, but we didn't until today :-/
2005-01-18 09:05:37 +00:00
Alexander Barton
26b0ddf200 Translated source code comments. 2005-01-17 13:14:36 +00:00
Alexander Barton
b6690df2be Raised the maximum length of passwords to 20 characters. 2005-01-17 13:01:34 +00:00
Alexander Barton
6dacec7ded Fixed typo: ports are separated by ",". Thanks to Florian Westphal. 2005-01-17 12:51:17 +00:00
Alexander Barton
429b5f3ec9 Fixed a memory leak when resizing the connection pool and realloc() failed.
Now we don't fall back to malloc(), which should be sane anyway.
Patch from Florian Westphal, <westphal@foo.fh-furtwangen.de>.
2005-01-17 11:57:39 +00:00
Alexander Barton
81bacda627 Added URLs for stunnel. 2004-12-27 01:11:40 +00:00
Alexander Barton
6960cb4c38 Added documentation for SSL support. 2004-12-27 01:04:35 +00:00
Alexander Barton
7b61b34c56 Make more clear that there can be more than one [Operator], [Server] and
[Channel] section in the configuration file.
2004-12-27 00:55:06 +00:00
Alexander Barton
386d3b9e67 Fixed wrong port number in example. 2004-12-27 00:48:59 +00:00
Alexander Barton
5049c5c694 Don't use a POSIX thread for the Howl "run loop". 2004-12-26 16:48:53 +00:00
Alexander Barton
292879aca4 Added support for the Howl (http://www.porchdogsoft.com/products/howl/)
Rendezvous API, in addition to the API of Apple (Mac OS X).
2004-12-26 00:14:33 +00:00
Alexander Barton
dcb9e2a004 Updated documentation for release 0.8.1 2004-12-25 00:22:00 +00:00
Alexander Barton
0d10c60b31 Updated config.guess and config.sub 2004-12-25 00:10:19 +00:00
Alexander Barton
08e0b277bc Updated documentation ... 2004-12-25 00:00:14 +00:00
Alexander Barton
58736b3902 Fixed indentation and added some more debug code. 2004-12-22 17:37:41 +00:00
Alexander Barton
f7354cdf28 Updated list of supported/tested platforms. 2004-11-09 11:00:33 +00:00
Alexander Barton
196f27c4ad Fixed spelling mistake. 2004-10-31 12:17:22 +00:00
Alexander Barton
c1f32e8214 Made ngIRCd compile on HP/UX 10.20 with native HP pre-ANSI C compiler and
most probably other older C compilers on other systems.
2004-10-20 13:47:32 +00:00
Alexander Barton
eee2762852 Changed "read buffer" to "receive buffer" as suggested by Goetz. 2004-10-04 23:23:41 +00:00
Alexander Barton
c79fa28a66 Added some missing words: "address" :-) 2004-10-04 23:09:04 +00:00
Alexander Barton
1e692e5890 Fixed wrong variable names in output of "ngircd --configtest". 2004-09-24 18:00:40 +00:00
Alexander Barton
ceafdf109b Added functions.inc to EXTRA_DIST files. 2004-09-08 09:40:51 +00:00
Alexander Barton
450251f082 Fixed echo without newline for systems not understanding "echo -n"; added
new file "functions.inc" for functions usable by all test scripts.
2004-09-06 22:04:06 +00:00
Alexander Barton
ceef058065 Reverted extension of the "make all" target in the test-suite. 2004-09-06 20:35:28 +00:00
Alexander Barton
b04a526a19 Fixed wrong exit code check of "kill -0". 2004-09-06 20:22:30 +00:00
Alexander Barton
2f195a07b2 Updated documentation. 2004-09-06 00:35:52 +00:00
Alexander Barton
f38eeedfd7 Fxied name of "default file" for ngircd-full package. And do the test if
the binary is executable after reading this file.
2004-09-06 00:32:20 +00:00
Alexander Barton
8ca1e4d548 If ServerUID is defined change the working directory to the home directory
of this user.
2004-09-04 20:28:51 +00:00
Alexander Barton
e07cc4bb63 Updated documentation :-) 2004-09-04 19:39:24 +00:00
Alexander Barton
c5bdd86f96 Enhanced messages and exit codes. 2004-09-04 19:14:46 +00:00
Alexander Barton
aa26e2ef36 Added all test scripts to target "all". 2004-09-04 19:14:02 +00:00
Alexander Barton
9445962237 Changed text "test scripts" to "processes": some versions of expect(1)
fork child processes ...
2004-09-04 18:22:42 +00:00
Alexander Barton
6b898b63f0 Removed counting of test processes; don't check running processes by default. 2004-09-04 18:20:16 +00:00
Alexander Barton
f7a4d03ba2 Added detection of flags for ps(1). 2004-09-04 16:14:47 +00:00
Alexander Barton
ade1e2eb7b Added README, test-loop.sh and wait-tests.sh to EXTRA_DIST files. 2004-09-04 15:46:56 +00:00
Alexander Barton
a9a605de3e Made stress-server.sh to use wait-tests.sh to limit number of parallel tests. 2004-09-04 15:45:27 +00:00
Alexander Barton
7ec11de523 Two new scripts: test-loop.sh and wait-tests.sh 2004-09-04 15:44:45 +00:00
Alexander Barton
18eb92a72b Added support for looping and other enhancements. 2004-09-04 14:23:09 +00:00
Alexander Barton
9ddb934784 Set $srcdir if not already set by make. 2004-09-04 14:22:38 +00:00
Alexander Barton
4f8ac179bf If nick name is already in use, interpret this as "clienst still connected". 2004-09-04 14:22:13 +00:00
Alexander Barton
02b8e51562 Added preliminary README text. 2004-09-04 13:58:31 +00:00
Alexander Barton
d27196e334 Information about configuring ngIRCd. 2004-09-03 20:01:12 +00:00
Alexander Barton
3edaa35d49 Removed empty "buildRules" variable (suggested by XCode 1.5 :-). 2004-08-10 01:55:33 +00:00
Alexander Barton
88258070c4 Added missing commas to debian control file, fixes bug #56.
Thanks to Kevin Otte (nivex@nivex.net) for the patch.
2004-07-15 09:03:15 +00:00
Alexander Barton
beb4edd3cf Updated documentation: note ngIRCd 0.8.0 :-) 2004-07-03 18:35:41 +00:00
Alexander Barton
364ff7087d Added cast to integer for Solaris. 2004-06-26 08:50:44 +00:00
Alexander Barton
0b3ee07a2a Updated documentation. 2004-05-30 16:29:05 +00:00
Alexander Barton
a49a580a77 Fixed wrong buffer size calculation for resolver results. 2004-05-30 16:25:51 +00:00
Alexander Barton
7080e9f83c Added "hppa/unknown/openbsd3.5". 2004-05-25 21:50:29 +00:00
Alexander Barton
59a48bfa1f Updated documentation. 2004-05-15 23:56:43 +00:00
Alexander Barton
42e8063a32 Enhanced ./configure checks for required C header files. 2004-05-15 12:24:30 +00:00
Alexander Barton
c23bbe6b65 Fixed a warning message of the compiler when not using IDENT lookups. 2004-05-11 00:53:14 +00:00
Alexander Barton
d8f47ed195 Updated documentation. 2004-05-11 00:41:53 +00:00
Alexander Barton
d7c975e8d8 "make maintainer-clean" removes Makefile.in now. 2004-05-11 00:34:26 +00:00
Alexander Barton
bf21dd1578 "make clean" works better now. 2004-05-11 00:32:31 +00:00
Alexander Barton
9013f56451 New Debian version. 2004-05-11 00:21:04 +00:00
Alexander Barton
3012c232eb Fixed resolver when using IDENT lookups, cleaned up code. 2004-05-11 00:01:11 +00:00
Alexander Barton
26390c60fb Added PID to all log messages on the console; enhanced logging of
resolver sub-processes in debug mode.
2004-05-10 23:57:46 +00:00
Alexander Barton
cdb039672c Enhanced output of "make lint". 2004-05-09 18:23:35 +00:00
Alexander Barton
7281b8dd4d New "chroot" feature (from Benjamin Pineau), introducing new configuration
variables "ChrootDir" and "MotdPhrase".
2004-05-07 11:19:20 +00:00
Alexander Barton
39fc76c4e4 Overview of "contributed" files. 2004-04-28 12:18:50 +00:00
Alexander Barton
a6d51c3a9e Added "README" and "systrace.policy" files. 2004-04-28 12:18:02 +00:00
Alexander Barton
18b2227a0a systrace policy for OpenBSD/NetBSD, thanks to Benjamin Pineau <ben@zouh.org> 2004-04-28 12:16:59 +00:00
Alexander Barton
47701feb08 New debian version including updates from CVS HEAD. 2004-04-25 23:57:19 +00:00
Alexander Barton
59b903f3bb Updated documentation. 2004-04-25 15:51:15 +00:00
Alexander Barton
d433eb3896 Add flag "L" to default IRC+ server flags: synchronize INVITE-
and BAN-lists.
2004-04-25 15:46:50 +00:00
Alexander Barton
c1e9841118 Document new server flag "L": synchronize INVITE- and
BAN-lists when establishing new server links.
2004-04-25 15:44:10 +00:00
Alexander Barton
dd59820051 Synchronize INVITE- and BAN-lists if the peer requests it:
server flag "L". And better debug logging.
2004-04-25 15:43:18 +00:00
Alexander Barton
967476799f Don't send MODE changes when origin is a server and
mask is already known.
2004-04-25 15:42:05 +00:00
Alexander Barton
6b1e322865 New functions: Lists_SendInvites(), Lists_IsInviteEntry(), 2004-04-25 15:40:19 +00:00
Alexander Barton
1d8da4b525 Fixed a wrong assert() which could cause the daemon to exit spuriously
when closing down connections.
2004-04-25 14:06:11 +00:00
Alexander Barton
292c7bd4c0 Better logging of decompression errors returned by zlib. 2004-04-25 13:55:34 +00:00
Alexander Barton
558fe6b453 Special handling for HP/UX: define _XOPEN_SOURCE_EXTENDED ... 2004-04-11 13:20:24 +00:00
Alexander Barton
bed119c9e5 New debian package. 2004-04-09 21:58:24 +00:00
Alexander Barton
64d330b726 Fixed handling of already existent entries in invite and ban lists:
the attempt to add an already existent entry is no error, it must
be propagated across servers (but not added to the list!).
2004-04-09 21:41:52 +00:00
Alexander Barton
cc25c52048 Updated XCode project for Mac OS X. 2004-04-09 20:48:27 +00:00
Alexander Barton
233210b906 Servers other than the destination server didn't clean up the invite
list of an "invite-only" channel properly when an INVITE'd user joined.
2004-04-09 20:46:46 +00:00
Alexander Barton
f68e92eb9a The command to test for the autoconf/automake tools is detected now as well. 2004-04-05 12:02:21 +00:00
Alexander Barton
b225081c2b Added DG/UX (m88k/dg/dgux5.4R3.10) to the list. 2004-04-05 11:11:05 +00:00
Alexander Barton
30bbc5e1e1 New debian package ;-) 2004-04-05 11:10:31 +00:00
Alexander Barton
0c07eb71a7 Updated manual page to reflect changes in daemon. 2004-04-05 10:59:10 +00:00
Alexander Barton
0b1202cd9e Use "which" when available; understand "GO=0"; made "VERBOSE=1" more verbose. 2004-03-19 11:47:51 +00:00
Alexander Barton
8212662d9d Enhanced autogen.sh script; added "inline" documentation. 2004-03-15 20:32:31 +00:00
Alexander Barton
f697923c48 Fixed detection of GNU C version and usability of __attribute__. 2004-03-15 19:26:39 +00:00
Alexander Barton
af77ce70b6 Added missing "return 0" ... oops. 2004-03-15 18:59:12 +00:00
Alexander Barton
507a9e9cb3 Reworked configure system: it should be more compatible to most systems
now, and it should even be more flexible and faster :-)
2004-03-11 22:21:20 +00:00
Alexander Barton
779446298c New upstream version. 2004-03-11 22:18:28 +00:00
Alexander Barton
cb76d96efb Fixed some warnings of non-gcc-compilers (e. g. original Apple compiler on
A/UX): "warning: illegal pointer combination, op =".
2004-03-11 22:16:31 +00:00
Alexander Barton
de1489b39b Updated tests to reflect last changes to MODE behaviour. 2004-03-10 20:40:06 +00:00
Alexander Barton
5155e1c67a Updated XCode project, added missing Makefile template for MacOXD directory. 2004-02-29 17:36:20 +00:00
Alexander Barton
1e9a958324 Added XCode project files (for Mac OS X) to "contrib" directory. 2004-02-29 17:19:43 +00:00
Alexander Barton
56227abc5e Changed the reply of the MODE command to match the syntax of the original
ircd exactly: the unnecessary but missing ":" before the last parameter
has been added.
2004-02-29 16:28:44 +00:00
Alexander Barton
f9e651b333 New Debian version. 2004-02-28 02:25:21 +00:00
Alexander Barton
bdaf53e799 Fixed TRACE: don't output "Serv" lines for ourself; display more info. 2004-02-28 02:18:16 +00:00
Alexander Barton
33f4e6763b Better logging while establishing and shutting down connections.
Results of the resolver are now discarded after the client is registered.
2004-02-28 02:01:01 +00:00
Alexander Barton
eaa550d690 Updated list of supported operating systems. 2004-02-24 00:37:42 +00:00
Alexander Barton
f275c66e95 Updated statistics :-) 2004-02-23 13:42:46 +00:00
Alexander Barton
17fffea873 Updated documentation (-t switch). 2004-02-22 22:12:44 +00:00
Alexander Barton
1e3363d2a4 Included updates of ngIRCd 0.7.7 2004-02-05 14:27:16 +00:00
Alexander Barton
6667bb6b77 The info text ("real name") of users is set to "-" if none has been
specified using the USER command (e. g. "USER user * * :"). Reason:
the original ircd doesn't like empty ones and would KILL such users.
2004-02-04 19:56:04 +00:00
Alexander Barton
b90bedbcb2 Fixed (optional) TCP Wrapper test which was broken and could result in
false results. Thanks to Fuminori Tanizaki <tany@mcnet.ad.jp>!
2004-02-03 20:28:30 +00:00
Alexander Barton
c2a154a33e New debian version. 2004-01-26 03:09:20 +00:00
Alexander Barton
6bbc086760 Updated some copyright notices to include the year 2004. 2004-01-26 02:23:54 +00:00
Alexander Barton
bb98fd8c85 The type of service (TOS) of all sockets is set to "interactive" now. 2004-01-25 16:06:34 +00:00
Alexander Barton
e9b0ec9148 Removed some debug code; translated some source code comments. 2004-01-19 21:54:59 +00:00
Alexander Barton
c53903eb3f Use "__attribute__" only if gcc is at least version 2.7 2004-01-17 03:22:46 +00:00
Alexander Barton
57c7e23622 Added #include for strings.h to fix compiler warnings. 2004-01-17 03:17:49 +00:00
Alexander Barton
cdb694aeb3 Added #include for strings.h and added some casts to remove compiler warnings. 2004-01-17 03:17:00 +00:00
Alexander Barton
6cafa16a56 Fixed order of #include's: time.h moves up! ;-) 2004-01-17 03:15:45 +00:00
Alexander Barton
5589ebd9c3 Clean up files for "ngircd-full" package, too ... 2004-01-13 01:10:11 +00:00
Alexander Barton
f645e5b62e Adjusted copyright notice to include 2004. 2004-01-02 19:23:30 +00:00
Alexander Barton
ad07c94c8d Restructured debian packaging system: now there are two packages, a "standard"
version that includes all the default options and a "full" version that
additionally includes support for TCP wrappers and IDENT lookups.
2004-01-01 22:24:48 +00:00
Alexander Barton
5a9c04619f Changes for new source code layout: contrib/Debian/. 2003-12-31 17:31:03 +00:00
Alexander Barton
ed94d5d5cd Removed outdated Mac OS X ProjectBuilder project files (will be re-added
and updated for XCode soon); moved the debian/ directory to contrib/Debian/.
2003-12-31 17:20:11 +00:00
Alexander Barton
ea076a28f2 Added some files to the maintainer-clean-local target which havn't beed
removed by "make maintainer-clean".
2003-12-31 17:09:40 +00:00
Alexander Barton
c9ccb66944 Added new short command line option "-t" as alternative to "--configtest". 2003-12-29 14:53:26 +00:00
Alexander Barton
cb6279f102 Added IDENT option to version string. 2003-12-27 13:09:24 +00:00
Alexander Barton
b79b315dd4 Added optional support for IDENT lookups (configure switch "--with-ident"). 2003-12-27 13:01:12 +00:00
Alexander Barton
c40592d2ce Removed "USE_" prefixes of configuration #defines. 2003-12-26 15:55:07 +00:00
Alexander Barton
05170bc94c Fixed error messages related to server name configuration; updated
sample configuration file. (from 0.7.x)
2003-12-19 14:32:59 +00:00
Alexander Barton
07ad774f0a Changes for version 0.7.6 2003-12-05 13:40:44 +00:00
Alexander Barton
a8da1afe05 Added missing postinst file to distribution list. (from branch-0-7-x) 2003-12-05 13:32:11 +00:00
Alexander Barton
ff2c1efae8 Fixed abort() when inviting users to nonexistent channels. 2003-12-05 11:57:28 +00:00
Alexander Barton
05e2c0f048 Extended version reporting of CVS builds. 2003-12-04 14:05:16 +00:00
Alexander Barton
d329a961bd Updated, corrected and extended (examples!) protocol documentation. 2003-11-30 20:30:56 +00:00
Alexander Barton
606cdb69bf Updated RPM and Debian package description and configuration. 2003-11-29 20:29:09 +00:00
Alexander Barton
a5695e7ef8 Updated config.guess and config.sub to new upstream versions. 2003-11-28 15:31:49 +00:00
Alexander Barton
2978b5edff Changes from branch-0-7-x for version 0.7.5. 2003-11-07 21:32:15 +00:00
Alexander Barton
be79fabcbf Fixed ban behavior: users which are banned from a channel can't no longer
send PRIVMSG's to this channel (fixes Bug #47).
2003-11-06 01:07:44 +00:00
Alexander Barton
ec2f16fa16 Fixed test suite: allow more connections ;-) 2003-11-05 23:31:43 +00:00
Alexander Barton
7b6e26628a Fixed and enhanced penalty handling; changed internal time resoluiton of
the server to one second. Code cleanup.
2003-11-05 23:24:48 +00:00
Alexander Barton
2981fe9eb7 New configuration option "MaxConnectionsIP". 2003-11-05 21:41:01 +00:00
Alexander Barton
20d002e155 Fixed build problems under Mac OS X 10.3 "Panther". 2003-11-04 00:41:06 +00:00
Alexander Barton
cfe6356531 Use "-pipe" when compiling with gcc, speeds things up a little :-) 2003-10-19 23:03:34 +00:00
Alexander Barton
e33ab90379 New configuration option "Listen" to bind the server to a specific ip. 2003-09-11 12:05:28 +00:00
Alexander Barton
d8f3c2b42b Suppress misleading error message of diff during make run. 2003-09-09 13:24:41 +00:00
Alexander Barton
3debe00581 Updated and fixed project file for Mac OS X ProjectBuilder.app 2003-09-03 11:54:21 +00:00
Alexander Barton
eb6113fc33 Updated documentation. 2003-09-02 16:09:29 +00:00
Alexander Barton
166c610957 Updated documentation. 2003-08-30 20:37:15 +00:00
Alexander Barton
b9f16c9635 Fixed typo in debug output. 2003-08-30 20:28:54 +00:00
Alexander Barton
1ed708ef39 Enhanced testsuite, should run under GNU/Hurd now. 2003-08-22 11:31:18 +00:00
Alexander Barton
5e4124d38d New Debian package for 0.7.1 2003-07-18 20:59:48 +00:00
Alexander Barton
0d00ce6e38 Updated documentation (for release 0.7.1). 2003-07-18 20:59:34 +00:00
Alexander Barton
057df41a9b Updated documentation. 2003-07-18 20:46:17 +00:00
Alexander Barton
5eb89619d6 Added debian packaging files from branch-0-7-x to HEAD. 2003-07-12 23:27:37 +00:00
Alexander Barton
6e03626eed Included debian/-subdirectory into build system. 2003-07-09 21:16:33 +00:00
Alexander Barton
d9efbe80e1 Updated debian changelog. 2003-07-09 20:41:32 +00:00
Alexander Barton
da9456dbca Included debian/-subdirectory with files required to build Debian packages. 2003-07-09 20:23:35 +00:00
Alexander Barton
ac9390f08c Updated config.guess and config.sub to newer upstream versions. 2003-07-09 20:13:17 +00:00
Alexander Barton
3f602e5a25 Updated ChangeLog. 2003-07-09 18:48:49 +00:00
Alexander Barton
6647da58fc NJOIN: Fixed propagation of user channel modes. 2003-07-09 18:45:56 +00:00
Alexander Barton
225a338139 Added SunOS 5.7 (Solaris 7). 2003-07-06 15:47:27 +00:00
Alexander Barton
bfdf17ff32 - Updated documentation. 2003-06-08 11:11:20 +00:00
Alexander Barton
260b8e5f36 VERSION shows the CVS date if apropriate now. 2003-06-06 20:46:11 +00:00
Alexander Barton
9a009b24da Fixed a compiler warning related to an unnecessary assert(). 2003-06-05 10:48:13 +00:00
Alexander Barton
83765a5a34 Updated documentation. 2003-05-15 21:47:57 +00:00
Alexander Barton
bdc08ae28e Updated documentation. 2003-05-15 21:33:47 +00:00
Alexander Barton
34ede2a91a Added support for GNU/Hurd. 2003-05-05 00:33:32 +00:00
Alexander Barton
0424747e95 Made Makefiles more compatible with "make -j<N>". 2003-05-03 16:29:57 +00:00
Alexander Barton
8d5e170091 Fixed typo: .IT instead of the correct.TP ... 2003-05-02 20:51:42 +00:00
Alexander Barton
68ee133f87 Changed version string to "CVSHEAD". 2003-05-01 10:17:50 +00:00
Alexander Barton
27cd1e0d05 Updated documentation (ngIRCd 0.7.0). 2003-05-01 10:17:24 +00:00
Goetz Hoffart
3dc4c92553 Added HP-UX 9.10/m68k. 2003-04-30 21:03:01 +00:00
Goetz Hoffart
188e95f680 Fixed small typo. 2003-04-29 13:37:36 +00:00
Goetz Hoffart
c5f4e9d095 Added "Why should I use ngIRCd?" 2003-04-29 13:36:55 +00:00
Alexander Barton
e541da2a8f "ServerName" is checked better now: a dot (".") is required. 2003-04-29 12:36:09 +00:00
Alexander Barton
e55399c667 The KILL comand verifies and logs more parameters. 2003-04-29 12:19:20 +00:00
Alexander Barton
e7102559b9 Updated documentation. 2003-04-28 00:14:48 +00:00
Alexander Barton
32f8eb46ee Updated documentation. 2003-04-27 11:48:06 +00:00
Alexander Barton
0e01a37a69 Fixed --configtest: there is no variable "ServerPwd", it's "Password". 2003-04-27 11:46:52 +00:00
Alexander Barton
927e626f03 Documented missing "Password" variable in section "[Global]". 2003-04-27 11:45:27 +00:00
Alexander Barton
277a048f4f Updated documentation. 2003-04-25 16:59:02 +00:00
Alexander Barton
dd0b37690b Updated documentation. 2003-04-25 16:49:11 +00:00
Alexander Barton
83194a23a3 The server tried to connect to other servers only once when DNS or socket
failures occured.
2003-04-25 16:47:52 +00:00
Alexander Barton
a1ff081b8a Updated documentation. 2003-04-25 15:05:40 +00:00
Alexander Barton
e1c70a3c93 Disabling "-ansi" on Cygwin: system headers are incompatible. 2003-04-25 15:04:43 +00:00
Alexander Barton
c43d47d69c Updated documentation: added i686/pc/cygwin platform. 2003-04-23 23:18:17 +00:00
Alexander Barton
bbf978dbcf Detecting broken gcc used by Mac OS X and disabling "-pedantic" in this case. 2003-04-23 01:07:59 +00:00
Alexander Barton
090756523e Updated documentation. 2003-04-23 01:07:16 +00:00
Alexander Barton
8497d28fba Updated documentation. 2003-04-22 23:55:06 +00:00
Alexander Barton
cef95681ff Added new documentation file "Platforms.txt". 2003-04-22 23:50:18 +00:00
Alexander Barton
52a24c4bbd New documentation file doc/Platforms.txt included. 2003-04-22 23:47:39 +00:00
Alexander Barton
e2968dd98d Updated documentation. 2003-04-22 20:42:28 +00:00
Alexander Barton
79b9592f27 Updated documentation. 2003-04-22 19:35:05 +00:00
Alexander Barton
0551f688f6 Made scripts mor portable (run on SunOS 5.6 now). 2003-04-22 19:27:50 +00:00
Alexander Barton
c74ac55832 Updated documentation. 2003-04-22 18:45:19 +00:00
Alexander Barton
b4dc216db3 Added defines for SunOS (5.6). 2003-04-22 18:44:03 +00:00
Alexander Barton
cbf87971a4 Made setting of WANT_AUTOMAKE more portable. 2003-04-22 10:15:46 +00:00
Alexander Barton
4d656d12e9 Updated documentation. 2003-04-21 23:31:39 +00:00
Alexander Barton
da78dc4785 Updated documentation. 2003-04-21 22:52:18 +00:00
Goetz Hoffart
bd52d4e49c Fixed tabs to spaces. 2003-04-21 21:59:34 +00:00
Goetz Hoffart
e0345e5e0a Translated documentation from German to English. 2003-04-21 21:46:57 +00:00
Alexander Barton
c1dd86d702 Updated documentation. 2003-04-21 21:33:18 +00:00
Alexander Barton
b25faf3c2a Updated documentation. 2003-04-21 12:55:39 +00:00
Alexander Barton
384d6b894a Translated Protocol.txt to english. 2003-04-21 12:48:40 +00:00
Alexander Barton
a061668b1a Added implicit initialisation of "i" in Conf_GetServer to workaround a egcs
2.91.66 bug which claims that this valiable could be used uninitialized.
2003-04-21 11:06:07 +00:00
Alexander Barton
489d8c5cd0 Removed unportable %z formater in strftime(). 2003-04-21 10:54:30 +00:00
Alexander Barton
daa996f177 Added missing prototype for dummy_snprintf(). 2003-04-21 10:53:38 +00:00
Alexander Barton
7deacbaa11 Added missing include for <sys/select.h>. 2003-04-21 10:53:10 +00:00
Alexander Barton
c3dfd63bf3 Fixed up some castings. 2003-04-21 10:52:26 +00:00
Alexander Barton
f5b91cd03d Added some defines for Linux/glibc, reverted unused test for poll(), and
enhanced summary output.
2003-04-21 10:51:44 +00:00
Alexander Barton
8e43b16d22 Using $(prefix)/share/doc/ngircd as documentation directory again. 2003-04-21 08:01:29 +00:00
Alexander Barton
4ef6dae1cd Updated documentation. 2003-04-20 23:12:57 +00:00
Alexander Barton
0b91df05e0 Fixed spelling mistake :-) 2003-04-20 23:09:43 +00:00
Alexander Barton
feafb6cb2e Don't forward NJOIN's for unknown nick names. 2003-04-20 23:09:26 +00:00
Alexander Barton
0391d35a67 Translated success message :-) 2003-04-13 22:34:17 +00:00
Alexander Barton
a93b4d9789 Updated documentation. 2003-04-05 11:37:17 +00:00
Alexander Barton
eefa1b1c64 Added WANT_AUTOMAKE=1.6 to autogen.sh. 2003-04-04 10:05:34 +00:00
Alexander Barton
016e547daa Re-corrected test for CVS version. 2003-03-31 19:01:02 +00:00
Alexander Barton
b588eaed02 Corrected path for documentation files in summary output. 2003-03-31 16:17:33 +00:00
Alexander Barton
36e0345ce6 Changed documentation directory to ".../share/doc/ngIRCd" (and removed the
variable PACKAGE for better Debian automake-1.4 compatibility).
2003-03-31 16:00:49 +00:00
Alexander Barton
62796722f1 Changed all PACKAGE's to PACKAGE_NAME and all VERSION's to PACKAGE_VERSION. 2003-03-31 15:54:21 +00:00
Alexander Barton
935ffd0dc0 Updated documentation. 2003-03-30 13:46:58 +00:00
Alexander Barton
fa54e6e2a4 Added documentation path to summary output. 2003-03-30 13:46:00 +00:00
Alexander Barton
179e760cf1 Implemented proper "uninstall" target for documentation files. 2003-03-30 13:45:29 +00:00
Alexander Barton
47faa8595a Install documentation files in $(datadir)/doc/ngircd. 2003-03-30 13:31:17 +00:00
Alexander Barton
9ab97b29ae Fixed up bad test during unregistering of services. 2003-03-27 01:24:32 +00:00
Alexander Barton
24df40eca7 Synchronize server connections with server configurations after reloading the configuration. 2003-03-27 01:22:44 +00:00
Alexander Barton
02a22611be Clean up duplicate servers correctly. 2003-03-27 01:21:38 +00:00
Alexander Barton
59a0fb8cd9 New function Conn_SyncServerStruct(). 2003-03-27 01:20:22 +00:00
Alexander Barton
d383703b78 Require at least GNU automake 1.6 to generate build scripts and Makefiles. 2003-03-26 22:43:58 +00:00
Alexander Barton
8291e10b96 Translated documentation to english. 2003-03-26 22:34:33 +00:00
Alexander Barton
312e4aeb86 Updated documentation. 2003-03-23 23:13:15 +00:00
Alexander Barton
ac4f25e3a7 Enhanced (and fiexd) IRC_TRACE(): now shows operators and correct link uptimes. 2003-03-19 21:16:53 +00:00
Alexander Barton
7646739431 New message constant RPL_TRACEOPERATOR_MSG. Changed RPL_TRACESERVER_MSG. 2003-03-19 21:16:16 +00:00
Alexander Barton
5f19a9418e Updated Mac OS X project for Project Builder. 2003-03-19 20:09:51 +00:00
Alexander Barton
3858e28e07 Fixed a "checking for ..." text string. 2003-03-19 17:27:05 +00:00
Alexander Barton
f53455977d Added #include for stdarg.h when using ower own version of vsnprintf(). 2003-03-17 01:12:10 +00:00
Alexander Barton
9ca1f6a988 Removed now obsolete test for A/UX: configure does this job now. 2003-03-17 00:53:52 +00:00
Alexander Barton
1a1ff404a8 - Updated documentation. 2003-03-15 11:00:31 +00:00
Alexander Barton
c755b82dd9 - Removed german documentation (no maintainer). 2003-03-15 10:56:20 +00:00
Alexander Barton
8fc69bb6fb Updated documentation. 2003-03-10 01:00:00 +00:00
Alexander Barton
10edb7c741 Fixed up and enhanced formating of manual pages. 2003-03-10 00:58:06 +00:00
Alexander Barton
ff019dd76f Updated manual page. 2003-03-10 00:35:51 +00:00
Alexander Barton
a004f34447 Updated manual page. 2003-03-10 00:23:50 +00:00
Alexander Barton
10bb43c66e Updated documentation. 2003-03-10 00:23:34 +00:00
Alexander Barton
b6999f10c0 Updated and enhanced the daemon manual page. 2003-03-09 23:08:24 +00:00
Alexander Barton
516064dc06 Fixed some spelling mistakes. 2003-03-09 22:17:35 +00:00
Alexander Barton
a84b9d99a1 Fixed some spelling mistakes -- thanks to ispell ;-) 2003-03-09 22:03:58 +00:00
Alexander Barton
5170ecf045 Updated documentation: translated headers ... 2003-03-09 20:04:44 +00:00
Alexander Barton
23a28fa336 Updated documentation. 2003-03-08 12:34:55 +00:00
Alexander Barton
15b5e1a6eb Translated & updated documentation. 2003-03-07 20:42:20 +00:00
Alexander Barton
ade2fdc9aa Updated documentation. 2003-03-07 17:17:23 +00:00
Alexander Barton
e744936d19 New function Simple_Message(). Better error reporting to clients on connect. 2003-03-07 17:16:49 +00:00
Alexander Barton
4a5b3f34a5 Enlarged buffer for version string ;-) 2003-03-07 14:50:13 +00:00
Alexander Barton
7640aa5190 Updated documentation. 2003-03-07 14:45:10 +00:00
Alexander Barton
35771fa776 Added support for TCP Wrappers; redesigned configuration result output;
Changed some "--enable"/"--disable" switches to "--with"/"--without".
2003-03-07 14:37:30 +00:00
Alexander Barton
439c945d56 Added support for TCP Wrappers. 2003-03-07 14:35:52 +00:00
Alexander Barton
93146b5718 Updated documentation. 2003-03-04 14:12:30 +00:00
Alexander Barton
fd4a6b5dd5 Updated documentation. 2003-03-04 13:46:53 +00:00
Alexander Barton
b896f8acda - better compatibility 2003-02-25 14:07:26 +00:00
Alexander Barton
29bd35bc4f - Added optional support for Rendezvous. 2003-02-23 12:04:05 +00:00
Alexander Barton
f179070113 - New constant RENDEZVOUS_TYPE. 2003-02-23 12:03:39 +00:00
Alexander Barton
f813833ba1 - New switch "--enable-rendezvous" to enable support for Rendezvous. 2003-02-23 12:03:10 +00:00
Alexander Barton
f349b18949 - Updated documentation. 2003-02-23 12:02:39 +00:00
Alexander Barton
aa15257936 - Added new source module "rendezvous". 2003-02-23 12:02:26 +00:00
Alexander Barton
6e0c5698e4 - Updated documentation. 2003-02-21 19:44:00 +00:00
Alexander Barton
cf4ad8d6f7 - Conn_Close() ignores recursive calls for the same link now. 2003-02-21 19:19:27 +00:00
Alexander Barton
2a3f8cc57d - new link "option" constant: CONN_ISCLOSING 2003-02-21 19:18:48 +00:00
Alexander Barton
560c79615c - Updated documentation. 2003-01-31 18:29:06 +00:00
Alexander Barton
d1b2a1c4f9 - Added AC_PREREQ(2.50) to configure.in for better autoconf compatibility. 2003-01-31 18:28:31 +00:00
Alexander Barton
9d8f425a9a Updated documentation. 2003-01-21 21:22:00 +00:00
Alexander Barton
fbec1f1070 The server didn't validate wheather the "target" client of a channel
user mode change is a valid channel member or not.
2003-01-21 21:04:16 +00:00
Alexander Barton
d978d8ddbb - Updated documentation. 2003-01-17 19:10:11 +00:00
Alexander Barton
e07542a1ff - Non-members of a channel could crash the server when trying to change its modes. Fixed. 2003-01-17 19:04:19 +00:00
Alexander Barton
155f26eee2 - Updated documentation. 2003-01-15 14:30:44 +00:00
Alexander Barton
9eee0c883b - Client structures are removed correctly now if an outgoing connection can't be estahlished. 2003-01-15 14:28:59 +00:00
Alexander Barton
939767d502 - New function Client_DestroyNow(). 2003-01-15 14:28:25 +00:00
Alexander Barton
dccb297678 - Updated ProjectBuilder project file for Mac OS X. 2003-01-15 13:52:46 +00:00
Alexander Barton
2152e37722 - Added "HELP" command. 2003-01-15 13:49:20 +00:00
Alexander Barton
28cd2c1191 - Updated documentation. 2003-01-15 13:45:59 +00:00
Alexander Barton
947c512435 - Updated documentation. 2003-01-13 18:58:07 +00:00
Alexander Barton
42c4e6c7b1 - Added support for "TRACE" command. 2003-01-13 18:56:30 +00:00
Alexander Barton
f9cb4a42a0 - Updated documentation. 2003-01-13 12:22:16 +00:00
Alexander Barton
0f3e84f415 - new library "libngtool", reorganized code and directory structure therefore. 2003-01-13 12:20:16 +00:00
Alexander Barton
6a0bd57ec4 - Updated documentation. 2003-01-12 22:19:54 +00:00
Alexander Barton
fc1118cb5a - Enhanced error detection for numerics ("status codes"). 2003-01-12 22:18:46 +00:00
Alexander Barton
070976e443 - removed needless warning/info message. 2003-01-11 15:35:47 +00:00
Alexander Barton
0bcaed3564 - Updated documentation. 2003-01-08 23:00:51 +00:00
Alexander Barton
df00b38a0b - MODE returns the key and user limit for channel members correctly now. 2003-01-08 23:00:12 +00:00
Alexander Barton
aca6310dac - Updated documentation. 2003-01-08 22:29:14 +00:00
Alexander Barton
ff98833136 - Kill_Nick() uses an "faked internal KILL" now. 2003-01-08 22:28:12 +00:00
Alexander Barton
1443bc381c - Enhanced IRC_KILL to get along with Client==Client_ThisServer() for "fake KILLs". 2003-01-08 22:27:13 +00:00
Alexander Barton
9d82635b15 - Fixed IRC_KILL: used wrong connection index. 2003-01-08 22:07:34 +00:00
Alexander Barton
fa80012e71 - Enhanced CHANINFO command for channel keys and user limits. 2003-01-08 22:04:43 +00:00
Alexander Barton
43d9a62473 - Enhanced (and fixed) CHANINFO command (channel keys, user limits). 2003-01-08 22:04:05 +00:00
Alexander Barton
51e1a2e04a - Changed semantics of Client_SetAway(). 2003-01-08 22:03:21 +00:00
Alexander Barton
b8a3178a1b - Updated documentation. 2003-01-08 17:45:56 +00:00
Alexander Barton
bb94d18115 - fixed up propagation of modes with arguments between servers. 2003-01-08 17:45:15 +00:00
Alexander Barton
3b79965e38 - Updated documentation. 2003-01-05 23:06:12 +00:00
Alexander Barton
e82e3c3fdc - Updated german documentation. 2003-01-04 13:14:46 +00:00
Alexander Barton
f39d628512 - Updated documentation. 2003-01-04 13:09:07 +00:00
Alexander Barton
5b33308528 - Restructured documentation: now the main language is english. 2003-01-04 13:07:54 +00:00
Alexander Barton
444fdcf905 - Check functions only on systems that support prototypes, elder cpmpilers
become confused instead!
2003-01-04 10:40:01 +00:00
Alexander Barton
1bf0426aaf - Fixed call of tail, should be more portable now ... 2003-01-04 10:39:14 +00:00
Alexander Barton
8139505829 - Link portabtest agains "true" library. 2003-01-03 22:04:14 +00:00
Alexander Barton
c9540015c8 - Added missing PARAMS(). 2003-01-03 22:03:51 +00:00
Alexander Barton
2070cfe107 - Updated configure.in to use newer semantics of AC_INIT und AM_INIT_AUTOMAKE. 2003-01-03 19:07:09 +00:00
Alexander Barton
91f4aeec20 - Updated documentation. 2003-01-02 17:58:31 +00:00
Alexander Barton
8c1df9ef8d - The server sets a correct away message now when receiving a "MODE +a". 2003-01-02 17:57:09 +00:00
Alexander Barton
c428ac7563 - Renamed RPL_FEATURE_MSG to RPL_ISUPPORT_MSG. 2003-01-02 17:55:28 +00:00
Alexander Barton
e12179aa92 - date in version string conforms to ISO now: YYYY-MM-DD 2003-01-02 16:42:33 +00:00
Alexander Barton
cd9650c07e - Updated documentation. 2003-01-01 13:32:47 +00:00
Alexander Barton
5e3e3ad445 - Adjusted copyright banner to include 2003 :-) 2003-01-01 13:32:23 +00:00
Alexander Barton
e6a352dcfe - Updated documentation. 2003-01-01 13:30:51 +00:00
Alexander Barton
e17976a172 - Fixed up command forwarding: only to servers!
- Forwarding of WHOIS was broken in some situations.
2003-01-01 13:30:35 +00:00
Alexander Barton
ae6a7e7c0b - Fixed up command forwarding: only to servers! 2003-01-01 13:29:40 +00:00
Alexander Barton
717a26e37d - Updated documentation. 2002-12-31 16:18:07 +00:00
Alexander Barton
8dadb17f83 - Changed "once"-server-config-flag into a generic flag.
- Changed semantics of "NGIRCd_Passive".
2002-12-31 16:13:29 +00:00
Alexander Barton
281f7583f5 - New functions Conf_EnableServer(), Conf_DisableServer() and Conf_AddServer().
- Changed "once"-server-config-flag into a generic flag.
2002-12-31 16:12:50 +00:00
Alexander Barton
a7956f334e - New command DISCONNECT. 2002-12-31 16:11:24 +00:00
Alexander Barton
3e026ded6f - New commands CONNECT and DISCONNECT. 2002-12-31 16:11:06 +00:00
Alexander Barton
4e485443d3 - New commands CONNECT and DISCONNECT.
- Validate operator status before syntax checks.
2002-12-31 16:10:55 +00:00
Alexander Barton
01b58a0582 - Fixed test if we are still connected after a KILL command. 2002-12-31 16:09:55 +00:00
Alexander Barton
f83ea4b124 - Updated documentation. 2002-12-30 17:16:39 +00:00
Alexander Barton
b8d7dcec77 - Adjusted includes for new "conn-func.h" header. 2002-12-30 17:15:42 +00:00
Alexander Barton
b77dae3499 - Reorganized code for new modules "conn-func.c" and "conn-func.h". 2002-12-30 17:14:59 +00:00
Alexander Barton
0b04bfa7c0 - New source module "conn-func.c" and "conn-func.h". 2002-12-30 17:14:28 +00:00
Alexander Barton
4953c15bdf - Updated dokumentation. 2002-12-30 16:09:39 +00:00
Alexander Barton
437f2c335f - Renamed functions now found in "conn-zip.c". 2002-12-30 16:07:50 +00:00
Alexander Barton
e68cdf304f - New source files "conn-zip.c" and "conn-zip.h". 2002-12-30 16:07:23 +00:00
Alexander Barton
a2544e496c - Cleaned up handling of server configuration structures. 2002-12-30 00:01:42 +00:00
Alexander Barton
e5b824388d - Fixed up some brackets ("[" and "]") ... 2002-12-28 21:58:02 +00:00
Alexander Barton
214842853c - Optimized tests for <sys/select.h> and <sys/poll.h>. 2002-12-28 21:39:06 +00:00
Alexander Barton
cf6b9e3ec1 - Enhanced check for select() and poll(). 2002-12-28 15:17:46 +00:00
Alexander Barton
50d354bc21 - Removed needless include of <sys/select.h>. 2002-12-28 15:01:45 +00:00
Alexander Barton
3c9da65652 - Added tests for <sys/poll.h> and poll(). 2002-12-28 14:56:21 +00:00
Alexander Barton
8340e4267c - Fixed prefix of error messages of KILL. 2002-12-27 13:35:19 +00:00
Alexander Barton
c9ee3ae4f0 - Updated documentation. 2002-12-27 13:24:55 +00:00
Alexander Barton
e21b9d842c - If the server can't close a socket, it panics now.
- Quite enhanced logging :-)
2002-12-27 13:20:13 +00:00
Alexander Barton
15e4f67402 - Nicer log messages ;-) 2002-12-27 13:17:32 +00:00
Alexander Barton
01bec0daa2 - KILL can't kill server-links any more. 2002-12-27 13:17:04 +00:00
Alexander Barton
d19813cc4b - new message ERR_CANTKILLSERVER_MSG. 2002-12-27 13:15:16 +00:00
Alexander Barton
cf7660c975 - Updated documentation. 2002-12-26 18:47:01 +00:00
Alexander Barton
9c5c0c7c84 - Updated documentation. 2002-12-26 18:44:41 +00:00
Alexander Barton
4d2f279d2d - fixed KILL: you can kill yourself now without crashing the server;
QUIT isn't send to other servers after the KILL any more.
2002-12-26 18:41:00 +00:00
Alexander Barton
371fc25967 - Updated documentation. 2002-12-26 17:19:55 +00:00
Alexander Barton
b316c380ad - replaced some calls to sprintf() with snprintf() -- more secure :-) 2002-12-26 17:14:48 +00:00
Alexander Barton
695631b298 - replaced a lot of strcpy() calls with strlcpy() which is more secure. 2002-12-26 17:04:54 +00:00
Alexander Barton
6626395c88 - replaced a lot of strcat() calls with strlcat() which is more secure. 2002-12-26 16:48:14 +00:00
Alexander Barton
0ced4181b0 - replaced all strncpy()'s and strncat()'s with strlcpy() and strlcat(). 2002-12-26 16:25:43 +00:00
Alexander Barton
4f6f84e7e1 - include <sys/types.h>, if available. 2002-12-26 14:48:05 +00:00
Alexander Barton
b8456d1ba6 - addes required libngircd.a library to portabcheck_LDADD. 2002-12-26 14:46:28 +00:00
Alexander Barton
fbdf85b553 - strlcat() and strlcpy() replacement functions. 2002-12-26 14:34:11 +00:00
Alexander Barton
e13cb291dd - added prototypes for replacement functions. 2002-12-26 13:26:34 +00:00
Alexander Barton
8193bf2070 - added tests for strlcpy() and strlcat(). 2002-12-26 13:20:07 +00:00
Alexander Barton
5efd0987f3 - added tests for replacement functions. 2002-12-26 13:19:36 +00:00
Alexander Barton
60cf07c875 - added strlcpy.c for strlcpy() and strlcat() replacement functions. 2002-12-26 13:18:46 +00:00
Alexander Barton
3c738ed46d - definition of CONFIG_FILE and MOTD_FILE is now compatible with -Wtraditional. 2002-12-26 13:17:56 +00:00
Alexander Barton
9353a4a9cb - reverted last patch: now compatible with -Wtraditional of GCC 3. 2002-12-26 13:16:54 +00:00
Alexander Barton
18dfd96635 - Updated documentation. 2002-12-25 13:33:54 +00:00
Alexander Barton
77751e0fbf - GCC: add "-Wtraditional -Wpointer-arith -Wstrict-prototypes" to CFLAGS. 2002-12-25 13:23:11 +00:00
Alexander Barton
d9a13b317e - fixed some warnings that showed up with -Wtraditional 2002-12-25 13:22:43 +00:00
Alexander Barton
d449496aa4 - Updated documentation. 2002-12-24 15:10:14 +00:00
Alexander Barton
2f90341225 - Updated documentation. 2002-12-22 23:51:46 +00:00
Alexander Barton
ab44e1c6cc - new messages: RPL_FEATURE, RPL_LOCALUSERS and RPL_NETUSERS. 2002-12-22 23:32:05 +00:00
Alexander Barton
a3f59f1a5b - new numeric on login: RPL_FEATURE 2002-12-22 23:31:21 +00:00
Alexander Barton
212d36a33c - enhanced LUSERS reply: RPL_LOCALUSERS, RPL_NETUSERS. 2002-12-22 23:30:33 +00:00
Alexander Barton
d0304b19a2 - new Functions: Client_MaxUserCount(), Client_MyMaxUserCount, Adjust_Counters(). 2002-12-22 23:29:09 +00:00
Alexander Barton
c69b208bd4 - Updated documentation. 2002-12-19 04:38:58 +00:00
Alexander Barton
397c5e2e02 - renamed variables to fit new signal handler.
- moved call to NGIRCd_Rehash() to Conn_Handler().
2002-12-19 04:35:26 +00:00
Alexander Barton
77c4c015e3 - renamed variables to fit new signal handler. 2002-12-19 04:33:27 +00:00
Alexander Barton
43a4bc5b8b - New signal handler. 2002-12-19 04:29:59 +00:00
Alexander Barton
1df4081e50 - Updated documentation. 2002-12-18 16:28:36 +00:00
Alexander Barton
b9d6a03e25 - Updated documentation. 2002-12-18 14:19:58 +00:00
Alexander Barton
8841d87365 - fixed user mode propagation over server-links (IRC operator, away, ...) 2002-12-18 14:16:21 +00:00
Alexander Barton
d9e3f834d7 - fixed RPL_STATSCOMMANDS_MSG 2002-12-18 14:03:14 +00:00
Alexander Barton
210282d00f - implemented subfunction "m" of STATS command. 2002-12-18 13:55:41 +00:00
Alexander Barton
17f7c6d3ed - new function Parse_GetCommandStruct(). 2002-12-18 13:53:20 +00:00
Alexander Barton
a02bf31d50 - new functions Conn_ResetWCounter() and Conn_WCounter(). 2002-12-18 13:50:22 +00:00
Alexander Barton
98677b4348 - "STATS l" now only shows server-server-links and the own connection. 2002-12-18 13:07:46 +00:00
Alexander Barton
03d5fd6cb7 - Updated documentation. 2002-12-18 12:19:07 +00:00
Alexander Barton
3a811ef563 - Validate_Config(): removed unused variable "i". 2002-12-18 02:53:36 +00:00
Alexander Barton
3e4f58e416 - If Conf_MaxConnections is "ulimited" (<1) it is limited to FD_SETSIZE. 2002-12-18 02:52:51 +00:00
Alexander Barton
b7be46ed8a - validate Conf_MaxConnections against FD_SETSIZE if available;
- fixed up some log messages and enhanced configuration validation.
2002-12-18 02:47:12 +00:00
Alexander Barton
902ad91212 - new allocated connection structures will be initialized correctly now. 2002-12-17 11:46:54 +00:00
Alexander Barton
ca584143c6 - Dokumentation aktualisiert. 2002-12-16 23:13:10 +00:00
Alexander Barton
892144dc71 - new constant RPL_YOURESERVICE_MSG, ERR_CHANNELISFULL_MSG, ERR_BADCHANNELKEY_MSG.
- fixed ERR_PASSWDMISMATCH_MSG.
2002-12-16 23:11:59 +00:00
Alexander Barton
8d024d05d2 - new constant MAX_SERVICES,
- added k and l modes to CHANMODES.
2002-12-16 23:10:56 +00:00
Alexander Barton
69ad0e386e - Implemented channel modes k (key) and l (user limit). 2002-12-16 23:06:46 +00:00
Alexander Barton
2e88dd72d1 - New functions Channel_[Set]Key(), Channel_[Set]MaxUsers. 2002-12-16 23:05:24 +00:00
Alexander Barton
7924fafb25 - fixed some error messages and prefixes. 2002-12-16 17:14:57 +00:00
Alexander Barton
7f61f413f4 - fixed broken handling of modes received from other servers. 2002-12-16 10:52:53 +00:00
Alexander Barton
865c43080a - Updated documentation. 2002-12-15 16:30:33 +00:00
Alexander Barton
c0d74a3860 - fixed some parsing bugs.
- better logging.
2002-12-15 16:29:18 +00:00
Alexander Barton
3c7909ccec - Dokumentation aktualisiert. 2002-12-15 15:54:11 +00:00
Alexander Barton
48ec815e99 - modified test suite to reflect changes in MODE parser. 2002-12-15 15:52:34 +00:00
Alexander Barton
80c6dc86ed - new (and much more flexible!) MODE parser 2002-12-15 15:51:24 +00:00
Alexander Barton
25ca2b3cc5 - removed Conf_MaxPChannels and reverted to old behavior. 2002-12-14 13:36:19 +00:00
Alexander Barton
f7fe170a5e Dokumentation aktualisiert. 2002-12-14 13:33:44 +00:00
Alexander Barton
e65ab4a3f7 - Dokumentation aktualisiert. 2002-12-14 13:32:30 +00:00
Alexander Barton
2694017426 - Conf_MaxPChannels is considered properly in channel mode changes now. 2002-12-14 13:24:09 +00:00
Alexander Barton
00e75ccd7d - fixed up Conf_MaxJoins test on JOIN. 2002-12-14 13:23:11 +00:00
Alexander Barton
e907816380 - fixed up Channel_PCount() and Channel_CountForUser(). 2002-12-14 13:21:56 +00:00
Alexander Barton
b55915c1fe - Dokumentation aktualisiert. 2002-12-14 13:19:39 +00:00
Alexander Barton
5b8b3b8384 - maximum channels per user limit implemented. 2002-12-13 17:53:32 +00:00
Alexander Barton
9f74b95015 - new message ERR_TOOMANYCHANNELS_MSG. 2002-12-13 17:51:41 +00:00
Alexander Barton
8b7b23cf8f - new configuration variables: MaxJoins, MaxPChannels. 2002-12-13 17:32:33 +00:00
Alexander Barton
b7eb5f66dc - new function Channel_CountForUser(). 2002-12-13 17:22:57 +00:00
Alexander Barton
427be23b6e - adjusted generation of cvs-version.h to new file header format. 2002-12-12 12:36:41 +00:00
Alexander Barton
ba767481d9 - removed old ID tag 2002-12-12 12:33:14 +00:00
Alexander Barton
490f28ffd1 - new file header format (in english);
- new file ident semantics.
2002-12-12 12:24:18 +00:00
Alexander Barton
c7f075236b - new file header format (in english). 2002-12-12 12:23:43 +00:00
Alexander Barton
44a2b3cf69 - added missing include of stdio.h header for sprintf(). 2002-12-12 11:40:41 +00:00
Alexander Barton
f0d633b5ac - new file header format. 2002-12-12 11:37:11 +00:00
Alexander Barton
0f3f03b51d - fixed up broken $Id field in new file header ... 2002-12-12 11:31:21 +00:00
Alexander Barton
fa7b3f0e4c - new file header format. 2002-12-12 11:30:23 +00:00
Alexander Barton
6725d7893c - translated file header and comments to english;
- new file ident semantics.
2002-12-12 11:26:08 +00:00
Alexander Barton
11c4e786fa - Dokumentation aktualisiert. 2002-12-06 17:03:46 +00:00
Alexander Barton
b99af4fa47 - IRC Operators can KILL users now. 2002-12-06 17:02:39 +00:00
Alexander Barton
6591f17f0a - Logging von Verbindungen, die geschlossen werden/wurden verbessert. 2002-12-03 18:57:10 +00:00
Alexander Barton
9f122037ae - Logging von doppelten ID's verbessert. 2002-12-03 18:56:33 +00:00
Alexander Barton
cde9dfdb77 - Verhalten von Conn_RecvQ() und Conn_SendQ() bei Kompression korrigiert. 2002-12-02 13:56:24 +00:00
Alexander Barton
f0349f5266 - bei ISON und USERHOST fehlte im Ergebnis-String der korrekte Absender. 2002-12-02 13:45:51 +00:00
Alexander Barton
4807c4e636 - Dokumentation aktualisiert. 2002-12-02 13:44:36 +00:00
Alexander Barton
c1cafbddfe - Dokumentation aktualisiert. 2002-12-02 13:20:41 +00:00
Alexander Barton
bad7ac62a7 - STATS: Unterfunktion "L" implementiert. 2002-12-02 13:20:02 +00:00
Alexander Barton
39219230b2 - neue Befehle: Conn_StartTime(), Conn_SendQ(), Conn_RecvQ(), Conn_SendMsg(),
Conn_RecvMsg(), Conn_SendBytes[Zip](), Conn_RecvBytes[Zip]().
2002-12-02 13:19:37 +00:00
Alexander Barton
1e5fa014ba - RPL_STATSLINKINFO_MSG ueberarbeitet, RPL_STATSLINKINFOZIP_MSG eingefuehrt. 2002-12-02 13:17:46 +00:00
Alexander Barton
0efec7c094 - Dokumentation aktualisiert. 2002-12-01 13:00:50 +00:00
Alexander Barton
c3a892e165 - Dokumentation aktualisiert. 2002-11-30 22:18:09 +00:00
Alexander Barton
2e02da291a - Konfiguration wird nun besser validiert (Laenge, Zahlen). 2002-11-30 22:15:49 +00:00
Alexander Barton
a39f479163 - Tests auf ctype.h und isdigit() hinzugefuegt. 2002-11-30 22:14:47 +00:00
Alexander Barton
e50d568f25 - bei STATS wurde der Target-Server aus dem falschen Argument bestimmt. 2002-11-30 18:10:01 +00:00
Alexander Barton
0c471b84f7 - neues Source-Modul "irc-info"; neuer Befehl STATS. 2002-11-30 17:39:56 +00:00
Alexander Barton
1e59617d2c - Parser auf Befehlstabelle umgestellt. 2002-11-30 15:04:57 +00:00
Alexander Barton
e93f545c74 - "Text-Prefix" fuer Server-Notices auf "" gesetzt. 2002-11-29 17:38:17 +00:00
Alexander Barton
a1437f1ad0 - der Server verschickt keine "NOTICE AUTH"'s mehr. 2002-11-29 17:36:50 +00:00
Alexander Barton
1d8cb34bc8 - "NOTICE AUTH" und Statistiken werden im Strict-RFC-Modus nicht mehr erzeugt. 2002-11-29 13:13:42 +00:00
Alexander Barton
7a6f99a607 - Dokumentation aktualisiert. 2002-11-29 11:42:58 +00:00
Alexander Barton
93a39e8782 - Vor dem Schliessen einer Verbindung wird versucht, den Buffer zu leeren. 2002-11-28 16:56:20 +00:00
Alexander Barton
a1dff15252 - Dokumentation aktualisiert. 2002-11-28 14:32:18 +00:00
Alexander Barton
ee2c0f7701 - SQUIT wird nicht mehr zweimal fuer einen Server verschickt. 2002-11-28 14:31:43 +00:00
Alexander Barton
d3a6537fce - beim Umschalten auf Kompression wurden evtl. bereits gelesene Daten nicht
entpackt, der Datenstrom war somit dann korrumpiert.
2002-11-28 12:17:38 +00:00
Alexander Barton
b0b797b396 - Logging bei Prefix-Fehlern verbessert. 2002-11-28 11:02:50 +00:00
Alexander Barton
2de5b5cf4a - Dokumentation aktualisiert. 2002-11-26 23:28:49 +00:00
Alexander Barton
2625ce7875 - Dokumentation aktualisiert. 2002-11-26 23:20:19 +00:00
Alexander Barton
65f3adca21 - Unterstuetzung fuer komprimierte Server-Server-Links implementiert. 2002-11-26 23:07:24 +00:00
Alexander Barton
ecde730ec4 - neue Funktionen: Conn_SetOption(), Conn_UnsetOption(), Conn_Options().
- wenn mit zlib-Support: Conn_InitZip().
2002-11-26 23:06:51 +00:00
Alexander Barton
e553829a59 - Test auf zlib sowie neue Option "--disable-zlib". 2002-11-26 23:05:06 +00:00
Alexander Barton
7cc12a3d63 - Projektdatei aktualisiert (u.a. Compiler- und Linker-Flags) 2002-11-26 08:37:35 +00:00
Alexander Barton
ad98f2c20d - Falsche Variable korrigiert ... 2002-11-26 08:36:34 +00:00
Alexander Barton
dc8ca3dfaf - nun ueberfluessige Meldung entfernt. 2002-11-25 01:01:59 +00:00
Alexander Barton
ae128734ac - Dokumentation aktualisiert. 2002-11-24 18:47:15 +00:00
Alexander Barton
f86bbd718d - neuer Befehl IRC_TIME(). 2002-11-24 18:45:53 +00:00
Alexander Barton
283aed75cf - neuer IRC-Befehl "TIME". 2002-11-24 18:45:43 +00:00
Alexander Barton
15d78412bc - neue Konstante RPL_TIME_MSG. 2002-11-24 18:45:31 +00:00
Alexander Barton
1fd9216ca4 - MOTD kann nun auch an andere Server delegiert werden. 2002-11-24 16:36:03 +00:00
Alexander Barton
a7eb18db4e - Dokumentation aktualisiert. 2002-11-24 16:14:54 +00:00
Alexander Barton
5ecb00ed23 - volle Lesebuffer und Timeouts behandelt Conn_Handle() nun besser.
- Handle_Buffer() liefert nun ein Ergebnis.
2002-11-23 17:04:07 +00:00
Alexander Barton
5e89b0c82d - Dokumentation aktualisiert. 2002-11-23 16:19:38 +00:00
Alexander Barton
22b7b07932 - select() in Try_Write() hat falschen (keinen!) Timeout verwendet;
- der Timeout fuer das select() in Conn_Handler() ist nun TIME_RES (=2).
2002-11-23 16:09:57 +00:00
Alexander Barton
57bc0d7895 - neue Konstante TIME_RES: "Zeitaufloesung" des Servers. 2002-11-23 16:08:18 +00:00
Alexander Barton
5334778dbd - Dokumentation aktualisiert ... 2002-11-23 15:04:28 +00:00
Alexander Barton
1dd953b0c0 - Test-Suite an korrigiertest RPL_UMODEIS angepasst. 2002-11-22 23:45:51 +00:00
Alexander Barton
fa3dbfd8d6 - RELOAD in REHASH umbenannt.
- neue Funktion WHOWAS.
2002-11-22 23:33:00 +00:00
Alexander Barton
4eb57b590b - IRC_RELOAD() in IRC_REHASH() umbenannt. 2002-11-22 23:32:29 +00:00
Alexander Barton
12bf203167 - neue Funktion IRC_WHOWAS() begonnen. 2002-11-22 23:31:56 +00:00
Alexander Barton
cf2d479437 - NGIRCd_Reload() in NGIRCd_Rehash() umbenannt. 2002-11-22 23:31:23 +00:00
Alexander Barton
413fed9858 - Dokumentation aktualisiert. 2002-11-22 23:30:36 +00:00
Alexander Barton
60f14cca38 - neue Meldungen: RPL_STATSLINKINFO, RPL_STATSCOMMANDS, RPL_ENDOFSTATS,
RPL_WHOWASUSER, RPL_ENDOFWHOWAS und ERR_WASNOSUCHNICK.
2002-11-22 23:08:04 +00:00
Alexander Barton
4f54760c4b - Dokumentation aktualisiert [RPL_UMODEIS] 2002-11-22 22:57:14 +00:00
Alexander Barton
c0e7a0124d - RPL_UMODEIS hat Code 221, nicht 211 ... *argl* 2002-11-22 22:56:58 +00:00
Alexander Barton
b8cf379fd6 - Dokumentation aktualisiert [ChanMode P nur noch fuer IRC-Op's] 2002-11-22 18:29:46 +00:00
Alexander Barton
085a03d107 - Channel-Mode "P" ("persistent") kann nur noch von IRC-Ops gesetzt werden. 2002-11-22 18:28:22 +00:00
Alexander Barton
ab788a2ed1 - Dokumentation aktualisiert [RELOAD]. 2002-11-22 18:01:59 +00:00
Alexander Barton
4c6e07c309 - neue Funktion NGIRCd_Reload(). 2002-11-22 17:59:54 +00:00
Alexander Barton
e311cc0140 - Listen-Sockets werden ueber neue Funktion Conn_InitListeners() erzeugt.
- neue Funktion NGIRCd_Reload().
- Logging bei empfangenen Signalen verbessert.
- SIGHUP ruft nun NGIRCd_Reload() auf.
2002-11-22 17:59:43 +00:00
Alexander Barton
a5c9229084 - neue Funktion IRC_RELOAD(). 2002-11-22 17:58:41 +00:00
Alexander Barton
a0c032b2ff - neue Funktionen Conn_InitListeners() und Conn_ExitListeners(). 2002-11-22 17:58:19 +00:00
Alexander Barton
03ec91f943 - bessere Log-Meldungen. 2002-11-22 17:57:40 +00:00
Alexander Barton
7233b72145 - Channel_InitPredefined() prueft nun, ob ein Channel bereits existiert. 2002-11-22 17:57:15 +00:00
Alexander Barton
1656841f25 - neuer Befehl IRC_RELOAD(). 2002-11-22 16:36:43 +00:00
Alexander Barton
799511d472 - Befehle sortiert,
- neuer Befehl RELOAD.
2002-11-22 16:36:02 +00:00
Alexander Barton
ffb90f4cb5 - Logging vom Resolver und Connection-Statistiken verbessert. 2002-11-22 16:35:19 +00:00
Alexander Barton
e46b124ca4 - Dokumentation aktualisiert. 2002-11-20 15:50:13 +00:00
Alexander Barton
c6b9f3a13d - angenommene Socketes werden nun korrekt auf "non-blocking" gestellt;
- beim Senden und Empfangen wird EAGAIN ("Blockierung") nun abgefangen.
2002-11-20 15:48:41 +00:00
Alexander Barton
6d5b606c46 - Dokumentation aktualisiert. 2002-11-20 11:14:16 +00:00
Alexander Barton
dd09b17eae - Fehler-Ausgaben verbessert (Prefix-Fehler). 2002-11-20 10:54:24 +00:00
Alexander Barton
caa7049e2b - Dokumentation aktualisiert [asyncrone Server-Passwoerter]. 2002-11-19 12:50:48 +00:00
Alexander Barton
b2615bcc76 - Server identifizieren sich nun mit asyncronen Passwoertern. 2002-11-19 12:50:20 +00:00
Alexander Barton
1c0ded41af - Rechtschreibfehler korrigiert ;-) 2002-11-18 18:49:34 +00:00
Alexander Barton
7bbdfb3d84 - anstelle von "ListenPorts" wird nun korrekt "Ports" ausgegeben. 2002-11-18 18:47:42 +00:00
Alexander Barton
0086d2771d - corrected a permission problem (Sean Reifschneider). 2002-11-18 14:11:45 +00:00
Alexander Barton
98bc7d4fb7 - ProjectBuilder-Projektdatei aktualisiert. 2002-11-18 14:06:47 +00:00
Alexander Barton
be9df69116 - doc/en/sample-ngircd.conf in Makefile-System ergaenzt. 2002-11-18 14:06:29 +00:00
Alexander Barton
f80a5ae1de - Dokumentation aktualisiert. 2002-11-15 22:08:30 +00:00
Alexander Barton
b1a148905a - unter HP-UX wird nun _XOPEN_SOURCE_EXTENDED definiert. Fuer den gcc
unter 11.11 ist dies erforderlich.
2002-11-15 22:08:19 +00:00
Alexander Barton
8457fca570 - Dokumentation aktualisiert. 2002-11-11 13:07:27 +00:00
Alexander Barton
999897f587 - Dokumentation aktualisiert. 2002-11-11 01:08:55 +00:00
Alexander Barton
ab2d1ca41e - Dokumentation fuer A/UX ueberarbeitet. 2002-11-11 00:59:11 +00:00
Alexander Barton
ee489ee6d7 - Dokumentation aktualisiert. 2002-11-11 00:54:44 +00:00
Alexander Barton
6250dcb1dc - Fehler-Handling von connect() gefixed: der Server kann sich nun auch
unter A/UX wieder zu anderen verbinden.
2002-11-11 00:54:25 +00:00
Alexander Barton
797f9170d7 - Test-Suite an A/UX angepasst. 2002-11-10 14:28:06 +00:00
Alexander Barton
071686ac6e - Dokumentation aktualisiert. 2002-11-10 13:39:17 +00:00
Alexander Barton
70c9c05153 - User und Gruppe werden nun sowohl numerisch als auch namentlich angezeigt. 2002-11-10 13:38:41 +00:00
Alexander Barton
bf84670aaa - Dokumentation aktualisiert bzw. begonnen. 2002-11-08 23:24:54 +00:00
Alexander Barton
d35c0137b7 - Dokumentation aktualisiert. 2002-11-08 23:11:48 +00:00
Alexander Barton
ae39724a63 - in ServerUID und ServerGID kann nun jeweils auch der Name (und nicht nur
die numerische ID) verwendet werden.
2002-11-08 23:09:26 +00:00
Alexander Barton
8da254ea74 - Dokumentation aktualisiert. 2002-11-08 22:19:48 +00:00
Alexander Barton
47c8bcc8c9 - Dokumentation aktualisiert. 2002-11-05 14:30:52 +00:00
Alexander Barton
9523e28179 - IRC_Server() ruft nun Conn_SetServer() zur Server-Registrierung auf. 2002-11-05 14:18:59 +00:00
Alexander Barton
a4d5ca633a - Neue Funktion Conn_SetServer().
- Einige assert()'s aufgeraumt.
2002-11-05 14:18:39 +00:00
Alexander Barton
3102c550ff - neue Funktion Conn_SetServer(). 2002-11-05 14:18:13 +00:00
Alexander Barton
51dd80c48b - Dokumentation aktualisiert. 2002-11-04 20:04:18 +00:00
Alexander Barton
14e870e2ec - Code-Formatierung korrigiert (da waren Tabs wo keine hin gehoerten). 2002-11-04 19:25:26 +00:00
Alexander Barton
a6265aa0df - falsche Konstante korrigiert ... *argl*! 2002-11-04 13:26:00 +00:00
Alexander Barton
4c870f4be9 - Server und "normale" Clients werden wieder korrekt unterschieden. 2002-11-04 12:34:22 +00:00
Alexander Barton
a29e37a4c1 - Semantik der Conn_xxxFlag()-Funktionen geaendert. 2002-11-04 12:31:27 +00:00
Alexander Barton
aabe013dd0 - Dokumentation aktualisiert: neue Variable MaxConnections. 2002-11-02 23:13:18 +00:00
Alexander Barton
07984e0b81 - Dokumentation aktualisiert. 2002-11-02 23:11:38 +00:00
Alexander Barton
7ec3603996 - Dokumentation aktualisiert. 2002-11-02 23:01:27 +00:00
Alexander Barton
b991de0f15 - Connection-Strukturen werden nun "pool-weise" verwaltet; der Pool wird
bei Bedarf bis zu einem konfigurierten Limit vergroessert.
- neue Funktionen Conn_First(), Conn_Next(), Conn_ClearFlags(), Conn_Flag()
  und Conn_SetFlag().
2002-11-02 23:00:45 +00:00
Alexander Barton
601f0ede61 - Modul an neues Connection-Handling angepasst. 2002-11-02 22:59:41 +00:00
Alexander Barton
0d32a3b4fe - neue Konfigurationsvariable "MaxConnections". 2002-11-02 22:59:01 +00:00
Alexander Barton
650f9a2d9e - neue Konfigurationsvariable "Conf_MaxConnections". 2002-11-02 22:58:41 +00:00
Alexander Barton
05839597bf Neue Funktionen: Conn_First(), Conn_Next(), Conn_ClearFlags(), Conn_SetFlag() und Conn_Flag(). 2002-11-02 22:58:19 +00:00
Alexander Barton
8eac8bcbfc MAX_CONNECTIONS durch CONNECTION_POOL ersetzt. 2002-11-02 22:57:41 +00:00
Alexander Barton
8dd5ea0729 - GCC-Option "-ansi" hat sich leider nicht bewaehrt ... wieder entfernt. 2002-10-22 23:36:04 +00:00
Alexander Barton
d98e7def76 - beim GCC wird nun die "-ansi"-Option gesetzt. 2002-10-22 23:26:28 +00:00
Alexander Barton
5b25c8ccd0 - Verbindungsstatistik ein wenig klarer formuliert. 2002-10-22 23:25:29 +00:00
Alexander Barton
135abb5d74 - AdminEMail ist nun auch korrekt gesetzt. 2002-10-21 13:45:23 +00:00
Alexander Barton
12cad28ee8 - Anpassungen bzw. Fixes fuer "strict RFC"-Mode. 2002-10-21 13:45:07 +00:00
Alexander Barton
b840be9875 - ausgehende Verbindungen mit ID 0 konnten nicht aufgebaut werden ... :-/
- einige Debug-Ausgaben erweitert.
2002-10-15 09:24:54 +00:00
Alexander Barton
863daa29cb - Dokumentation aktualisiert. 2002-10-14 22:53:41 +00:00
Alexander Barton
3cf845fbfb - Segfault unter hoher Netzaktivitaet behoben: in Conn_Close() wird die
Connection-Struktur nun frueher als "ungueltig" markiert.
- besseres Error-Logging.
2002-10-14 22:21:00 +00:00
Alexander Barton
c49bee8d0b - RPL_YOURHOST_MSG nochmals leicht geaendert ... 2002-10-11 02:32:09 +00:00
Alexander Barton
0dfb771671 - Dokumentation aktualisiert. 2002-10-11 02:27:33 +00:00
Alexander Barton
452d98f329 - RPL_YOURHOST_MSG ist nun ircII-kompatibel :-) 2002-10-11 02:16:14 +00:00
Alexander Barton
a981f517f3 - in der Uebersicht werden die Pfad-Defines nicht mehr in CFLAGS angezeigt. 2002-10-11 00:49:49 +00:00
Alexander Barton
736bacde90 - Es wird nun laenger auf Resolver-Ergebnisse gewartet, der Login aber
sofort fortgesetzt, so ein Ergebnis eintrifft.
2002-10-10 15:01:12 +00:00
Alexander Barton
df0eb17172 - neue Funktion Conn_ResetPenalty(). 2002-10-10 15:00:33 +00:00
Alexander Barton
f274ec0652 - Dokumentation aktualisiert. 2002-10-10 15:00:09 +00:00
Alexander Barton
b7593369fb - Dokumentation aktualisiert. 2002-10-09 21:17:50 +00:00
Alexander Barton
ef407ea50c - Dokumentation aktualisiert. 2002-10-09 17:10:15 +00:00
Alexander Barton
345b9a3217 - "schneller Server-Reconnect" wird nun nur dann ausgefuehrt, wenn die
Verbindung zuvor "lange genug" aufgebaut war (z.B. also nicht mehr, wenn
  der Peer sofort beim Connect ein fatales ERROR liefert).
2002-10-09 17:07:22 +00:00
Alexander Barton
af719e60c5 - double in DOUBLE geaendert (ist in portab.h nun definiert). 2002-10-09 17:02:49 +00:00
Alexander Barton
84022a12fd - neue Datentypen LONG, ULONG und DOUBLE. 2002-10-09 16:53:30 +00:00
Alexander Barton
c7b55aa6f4 - verwendete Datentypen aufgeraumt: beispielsweise INT32 ist nun oft ein LONG. 2002-10-09 16:53:02 +00:00
Alexander Barton
5e70a131e9 - Dokumentation aktualisiert. 2002-10-09 13:42:32 +00:00
Alexander Barton
1e83e6662f - fehlenden Return-Wert ergaenzt (ich Dubel). 2002-10-09 13:35:32 +00:00
Alexander Barton
b6c049cb3c - Client wird nun via NOTICEs ueber Resolver-Status informiert. 2002-10-09 13:34:19 +00:00
Alexander Barton
39d7b014cf - NOTICE liefert nun nie(!) einen Fehler, auch nicht, wenn Client noch nicht registriert. 2002-10-09 13:33:19 +00:00
Alexander Barton
bd645f5095 - neue Konstante NOTICE_TXTPREFIX. 2002-10-09 13:15:45 +00:00
Alexander Barton
856f24eb7e - Server-NOTICEs haben nun ein "Text-Prefix". 2002-10-09 13:15:18 +00:00
Alexander Barton
f060db5ec5 - Connection-Statistik implementiert.
- Server-NOTICEs haben nun ein "Text-Prefix".
2002-10-09 13:15:08 +00:00
Alexander Barton
180eb810cf - "make distcheck" lief seit der Aenderung gestern nicht mehr durch. Fixed. 2002-10-08 18:30:03 +00:00
Alexander Barton
25f32ce8b8 - bei CVS-Versionen wird nun das Datum der letzten CVS-Aenderung angezeigt,
Versionsnummer entsprechend angepasst.
2002-10-07 21:16:12 +00:00
Alexander Barton
5eaf15574a - Dokumentation aktualisiert. 2002-10-04 12:43:27 +00:00
Alexander Barton
467e76aa32 - der Puffer fuer das Prefix war zu klein. 2002-10-04 12:39:58 +00:00
Alexander Barton
63bda7de11 - Dokumentation aktualisiert. 2002-10-04 11:22:20 +00:00
Alexander Barton
ec474a4bd2 - "format-string-bugs", die zum Abbruch des Servers fuehrten, behoben. 2002-10-04 11:21:46 +00:00
Alexander Barton
74ff9828de - kleinere "code cleanups". 2002-10-03 21:49:59 +00:00
Alexander Barton
25530fff71 - Dokumentation aktualisiert. 2002-10-03 21:03:59 +00:00
Alexander Barton
df2bd0e6fb - buffer overflow behoben. 2002-10-03 21:03:11 +00:00
Alexander Barton
1ed0c6926e - Dokumentation aktualisiert. 2002-10-03 16:10:43 +00:00
Alexander Barton
7a2b49a629 - Dokumentation aktualisiert. 2002-10-03 16:04:29 +00:00
Alexander Barton
a33105dcd1 - Syntax von RPL_MYINFO_MSG korrigiert (liefert nun vier Parameter). 2002-10-03 15:49:17 +00:00
Alexander Barton
a5b5952598 - RPM "Spec-File" in Source-Tree aufgenommen. 2002-10-01 09:58:29 +00:00
Alexander Barton
c6e936d6c2 - Dokumentation aktualisiert. 2002-10-01 09:57:26 +00:00
Alexander Barton
ab2abee1fe - neues Verzeichnis "contrib" angelegt. 2002-10-01 09:57:08 +00:00
Alexander Barton
67d79b92e6 - fehlerhaften "Socket-Test-Patch" korrigiert. 2002-09-26 16:11:26 +00:00
Alexander Barton
9ba956ca8b - Dokumentation aktualisiert. 2002-09-26 16:02:38 +00:00
Alexander Barton
c50ecda715 - Conn_Write() prueft nun, ob der Socket noch offen ist, ehe Daten gesendet werden. 2002-09-26 15:59:02 +00:00
Alexander Barton
9d928b240b - Dokumentation aktualisiert. 2002-09-23 22:07:42 +00:00
Alexander Barton
870fa2797c - Dokumentation aktualisiert. 2002-09-23 21:52:58 +00:00
Alexander Barton
8d1efc81f6 - per Default werden nun nur noch 5 Sessions parallel gestartet. 2002-09-23 20:54:17 +00:00
Alexander Barton
2b6dbb07e8 - in RPL_YOURHOST_MSG wurde ein fehlerhafter Versionsstring geliefert. 2002-09-22 21:40:33 +00:00
Alexander Barton
7caf3f8429 - Dokumentation aktualisiert. 2002-09-22 21:40:15 +00:00
Alexander Barton
1a6f88f218 - Dokumentation aktualisiert. 2002-09-20 15:45:02 +00:00
Alexander Barton
06cb16580e - getpid.sh wird nun auf bei "make distcheck" gefunden. 2002-09-20 15:39:24 +00:00
Alexander Barton
2b690fff78 - Dokumentation aktualisiert. 2002-09-20 15:26:26 +00:00
Alexander Barton
7058a8c006 - das Test-Binary wurde nicht immer kopiert. 2002-09-20 15:12:42 +00:00
Alexander Barton
b71db1a9a5 - auch unter Cygwin wird ngircd-TEST bei "make clean" nun entfernt. 2002-09-20 15:09:44 +00:00
Alexander Barton
420c96d17b - das ngIRCd-Binary fuer die Tests wird nun kopiert, nicht mehr verlinkt. 2002-09-20 15:08:12 +00:00
Alexander Barton
6817978ddb - Dokumentation aktualisiert. 2002-09-20 14:57:17 +00:00
Alexander Barton
efedfe12ff - Die PID des Test-Servers wird nun mit dem Script "getpid.sh" ermittelt. 2002-09-20 14:46:55 +00:00
Alexander Barton
90ab7c7c48 - die ermittelte PID des ngIRCd wird besser validiert (leer?). 2002-09-20 13:57:01 +00:00
Alexander Barton
fa9e38b36f - Dokumentation aktualisiert. 2002-09-19 10:19:32 +00:00
Alexander Barton
33bda862da - Fehler bei Validierung von "AdminInfo2" behoben. 2002-09-19 10:19:12 +00:00
Alexander Barton
ef2b5eea53 - Versionsnummer fuer CVS-HEAD wieder auf "CurrentCVS" gesetzt. 2002-09-19 09:59:47 +00:00
Alexander Barton
45279951aa - Dokumentation aktualisiert. 2002-09-19 09:35:05 +00:00
Alexander Barton
47b4581907 - Dokumentation aktualisiert. 2002-09-19 09:27:26 +00:00
Alexander Barton
b5d6597c0a - Parameter fuer ps werden in anderer (besserer) Reihenfolge getestet. 2002-09-18 20:58:56 +00:00
Alexander Barton
4a87df8e79 - Dokumentation aktualisiert. 2002-09-17 17:30:09 +00:00
Alexander Barton
7715e4de61 - Versionsnummer auf 0.5.0-pre2 angehoben. 2002-09-17 17:12:24 +00:00
Alexander Barton
982a08b80d - katastrophalen Fix fuer Return-Wert korrigiert ... ARGL! 2002-09-17 17:11:56 +00:00
Alexander Barton
157718a7a3 - es wird nun auch auf "sys/select.h" geprueft. U.a. fuer AIX notwendig.
- Versionsnummer auf 0.5.0-pre1 angehoben.
2002-09-16 11:13:43 +00:00
Alexander Barton
72b95c4a66 - Dokumentation aktualisiert. 2002-09-16 11:11:21 +00:00
Alexander Barton
4fe894cbe7 - ProjectBuilder-Projektdatei aktualisiert. 2002-09-16 11:03:30 +00:00
Alexander Barton
0c9f22ac66 - Dokumentation aktualisiert. 2002-09-16 11:03:05 +00:00
Alexander Barton
bde8d2dd6b - "CC-Speed.txt" aus Distribution entfernt. 2002-09-16 10:35:06 +00:00
Alexander Barton
6e27c52336 - ueberholt, wird in Zukunft auf der Webseite verfuegbar sein. 2002-09-16 10:34:08 +00:00
Alexander Barton
efeba4a7f1 - Dokumentation aktualisiert. 2002-09-16 10:33:09 +00:00
Alexander Barton
a9d44b95bd - Dokumentation aktualisiert. 2002-09-16 10:00:28 +00:00
Alexander Barton
34bdaaa33f - CLIENTS-Konstante unter IRIX vermindet. 2002-09-16 09:54:17 +00:00
Alexander Barton
508fa48aa6 - es wird nun getestet, mit welchen Parametern "ps" aufgerufen werden muss. 2002-09-16 09:53:16 +00:00
Alexander Barton
66b461a5ab - neue Konstanten: RPL_ADMINME_MSG, RPL_ADMINLOC1_MSG, RPL_ADMINLOC2_MSG, RPL_ADMINEMAIL_MSG. 2002-09-16 09:23:40 +00:00
Alexander Barton
e3d70f2c43 - Auf Systemen, die "sys/select.h" kennen (z.B. AIX 3.2.5) wird dieses nun includiert. 2002-09-16 09:22:41 +00:00
Alexander Barton
5502fb271d - neuer Befehl: ADMIN 2002-09-16 09:20:27 +00:00
Alexander Barton
e6f96a7a86 - IRC_WriteStrServersPrefix() lieferte einen Return-Wert, obwohl als VOID deklariert. 2002-09-16 09:19:23 +00:00
Alexander Barton
005391ca5b - LIST kann nun auch an andere Server geforwarded werden. 2002-09-16 09:16:17 +00:00
Alexander Barton
3a3d6d7b9a - neuer Befehl IRC_ADMIN(). 2002-09-16 09:14:45 +00:00
Alexander Barton
4ded22b00b - Admin-Info eingebaut (Variablen "AdminInfo1", "AdminInfo2" und "AdminEMail"). 2002-09-16 09:13:40 +00:00
Alexander Barton
b615d12897 - Admin-Info eingebaut (Variablen "AdminInfo1", "AdminInfo2" und "AdminEMail");
- Bug bei zu langem Operator-Name behoben.
2002-09-16 09:13:06 +00:00
Alexander Barton
21244add31 - unter Darwin werden nur noch 20 Clients parallel gestartet. 2002-09-13 06:11:19 +00:00
Alexander Barton
e7b09536bf - ps wird nun (hoffentlich portabler) jeweils mit "ax" aufgerufen. 2002-09-13 06:04:49 +00:00
Alexander Barton
a0b06ecbd4 - ${srcdir} wird nun beachtet. 2002-09-12 02:28:44 +00:00
Alexander Barton
3f873b0c39 - PID des Test-Servers wird besser ermittelt. 2002-09-12 02:27:47 +00:00
Alexander Barton
05bf66dff0 - Test-Server wird in aktuelles Verzeichnis als "ngircd-TEST" verlinkt.
- die PID des Test-ngIRCd wird besser ermittelt.
2002-09-12 02:27:30 +00:00
Alexander Barton
069ca5df40 - $(srcdir) wird nun beachtet; fehlenden "\" ergaenzt; Dateien ergaenzt. 2002-09-12 02:26:17 +00:00
Alexander Barton
eb817807bc - Dokumentation aktualisiert. 2002-09-09 23:17:04 +00:00
Alexander Barton
fc6f64742c - EXTRA_DIST ergaenzt, clean-Target erweitert.
- neues Script "stress-server.sh" integriert.
2002-09-09 22:56:07 +00:00
Alexander Barton
d040fa2a7d - laeuft der ngIRCd im Vordergrund, so wird syslog nicht mehr benutzt. 2002-09-09 22:55:21 +00:00
Alexander Barton
4d46eac733 - Tests erweitert. 2002-09-09 21:26:00 +00:00
Alexander Barton
85691130b1 - nun ist auch ein Test-Operator konfiguriert. 2002-09-09 21:25:50 +00:00
Alexander Barton
c4d78a3469 - Test-Suite fuer den ngIRCd begonnen. 2002-09-09 10:16:24 +00:00
Alexander Barton
dd4535b7f1 - Testprogramm ueberarbeitet, macht nun selber keine Ausgaben mehr. 2002-09-09 10:05:10 +00:00
Alexander Barton
1734e53410 - Anpassungen an neue Test-Suite (Ausgabeformat). 2002-09-09 10:00:39 +00:00
Alexander Barton
843fe45dee - ngIRCd "Test-Suite" in Build-System aufgenommen. 2002-09-09 10:00:15 +00:00
Alexander Barton
51dabeafaa - Server-Versionsausgabe ueberarbeitet. 2002-09-09 03:34:33 +00:00
Alexander Barton
05fc4a4cb7 - Parameter von List_Add{Invited|Banned}() erweitert.
- neue Funktion Already_Registered().
- doppelte Ban- und Invite-Eintraege werden nun vermieden.
2002-09-08 17:06:07 +00:00
Alexander Barton
f3c0c7c0b3 - Parameter von List_Add{Invited|Banned}() erweitert. 2002-09-08 17:05:25 +00:00
Alexander Barton
c2aefbb3e1 - auch Nicht-ChanOps konnten Ban- und Invite-Lists veraendern. 2002-09-08 01:38:36 +00:00
Alexander Barton
296ddebed1 - Bans/Invites: andere Server wurden nicht informiert.
- neue Funktion Send_ListChange().
2002-09-08 01:16:58 +00:00
Alexander Barton
922b7dbd46 - Dokumentation aktualisiert. 2002-09-08 00:56:33 +00:00
Alexander Barton
ffcf5ab999 - neu: Lists_AddInvited(), Lists_DelInvited(), Lists_ShowInvites, Lists_AddBanned(), Lists_DelBanned(), Lists_ShowBanned und Lists_MakeMask(). 2002-09-08 00:56:14 +00:00
Alexander Barton
592565aef5 - neu: Check_List(), Check_List(), Lists_AddInvited(), Lists_DelInvited(), Lists_ShowInvites, Lists_AddBanned(), Lists_DelBanned(), Lists_ShowBanned und Lists_MakeMask().
- einige Bug-Fixes, bessere Debug-Meldungen.
2002-09-08 00:55:45 +00:00
Alexander Barton
53f76a1dad - den BAN-Befehl gibt es gar nicht ;-) 2002-09-08 00:52:55 +00:00
Alexander Barton
ce4b719459 - ein INVITE wird auch dann gespeichert (obwohl der Channel nicht +i ist), wenn der Client gebanned ist.
- den BAN-Befehl gibt es gar nicht ;-)
2002-09-08 00:52:39 +00:00
Alexander Barton
19ac723e48 - Invite- und Ban-Lists (MODE +I, MODE +b) implementiert. 2002-09-08 00:51:28 +00:00
Alexander Barton
a1ded68a49 - ein "banned client" darf in einen Channel, wenn er "invited" ist. 2002-09-08 00:50:25 +00:00
Alexander Barton
8a927a1b6a - Penalty-Delays gelten nun auch für Schreibvorgaenge.
- Conn_Handler() besser strukturiert ...
2002-09-07 22:34:44 +00:00
Alexander Barton
eab10c91b7 - "Timing" mal wieder geaendert: sollte schon 1 Sekunde sein, sonst kommen z.B. die PING-Timeouts falsch. 2002-09-07 21:35:06 +00:00
Alexander Barton
6c19b0e438 - "Timing" von Conn_Handler() geaendert: der Daemon sollte nun noch weniger CPU-Zeit brauchen :-) 2002-09-07 21:13:38 +00:00
Alexander Barton
6f15c062a3 - "check-version" an neuen Versionsstring angepasst. 2002-09-07 18:06:29 +00:00
Alexander Barton
afe3b1918d - Dokumentation aktualisiert. 2002-09-07 18:01:40 +00:00
Alexander Barton
eaeda12c54 - Konfigurations-Uebersicht am Ende des configure-Lauf.
- neue Option "--disable-ircplus".
2002-09-07 17:59:08 +00:00
Alexander Barton
60df88777e - IRC+-Protokoll ist nun abschaltbar.
- neue Konstante PROTOIRC.
2002-09-07 17:58:00 +00:00
Alexander Barton
3dc1621200 - IRC+-Protokoll ist nun abschaltbar. 2002-09-07 17:57:31 +00:00
Alexander Barton
14cbca87c8 - IRC+-Protokoll ist nun abschaltbar; Versionsstring angepasst. 2002-09-07 17:57:17 +00:00
Alexander Barton
ce1087165d - nun wird autoconf 2.50 als Minimum vorausgesetzt. 2002-09-04 22:11:34 +00:00
Alexander Barton
aafd21c7d9 - Dokumentation aktualisiert. 2002-09-04 00:06:19 +00:00
Alexander Barton
9611833e33 - Protokollbeschreibung fuer IRC+-Protokoll angepasst. 2002-09-04 00:00:43 +00:00
Alexander Barton
62d576880b - Dokumentation aktualisiert. 2002-09-03 23:59:37 +00:00
Alexander Barton
378e511e04 - New_Chan() in Channel_Create() umbenannt; entsprechende Anpassungen.
- Neue Funktion Channel_SetModes().
2002-09-03 23:57:57 +00:00
Alexander Barton
1f9ba7b326 - neuen Befehl CHANINFO implementiert: IRC_CHANINFO(). 2002-09-03 23:56:55 +00:00
Alexander Barton
3010f03414 - neue Funktion IRC_WriteStrServersPrefixFlag(). 2002-09-03 23:56:06 +00:00
Alexander Barton
938abb0236 - CHANINFO wird auf Server-Links gesendet, wenn unterstuetzt. 2002-09-03 23:55:44 +00:00
Alexander Barton
1256f34736 - neuen Befehl CONNECT begonnen zu implementieren. 2002-09-03 23:54:59 +00:00
Alexander Barton
d1ac40391e - neue Befehle CHANINFO und CONNECT. 2002-09-03 23:54:06 +00:00
Alexander Barton
33a3550df4 - neue Konstante IRCPLUSFLAGS. 2002-09-03 23:53:41 +00:00
Alexander Barton
1c668252c9 - IRC+-Protokoll-Flags erweitert. 2002-09-03 23:53:19 +00:00
Alexander Barton
55ee4c9553 - Das IRC+-Protokoll wird nun richtig erkannt ... 2002-09-03 20:58:43 +00:00
Alexander Barton
ad1cbe34b4 - Anpassungen/Umstellung auf IRC+-Protokoll. 2002-09-03 20:39:54 +00:00
Alexander Barton
aa58390673 - Dokumentation aktualisiert. 2002-09-03 20:38:50 +00:00
Alexander Barton
5aa9c8f44c - Flags von connecteten Servern werden nun gespeichert. 2002-09-03 18:55:03 +00:00
Alexander Barton
e62ad97937 - CLIENT-Struktur um Flags erweitert.
- neue Funktionen Client_SetFlags() und Client_Flags().
2002-09-03 18:54:31 +00:00
Alexander Barton
6d81286b08 - neue Konstante CLIENT_FLAGS_LEN. 2002-09-03 18:53:38 +00:00
Alexander Barton
40ebd4704a - Ausgaben auf der Console werden nun "geflushed". 2002-09-03 17:25:45 +00:00
Alexander Barton
241d033f37 - Dokumentation aktualisiert. 2002-09-03 11:32:58 +00:00
Alexander Barton
5e6c713d9c - Dokumentation aktualisiert. 2002-09-02 21:08:02 +00:00
Alexander Barton
c76e6769db - Server-Flag "o" ("OperCanUseMode") implementiert. 2002-09-02 21:06:11 +00:00
Alexander Barton
497b61f4ab - neue Datei "Protocol.txt" hinzugefuegt. 2002-09-02 21:05:36 +00:00
Alexander Barton
28c7f37204 - Dokumentation des vom ngIRCd verwendeten Protokolls begonnen. 2002-09-02 21:04:27 +00:00
Alexander Barton
c0910498e8 - Logmeldungen fuer Server- und Protokollversionen verbessert. 2002-09-02 19:31:26 +00:00
Alexander Barton
bfa5fd3add - Dokumentation aktualisiert. 2002-09-02 19:09:43 +00:00
Alexander Barton
f43e284b22 - Konstante PASSSERVERADD durch Variable NGIRCd_ProtoID ersetzt. 2002-09-02 19:05:44 +00:00
Alexander Barton
c67bb2ac9f - Version (Server und Protokoll) von connectierten Servern wird nun ausgewertet. 2002-09-02 19:04:30 +00:00
Alexander Barton
d58431a097 - PASS-Befehl auf NGIRCd_ProtoID umgestellt. 2002-09-02 19:03:09 +00:00
Alexander Barton
ff07226814 - neue Variable: NGIRCd_ProtoID (Protokoll- und Server-ID fuer "PASS"-Befehl) 2002-09-02 19:01:11 +00:00
Alexander Barton
65b31ffbb2 - NGIRCd_ProtoID (Protokoll- und Server-ID) wird erzeugt. 2002-09-02 19:00:25 +00:00
Alexander Barton
adcd9289c2 - vorkonfigurierte Channel: Fehlerhaften Test "kein Null-Name" korrigiert. 2002-09-02 18:23:35 +00:00
Alexander Barton
71ae473187 - Dokumentation aktualisiert 2002-09-02 15:00:07 +00:00
Alexander Barton
7e1b3b9157 - neue Konfigurationsoption "OperCanUseMode" (Sektion "Global"):
ist sie aktiv, koennen IRC-Operatoren immer Channel-Modes setzen.
2002-09-02 14:59:17 +00:00
Alexander Barton
f673fb960a - an Clients wurden Modes mit fuehrendem ":" geliefert. Das ist zwar RFC-
konform (IMO), macht aber leider grosse(!!) Probleme :-/
2002-08-27 13:57:03 +00:00
Alexander Barton
7d30c8cebc - Hmpf. "Verfruehtes" CVS-Update einiger Source-Files zurueckgenommen ... 2002-08-26 23:47:58 +00:00
Alexander Barton
d645ce86e9 - Bei einem JOIN in einen persistenten Channel werden nun evtl. zu setzende
User-Modes korrekt in den Channel gemeldet.
2002-08-26 23:39:22 +00:00
Alexander Barton
7b6cfc17c4 - neue Funktion Conn_SetPenalty() zum Setzen von sog. "Penalty Zeiten";
wird bisher nur beim Connect verwendet (eine Sekunde).
2002-08-26 00:03:15 +00:00
Alexander Barton
5063de59b1 - Prefixe werden nur noch bei reg. Verbindungen validiert, ansonsten ignoriert. 2002-07-29 20:35:33 +00:00
Alexander Barton
e0ed3aa141 - Semantik der Validate_XXX()-Funktionen verbessert,
- Validate_Prefix() mit "Leben" erfuellt ;-)
2002-07-26 21:12:24 +00:00
Alexander Barton
3b6c3d6d64 - Dokumentation aktualisiert. 2002-07-25 12:34:50 +00:00
Alexander Barton
e07fab17b1 - NJOIN wurde "zerhackt" an andere Server weitergegeben. 2002-07-25 12:33:19 +00:00
Alexander Barton
3da161131a - KILL konnte keine Remote-Clients toeten; zudem besseres Logging. 2002-07-25 11:37:01 +00:00
Alexander Barton
b1f4200608 - bei INVITE wurde im Antwort-Status-Code das falsche Prefix verschickt. 2002-07-25 11:36:16 +00:00
Alexander Barton
2d4f7847d8 - "portability header" werden nun bei Lint-Laeufen gefunden. 2002-07-22 13:23:28 +00:00
Alexander Barton
81a26d988a - Lists_AddInvited() kann nun einen Fehler liefern. 2002-07-15 16:35:21 +00:00
Alexander Barton
1d524784ff - Channel-Modes "b" und "I" in CHANMODES aufgenommen. 2002-07-15 16:34:46 +00:00
Alexander Barton
a6b61df983 - neue Konstanten fuer Invite- und Banlists: RPL_xxxLIST_MSG, RPL_ENDOFxxx_MSG
- neue Message ERR_UNKNOWNMODE_MSG.
2002-07-15 16:33:57 +00:00
Alexander Barton
72670833cb - Dokumentation aktualisiert. 2002-07-08 17:54:57 +00:00
Alexander Barton
1902c6bf94 - Projektdatei fuer den ProjectBuilder unter Mac OS X aktualisiert. 2002-06-26 15:47:36 +00:00
Alexander Barton
7a90d92aef - Dokumentation aktualisiert. 2002-06-26 15:47:08 +00:00
Alexander Barton
a5fb74f3f2 - Tests auf regex.h und regcomp() entfernt: werde nun doch nicht benoetigt. 2002-06-26 15:45:22 +00:00
Alexander Barton
adbb2e09df - neues Modul match.c/match.h hinzugefuegt. 2002-06-26 15:44:47 +00:00
Alexander Barton
39b9f65d0d - IRC_LIST ruft nun Match() auf und beherrscht somit nun Patterns. 2002-06-26 15:44:15 +00:00
Alexander Barton
cf9629b9c7 - neues #define: REGISTER 2002-06-26 15:43:38 +00:00
Alexander Barton
8907c8dd3d - neues Modul "match" begonnen. 2002-06-26 15:42:58 +00:00
Alexander Barton
c1a278b0eb - Reihenfolge der Tests geaendert. Ist "huebscher" :-) 2002-06-26 12:48:20 +00:00
Alexander Barton
21ab8f4640 - Mac OS X ProjectBuilder-Projektdatei aktualisiert. 2002-06-26 12:44:43 +00:00
Alexander Barton
e1ef0bd4fd - Dokumentation aktualisiert. 2002-06-11 21:53:23 +00:00
Alexander Barton
151babd168 - IRC_INVITE() validierte das Ziel eines INVITES nicht korrekt. 2002-06-11 13:59:07 +00:00
Alexander Barton
9fd8254ada - auch bei IRC_NOTICE() wurde das Ziel nicht korrekt validiert. 2002-06-11 13:58:43 +00:00
Alexander Barton
5329241831 - Dokumentation aktualisiert. 2002-06-10 21:12:34 +00:00
Alexander Barton
e876e210da - Code-Stelle in IRC_JOIN "klarer" gemacht :-) 2002-06-10 21:10:25 +00:00
Alexander Barton
e6d1bcdf82 - bessere Fehlermeldung, wenn malloc() fehl schlaegt. 2002-06-10 21:09:39 +00:00
Alexander Barton
c3d9c40a74 - wurde bei PRIVMSG als Ziel ein Server angegeben, so beendete sich der ngircd mit einem assert(). 2002-06-10 21:08:45 +00:00
Alexander Barton
4014a8ff0d - Dokumentation aktualisiert. 2002-06-09 13:21:28 +00:00
Alexander Barton
63c36773e4 - Bessere Logging, wenn malloc() fehl schlaegt. 2002-06-09 13:19:08 +00:00
Alexander Barton
e2b827d8b1 - Flag "OnlyOnce" bei Lists_AddInvited() ergaenzt.
- Neue Funktion Lists_DeleteChannel().
2002-06-09 13:18:40 +00:00
Alexander Barton
31a8dd2f2f - Invite-Lists weiter implementiert.
- Flag "OnlyOnce" bei Lists_AddInvited() ergaenzt.
- Neue Funktion Lists_DeleteChannel().
2002-06-09 13:18:23 +00:00
Alexander Barton
27a70171f1 - Flag "OnlyOnce" bei Lists_AddInvited() ergaenzt. 2002-06-09 13:17:29 +00:00
Alexander Barton
1fd7215def - Besseres Logging, wenn malloc() fehl schlaegt.
- Ban- und Invite-Lists werden korrekt aufgeraeumt.
2002-06-09 13:15:58 +00:00
Alexander Barton
acd91c0164 - der INCLUDE-Pfad wird nun anders gesetzt; loest Probleme mit ansi2knr. 2002-06-02 23:17:12 +00:00
Alexander Barton
9cb74e8135 - besseres Logging beim Restart des Servers. 2002-06-02 23:16:42 +00:00
Alexander Barton
b788a3daa5 - Pre-defined Channels werden spaeter erzeugt. 2002-06-02 17:13:33 +00:00
Alexander Barton
04162c3944 - Neue Funktion Channel_InitPredefined(). 2002-06-02 17:13:07 +00:00
Alexander Barton
5cac54044b - Log-Meldungen bezueglich Server-Restart verbessert. 2002-06-02 17:03:32 +00:00
Alexander Barton
ae958aa1a5 - Syntax von Conn_Handler() geaendert: kein Timeout mehr.
- Log-Meldungen bezueglich Server-Restart verbessert.
- Timeout von select() auf eine Sekunde erhoeht.
2002-06-02 17:03:08 +00:00
Alexander Barton
b966b2108d - Syntax von Conn_Handler() geaendert: kein Timeout mehr. 2002-06-02 17:02:34 +00:00
Alexander Barton
9ec32d15ab - die "umask" des Servers wird nun auf 077 gesetzt;
- Hauptschleife geaendert.
2002-06-02 17:01:21 +00:00
Alexander Barton
adc1eedda3 - IRC_INVITE() implementiert. 2002-06-02 15:23:46 +00:00
Alexander Barton
6d28127154 - neue Funktion Lists_AddInvited(). 2002-06-02 15:23:16 +00:00
Alexander Barton
646acbc0b2 - neue Konstanten ERR_INVITEONLYCHAN_MSG und ERR_BANNEDFROMCHAN_MSG. 2002-06-02 15:22:40 +00:00
Alexander Barton
74b1205783 - nicht unterstuetzte Channel-Modes entfernt. 2002-06-02 15:14:22 +00:00
Alexander Barton
f7567db01f - JOIN: Invite- und Ban-Lists werden nun beachtet. 2002-06-02 14:51:14 +00:00
Alexander Barton
ef328ab392 - neue Konstanten RPL_INVITING_MSG und ERR_USERONCHANNEL_MSG. 2002-06-02 14:15:50 +00:00
Alexander Barton
22365b2c55 - QUIT wurde mir falschem Prefix verschickt. 2002-06-01 15:55:17 +00:00
Alexander Barton
35507ce97e - Dokumentation aktualisiert. 2002-06-01 14:40:59 +00:00
Alexander Barton
d5b4c6dfd3 - neue Konstante ERR_USERNOTINCHANNEL_MSG definiert. 2002-06-01 14:40:00 +00:00
Alexander Barton
234f9472c2 - IRC_KICK() implementiert. 2002-06-01 14:39:34 +00:00
Alexander Barton
a2119a660a - fehlerhaften Fehlercode in IRC_TOPIC() gefixed. 2002-06-01 14:37:28 +00:00
Alexander Barton
dadebb2196 - Channel_RemoveClient() heisst nun Channel_Quit(). 2002-06-01 14:36:43 +00:00
Alexander Barton
bec858c77f - neue Funktionen Channel_Kick() und Channel_Quit();
- Channel_RemoveClient() ist entfallen.
2002-06-01 14:36:05 +00:00
Alexander Barton
cc1e8514f8 - neue Funktionen Channel_Kick() und Channel_Quit();
- Channel_RemoveClient() ist entfallen.
- Remove_Client() ueberarbeitet: nun mit Unterstuetzung fuer PART, QUIT und KICK.
2002-06-01 14:35:39 +00:00
Alexander Barton
b5d74751b1 - Konstanten aufgeraeumt, unnoetige entfernt. 2002-06-01 11:10:40 +00:00
Alexander Barton
9cdf8772b3 - Dokumentation aktualisiert. 2002-05-31 14:22:22 +00:00
Alexander Barton
bd041df0cc - Dokumentation aktualisiert. 2002-05-31 14:20:51 +00:00
Alexander Barton
124e28b14e - Dokumentation aktualisiert. 2002-05-30 16:54:04 +00:00
Alexander Barton
a6f2f1afce - Projektdatei aktualisiert. 2002-05-30 16:52:49 +00:00
Alexander Barton
f7327524fc - Weitere Anpassungen an pre-ANSI-Compiler. 2002-05-30 16:52:20 +00:00
Alexander Barton
e74ee37db5 - Dokumentation aktualisiert. 2002-05-28 09:19:34 +00:00
Alexander Barton
4bf5692888 - fehlerhafter Test auf "regex.h" korrigiert. 2002-05-27 13:12:47 +00:00
Alexander Barton
c2f60abe55 - Anpassungen an pre-ANSI-Compiler,
- Includes aufgeraumt: Header includieren keine anderen mehr.
2002-05-27 13:09:26 +00:00
Alexander Barton
be7683c79b - neue Module "lists", "irc-op" und "resolve" aufgenommen. 2002-05-27 13:08:51 +00:00
Alexander Barton
269a760f3d - Channel-Mode "i" in Feature-Konstante aufgenommen, 2002-05-27 13:04:07 +00:00
Alexander Barton
6430410158 - Tests auf regex.h,varargs.h und regcomp geaendert. 2002-05-27 13:03:11 +00:00
Alexander Barton
ba258e65a0 - Anpassungen an pre-ANSI-Compiler. 2002-05-27 13:00:50 +00:00
Alexander Barton
1934257636 - Anpassungen an pre-ANSI-Compiler. 2002-05-27 12:54:07 +00:00
Alexander Barton
fba52c45e8 - Aenderungen fuer pre-ANSI-Compiler. 2002-05-27 12:35:19 +00:00
Alexander Barton
2728c74b6c - neue Module "irc-op", "lists" und "resolve" integriert. 2002-05-27 11:25:17 +00:00
Alexander Barton
46ec0f24f6 - neues Modul "resolve" begonnen. 2002-05-27 11:23:27 +00:00
Alexander Barton
9dc44d9bab - neues Modul "lists" begonnen. 2002-05-27 11:22:39 +00:00
Alexander Barton
ea9b72ef79 - neues Modul "irc-op" begonnen. 2002-05-27 11:22:07 +00:00
Alexander Barton
9212f8a709 - Test auf malloc.h geaendert: der Header ist nun optional. 2002-05-24 23:42:37 +00:00
Alexander Barton
3862949a46 - Dokumentation aktualisiert. 2002-05-22 11:15:53 +00:00
Alexander Barton
c23535bc96 - bei "--configtest" werden keine leeren Bloecke mehr ausgegeben. 2002-05-22 11:14:36 +00:00
Alexander Barton
e7c1b19161 - Test auf stdint.h korrigiert: der Header ist optional. 2002-05-22 09:50:58 +00:00
Alexander Barton
cc0a694c36 - alten CVS-ID-Tag entfernt; ansi2knr.c ist direkt von automake uebernommen. 2002-05-22 09:44:50 +00:00
Alexander Barton
af9b97b55f - ansi2knr zum CVS-Tree hinzugefuegt. 2002-05-22 09:44:07 +00:00
Alexander Barton
f43b4e8cd8 - einige Tests ergaenzt bzw. aktualisiert. 2002-05-22 09:34:17 +00:00
Alexander Barton
8430c55733 - "ansi2knr" zur "DeANSIfikation" als automake-Option gesetzt. 2002-05-22 09:09:43 +00:00
Alexander Barton
ff043fa00f - Test, ob Compiler Funktions-Prototypen versteht, hinzugefuegt. 2002-05-22 09:09:05 +00:00
Alexander Barton
040f5422f2 - persistente und vordefinierte Channels implementiert. 2002-05-21 00:10:16 +00:00
Alexander Barton
c3aac8ddb4 - Dokumentation aktualisiert. 2002-05-21 00:09:53 +00:00
Alexander Barton
0b1635e371 - Dokumentation aktualisiert. 2002-05-20 12:02:58 +00:00
Alexander Barton
74f971284e - Dokumentation aktualisiert. 2002-05-19 14:55:47 +00:00
Alexander Barton
4f65cf8fb3 - Dokumentation aktualisiert. 2002-05-19 13:10:26 +00:00
Alexander Barton
b2d472fc50 - bessere Reaktionen, wenn DNS-Abfragen fehlschlagen. 2002-05-19 13:05:22 +00:00
Alexander Barton
0fb57ecffc - Definition von "signed" wieder entfernt: mehr Schaden als Nutzen :-/ 2002-05-19 10:49:23 +00:00
Alexander Barton
237c761f67 - Dummy fuer inet_aton() entfernt. "signed" wird bei Bedarf definiert. 2002-05-19 10:46:08 +00:00
Alexander Barton
c5461c4596 - Code aufgeraeumt, Tests auf C99-vsnprintf() entfernt (fuer ngIRCd unnoetig). 2002-05-19 10:44:52 +00:00
Alexander Barton
31a3bfed54 - inet_aton() wird nur noch verwendet, wenn vorhanden; ansonsten inet_addr(). 2002-05-19 10:44:02 +00:00
Alexander Barton
4432a8164a - vsnprintf.h und splint.h zu Projektdatei hinzugefuegt. 2002-05-19 10:43:01 +00:00
Alexander Barton
e9a9bdda13 - POSIX Regular Expressions werden nun vorausgesetzt,
- Test auf snprintf und vsnprintf geaendert.
2002-05-19 10:42:15 +00:00
Alexander Barton
75f1c5ec33 - Dokumentation aktualisiert. 2002-05-19 01:39:43 +00:00
Alexander Barton
509a34f0fa - die libngportab wurde "zu frueh" zum ngIRCd gelinkt ... 2002-05-19 01:30:29 +00:00
Alexander Barton
679565603a - neue Library "ngportab" begonnen: diese bildet Funktionen nach, die auf
dem Ziel-System nicht vorhanden sind -- wie z.B. vsnprintf().
2002-05-19 01:17:40 +00:00
Alexander Barton
cf029a81ac - ngircd wird nun gegen die libngportab gelinkt, die evtl. benoetigte
und nicht auf dem System vorhandene Funktionen nachbildet.
2002-05-19 01:15:55 +00:00
Alexander Barton
2aeb0025cf - Test auf ctype.h ergaenzt, Test auf vsnprintf() geaendert. 2002-05-19 01:14:42 +00:00
Alexander Barton
c11e5501aa - Dokumentation aktualisiert. 2002-05-18 22:46:06 +00:00
Alexander Barton
f0831174c3 - h_error wird nur noch ausgewertet, wenn vorhanden. 2002-05-18 21:53:53 +00:00
Alexander Barton
0c15d4977f - Dokumentation aktualisiert. 2002-05-18 12:21:04 +00:00
Alexander Barton
991da8ea2f - der Sniffer (--sniffer) aktiviert nun automatisch den Debug-Modus mit. 2002-05-18 12:20:02 +00:00
Alexander Barton
772de2596d - Makefile.am in doc/en wird nun auch erzeugt :-) 2002-05-09 10:17:05 +00:00
Alexander Barton
be54db83c9 - Dokumentation aktualisiert. 2002-05-08 15:44:43 +00:00
Alexander Barton
cfe1893d2c - Dokumentation aktualisiert (u.a. englische Versionen) 2002-05-08 15:43:00 +00:00
Alexander Barton
1536ae30ee - Dokumentation aktualisiert. 2002-04-29 14:19:48 +00:00
Alexander Barton
81297e6c23 - Dokumentation aktualisiert. 2002-04-29 14:11:51 +00:00
Alexander Barton
f73e403ae5 - Test auf POSIX Regular-Expression-Funktionen eingebaut. 2002-04-24 13:33:56 +00:00
Alexander Barton
f2b35c3aab - Dokumentation aktualisiert. 2002-04-23 19:53:01 +00:00
Alexander Barton
f22f1cf4f4 - neue Funktion Channel_MemberCount() implementiert. 2002-04-23 19:51:31 +00:00
Alexander Barton
3c0c3c3c5f - Neue Funktion IRC_LIST() begonnen zu implementieren. 2002-04-23 19:51:14 +00:00
Alexander Barton
9d2407dbc5 - Neue IRC-Funktion LIST implementiert. 2002-04-23 19:50:27 +00:00
Alexander Barton
28a58717be - zwei neue Konstanten definiert: RPL_LIST_MSG und RPL_LISTEND_MSG. 2002-04-23 19:50:06 +00:00
Alexander Barton
f0ebf6c120 - Dokumentation aktualisiert. 2002-04-14 14:03:45 +00:00
Alexander Barton
7f79591522 - IRC_QUIT(): der QUIT-Befehl wird nun auch von unreg. Clients akzeptiert. 2002-04-14 14:02:35 +00:00
Alexander Barton
3be7b9ef59 - Count_MyServers() zaehlt nun wieder richtig, LUSERS sollte nun wieder die
korrekte Anzahl eigener Server-Links anzeigen.
2002-04-14 13:54:51 +00:00
Alexander Barton
bd5de06c67 - Dokumentation aktualisiert. 2002-04-09 21:23:20 +00:00
Alexander Barton
49a57354f2 - Dokumentation aktualisiert. 2002-04-08 17:53:31 +00:00
Alexander Barton
5b4e9152ad - Format-String fuer Log-Meldung bei Nick-Aenderungen lokaler Clients
war corrupt, der Server stuerzte so in der Regel ab :-(
2002-04-08 16:37:50 +00:00
Alexander Barton
b8c153df54 - Dokumentation aktualisiert. 2002-04-08 01:25:44 +00:00
Alexander Barton
2310ac2c39 - Es wird nicht mehr anhand der Parameter-Anzahl, sondern des Token erkannt,
ob es sich beim SERVER-Befehl um ein- oder ausgehende Verbindungen handelt
  und somit die eigenen PASS- und SERVER-Befehle gesendet werden muessen.
2002-04-08 01:20:14 +00:00
Alexander Barton
89edc330f1 - neue Konstante TOKEN_OUTBOUND. 2002-04-08 01:18:14 +00:00
Alexander Barton
1f975b6e05 - ausgehende, sich im Aufbau befindende Server-Links werden nun mit einem
speziellen Token (TOKEN_OUTBOUND) versehen, damit der Server sie spaeter
  als solche wieder erkennen kann.
2002-04-08 01:17:54 +00:00
Alexander Barton
97d5e1b49b - MAX_OPERATORS und MAX_SERVERS auf je 16 angehoben :-) 2002-04-08 00:13:45 +00:00
Alexander Barton
75c0bd250e - stdlib.h wird nun includiert. 2002-04-04 13:03:55 +00:00
Alexander Barton
7d4e9a019f - string.h wird nun includiert. 2002-04-04 13:03:39 +00:00
Alexander Barton
ddbf2626d7 - das "new line" am Ende der Datei fehlte ... 2002-04-04 13:03:11 +00:00
Alexander Barton
8e803116f1 - Manual-Pages wurden bei "clean" nach wie vor geloescht ... Upsa! 2002-04-04 13:02:41 +00:00
Alexander Barton
4b17e86c96 - die Manual-Pages fehlten in Distributions-Archiven. 2002-04-04 12:28:29 +00:00
Alexander Barton
265dc87da9 - Formatierung des Author-Abschnitt korrigiert. 2002-04-02 20:44:27 +00:00
Alexander Barton
bc87234fed - Zeilenumbruch korrigiert. 2002-04-02 20:38:50 +00:00
Alexander Barton
1c6dec3ffe - Manual-Page enthaelt nun auch korrekte URLs. 2002-04-02 20:24:24 +00:00
Alexander Barton
bee32fb05a - Manual Page aktualisiert. 2002-04-02 20:19:22 +00:00
Alexander Barton
c98200aaa3 - nroff/groff werden doch nicht benoetigt, Test wieder entfernt. 2002-04-02 18:17:38 +00:00
Alexander Barton
ac5c8bea9c - Manual-Pages unter neuen Namen begonnen. 2002-04-02 18:14:33 +00:00
Alexander Barton
b2cf9efc3a - Manual-Pages heissen nun anders und werden auch nicht mehr "bereits
uebersetzt" installiert.
2002-04-02 18:13:47 +00:00
Alexander Barton
a189b3a5c4 - Dokumentation aktualisiert. 2002-04-01 17:21:48 +00:00
Alexander Barton
60e76ed474 - Dokumentation aus branch-0-4-x uebernommen. 2002-04-01 17:20:16 +00:00
Alexander Barton
5b27e491d4 - URL der Homepage zu Versionstext hinzugefueht (aus branch-0-4-x). 2002-04-01 17:05:48 +00:00
Alexander Barton
284a0afb1d - Dokumentation aktualisiert (uebernommen aus branch-0-4-x). 2002-03-31 23:34:56 +00:00
Alexander Barton
e8cd4d9b70 Manualpage verbessert. 2002-03-31 21:42:02 +00:00
Alexander Barton
ccf89512f6 - Manual-Page aktualisiert. 2002-03-31 21:36:44 +00:00
Alexander Barton
2ebc35e18b - nun wird groff oder nroff verwendet. Pfade angepasst. 2002-03-31 20:55:07 +00:00
Alexander Barton
69b05aca38 - Manual-Pages begonnen und in Source-Tree eingebunden. 2002-03-31 20:23:06 +00:00
Alexander Barton
c9a08ad178 - Dokumentation aktualisiert. 2002-03-31 17:59:00 +00:00
Alexander Barton
8e6ffa6a6f - die Versionsnummer des HEAD-Branch im CVS ist nun einfach nur noch "CVS". 2002-03-31 17:54:30 +00:00
221 changed files with 37099 additions and 7801 deletions

23
.gitignore vendored Normal file
View File

@@ -0,0 +1,23 @@
Makefile
Makefile.in
aclocal.m4
ansi2knr.1
ansi2knr.c
ansi2knr.h
ar-lib
autom4te.cache
build-stamp-ngircd*
config.log
config.status
configure
configure.ac
configure.lineno
cscope.out
debian
depcomp
install-sh
missing
ngircd.dest
.deps
*.a
*.o

4
.mailmap Normal file
View File

@@ -0,0 +1,4 @@
# mailmap file for git-[short]log and git-blame
Alexander Barton <anonymous>
Ali Shemiran <ashemira@ucsd.edu>

47
AUTHORS
View File

@@ -1,13 +1,46 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001,2002 by Alexander Barton,
alex@barton.de, http://www.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
ngIRCd ist freie Software und steht unter
der GNU General Public License.
-- AUTHORS / Autoren --
-- AUTHORS and CONTRIBUTORS --
Alexander Barton, alex@arthur.ath.cx
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).
Don't mail the people listed here directly, if possible!
Main Authors
~~~~~~~~~~~~
Alexander Barton, <alex@barton.de> (alex)
Florian Westphal, <fw@strlen.de>
Contributors
~~~~~~~~~~~~
Ali Shemiran, <ashemira@ucsd.edu>
Ask Bjørn Hansen, <ask@develooper.com>
Benjamin Pineau, <ben@zouh.org>
Brandon Beresini, <beresini@google.com>
Bryan Caldwell, <bcaldwel@ucsd.edu>
Dana Dahlstrom, <dana+ngIRCd@cs.ucsd.edu>
Eric Grunow, <egrunow@ucsd.edu>
Goetz Hoffart, <goetz@hoffart.de>
Ilja Osthoff, <i.osthoff@gmx.net>
Jari Aalto, <jari.aalto@cante.net>
Rolf Eike Beer, <eike@sf-mail.de>
Scott Perry, <scperry@ucsd.edu>
Sean Reifschneider, <jafo-rpms@tummy.com>
Code snippets
~~~~~~~~~~~~~
J. Kercheval: pattern matching functions
Patrick Powell, <papowell@astart.com>: snprintf()-function
Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions

39
COPYING
View File

@@ -1,12 +1,12 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@@ -303,10 +303,9 @@ the "copyright" line and a pointer to where the full notice is found.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
@@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names:
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

1339
ChangeLog

File diff suppressed because it is too large Load Diff

359
INSTALL
View File

@@ -1,90 +1,339 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001,2002 by Alexander Barton,
alex@barton.de, http://www.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
ngIRCd ist freie Software und steht unter
der GNU General Public License.
-- INSTALL / Installation --
-- INSTALL --
ngIRCd ist fuer UNIXoide-Systeme konzipiert. Dieser Text beschreibt den
"Standardfall": ein UNIX bzw. UNIX-aehnliches System, das von GNU automake
und GNU autoconf ("configure") unterstuetzt wird.
I. Upgrade Information
~~~~~~~~~~~~~~~~~~~~~~
Differences to version 19.x
- Starting with ngIRCd 20, users can "cloak" their hostname only when the
configuration variable "CloakHostModeX" (introduced in 19.2) is set.
Otherwise, only IRC opertators, other servers, and services are allowed to
set mode +x. This prevents regular users from changing their hostmask to
the name of the IRC server itself, which confused quite a few people ;-)
Differences to version 17
- Support for ZeroConf/Bonjour/Rendezvous service registration has been
removed. The configuration option "NoZeroconf" is no longer available.
- The structure of ngircd.conf has been cleaned up and three new configuration
sections have been introduced: [Limits], [Options], and [SSL].
Lots of configuration variables stored in the [Global] section are now
deprecated there and should be stored in one of these new sections (but
still work in [Global]):
"AllowRemoteOper" -> [Options]
"ChrootDir" -> [Options]
"ConnectIPv4" -> [Options]
"ConnectIPv6" -> [Options]
"ConnectRetry" -> [Limits]
"MaxConnections" -> [Limits]
"MaxConnectionsIP" -> [Limits]
"MaxJoins" -> [Limits]
"MaxNickLength" -> [Limits]
"NoDNS" -> [Options], and renamed to "DNS"
"NoIdent" -> [Options], and renamed to "Ident"
"NoPAM" -> [Options], and renamed to "PAM"
"OperCanUseMode" -> [Options]
"OperServerMode" -> [Options]
"PingTimeout" -> [Limits]
"PongTimeout" -> [Limits]
"PredefChannelsOnly" -> [Options]
"SSLCertFile" -> [SSL], and renamed to "CertFile"
"SSLDHFile" -> [SSL], and renamed to "DHFile"
"SSLKeyFile" -> [SSL], and renamed to "KeyFile"
"SSLKeyFilePassword" -> [SSL], and renamed to "KeyFilePassword"
"SSLPorts" -> [SSL], and renamed to "Ports"
"SyslogFacility" -> [Options]
"WebircPassword" -> [Options]
You should adjust your ngircd.conf and run "ngircd --configtest" to make
sure that your settings are correct and up to date!
Differences to version 16
- Changes to the "MotdFile" specified in ngircd.conf now require a ngircd
configuration reload to take effect (HUP signal, REHASH command).
Differences to version 0.9.x
- The option of the configure script to enable support for Zeroconf/Bonjour/
Rendezvous/WhateverItIsNamedToday has been renamed:
--with-rendezvous -> --with-zeroconf
Differences to version 0.8.x
- The maximum length of passwords has been raised to 20 characters (instead
of 8 characters). If your passwords are longer than 8 characters then they
are cut at an other position now.
Differences to version 0.6.x
- Some options of the configure script have been renamed:
--disable-syslog -> --without-syslog
--disable-zlib -> --without-zlib
Please call "./configure --help" to review the full list of options!
Differences to version 0.5.x
- Starting with version 0.6.0, other servers are identified using asynchronous
passwords: therefore the variable "Password" in [Server]-sections has been
replaced by "MyPassword" and "PeerPassword".
- New configuration variables, section [Global]: MaxConnections, MaxJoins
(see example configuration file "doc/sample-ngircd.conf"!).
I. Voraussetzungen
~~~~~~~~~~~~~~~~~~
II. Standard Installation
~~~~~~~~~~~~~~~~~~~~~~~~~
ngIRCd benoetigt "Alex' Portability Headers" (portab.h). Diese koennen von
der Homepage heruntergeladen werden:
ngIRCd is developed for UNIX-based systems, which means that the installation
on modern UNIX-like systems that are supported by GNU autoconf and GNU
automake ("configure") should be no problem.
<http://arthur.ath.cx/~alex/ngircd/#download>
The normal installation procedure after getting (and expanding) the source
files (using a distribution archive or GIT) is as following:
Vor dem configure-Lauf des ngIRCd muessen dies Header auf dem System in-
stalliert sein, anonsten bricht configure ab.
0) Satisfy prerequisites
1) ./autogen.sh [only necessary when using GIT]
2) ./configure
3) make
4) make install
(Please see details below!)
Now the newly compiled executable "ngircd" is installed in its standard
location, /usr/local/sbin/.
The next step is to configure and afterwards starting the daemon. Please
have a look at the ngircd(8) and ngircd.conf(5) manual pages for details
and all possible options -- and don't forget to run "ngircd --configtest"
to validate your configuration file!
If no previous version of the configuration file exists (the standard name
is /usr/local/etc/ngircd.conf), a sample configuration file containing all
possible options will be installed there. You'll find its template in the
doc/ directory: sample-ngircd.conf.
II. Quick Start
~~~~~~~~~~~~~~~
0): Satisfy prerequisites
In der Regel sind folgende Schritte ausreichend:
When building from source, you'll need some other software to build ngIRCd:
for example a working C compiler, make tool, GNU automake and autoconf (only
when not using a distribution archive), and a few libraries depending on the
features you want to compile in (like IDENT support, SSL, and PAM).
1) ./autogen.sh [nur erforderlich, wenn ueber CVS bezogen]
2) ./configure
3) make
If you are using one of the "big" operating systems or Linux distributions,
you can use the following commands to install all the required packages to
build the sources including all optional features and to run the test suite:
* RedHat / Fedora based distributions:
yum install \
autoconf automake expect gcc glibc-devel gnutls-devel \
libident-devel make pam-devel tcp_wrappers-devel telnet zlib-devel
* Debian / Ubuntu based distributions:
apt-get install \
autoconf automake build-essential expect libgnutls-dev \
libident-dev libpam-dev libwrap0-dev libz-dev telnet
zu 1) autogen.sh:
1): "autogen.sh"
Der erste Schritt, autogen.sh, ist nur notwendig, wenn das configure-Script
noch nicht vorhanden ist. Dies ist nie bei offiziellen ("stabilen") Versionen
in tar.gz-Archiven der Fall, jedoch nie, wenn der Source-Code ueber CVS
bezogen wurde.
The first step, autogen.sh, is only necessary if the configure-script isn't
already generated. This never happens in official ("stable") releases in
tar.gz-archives, but when using GIT.
Dieser Absatz ist also eigentlich ausschliesslich fuer Entwickler interessant.
This step is therefore only interesting for developers.
autogen.sh erzeugt die fuer das configure-Script notwendigen Makefile.in's
sowie das configure-Script selber und weitere fuer den make-Lauf erforderliche
Dateien. Dazu wird sowohl GNU automake als auch GNU autoconf (in aktuellen
Versionen!) benoetigt.
autogen.sh produces the Makefile.in's, which are necessary for the configure
script itself, and some more files for make. To run autogen.sh you'll need
GNU autoconf and GNU automake: at least autoconf 2.61 and automake 1.10 are
requird, newer is better. But don't use automake 1.12 or newer for creating
distribution archives: it will work but lack "de-ANSI-fucation" support in the
generated Makefile's! Stick with automake 1.11.x for this purpose ...
So automake 1.11.x and autoconf 2.67+ is recommended.
(nochmal: "Endanwender" mussen diesen Schritt i.d.R. nicht ausfuehren!)
Again: "end users" do not need this step and neither need GNU autoconf nor GNU
automake at all!
zu 2) ./configure:
2): "./configure"
Mit dem configure-Script wird ngIRCd, wie GNU Software meistens, an das
lokale System angepasst und die erforderlichen Makefile's erzeugt.
The configure-script is used to detect local system dependencies.
Im Optimalfall sollte configure alle benoetigten Libraries, Header etc. selber
erkennen und entsprechend reagieren. Sollte dies einmal nicht der Fall sein,
so zeigt "./configure --help" moegliche Optionen.
In the perfect case, configure should recognize all needed libraries, header
files and so on. If this shouldn't work, "./configure --help" shows all
possible options.
In addition, you can pass some command line options to "configure" to enable
and/or disable some features of ngIRCd. All these options are shown using
"./configure --help", too.
Compiling a static binary will avoid you the hassle of feeding a chroot dir
(if you want use the chroot feature). Just do something like:
CFLAGS=-static ./configure [--your-options ...]
Then you can use a void directory as ChrootDir (like OpenSSH's /var/empty).
zu 3) make:
3): "make"
Der make-Befehl bearbeitet die vom configure-Script erzeugten Makefile's und
uebersetzt die comBase-Library und die Testprogramme.
The make command uses the Makefiles produced by configure and compiles the
ngIRCd daemon.
III. Nuetzliche make-Targets
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4): "make install"
Die vom configure-Script erzeugten Makefile's enthalten immer die folgenden
nuetzlichen Targets:
Use "make install" to install the server and a sample configuration file on
the local system. Normally, root privileges are necessary to complete this
step. If there is already an older configuration file present, it won't be
overwritten.
- clean: alle Erzeugnisse des Compilers/Linkers loeschen.
Naechster Schritt: -> make
These files and folders will be installed by default:
- distclean: zusaetzliche alle Makefile's loeschen.
Naechster Schritt: -> ./configure
- maintainer-clean: alle automat. erzeugten Dateien loeschen.
Naechster Schritt: -> ./autogen.sh
- /usr/local/sbin/ngircd: executable server
- /usr/local/etc/ngircd.conf: sample configuration (if not already present)
- /usr/local/share/doc/ngircd/: documentation
- /usr/local/share/man/: manual pages
--
$Id: INSTALL,v 1.5 2002/03/03 13:07:01 alex Exp $
III. Additional features
~~~~~~~~~~~~~~~~~~~~~~~~
The following optional features can be compiled into the daemon by passing
options to the "configure" script. Most options can handle a <path> argument
which will be used to search for the required libraries and header files in
the given paths ("<path>/lib/...", "<path>/include/...") in addition to the
standard locations.
* Syslog Logging (autodetected by default):
--with-syslog[=<path>] / --without-syslog
Enable (disable) support for logging to "syslog", which should be
available on most modern UNIX-like operating systems by default.
* ZLib Compression (autodetected by default):
--with-zlib[=<path>] / --without-zlib
Enable (disable) support for compressed server-server links.
The Z compression library ("libz") is required for this option.
* IO Backend (autodetected by default):
--with-select[=<path>] / --without-select
--with-poll[=<path>] / --without-poll
--with-devpoll[=<path>] / --without-devpoll
--with-epoll[=<path>] / --without-epoll
--with-kqueue[=<path>] / --without-kqueue
ngIRCd can use different IO "backends": the "old school" select() and poll()
API which should be supported by most UNIX-like operating systems, or the
more efficient and flexible epoll() (Linux >=2.6), kqueue() (BSD) and
/dev/poll APIs.
By default the IO backend is autodetected, but you can use "--without-xxx"
to disable a more enhanced API.
When using the epoll() API, support for select() is compiled in as well by
default to enable the binary to run on older Linux kernels (<2.6), too.
* IDENT-Support:
--with-ident[=<path>]
Include support for IDENT ("AUTH") lookups. The "ident" library is
required for this option.
* TCP-Wrappers:
--with-tcp-wrappers[=<path>]
Include support for Wietse Venemas "TCP Wrappers" to limit client access
to the daemon, for example by using "/etc/hosts.{allow|deny}".
The "libwrap" is required for this option.
* PAM:
--with-pam[=<path>]
Enable support for PAM, the Pluggable Authentication Modules library.
See doc/PAM.txt for details.
* SSL:
--with-openssl[=<path>]
--with-gnutls[=<path>]
Enable support for SSL/TLS using OpenSSL or gnutls libraries.
See doc/SSL.txt for details.
* IPv6:
--enable-ipv6
Adds support for version 6 of the Internet Protocol.
IV. Useful make-targets
~~~~~~~~~~~~~~~~~~~~~~~
The Makefile produced by the configure-script contains always these useful
targets:
- clean: delete every product from the compiler/linker
next step: -> make
- distclean: the above plus erase all generated Makefiles
next step: -> ./configure
- maintainer-clean: erase all automatic generated files
next step: -> ./autogen.sh
V. Sample configuration file ngircd.conf
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In the sample configuration file, there are comments beginning with "#" OR
";" -- this is only for the better understanding of the file.
The file is separated in five blocks: [Global], [Features], [Operator],
[Server], and [Channel].
In the [Global] section, there is the main configuration like the server
name and the ports, on which the server should be listening. Options in
the [Features] section enable or disable functionality in the daemon.
IRC operators of this server are defined in [Operator] blocks, remote
servers are configured in [Server] sections, and [Channel] blocks are
used to configure pre-defined ("persistent") IRC channels.
The meaning of the variables in the configuration file is explained in the
"doc/sample-ngircd.conf", which is used as sample configuration file in
/usr/local/etc after running "make install" (if you don't already have one)
and in the ngircd.conf(5) manual page.
VI. Command line options
~~~~~~~~~~~~~~~~~~~~~~~~
These parameters could be passed to the ngIRCd:
-f, --config <file>
The daemon uses the file <file> as configuration file rather than
the standard configuration /usr/local/etc/ngircd.conf.
-n, --nodaemon
ngIRCd should be running as a foreground process.
-p, --passive
Server-links won't be automatically established.
-t, --configtest
Reads, validates and dumps the configuration file as interpreted
by the server. Then exits.
Use "--help" to see a short help text describing all available parameters
the server understands, with "--version" the ngIRCd shows its version
number. In both cases the server exits after the output.
Please see the ngircd(8) manual page for complete details!

View File

@@ -1,21 +0,0 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
#
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
# der GNU General Public License (GPL), wie von der Free Software Foundation
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
#
# $Id: Makefile.am,v 1.4 2002/03/12 14:37:51 alex Exp $
#
SUBDIRS = ngircd.pbproj
maintainer-clean-local:
rm -f Makefile Makefile.in
rm -rf build
# -eof-

View File

@@ -1,20 +0,0 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
#
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
# der GNU General Public License (GPL), wie von der Free Software Foundation
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
#
# $Id: Makefile.am,v 1.3 2002/03/12 14:37:51 alex Exp $
#
EXTRA_DIST = project.pbxproj
maintainer-clean-local:
rm -f Makefile Makefile.in
# -eof-

View File

@@ -1,935 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 34;
objects = {
014CEA520018CE5811CA2923 = {
buildRules = (
);
buildSettings = {
COPY_PHASE_STRIP = NO;
OPTIMIZATION_CFLAGS = "-O0";
};
isa = PBXBuildStyle;
name = Development;
};
014CEA530018CE5811CA2923 = {
buildRules = (
);
buildSettings = {
COPY_PHASE_STRIP = YES;
};
isa = PBXBuildStyle;
name = Deployment;
};
//010
//011
//012
//013
//014
//030
//031
//032
//033
//034
034768E8FF38A79811DB9C8B = {
isa = PBXExecutableFileReference;
path = ngircd;
refType = 3;
};
//030
//031
//032
//033
//034
//080
//081
//082
//083
//084
08FB7793FE84155DC02AAC07 = {
buildStyles = (
014CEA520018CE5811CA2923,
014CEA530018CE5811CA2923,
);
isa = PBXProject;
mainGroup = 08FB7794FE84155DC02AAC07;
projectDirPath = "";
targets = (
08FB779FFE84155DC02AAC07,
F538241E024F89BC01A85B04,
);
};
08FB7794FE84155DC02AAC07 = {
children = (
1AB674ADFE9D54B511CA2CBB,
F51F791401DFD0DE01D13771,
F56D8B9E01E0BFA00155ADA7,
F52162B301C7B904012300F4,
F52162C301C7B904012300F4,
F52162C401C7B904012300F4,
F52162C501C7B904012300F4,
F52162C601C7B904012300F4,
F52162C701C7B904012300F4,
F52162C801C7B904012300F4,
F52162C901C7B904012300F4,
F52162CA01C7B904012300F4,
F52162CB01C7B904012300F4,
);
isa = PBXGroup;
name = ngircd;
refType = 4;
};
08FB779FFE84155DC02AAC07 = {
buildPhases = (
08FB77A0FE84155DC02AAC07,
08FB77A1FE84155DC02AAC07,
08FB77A3FE84155DC02AAC07,
08FB77A5FE84155DC02AAC07,
);
buildSettings = {
FRAMEWORK_SEARCH_PATHS = "";
HEADER_SEARCH_PATHS = "";
INSTALL_PATH = "$(HOME)/bin";
LIBRARY_SEARCH_PATHS = "";
OTHER_CFLAGS = "-DLOCALSTATEDIR=\\\\\\\"/usr/local/var\\\\\\\" -DSYSCONFDIR=\\\\\\\"/usr/local/etc\\\\\\\"";
OTHER_LDFLAGS = "";
OTHER_REZFLAGS = "";
PRODUCT_NAME = ngircd;
REZ_EXECUTABLE = YES;
SECTORDER_FLAGS = "";
WARNING_CFLAGS = "-Wall";
};
dependencies = (
);
isa = PBXToolTarget;
name = ngircd;
productInstallPath = "$(HOME)/bin";
productName = ngircd;
productReference = 034768E8FF38A79811DB9C8B;
shouldUseHeadermap = 1;
};
08FB77A0FE84155DC02AAC07 = {
buildActionMask = 2147483647;
files = (
F52162CE01C7B904012300F4,
F52162CF01C7B904012300F4,
F52162D001C7B904012300F4,
F52162D901C7BAAE012300F4,
F52162DC01C7BCDD012300F4,
F52162E401C7C79E012300F4,
F51D17FE01C8F5B701E11C2E,
F51D180401C8FDD001E11C2E,
F51D180501C8FDD001E11C2E,
F576ABFC01D5E77301A85B03,
F576ABFF01D61D7401A85B03,
F51F791301DFC95301D13771,
F51DBB15022D95E801A85B04,
F51DBB19022D995501A85B04,
F51DBB1D022D9D8F01A85B04,
F57C88870232853501A85B04,
F57C888B0232884501A85B04,
F57C888F02328D7201A85B04,
F5F18138023EC63701A85B04,
F5F18139023EC63701A85B04,
F5F1813A023EC63701A85B04,
F55047BC0240F6E501A85B04,
);
isa = PBXHeadersBuildPhase;
name = Headers;
};
08FB77A1FE84155DC02AAC07 = {
buildActionMask = 2147483647;
files = (
F52162D101C7B904012300F4,
F52162D201C7B904012300F4,
F52162D301C7B904012300F4,
F52162DD01C7BCDD012300F4,
F52162E501C7C79E012300F4,
F51D17FF01C8F5B701E11C2E,
F51D180701C8FDD001E11C2E,
F576ABFD01D5E77301A85B03,
F5263AEE01E263D201CE8F8F,
F51DBB16022D95E801A85B04,
F51DBB1A022D995501A85B04,
F51DBB1E022D9D8F01A85B04,
F57C88880232853501A85B04,
F57C888C0232884501A85B04,
F57C889002328D7201A85B04,
F55047BD0240F6E501A85B04,
);
isa = PBXSourcesBuildPhase;
name = Sources;
};
08FB77A3FE84155DC02AAC07 = {
buildActionMask = 2147483647;
files = (
);
isa = PBXFrameworksBuildPhase;
name = "Frameworks & Libraries";
};
08FB77A5FE84155DC02AAC07 = {
buildActionMask = 2147483647;
files = (
);
isa = PBXRezBuildPhase;
name = "ResourceManager Resources";
};
//080
//081
//082
//083
//084
//1A0
//1A1
//1A2
//1A3
//1A4
1AB674ADFE9D54B511CA2CBB = {
children = (
034768E8FF38A79811DB9C8B,
F538241D024F89BC01A85B04,
);
isa = PBXGroup;
name = Products;
refType = 4;
};
//1A0
//1A1
//1A2
//1A3
//1A4
//F50
//F51
//F52
//F53
//F54
F51D17FC01C8F5B701E11C2E = {
isa = PBXFileReference;
name = client.c;
path = ../src/ngircd/client.c;
refType = 2;
};
F51D17FD01C8F5B701E11C2E = {
isa = PBXFileReference;
name = client.h;
path = ../src/ngircd/client.h;
refType = 2;
};
F51D17FE01C8F5B701E11C2E = {
fileRef = F51D17FD01C8F5B701E11C2E;
isa = PBXBuildFile;
settings = {
};
};
F51D17FF01C8F5B701E11C2E = {
fileRef = F51D17FC01C8F5B701E11C2E;
isa = PBXBuildFile;
settings = {
};
};
F51D180001C8FDD001E11C2E = {
isa = PBXFileReference;
name = channel.c;
path = ../src/ngircd/channel.c;
refType = 2;
};
F51D180101C8FDD001E11C2E = {
isa = PBXFileReference;
name = channel.h;
path = ../src/ngircd/channel.h;
refType = 2;
};
F51D180201C8FDD001E11C2E = {
isa = PBXFileReference;
name = irc.c;
path = ../src/ngircd/irc.c;
refType = 2;
};
F51D180301C8FDD001E11C2E = {
isa = PBXFileReference;
name = irc.h;
path = ../src/ngircd/irc.h;
refType = 2;
};
F51D180401C8FDD001E11C2E = {
fileRef = F51D180101C8FDD001E11C2E;
isa = PBXBuildFile;
settings = {
};
};
F51D180501C8FDD001E11C2E = {
fileRef = F51D180301C8FDD001E11C2E;
isa = PBXBuildFile;
settings = {
};
};
F51D180701C8FDD001E11C2E = {
fileRef = F51D180201C8FDD001E11C2E;
isa = PBXBuildFile;
settings = {
};
};
F51DBB13022D95E801A85B04 = {
isa = PBXFileReference;
path = "irc-write.c";
refType = 4;
};
F51DBB14022D95E801A85B04 = {
isa = PBXFileReference;
path = "irc-write.h";
refType = 4;
};
F51DBB15022D95E801A85B04 = {
fileRef = F51DBB14022D95E801A85B04;
isa = PBXBuildFile;
settings = {
};
};
F51DBB16022D95E801A85B04 = {
fileRef = F51DBB13022D95E801A85B04;
isa = PBXBuildFile;
settings = {
};
};
F51DBB17022D995501A85B04 = {
isa = PBXFileReference;
path = "irc-mode.c";
refType = 4;
};
F51DBB18022D995501A85B04 = {
isa = PBXFileReference;
path = "irc-mode.h";
refType = 4;
};
F51DBB19022D995501A85B04 = {
fileRef = F51DBB18022D995501A85B04;
isa = PBXBuildFile;
settings = {
};
};
F51DBB1A022D995501A85B04 = {
fileRef = F51DBB17022D995501A85B04;
isa = PBXBuildFile;
settings = {
};
};
F51DBB1B022D9D8F01A85B04 = {
isa = PBXFileReference;
path = "irc-login.c";
refType = 4;
};
F51DBB1C022D9D8F01A85B04 = {
isa = PBXFileReference;
path = "irc-login.h";
refType = 4;
};
F51DBB1D022D9D8F01A85B04 = {
fileRef = F51DBB1C022D9D8F01A85B04;
isa = PBXBuildFile;
settings = {
};
};
F51DBB1E022D9D8F01A85B04 = {
fileRef = F51DBB1B022D9D8F01A85B04;
isa = PBXBuildFile;
settings = {
};
};
F51F791201DFC95301D13771 = {
isa = PBXFileReference;
name = defines.h;
path = ../src/ngircd/defines.h;
refType = 2;
};
F51F791301DFC95301D13771 = {
fileRef = F51F791201DFC95301D13771;
isa = PBXBuildFile;
settings = {
};
};
F51F791401DFD0DE01D13771 = {
children = (
F5263AEF01E2A9B801CE8F8F,
F51F791501DFD0DE01D13771,
F51F791601DFD0DE01D13771,
F51F791701DFD0DE01D13771,
);
isa = PBXGroup;
name = doc;
path = /Users/alex/Develop/ngircd/doc;
refType = 0;
};
F51F791501DFD0DE01D13771 = {
isa = PBXFileReference;
path = CVS.txt;
refType = 4;
};
F51F791601DFD0DE01D13771 = {
isa = PBXFileReference;
path = RFC.txt;
refType = 4;
};
F51F791701DFD0DE01D13771 = {
isa = PBXFileReference;
path = "sample-ngircd.conf";
refType = 4;
};
F52162B301C7B904012300F4 = {
children = (
F52162B801C7B904012300F4,
F52162D801C7BAAE012300F4,
F52162B901C7B904012300F4,
F5F18132023EC61E01A85B04,
);
isa = PBXGroup;
name = src;
path = ../src;
refType = 2;
};
F52162B801C7B904012300F4 = {
isa = PBXFileReference;
path = Makefile.am;
refType = 4;
};
F52162B901C7B904012300F4 = {
children = (
F52162BD01C7B904012300F4,
F52162BE01C7B904012300F4,
F52162BF01C7B904012300F4,
F51D180001C8FDD001E11C2E,
F51D180101C8FDD001E11C2E,
F51D17FC01C8F5B701E11C2E,
F51D17FD01C8F5B701E11C2E,
F52162E201C7C77B012300F4,
F52162E301C7C77B012300F4,
F52162DA01C7BCDC012300F4,
F52162DB01C7BCDC012300F4,
F55047BA0240F6E501A85B04,
F55047BB0240F6E501A85B04,
F51D180201C8FDD001E11C2E,
F51D180301C8FDD001E11C2E,
F57C888D02328D7201A85B04,
F57C888E02328D7201A85B04,
F51DBB1B022D9D8F01A85B04,
F51DBB1C022D9D8F01A85B04,
F51DBB17022D995501A85B04,
F51DBB18022D995501A85B04,
F57C88850232853501A85B04,
F57C88860232853501A85B04,
F57C88890232884501A85B04,
F57C888A0232884501A85B04,
F51DBB13022D95E801A85B04,
F51DBB14022D95E801A85B04,
F52162BB01C7B904012300F4,
F52162BC01C7B904012300F4,
F576ABFA01D5E77301A85B03,
F576ABFB01D5E77301A85B03,
F52162C001C7B904012300F4,
F52162C101C7B904012300F4,
F51F791201DFC95301D13771,
F576ABFE01D61D7401A85B03,
);
isa = PBXGroup;
path = ngircd;
refType = 4;
};
F52162BB01C7B904012300F4 = {
isa = PBXFileReference;
path = log.c;
refType = 4;
};
F52162BC01C7B904012300F4 = {
isa = PBXFileReference;
path = log.h;
refType = 4;
};
F52162BD01C7B904012300F4 = {
isa = PBXFileReference;
path = Makefile.am;
refType = 4;
};
F52162BE01C7B904012300F4 = {
isa = PBXFileReference;
path = ngircd.c;
refType = 4;
};
F52162BF01C7B904012300F4 = {
isa = PBXFileReference;
path = ngircd.h;
refType = 4;
};
F52162C001C7B904012300F4 = {
isa = PBXFileReference;
path = tool.c;
refType = 4;
};
F52162C101C7B904012300F4 = {
isa = PBXFileReference;
path = tool.h;
refType = 4;
};
F52162C301C7B904012300F4 = {
isa = PBXExecutableFileReference;
name = autogen.sh;
path = ../autogen.sh;
refType = 2;
};
F52162C401C7B904012300F4 = {
isa = PBXFileReference;
name = configure.in;
path = ../configure.in;
refType = 2;
};
F52162C501C7B904012300F4 = {
isa = PBXFileReference;
name = Makefile.am;
path = ../Makefile.am;
refType = 2;
};
F52162C601C7B904012300F4 = {
isa = PBXFileReference;
name = INSTALL;
path = ../INSTALL;
refType = 2;
};
F52162C701C7B904012300F4 = {
isa = PBXFileReference;
name = AUTHORS;
path = ../AUTHORS;
refType = 2;
};
F52162C801C7B904012300F4 = {
isa = PBXFileReference;
name = ChangeLog;
path = ../ChangeLog;
refType = 2;
};
F52162C901C7B904012300F4 = {
isa = PBXFileReference;
name = COPYING;
path = ../COPYING;
refType = 2;
};
F52162CA01C7B904012300F4 = {
isa = PBXFileReference;
name = NEWS;
path = ../NEWS;
refType = 2;
};
F52162CB01C7B904012300F4 = {
isa = PBXFileReference;
name = README;
path = ../README;
refType = 2;
};
F52162CE01C7B904012300F4 = {
fileRef = F52162BC01C7B904012300F4;
isa = PBXBuildFile;
settings = {
};
};
F52162CF01C7B904012300F4 = {
fileRef = F52162BF01C7B904012300F4;
isa = PBXBuildFile;
settings = {
};
};
F52162D001C7B904012300F4 = {
fileRef = F52162C101C7B904012300F4;
isa = PBXBuildFile;
settings = {
};
};
F52162D101C7B904012300F4 = {
fileRef = F52162BB01C7B904012300F4;
isa = PBXBuildFile;
settings = {
};
};
F52162D201C7B904012300F4 = {
fileRef = F52162BE01C7B904012300F4;
isa = PBXBuildFile;
settings = {
};
};
F52162D301C7B904012300F4 = {
fileRef = F52162C001C7B904012300F4;
isa = PBXBuildFile;
settings = {
};
};
F52162D801C7BAAE012300F4 = {
isa = PBXFileReference;
name = config.h;
path = ../src/config.h;
refType = 2;
};
F52162D901C7BAAE012300F4 = {
fileRef = F52162D801C7BAAE012300F4;
isa = PBXBuildFile;
settings = {
};
};
F52162DA01C7BCDC012300F4 = {
isa = PBXFileReference;
name = conn.c;
path = ../src/ngircd/conn.c;
refType = 2;
};
F52162DB01C7BCDC012300F4 = {
isa = PBXFileReference;
name = conn.h;
path = ../src/ngircd/conn.h;
refType = 2;
};
F52162DC01C7BCDD012300F4 = {
fileRef = F52162DB01C7BCDC012300F4;
isa = PBXBuildFile;
settings = {
};
};
F52162DD01C7BCDD012300F4 = {
fileRef = F52162DA01C7BCDC012300F4;
isa = PBXBuildFile;
settings = {
};
};
F52162E201C7C77B012300F4 = {
isa = PBXFileReference;
name = conf.c;
path = ../src/ngircd/conf.c;
refType = 2;
};
F52162E301C7C77B012300F4 = {
isa = PBXFileReference;
name = conf.h;
path = ../src/ngircd/conf.h;
refType = 2;
};
F52162E401C7C79E012300F4 = {
fileRef = F52162E301C7C77B012300F4;
isa = PBXBuildFile;
settings = {
};
};
F52162E501C7C79E012300F4 = {
fileRef = F52162E201C7C77B012300F4;
isa = PBXBuildFile;
settings = {
};
};
F5263AEE01E263D201CE8F8F = {
fileRef = F51D180001C8FDD001E11C2E;
isa = PBXBuildFile;
settings = {
};
};
F5263AEF01E2A9B801CE8F8F = {
isa = PBXFileReference;
name = Makefile.am;
path = ../doc/Makefile.am;
refType = 2;
};
F538241D024F89BC01A85B04 = {
isa = PBXExecutableFileReference;
path = portabtest;
refType = 3;
};
F538241E024F89BC01A85B04 = {
buildPhases = (
F538241F024F89BC01A85B04,
F5382423024F89BC01A85B04,
F5382425024F89BC01A85B04,
F5382426024F89BC01A85B04,
);
buildSettings = {
OTHER_CFLAGS = "";
OTHER_LDFLAGS = "";
OTHER_REZFLAGS = "";
PRODUCT_NAME = portabtest;
REZ_EXECUTABLE = YES;
SECTORDER_FLAGS = "";
WARNING_CFLAGS = "-Wall";
};
dependencies = (
);
isa = PBXToolTarget;
name = portabtest;
productInstallPath = /usr/local/bin;
productName = portabtest;
productReference = F538241D024F89BC01A85B04;
shouldUseHeadermap = 0;
};
F538241F024F89BC01A85B04 = {
buildActionMask = 2147483647;
files = (
F5382420024F89BC01A85B04,
F5382421024F89BC01A85B04,
F5382422024F89BC01A85B04,
);
isa = PBXHeadersBuildPhase;
name = Headers;
};
F5382420024F89BC01A85B04 = {
fileRef = F5F18134023EC63701A85B04;
isa = PBXBuildFile;
settings = {
};
};
F5382421024F89BC01A85B04 = {
fileRef = F5F18135023EC63701A85B04;
isa = PBXBuildFile;
settings = {
};
};
F5382422024F89BC01A85B04 = {
fileRef = F5F18136023EC63701A85B04;
isa = PBXBuildFile;
settings = {
};
};
F5382423024F89BC01A85B04 = {
buildActionMask = 2147483647;
files = (
F5382424024F89BC01A85B04,
);
isa = PBXSourcesBuildPhase;
name = Sources;
};
F5382424024F89BC01A85B04 = {
fileRef = F5F18137023EC63701A85B04;
isa = PBXBuildFile;
settings = {
};
};
F5382425024F89BC01A85B04 = {
buildActionMask = 2147483647;
files = (
);
isa = PBXFrameworksBuildPhase;
name = "Frameworks & Libraries";
};
F5382426024F89BC01A85B04 = {
buildActionMask = 2147483647;
files = (
);
isa = PBXRezBuildPhase;
name = "ResourceManager Resources";
};
F55047BA0240F6E501A85B04 = {
isa = PBXFileReference;
path = hash.c;
refType = 4;
};
F55047BB0240F6E501A85B04 = {
isa = PBXFileReference;
path = hash.h;
refType = 4;
};
F55047BC0240F6E501A85B04 = {
fileRef = F55047BB0240F6E501A85B04;
isa = PBXBuildFile;
settings = {
};
};
F55047BD0240F6E501A85B04 = {
fileRef = F55047BA0240F6E501A85B04;
isa = PBXBuildFile;
settings = {
};
};
F56D8B9E01E0BFA00155ADA7 = {
children = (
F56D8B9F01E0BFA00155ADA7,
F56D8BA001E0BFA00155ADA7,
);
isa = PBXGroup;
name = MacOSX;
path = "";
refType = 2;
};
F56D8B9F01E0BFA00155ADA7 = {
isa = PBXFileReference;
path = Makefile.am;
refType = 4;
};
F56D8BA001E0BFA00155ADA7 = {
children = (
F56D8BA101E0BFA00155ADA7,
);
isa = PBXGroup;
path = ngircd.pbproj;
refType = 4;
};
F56D8BA101E0BFA00155ADA7 = {
isa = PBXFileReference;
path = Makefile.am;
refType = 4;
};
F576ABFA01D5E77301A85B03 = {
isa = PBXFileReference;
path = parse.c;
refType = 4;
};
F576ABFB01D5E77301A85B03 = {
isa = PBXFileReference;
path = parse.h;
refType = 4;
};
F576ABFC01D5E77301A85B03 = {
fileRef = F576ABFB01D5E77301A85B03;
isa = PBXBuildFile;
settings = {
};
};
F576ABFD01D5E77301A85B03 = {
fileRef = F576ABFA01D5E77301A85B03;
isa = PBXBuildFile;
settings = {
};
};
F576ABFE01D61D7401A85B03 = {
isa = PBXFileReference;
name = messages.h;
path = ../src/ngircd/messages.h;
refType = 2;
};
F576ABFF01D61D7401A85B03 = {
fileRef = F576ABFE01D61D7401A85B03;
isa = PBXBuildFile;
settings = {
};
};
F57C88850232853501A85B04 = {
isa = PBXFileReference;
path = "irc-oper.c";
refType = 4;
};
F57C88860232853501A85B04 = {
isa = PBXFileReference;
path = "irc-oper.h";
refType = 4;
};
F57C88870232853501A85B04 = {
fileRef = F57C88860232853501A85B04;
isa = PBXBuildFile;
settings = {
};
};
F57C88880232853501A85B04 = {
fileRef = F57C88850232853501A85B04;
isa = PBXBuildFile;
settings = {
};
};
F57C88890232884501A85B04 = {
isa = PBXFileReference;
path = "irc-server.c";
refType = 4;
};
F57C888A0232884501A85B04 = {
isa = PBXFileReference;
path = "irc-server.h";
refType = 4;
};
F57C888B0232884501A85B04 = {
fileRef = F57C888A0232884501A85B04;
isa = PBXBuildFile;
settings = {
};
};
F57C888C0232884501A85B04 = {
fileRef = F57C88890232884501A85B04;
isa = PBXBuildFile;
settings = {
};
};
F57C888D02328D7201A85B04 = {
isa = PBXFileReference;
path = "irc-channel.c";
refType = 4;
};
F57C888E02328D7201A85B04 = {
isa = PBXFileReference;
path = "irc-channel.h";
refType = 4;
};
F57C888F02328D7201A85B04 = {
fileRef = F57C888E02328D7201A85B04;
isa = PBXBuildFile;
settings = {
};
};
F57C889002328D7201A85B04 = {
fileRef = F57C888D02328D7201A85B04;
isa = PBXBuildFile;
settings = {
};
};
F5F18132023EC61E01A85B04 = {
children = (
F5F18133023EC63701A85B04,
F5F18134023EC63701A85B04,
F5F18135023EC63701A85B04,
F5F18136023EC63701A85B04,
F5F18137023EC63701A85B04,
);
isa = PBXGroup;
name = portab;
path = /Users/alex/Develop/ngircd/src;
refType = 0;
};
F5F18133023EC63701A85B04 = {
isa = PBXFileReference;
name = Makefile.am;
path = portab/Makefile.am;
refType = 4;
};
F5F18134023EC63701A85B04 = {
isa = PBXFileReference;
name = exp.h;
path = portab/exp.h;
refType = 4;
};
F5F18135023EC63701A85B04 = {
isa = PBXFileReference;
name = imp.h;
path = portab/imp.h;
refType = 4;
};
F5F18136023EC63701A85B04 = {
isa = PBXFileReference;
name = portab.h;
path = portab/portab.h;
refType = 4;
};
F5F18137023EC63701A85B04 = {
isa = PBXFileReference;
name = portabtest.c;
path = portab/portabtest.c;
refType = 4;
};
F5F18138023EC63701A85B04 = {
fileRef = F5F18134023EC63701A85B04;
isa = PBXBuildFile;
settings = {
};
};
F5F18139023EC63701A85B04 = {
fileRef = F5F18135023EC63701A85B04;
isa = PBXBuildFile;
settings = {
};
};
F5F1813A023EC63701A85B04 = {
fileRef = F5F18136023EC63701A85B04;
isa = PBXBuildFile;
settings = {
};
};
};
rootObject = 08FB7793FE84155DC02AAC07;
}

View File

@@ -1,28 +1,89 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors
#
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
# der GNU General Public License (GPL), wie von der Free Software Foundation
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
#
# $Id: Makefile.am,v 1.8 2002/03/25 19:39:48 alex Exp $
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
AUTOMAKE_OPTIONS = gnu
SUBDIRS = doc MacOSX src
SUBDIRS = doc src man contrib
EXTRA_DIST = autogen.sh configure.ng .mailmap
clean-local:
rm -f build-stamp*
rm -rf ngircd.dest
maintainer-clean-local:
rm -rf autom4te.cache
rm -f Makefile.in Makefile aclocal.m4 configure
rm -f mkinstalldirs missing depcomp install-sh
rm -f config.log
rm -f Makefile.in Makefile aclocal.m4 configure configure.ac
rm -f ar-lib mkinstalldirs missing depcomp install-sh
rm -f config.log debian
testsuite:
cd src/testsuite && make check
lint:
make -C src/ngircd lint
cd src/ngircd && make lint
srcdoc:
cd doc && make srcdoc
have-xcodebuild:
@xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -list \
>/dev/null 2>&1 \
|| ( echo; echo "Error: \"xcodebuild\" not found!"; echo; exit 1 )
have-packagemaker:
@packagemaker >/dev/null 2>&1; [ $$? -le 1 ] \
|| ( echo; echo "Error: \"packagemaker\" not found!"; echo; exit 2)
xcode: have-xcodebuild
rel=`git describe|sed -e 's/rel-//g'|sed -e 's/-/~/'`; \
def="GCC_PREPROCESSOR_DEFINITIONS=\"VERSION=\\\"$$rel\\\"\""; \
xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -alltargets \
-configuration Default $$def build
xcode-clean: have-xcodebuild
xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -alltargets \
-configuration Default clean
rm -fr contrib/MacOSX/build
rpm: distcheck
rpm -ta ngircd-*.tar.gz
deb:
[ -f debian/rules ] || ln -s contrib/Debian debian
dpkg-buildpackage -rfakeroot -i
osxpkg: have-packagemaker osxpkg-dest
cd contrib/MacOSX && packagemaker \
--doc ngIRCd.pmdoc \
--out ../../$(distdir).mpkg
rm -f $(distdir).mpkg.zip
zip -ro9 $(distdir).mpkg.zip $(distdir).mpkg
rm -rf ngircd.dest $(distdir).mpkg
osxpkg-dest: have-xcodebuild clean
./configure --prefix=/opt/ngircd
make xcode
make -C contrib/MacOSX de.barton.ngircd.plist
mkdir -p ngircd.dest/opt/ngircd/sbin
DESTDIR="$$PWD/ngircd.dest" make -C doc install
DESTDIR="$$PWD/ngircd.dest" make -C contrib install
DESTDIR="$$PWD/ngircd.dest" make -C man install
cp contrib/MacOSX/build/Default/ngIRCd \
ngircd.dest/opt/ngircd/sbin/ngircd
rm ngircd.dest/opt/ngircd/etc/ngircd.conf
echo "Have a nice day IRCing!" >ngircd.dest/opt/ngircd/etc/ngircd.motd
chmod -R a-s,og-w,a+rX ngircd.dest
.PHONY: deb have-packagemaker have-xcodebuild lint osxpkg osxpkg-dest rpm \
srcdoc testsuite xcode xcode-clean
# -eof-

574
NEWS
View File

@@ -1,19 +1,571 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001,2002 by Alexander Barton,
alex@barton.de, http://www.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
ngIRCd ist freie Software und steht unter
der GNU General Public License.
-- NEWS / Neuigkeiten --
-- NEWS --
ngIRCd 0.3.x, ??.??.2002
ngIRCd 20 (2012-12-17)
- WHO implementiert (bisher ohne komplette Unerstuetzung von Masks).
- stderr wird nun in eine Datei umgelenkt (/usr/local/var/ngircd.err).
- Allow user names ("INDENT") up to 20 characters when ngIRCd has not
been configured for "strict RFC mode". This is useful if you are using
external (PAM) authenticaion mechanisms that require longer user names.
Patch suggested by Brett Smith <brett@w3.org>, see
<http://arthur.barton.de/pipermail/ngircd-ml/2012-October/000579.html>.
ngIRCd 20~rc2 (2012-12-02)
- Rework cloaked hostname handling and implement the "METADATA cloakhost"
subcommand: Now ngIRCd uses two fields internally, one to store the
"real" hostname and one to save the "cloaked" hostname. 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.
ngIRCd 20~rc1 (2012-11-11)
- Update doc/Services.txt: describe the upcoming version of Anope 1.9.8,
then including a protocol module for ngIRCd. And remove our own patches
in ./contrib/Anope because they aren't supported any more ...
- Implement new "METADATA" command which can be used by remote servers
and IRC services to update client metadata like the client info text
("real name"), user name, and hostname, and use this command to
configure an cloaked hostname (user mode "+x") on remote servers:
This prevents "double cloaking" of hostnames and even cloaked
hostnames are in sync on all servers supporting "METADATA" now.
- Implement new IRC "SVSNICK" command to allow remote servers (and IRC
services) to change nicknames of already registered users. 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 run mixed 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 desynchronization of the network.
- New configuration option "MaxListSize" to configure the maximum number
of channels returned by a LIST command. The default is 100, as before.
- 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_NONONREG_MSG (486), which is used by UnrealIRCd, too. (Closes #144)
- 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. (Closes #143)
- 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". (Closes #141)
- Allow users to "cloak" their hostname only when the configuration
variable "CloakHostModeX" (introduced in 19.2) is set. Otherwise, only
IRC operators, other servers, and services are allowed to set the user
mode "+x": this prevents regular users from changing their hostmask to
the name of the IRC server itself, which confused quite a few people ;-)
(Closes #133)
- New configuration option "OperChanPAutoOp": If disabled, IRC operators
don't become channel operators in persistent channels when joining.
Enabled by default, which has been the behavior of ngIRCd up to this
patch. (Closes #135)
- Allow IRC operators to see secret (+s) channels in LIST command as long
as the "MorePrivacy" configuration option isn't enabled in the
configuration file. (Closes #136)
- Implement new (optional) IRC+ "CHARCONV" command to set a client
character set that the server translates all messages to/from UTF-8.
This feature requires the "libiconv" library and must be enabled using
the new "--with-iconv" option of the ./configure script. See
doc/Protocol.txt for details. (Closes #109)
- Implement user mode "B" ("Bot flag"): it is settable and unsettable by
every (non-restricted) client. This is how Unreal and InspIRCd do
behave, and so do we :-)
- Implement channel mode "M": Only the server, identified users and IRC
operators are able to talk in such a channel.
- Block nicknames that are reserved for services and are defined using the
configuration variable "ServiceMask" in "Server" blocks; And this
variable now can handle more than one mask separated by commas.
- Implemented XOP channel user modes: "Half Op" ("+h", prefix "%") can set
the channel modes +imntvIbek and kick all +v and normal users; "Admin"
("+a", prefix "&") can set channel modes +imntvIbekoRsz and kick all +o,
+h, +v and normal users; and "Owner" ("+q", prefix "~") can set channel
modes +imntvIbekoRsz and kick all +a, +o, +h, +v and normal users.
- Implement hashed cloaked hostnames for both the "CloakHost" and
"CloakHostModeX" configuration options: now the admin can use the new
'%x' placeholder to insert a hashed version of the clients hostname,
and the new configuration option "CloakHostSalt" defines the salt for
the hash function. When "CloakHostSalt" is not set (the default), a
random salt will be generated after each server restart.
ngIRCd Release 19.2 (2012-06-19)
ngIRCd 19.2~rc1 (2012-06-13)
- New configuration option "CloakHostModeX" to configure the hostname
that gets used for IRC clients which have user mode "+x" enabled.
Up to now, the name of the IRC server itself has been used for this,
which still is the default when "CloakHostModeX" isn't set.
- Add instructions for setting up Atheme IRC services.
- Implement support for IRC capability handling, the new "CAP" command,
and capablity "multi-prefix" which allows both the NAME and WHO command
handlers to return more than one "class prefix" to the client.
ngIRCd Release 19.1 (2012-03-19)
- Really include _all_ patches to build the Anope module into the
distribution archive ... ooops!
ngIRCd Release 19 (2012-02-29)
ngIRCd 19~rc1 (2012-02-12)
- Update preliminary ngIRCd protocol module for Anope 1.9.6, which now
is the only supported version.
- New numeric RPL_WHOISHOST_MSG(378), which returns the DNS host name
(if available) and the IP address of a client in the WHOIS reply.
Only the user itself and local IRC operators get this numeric.
- Implement channel exception list (mode 'e'). This allows a channel
operator to define exception masks that allow users to join the
channel even when a "ban" would match and prevent them from joining:
the exception list (e) overrides the ban list (b).
- Implement user mode 'C': If the target user of a PRIVMSG or NOTICE
command has the user mode 'C' set, it is required that both sender
and receiver are on the same channel. This prevents private flooding
by completely unknown clients.
- New RPL_WHOISREGNICK_MSG(307) numeric in WHOIS command replies: it
indicates if a nickname is registered (if user mode 'R' set).
- Limit channel invite, ban, and exception lists to 50 entries and fix
duplicate check and error messages when adding already listed entries
or deleting no (longer) existing ones.
- Limit the number of list items in the reply of LIST (100), WHO (25),
WHOIS (10), and WHOWAS (25) commands.
- Limit the MODE command to handle a maximum number of 5 channel modes
that require an argument (+Ibkl) per call and report this number
in the ISUPPORT(005) numeric: "MODES=5".
- LINKS command: support <mask> parameter to limit the reply.
- Add 1 second penalty for every further target on PRIVMSG/NOTICE
commands: this reduces the possibility of flooding channels with
commands like "PRIVMSG/NOTICE #a,#n,#c,... :message" a little bit.
Problem noticed by Cahata, thanks!
- New configuration option "PAMIsOptional": when set, clients not
sending a password are still allowed to connect: they won't become
"identified" and keep the "~" character prepended to their supplied
user name. See "man 5 ngircd.conf" for details.
- Fixed handling of WHO commands. This fixes two bugs: "WHO <nick>"
returned nothing at all if the user was "+i" (reported by Cahata,
thanks) and "WHO <nick|nickmask>" returned channel names instead
of "*" when the user was member of a (visible) channel.
- LUSERS reply: only count channels that are visible to the requesting
client, so the existence of secret channels is no longer revealed by
using LUSERS. Reported by Cahata, thanks!
- Unknown user and channel modes no longer stop the mode parser, but
are simply ignored. Therefore modes after the unknown one are now
handled. This is how ircd2.10/ircd2.11/ircd-seven behave, at least.
Reported by Cahata, thanks!
- Implement IRC commands "GLINE" and "KLINE" to ban users. G-Lines are
synchronized between server on peering, K-Lines are local only.
If you use "*!<user>@<host>" or "*!*@<host>" masks, these connections
are blocked even before the user is fully logged in (before PASS,
NICK, and USER commands have been processed) and before the child
processes for authentication are forked, so resource usage is smaller.
- Added doc/Modes.txt: document modes supported by ngIRCd.
- Implement user mode "R": indicates that the nickname of this user
is "registered". This mode isn't handled by ngIRCd itself, but must
be set and unset by IRC services like Anope.
- Implement channel mode "R": only registered users (having the user
mode "R" set) are allowed to join this channel.
- Test suite: bind to loopback (127.0.0.1) interface only.
- Handle unknown user and channel modes: these modes are saved and
forwarded to other servers, but ignored otherwise.
- Handle channel user modes 'a', 'h', and 'q' from remote servers.
These channel user modes aren't used for anything at the moment,
but ngIRCd knows that these three modes are "channel user modes"
and not "channel modes", that is that these modes take an "nickname"
argument. Like unknown user and channel modes, these modes are saved
and forwarded to other servers, but ignored otherwise.
ngIRCd Release 18 (2011-07-10)
- Add preliminary ngIRCd protocol module for Anope 1.9 to contrib/Anope/.
ngIRCd 18~rc2 (2011-06-29)
- GnuTLS: use 1024 bits as minimum size of the DH prime. This enables
ngIRCd to accept incoming connections from other servers and clients
that "only" use at least 1024 bits again, like ngIRCd 17 did (and no
longer requires 2048 bits for incoming connections).
ngIRCd 18~rc1 (2011-06-27)
- New configuration option "MorePrivacy" to "censor" some user information.
When enabled, signon time and idle time is left out. Part and quit
messages are made to look the same. WHOWAS requests are silently dropped.
All of this is useful if one wish to conceal users that access the ngircd
servers from TOR or I2P.
- New configuration option "ScrubCTCP" to scrub incoming CTCP commands. If
activated, the server silently drops incoming CTCP requests from both
other servers and from users. The server that scrubs CTCP will not forward
the CTCP requests to other servers in the network either, which can spell
trouble if not every oper knows about the CTCP-scrubbing. Scrubbing CTCP
commands also means that it is not possible to send files between users.
There is one exception to the CTCP scrubbing performed: ACTION ("/me
commands") requests are not scrubbed.
- Restructure ngIRCd configuration file: introduce new [Limits], [Options],
and [SSL] sections. The intention of this restructuring is to make the
[Global] section much cleaner, so that it only contains variables that
most installations must adjust to the local requirements. All the optional
variables are moved to [Limits], for configurable limits and timers of
ngIRCd, and [Options], for optional features. All SSL-related variables
are moved to [SSL] and the "SSL"-prefix is stripped. The old variables in
the [Global] section are deprecated now, but are still recognized.
=> Don't forget to check your configuration, use "ngircd --configtest"!
- New documentation "how to contribute": doc/Contributing.txt.
- Avoid needlessly scary 'buffer overflow' messages: When the write buffer
space grows too large, ngIRCd has to disconnect the client to avoid
wasting too much memory, which is logged with a scary 'write buffer
overflow' message. Change this to a more descriptive wording.
- New configuration option "RequireAuthPing": PING-PONG on login. When
enabled, this configuration option lets ngIRCd send a PING with an numeric
"token" to clients logging in; and it will not become registered in the
network until the client responds with the correct PONG.
- New configuration option "NoticeAuth": send NOTICE AUTH on connect. When
active, ngircd will send "NOTICE AUTH" messages on client connect time
like e.g. snircd (QuakeNet) does.
- Add support for up to 3 targets in WHOIS queries, also allow up to one
wildcard query from local hosts. Follows ircd 2.10 implementation rather
than RFC 2812. At most 10 entries are returned per wildcard expansion.
- ngircd.conf(5) manual page: describe types of configuration variables
(booleans, text strings, integer numbers) and add type information to each
variable description.
- Terminate incoming connections on HTTP commands "GET" and "POST".
- New configuration option "CloakHost": when set, this host name is used for
every client instead of the real DNS host name (or IP address).
- New configuration option "CloakUserToNick": when enabled, ngIRCd sets
every clients' user name to their nickname and hides the user name
supplied by the IRC client.
- Make write buffers bigger, but flush early. Before this change, a client
got disconnected if the buffer flushing at 4k failed, now regular clients
can store up to 32k and servers up 64k even if flushing is not possible at
the moment. This enhances reliability on slow links.
- Allow "Port = 0" in [Server] blocks. Port number 0 marks remote servers
that try to connect to this daemon, but where this daemon never tries to
establish a connection on its own: only incoming connections are allowed.
- Enable WHOIS command to return information about services.
- Implement channel mode 'O': "IRC operators only". This channel mode is
used on DALnet (bahamut), for example.
- Remove support for ZeroConf/Bonjour/Rendezvous service registration
including the "[No]ZeroConf" configuration option.
- Deprecate NoXX-Options in ngircd.conf and move new variants into our new
[Options] section: 'NoDNS=no' => 'DNS=yes', 'NoIdent=no' => 'Ident=yes',
'NoPAM=no' => 'PAM=yes', and 'NoZeroConf=no' => 'ZeroConf=yes' (and
vice-versa). The defaults are adjusted accordingly and the old variables
in [Global] are still accepted, so there is no functional change.
ngIRCd Release 17.1 (2010-12-19)
- Don't log critical (or worse) messages to stderr
- Remove "error file" when compiled with debug code enabled
- New numeric 329: get channel creation time on "MODE #chan" commands
ngIRCd Release 17 (2010-11-07)
- doc: change path names in sample-ngircd.conf depending on sysconfdir
ngIRCd 17~rc2 (2010-10-25)
- Generate ngIRCd version number from GIT tag.
- Make sourcecode compatible with ansi2knr again. This allows to compile
ngIRCd using a pre-ANSI K&R C compiler again.
ngIRCd 17~rc1 (2010-10-11)
- New configuration option "NoZeroConf" to disable service registration at
runtime even if ngIRCd is compiled with support for ZeroConf (e.g. using
Howl, Avahi or on Mac OS X).
- New configuration option "SyslogFacility" to define the syslog "facility"
(the "target"), to which ngIRCd should send its log messages.
Possible values are system dependant, but most probably "auth", "daemon",
"user" and "local1" through "local7" are possible values; see syslog(3).
Default is "local5" for historical reasons.
- Dump the "internal server state" (configured servers, established
connections and known clients) to the console or syslog when receiving
the SIGUSR2 signal and debug mode is enabled.
- Enable the daemon to disable and enable "debug mode" on runtime using
signal SIGUSR1, when debug code is compiled in, not only on startup
using the command line parameters.
- Implement user mode "x": host name cloaking (closes: #102).
- Change MOTD file handling: ngIRCd now caches the contens of the MOTD
file, so the daemon now requires a HUP signal or REHASH command to
re-read the MOTD file when its content changed.
- Allow IRC ops to change channel modes even without OperServerMode set.
- Allow IRC operators to use MODE command on any channel (closes: #100).
- New configuration option "NoPAM" to disable PAM.
- Implement asynchronous user authentication using PAM, please see the
file doc/PAM.txt for details.
- Add some documentation for using BOPM with ngIRCd, see doc/Bopm.txt.
- Implement user mode "c": receive connect/disconnect NOTICEs. Note that
this new mode requires the user to be an IRC operator.
- Show SSL status in WHOIS output, numeric 275.
ngIRCd Release 16 (2010-05-02)
ngIRCd 16~rc2 (2010-04-25)
- Enhace connection statistics counters: display total number of served
connections on daemon shutdown and when a new client connects using
the new numeric RPL_STATSCONN (250).
ngIRCd 16~rc1 (2010-03-25)
- Implement WEBIRC command used by some Web-IRC frontends. The password
required to secure this command must be configured using the new
"WebircPassword" variable in the ngircd.conf file.
- Remove limit on max number of configured irc operators.
- A new channel mode "secure connections only" (+z) has been implemented:
Only clients using a SSL encrypted connection to the server are allowed
to join such a channel.
But please note three things: a) already joined clients are not checked
when setting this mode, b) IRC operators are always allowed to join
every channel, and c) remote clients using a server not supporting this
mode are not checked either and therefore always allowed to join.
ngIRCd Release 15 (2009-11-07)
ngIRCd 15~rc1 (2009-10-15)
- Do not add default listening port (6667) if SSL ports were specified, so
ngIRCd can be configured to only accept SSL-encrypted connections now.
- Enable IRC operators to use the IRC command SQUIT (insted of the already
implemented but non-standard DISCONNECT command).
- New configuration option "AllowRemoteOper" (disabled by default) that
enables remote IRC operators to use the IRC commands SQUIT and CONNECT
on the local server.
- Enforce upper limit on maximum number of handled commands. This implements
a throttling scheme: an IRC client can send up to 3 commands or 256 bytes
per second before a one second pause is enforced.
ngIRCd Release 14.1 (2009-05-05)
- Security: fix remotely triggerable crash in SSL/TLS code.
- Debian: build ngircd-full-dbg package.
- Allow ping timeout quit messages to show the timeout value.
ngIRCd Release 14 (2009-04-20)
ngIRCd 14~rc1 (2009-03-29)
- Allow creation of persistent modeless channels.
- The INFO command reports the compile time now (if available).
- Support individual channel keys for pre-defined channels: introduce
new configuration variable "KeyFile" in [Channel] sections in ngircd.conf,
here a file can be configured for each pre-defined channel which contains
individual channel keys for different users.
- Remove limit on maximum number of predefined channels in ngircd.conf.
ngIRCd Release 13 (2008-12-25)
ngIRCd 13~rc1 (2008-11-21):
- New version number scheme :-)
- Initial support for IRC services, using a RFC1459 style interface,
tested with IRCServices (http://www.ircservices.za.net/) version 5.1.13.
For this to work, ngIRCd now supports server-server links conforming
to RFC 1459. New ngircd.conf(5) option: ServiceMask.
- Support for SSL-encrypted server-server and client-server links using
OpenSSL (configure: --with-openssl) or GNUTLS (configure: --with-gnutls).
New ngircd.conf(5) options: SSLPorts, SSLKeyFile, SSLKeyFilePassword,
SSLCertFile, SSLDHFile, and SSLConnect.
- Server local channels have been implemented, prefix "&", that are only
visible to users of the same server and are not visible in the network.
In addition ngIRCd creates a "special" channel &SERVER on startup and logs
all the messages to it that a user with mode +s receives.
- New make target "osxpkg" to build a Mac OS X installer package.
- New configuration option "NoIdent" to disable IDENT lookups even if the
daemon is compiled with IDENT support.
ngIRCd 0.12.1 (2008-07-09)
- Add option aliases -V (for --version) and -h (for --help).
- Make Listen parameter a comma-separated list of addresses. This also
obsoletes ListenIPv4 and ListenIPv6 options. If Listen is unset, it
is treated as Listen="::,0.0.0.0".
Note: ListenIPv4 and ListenIPv6 options are still recognized,
but ngircd will print a warning if they are used in the config file.
ngIRCd 0.12.0 (2008-05-13)
ngIRCd 0.12.0-pre2 (2008-04-29)
- IPv6: Add config options to disable ipv4/ipv6 support.
ngIRCd 0.12.0-pre1 (2008-04-20)
- Add IPv6 support.
- Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X.
- Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and
enhanced test suite to check these commands. (Dana Dahlstrom)
- IRC_WHO now supports search patterns and will test this against user
nickname/server name/host name, etc. as required by RFC 2812, Section 3.6.1.
(reported by Dana Dahlstrom)
- Implement RFC 2812 handling of "0" argument to 'JOIN': must be treated
as if the user had sent PART commands for all channels the user is a
member of. (Dana Dahlstrom)
- Allow NOTICEs to be sent to a channel. (Fabian Schlager)
ngIRCd 0.11.0 (2008-01-15)
- Add support for /STAT u (server uptime) command.
- New [Server] configuration Option "Bind" allows to specify
the source IP address to use when connecting to remote server.
- New configuration option "MaxNickLength" to specify the allowed maximum
length of user nicknames. Note: must be unique in an IRC network!
- Numeric 317: implemented "signon time" (displayed in WHOIS result).
- Added new server configuration option "Passive" for "Server" blocks to
disable automatic outgoing connections (similar to -p option to ngircd,
but only for the specified server). (Tassilo Schweyer)
- Added support for the WALLOPS command. Usage is restricted to IRC
operators.
ngIRCd 0.10.2 (2007-06-08)
- Predefined channel configuration now allows specification of channel key
(mode k) and maximum user count (mode l): variables "Key" and "MaxUsers".
- When using the epoll() IO interface, compile in the select() interface as
well and fall back to it when epoll() isn't available on runtime.
- Added support for IO APIs "poll()" and "/dev/poll".
ngIRCd 0.10.1 (2006-12-17)
- Allow PASS syntax defined in RFC 1459 for server links, too.
- New configuration option "PredefChannelsOnly": if set, clients can only
join predefined channels.
ngIRCd 0.10.0 (2006-10-01)
ngIRCd 0.10.0-pre1 (2006-08-02)
- Enhanced DIE to accept a single parameter ("comment text") which is sent
to all locally connected clients before the server goes down.
- JOIN now supports more than one channel key at a time.
- Implemented numeric "333": Time and user name who set a channel topic.
- Channel topics are no longer limited to 127 characters: now the only limit
is the maximum length of an IRC command, i. e. 512 bytes (in practice, this
limits the topic to about 490 characters due to protocol overhead).
- Reverse DNS lookup code now checks the result by doing an additional
lookup to prevent spoofing.
- Added new IO layer which (optionally) supports epoll() and kqueue() in
addition to the select() interface.
ngIRCd 0.9.0 (2005-07-24)
- Never run with root privileges but always switch the user ID.
- Make "netsplit" messages RFC compliant.
- Implemented the IRC function "WHOWAS".
- New configuration option "OperServerMode" to enable a workaround needed
when running an network with ircd2 servers and "OperCanUseMode" enabled
to prevent the ircd2 daemon to drop mode changes of IRC operators.
Patch by Florian Westphal, <westphal@foo.fh-furtwangen.de>.
- Implemented support for "secret channels" (channel mode "s").
- New configuration option "Mask" for [Operator] sections to limit OPER
commands to users with a specific IRC mask. Patch from Florian Westphal.
- New configuration variable "PidFile", section "[Global]": if defined,
the server writes its process ID (PID) to this file. Default: off.
Idea of Florian Westphal, <westphal@foo.fh-furtwangen.de>.
- Added support for the Howl (http://www.porchdogsoft.com/products/howl/)
Rendezvous API, in addition to the API of Apple (Mac OS X). The available
API will be autodetected when you call "./configure --with-rendezvous".
ngIRCd 0.8.0 (2004-06-26)
- Two new configuration options: "ChrootDir" and "MotdPhrase", thanks to
Benjamin Pineau <ben@zouh.org>. Now you can force the daemon to change
its root and working directory to something "safe". MotdPhrase is used
to define an "MOTD string" instead of a whole file, useful if the
"real" MOTD file would be outside the "jail".
- INVITE- and BAN-lists become synchronized between IRC+ servers when
establishing new connections, if the peer supports this as well.
- The type of service (TOS) of all sockets is set to "interactive" now.
- Added short command line option "-t" as alternative to "--configtest".
- Added optional support for "IDENT" lookups on incoming connections. You
have to enable this function with the ./configure switch "--with-ident".
The default is not to do IDENT lookups.
ngIRCd 0.7.5 (2003-07-11)
- New configuration variable "MaxConnectionsIP" to limit the number of
simultaneous connections from a single IP that the server will accept.
This configuration options lowers the risk of denial of service attacks
(DoS), the default is 5 connections per client IP.
- Added new configuration variable "Listen" to bind all listening
sockets of the server to a single IP address.
ngIRCd 0.7.1 (2003-07-18)
- Added support for GNU/Hurd.
ngIRCd 0.7.0 (2003-05-01)
- New command CONNECT to enable and add server links. The syntax is not
RFC-compatible: use "CONNECT <name> <port>" to enable and connect an
configured server and "CONNECT <name> <port> <host> <mypwd> <peerpwd>"
to add a new server (ngIRCd tries to connect new servers only once!).
- Added DISCONNECT command ("DISCONNECT <name>") to disable servers.
- New command TRACE (you can trace only servers at the moment).
- New command HELP that lists all understood commands.
- ngIRCd can register itself with Rendezvous: to enable support pass the
new switch "--with-rendezvous" to configure.
- Added support for TCP Wrappers library: pass "--with-tcp-wrappers" to
configure to enable it.
- Changed some configure options to use "--with"/"--without" as prefix
instead of "--enable"/"--disable": "--without-syslog", "--without-zlib",
"--with-tcp-wrappers", and "--with-rendezvous".
- Enhanced manual pages ngircd(8) and ngircd.conf(5).
- Documentation is now installed in $(datadir)/doc/ngircd.
Older news (sorry, only available in german language):
ngIRCd 0.6.0, 2002-12-24
- beim Schliessen einer Verbindung zeigt der Server nun vor dem ERROR
noch eine Statistik ueber die empfangene und gesendete Datenmenge an.
- Connection-Strukturen werden nun "pool-weise" verwaltet; der Pool wird
bei Bedarf bis zu einem konfigurierten Limit vergroessert.
- Mit der neuen Konfigurationsvariable "MaxConnections" (Sekion "Global")
kann die maximale Anzahl gleichzeitiger Verbindungen begrenzt werden.
Der Default ist -1, "unlimitiert".
- der Server erkennt nun, ob bereits eine eingehende Verbindung von einem
Peer-Server besteht und versucht dann nicht mehr, selber eine eigene
ausgehende Verbindung zu diesem auufzubauen. Dadurch kann nun auf beiden
Servern in der Konfiguration ein Port fuer den Connect konfiguriert
werden (beide Server versuchen sich dann gegenseitig zu connectieren).
- Server identifizieren sich nun mit asynchronen Passwoertern, d.h. das
Passwort, welches A an B schickt, kann ein anderes sein als das, welches
B als Antwort an A sendet. In der Konfig.-Datei, Abschnitt "Server",
wurde "Password" dazu durch "MyPassword" und "PeerPassword" ersetzt.
- Der Server kann nun zur Laufzeit die Konfiguration neu einlesen: dies
macht er nach dem Befehl REHASH oder wenn ein HUP-Signal empfangen wird.
- Server-Server-Links koennen nun komprimiert werden, dazu wird die zlib
(www.zlib.org) benoetigt. Unterstuetzt die Gegenseite die Komprimierung
nicht, wird automatisch unkomprimiert kommuniziert. Das Verfahren ist
kompatibel mit dem Original-ircd 2.10.3, d.h. beide Server koennen
miteinander ueber komprimiert Links kommunizieren.
- neue Konfigurations-Variable "MaxJoins": Hiermit kann die maximale Zahl
der Channels, in denen ein User Mitglied sein kann, begrent werden.
- neue Channel-Modes l (User-Limit) und k (Channel-Key) implementiert.
ngIRCd 0.5.0, 20.09.2002
- AIX (3.2.5), HP-UX (10.20), IRIX (6.5), NetBSD (1.5.3/m68k) und Solaris
(2.5.1, 2.6) gehoeren nun auch zu den unterstuetzten Platformen.
- Unter A/UX (und evtl. weiteren Systemen) kompiliert der ngIRCd nun mit
dem "nativen" (ggf. pre-ANSI) Compiler.
- "persistente Channels" (Mode 'P') implementiert: diese koennen in der
Konfigurationsdatei definiert werden (Sektion "Channel", vgl. Beispiel-
Konfiguration "sample-ngircd.conf") und bleiben auch dann bestehen,
wenn kein User mehr im Channel ist.
- neue IRC-Befehle: KICK, INVITE, ADMIN, CHANINFO; LIST wurde erweitert.
Mit dem neuen Befehl CHANINFO synchronisieren Server, die das IRC+-
Protokoll unterstuetzen, Channel-Modes und Topics. Fuer den ADMIN-Befehl
gibt es neue Konfigurationsoptionen (Sektion "Global"): "AdminInfo1",
"AdminInfo2" und "AdminEMail".
- Invite- und Ban-Lists implementiert.
- neue Konfigurationsoption "OperCanUseMode" (Sektion "Global"):
ist sie aktiv, koennen IRC-Operatoren immer Channel-Modes setzen.
- "Test-Suite" begonnen: mit "make check" wird sie durchlaufen.
ngIRCd 0.4.2, 29.04.2002
- IRC-Funktion LIST implementiert; bisher werden allerdings noch keine
Regular Expressions (bis auf "*") unterstuetzt.
ngIRCd 0.4.0, 01.04.2002
- WHO implementiert (bisher ohne komplette Unterstuetzung von Masks).
- stderr wird nun in eine Datei umgelenkt (/ngircd-<PID>.err).
Laeuft der Server nicht im Debug-Modus, so wird diese bei Programm-
ende geloescht. Sollte der Server abstuerzen, finden sich hier evtl.
zusaetzliche Informationen.
@@ -82,7 +634,3 @@ ngIRCd 0.0.2, 06.01.2002
ngIRCd 0.0.1, 31.12.2001
- erste oeffentliche Version von ngIRCd als "public preview" :-)
--
$Id: NEWS,v 1.25 2002/03/29 23:41:23 alex Exp $

125
README
View File

@@ -1,68 +1,93 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001,2002 by Alexander Barton,
alex@barton.de, http://www.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
ngIRCd ist freie Software und steht unter
der GNU General Public License.
-- README / Liesmich --
-- README --
I. Einfuehrung
~~~~~~~~~~~~~~
I. Introduction
~~~~~~~~~~~~~~~
ngIRCd ist ein Server fuer den Internet Relay Chat (IRC). Er ist von Grund
auf neu geschrieben, also nicht wie die meisten anderen IRCd's vom Urvater,
dem Daemon des IRCNet abgeleitet.
ngIRCd is a free, portable and lightweight Internet Relay Chat server for
small or private networks, developed under the GNU General Public License
(GPL; please see the file COPYING for details). It is simple to configure,
can cope with dynamic IP addresses, and supports IPv6 as well as SSL. It is
written from scratch and not based on the original IRCd.
Zur Zeit befindet sich der ngIRCd noch in Entwicklung, teilweise fehlen noch
Features oder sind noch nicht "final" implementiert.
The name ngIRCd means next generation IRC daemon, which is a little bit
exaggerated: lightweight Internet Relay Chat server most probably would be a
better name :-)
Channels sind inzwischen implementiert (seit Version 0.1.0), privates Chatten
mit /msg und /query funktioniert ebenso. Server-Links werden dabei unter-
stuetzt. Einige User- und Channel-Modes sind implementiert, hier kennt der
Server jedoch noch nicht alles.
Bisher (mehr oder wenig vollstaendig) implementierte IRC-Befehle:
AWAY, DIE, ERROR, ISON, JOIN, KILL, LINKS, LUSERS, MODE, MOTD, NAMES, NICK,
NOTICE, NJOIN, OPER, PART, PASS, PING, PONG, PRIVMSG, QUIT, RESTART, SERVER,
SQUIT, TOPIC, USER, USERHOST, VERSION, WHO, WHOIS.
Ueber Rueckmeldungen, Bug-Reports und Patches freue ich mich! Also los, haut
in die Tasten! :-))
Via E-Mail erreichst du mich als <alex@arthur.ath.cx> bzw. <alex@barton.de>.
Die Homepage des ngIRCd findest du unter <http://arthur.ath.cx/~alex/ngircd/>.
Please see the INSTALL document for installation and upgrade information!
Hinweise zur Installation findest du in der Datei INSTALL.
Alle Autoren von ngIRCd sind in AUTHORS aufgefuehrt.
In der Datei COPYING steht die GNU General Public License.
Das README liest du gerade ,-)
II. Status
~~~~~~~~~~~
It is not the goal of ngIRCd to implement all the nasty behaviours of the
original ircd, but to implement most of the useful commands and semantics
specified by the RFCs.
In the meantime ngIRCd should be quite feature complete and stable to be
used in real IRC networks.
Implemented IRC-commands are:
ADMIN, AWAY, CHANINFO, CONNECT, DIE, DISCONNECT, ERROR, GLINE, HELP, INFO,
INVITE, ISON, JOIN, KICK, KILL, KLINE, LINKS, LIST, LUSERS, MODE, MOTD,
NAMES, NICK, NJOIN, NOTICE, OPER, PART, PASS, PING, PONG, PRIVMSG, QUIT,
REHASH, RESTART, SERVER, SERVICE, SERVLIST, SQUERY, SQUIT, STATS, SUMMON,
TIME, TOPIC, TRACE, USER, USERHOST, USERS, VERSION, WALLOPS, WEBIRC, WHO,
WHOIS, WHOWAS.
III. Features (or: why use ngIRCd?)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- well arranged (lean) configuration file
- simple to build/install, configure and maintain
- supports IPv6 and SSL
- no problems with servers that have dynamic IP addresses
- freely available, modern, portable and tidy C-source
- wide field of supported platforms, including AIX, A/UX, FreeBSD, HP-UX,
IRIX, Linux, Mac OS X, NetBSD, OpenBSD, Solaris, and Windows with Cygwin.
- ngIRCd is being actively developed since 2001.
II. Vorteile
~~~~~~~~~~~~
IV. Documentation
~~~~~~~~~~~~~~~~~
- keine Probleme mit Servern, deren IP-Adressen nicht statisch sind,
- uebersichtliche ("schlanke") Konfigurationsdatei,
- frei verfuegbarer, moderner und "aufgeraeumter" C-Quellcode.
- ngIRCd wird aktiv weiter entwickelt.
More documentation can be found in the "doc/" directory and the homepage of
the ngIRCd: <http://ngircd.barton.de/>.
III. Unterstuetzte Plattformen
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
V. Download
~~~~~~~~~~~
- A/UX
- FreeBSD
- Linux
- Mac OS X
- NetBSD
- Windows mit Cygwin
The homepage of the ngIRCd is: <http://ngircd.barton.de/>; you will find
the newest information about the ngIRCd and the most recent ("stable")
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/).
--
$Id: README,v 1.8 2002/03/21 23:25:15 alex Exp $
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>
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>.

View File

@@ -1,16 +1,214 @@
#!/bin/sh
#
# $Id: autogen.sh,v 1.3 2002/03/12 14:37:51 alex Exp $
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2012 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
# Usage:
# [VAR=<value>] ./autogen.sh [<configure-args>]
#
# This script generates the ./configure script using GNU automake and
# GNU autoconf. It tries to be smart in finding the correct/usable/available
# installed versions of these tools on your system.
#
# In addition, it enables or disables the "de-ANSI-fication" support of GNU
# automake, which is supported up to autoconf 1.11.x an has been removed
# in automake 1.12 -- make sure to use a version of automake supporting it
# when generating distribution archives!
#
# The following strategy is used for each of aclocal, autoheader, automake,
# and autoconf: first, "tool" (the regular name of the tool, e. g. "autoconf"
# or "automake") is checked. If this fails, "tool<major><minor>" (for example
# "automake16") and "tool-<major>.<minor>" (e. g. "autoconf-2.54") are tried
# with <major> being 2 for tool of GNU autoconf and 1 for tools of automake;
# <minor> is tried from 99 to 0. The first occurrence will be used.
#
# When you pass <configure-args> to autogen.sh it will call the generated
# ./configure script on success and pass these parameters to it.
#
# You can tweak the behaviour using these environment variables:
#
# - ACLOCAL=<cmd>, AUTOHEADER=<cmd>, AUTOMAKE=<cmd>, AUTOCONF=<cmd>
# Name and optionally path to the particular tool.
# - PREFIX=<path>
# Search the GNU autoconf and GNU automake tools in <path> first. If the
# generated ./configure script will be called, pass "--prefix=<path>" to it.
# - EXIST=<tool>
# Use <tool> to test for aclocal, autoheader etc. pp. ...
# When not specified, either "type" or "which" is used.
# - VERBOSE=1
# Output the detected names of the GNU automake and GNU autoconf tools.
# - GO=1
# Call ./configure even if no arguments have been passed to autogen.sh.
#
# Examples:
#
# - ./autogen.sh
# Generates the ./configure script.
# - GO=1 ./autogen.sh
# Generates the ./configure script and runs it as "./configure".
# - VERBOSE=1 ./autogen.sh --with-ident
# Show tool names, generates the ./configure script, and runs it with
# these arguments: "./configure --with-ident".
# - ACLOCAL=aclocal-1.6 GO=1 PREFIX=$HOME ./autogen.sh
# Uses "aclocal-1.6" as aclocal tool, generates the ./configure script,
# and runs it with these arguments: "./configure --prefix=$HOME".
#
if [ -f configure ]; then
echo "autogen.sh: configure-Skript existiert bereits ..."
Search()
{
[ $# -eq 2 ] || exit 1
searchlist="$1"
major="$2"
minor=99
[ -n "$PREFIX" ] && searchlist="${PREFIX}/$1 ${PREFIX}/bin/$1 $searchlist"
for name in $searchlist; do
$EXIST "${name}" >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "${name}"
return 0
fi
done
while [ $minor -ge 0 ]; do
for name in $searchlist; do
$EXIST "${name}${major}${minor}" >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "${name}${major}${minor}"
return 0
fi
$EXIST "${name}-${major}.${minor}" >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "${name}-${major}.${minor}"
return 0
fi
done
minor=`expr $minor - 1`
done
return 1
}
Notfound()
{
echo "Error: $* not found!"
echo "Please install recent versions of GNU autoconf and GNU automake."
exit 1
}
Run()
{
[ "$VERBOSE" = "1" ] && echo " - running \"$@\" ..."
$@
}
# Reset locale settings to suppress warning messages of Perl
unset LC_ALL
unset LANG
# Which command should be used to detect the automake/autoconf tools?
[ -z "$EXIST" ] && existlist="type which" || existlist="$EXIST"
EXIST=""
for t in $existlist; do
$t /bin/ls >/dev/null 2>&1
if [ $? -eq 0 ]; then
rm -f /tmp/test.$$
$t /tmp/test.$$ >/dev/null 2>&1
[ $? -ne 0 ] && EXIST="$t"
fi
[ -n "$EXIST" ] && break
done
if [ -z "$EXIST" ]; then
echo "Didn't detect a working command to test for the autoconf/automake tools!"
echo "Searchlist: $existlist"
exit 1
fi
[ "$VERBOSE" = "1" ] && echo "Using \"$EXIST\" to test for tools."
# Try to detect the needed tools when no environment variable already
# specifies one:
echo "Searching for required tools ..."
[ -z "$ACLOCAL" ] && ACLOCAL=`Search aclocal 1`
[ "$VERBOSE" = "1" ] && echo " - ACLOCAL=$ACLOCAL"
[ -z "$AUTOHEADER" ] && AUTOHEADER=`Search autoheader 2`
[ "$VERBOSE" = "1" ] && echo " - AUTOHEADER=$AUTOHEADER"
[ -z "$AUTOMAKE" ] && AUTOMAKE=`Search automake 1`
[ "$VERBOSE" = "1" ] && echo " - AUTOMAKE=$AUTOMAKE"
[ -z "$AUTOCONF" ] && AUTOCONF=`Search autoconf 2`
[ "$VERBOSE" = "1" ] && echo " - AUTOCONF=$AUTOCONF"
[ $# -gt 0 ] && CONFIGURE_ARGS=" $@" || CONFIGURE_ARGS=""
[ -z "$GO" -a -n "$CONFIGURE_ARGS" ] && GO=1
# Verify that all tools have been found
[ -z "$ACLOCAL" ] && Notfound aclocal
[ -z "$AUTOHEADER" ] && Notfound autoheader
[ -z "$AUTOMAKE" ] && Notfound automake
[ -z "$AUTOCONF" ] && Notfound autoconf
AM_VERSION=`$AUTOMAKE --version|head -n 1|egrep -o "([1-9]\.[0-9]+(\.[0-9]+)*)"`
ifs=$IFS; IFS="."; set $AM_VERSION; IFS=$ifs
AM_MAJOR="$1"; AM_MINOR="$2"; AM_PATCHLEVEL="$3"
AM_MAKEFILES="src/ipaddr/Makefile.ng src/ngircd/Makefile.ng src/testsuite/Makefile.ng src/tool/Makefile.ng"
if [ "$AM_MAJOR" -eq "1" -a "$AM_MINOR" -lt "12" ]; then
# automake < 1.12 => automatic de-ANSI-fication support available
echo "Enabling de-ANSI-fication support (automake $AM_VERSION) ..."
sed -e "s|^__ng_PROTOTYPES__|AM_C_PROTOTYPES|g" configure.ng >configure.ac
DEANSI_START=""
DEANSI_END=""
else
# automake >= 1.12 => no de-ANSI-fication support available
echo "Disabling de-ANSI-fication support (automake $AM_VERSION) ..."
sed -e "s|^__ng_PROTOTYPES__|AC_C_PROTOTYPES|g" configure.ng >configure.ac
DEANSI_START="#"
DEANSI_END=" # disabled by ./autogen.sh script"
fi
sed -e "s|^__ng_Makefile_am_template__|${DEANSI_START}AUTOMAKE_OPTIONS = ansi2knr${DEANSI_END}|g" \
src/portab/Makefile.ng >src/portab/Makefile.am
for makefile_ng in $AM_MAKEFILES; do
makefile_am=`echo "$makefile_ng" | sed -e "s|\.ng\$|\.am|g"`
sed -e "s|^__ng_Makefile_am_template__|${DEANSI_START}AUTOMAKE_OPTIONS = ../portab/ansi2knr${DEANSI_END}|g" \
$makefile_ng >$makefile_am
done
export ACLOCAL AUTOHEADER AUTOMAKE AUTOCONF
# Generate files
echo "Generating files using GNU $AUTOCONF and $AUTOMAKE ..."
Run $ACLOCAL && \
Run $AUTOCONF && \
Run $AUTOHEADER && \
Run $AUTOMAKE --add-missing --no-force
if [ $? -eq 0 -a -x ./configure ]; then
# Success: if we got some parameters we call ./configure and pass
# all of them to it.
NAME=`grep PACKAGE_STRING= configure | cut -d"'" -f2`
if [ "$GO" = "1" ]; then
[ -n "$PREFIX" ] && p=" --prefix=$PREFIX" || p=""
c="./configure${p}${CONFIGURE_ARGS}"
echo "Okay, autogen.sh for $NAME done."
echo "Calling \"$c\" ..."
$c
exit $?
else
echo "Okay, autogen.sh for $NAME done."
echo "Now run the \"./configure\" script."
exit 0
fi
else
# Failure!?
echo "Error! Check your installation of GNU automake and autoconf!"
exit 1
fi
aclocal && \
autoheader && \
automake --add-missing && \
autoconf && \
echo "Okay, autogen.sh war erfolgreich."
# -eof-

1206
config.guess vendored

File diff suppressed because it is too large Load Diff

601
config.sub vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,175 +0,0 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
#
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
# der GNU General Public License (GPL), wie von der Free Software Foundation
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
#
# $Id: configure.in,v 1.39 2002/03/30 18:02:39 alex Exp $
#
# -- Initialisierung --
AC_INIT
AC_CANONICAL_TARGET
AC_CONFIG_SRCDIR(src/config.h.in)
AM_INIT_AUTOMAKE(ngircd,0.3.0-CVS)
AM_CONFIG_HEADER(src/config.h)
# -- Templates fuer config.h --
AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled])
AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
AH_TEMPLATE([SNIFFER], [Define if IRC sniffer should be enabled])
AH_TEMPLATE([STRICT_RFC], [Define if ngIRCd should behave strict RFC compliant])
AH_TEMPLATE([USE_SYSLOG], [Define if syslog should be used for logging])
AH_TEMPLATE([TARGET_OS], [Target operating system name])
AH_TEMPLATE([TARGET_VENDOR], [Target system vendor])
AH_TEMPLATE([TARGET_CPU], [Target CPU name])
# -- C Compiler --
AC_PROG_CC
AC_LANG_C
# -- Hilfsprogramme --
AC_PROG_AWK
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB
# -- Header --
AC_HEADER_STDC
AC_HEADER_TIME
AC_CHECK_HEADERS(arpa/inet.h)
AC_CHECK_HEADERS([ \
errno.h fcntl.h netdb.h netinet/in.h stdlib.h string.h \
sys/socket.h sys/time.h sys/wait.h unistd.h \
],,AC_MSG_ERROR([required C header missing!]))
# -- Datentypen --
AC_MSG_CHECKING(whether socklen_t exists)
AC_TRY_COMPILE([
#include <sys/socket.h>
#include <sys/types.h>
],[
socklen_t a, b;
a = 2; b = 4; a += b;
],[
AC_DEFINE(HAVE_socklen_t) AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
])
# -- Libraries --
AC_CHECK_LIB(UTIL,memmove)
# -- Funktionen --
AC_FUNC_MALLOC
AC_CHECK_FUNCS([ \
bind gethostbyaddr gethostbyname gethostname inet_ntoa memmove \
memset select setsockopt socket strcasecmp strchr strerror strftime \
strstr vsnprintf waitpid \
],,AC_MSG_ERROR([required function missing!]))
AC_CHECK_FUNCS(inet_aton)
AC_CHECK_FUNCS(sigaction)
# -- Konfigurationsoptionen --
AC_ARG_ENABLE(syslog,
[ --disable-syslog disable syslog (autodetected by default)],
[ if test "$enableval" = "yes"; then
AC_CHECK_HEADER(syslog.h,
[ AC_DEFINE(USE_SYSLOG, 1)
AC_CHECK_LIB(be,syslog)
],
AC_MSG_ERROR([Can't enable syslog: syslog.h not found!])
)
else
AC_MSG_RESULT([disabling syslog])
fi
],
[ AC_CHECK_HEADER(syslog.h,
[ AC_DEFINE(USE_SYSLOG, 1)
AC_CHECK_LIB(be,syslog)
]
)
]
)
AC_ARG_ENABLE(strict-rfc,
[ --enable-strict-rfc strict RFC conformance, may break clients],
if test "$enableval" = "yes"; then
AC_DEFINE(STRICT_RFC, 1)
AC_MSG_RESULT([enabling strict RFC conformance])
fi
)
AC_ARG_ENABLE(sniffer,
[ --enable-sniffer enable network traffic monitor (enables debug mode!)],
if test "$enableval" = "yes"; then
AC_DEFINE(SNIFFER, 1)
AC_MSG_RESULT([enabling network traffic monitor])
x_debug_on=yes
fi
)
AC_ARG_ENABLE(debug,
[ --enable-debug show additional debug output],
if test "$enableval" = "yes"; then x_debug_on=yes; fi
)
if test "$x_debug_on" = "yes"; then
AC_DEFINE(DEBUG, 1)
AC_MSG_RESULT([enabling additional debug output])
fi
# -- Definitionen --
AC_DEFINE_UNQUOTED(TARGET_CPU, "$target_cpu" )
AC_DEFINE_UNQUOTED(TARGET_VENDOR, "$target_vendor" )
AC_DEFINE_UNQUOTED(TARGET_OS, "$target_os" )
# -- Variablen --
if test "$GCC" = "yes"; then
CFLAGS="-Wall $CFLAGS"
fi
CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'"
if test `uname` = "A/UX"; then
# unter A/UX sollte _POSIX_SOURCE definiert sein.
AC_MSG_RESULT([detected A/UX, defining _POSIX_SOURCE])
CFLAGS="$CFLAGS -D_POSIX_SOURCE"
fi
# -- Ausgabe --
AC_OUTPUT([ \
Makefile \
doc/Makefile \
MacOSX/Makefile \
MacOSX/ngircd.pbproj/Makefile \
src/Makefile \
src/portab/Makefile \
src/ngircd/Makefile \
])
# -eof-

722
configure.ng Normal file
View File

@@ -0,0 +1,722 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2012 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
define(VERSION_ID,esyscmd([
V=`git describe 2>/dev/null | sed -e 's/rel-//g' | sed -e 's/-/~/'`;
[ -z "$V" -a -r configure ] \
&& V=`grep "PACKAGE_STRING=" configure | cut -d"'" -f2 | cut -d' ' -f2`
( [ -n "$V" ] && echo "$V" || echo "??" ) | tr -d '\n';
]))
m4_ifdef([AM_SILENT_RULES],
[m4_define([ng_color_tests], [color-tests])],
[m4_define([ng_color_tests], [])])
# -- Initialisation --
AC_PREREQ([2.61])
AC_INIT([ngIRCd], VERSION_ID,
[ngircd-ml@ngircd.barton.de], [ngircd], [http://ngircd.barton.de/])
AC_CONFIG_SRCDIR([src/ngircd/ngircd.c])
AC_CONFIG_HEADER([src/config.h])
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([-Wall 1.10 ]ng_color_tests)
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
# -- Templates for config.h --
AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled])
AH_TEMPLATE([HAVE_sockaddr_in_len], [Define if sockaddr_in.sin_len exists])
AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
AH_TEMPLATE([ICONV], [Define if libiconv can be used, e.g. for CHARCONV])
AH_TEMPLATE([IDENTAUTH], [Define if the server should do IDENT requests])
AH_TEMPLATE([IRCPLUS], [Define if IRC+ protocol should be used])
AH_TEMPLATE([PAM], [Define if PAM should be used])
AH_TEMPLATE([SNIFFER], [Define if IRC sniffer should be enabled])
AH_TEMPLATE([STRICT_RFC], [Define if ngIRCd should behave strict RFC compliant])
AH_TEMPLATE([SYSLOG], [Define if syslog should be used for logging])
AH_TEMPLATE([TCPWRAP], [Define if TCP wrappers should be used])
AH_TEMPLATE([WANT_IPV6], [Define if IPV6 protocol should be enabled])
AH_TEMPLATE([ZLIB], [Define if zlib compression should be enabled])
AH_TEMPLATE([HOST_OS], [Target operating system name])
AH_TEMPLATE([HOST_VENDOR], [Target system vendor])
AH_TEMPLATE([HOST_CPU], [Target CPU name])
# -- C Compiler --
AC_PROG_CC
AC_PROG_CC_STDC
# -- Helper programs --
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
AC_PROG_AWK
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB
# -- Compiler Features --
AC_C_CONST
AC_C_INLINE
__ng_PROTOTYPES__
# -- Hard coded system and compiler dependencies/features/options ... --
AC_DEFUN([GCC_STACK_PROTECT_CC],[
ssp_cc=yes
# we use -fstack-protector-all for the test to enfoce the use of the guard variable
AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector])
ssp_old_cflags="$CFLAGS"
CFLAGS="$CFLAGS -fstack-protector-all"
AC_TRY_LINK(,,, ssp_cc=no)
echo $ssp_cc
CFLAGS="$ssp_old_cflags"
if test "X$ssp_cc" = "Xyes"; then
CFLAGS="$CFLAGS -fstack-protector"
AC_DEFINE([ENABLE_SSP_CC], 1, [Define if SSP C support is enabled.])
fi
])
if test "$GCC" = "yes"; then
# We are using the GNU C compiler. Good!
CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes"
GCC_STACK_PROTECT_CC
fi
case "$host_os" in
hpux*)
# This is HP/UX, we need to define _XOPEN_SOURCE_EXTENDED
# (tested with HP/UX 11.11)
CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
;;
esac
# Add additional CFLAGS, eventually specified on the command line:
test -n "$CFLAGS_ADD" && CFLAGS="$CFLAGS $CFLAGS_ADD"
CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'"
# -- Headers --
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_TIME
# Required header files
AC_CHECK_HEADERS([ \
fcntl.h netdb.h netinet/in.h netinet/in_systm.h stdlib.h string.h \
strings.h sys/socket.h sys/time.h unistd.h \
],,AC_MSG_ERROR([required C header missing!]))
# Optional header files
AC_CHECK_HEADERS_ONCE([ \
arpa/inet.h inttypes.h malloc.h netinet/ip.h stdbool.h stddef.h \
stdint.h varargs.h \
])
# -- Datatypes --
AC_MSG_CHECKING(whether socklen_t exists)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
],[
socklen_t a, b;
a = 2; b = 4; a += b;
],[
AC_DEFINE(HAVE_socklen_t) AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
])
AC_TYPE_PID_T
AC_TYPE_SIGNAL
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_TYPE_UID_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT8_T
AC_CHECK_MEMBER([struct sockaddr_in.sin_len], AC_DEFINE(HAVE_sockaddr_in_len),,
[#include <arpa/inet.h>])
# -- Libraries --
# memmove: A/UX libUTIL
AC_SEARCH_LIBS([memmove], [UTIL], [], [
AC_MSG_ERROR([unable to find the memmove() function])
])
# gethostbyname: Solaris libnsl
AC_SEARCH_LIBS([gethostbyname], [bind nsl network], [], [
AC_MSG_ERROR([unable to find the gethostbyname() function])
])
# bind: SVR4 libsocket
AC_SEARCH_LIBS([bind], [socket network], [], [
AC_MSG_ERROR([unable to find the bind() function])
])
# -- Functions --
AC_FUNC_FORK
AC_FUNC_STRFTIME
# Required functions
AC_CHECK_FUNCS([ \
alarm dup2 endpwent gethostbyaddr gethostbyname gethostname \
gettimeofday inet_ntoa memmove memset setsid socket strcasecmp \
strchr strcspn strerror strncasecmp strrchr strspn strstr \
],,
AC_MSG_ERROR([required function missing!]))
# Optional functions
AC_CHECK_FUNCS_ONCE([ \
gai_strerror getaddrinfo getnameinfo inet_aton sigaction sigprocmask \
snprintf vsnprintf strdup strlcpy strlcat strtok_r waitpid])
# -- Configuration options --
# use syslog?
x_syslog_on=no
AC_ARG_WITH(syslog,
AS_HELP_STRING([--without-syslog],
[disable syslog (autodetected by default)]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_SEARCH_LIBS([syslog], [be], [x_syslog_on=yes], [
AC_MSG_ERROR([Can't enable syslog!])
])
fi
],
[ AC_SEARCH_LIBS([syslog], [be], [x_syslog_on=yes])
]
)
if test "$x_syslog_on" = "yes"; then
AC_DEFINE(SYSLOG, 1)
AC_CHECK_HEADERS(syslog.h,,AC_MSG_ERROR([required C header missing!]))
fi
# use zlib compression?
x_zlib_on=no
AC_ARG_WITH(zlib,
AS_HELP_STRING([--without-zlib],
[disable zlib compression (autodetected by default)]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_LIB(z, deflate)
AC_CHECK_FUNCS(deflate, x_zlib_on=yes,
AC_MSG_ERROR([Can't enable zlib!])
)
fi
],
[ AC_CHECK_LIB(z, deflate)
AC_CHECK_FUNCS(deflate, x_zlib_on=yes)
]
)
if test "$x_zlib_on" = "yes"; then
AC_DEFINE(ZLIB, 1)
AC_CHECK_HEADERS(zlib.h,,AC_MSG_ERROR([required C header missing!]))
fi
# detect which IO API to use:
x_io_backend=none
AC_ARG_WITH(select,
AS_HELP_STRING([--without-select],
[disable select IO support (autodetected by default)]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_FUNCS(select, x_io_select=yes,
AC_MSG_ERROR([Can't enable select IO support!])
)
fi
],
[
AC_CHECK_FUNCS(select, x_io_select=yes)
]
)
AC_ARG_WITH(poll,
AS_HELP_STRING([--without-poll],
[disable poll support (autodetected by default)]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_FUNCS(poll, [
AC_CHECK_HEADERS(poll.h,
x_io_backend=poll\(\),
AC_MSG_ERROR(
[Can't enable poll IO support!])
)
], [
AC_MSG_ERROR([Can't enable poll IO support!])
])
fi
],
[
AC_CHECK_FUNCS(poll, [
AC_CHECK_HEADERS(poll.h, x_io_backend=poll\(\))
])
]
)
AC_ARG_WITH(devpoll,
AS_HELP_STRING([--without-devpoll],
[disable /dev/poll IO support (autodetected by default)]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_HEADERS(sys/devpoll.h,,AC_MSG_ERROR([required C header missing!]))
fi
],
[
AC_CHECK_HEADERS(sys/devpoll.h, x_io_backend=/dev/poll)
]
)
AC_ARG_WITH(epoll,
AS_HELP_STRING([--without-epoll],
[disable epoll IO support (autodetected by default)]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes,
AC_MSG_ERROR([Can't enable epoll IO support!])
)
fi
],
[
AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes)
]
)
AC_ARG_WITH(kqueue,
AS_HELP_STRING([--without-kqueue],
[disable kqueue IO support (autodetected by default)]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\),
AC_MSG_ERROR([Can't enable kqueue IO support!])
)
fi
],
[
AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\))
]
)
if test "$x_io_epoll" = "yes" -a "$x_io_select" = "yes"; then
# when epoll() and select() are available, we'll use both!
x_io_backend="epoll(), select()"
else
if test "$x_io_epoll" = "yes"; then
# we prefere epoll() if it is available
x_io_backend="epoll()"
else
if test "$x_io_select" = "yes" -a "$x_io_backend" = "none"; then
# we'll use select, when available and no "better"
# interface has been detected ...
x_io_backend="select()"
fi
fi
fi
if test "$x_io_backend" = "none"; then
AC_MSG_ERROR([No useable IO API activated/found!?])
fi
# use SSL?
AC_ARG_WITH(openssl,
AS_HELP_STRING([--with-openssl],
[enable SSL support using OpenSSL]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_LIB(crypto, BIO_s_mem)
AC_CHECK_LIB(ssl, SSL_library_init)
AC_CHECK_FUNCS(SSL_library_init, x_ssl_openssl=yes,
AC_MSG_ERROR([Can't enable openssl])
)
fi
]
)
AC_ARG_WITH(gnutls,
AS_HELP_STRING([--with-gnutls],
[enable SSL support using gnutls]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_LIB(gnutls, gnutls_global_init)
AC_CHECK_FUNCS(gnutls_global_init, x_ssl_gnutls=yes,
AC_MSG_ERROR([Can't enable gnutls])
)
fi
]
)
x_ssl_lib="no"
if test "$x_ssl_gnutls" = "yes"; then
if test "$x_ssl_openssl" = "yes";then
AC_MSG_ERROR([Cannot enable both gnutls and openssl])
fi
x_ssl_lib=gnutls
fi
if test "$x_ssl_openssl" = "yes"; then
x_ssl_lib=openssl
fi
# use TCP wrappers?
x_tcpwrap_on=no
AC_ARG_WITH(tcp-wrappers,
AS_HELP_STRING([--with-tcp-wrappers],
[enable TCP wrappers support]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_MSG_CHECKING(for hosts_access)
LIBS="-lwrap $LIBS"
AC_TRY_LINK([
#include <tcpd.h>
int allow_severity = 0;
int deny_severity = 0;
],[
tcpd_warn("link test");
],[
AC_MSG_RESULT(yes)
AC_DEFINE(TCPWRAP, 1)
x_tcpwrap_on=yes
],[
AC_MSG_RESULT(no)
AC_MSG_ERROR([Can't enable TCP wrappers!])
])
fi
]
)
# do IDENT requests using libident?
x_identauth_on=no
AC_ARG_WITH(ident,
AS_HELP_STRING([--with-ident],
[enable "IDENT" ("AUTH") protocol support]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_LIB(ident, ident_id)
AC_CHECK_FUNCS(ident_id, x_identauth_on=yes,
AC_MSG_ERROR([Can't enable IDENT support!])
)
fi
]
)
if test "$x_identauth_on" = "yes"; then
AC_DEFINE(IDENTAUTH, 1)
AC_CHECK_HEADERS(ident.h,,AC_MSG_ERROR([required C header missing!]))
fi
# compile in PAM support?
x_pam_on=no
AC_ARG_WITH(pam,
AS_HELP_STRING([--with-pam],
[enable user authentication using PAM]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_LIB(pam, pam_authenticate)
AC_CHECK_FUNCS(pam_authenticate, x_pam_on=yes,
AC_MSG_ERROR([Can't enable PAM support!])
)
fi
]
)
if test "$x_pam_on" = "yes"; then
AC_DEFINE(PAM, 1)
AC_CHECK_HEADERS(security/pam_appl.h,pam_ok=yes)
if test "$pam_ok" != "yes"; then
AC_CHECK_HEADERS(pam/pam_appl.h,pam_ok=yes,
AC_MSG_ERROR([required C header missing!]))
fi
fi
# compile in IRC+ protocol support?
x_ircplus_on=yes
AC_ARG_ENABLE(ircplus,
AS_HELP_STRING([--disable-ircplus],
[disable IRC+ protocol]),
if test "$enableval" = "no"; then x_ircplus_on=no; fi
)
if test "$x_ircplus_on" = "yes"; then
AC_DEFINE(IRCPLUS, 1)
# Compile in iconv support?
# We only check for it when IRC+ is enabled, because the IRC+ command
# CHARCONV is the only function depending on it.
x_iconv_on=no
AC_ARG_WITH(iconv,
[ --with-iconv enable character conversation using libiconv],
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_LIB(iconv, iconv_open)
AC_CHECK_FUNCS(iconv_open, x_iconv_on=yes,
AC_MSG_ERROR([Can't enable libiconv support!])
)
fi
]
)
if test "$x_iconv_on" = "yes"; then
AC_DEFINE(ICONV, 1)
fi
fi
# enable support for IPv6?
x_ipv6_on=no
AC_ARG_ENABLE(ipv6,
AS_HELP_STRING([--enable-ipv6],
[enable IPv6 protocol support]),
if test "$enableval" = "yes"; then x_ipv6_on=yes; fi
)
if test "$x_ipv6_on" = "yes"; then
# getaddrinfo() and getnameinfo() are optional when not compiling
# with IPv6 support, but are required for IPv6 to work!
AC_CHECK_FUNCS([ \
getaddrinfo getnameinfo \
],,AC_MSG_ERROR([required function missing for IPv6 support!]))
AC_DEFINE(WANT_IPV6, 1)
fi
# compile in IRC "sniffer"?
x_sniffer_on=no; x_debug_on=no
AC_ARG_ENABLE(sniffer,
AS_HELP_STRING([--enable-sniffer],
[enable IRC traffic sniffer (enables debug mode)]),
if test "$enableval" = "yes"; then
AC_DEFINE(SNIFFER, 1)
x_sniffer_on=yes; x_debug_on=yes
fi
)
# enable additional debugging code?
AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug],
[show additional debug output]),
if test "$enableval" = "yes"; then x_debug_on=yes; fi
)
if test "$x_debug_on" = "yes"; then
AC_DEFINE(DEBUG, 1)
test "$GCC" = "yes" && CFLAGS="-pedantic $CFLAGS"
AC_CHECK_FUNCS(mtrace)
fi
# enable "strict RFC rules"?
x_strict_rfc_on=no
AC_ARG_ENABLE(strict-rfc,
AS_HELP_STRING([--enable-strict-rfc],
[strict RFC conformance -- may break clients!]),
if test "$enableval" = "yes"; then
AC_DEFINE(STRICT_RFC, 1)
x_strict_rfc_on=yes
fi
)
# -- Definitions --
AC_DEFINE_UNQUOTED(HOST_CPU, "$host_cpu" )
AC_DEFINE_UNQUOTED(HOST_VENDOR, "$host_vendor" )
AC_DEFINE_UNQUOTED(HOST_OS, "$host_os" )
# Add additional CFLAGS, eventually specified on the command line, but after
# running this configure script. Useful for "-Werror" for example.
test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END"
# -- Generate files --
AC_CONFIG_FILES([ \
Makefile \
contrib/Debian/Makefile \
contrib/MacOSX/Makefile \
contrib/MacOSX/ngIRCd.pmdoc/Makefile \
contrib/MacOSX/ngIRCd.xcodeproj/Makefile \
contrib/Makefile \
doc/Makefile \
doc/src/Makefile \
man/Makefile \
src/ipaddr/Makefile \
src/Makefile \
src/ngircd/Makefile \
src/portab/Makefile \
src/testsuite/Makefile \
src/tool/Makefile \
])
AC_OUTPUT
type dpkg >/dev/null 2>&1
if test $? -eq 0; then
# Generate debian/ link if the dpkg command exists
# (read: if we are running on a debian compatible system)
echo "creating Debian-specific links ..."
test -f debian/rules || ln -s contrib/Debian debian
fi
# -- Result --
echo
echo "ngIRCd $PACKAGE_VERSION has been configured with the following options:"
echo
# Someone please show me a better way :) [borrowed by OpenSSH]
B=`eval echo ${bindir}` ; B=`eval echo ${B}`
S=`eval echo ${sbindir}` ; S=`eval echo ${S}`
C=`eval echo ${sysconfdir}` ; C=`eval echo ${C}`
M=`eval echo ${mandir}` ; M=`eval echo ${M}`
D=`eval echo ${docdir}` ; D=`eval echo ${D}`
echo " Host: ${host}"
echo " Compiler: ${CC}"
test -n "$CFLAGS" && echo " Compiler flags: ${CFLAGS}"
test -n "$CPPFLAGS" && echo " Preprocessor flags: ${CPPFLAGS}"
test -n "$LDFLAGS" && echo " Linker flags: ${LDFLAGS}"
test -n "$LIBS" && echo " Libraries: ${LIBS}"
echo
echo " 'ngircd' binary: $S"
echo " Configuration file: $C"
echo " Manual pages: $M"
echo " Documentation: $D"
echo
echo $ECHO_N " Syslog support: $ECHO_C"
test "$x_syslog_on" = "yes" \
&& echo $ECHO_N "yes $ECHO_C" \
|| echo $ECHO_N "no $ECHO_C"
echo $ECHO_N " Enable debug code: $ECHO_C"
test "$x_debug_on" = "yes" \
&& echo "yes" \
|| echo "no"
echo $ECHO_N " zlib compression: $ECHO_C"
test "$x_zlib_on" = "yes" \
&& echo $ECHO_N "yes $ECHO_C" \
|| echo $ECHO_N "no $ECHO_C"
echo $ECHO_N " IRC sniffer: $ECHO_C"
test "$x_sniffer_on" = "yes" \
&& echo "yes" \
|| echo "no"
echo $ECHO_N " Use TCP Wrappers: $ECHO_C"
test "$x_tcpwrap_on" = "yes" \
&& echo $ECHO_N "yes $ECHO_C" \
|| echo $ECHO_N "no $ECHO_C"
echo $ECHO_N " Strict RFC mode: $ECHO_C"
test "$x_strict_rfc_on" = "yes" \
&& echo "yes" \
|| echo "no"
echo $ECHO_N " IDENT support: $ECHO_C"
test "$x_identauth_on" = "yes" \
&& echo $ECHO_N "yes $ECHO_C" \
|| echo $ECHO_N "no $ECHO_C"
echo $ECHO_N " IRC+ protocol: $ECHO_C"
test "$x_ircplus_on" = "yes" \
&& echo "yes" \
|| echo "no"
echo $ECHO_N " IPv6 protocol: $ECHO_C"
test "$x_ipv6_on" = "yes" \
&& echo $ECHO_N "yes $ECHO_C" \
|| echo $ECHO_N "no $ECHO_C"
echo $ECHO_N " I/O backend: $ECHO_C"
echo "\"$x_io_backend\""
echo $ECHO_N " PAM support: $ECHO_C"
test "$x_pam_on" = "yes" \
&& echo $ECHO_N "yes $ECHO_C" \
|| echo $ECHO_N "no $ECHO_C"
echo $ECHO_N " SSL support: $ECHO_C"
echo "$x_ssl_lib"
echo $ECHO_N " libiconv support: $ECHO_C"
echo "$x_iconv_on"
echo
if ! grep "^AUTOMAKE_OPTIONS = ../portab/ansi2knr" src/ngircd/Makefile.am >/dev/null 2>&1; then
echo "WARNING:"
echo "This GNU automake generated build system does not support \"de-ANSI-fication\","
echo "therefore don't use it to generate \"official\" distribution archives!"
echo "(Most probably you want to use GNU automake 1.11.x for this purpose ...)"
echo
fi
# -eof-

13
contrib/Debian/.gitignore vendored Normal file
View File

@@ -0,0 +1,13 @@
*.log
*.debhelper
*.substvars
files
ngircd/
ngircd-full/
ngircd-full.default
ngircd-full.init
ngircd-full.postinst
ngircd-full-dbg/
ngircd-full-dbg.default
ngircd-full-dbg.init
ngircd-full-dbg.postinst

View File

@@ -0,0 +1,29 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
EXTRA_DIST = rules changelog compat control copyright \
ngircd.init ngircd.default ngircd.pam ngircd.postinst
maintainer-clean-local:
rm -f Makefile Makefile.in
clean-local:
rm -f ngircd.postinst.debhelper ngircd.postrm.debhelper \
ngircd.prerm.debhelper ngircd.substvars
rm -f ngircd-full.postinst.debhelper ngircd-full.postrm.debhelper \
ngircd-full.prerm.debhelper ngircd-full.substvars
rm -f ngircd-full-dbg.postinst.debhelper \
ngircd-full-dbg.postrm.debhelper ngircd-full-dbg.prerm.debhelper \
ngircd-full-dbg.substvars
rm -rf ngircd ngircd-full ngircd-full-dbg
rm -f files
# -eof-

439
contrib/Debian/changelog Normal file
View File

@@ -0,0 +1,439 @@
ngircd (20-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 20.
-- Alexander Barton <alex@barton.de> Mon, 17 Dec 2012 13:04:15 +0100
ngircd (20~rc2-0ab1) unstable; urgency=low
* New "upstream" release candidate 2 for ngIRCd Release 20.
-- Alexander Barton <alex@barton.de> Sun, 02 Dec 2012 18:51:06 +0100
ngircd (20~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 20.
-- Alexander Barton <alex@barton.de> Sun, 11 Nov 2012 16:03:32 +0100
ngircd (19.2-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 19.2.
-- Alexander Barton <alex@barton.de> Tue, 19 Jun 2012 11:03:12 +0200
ngircd (19.2~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRC Release 19.2.
-- Alexander Barton <alex@barton.de> Wed, 13 Jun 2012 10:59:34 +0200
ngircd (19.1-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 19.1.
-- Alexander Barton <alex@barton.de> Mon, 19 Mar 2012 19:18:28 +0100
ngircd (19-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 19.
-- Alexander Barton <alex@barton.de> Wed, 29 Feb 2012 17:34:08 +0100
ngircd (19~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 19.
-- Alexander Barton <alex@barton.de> Sun, 12 Feb 2012 17:47:51 +0100
ngircd (18-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 18.
-- Alexander Barton <alex@barton.de> Sun, 10 Jul 2011 20:03:20 +0200
ngircd (18~rc2-0ab1) unstable; urgency=low
* New "upstream" release candidate 2 for ngIRCd Release 18.
-- Alexander Barton <alex@barton.de> Wed, 29 Jun 2011 10:20:51 +0200
ngircd (18~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 18.
-- Alexander Barton <alex@barton.de> Mon, 27 Jun 2011 22:58:36 +0200
ngircd (17.1-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 17.1.
-- Alexander Barton <alex@barton.de> Sun, 19 Dec 2010 15:56:42 +0100
ngircd (17-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 17.
-- Alexander Barton <alex@barton.de> Sun, 07 Nov 2010 17:23:07 +0100
ngircd (17~rc3-0ab1) unstable; urgency=low
* New "upstream" release candidate 3 for ngIRCd Release 17.
-- Alexander Barton <alex@barton.de> Wed, 27 Oct 2010 22:30:08 +0200
ngircd (17~rc2-0ab2) unstable; urgency=low
* Install /etc/pam.d/ngircd including "auth required pam_permit.so" when
installing -full or -full-dbg variant to keep backwards compatibility.
-- Alexander Barton <alex@barton.de> Tue, 26 Oct 2010 23:34:56 +0200
ngircd (17~rc2-0ab1) unstable; urgency=low
* New "upstream" release candidate 2 for ngIRCd Release 17.
-- Alexander Barton <alex@barton.de> Mon, 25 Oct 2010 18:51:15 +0200
ngircd (17~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 17.
-- Alexander Barton <alex@barton.de> Mon, 11 Oct 2010 16:57:47 +0200
ngircd (16-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 16.
-- Alexander Barton <alex@barton.de> Sun, 02 May 2010 13:32:41 +0200
ngircd (16~rc2-0ab1) unstable; urgency=low
* New "upstream" release candidate 2 for ngIRCd Release 16.
-- Alexander Barton <alex@barton.de> Sun, 25 Apr 2010 13:12:42 +0200
ngircd (16~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 16.
-- Alexander Barton <alex@barton.de> Thu, 25 Mar 2010 15:56:03 +0200
ngircd (15-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 15.
-- Alexander Barton <alex@barton.de> Thu, 7 Nov 2009 12:07:08 +0200
ngircd (15~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 15.
-- Alexander Barton <alex@barton.de> Thu, 15 Oct 2009 10:01:08 +0200
ngircd (14.1-0ab1) unstable; urgency=high
* New "upstream" release ngIRCd 14.1, fixing a security-related bug.
-- Alexander Barton <alex@barton.de> Tue, 5 May 2009 13:13:38 +0200
ngircd (14-0ab3) unstable; urgency=low
* Fixed "Conflicts:" line in debian/control: missing comma.
-- Alexander Barton <alex@barton.de> Mon, 4 May 2009 11:21:55 +0200
ngircd (14-0ab2) unstable; urgency=low
* Add new "ngircd-full-dbg" package including degug code and both
the --debug and --sniffer options, and containing debug symbols.
-- Alexander Barton <alex@barton.de> Wed, 29 Apr 2009 01:13:03 +0200
ngircd (14-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 14.
-- Alexander Barton <alex@barton.de> Mon, 20 Apr 2009 11:09:12 +0200
ngircd (14~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 14.
-- Alexander Barton <alex@barton.de> Sun, 29 Mar 2009 17:09:17 +0200
ngircd (13-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 13.
-- Alexander Barton <alex@barton.de> Thu, 25 Dec 2008 23:09:58 +0100
ngircd (13~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 13.
-- Alexander Barton <alex@barton.de> Fri, 21 Nov 2008 22:04:41 +0100
ngircd (0.12.1-0ab1+dev) unstable; urgency=low
* Update package for testing the new "upstream" features:
- Support for IRC services (see http://www.ircservices.za.net),
- Encrypted connections using GNU TLS (ngircd-full),
- Support for the IPv6 protocol (ngircd-full).
-- Alexander Barton <alex@barton.de> Fri, 03 Oct 2008 16:22:55 +0200
ngircd (0.12.1-0ab1) unstable; urgency=low
* New "upstream" release ngIRCd 0.12.1.
-- Alexander Barton <alex@barton.de> Wed, 9 Jul 2008 11:27:00 +0200
ngircd (0.12.0-0ab1) unstable; urgency=low
* New "upstream" release ngIRCd 0.12.0.
-- Alexander Barton <alex@barton.de> Tue, 13 May 2008 12:30:31 +0200
ngircd (0.12.0-0ab0-pre2) unstable; urgency=low
* Second prerelease of upcoming new "upstrem" release 0.12.0-pre1.
-- Alexander Barton <alex@barton.de> Tue, 29 Apr 2008 23:06:14 +0200
ngircd (0.12.0-0ab0-pre1) unstable; urgency=low
* Prereloease of upcoming new "upstrem" release 0.12.0-pre1.
-- Alexander Barton <alex@barton.de> Sun, 20 Apr 2008 15:43:34 +0200
ngircd (0.11.0-0ab0-pre2) unstable; urgency=low
* Second prerelease of upcoming new "upstream release".
-- Alexander Barton <alex@barton.de> Mon, 7 Jan 2008 15:32:42 +0100
ngircd (0.11.0-0ab0-pre1) unstable; urgency=low
* Prerelease of upcoming new "upstream release".
-- Alexander Barton <alex@barton.de> Wed, 2 Jan 2008 21:33:15 +0100
ngircd (0.10.4-0ab1) unstable; urgency=high
* New "upstream" release: 0.10.4 - fixing a security bug.
-- Alexander Barton <alex@barton.de> Mon, 7 Jan 2008 22:04:44 +0100
ngircd (0.10.0-0ab1) unstable; urgency=low
* New "upstream" release: 0.10.0
-- Alexander Barton <alex@barton.de> Sun, 1 Oct 2006 18:14:21 +0200
ngircd (0.10.0-0ab0-pre2-1) unstable; urgency=low
* Bumped standards version to 3.7.2.1.
* Added "Provides: ircd" to Debian control file.
-- Alexander Barton <alex@barton.de> Sun, 1 Oct 2006 16:25:33 +0200
ngircd (0.10.0-0ab0-pre2) unstable; urgency=low
* Second "upstream" prerelease of upcoming 0.10.0 release.
-- Alexander Barton <alex@barton.de> Sat, 9 Sep 2006 20:57:52 +0200
ngircd (0.10.0-0ab0-pre1) unstable; urgency=low
* Prerelease of upcoming new "upstream release".
-- Alexander Barton <alex@barton.de> Wed, 2 Aug 2006 12:01:07 +0200
ngircd (0.9.2-0ab1) unstable; urgency=low
* New "upstream release" fixing a few bugs in 0.9.1.
-- Alexander Barton <alex@barton.de> Sat, 15 Oct 2005 14:10:34 +0200
ngircd (0.9.1-0ab1) unstable; urgency=medium
* New "upstream release" addressing two problems in ngIRCd 0.9.0.
-- Alexander Barton <alex@barton.de> Wed, 3 Aug 2005 15:10:41 +0200
ngircd (0.9.0-0ab2) unstable; urgency=medium
* Init script: fixed a problem with symbolic links in runlevel directories
that could prevent the init script from working correctly.
-- Alexander Barton <alex@barton.de> Tue, 26 Jul 2005 21:31:18 +0200
ngircd (0.9.0-0ab1) unstable; urgency=low
* New "upstream release".
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 24 Jul 2005 23:30:00 +0200
ngircd (0.8.3-0ab1) unstable; urgency=high
* New "upstream release", including security fixes.
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 3 Feb 2005 10:41:55 +0100
ngircd (0.8.2-0ab1) unstable; urgency=high
* New "upstream release", including security fixes.
-- Alexander Barton <alex@Arthur.Ath.CX> Wed, 26 Jan 2005 23:14:12 +0100
ngircd (0.8.1-0ab1) unstable; urgency=low
* New "upstream release".
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 25 Dec 2004 01:18:32 +0100
ngircd (0.8.0-0ab2) unstable; urgency=low
* Added missing commas to debian control file, fixes bug #56.
Thanks to Kevin Otte.
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 15 Jul 2004 10:53:39 +0200
ngircd (0.8.0-0ab1) unstable; urgency=low
* New upstream version.
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 26 Jun 2004 11:25:59 +0200
ngircd (0.7.7+HEAD-0ab6) unstable; urgency=low
* Incorporated actual CVS HEAD version which includes all features of
version 0.8.0-pre1 and patches for the resolver and logger.
-- Alexander Barton <alex@Arthur.Ath.CX> Tue, 11 May 2004 02:18:50 +0200
ngircd (0.7.7+HEAD-0ab5) unstable; urgency=low
* Updates from CVS HEAD branch, most notably: "INVITE- and BAN-lists
become synchronized between IRC+ servers when establishing new
connections, if the peer supports this as well."
-- Alexander Barton <alex@Arthur.Ath.CX> Mon, 26 Apr 2004 01:53:15 +0200
ngircd (0.7.7+HEAD-0ab4) unstable; urgency=low
* This version includes fixes for INVITE command and the handling of the
invite and ban lists from CVS-HEAD.
-- Alexander Barton <alex@Arthur.Ath.CX> Fri, 9 Apr 2004 23:55:13 +0200
ngircd (0.7.7+HEAD-0ab3) unstable; urgency=low
* Included MODE fix from CVS-HEAD branch.
-- Alexander Barton <alex@Arthur.Ath.CX> Mon, 5 Apr 2004 13:09:24 +0200
ngircd (0.7.7+HEAD-0ab2) unstable; urgency=low
* Incorporated more fixes and enhancements of CVS-HEAD version,
e. g. better connection logging and fixed TRACE command.
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 28 Feb 2004 03:20:32 +0100
ngircd (0.7.7+HEAD-0ab1) unstable; urgency=low
* New upstream version. This debian package includes all features of
ngIRCd 0.7.7 and changes of the CVS-HEAD development tree.
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 5 Feb 2004 15:23:22 +0100
ngircd (0.7.6+HEAD-0ab2) unstable; urgency=low
* Included new fixes and additions from the CVS-HEAD upstream branch,
e. g. the setting of type of service (TOS) on sockets.
-- Alexander Barton <alex@Arthur.Ath.CX> Mon, 26 Jan 2004 04:05:41 +0100
ngircd (0.7.6+HEAD-0ab1) unstable; urgency=low
* Included all changes from the CVS-HEAD upstream version.
* Restructured debian packaging system: now there are two packages, a
"standard" version that includes all the default options and a "full"
version that additionally includes support for TCP wrappers and IDENT
lookups.
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 1 Jan 2004 23:12:11 +0100
ngircd (0.7.6-0ab1) unstable; urgency=medium
* New upstream version.
* Changed version numvering scheme of debian package.
-- Alexander Barton <alex@Arthur.Ath.CX> Fri, 5 Dec 2003 14:26:41 +0100
ngircd (0.7.5-0.2ab) unstable; urgency=low
* Updated RPM and Debian package description and configuration.
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 29 Nov 2003 21:24:32 +0100
ngircd (0.7.5-0.1ab) unstable; urgency=low
* New upstream version.
-- Alexander Barton <alex@Arthur.Ath.CX> Fri, 7 Nov 2003 21:59:58 +0100
ngircd (0.7.1-0.1ab) unstable; urgency=low
* New upstream version :-)
-- Alexander Barton <alex@Arthur.Ath.CX> Fri, 18 Jul 2003 22:53:02 +0200
ngircd (0.7.0-0.7ab) unstable; urgency=low
* Fixed up post installation script (added interpreter, fixed chmod call).
-- Alexander Barton <alex@Arthur.Ath.CX> Sun, 13 Jul 2003 00:52:38 +0200
ngircd (0.7.0-0.6ab) unstable; urgency=low
* Added /etc/default/ngircd.
* Included own post installation script.
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 12 Jul 2003 20:31:09 +0200
ngircd (0.7.0-0.5ab) unstable; urgency=low
* Enhanced init script.
* Included NJOIN fix from actual CVS "HEAD" branch.
-- Alexander Barton <alex@Arthur.Ath.CX> Wed, 9 Jul 2003 22:40:49 +0200
ngircd (0.7.0-0.4ab) unstable; urgency=low
* Reverted use of dh_installexamples.
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 22 May 2003 00:15:03 +0200
ngircd (0.7.0-0.3ab) unstable; urgency=low
* Removed "debian/docs" and "debian/conffiles"; debhelper takes care of
this for us automagically.
* Excluded "etc/ngircd.conf" from dh_fixperms.
-- Alexander Barton <alex@Arthur.Ath.CX> Wed, 21 May 2003 23:25:05 +0200
ngircd (0.7.0-0.2ab) unstable; urgency=low
* Fixed wrong variable substitution in init script.
* Added some CVS "Id-Tags" (but not checked in, yet).
* Removed own "Provides:" from control file.
-- Alexander Barton <alex@barton.de> Wed, 21 May 2003 12:32:34 +0200
ngircd (0.7.0-0.1ab) unstable; urgency=low
* Initial Release.
-- Alexander Barton <alex@barton.de> Wed, 21 May 2003 02:36:52 +0200

1
contrib/Debian/compat Normal file
View File

@@ -0,0 +1 @@
4

65
contrib/Debian/control Normal file
View File

@@ -0,0 +1,65 @@
Source: ngircd
Section: net
Priority: optional
Maintainer: Alexander Barton <alex@barton.de>
Build-Depends: debhelper (>> 4.0.0),
autotools-dev,
expect,
libz-dev,
libwrap0-dev,
libident-dev,
libgnutls-dev,
libpam0g-dev,
telnet | telnet-ssl,
Standards-Version: 3.9.1
Package: ngircd
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Provides: ircd
Description: lightweight Internet Relay Chat server
This package provides ngIRCd, a portable and lightweight Internet Relay
Chat server for small or private networks, developed under the GNU
General Public License (GPL). It is simple to configure, can cope with
dynamic IP addresses, and supports IPv6 as well as SSL. It is written
from scratch and not based on the original IRCd.
.
This package contains the "standard distribution", including support for
syslog logging and compressed server-links using zlib. Please have a look
at the "ngircd-full" package if you need advanced functionality like support
for IPv6 or SSL.
Package: ngircd-full
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Provides: ircd
Conflicts: ngircd, ngircd-dbg
Description: lightweight Internet Relay Chat server
This package provides ngIRCd, a portable and lightweight Internet Relay
Chat server for small or private networks, developed under the GNU
General Public License (GPL). It is simple to configure, can cope with
dynamic IP addresses, and supports IPv6 as well as SSL. It is written
from scratch and not based on the original IRCd.
.
In addition to the features of the "standard package", this package
includes support for TCP wrappers, IDENT requests, the IPv6 protocol and
SSL encrypted client and server links.
Package: ngircd-full-dbg
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Provides: ircd
Conflicts: ngircd, ngircd-full
Description: lightweight Internet Relay Chat server
This package provides ngIRCd, a portable and lightweight Internet Relay
Chat server for small or private networks, developed under the GNU
General Public License (GPL). It is simple to configure, can cope with
dynamic IP addresses, and supports IPv6 as well as SSL. It is written
from scratch and not based on the original IRCd.
.
In addition to the features of the "standard package", this package
includes support for TCP wrappers, IDENT requests, the IPv6 protocol and
SSL encrypted client and server links.
.
And in addition to the "full" variant, the binaries contained in this
package are build with debug code and contain debug symbols.

13
contrib/Debian/copyright Normal file
View File

@@ -0,0 +1,13 @@
This package was debianized by Alexander Barton <alex@barton.de> on
Tue, 20 May 2003 15:47:40 +0200.
It was downloaded from ftp://Arthur.Ath.CX/pub/Users/alex/ngircd/
Upstream Author: Alexander Barton <alex@barton.de>
This software is copyright (c) 1999-2003 by Alexander Barton.
You are free to distribute this software under the terms of the
GNU General Public License.
On Debian systems, the complete text of the GNU General Public
License can be found in /usr/share/common-licenses/GPL file.

View File

@@ -0,0 +1,12 @@
#
# Defaults for ngIRCd start and stop script
#
# $Id: ngircd.default,v 1.1 2003/12/31 17:20:11 alex Exp $
#
# Parameters to pass to the ngircd daemon on startup, see ngircd(8) for
# possible options (default: empty).
PARAMS=""
# -eof-

175
contrib/Debian/ngircd.init Executable file
View File

@@ -0,0 +1,175 @@
#!/bin/sh
#
# ngIRCd start and stop script for Debian-based systems
# Copyright 2008-2010 Alexander Barton <alex@barton.de>
#
### BEGIN INIT INFO
# Provides: ngircd
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Should-Start: $syslog $named
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Next Generation IRC Server
# Description: IRC daemon written from scratch
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/ngircd
NAME=ngIRCd
DESC="IRC daemon"
PARAMS=""
STARTTIME=1
DIETIME=10
test -x $DAEMON || exit 5
test -h "$0" && me=`readlink $0` || me="$0"
BASENAME=`basename $me`
test -r /etc/default/$BASENAME && . /etc/default/$BASENAME
# LSB compatibility functions that become used if there is no local
# include file available.
log_daemon_msg() {
echo -n "$*"
}
log_end_msg() {
[ "$1" == "0" ] && echo "." || echo " failed!"
}
log_failure_msg() {
echo "$*"
}
log_warning_msg() {
log_failure_msg "$*"
}
# Include LSB functions, if available:
test -r /lib/lsb/init-functions && . /lib/lsb/init-functions
PIDFILE=`$DAEMON $PARAMS -t | tr -d ' ' | grep "^PidFile=" | cut -d'=' -f2`
[ -n "$PIDFILE" ] || PIDFILE="/var/run/ircd/ngircd.pid"
r=3
Check_Config()
{
# Make sure that the configuration of ngIRCd is valid:
$DAEMON $PARAMS --configtest >/dev/null 2>&1
[ $? -eq 0 ] && return 0
log_end_msg 1
log_failure_msg "Configuration of $NAME is not valid, won't (re)start!"
log_failure_msg "Run \"$DAEMON --configtest\" and fix it up ..."
exit 6
}
Prepare() {
# Make sure the PID file directory exists and is writable:
user=`$DAEMON $PARAMS -t|tr -d ' '|grep "^ServerUID="|cut -d'=' -f2`
group=`$DAEMON $PARAMS -t|tr -d ' '|grep "^ServerGID="|cut -d'=' -f2`
piddir=`dirname "$PIDFILE"`
[ -d "$piddir" ] || mkdir -p "$piddir" 2>/dev/null
chown "$user:$group" "$piddir" 2>/dev/null
[ $? -eq 0 ] && return 0
log_end_msg 1
log_failure_msg "Failed to prepare '$piddir' for user '$user'!"
exit 1
}
Do_Start() {
if Do_Status; then
log_end_msg 0
log_warning_msg "$NAME seems to be already running, nothing to do."
exit 0
fi
start-stop-daemon --start \
--quiet --exec $DAEMON -- $PARAMS
sleep $STARTTIME
Do_Status || return 7
return 0
}
Do_Stop() {
if ! Do_Status; then
log_end_msg 0
log_warning_msg "$NAME seems not to be running, nothing to do."
exit 0
fi
Do_ForceStop
return $?
}
Do_ForceStop() {
[ -e $PIDFILE ] \
&& pidfile="--pidfile $PIDFILE" \
|| pidfile=""
start-stop-daemon --stop \
--quiet --oknodo --exec $DAEMON $pidfile
for i in `seq 1 $DIETIME`; do
Do_Status || return 0
sleep 1
done
return 1
}
Do_Reload() {
start-stop-daemon --stop --signal 1 --quiet --exec $DAEMON
return $?
}
Do_Status() {
[ -e $PIDFILE ] \
&& pidfile="--pidfile $PIDFILE" \
|| pidfile=""
start-stop-daemon --stop \
--quiet --signal 0 --exec $DAEMON $pidfile >/dev/null
return $?
}
case "$1" in
start)
log_daemon_msg "Starting $DESC" "$NAME"
Check_Config
Prepare
Do_Start; r=$?
log_end_msg $r
;;
stop)
log_daemon_msg "Stopping $DESC" "$NAME"
Do_Stop; r=$?
log_end_msg $r
;;
reload|force-reload)
log_daemon_msg "Reloading $DESC" "$NAME"
Check_Config
Do_Reload; r=$?
log_end_msg $r
;;
restart)
log_daemon_msg "Restarting $DESC" "$NAME"
Check_Config
Prepare
Do_ForceStop
Do_Start; r=$?
log_end_msg $r
;;
status)
log_daemon_msg "Checking for $DESC" "$NAME"
Do_Status; r=$?
log_end_msg $r
;;
test)
Check_Config
echo "Configuration of $DAEMON seems to be ok."; r=0
;;
*)
N=/etc/init.d/$NAME; r=2
echo "Usage: $N {start|stop|restart|reload|force-reload|status|test}" >&2
;;
esac
exit $r
# -eof-

View File

@@ -0,0 +1,4 @@
# /etc/pam.d/ngircd
# allow all connections to ngIRCd
auth required pam_permit.so

21
contrib/Debian/ngircd.postinst Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/sh
#
# Debian post-installation script
# $Id: ngircd.postinst,v 1.2 2006/12/26 14:44:40 alex Exp $
#
set -e
case "$1" in
configure)
if [ -f /etc/ngircd/ngircd.conf ]; then
# make sure that the configuration file is not
# world-readable, it contains passwords!
chmod o= /etc/ngircd/ngircd.conf
fi
;;
esac
#DEBHELPER#
# -eof-

231
contrib/Debian/rules Executable file
View File

@@ -0,0 +1,231 @@
#!/usr/bin/make -f
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2012 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
# debian/rules for ngIRCd
#
# Based on the sample debian/rules that uses debhelper,
# GNU copyright 1997 to 1999 by Joey Hess.
#
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
CFLAGS = -Wall -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
INSTALL_PROGRAM += -s
endif
configure-ngircd: configure
dh_testdir
# configure "standard" variant:
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--sysconfdir=/etc/ngircd \
--mandir=\$${prefix}/share/man \
--with-syslog --with-zlib
configure-ngircd-full: configure
dh_testdir
# configure "full" variant:
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--sysconfdir=/etc/ngircd \
--mandir=\$${prefix}/share/man \
--with-syslog --with-zlib \
--with-gnutls --with-iconv --with-ident --with-tcp-wrappers \
--with-pam \
--enable-ipv6
configure-ngircd-full-dbg: configure
dh_testdir
# configure "full debug" variant:
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--sysconfdir=/etc/ngircd \
--mandir=\$${prefix}/share/man \
--enable-debug --enable-sniffer \
--with-syslog --with-zlib \
--with-gnutls --with-iconv --with-ident --with-tcp-wrappers \
--with-pam \
--enable-ipv6
build:
dh_clean -k
build-ngircd: build-stamp-ngircd
build-stamp-ngircd: configure-ngircd
dh_testdir
rm -f build-stamp-*
# Add here commands to compile the "standard" package:
$(MAKE)
touch build-stamp-ngircd
build-ngircd-full: build-stamp-ngircd-full
build-stamp-ngircd-full: configure-ngircd-full
dh_testdir
rm -f build-stamp-*
# Add here commands to compile the "full" package:
$(MAKE)
touch build-stamp-ngircd-full
build-ngircd-full-dbg: build-stamp-ngircd-full-dbg
build-stamp-ngircd-full-dbg: configure-ngircd-full-dbg
dh_testdir
rm -f build-stamp-*
# Add here commands to compile the "full debug" package:
$(MAKE)
touch build-stamp-ngircd-full
clean:
dh_testdir
dh_testroot
rm -f build-stamp*
rm -f $(CURDIR)/debian/ngircd-full.default
rm -f $(CURDIR)/debian/ngircd-full.init
rm -f $(CURDIR)/debian/ngircd-full.postinst
rm -f $(CURDIR)/debian/ngircd-full-dbg.default
rm -f $(CURDIR)/debian/ngircd-full-dbg.postinst
rm -f $(CURDIR)/debian/ngircd-full-dbg.init
# Add here commands to clean up after the build process:
[ ! -f Makefile ] || $(MAKE) distclean
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
cp -f /usr/share/misc/config.sub config.sub
endif
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
cp -f /usr/share/misc/config.guess config.guess
endif
dh_clean
install: install-ngircd install-ngircd-full install-ngircd-full-dbg
install-ngircd: build-ngircd
dh_testdir
dh_testroot
dh_installdirs
# Add here commands to install the "standard" package into debian/ngircd:
$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd
rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/INSTALL*
rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING*
mkdir -p $(CURDIR)/debian/ngircd/var/run/ircd
cat $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/sample-ngircd.conf | \
sed -e "s/;ServerUID = 65534/ServerUID = irc/g" | \
sed -e "s/;ServerGID = 65534/ServerGID = irc/g" | \
sed -e "s/;MotdFile = \/usr\/local\/etc\/ngircd.motd/MotdFile = \/etc\/ngircd\/ngircd.motd/g" | \
sed -e "s/;PidFile = \/var\/run\/ngircd\/ngircd.pid/PidFile = \/var\/run\/ircd\/ngircd.pid/g" \
>$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf
touch $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.motd
install-ngircd-full: build-ngircd-full
dh_testdir
dh_testroot
dh_installdirs
# Add here commands to install the "full" package into debian/ngircd-full:
$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd-full
rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd/INSTALL*
rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd/COPYING*
mv $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd \
$(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full
mkdir -p $(CURDIR)/debian/ngircd-full/var/run/ircd
cat $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full/sample-ngircd.conf | \
sed -e "s/;ServerUID = 65534/ServerUID = irc/g" | \
sed -e "s/;ServerGID = 65534/ServerGID = irc/g" | \
sed -e "s/;MotdFile = \/usr\/local\/etc\/ngircd.motd/MotdFile = \/etc\/ngircd\/ngircd.motd/g" | \
sed -e "s/;PidFile = \/var\/run\/ngircd\/ngircd.pid/PidFile = \/var\/run\/ircd\/ngircd.pid/g" \
>$(CURDIR)/debian/ngircd-full/etc/ngircd/ngircd.conf
touch $(CURDIR)/debian/ngircd-full/etc/ngircd/ngircd.motd
mkdir -p $(CURDIR)/debian/ngircd-full/etc/pam.d
cp $(CURDIR)/debian/ngircd.pam $(CURDIR)/debian/ngircd-full/etc/pam.d/ngircd
install-ngircd-full-dbg: build-ngircd-full-dbg
dh_testdir
dh_testroot
dh_installdirs
# Add here commands to install the "full" package into debian/ngircd-full:
$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd-full-dbg
rm $(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd/INSTALL*
rm $(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd/COPYING*
mv $(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd \
$(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd-full-dbg
mkdir -p $(CURDIR)/debian/ngircd-full-dbg/var/run/ircd
cat $(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd-full-dbg/sample-ngircd.conf | \
sed -e "s/;ServerUID = 65534/ServerUID = irc/g" | \
sed -e "s/;ServerGID = 65534/ServerGID = irc/g" | \
sed -e "s/;MotdFile = \/usr\/local\/etc\/ngircd.motd/MotdFile = \/etc\/ngircd\/ngircd.motd/g" | \
sed -e "s/;PidFile = \/var\/run\/ngircd\/ngircd.pid/PidFile = \/var\/run\/ircd\/ngircd.pid/g" \
>$(CURDIR)/debian/ngircd-full-dbg/etc/ngircd/ngircd.conf
touch $(CURDIR)/debian/ngircd-full-dbg/etc/ngircd/ngircd.motd
mkdir -p $(CURDIR)/debian/ngircd-full-dbg/etc/pam.d
cp $(CURDIR)/debian/ngircd.pam $(CURDIR)/debian/ngircd-full-dbg/etc/pam.d/ngircd
# Build architecture-independent files here.
binary-indep:
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
ln -s $(CURDIR)/debian/ngircd.default \
$(CURDIR)/debian/ngircd-full.default
ln -s $(CURDIR)/debian/ngircd.init \
$(CURDIR)/debian/ngircd-full.init
ln -s $(CURDIR)/debian/ngircd.postinst \
$(CURDIR)/debian/ngircd-full.postinst
ln -s $(CURDIR)/debian/ngircd.default \
$(CURDIR)/debian/ngircd-full-dbg.default
ln -s $(CURDIR)/debian/ngircd.init \
$(CURDIR)/debian/ngircd-full-dbg.init
ln -s $(CURDIR)/debian/ngircd.postinst \
$(CURDIR)/debian/ngircd-full-dbg.postinst
dh_testdir
dh_testroot
dh_installchangelogs -a -A ChangeLog
dh_installdocs -a
dh_installinit -a
dh_strip -a --no-package=ngircd-full-dbg
dh_compress -a
dh_fixperms -a
dh_installdeb -a
dh_shlibdeps -a
dh_gencontrol -a
dh_md5sums -a
dh_builddeb -a
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install
# -eof-

2
contrib/MacOSX/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
build
de.barton.ngircd.plist

View File

@@ -0,0 +1,52 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
SUBDIRS = ngIRCd.xcodeproj ngIRCd.pmdoc
EXTRA_DIST = de.barton.ngircd.plist.tmpl config.h preinstall.sh postinstall.sh
SUFFIXES = .tmpl .
.tmpl:
sed \
-e s@:SBINDIR:@${sbindir}@ \
<$< >$@
install-data-local:
[ `uname -s` != "Darwin" ] || make install-sys-darwin
install-sys-darwin:
@if [ `id -u` -eq 0 ]; then \
make install-sys-darwin-root; \
else \
echo; \
echo " ** NOTE: Not installing with root privileges, so the LaunchDaemon script"; \
echo " ** \"/Library/LaunchDaemons/de.barton.ngircd.plist\" can't be installed/updated!"; \
echo; \
fi
install-sys-darwin-root: de.barton.ngircd.plist
install -d -m 755 -o root -g wheel $(DESTDIR)/Library/LaunchDaemons
install -c -m 644 -b -o root -g wheel de.barton.ngircd.plist \
$(DESTDIR)/Library/LaunchDaemons/de.barton.ngircd.plist
@echo
@echo " ** \"/Library/LaunchDaemons/de.barton.ngircd.plist\" has been installed,"
@echo " ** but is disabled. Use launchctl(8) to enable/run ngIRCd on Darwin/Mac OS X."
@echo
clean-local:
rm -rf build
rm -f de.barton.ngircd.plist
maintainer-clean-local:
rm -f Makefile Makefile.in
# -eof-

127
contrib/MacOSX/config.h Normal file
View File

@@ -0,0 +1,127 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2012 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
*
* Static configuration file for Mac OS X Xcode project
*/
#define PACKAGE_NAME "ngIRCd"
#define PACKAGE "ngircd"
#ifndef VERSION
#define VERSION "??("__DATE__")"
#endif
#define SYSCONFDIR "/etc/ngircd"
#ifndef TARGET_VENDOR
#define TARGET_VENDOR "apple"
#define TARGET_OS "darwin"
#endif
/* -- Build options -- */
/* Define if debug-mode should be enabled */
#define DEBUG 1
/* Define if the server should do IDENT requests */
/*#define IDENTAUTH 1*/
/* Define if IRC+ protocol should be used */
#define IRCPLUS 1
/* Define if IRC sniffer should be enabled */
/*#define SNIFFER 1*/
/* Define if syslog should be used for logging */
#define SYSLOG 1
/* Define if TCP wrappers should be used */
/*#define TCPWRAP 1*/
/* Define if zlib compression should be enabled */
#define ZLIB 1
/* Define if IPV6 protocol should be enabled */
#define WANT_IPV6 1
/* Define if PAM should be used */
#define PAM 1
/* Define if libiconv can be used, e.g. for CHARCONV */
#define ICONV 1
/* -- Supported features -- */
/* Define if SSP C support is enabled. */
#define ENABLE_SSP_CC 1
/* Define to 1 if the C compiler supports function prototypes. */
#define PROTOTYPES 1
/* Define like PROTOTYPES; this can be used by system headers. */
#define __PROTOTYPES 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* Define to 1 if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1
/* Define to 1 if you have the <stdbool.h> header file. */
#define HAVE_STDBOOL_H 1
/* Define to 1 if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H 1
/* Define to 1 if you have the <netinet/ip.h> header file. */
#define HAVE_NETINET_IP_H 1
/* Define to 1 if you have the `gai_strerror' function. */
#define HAVE_GAI_STRERROR 1
/* Define to 1 if you have the `iconv_open' function. */
#define HAVE_ICONV_OPEN 1
/* Define to 1 if you have the `kqueue' function. */
#define HAVE_KQUEUE 1
/* Define to 1 if you have the `inet_ntoa' function. */
#define HAVE_INET_NTOA 1
/* Define to 1 if you have the `snprintf' function. */
#define HAVE_SNPRINTF 1
/* Define to 1 if you have the `strlcat' function. */
#define HAVE_STRLCAT 1
/* Define to 1 if you have the `strlcpy' function. */
#define HAVE_STRLCPY 1
/* Define to 1 if you have the `strdup' function. */
#define HAVE_STRDUP 1
/* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1
/* Define to 1 if you have the `inet_aton' function. */
#define HAVE_INET_ATON 1
/* Define to 1 if you have the `getaddrinfo' function. */
#define HAVE_GETADDRINFO 1
/* Define to 1 if you have the `getnameinfo' function. */
#define HAVE_GETNAMEINFO 1
/* Define to 1 if you have the `sigaction' function. */
#define HAVE_SIGACTION 1
/* Define to 1 if you have the `setsid' function. */
#define HAVE_SETSID 1
/* Define if socklen_t exists */
#define HAVE_socklen_t 1
#ifdef PAM
/* Define to 1 if you have the `pam_authenticate' function. */
#define HAVE_PAM_AUTHENTICATE 1
#if (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1060)
/* Define to 1 if you have the <pam/pam_appl.h> header file. */
#define HAVE_PAM_PAM_APPL_H 1
/* Mac OS X <10.6 doesn't have pam_fail_delay() */
#define NO_PAM_FAIL_DELAY 1
#else
/* Define to 1 if you have the <security/pam_appl.h> header file. */
#define HAVE_SECURITY_PAM_APPL_H 1
#endif
#endif
/* -eof- */

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>de.barton.ngIRCd</string>
<key>ProgramArguments</key>
<array>
<string>:SBINDIR:/ngircd</string>
<string>--nodaemon</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/Library/Logs/ngIRCd.log</string>
<key>StandardOutPath</key>
<string>/Library/Logs/ngIRCd.log</string>
</dict>
</plist>

View File

@@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="ngircd.dest" o="root" g="admin" p="16877" pt="/Users/alex/Develop/ngircd/alex.git/ngircd.dest" m="false" t="file"><f n="opt" o="root" g="admin" p="16877"><f n="ngircd" o="root" g="admin" p="16877"><f n="etc" o="root" g="admin" p="16877"><f n="ngircd.motd" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><f n="sbin" o="root" g="admin" p="16877"><f n="ngircd" o="root" g="admin" p="33261"><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><f n="share" o="root" g="admin" p="16877"><f n="doc" o="root" g="admin" p="16877"><f n="ngircd" o="root" g="admin" p="16877"><f n="AUTHORS" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="Bopm.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="ChangeLog" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="COPYING" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="FAQ.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="GIT.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="HowToRelease.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="INSTALL" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="NEWS" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="PAM.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="Platforms.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="Protocol.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="README" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="README-AUX.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="README-BeOS.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="README-Interix.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="RFC.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="sample-ngircd.conf" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="Services.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="SSL.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><f n="man" o="root" g="admin" p="16877"><f n="man5" o="root" g="admin" p="16877"><f n="ngircd.conf.5" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><f n="man8" o="root" g="admin" p="16877"><f n="ngircd.8" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f></pkg-contents>

View File

@@ -0,0 +1 @@
<pkgref spec="1.12" uuid="46208410-4A1B-48C6-97BD-DE284F13F864"><config><identifier>de.barton.ngircd.daemon.pkg</identifier><version>17.1</version><description></description><post-install type="none"/><requireAuthorization/><installFrom>/Users/alex/Develop/ngircd/alex.git/ngircd.dest</installFrom><installTo mod="true">/</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>extraFiles</mod><mod>installTo</mod><mod>installTo.isAbsoluteType</mod><mod>scripts.preinstall.path</mod><mod>identifier</mod><mod>parent</mod><mod>version</mod><mod>installTo.path</mod><mod>scripts.preupgrade.path</mod><mod>requireAuthorization</mod></config><contents><file-list>02ngircd-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra-files/></pkgref>

View File

@@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="de.barton.ngircd.plist" o="root" g="wheel" p="33188" pt="/Users/alex/Develop/ngircd/alex.git/contrib/MacOSX/de.barton.ngircd.plist" m="false" t="file"><mod>group</mod><mod>owner</mod></f></pkg-contents>

View File

@@ -0,0 +1 @@
<pkgref spec="1.12" uuid="F0954DA7-0607-4277-AE10-D882AC7C38CA"><config><identifier>de.barton.ngircd.launchscript.pkg</identifier><version>17.1</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true">de.barton.ngircd.plist</installFrom><installTo mod="true">/Library/LaunchDaemons</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>scripts.preinstall.path</mod><mod>installTo</mod><mod>scripts.postinstall.path</mod><mod>scripts.postinstall.isRelativeType</mod><mod>installFrom.isRelativeType</mod><mod>installTo.isAbsoluteType</mod><mod>version</mod><mod>parent</mod><mod>scripts.preupgrade.path</mod><mod>identifier</mod><mod>scripts.postupgrade.path</mod><mod>requireAuthorization</mod><mod>extraFiles</mod><mod>scripts.postupgrade.isRelativeType</mod><mod>installTo.path</mod></config><scripts><preinstall relative="true" mod="true">preinstall.sh</preinstall><postinstall relative="true" mod="true">postinstall.sh</postinstall><preupgrade relative="true" mod="true">preinstall.sh</preupgrade><postupgrade relative="true" mod="true">postinstall.sh</postupgrade></scripts><contents><file-list>01de-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra-files/></pkgref>

View File

@@ -0,0 +1,18 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
EXTRA_DIST = index.xml \
01ngircd-contents.xml 01ngircd.xml 02de-contents.xml 02de.xml
maintainer-clean-local:
rm -f Makefile Makefile.in
# -eof-

View File

@@ -0,0 +1,238 @@
<pkmkdoc spec="1.12"><properties><title>ngIRCd</title><build>/Users/alex/Desktop/ngIRCd.mpkg</build><organization>de.barton.ngircd</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>ngIRCd next generation Internet Relay Chat (IRC) server
daemon</description><contents><choice title="ngIRCd daemon" id="choicengircd" tooltip="ngIRCd daemon, documentation and manual pages" description="Binaries, documentation and manual pages of the ngIRCd, the next generation IRC (Internet Relay Chat) daemon. This package will be installed into /opt/ngircd." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="de.barton.ngircd.daemon.pkg"/></choice><choice title="Start and stop script" id="choicelaunchscript" tooltip="LaunchDaemon start and stop script" description="Installs the ngIRCd start and stop script for the &quot;launch daemon&quot;. If this is an update/upgrade, and ngIRCd is already running, it will be automatically restarted." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="de.barton.ngircd.launchscript.pkg"/></choice></contents><resources bg-scale="none" bg-align="bottomleft"><locale lang="en"><resource type="background">/Users/alex/Develop/ngircd/alex.git/contrib/ngIRCd-Logo.gif</resource><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\f0\i\fs24 \cf0 ngIRCd -- The Next Generation IRC Daemon\
Copyright (c)2001-2011 Alexander Barton and Contributors.\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\i0 \cf0 \
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 the Free Software Foundation; either version 2 of the License, or (at your option) any later version. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \
\
Please see below and read the file COPYING, README and AUTHORS for more information.\
\
\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\b \cf0 GNU GENERAL PUBLIC LICENSE\
Version 2, June 1991\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\b0 \cf0 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\cf0 Copyright (C) 1989, 1991 Free Software Foundation, Inc.\
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
Everyone is permitted to copy and distribute verbatim copies\
of this license document, but changing it is not allowed.\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\cf0 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\b \cf0 Preamble\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\b0 \cf0 \
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.\
\
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\
\
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.\
\
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\
\
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.\
\
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.\
\
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.\
\
The precise terms and conditions for copying, distribution and modification follow.\
\page \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\b \cf0 GNU GENERAL PUBLIC LICENSE\
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION\
AND MODIFICATION\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\b0 \cf0 \
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law:\
that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".\
\
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the\
Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.\
\
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.\
\
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\
\
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1above, provided that you also meet all of these conditions:\
\
a) You must cause the modified files to carry prominent notices\
stating that you changed the files and the date of any change.\
\
b) You must cause any work that you distribute or publish, that in\
whole or in part contains or is derived from the Program or any\
part thereof, to be licensed as a whole at no charge to all third\
parties under the terms of this License.\
\
c) If the modified program normally reads commands interactively\
when run, you must cause it, when started running for such\
interactive use in the most ordinary way, to print or display an\
announcement including an appropriate copyright notice and a\
notice that there is no warranty (or else, saying that you provide\
a warranty) and that users may redistribute the program under\
these conditions, and telling the user how to view a copy of this\
License. (Exception: if the Program itself is interactive but\
does not normally print such an announcement, your work based on\
the Program is not required to print an announcement.)\
\page \
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\
\
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.\
\
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\
\
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:\
\
a) Accompany it with the complete corresponding machine-readable\
source code, which must be distributed under the terms of Sections\
1 and 2 above on a medium customarily used for software\
interchange; or,\
\
b) Accompany it with a written offer, valid for at least three\
years, to give any third party, for a charge no more than your\
cost of physically performing source distribution, a complete\
machine-readable copy of the corresponding source code, to be\
distributed under the terms of Sections 1 and 2 above on a medium\
customarily used for software interchange; or,\
\
c) Accompany it with the information you received as to the offer\
to distribute corresponding source code. (This alternative is\
allowed only for noncommercial distribution and only if you\
received the program in object code or executable form with such\
an offer, in accord with Subsection b above.)\
\
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\
\
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not\
compelled to copy the source along with the object code.\
\
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\
\
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.\
\
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\
\
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.\
\
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.\
\
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\
\
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\
\page \
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\
\
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\
\
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.\
\
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\b \cf0 NO WARRANTY
\b0 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\cf0 \
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
\
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.}]]></resource><resource mime-type="text/rtf" kind="embedded" type="readme"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fmodern\fcharset0 Courier;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0\fs26 \cf0 Please note:\
\
\pard\tx260\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li260\fi-260\ql\qnatural\pardirnatural
\cf0 \'95 You
\b have to adjust the configuration file
\b0 of ngIRCd, at least if you are installing ngIRCd for the first time on this system (it is preserved while updating, of course).\
\
\'95 The daemon is automatically restarted when updating, so your
\b users will be disconnected
\b0 .\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\cf0 \
ngIRCd becomes installed in the (newly created) /opt/ngircd directory on your system volume. Interesting files and directories are:\
\
\pard\tx260\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li260\fi-260\ql\qnatural\pardirnatural
\cf0 \'95
\f1 /opt/ngircd/sbin/ngircd
\f0 \'96 executable daemon\
\'95
\f1 /opt/ngircd/etc/ngircd.conf
\f0 \'96 configuration file\
\'95
\f1 /opt/ngircd/share/doc/ngircd/\'85
\f0 \'96 documentation\
\'95
\f1 /opt/ngircd/share/mac/\'85
\f0 \'96 manual pages}]]></resource><resource mime-type="text/rtf" kind="embedded" type="welcome"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0\fs26 \cf0 ngIRCd is a free and open source daemon for the Internet Relay Chat (IRC) protocol, developed under the GNU General Public License (GPL). It is written from scratch, is quite portable and is not based upon the original IRCd like many others.\
\
ngIRCd Homepage: {\field{\*\fldinst{HYPERLINK "http://ngircd.barton.de"}}{\fldrslt http://ngircd.barton.de}}\
\
Please see the documentation for details! You can find it online here on the Homepage:\
\
Documentation: {\field{\*\fldinst{HYPERLINK "http://ngircd.barton.de/documentation"}}{\fldrslt http://ngircd.barton.de/documentation}}\
\
You will be guided through all steps necessary to install this software on Mac OS X.}]]></resource><resource mime-type="text/rtf" kind="embedded" type="conclusion"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fmodern\fcharset0 Courier;}
{\colortbl;\red255\green255\blue255;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid1\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid101\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0\fs26 \cf0 The daemon has been restarted if it was already running before this installation and you have installed the LaunchDaemon start and stop script (which is the default).\
\
If you installed ngIRCd for the first time (or had the LaunchDaemon script disabled before), you can start ngIRCd using the following terminal command:\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\fs20 \cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\ql\qnatural\pardirnatural
\ls1\ilvl0
\f1\fs26 \cf0 sudo launchctl load -w \\\
/Library/LaunchDaemons/de.barton.ngircd.plist\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0 \cf0 \
To disable automatic starting of ngIRCd, use this command:\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\fs18 \cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\ql\qnatural\pardirnatural
\ls2\ilvl0
\f1\fs26 \cf0 sudo launchctl unload -w \\\
/Library/LaunchDaemons/de.barton.ngircd.plist\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0 \cf0 \
But don\'92t forget to
\b adjust the configuration!
\b0 By default, it is stored in the following file:\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\fs18 \cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\ql\qnatural\pardirnatural
\f1\fs26 \cf0 /opt/ngircd/etc/ngircd.conf}]]></resource></locale></resources><flags/><extra-files/><item type="file">02de.xml</item><item type="file">01ngircd.xml</item><mod>extraFiles</mod><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>

View File

@@ -0,0 +1,4 @@
project.xcworkspace
xcuserdata
*.mode1v3
*.pbxuser

View File

@@ -0,0 +1,17 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
EXTRA_DIST = project.pbxproj
maintainer-clean-local:
rm -f Makefile Makefile.in
# -eof-

View File

@@ -0,0 +1,887 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
FA2D564A11EA158B00D37A35 /* pam.c in Sources */ = {isa = PBXBuildFile; fileRef = FA2D564911EA158B00D37A35 /* pam.c */; };
FA2D567B11EA1AB300D37A35 /* libpam.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2D567A11EA1AB300D37A35 /* libpam.dylib */; };
FA322D350CEF74B1001761B3 /* array.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CD90CEF74B1001761B3 /* array.c */; };
FA322D360CEF74B1001761B3 /* channel.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDB0CEF74B1001761B3 /* channel.c */; };
FA322D370CEF74B1001761B3 /* client.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDD0CEF74B1001761B3 /* client.c */; };
FA322D380CEF74B1001761B3 /* conf.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDF0CEF74B1001761B3 /* conf.c */; };
FA322D390CEF74B1001761B3 /* conn-func.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE10CEF74B1001761B3 /* conn-func.c */; };
FA322D3A0CEF74B1001761B3 /* conn-zip.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE30CEF74B1001761B3 /* conn-zip.c */; };
FA322D3B0CEF74B1001761B3 /* conn.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE50CEF74B1001761B3 /* conn.c */; };
FA322D3C0CEF74B1001761B3 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE80CEF74B1001761B3 /* hash.c */; };
FA322D3D0CEF74B1001761B3 /* io.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CEA0CEF74B1001761B3 /* io.c */; };
FA322D3E0CEF74B1001761B3 /* irc-channel.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CEC0CEF74B1001761B3 /* irc-channel.c */; };
FA322D3F0CEF74B1001761B3 /* irc-info.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CEE0CEF74B1001761B3 /* irc-info.c */; };
FA322D400CEF74B1001761B3 /* irc-login.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF00CEF74B1001761B3 /* irc-login.c */; };
FA322D410CEF74B1001761B3 /* irc-mode.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF20CEF74B1001761B3 /* irc-mode.c */; };
FA322D420CEF74B1001761B3 /* irc-op.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF40CEF74B1001761B3 /* irc-op.c */; };
FA322D430CEF74B1001761B3 /* irc-oper.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF60CEF74B1001761B3 /* irc-oper.c */; };
FA322D440CEF74B1001761B3 /* irc-server.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF80CEF74B1001761B3 /* irc-server.c */; };
FA322D450CEF74B1001761B3 /* irc-write.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CFA0CEF74B1001761B3 /* irc-write.c */; };
FA322D460CEF74B1001761B3 /* irc.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CFC0CEF74B1001761B3 /* irc.c */; };
FA322D470CEF74B1001761B3 /* lists.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CFE0CEF74B1001761B3 /* lists.c */; };
FA322D480CEF74B1001761B3 /* log.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D000CEF74B1001761B3 /* log.c */; };
FA322D490CEF74B1001761B3 /* match.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D030CEF74B1001761B3 /* match.c */; };
FA322D4A0CEF74B1001761B3 /* ngircd.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D060CEF74B1001761B3 /* ngircd.c */; };
FA322D4B0CEF74B1001761B3 /* parse.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D080CEF74B1001761B3 /* parse.c */; };
FA322D4D0CEF74B1001761B3 /* resolve.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D0C0CEF74B1001761B3 /* resolve.c */; };
FA322DBE0CEF7766001761B3 /* tool.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D330CEF74B1001761B3 /* tool.c */; };
FA322DC10CEF77CB001761B3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA322DC00CEF77CB001761B3 /* libz.dylib */; };
FA407F2E0DB159F400271AF1 /* ng_ipaddr.c in Sources */ = {isa = PBXBuildFile; fileRef = FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */; };
FA4F165A164836B100DBD011 /* irc-metadata.c in Sources */ = {isa = PBXBuildFile; fileRef = FA4F1659164836B100DBD011 /* irc-metadata.c */; };
FA6BBC631605F0AC0004247A /* conn-encoding.c in Sources */ = {isa = PBXBuildFile; fileRef = FA6BBC5F1605F0AB0004247A /* conn-encoding.c */; };
FA6BBC641605F0AC0004247A /* irc-encoding.c in Sources */ = {isa = PBXBuildFile; fileRef = FA6BBC611605F0AC0004247A /* irc-encoding.c */; };
FA6BBC661605F6D60004247A /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA6BBC651605F6D60004247A /* libiconv.dylib */; };
FA85178C0FA061EC006A1F5A /* op.c in Sources */ = {isa = PBXBuildFile; fileRef = FA85178B0FA061EC006A1F5A /* op.c */; };
FA99428C10E82A27007F27ED /* proc.c in Sources */ = {isa = PBXBuildFile; fileRef = FA99428B10E82A27007F27ED /* proc.c */; };
FAA3D27B0F139CDC00B2447E /* conn-ssl.c in Sources */ = {isa = PBXBuildFile; fileRef = FAA3D2790F139CDC00B2447E /* conn-ssl.c */; };
FAA97C57124A271400D5BBA9 /* sighandlers.c in Sources */ = {isa = PBXBuildFile; fileRef = FAA97C55124A271400D5BBA9 /* sighandlers.c */; };
FAACD5F514A6099C006ED74F /* class.c in Sources */ = {isa = PBXBuildFile; fileRef = FAACD5F314A6099C006ED74F /* class.c */; };
FAD5853215271AAB00328741 /* client-cap.c in Sources */ = {isa = PBXBuildFile; fileRef = FAD5853015271AAB00328741 /* client-cap.c */; };
FAD5853515271AB800328741 /* irc-cap.c in Sources */ = {isa = PBXBuildFile; fileRef = FAD5853315271AB800328741 /* irc-cap.c */; };
FAD5853815272C2600328741 /* login.c in Sources */ = {isa = PBXBuildFile; fileRef = FAD5853615272C2500328741 /* login.c */; };
FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */ = {isa = PBXBuildFile; fileRef = FAE5CC2D0CF2308A007D69B6 /* numeric.c */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
8DD76FAF0486AB0100D96B5E /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 8;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
FA1A6BBC0D6857BB00AA8F71 /* misc-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "misc-test.e"; sourceTree = "<group>"; };
FA1A6BBD0D6857D900AA8F71 /* who-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "who-test.e"; sourceTree = "<group>"; };
FA2D564811EA158B00D37A35 /* pam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pam.h; sourceTree = "<group>"; };
FA2D564911EA158B00D37A35 /* pam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pam.c; sourceTree = "<group>"; };
FA2D567A11EA1AB300D37A35 /* libpam.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpam.dylib; path = usr/lib/libpam.dylib; sourceTree = SDKROOT; };
FA322BBA0CEF72E4001761B3 /* ngIRCd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ngIRCd; sourceTree = BUILT_PRODUCTS_DIR; };
FA322CD60CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322CD90CEF74B1001761B3 /* array.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = array.c; sourceTree = "<group>"; };
FA322CDA0CEF74B1001761B3 /* array.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = array.h; sourceTree = "<group>"; };
FA322CDB0CEF74B1001761B3 /* channel.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = channel.c; sourceTree = "<group>"; };
FA322CDC0CEF74B1001761B3 /* channel.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = channel.h; sourceTree = "<group>"; };
FA322CDD0CEF74B1001761B3 /* client.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = client.c; sourceTree = "<group>"; };
FA322CDE0CEF74B1001761B3 /* client.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = client.h; sourceTree = "<group>"; };
FA322CDF0CEF74B1001761B3 /* conf.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = conf.c; sourceTree = "<group>"; };
FA322CE00CEF74B1001761B3 /* conf.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = conf.h; sourceTree = "<group>"; };
FA322CE10CEF74B1001761B3 /* conn-func.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "conn-func.c"; sourceTree = "<group>"; };
FA322CE20CEF74B1001761B3 /* conn-func.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conn-func.h"; sourceTree = "<group>"; };
FA322CE30CEF74B1001761B3 /* conn-zip.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "conn-zip.c"; sourceTree = "<group>"; };
FA322CE40CEF74B1001761B3 /* conn-zip.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conn-zip.h"; sourceTree = "<group>"; };
FA322CE50CEF74B1001761B3 /* conn.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = conn.c; sourceTree = "<group>"; };
FA322CE60CEF74B1001761B3 /* conn.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = conn.h; sourceTree = "<group>"; };
FA322CE70CEF74B1001761B3 /* defines.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = defines.h; sourceTree = "<group>"; };
FA322CE80CEF74B1001761B3 /* hash.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = hash.c; sourceTree = "<group>"; };
FA322CE90CEF74B1001761B3 /* hash.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = hash.h; sourceTree = "<group>"; };
FA322CEA0CEF74B1001761B3 /* io.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = io.c; sourceTree = "<group>"; };
FA322CEB0CEF74B1001761B3 /* io.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = io.h; sourceTree = "<group>"; };
FA322CEC0CEF74B1001761B3 /* irc-channel.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-channel.c"; sourceTree = "<group>"; };
FA322CED0CEF74B1001761B3 /* irc-channel.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-channel.h"; sourceTree = "<group>"; };
FA322CEE0CEF74B1001761B3 /* irc-info.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-info.c"; sourceTree = "<group>"; };
FA322CEF0CEF74B1001761B3 /* irc-info.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-info.h"; sourceTree = "<group>"; };
FA322CF00CEF74B1001761B3 /* irc-login.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-login.c"; sourceTree = "<group>"; };
FA322CF10CEF74B1001761B3 /* irc-login.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-login.h"; sourceTree = "<group>"; };
FA322CF20CEF74B1001761B3 /* irc-mode.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-mode.c"; sourceTree = "<group>"; };
FA322CF30CEF74B1001761B3 /* irc-mode.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-mode.h"; sourceTree = "<group>"; };
FA322CF40CEF74B1001761B3 /* irc-op.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-op.c"; sourceTree = "<group>"; };
FA322CF50CEF74B1001761B3 /* irc-op.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-op.h"; sourceTree = "<group>"; };
FA322CF60CEF74B1001761B3 /* irc-oper.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-oper.c"; sourceTree = "<group>"; };
FA322CF70CEF74B1001761B3 /* irc-oper.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-oper.h"; sourceTree = "<group>"; };
FA322CF80CEF74B1001761B3 /* irc-server.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-server.c"; sourceTree = "<group>"; };
FA322CF90CEF74B1001761B3 /* irc-server.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-server.h"; sourceTree = "<group>"; };
FA322CFA0CEF74B1001761B3 /* irc-write.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-write.c"; sourceTree = "<group>"; };
FA322CFB0CEF74B1001761B3 /* irc-write.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-write.h"; sourceTree = "<group>"; };
FA322CFC0CEF74B1001761B3 /* irc.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = irc.c; sourceTree = "<group>"; };
FA322CFD0CEF74B1001761B3 /* irc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = irc.h; sourceTree = "<group>"; };
FA322CFE0CEF74B1001761B3 /* lists.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = lists.c; sourceTree = "<group>"; };
FA322CFF0CEF74B1001761B3 /* lists.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = lists.h; sourceTree = "<group>"; };
FA322D000CEF74B1001761B3 /* log.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = "<group>"; };
FA322D010CEF74B1001761B3 /* log.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
FA322D020CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D030CEF74B1001761B3 /* match.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = match.c; sourceTree = "<group>"; };
FA322D040CEF74B1001761B3 /* match.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = match.h; sourceTree = "<group>"; };
FA322D050CEF74B1001761B3 /* messages.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = messages.h; sourceTree = "<group>"; };
FA322D060CEF74B1001761B3 /* ngircd.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ngircd.c; sourceTree = "<group>"; };
FA322D070CEF74B1001761B3 /* ngircd.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ngircd.h; sourceTree = "<group>"; };
FA322D080CEF74B1001761B3 /* parse.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = parse.c; sourceTree = "<group>"; };
FA322D090CEF74B1001761B3 /* parse.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = parse.h; sourceTree = "<group>"; };
FA322D0C0CEF74B1001761B3 /* resolve.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = resolve.c; sourceTree = "<group>"; };
FA322D0D0CEF74B1001761B3 /* resolve.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = resolve.h; sourceTree = "<group>"; };
FA322D100CEF74B1001761B3 /* ansi2knr.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; path = ansi2knr.1; sourceTree = "<group>"; };
FA322D110CEF74B1001761B3 /* ansi2knr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ansi2knr.c; sourceTree = "<group>"; };
FA322D120CEF74B1001761B3 /* exp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = exp.h; sourceTree = "<group>"; };
FA322D130CEF74B1001761B3 /* imp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = imp.h; sourceTree = "<group>"; };
FA322D140CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D150CEF74B1001761B3 /* portab.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = portab.h; sourceTree = "<group>"; };
FA322D160CEF74B1001761B3 /* portabtest.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = portabtest.c; sourceTree = "<group>"; };
FA322D170CEF74B1001761B3 /* splint.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = splint.h; sourceTree = "<group>"; };
FA322D180CEF74B1001761B3 /* strdup.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = strdup.c; sourceTree = "<group>"; };
FA322D190CEF74B1001761B3 /* strlcpy.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = strlcpy.c; sourceTree = "<group>"; };
FA322D1A0CEF74B1001761B3 /* vsnprintf.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = vsnprintf.c; sourceTree = "<group>"; };
FA322D1D0CEF74B1001761B3 /* channel-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "channel-test.e"; sourceTree = "<group>"; };
FA322D1E0CEF74B1001761B3 /* check-idle.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "check-idle.e"; sourceTree = "<group>"; };
FA322D1F0CEF74B1001761B3 /* connect-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "connect-test.e"; sourceTree = "<group>"; };
FA322D200CEF74B1001761B3 /* functions.inc */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; path = functions.inc; sourceTree = "<group>"; };
FA322D210CEF74B1001761B3 /* getpid.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = getpid.sh; sourceTree = "<group>"; };
FA322D220CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D230CEF74B1001761B3 /* mode-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "mode-test.e"; sourceTree = "<group>"; };
FA322D250CEF74B1001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
FA322D260CEF74B1001761B3 /* start-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "start-server.sh"; sourceTree = "<group>"; };
FA322D270CEF74B1001761B3 /* stop-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "stop-server.sh"; sourceTree = "<group>"; };
FA322D280CEF74B1001761B3 /* stress-A.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "stress-A.e"; sourceTree = "<group>"; };
FA322D290CEF74B1001761B3 /* stress-B.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "stress-B.e"; sourceTree = "<group>"; };
FA322D2A0CEF74B1001761B3 /* stress-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "stress-server.sh"; sourceTree = "<group>"; };
FA322D2B0CEF74B1001761B3 /* test-loop.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "test-loop.sh"; sourceTree = "<group>"; };
FA322D2C0CEF74B1001761B3 /* tests.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = tests.sh; sourceTree = "<group>"; };
FA322D2D0CEF74B1001761B3 /* wait-tests.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "wait-tests.sh"; sourceTree = "<group>"; };
FA322D300CEF74B1001761B3 /* ansi2knr.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; path = ansi2knr.1; sourceTree = "<group>"; };
FA322D310CEF74B1001761B3 /* ansi2knr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ansi2knr.c; sourceTree = "<group>"; };
FA322D320CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D330CEF74B1001761B3 /* tool.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = tool.c; sourceTree = "<group>"; };
FA322D340CEF74B1001761B3 /* tool.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = tool.h; sourceTree = "<group>"; };
FA322D5A0CEF750F001761B3 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = AUTHORS; path = ../../AUTHORS; sourceTree = SOURCE_ROOT; };
FA322D5B0CEF750F001761B3 /* autogen.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = autogen.sh; path = ../../autogen.sh; sourceTree = SOURCE_ROOT; };
FA322D5C0CEF750F001761B3 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = ChangeLog; path = ../../ChangeLog; sourceTree = SOURCE_ROOT; };
FA322D5E0CEF750F001761B3 /* config.guess */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.guess; path = ../../config.guess; sourceTree = SOURCE_ROOT; };
FA322D5F0CEF750F001761B3 /* config.sub */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.sub; path = ../../config.sub; sourceTree = SOURCE_ROOT; };
FA322D600CEF750F001761B3 /* configure.in */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = configure.in; path = ../../configure.in; sourceTree = SOURCE_ROOT; };
FA322D610CEF750F001761B3 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = COPYING; path = ../../COPYING; sourceTree = SOURCE_ROOT; };
FA322D620CEF750F001761B3 /* INSTALL */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = INSTALL; path = ../../INSTALL; sourceTree = SOURCE_ROOT; };
FA322D630CEF750F001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.am; path = ../../Makefile.am; sourceTree = SOURCE_ROOT; };
FA322D640CEF750F001761B3 /* NEWS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = NEWS; path = ../../NEWS; sourceTree = SOURCE_ROOT; };
FA322D650CEF750F001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README; path = ../../README; sourceTree = SOURCE_ROOT; };
FA322D6A0CEF7523001761B3 /* changelog */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = changelog; sourceTree = "<group>"; };
FA322D6B0CEF7523001761B3 /* compat */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = compat; sourceTree = "<group>"; };
FA322D6C0CEF7523001761B3 /* control */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = control; sourceTree = "<group>"; };
FA322D6D0CEF7523001761B3 /* copyright */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = copyright; sourceTree = "<group>"; };
FA322D6E0CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D6F0CEF7523001761B3 /* ngircd.default */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.default; sourceTree = "<group>"; };
FA322D700CEF7523001761B3 /* ngircd.init */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.init; sourceTree = "<group>"; };
FA322D710CEF7523001761B3 /* ngircd.postinst */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.postinst; sourceTree = "<group>"; };
FA322D720CEF7523001761B3 /* rules */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = rules; sourceTree = "<group>"; };
FA322D8D0CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = ngIRCd.xcodeproj; sourceTree = "<group>"; };
FA322D910CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D920CEF7523001761B3 /* ngindent */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngindent; sourceTree = "<group>"; };
FA322D940CEF7523001761B3 /* ngircd.spec */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.spec; sourceTree = "<group>"; };
FA322D950CEF7523001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
FA322D960CEF7523001761B3 /* systrace.policy */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = systrace.policy; sourceTree = "<group>"; };
FA322D9A0CEF752C001761B3 /* FAQ.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = FAQ.txt; sourceTree = "<group>"; };
FA322D9B0CEF752C001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D9C0CEF752C001761B3 /* Platforms.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Platforms.txt; sourceTree = "<group>"; };
FA322D9D0CEF752C001761B3 /* Protocol.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Protocol.txt; sourceTree = "<group>"; };
FA322D9E0CEF752C001761B3 /* README-AUX.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "README-AUX.txt"; sourceTree = "<group>"; };
FA322D9F0CEF752C001761B3 /* README-BeOS.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "README-BeOS.txt"; sourceTree = "<group>"; };
FA322DA00CEF752C001761B3 /* RFC.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = RFC.txt; sourceTree = "<group>"; };
FA322DA40CEF752C001761B3 /* Doxyfile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Doxyfile; sourceTree = "<group>"; };
FA322DA50CEF752C001761B3 /* footer.inc.html */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.html; path = footer.inc.html; sourceTree = "<group>"; };
FA322DA60CEF752C001761B3 /* header.inc.html */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.html; path = header.inc.html; sourceTree = "<group>"; };
FA322DA70CEF752C001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322DA80CEF752C001761B3 /* ngircd-doc.css */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.css; path = "ngircd-doc.css"; sourceTree = "<group>"; };
FA322DA90CEF752C001761B3 /* SSL.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = SSL.txt; sourceTree = "<group>"; };
FA322DAD0CEF7538001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322DAE0CEF7538001761B3 /* ngircd.8.tmpl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.8.tmpl; sourceTree = "<group>"; };
FA322DAF0CEF7538001761B3 /* ngircd.conf.5.tmpl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.conf.5.tmpl; sourceTree = "<group>"; };
FA322DB10CEF7565001761B3 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
FA322DC00CEF77CB001761B3 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
FA407F2B0DB159F400271AF1 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.am; path = ipaddr/Makefile.am; sourceTree = "<group>"; };
FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = ng_ipaddr.c; path = ipaddr/ng_ipaddr.c; sourceTree = "<group>"; };
FA407F2D0DB159F400271AF1 /* ng_ipaddr.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ng_ipaddr.h; path = ipaddr/ng_ipaddr.h; sourceTree = "<group>"; };
FA407F380DB15AC700271AF1 /* GIT.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = GIT.txt; sourceTree = "<group>"; };
FA4B08E513E7F8FB00765BA3 /* ngircd-bsd.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "ngircd-bsd.sh"; sourceTree = "<group>"; };
FA4B08E613E7F91700765BA3 /* ngIRCd-Logo.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "ngIRCd-Logo.gif"; sourceTree = "<group>"; };
FA4B08E713E7F91700765BA3 /* ngircd-redhat.init */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "ngircd-redhat.init"; sourceTree = "<group>"; };
FA4B08E813E7F91C00765BA3 /* platformtest.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = platformtest.sh; sourceTree = "<group>"; };
FA4F1659164836B100DBD011 /* irc-metadata.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "irc-metadata.c"; sourceTree = "<group>"; };
FA4F165C164836BF00DBD011 /* irc-metadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "irc-metadata.h"; sourceTree = "<group>"; };
FA6BBC5F1605F0AB0004247A /* conn-encoding.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "conn-encoding.c"; sourceTree = "<group>"; };
FA6BBC601605F0AC0004247A /* conn-encoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "conn-encoding.h"; sourceTree = "<group>"; };
FA6BBC611605F0AC0004247A /* irc-encoding.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "irc-encoding.c"; sourceTree = "<group>"; };
FA6BBC621605F0AC0004247A /* irc-encoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "irc-encoding.h"; sourceTree = "<group>"; };
FA6BBC651605F6D60004247A /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = ../../../../../../../usr/lib/libiconv.dylib; sourceTree = "<group>"; };
FA77849A133FB9FF00740057 /* sample-ngircd.conf.tmpl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "sample-ngircd.conf.tmpl"; sourceTree = "<group>"; };
FA85178A0FA061EC006A1F5A /* op.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = op.h; sourceTree = "<group>"; };
FA85178B0FA061EC006A1F5A /* op.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = op.c; sourceTree = "<group>"; };
FA99428A10E82A27007F27ED /* proc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = proc.h; sourceTree = "<group>"; };
FA99428B10E82A27007F27ED /* proc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = proc.c; sourceTree = "<group>"; };
FAA3D2700F139CB300B2447E /* invite-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "invite-test.e"; sourceTree = "<group>"; };
FAA3D2710F139CB300B2447E /* join-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "join-test.e"; sourceTree = "<group>"; };
FAA3D2720F139CB300B2447E /* kick-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "kick-test.e"; sourceTree = "<group>"; };
FAA3D2730F139CB300B2447E /* message-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "message-test.e"; sourceTree = "<group>"; };
FAA3D2740F139CB300B2447E /* ngircd-test1.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "ngircd-test1.conf"; sourceTree = "<group>"; };
FAA3D2750F139CB300B2447E /* ngircd-test2.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "ngircd-test2.conf"; sourceTree = "<group>"; };
FAA3D2760F139CB300B2447E /* opless-channel-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "opless-channel-test.e"; sourceTree = "<group>"; };
FAA3D2770F139CB300B2447E /* server-link-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "server-link-test.e"; sourceTree = "<group>"; };
FAA3D2780F139CDC00B2447E /* conf-ssl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conf-ssl.h"; sourceTree = "<group>"; };
FAA3D2790F139CDC00B2447E /* conn-ssl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "conn-ssl.c"; sourceTree = "<group>"; };
FAA3D27A0F139CDC00B2447E /* conn-ssl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conn-ssl.h"; sourceTree = "<group>"; };
FAA3D27C0F139CF800B2447E /* strtok_r.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = strtok_r.c; sourceTree = "<group>"; };
FAA3D27D0F139CF800B2447E /* waitpid.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = waitpid.c; sourceTree = "<group>"; };
FAA3D2800F139D1500B2447E /* Services.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Services.txt; sourceTree = "<group>"; };
FAA3D2820F139D2E00B2447E /* 01ngircd-contents.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = "01ngircd-contents.xml"; sourceTree = "<group>"; };
FAA3D2830F139D2E00B2447E /* 01ngircd.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = 01ngircd.xml; sourceTree = "<group>"; };
FAA3D2840F139D2E00B2447E /* 02de-contents.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = "02de-contents.xml"; sourceTree = "<group>"; };
FAA3D2850F139D2E00B2447E /* 02de.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = 02de.xml; sourceTree = "<group>"; };
FAA3D2860F139D2E00B2447E /* index.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = index.xml; sourceTree = "<group>"; };
FAA3D2880F139D2E00B2447E /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FAA3D28A0F139D2E00B2447E /* postinstall.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = postinstall.sh; sourceTree = "<group>"; };
FAA3D28B0F139D2E00B2447E /* preinstall.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = preinstall.sh; sourceTree = "<group>"; };
FAA97C55124A271400D5BBA9 /* sighandlers.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = sighandlers.c; sourceTree = "<group>"; };
FAA97C56124A271400D5BBA9 /* sighandlers.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = sighandlers.h; sourceTree = "<group>"; };
FAACD5F314A6099C006ED74F /* class.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = class.c; sourceTree = "<group>"; };
FAACD5F414A6099C006ED74F /* class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = class.h; sourceTree = "<group>"; };
FAD5852F15271A7800328741 /* Capabilities.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Capabilities.txt; sourceTree = "<group>"; };
FAD5853015271AAB00328741 /* client-cap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "client-cap.c"; sourceTree = "<group>"; };
FAD5853115271AAB00328741 /* client-cap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "client-cap.h"; sourceTree = "<group>"; };
FAD5853315271AB800328741 /* irc-cap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "irc-cap.c"; sourceTree = "<group>"; };
FAD5853415271AB800328741 /* irc-cap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "irc-cap.h"; sourceTree = "<group>"; };
FAD5853615272C2500328741 /* login.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = login.c; sourceTree = "<group>"; };
FAD5853715272C2500328741 /* login.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = login.h; sourceTree = "<group>"; };
FAE22BD215270EA300F1A5AB /* Bopm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Bopm.txt; sourceTree = "<group>"; };
FAE22BD415270EA300F1A5AB /* Contributing.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Contributing.txt; sourceTree = "<group>"; };
FAE22BD515270EB500F1A5AB /* HowToRelease.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = HowToRelease.txt; sourceTree = "<group>"; };
FAE22BD615270EB500F1A5AB /* Modes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Modes.txt; sourceTree = "<group>"; };
FAE22BD715270EB500F1A5AB /* PAM.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = PAM.txt; sourceTree = "<group>"; };
FAE22BD815270EC400F1A5AB /* README-Interix.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "README-Interix.txt"; sourceTree = "<group>"; };
FAE5CC2C0CF2308A007D69B6 /* numeric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = numeric.h; sourceTree = "<group>"; };
FAE5CC2D0CF2308A007D69B6 /* numeric.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = numeric.c; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
8DD76FAD0486AB0100D96B5E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
FA322DC10CEF77CB001761B3 /* libz.dylib in Frameworks */,
FA2D567B11EA1AB300D37A35 /* libpam.dylib in Frameworks */,
FA6BBC661605F6D60004247A /* libiconv.dylib in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
08FB7794FE84155DC02AAC07 /* ngIRCd */ = {
isa = PBXGroup;
children = (
FA322D970CEF752C001761B3 /* doc */,
FA322D660CEF7523001761B3 /* contrib */,
FA322DAB0CEF7538001761B3 /* man */,
FA322CD40CEF74B0001761B3 /* src */,
FA322D5A0CEF750F001761B3 /* AUTHORS */,
FA322D610CEF750F001761B3 /* COPYING */,
FA322D620CEF750F001761B3 /* INSTALL */,
FA322D640CEF750F001761B3 /* NEWS */,
FA322D650CEF750F001761B3 /* README */,
FA322D5B0CEF750F001761B3 /* autogen.sh */,
FA322D5C0CEF750F001761B3 /* ChangeLog */,
FA322D5E0CEF750F001761B3 /* config.guess */,
FA322D5F0CEF750F001761B3 /* config.sub */,
FA322D600CEF750F001761B3 /* configure.in */,
FA322D630CEF750F001761B3 /* Makefile.am */,
1AB674ADFE9D54B511CA2CBB /* Products */,
FA6BBC651605F6D60004247A /* libiconv.dylib */,
FA2D567A11EA1AB300D37A35 /* libpam.dylib */,
FA322DC00CEF77CB001761B3 /* libz.dylib */,
);
name = ngIRCd;
sourceTree = "<group>";
};
1AB674ADFE9D54B511CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
FA322BBA0CEF72E4001761B3 /* ngIRCd */,
);
name = Products;
sourceTree = "<group>";
};
FA322CD40CEF74B0001761B3 /* src */ = {
isa = PBXGroup;
children = (
FA322CD70CEF74B1001761B3 /* ngircd */,
FA407F270DB1598D00271AF1 /* ipaddr */,
FA322D0E0CEF74B1001761B3 /* portab */,
FA322D1B0CEF74B1001761B3 /* testsuite */,
FA322D2E0CEF74B1001761B3 /* tool */,
FA322CD60CEF74B1001761B3 /* Makefile.am */,
);
name = src;
path = ../../src;
sourceTree = SOURCE_ROOT;
};
FA322CD70CEF74B1001761B3 /* ngircd */ = {
isa = PBXGroup;
children = (
FA322D020CEF74B1001761B3 /* Makefile.am */,
FA322CD90CEF74B1001761B3 /* array.c */,
FA322CDA0CEF74B1001761B3 /* array.h */,
FA322CDB0CEF74B1001761B3 /* channel.c */,
FA322CDC0CEF74B1001761B3 /* channel.h */,
FAACD5F314A6099C006ED74F /* class.c */,
FAACD5F414A6099C006ED74F /* class.h */,
FA322CDD0CEF74B1001761B3 /* client.c */,
FA322CDE0CEF74B1001761B3 /* client.h */,
FAD5853015271AAB00328741 /* client-cap.c */,
FAD5853115271AAB00328741 /* client-cap.h */,
FA322CDF0CEF74B1001761B3 /* conf.c */,
FA322CE00CEF74B1001761B3 /* conf.h */,
FAA3D2780F139CDC00B2447E /* conf-ssl.h */,
FA322CE50CEF74B1001761B3 /* conn.c */,
FA322CE60CEF74B1001761B3 /* conn.h */,
FA6BBC5F1605F0AB0004247A /* conn-encoding.c */,
FA6BBC601605F0AC0004247A /* conn-encoding.h */,
FA322CE10CEF74B1001761B3 /* conn-func.c */,
FA322CE20CEF74B1001761B3 /* conn-func.h */,
FA322CE30CEF74B1001761B3 /* conn-zip.c */,
FA322CE40CEF74B1001761B3 /* conn-zip.h */,
FAA3D2790F139CDC00B2447E /* conn-ssl.c */,
FAA3D27A0F139CDC00B2447E /* conn-ssl.h */,
FA322CE70CEF74B1001761B3 /* defines.h */,
FA322CE80CEF74B1001761B3 /* hash.c */,
FA322CE90CEF74B1001761B3 /* hash.h */,
FA322CEA0CEF74B1001761B3 /* io.c */,
FA322CEB0CEF74B1001761B3 /* io.h */,
FA322CFC0CEF74B1001761B3 /* irc.c */,
FA322CFD0CEF74B1001761B3 /* irc.h */,
FAD5853315271AB800328741 /* irc-cap.c */,
FAD5853415271AB800328741 /* irc-cap.h */,
FA322CEC0CEF74B1001761B3 /* irc-channel.c */,
FA322CED0CEF74B1001761B3 /* irc-channel.h */,
FA6BBC611605F0AC0004247A /* irc-encoding.c */,
FA6BBC621605F0AC0004247A /* irc-encoding.h */,
FA322CEE0CEF74B1001761B3 /* irc-info.c */,
FA322CEF0CEF74B1001761B3 /* irc-info.h */,
FA322CF00CEF74B1001761B3 /* irc-login.c */,
FA322CF10CEF74B1001761B3 /* irc-login.h */,
FA4F1659164836B100DBD011 /* irc-metadata.c */,
FA4F165C164836BF00DBD011 /* irc-metadata.h */,
FA322CF20CEF74B1001761B3 /* irc-mode.c */,
FA322CF30CEF74B1001761B3 /* irc-mode.h */,
FA322CF40CEF74B1001761B3 /* irc-op.c */,
FA322CF50CEF74B1001761B3 /* irc-op.h */,
FA322CF60CEF74B1001761B3 /* irc-oper.c */,
FA322CF70CEF74B1001761B3 /* irc-oper.h */,
FA322CF80CEF74B1001761B3 /* irc-server.c */,
FA322CF90CEF74B1001761B3 /* irc-server.h */,
FA322CFA0CEF74B1001761B3 /* irc-write.c */,
FA322CFB0CEF74B1001761B3 /* irc-write.h */,
FA322CFE0CEF74B1001761B3 /* lists.c */,
FA322CFF0CEF74B1001761B3 /* lists.h */,
FA322D000CEF74B1001761B3 /* log.c */,
FA322D010CEF74B1001761B3 /* log.h */,
FAD5853615272C2500328741 /* login.c */,
FAD5853715272C2500328741 /* login.h */,
FA322D030CEF74B1001761B3 /* match.c */,
FA322D040CEF74B1001761B3 /* match.h */,
FA322D050CEF74B1001761B3 /* messages.h */,
FA322D060CEF74B1001761B3 /* ngircd.c */,
FA322D070CEF74B1001761B3 /* ngircd.h */,
FAE5CC2D0CF2308A007D69B6 /* numeric.c */,
FAE5CC2C0CF2308A007D69B6 /* numeric.h */,
FA85178B0FA061EC006A1F5A /* op.c */,
FA85178A0FA061EC006A1F5A /* op.h */,
FA2D564911EA158B00D37A35 /* pam.c */,
FA2D564811EA158B00D37A35 /* pam.h */,
FA322D080CEF74B1001761B3 /* parse.c */,
FA322D090CEF74B1001761B3 /* parse.h */,
FA99428B10E82A27007F27ED /* proc.c */,
FA99428A10E82A27007F27ED /* proc.h */,
FA322D0C0CEF74B1001761B3 /* resolve.c */,
FA322D0D0CEF74B1001761B3 /* resolve.h */,
FAA97C55124A271400D5BBA9 /* sighandlers.c */,
FAA97C56124A271400D5BBA9 /* sighandlers.h */,
);
path = ngircd;
sourceTree = "<group>";
};
FA322D0E0CEF74B1001761B3 /* portab */ = {
isa = PBXGroup;
children = (
FAA3D27C0F139CF800B2447E /* strtok_r.c */,
FAA3D27D0F139CF800B2447E /* waitpid.c */,
FA322D100CEF74B1001761B3 /* ansi2knr.1 */,
FA322D110CEF74B1001761B3 /* ansi2knr.c */,
FA322D120CEF74B1001761B3 /* exp.h */,
FA322D130CEF74B1001761B3 /* imp.h */,
FA322D140CEF74B1001761B3 /* Makefile.am */,
FA322D150CEF74B1001761B3 /* portab.h */,
FA322D160CEF74B1001761B3 /* portabtest.c */,
FA322D170CEF74B1001761B3 /* splint.h */,
FA322D180CEF74B1001761B3 /* strdup.c */,
FA322D190CEF74B1001761B3 /* strlcpy.c */,
FA322D1A0CEF74B1001761B3 /* vsnprintf.c */,
);
path = portab;
sourceTree = "<group>";
};
FA322D1B0CEF74B1001761B3 /* testsuite */ = {
isa = PBXGroup;
children = (
FAA3D2700F139CB300B2447E /* invite-test.e */,
FAA3D2710F139CB300B2447E /* join-test.e */,
FAA3D2720F139CB300B2447E /* kick-test.e */,
FAA3D2730F139CB300B2447E /* message-test.e */,
FAA3D2740F139CB300B2447E /* ngircd-test1.conf */,
FAA3D2750F139CB300B2447E /* ngircd-test2.conf */,
FAA3D2760F139CB300B2447E /* opless-channel-test.e */,
FAA3D2770F139CB300B2447E /* server-link-test.e */,
FA322D1D0CEF74B1001761B3 /* channel-test.e */,
FA322D1E0CEF74B1001761B3 /* check-idle.e */,
FA322D1F0CEF74B1001761B3 /* connect-test.e */,
FA322D200CEF74B1001761B3 /* functions.inc */,
FA322D210CEF74B1001761B3 /* getpid.sh */,
FA322D220CEF74B1001761B3 /* Makefile.am */,
FA1A6BBC0D6857BB00AA8F71 /* misc-test.e */,
FA322D230CEF74B1001761B3 /* mode-test.e */,
FA322D250CEF74B1001761B3 /* README */,
FA322D260CEF74B1001761B3 /* start-server.sh */,
FA322D270CEF74B1001761B3 /* stop-server.sh */,
FA322D280CEF74B1001761B3 /* stress-A.e */,
FA322D290CEF74B1001761B3 /* stress-B.e */,
FA322D2A0CEF74B1001761B3 /* stress-server.sh */,
FA322D2B0CEF74B1001761B3 /* test-loop.sh */,
FA322D2C0CEF74B1001761B3 /* tests.sh */,
FA322D2D0CEF74B1001761B3 /* wait-tests.sh */,
FA1A6BBD0D6857D900AA8F71 /* who-test.e */,
);
path = testsuite;
sourceTree = "<group>";
};
FA322D2E0CEF74B1001761B3 /* tool */ = {
isa = PBXGroup;
children = (
FA322D300CEF74B1001761B3 /* ansi2knr.1 */,
FA322D310CEF74B1001761B3 /* ansi2knr.c */,
FA322D320CEF74B1001761B3 /* Makefile.am */,
FA322D330CEF74B1001761B3 /* tool.c */,
FA322D340CEF74B1001761B3 /* tool.h */,
);
path = tool;
sourceTree = "<group>";
};
FA322D660CEF7523001761B3 /* contrib */ = {
isa = PBXGroup;
children = (
FA322D680CEF7523001761B3 /* Debian */,
FA322D730CEF7523001761B3 /* MacOSX */,
FA322D910CEF7523001761B3 /* Makefile.am */,
FA322D920CEF7523001761B3 /* ngindent */,
FA4B08E513E7F8FB00765BA3 /* ngircd-bsd.sh */,
FA4B08E613E7F91700765BA3 /* ngIRCd-Logo.gif */,
FA4B08E713E7F91700765BA3 /* ngircd-redhat.init */,
FA322D940CEF7523001761B3 /* ngircd.spec */,
FA4B08E813E7F91C00765BA3 /* platformtest.sh */,
FA322D950CEF7523001761B3 /* README */,
FA322D960CEF7523001761B3 /* systrace.policy */,
);
name = contrib;
path = ..;
sourceTree = SOURCE_ROOT;
};
FA322D680CEF7523001761B3 /* Debian */ = {
isa = PBXGroup;
children = (
FA322D6A0CEF7523001761B3 /* changelog */,
FA322D6B0CEF7523001761B3 /* compat */,
FA322D6C0CEF7523001761B3 /* control */,
FA322D6D0CEF7523001761B3 /* copyright */,
FA322D6E0CEF7523001761B3 /* Makefile.am */,
FA322D6F0CEF7523001761B3 /* ngircd.default */,
FA322D700CEF7523001761B3 /* ngircd.init */,
FA322D710CEF7523001761B3 /* ngircd.postinst */,
FA322D720CEF7523001761B3 /* rules */,
);
path = Debian;
sourceTree = "<group>";
};
FA322D730CEF7523001761B3 /* MacOSX */ = {
isa = PBXGroup;
children = (
FAA3D2810F139D2E00B2447E /* ngIRCd.pmdoc */,
FAA3D28A0F139D2E00B2447E /* postinstall.sh */,
FAA3D28B0F139D2E00B2447E /* preinstall.sh */,
FA322D750CEF7523001761B3 /* build */,
FA322D8D0CEF7523001761B3 /* Makefile.am */,
FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */,
FA322DB10CEF7565001761B3 /* config.h */,
);
path = MacOSX;
sourceTree = "<group>";
};
FA322D750CEF7523001761B3 /* build */ = {
isa = PBXGroup;
children = (
FA322D760CEF7523001761B3 /* ngIRCd.build */,
);
path = build;
sourceTree = "<group>";
};
FA322D760CEF7523001761B3 /* ngIRCd.build */ = {
isa = PBXGroup;
children = (
FA322D770CEF7523001761B3 /* Default */,
FA322D7F0CEF7523001761B3 /* ngIRCd.pbxindex */,
);
path = ngIRCd.build;
sourceTree = "<group>";
};
FA322D770CEF7523001761B3 /* Default */ = {
isa = PBXGroup;
children = (
FA322D780CEF7523001761B3 /* ngIRCd.build */,
);
path = Default;
sourceTree = "<group>";
};
FA322D780CEF7523001761B3 /* ngIRCd.build */ = {
isa = PBXGroup;
children = (
FA322D7A0CEF7523001761B3 /* Objects-normal */,
);
path = ngIRCd.build;
sourceTree = "<group>";
};
FA322D7A0CEF7523001761B3 /* Objects-normal */ = {
isa = PBXGroup;
children = (
FA322D7B0CEF7523001761B3 /* i386 */,
FA322D7D0CEF7523001761B3 /* ppc */,
);
path = "Objects-normal";
sourceTree = "<group>";
};
FA322D7B0CEF7523001761B3 /* i386 */ = {
isa = PBXGroup;
children = (
);
path = i386;
sourceTree = "<group>";
};
FA322D7D0CEF7523001761B3 /* ppc */ = {
isa = PBXGroup;
children = (
);
path = ppc;
sourceTree = "<group>";
};
FA322D7F0CEF7523001761B3 /* ngIRCd.pbxindex */ = {
isa = PBXGroup;
children = (
FA322D880CEF7523001761B3 /* strings.pbxstrings */,
);
path = ngIRCd.pbxindex;
sourceTree = "<group>";
};
FA322D880CEF7523001761B3 /* strings.pbxstrings */ = {
isa = PBXGroup;
children = (
);
path = strings.pbxstrings;
sourceTree = "<group>";
};
FA322D8F0CEF7523001761B3 /* Products */ = {
isa = PBXGroup;
children = (
);
name = Products;
sourceTree = "<group>";
};
FA322D970CEF752C001761B3 /* doc */ = {
isa = PBXGroup;
children = (
FA322D9B0CEF752C001761B3 /* Makefile.am */,
FAE22BD215270EA300F1A5AB /* Bopm.txt */,
FAD5852F15271A7800328741 /* Capabilities.txt */,
FAE22BD415270EA300F1A5AB /* Contributing.txt */,
FA322D9A0CEF752C001761B3 /* FAQ.txt */,
FA407F380DB15AC700271AF1 /* GIT.txt */,
FAE22BD515270EB500F1A5AB /* HowToRelease.txt */,
FAE22BD615270EB500F1A5AB /* Modes.txt */,
FAE22BD715270EB500F1A5AB /* PAM.txt */,
FA322D9C0CEF752C001761B3 /* Platforms.txt */,
FA322D9D0CEF752C001761B3 /* Protocol.txt */,
FA322D9E0CEF752C001761B3 /* README-AUX.txt */,
FA322D9F0CEF752C001761B3 /* README-BeOS.txt */,
FAE22BD815270EC400F1A5AB /* README-Interix.txt */,
FA322DA00CEF752C001761B3 /* RFC.txt */,
FAA3D2800F139D1500B2447E /* Services.txt */,
FA322DA90CEF752C001761B3 /* SSL.txt */,
FA77849A133FB9FF00740057 /* sample-ngircd.conf.tmpl */,
FA322DA20CEF752C001761B3 /* src */,
);
name = doc;
path = ../../doc;
sourceTree = SOURCE_ROOT;
};
FA322DA20CEF752C001761B3 /* src */ = {
isa = PBXGroup;
children = (
FA322DA40CEF752C001761B3 /* Doxyfile */,
FA322DA50CEF752C001761B3 /* footer.inc.html */,
FA322DA60CEF752C001761B3 /* header.inc.html */,
FA322DA70CEF752C001761B3 /* Makefile.am */,
FA322DA80CEF752C001761B3 /* ngircd-doc.css */,
);
path = src;
sourceTree = "<group>";
};
FA322DAB0CEF7538001761B3 /* man */ = {
isa = PBXGroup;
children = (
FA322DAD0CEF7538001761B3 /* Makefile.am */,
FA322DAE0CEF7538001761B3 /* ngircd.8.tmpl */,
FA322DAF0CEF7538001761B3 /* ngircd.conf.5.tmpl */,
);
name = man;
path = ../../man;
sourceTree = SOURCE_ROOT;
};
FA407F270DB1598D00271AF1 /* ipaddr */ = {
isa = PBXGroup;
children = (
FA407F2B0DB159F400271AF1 /* Makefile.am */,
FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */,
FA407F2D0DB159F400271AF1 /* ng_ipaddr.h */,
);
name = ipaddr;
sourceTree = "<group>";
};
FAA3D2810F139D2E00B2447E /* ngIRCd.pmdoc */ = {
isa = PBXGroup;
children = (
FAA3D2820F139D2E00B2447E /* 01ngircd-contents.xml */,
FAA3D2830F139D2E00B2447E /* 01ngircd.xml */,
FAA3D2840F139D2E00B2447E /* 02de-contents.xml */,
FAA3D2850F139D2E00B2447E /* 02de.xml */,
FAA3D2860F139D2E00B2447E /* index.xml */,
FAA3D2880F139D2E00B2447E /* Makefile.am */,
);
path = ngIRCd.pmdoc;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
8DD76FA90486AB0100D96B5E /* ngIRCd */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "ngIRCd" */;
buildPhases = (
8DD76FAB0486AB0100D96B5E /* Sources */,
8DD76FAD0486AB0100D96B5E /* Frameworks */,
8DD76FAF0486AB0100D96B5E /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = ngIRCd;
productInstallPath = "$(HOME)/bin";
productName = ngIRCd;
productReference = FA322BBA0CEF72E4001761B3 /* ngIRCd */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
08FB7793FE84155DC02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0430;
};
buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ngIRCd" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 08FB7794FE84155DC02AAC07 /* ngIRCd */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = FA322D8F0CEF7523001761B3 /* Products */;
ProjectRef = FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */;
},
);
projectRoot = "";
targets = (
8DD76FA90486AB0100D96B5E /* ngIRCd */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
8DD76FAB0486AB0100D96B5E /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FA322D350CEF74B1001761B3 /* array.c in Sources */,
FA322D360CEF74B1001761B3 /* channel.c in Sources */,
FA322D370CEF74B1001761B3 /* client.c in Sources */,
FA322D380CEF74B1001761B3 /* conf.c in Sources */,
FA322D390CEF74B1001761B3 /* conn-func.c in Sources */,
FA322D3A0CEF74B1001761B3 /* conn-zip.c in Sources */,
FA322D3B0CEF74B1001761B3 /* conn.c in Sources */,
FA322D3C0CEF74B1001761B3 /* hash.c in Sources */,
FA322D3D0CEF74B1001761B3 /* io.c in Sources */,
FA322D3E0CEF74B1001761B3 /* irc-channel.c in Sources */,
FA322D3F0CEF74B1001761B3 /* irc-info.c in Sources */,
FA322D400CEF74B1001761B3 /* irc-login.c in Sources */,
FA322D410CEF74B1001761B3 /* irc-mode.c in Sources */,
FA322D420CEF74B1001761B3 /* irc-op.c in Sources */,
FA322D430CEF74B1001761B3 /* irc-oper.c in Sources */,
FA322D440CEF74B1001761B3 /* irc-server.c in Sources */,
FA322D450CEF74B1001761B3 /* irc-write.c in Sources */,
FA322D460CEF74B1001761B3 /* irc.c in Sources */,
FA322D470CEF74B1001761B3 /* lists.c in Sources */,
FA322D480CEF74B1001761B3 /* log.c in Sources */,
FA322D490CEF74B1001761B3 /* match.c in Sources */,
FA322D4A0CEF74B1001761B3 /* ngircd.c in Sources */,
FA322D4B0CEF74B1001761B3 /* parse.c in Sources */,
FA322D4D0CEF74B1001761B3 /* resolve.c in Sources */,
FA322DBE0CEF7766001761B3 /* tool.c in Sources */,
FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */,
FA407F2E0DB159F400271AF1 /* ng_ipaddr.c in Sources */,
FAA3D27B0F139CDC00B2447E /* conn-ssl.c in Sources */,
FA85178C0FA061EC006A1F5A /* op.c in Sources */,
FA99428C10E82A27007F27ED /* proc.c in Sources */,
FA2D564A11EA158B00D37A35 /* pam.c in Sources */,
FAA97C57124A271400D5BBA9 /* sighandlers.c in Sources */,
FAACD5F514A6099C006ED74F /* class.c in Sources */,
FAD5853215271AAB00328741 /* client-cap.c in Sources */,
FAD5853515271AB800328741 /* irc-cap.c in Sources */,
FAD5853815272C2600328741 /* login.c in Sources */,
FA6BBC631605F0AC0004247A /* conn-encoding.c in Sources */,
FA6BBC641605F0AC0004247A /* irc-encoding.c in Sources */,
FA4F165A164836B100DBD011 /* irc-metadata.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
1DEB928708733DD80010E9CD /* Default */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
GCC_WARN_MISSING_PARENTHESES = YES;
GCC_WARN_PEDANTIC = YES;
GCC_WARN_SHADOW = YES;
GCC_WARN_SIGN_COMPARE = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNKNOWN_PRAGMAS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_LABEL = YES;
GCC_WARN_UNUSED_PARAMETER = YES;
GCC_WARN_UNUSED_VALUE = YES;
INSTALL_PATH = /usr/local/bin;
PRODUCT_NAME = ngircd;
};
name = Default;
};
1DEB928B08733DD80010E9CD /* Default */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
CODE_SIGN_IDENTITY = "";
GCC_VERSION = "";
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
SDKROOT = "";
};
name = Default;
};
FAB0570C105D917F006AF9E2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
GCC_DEBUGGING_SYMBOLS = full;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_VERSION = "";
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = "";
};
name = Debug;
};
FAB0570D105D917F006AF9E2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
GCC_WARN_MISSING_PARENTHESES = YES;
GCC_WARN_PEDANTIC = YES;
GCC_WARN_SHADOW = YES;
GCC_WARN_SIGN_COMPARE = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_LABEL = YES;
GCC_WARN_UNUSED_PARAMETER = YES;
GCC_WARN_UNUSED_VALUE = YES;
INSTALL_PATH = /usr/local/bin;
PRODUCT_NAME = ngircd;
};
name = Debug;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "ngIRCd" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB928708733DD80010E9CD /* Default */,
FAB0570D105D917F006AF9E2 /* Debug */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Default;
};
1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ngIRCd" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB928B08733DD80010E9CD /* Default */,
FAB0570C105D917F006AF9E2 /* Debug */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Default;
};
/* End XCConfigurationList section */
};
rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
}

56
contrib/MacOSX/postinstall.sh Executable file
View File

@@ -0,0 +1,56 @@
#!/bin/sh
# ngIRCd Mac OS X postinstall/postupgrade script
LDPLIST="/Library/LaunchDaemons/de.barton.ngircd.plist"
if [ ! -e /etc/ngircd ]; then
echo "Creating symlink: /opt/ngircd/etc -> /etc/ngircd"
ln -s /opt/ngircd/etc /etc/ngircd || exit 1
else
echo "/etc/ngircd already exists. Don't create symlink."
fi
if [ ! -e /opt/ngircd/etc/ngircd.conf ]; then
echo "Creating default configuration: /opt/ngircd/etc/ngircd.conf"
cp /opt/ngircd/share/doc/ngircd/sample-ngircd.conf \
/opt/ngircd/etc/ngircd.conf || exit 1
else
echo "/opt/ngircd/etc/ngircd.conf exists. Don't copy sample file."
fi
chmod o-rwx /opt/ngircd/etc/ngircd.conf
if [ ! -e /opt/ngircd/etc/ngircd.pam ]; then
echo "Creating default PAM configuration: /opt/ngircd/etc/ngircd.pam"
echo "# PAM configuration for ngIRCd" >/opt/ngircd/etc/ngircd.pam
echo "" >>/opt/ngircd/etc/ngircd.pam
echo "auth required pam_permit.so" >>/opt/ngircd/etc/ngircd.pam
echo "#auth required pam_opendirectory.so" >>/opt/ngircd/etc/ngircd.pam
fi
chmod 644 /opt/ngircd/etc/ngircd.pam
if [ ! -e /etc/pam.d/ngircd ]; then
echo "Linkint /opt/ngircd/etc/ngircd.pam to /etc/pam.d/ngircd"
ln -s /opt/ngircd/etc/ngircd.pam /etc/pam.d/ngircd || exit 1
fi
if [ -f "$LDPLIST" ]; then
echo "Fixing ownership and permissions of LaunchDaemon script ..."
chown root:wheel "$LDPLIST" || exit 1
chmod 644 "$LDPLIST" || exit 1
fi
if [ -f /tmp/ngircd_needs_restart ]; then
echo "ngIRCd should be (re-)started ..."
if [ -r "$LDPLIST" ]; then
echo "LaunchDaemon script found, starting daemon ..."
launchctl load -w "$LDPLIST" || exit 1
echo "OK, LaunchDaemon script loaded successfully."
else
echo "LaunchDaemon script not installed. Can't start daemon."
fi
else
echo "Not loading LaunchDaemon script."
fi
rm -f /tmp/ngircd_needs_restart
# -eof-

25
contrib/MacOSX/preinstall.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/sh
# ngIRCd Mac OS X preinstall/preupgrade script
LDPLIST="/Library/LaunchDaemons/de.barton.ngircd.plist"
rm -f /tmp/ngircd_needs_restart || exit 1
if [ -r "$LDPLIST" ]; then
echo "LaunchDaemon script found, checking status ..."
launchctl list | fgrep "de.barton.ngIRCd" >/dev/null 2>&1
if [ $? -eq 0 ]; then
# ngIRCd is already running; stop it and touch a
# "stamp file" so that we know that we have to
# restart it after installation/upgrade.
echo "ngIRCd is already running; stop it ..."
launchctl unload "$LDPLIST" || exit 1
echo "Daemon has been stopped."
touch /tmp/ngircd_needs_restart || exit 1
else
echo "ngIRCd is not running."
fi
else
echo "LaunchDaemon script not found."
fi
# -eof-

27
contrib/Makefile.am Normal file
View File

@@ -0,0 +1,27 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2012 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
SUBDIRS = Debian MacOSX
EXTRA_DIST = README \
ngindent \
ngircd-bsd.sh \
ngIRCd-Logo.gif \
ngircd-redhat.init \
ngircd.service \
ngircd.spec \
platformtest.sh \
systrace.policy
maintainer-clean-local:
rm -f Makefile Makefile.in
# -eof-

34
contrib/README Normal file
View File

@@ -0,0 +1,34 @@
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.
-- Contributions --
Debian/
- Various files for building Debian GNU/Linux packages (".deb's").
MacOSX/
- Project files for XCode, the "project builder" of Apple Mac OS X.
ngindent
- Script to indent the code of ngIRCd in the "standard way".
ngircd-bsd.sh
- Start script for FreeBSD.
ngircd-redhat.init
- Start/stop script for RedHat-based distributions (like CentOS).
ngircd.spec
- RPM "spec" file.
platformtest.sh
- Build ngIRCd and output a "result line" suitable for doc/Platforms.txt.
systrace.policy
- Systrace policy file for OpenBSD (and probably NetBSD).

BIN
contrib/ngIRCd-Logo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

17
contrib/ngindent Executable file
View File

@@ -0,0 +1,17 @@
#/bin/sh
INDENTARGS="-kr -i8 -ts8 -l80 -c3 -cd41 -ss -ncs -psl"
# check if indent(1) is available
type indent >/dev/null 2>&1 && INDENT="indent"
type gindent >/dev/null 2>&1 && INDENT="gindent"
type gnuindent >/dev/null 2>&1 && INDENT="gnuindent"
if [ -z "$INDENT" ]; then
echo "Error: GNU \"indent\" not found!"
exit 1
fi
$INDENT -v $INDENTARGS $*
# -eof-

51
contrib/ngircd-bsd.sh Normal file
View File

@@ -0,0 +1,51 @@
#!/bin/sh
# PROVIDE: ngircd
# REQUIRE: NETWORKING SERVERS
# BEFORE: DAEMON
# KEYWORD: FreeBSD shutdown
# Add the following line to /etc/rc.conf to enable `ngircd':
#
#ngircd_enable="YES"
#
. "/etc/rc.subr"
name="ngircd"
rcvar=`set_rcvar`
command="/usr/local/sbin/ngircd"
command_args=""
load_rc_config "$name"
: ${ngircd_enable="NO"}
: ${ngircd_flags=""}
required_files="/usr/local/etc/$name.conf"
pidfile="${ngircd_pidfile:-/var/run/${name}/${name}.pid}"
if [ ! x"${ngircd_chrootdir}" = x ];then
# Mount a devfs in the chroot directory if needed
if [ ! -c ${ngircd_chrootdir}/dev/random \
-o ! -c ${ngircd_chrootdir}/dev/null ]; then
umount ${ngircd_chrootdir}/dev 2>/dev/null
mount_devfs devfs ${ngircd_chrootdir}/dev
fi
devfs -m ${ngircd_chrootdir}/dev rule apply hide
devfs -m ${ngircd_chrootdir}/dev rule apply path null unhide
devfs -m ${ngircd_chrootdir}/dev rule apply path random unhide
# Copy local timezone information if it is not up to date.
if [ -f /etc/localtime ]; then
cmp -s /etc/localtime "${named_chrootdir}/etc/localtime" || \
cp -p /etc/localtime "${named_chrootdir}/etc/localtime"
fi
pidfile="${ngircd_chrootdir}${pidfile}"
fi
run_rc_command "$1"
# -eof-

119
contrib/ngircd-redhat.init Normal file
View File

@@ -0,0 +1,119 @@
#!/bin/sh
#
# ngIRCd start and stop script for RedHat based distributions.
# Written by Naoya Nakazawa <naoya.n@gmail.com> for CentOS 5.2, 2009.
#
# chkconfig: 2345 01
# description: ngIRCd is an Open Source server for \
# the Internet Relay Chat (IRC), which \
# is developed and published under \
# the terms of the GNU General Public
# Licence (URL: http://www.gnu.org/licenses/gpl.html). \
# ngIRCd means "next generation IRC daemon", \
# it's written from scratch and not deduced from the \
# "grandfather of IRC daemons", the daemon of the IRCNet.
#
# processname: /usr/sbin/ngircd
# config: /etc/ngircd
# pidfile: /var/run/ngircd.pid
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/ngircd
NAME=ngIRCd
BASENAME=ngircd
CONF=/etc/$BASENAME.conf
DESC="IRC daemon"
PARAMS="-f $CONF"
# Source function library.
. /etc/init.d/functions
# Get config.
test -f /etc/sysconfig/network && . /etc/sysconfig/network
test -f /etc/sysconfig/makuosan && . /etc/sysconfig/makuosan
# Check that networking is up.
[ "${NETWORKING}" = "yes" ] || exit 0
[ -x $DAEMON ] || exit 1
[ -f $CONF ] || exit 2
RETVAL=0
start(){
echo -n $"Starting $NAME: "
daemon $DAEMON $PARAMS
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$BASENAME
echo
return $RETVAL
}
stop(){
echo -n $"Stopping $NAME: "
killproc $DAEMON
RETVAL=$?
if [ $RETVAL -eq 0 ] ; then
rm -f /var/lock/subsys/$BASENAME
fi
echo
return $RETVAL
}
reload(){
echo -n $"Reloading configuration: "
killproc $DAEMON -HUP
RETVAL=$?
echo
return $RETVAL
}
restart(){
stop
start
}
condrestart(){
[ -e /var/lock/subsys/$BASENAME ] && restart
return 0
}
check_config(){
$DAEMON $PARAMS --configtest >/dev/null 2>&1
[ $? -eq 0 ] && return 0
echo -n $"Configuration of $NAME is not valid, won't (re)start!"
echo -n $"Run \"$DAEMON --configtest\" and fix it up ..."
exit 6
}
# See how we were called.
case "$1" in
start)
check_config
start
;;
stop)
stop
;;
status)
status $NAME
;;
restart)
restart
;;
reload)
reload
;;
condrestart)
condrestart
;;
test)
check_config
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|test}"
RETVAL=1
esac
exit $RETVAL

11
contrib/ngircd.service Normal file
View File

@@ -0,0 +1,11 @@
[Unit]
Description=Next Generation IRC Daemon
After=network.target
[Service]
# don't daemonize to simplify stuff
ExecStart=/usr/sbin/ngircd -n
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

61
contrib/ngircd.spec Normal file
View File

@@ -0,0 +1,61 @@
%define name ngircd
%define version 20
%define release 1
%define prefix %{_prefix}
Summary: A lightweight daemon for the Internet Relay Chat (IRC)
Name: %{name}
Version: %{version}
Release: %{release}
License: GPLv2+
Group: System Environment/Daemons
URL: http://ngircd.barton.de/
Source: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: zlib-devel, openssl-devel
%description
This package provides ngIRCd, a portable and lightweight Internet Relay
Chat server for small or private networks, developed under the GNU
General Public License (GPL). It is simple to configure, can cope with
dynamic IP addresses, and supports IPv6 as well as SSL. It is written
from scratch and not based on the original IRCd.
Advantages:
- well arranged (lean) configuration file
- simple to build/install, configure and maintain
- supports IPv6 and SSL
- no problems with servers that have dynamic IP addresses
- freely available, modern, portable and tidy C-source
- ngIRCd is being actively developed since 11 years.
%prep
%setup -q
%build
%configure \
--with-zlib \
--with-openssl
make %{?_smp_mflags}
%install
[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT"
%makeinstall
(
cd "$RPM_BUILD_ROOT"
( cd usr/sbin; mv *-ngircd ngircd )
( cd usr/share/man/man5; mv *-ngircd.conf.5 ngircd.conf.5 )
( cd usr/share/man/man8; mv *-ngircd.8 ngircd.8 )
rm -fr usr/share/doc/ngircd
)
%clean
[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT"
%files
%defattr(755,root,root)
%doc AUTHORS COPYING ChangeLog INSTALL NEWS README doc/*
%config(noreplace) /etc
%{_prefix}/sbin
%{_mandir}/man5/ngircd.conf*
%{_mandir}/man8/ngircd.8*

164
contrib/platformtest.sh Executable file
View File

@@ -0,0 +1,164 @@
#!/bin/sh
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2011 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
# This script analyzes the build process of ngIRCd and generates output
# suitable for inclusion in doc/Platforms.txt -- please send reports
# to the ngIRCd mailing list: <ngircd-ml@ngircd.barton.de>.
NAME=`basename "$0"`
VERBOSE=
PLATFORM=
COMPILER="unknown"
VERSION="unknown"
DATE=`date "+%y-%m-%d"`
COMMENT=
R_CONFIGURE=
R_MAKE=
R_CHECK=
R_RUN=
[ -n "$MAKE" ] || MAKE="make"
export MAKE CC
while [ $# -gt 0 ]; do
case "$1" in
"-v")
VERBOSE=1
;;
*)
echo "Usage: $NAME [-v]"
exit 2
esac
shift
done
echo "$NAME: Checking ngIRCd base source directory ..."
grep "ngIRCd" ./ChangeLog >/dev/null 2>&1
if [ $? -ne 0 ]; then
grep "ngIRCd" ../ChangeLog >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "$NAME: ngIRCd base source directory not found!?"
exit 1
fi
cd ..
fi
echo "$NAME: Checking for \"./configure\" script ..."
if [ ! -e ./configure ]; then
echo "$NAME: Running \"./autogen.sh\" ..."
[ -n "$VERBOSE" ] && ./autogen.sh || ./autogen.sh >/dev/null
fi
if [ -r ./configure ]; then
echo "$NAME: Running \"./configure\" script ..."
[ -n "$VERBOSE" ] && ./configure || ./configure >/dev/null
if [ $? -eq 0 -a -r ./Makefile ]; then
R_CONFIGURE=1
echo "$NAME: Running \"$MAKE\" ..."
[ -n "$VERBOSE" ] && "$MAKE" || "$MAKE" >/dev/null
if [ $? -eq 0 -a -x src/ngircd/ngircd ]; then
R_MAKE=1
echo "$NAME: Running \"$MAKE check\" ..."
[ -n "$VERBOSE" ] && "$MAKE" check || "$MAKE" check >/dev/null
if [ $? -eq 0 ]; then
R_CHECK=1
R_RUN=$R_CHECK
else
./src/ngircd/ngircd --help 2>/dev/null \
| grep "^ngIRCd" >/dev/null
[ $? -eq 0 ] && R_RUN=1
fi
fi
fi
fi
# Get target platform information
if [ -r "src/config.h" ]; then
CPU=`grep "HOST_CPU" "src/config.h" | cut -d'"' -f2`
OS=`grep "HOST_OS" "src/config.h" | cut -d'"' -f2`
VENDOR=`grep "HOST_VENDOR" "src/config.h" | cut -d'"' -f2`
PLATFORM="$CPU/$VENDOR/$OS"
fi
if [ -z "$PLATFORM" ]; then
PLATFORM="`uname 2>/dev/null` `uname -r 2>/dev/null`, `uname -m 2>/dev/null`"
fi
# Get compiler information
if [ -r "Makefile" ]; then
CC=$(grep "^CC = " Makefile | cut -d' ' -f3)
$CC --version 2>&1 | grep -i "GCC" >/dev/null
if [ $? -eq 0 ]; then
$CC --version 2>&1 | grep -i "Open64" >/dev/null
if [ $? -eq 0 ]; then
COMPILER="Open64"
else
COMPILER=$($CC --version | head -1 \
| cut -d')' -f2 | cut -d' ' -f2)
COMPILER="gcc $COMPILER"
fi
else
case "$CC" in
gcc*)
v="`$CC --version 2>/dev/null | head -1`"
[ -n "$v" ] && COMPILER="gcc $v"
;;
esac
fi
fi
# Get ngIRCd version information
eval $(grep "^VERSION = " Makefile | sed -e 's/ //g')
case "$VERSION" in
*-*-*)
VERSION=`echo "$VERSION" | cut -d'-' -f3 | cut -b2-`
;;
esac
[ -n "$VERSION" ] || VERSION="unknown"
# Get IO interface information
if [ "$OS" = "linux-gnu" ]; then
COMMENT="(1)"
else
grep "^#define HAVE_SYS_DEVPOLL_H 1" src/config.h >/dev/null 2>&1
[ $? -eq 0 ] && COMMENT="(4)"
grep "^#define HAVE_EPOLL_CREATE 1" src/config.h >/dev/null 2>&1
[ $? -eq 0 ] && COMMENT="(5)"
grep "^#define HAVE_KQUEUE 1" src/config.h >/dev/null 2>&1
[ $? -eq 0 ] && COMMENT="(3)"
fi
[ -n "$R_CONFIGURE" ] && C="Y" || C="N"
[ -n "$R_MAKE" ] && M="Y" || M="N"
[ -n "$R_CHECK" ] && T="Y" || T="N"
[ -n "$R_RUN" ] && R="Y" || R="N"
[ -n "$COMMENT" ] && COMMENT=" $COMMENT"
echo
echo " the executable works (\"runs\") as expected --+"
echo " tests run successfully (\"make check\") --+ |"
echo " ngIRCd compiles (\"make\") --+ | |"
echo " ./configure works --+ | | |"
echo " | | | |"
echo "Platform Compiler ngIRCd Date Tester C M T R See"
echo "--------------------------- ------------ ---------- -------- ------ - - - - ---"
type printf >/dev/null 2>&1
if [ $? -eq 0 ]; then
printf "%-27s %-12s %-10s %s %-6s %s %s %s %s%s" \
"$PLATFORM" "$COMPILER" "$VERSION" "$DATE" "$USER" \
"$C" "$M" "$T" "$R" "$COMMENT"
else
echo "$PLATFORM $COMPILER $VERSION $DATE $USER" \
"$C" "$M" "$T" "$R" "$COMMENT"
fi
echo; echo

77
contrib/systrace.policy Normal file
View File

@@ -0,0 +1,77 @@
#
# Sample systrace policy for ngIRCd on OpenBSD
# Author: Benjamin Pineau <ben@zouh.org>
#
# $Id: systrace.policy,v 1.1 2004/04/28 12:16:59 alex Exp $
#
# Tune me, put me in /etc/systrace/usr_local_bin_ngircd and start ngIRCd
# (with root privileges) as:
#
# systrace -a /usr/local/bin/ngircd
#
# I didn't tried this on NetBSD, but it should work as is.
#
# On systems with pf, it can be supplemented by strict firewall rules:
# for a ngircd running as '$ircuser', binding on '$ircport' and accepting
# 30 connections:
#
# block out log quick proto tcp from any port $ircport to any \
# user != $ircuser
# pass in inet proto tcp from any to any port $ircport user $ircuser \
# keep state (max 30) flags S/SA
#
Policy: /usr/local/bin/ngircd, Emulation: native
native-__sysctl: permit
native-fsread: filename eq "/etc/malloc.conf" then permit
native-fsread: filename sub "/usr/share/zoneinfo/" then permit
native-fsread: filename eq "/usr/local/etc/ngircd.conf" then permit
native-fsread: filename eq "/usr/local/etc/ngircd.motd" then permit
native-fsread: filename eq "/etc/ngircd.conf" then permit
native-fsread: filename eq "/etc/ngircd.motd" then permit
native-fsread: filename eq "/etc/spwd.db" then deny[eperm]
native-fsread: filename eq "/etc/group" then permit
native-fsread: filename eq "/etc/resolv.conf" then permit
native-fsread: filename eq "/etc/localtime" then permit
native-fsread: filename eq "/etc/hosts" then permit
native-fsread: filename sub "<non-existent filename>" then deny[enoent]
native-socket: sockdom eq "AF_UNIX" and socktype eq "SOCK_DGRAM" then permit
native-socket: sockdom eq "AF_INET" and socktype eq "SOCK_STREAM" then permit
native-bind: sockaddr match "inet-*:6667" then permit, if user != root
native-connect: sockaddr eq "/dev/log" then permit, if user != root
native-connect: sockaddr match "inet-*:53" then permit, if user != root
native-setsockopt: permit, if user != root
native-listen: permit, if user != root
native-accept: permit, if user != root
native-sendto: true then permit, if user != root
native-recvfrom: permit, if user != root
native-read: permit
native-pread: permit
native-write: permit, if user != root
native-mmap: permit
native-munmap: permit
native-mprotect: permit
native-break: permit
native-umask: permit
native-fork: permit
native-setsid: permit
native-chdir: permit
native-chroot: permit
native-setgid: gid neq "0" then permit
native-setuid: uid neq "0" and uname neq "root" then permit
native-getuid: permit
native-getgid: permit
native-gettimeofday: permit
native-getpid: permit
native-select: permit
native-fcntl: permit
native-fstat: permit
native-issetugid: permit
native-sigaction: permit
native-pipe: permit
native-sigreturn: permit
native-close: permit
native-exit: permit
native-fswrite: deny[eperm]
# -eof-

1
doc/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
sample-ngircd.conf

53
doc/Bopm.txt Normal file
View File

@@ -0,0 +1,53 @@
ngIRCd - Next Generation IRC Server
(c)2001-2010 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- BOPM.txt --
I. Introduction
~~~~~~~~~~~~~~~~
Citing <http://wiki.blitzed.org/BOPM>: "BOPM is an open source open proxy
monitor, designed for use with hybrid-based ircds, although it can be used
with slight modification on any server which has the ability to show connects
to opers and that supports KLINEs."
And starting with Release 17, ngIRCd supports all required log messages that
BOPM requires to be useful.
II. Installation
~~~~~~~~~~~~~~~~~
Install BOPM as usual, please see the BOPM documentation for details.
Afterwards adjust the following configuration parameters that are important
for ngIRCd:
a) BOPM "IRC" section:
1) Set "server" and "port" accordingly,
2) adjust the "oper" line to match an [Operator] block in ngircd.conf,
3) change "mode" to "+ci" or "+c".
4) Set "connregex" to the following string, everything in one line(!):
"\\*\\*\\* Notice -- Client connecting: ([^ ]+) \\(([^@]+)@([^\\)]+)\\) \\[([0-9\\.]+)\\].*";
and comment all the other "connregex" examples (prepend a "#" character).
5) Set "kline" to "KILL %n :Open proxy found on your host!"; for example,
and comment all the other "kline" examples.
b) BOPM "scanner" section:
Make sure you configure a valid "target_ip" and "target_port" for the
configured scanners to test. And please note that you CAN'T USE the port
of ngIRCd, because ngIRCd doesn't send any banner message by default!
So you need a service what sends a banner, so for example POP3, SMTP,
IMAP, or SSH daemons should work ...

View File

@@ -1,27 +0,0 @@
ngIRCd - Next Generation IRC Server
(c)2001,2002 by Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd ist freie Software und steht unter
der GNU General Public License.
-- CC-Speed.txt --
ngIRCd-0.2.1-pre (2002-02-25):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[nach make-Zeiten sortiert]
Intel PIII, 1 GHz, 256 MB Ram, FreeBSD 4.4: configure: 00:10, make: 00:05
Intel PIII, 1 GHz, 256 MB Ram, Linux 2.4.10: configure: 00:06, make: 00:06
Intel PIII, 1 GHz, 256 MB Ram, BeOS R5: configure: 00:19, make: 00:07
Intel PIII, 1 GHz, 256 MB Ram, Win2k+CygWin: configure: 00:27, make: 00:08
AMD K6/2, 400 Mhz, 256 MB Ram, Linux 2.4.12: configure: 00:14, make: 00:12
PowerMac G4, 400 Mhz, 768 MB Ram, Mac OS X 10.1.2: configure: 00:32, make: 00:19
Macintosh SE/30, 68030 16 MHz, 32 MB, A/UX 3.0.1: configure: 07:33, make: 12:02
--
$Id: CC-Speed.txt,v 1.1 2002/02/25 14:02:32 alex Exp $

View File

@@ -1,64 +0,0 @@
ngIRCd - Next Generation IRC Server
(c)2001,2002 by Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd ist freie Software und steht unter
der GNU General Public License.
-- CVS.txt --
Die Sourcen des ngIRCd werden mit dem "Concurrent Versions System" (CVS)
verwaltet. Somit koennen ohne Probleme mehrere Leute gleichzeitig die Sourcen
bearbeitet.
I. Anonymer "Nur-Lesen"-Zugang
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Anonymer Zugriff auf die CVS-Repository von ngIRCd ist im "nur-lesen"-Modus
moeglich. Dazu sind folgende Schritte noetig:
Beim CVS-Server anmelden
$ cvs -d:pserver:anonymous@arthur.ath.cx:/usr/local/CVS/ngircd login
Als Benutzername wird "anonymous" mit einem leeren Passwort verwendet.
Nun ein "Check-Out" der Quellcodes durchfuehren:
$ cvs -d:pserver:anonymous@arthur.ath.cx:/usr/local/CVS/ngircd checkout ngircd
Dadurch wird im aktuellen Verzeichnis der neue Ordner "ngircd" mit allen
Quell-Dateien des ngIRCd erzeugt.
Dieses ist der "Arbeitsordner", alle CVS-Befehle werden in Zukunft aus
diesem Ordner bzw. einem Unterordner davon ausgefuehrt.
Wichtig: wenn ngIRCd "frisch" aus dem CVS compiliert werden soll, so
existiert das configure-Script noch nicht. Dieses muss zunaechst mit dem
Script "autogen.sh" erzeugt werden. Letzteres setzt ein installiertes GNU
automake und GNU autoconf voraus!
CVS-Tree aktualisieren:
$ cvs update
Dieser Befehl aktualisiert alle Dateien im aktuellen Verzeichnis sowie allen
Unterverzeichnissen.
$ cvs update <filename>
So kann eine einzelne Datei aktualisiert werden (auch dann, wenn sie lokal
z.B. geloescht wurde -- praktisch, um eigene "Experimente" rueckgaengig zu
machen ;-))
III. Schreibzugriff
~~~~~~~~~~~~~~~~~~~
Wer Schreibzugriff auf die CVS-Repository wuenscht, der moege sich bitte
mit Alex Barton, <alex@barton.de> in Verbindung setzen.
--
$Id: CVS.txt,v 1.5 2002/02/15 15:15:22 alex Exp $

28
doc/Capabilities.txt Normal file
View File

@@ -0,0 +1,28 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- Capabilities.txt --
This document lists and describes the "IRC capabilities" that ngIRCd supports
and can be requested by a IRC/IRCv3 client that supports the "CAP" command.
ngIRCd implements the "IRC Client Capabilities Extension" as described here:
<http://www.leeh.co.uk/draft-mitchell-irc-capabilities-02.html>
I. Supported Capabilities
~~~~~~~~~~~~~~~~~~~~~~~~~
* "multi-prefix"
When requested, the multi-prefix client capability will cause the IRC
server to send all possible prefixes which apply to a user in NAMES and
WHO output.
See <http://ircv3.atheme.org/extensions/multi-prefix-3.1>.

54
doc/Contributing.txt Normal file
View File

@@ -0,0 +1,54 @@
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.
-- Contributing.txt --
If you want to contribute to ngIRCd, please read the following paragraphs to
get an idea of how to do it the best :-)
- Use GIT
The source code of ngIRCd is maintained using GIT, see doc/GIT.txt. So if
remotely possible, use GIT for your work, too. It makes your and our lifes
much easier ;-)
- Don't forget to include documentation
When adding features and new configuration options, don't forget to not
only code the features but to describe them in doc/sample-ngircd.conf,
man/ngircd.8.tmp and/or man/ngircd.conf.5.tmpl as well!
- Be present on IRC
If you intend to code some new features or do some code cleanups or better
documentation, please be present on <irc://irc.barton.de/#ngircd> and
discuss your plans early! So other developers have an idea on what others
are working on, can offer help, and can synchronize their own work.
- Check and validate your work!
Use "make check" to validate your work, and use "make distcheck" to
validate the resulting archives, especially when adding/removing files!
- Send patches in "unified diff" format
Please send patches in "unified" format, that is, use "diff -u".
Or even better: use GIT ("git diff"), see above.
- Send patches to the mailing list
If you have some code to present, send the patch(es) and/or pointers to
your GIT repository to the official ngIRCd mailing list for review, not
only to #ngircd: so it becomes archived and more people have a chance to
review your patch.
Sure it is a good idea to post some notes to #ngircd, too! :-)
And this is open source, your work must not be 100% finished and perfect,
work in progress is interesting, too: "release early, release often"!

View File

@@ -1,61 +1,104 @@
ngIRCd - Next Generation IRC Server
(c)2001,2002 by Alexander Barton,
(c)2001-2010 by Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd ist freie Software und steht unter
der GNU General Public License.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- FAQ: Frequently Asked Questions --
I. Allgemein
~~~~~~~~~~~~
Q: Kann der ngIRCd im Netz zusammen mit "normalen" Servern betrieben werden?
A: Ja. ngIRCd ist zum Original kompatibel, getestet wird dies zur Zeit mit
der Version 2.10.3p3 des ircd.
I. General
~~~~~~~~~~
Q: Gibt es eine Homepage mit Informationen und Downloads?
A: Ja. Die URL ist <http://arthur.ath.cx/~alex/ngircd/>.
Q: Is it possible to link the ngIRCd with non-ngIRCd servers?
A: Yes. ngIRCd is compatible to the original ircd used by IRCNet. Actually
this is being tested with version 2.10.3p3. Please note that newer
versions (2.11.x) aren't compatible any more!
Q: Is there a homepage with further information and downloads?
A: Yes. Please visit <http://ngircd.barton.de/>.
Q: Why should I use ngIRCd instead of the original one?
A: ngIRCd offers several benefits: no problems with dynamic IPs, easy to
configure, open source (GPL), under active development.
II. Compilieren
II. Compilation
~~~~~~~~~~~~~~~
Q: Ich habe die Sourcen von ngIRCd ueber CVS installiert. Nun kann ich
./configure nicht ausfuehren, da es nicht existiert!?
A: Bei Builds direkt aus dem CVS-Tree muss das configure-Script zunaechst
durch GNU autoconf sowie die Makefile.in's durch GNU automake generiert
werden. Um dies zu vereinfachen existiert das Script "./autogen.sh".
GNU automake und GNU autoconf werden -- im Gegensatz zu Builds aus den
Sourcen eines .tar.gz-Archivs -- hierbei benoetigt!
Q: ./autogen.sh bricht mit der Meldung "autoheader: command not found" ab.
A: GNU autoconf ist nicht installiert, wird jedoch bei Builds direkt aus
dem CVS-Tree benoetigt.
Q: I did a "CVS checkout" but can't execute ./configure because the script
is missing in the generated directory!?
A: When using development versions via CVS, the configure script as well as
the Makefile.in templates must be generated using GNU automake and GNU
autoconf. To simplify this task run the ./autogen.sh script which will
execute the required tools for you; then continue with executing the
./configure script as usual.
Q: ./autogen.sh bricht mit der Meldung "autoconf: Undefined macros:
AC_FUNC_MALLOC" bzw. "AC_CONFIG_SRCDIR" ab.
A: Auf dem System ist eine zu alte Version von GNU autoconf installiert.
Ein Update auf z.B. Version 2.52 loest dieses Problem (eine installiete
alte Version sollte ggf. zunaechst entfernt werden, bei RPM-Paketen z.B.
mit dem Befehl "rpm -e autoconf").
Q: The ./autogen.sh script complains "aclocal: command not found".
A: GNU automake is missing on your system but required for building CVS
versions of ngIRCd. Install GNU automake 1.6 or later and try again.
Q: The ./autogen.sh script stops with "autoheader: command not found".
A: GNU autoconf is missing on your system but required for building CVS
versions of ngIRCd. Install GNU autoconf 2.52 or later and try again.
Q: The ./autogen.sh script fails and the message "automake: configure.in:
AM_INIT_AUTOMAKE must be used" is displayed.
A: Most probably you are using version 1.5 of GNU automake which seems to be
incompatible to the build system of ngIRCd. Solution: upgrade to at least
version 1.6 of GNU automake.
(If you are using Debian 3.0 "Woody" you can try to downgrade to version
1.4 of GNU automake shipped with this distribution; it should work, too.)
III. Bugs!?
~~~~~~~~~~~
Q: Gibt es eine Liste der bekannten Bugs bzw. Feature-Wuensche?
A: Ja. Es existiert ein Bug-Tracking-System fuer den ngIRCd (Bugzilla):
URL: <http://arthur.ath.cx/bugzilla/ngircd/>. Dort koennen Bugs ge-
meldet und Feature-Wunsche kundgetan werden. Bekannte Bugs koennen in
der Datenbank gesucht und aufgelistet werden.
Einen Account zum Suchen und Melden von Bugs bzw. Feature-Wuenschen
kannst du dir dort selber anlegen.
III. Runtime
~~~~~~~~~~~~
Q: Was mache ich, wenn ich einen Bug gefunden habe?
A: Am besten traegst du ihn in das Bug-Tracking-System des ngIRCd ein:
URL: <http://arthur.ath.cx/bugzilla/ngircd/>
Q: Where is the log file located?
A: ngIRCd does not write its own log file. Instead, ngIRCd uses syslog(3).
Check the files in /var/log/ and/or consult the documentation for your
system logger daemon.
Q: I cannot connect to remote peers when I use the chroot option, the
following is logged: "Can't resolve example.com: unknown error!".
A: see next question blow ...
Q: When running ngIRCd inside a chroot, no IP addresses can be translated
in DNS names, errors like "Name or service not known" are logged.
A: On Linux/glibc with chroot enabled you need to put some libraries inside
the chroot as well, notably libnss_dns; maybe others. Unfortunately, even
linking ngIRCd statically does not help this. So you can either copy
all the required files into the chroot directory:
$ mkdir -p ./chroot/etc ./chroot/lib
$ cp -a /etc/hosts /etc/resolv.conf /etc/nsswitch.conf ./chroot/etc/
$ cp -a /lib/libresolv* /lib/libnss_* ./chroot/lib/
Or you can try to link ngIRCd against an other C library (like dietlibc)
that doesn't depend on NSS modules and/or these files.
Q: I have added an [Oper] section, how do i log on as IRC operator?
A: You can use the /OPER command in your IRC client to become an IRC operator.
ngIRCd will also log all OPER requests (using syslog), if OPER fails you
can look there to determine why it did not work (bad password, unauthorized
host mask, etc.)
Q: I am an IRC operator, but MODE doesn't work!
A: You need to set 'OperCanUseMode = yes' in ngircd.conf, then IRC operators
can use the MODE command for changing modes even when they are not joined
to the specific channel.
--
$Id: FAQ.txt,v 1.2 2002/02/19 20:05:02 alex Exp $
IV. Bugs!?
~~~~~~~~~~
Q: Is there a list of known bugs and desired feature enhancements?
A: Yes. Have a look at the bug tracking system (Bugzilla) for ngIRCd located
at <http://ngircd.barton.de/bugzilla/index.cgi>. There you can file bug
reports and feature requests as well as search the bug database.
Q: What should I do if I found a bug?
A: Please file a bug report at <http://ngircd.barton.de/bugzilla/index.cgi>!
The author of the particular component will be notified automagically :-)

65
doc/GIT.txt Normal file
View File

@@ -0,0 +1,65 @@
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>.

77
doc/HowToRelease.txt Normal file
View File

@@ -0,0 +1,77 @@
ngIRCd - Next Generation IRC Server
(c)2001-2010 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- HowToRelease.txt --
I. Introduction
~~~~~~~~~~~~~~~
Creating a new ngIRCd release requires a few steps to follow: the source
tree must be in a releasable state (be up to date, include all required
patches, be tested on as many platforms as possible), a name for the new
release must be chosen, and all the files describing the release must be
updated accordingly.
Since ngIRCd release 13 (2009-12-25) we use "simple" release numbers for
major releases (e.g. "13", "17", "42", ...) introducing new features and
sub-releases for bug fixes only (e.g. "14.1", "22.3", ...).
When creating pre-releases or release candidates, please use the tilde ("~")
character to separate the "postfix" in the release number (e.g. "17~rc2"
or "123.4~rc6").
The release/version number of a build is automatically generated using the
GIT "describe" command, see git-describe(1). Therefore it is required that
a new release is tagged in the GIT tree and that the configure script is
up-to-date (e.g. using ./autogen.sh) before generating the archives!
II. How to prepare a new ngIRCd release?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a) Make sure the source tree is in a releasable state ;-)
b) Make sure you have working versions of GNU autoconf and GNU automake
installed on the system you use for generating the release:
as of October 2010 we are using GNU autoconf 2.67 and GNU automake 1.11.1
which seem to work just fine.
c) Update the files describing the new release:
- ChangeLog
- NEWS
d) Update the version numbers in the following files:
- contrib/ngircd.spec
e) Generate a new Debian change log entry in the following file, e.g. using
the Debian "dch" tool of the "devscripts" package:
- contrib/Debian/changelog
f) Commit the above changes to GIT: "git add", "git commit"
g) Create a new signed GIT tag for the new release: "git tag -s".
Please note that we don't use the tilde ("~") here, instead use a simple
hyphen ("-") as delimiter: e.g. "rel-16" "rel-17-rc1", "rel-18-pre2", ...
h) Run "./autogen.sh" to update the ./configure script with the correct
release number (autogenerated using "git describe", see above).
i) Run "./configure" to rebuild all generated Makefiles.
j) Run "make distcheck" to generate the distribution archives.
k) Sign the distribution archive(s) using GnuPG: "gpg -b <archivefile>"
l) Upload and distribute the newly generated ngIRCd release archive(s)
and GnuPG signatures.
m) Write an announcement to the mailing list, freshmeat, Twitter, ...
n) Relax :-)

View File

@@ -1,27 +1,93 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors
#
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
# der GNU General Public License (GPL), wie von der Free Software Foundation
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
#
# $Id: Makefile.am,v 1.7 2002/03/30 15:33:14 alex Exp $
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
EXTRA_DIST = CC-Speed.txt CVS.txt FAQ.txt README-AUX.txt README-BeOS.txt \
RFC.txt sample-ngircd.conf
.tmpl:
$(AM_V_GEN)sed \
-e s@:ETCDIR:@${sysconfdir}@ \
<$< >$@
SUFFIXES = .tmpl
static_docs = \
Bopm.txt \
Capabilities.txt \
Contributing.txt \
FAQ.txt \
GIT.txt \
HowToRelease.txt \
Modes.txt \
PAM.txt \
Platforms.txt \
Protocol.txt \
README-AUX.txt \
README-BeOS.txt \
README-Interix.txt \
RFC.txt \
Services.txt \
SSL.txt
doc_templates = sample-ngircd.conf.tmpl
generated_docs = sample-ngircd.conf
toplevel_docs = ../AUTHORS ../COPYING ../ChangeLog ../INSTALL ../NEWS ../README
SUBDIRS = src
EXTRA_DIST = $(static_docs) $(doc_templates)
CLEANFILES = $(generated_docs)
maintainer-clean-local:
rm -f Makefile Makefile.in
install-data-hook:
all: $(generated_docs)
install-data-hook: $(static_docs) $(toplevel_docs) $(generated_docs)
$(mkinstalldirs) $(DESTDIR)$(sysconfdir)
if [ ! -f $(DESTDIR)$(sysconfdir)/ngircd.conf ]; then \
$(INSTALL) -m 600 -c $(srcdir)/sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf; \
fi
@if [ ! -f $(DESTDIR)$(sysconfdir)/ngircd.conf ]; then \
make install-config; \
fi
$(mkinstalldirs) $(DESTDIR)$(docdir)
for f in $(static_docs) $(toplevel_docs); do \
$(INSTALL) -m 644 -c $(srcdir)/$$f $(DESTDIR)$(docdir)/; \
done
for f in $(generated_docs); do \
$(INSTALL) -m 644 -c $$f $(DESTDIR)$(docdir)/; \
done
install-config:
$(INSTALL) -m 600 -c sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf
@echo; \
echo " ** NOTE: Installed sample configuration file:"; \
echo " ** \"$(DESTDIR)$(sysconfdir)/ngircd.conf\""; \
echo
uninstall-hook:
rm -rf $(DESTDIR)$(docdir)
@if cmp --silent sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf; then \
make uninstall-config; \
else \
echo; \
echo " ** NOTE: Not uninstalling changed configuration file:"; \
echo " ** \"$(DESTDIR)$(sysconfdir)/ngircd.conf\""; \
echo; \
fi
uninstall-config:
rm -f $(DESTDIR)$(sysconfdir)/ngircd.conf
srcdoc:
make -C src srcdoc
.PHONY: install-config uninstall-config srcdoc
# -eof-

88
doc/Modes.txt Normal file
View File

@@ -0,0 +1,88 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- Modes.txt --
This document lists the different user modes, channel modes, and channel
user modes that ngIRCd supports.
I. User Modes
~~~~~~~~~~~~~
User modes are attributes a user has in the network, regardless of the
channels he is using at the moment.
mode since description
a 0.3.0 User is away.
b 20 User blocks private messages and notices.
B 20 User is flagged as a "bot".
c 17 IRC operator wants to receive connect/disconnect NOTICEs.
C 19 Only users that share a channel are allowed to send messages.
i 0.0.1 User is "invisible".
o 0.0.1 User is IRC operator.
q 20 User is protected, can not be kicked from a channel.
r 0.0.1 User is restricted.
R (1) 19 User is registered (e.g. by NickServ).
s 0.4.0 User wants to receive server notices.
w 0.11.0 User wants to receive WALLOPS messages.
x 17 Hostname of this user is "cloaked".
II. Channel Modes
~~~~~~~~~~~~~~~~~
Channel modes are attributes of specific channels which are valid for all
users joined (or trying to join) to this channel. Some modes add and remove
users to lists (e.g. "invite list", "ban list"), others have parameters
(like "channel key"), most are simple flags (like "moderated").
mode since description
b 0.5.0 Add/remove a host mask to the ban list.
e 19 Add/remove a host mask to the exception list.
i 0.5.0 Channel is "invite only".
I 0.5.0 Add/remove a host mask to the invite list.
k 0.6.0 Channel has a "key" (a password).
l 0.6.0 Channel has a user limit.
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.
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.
r (1) 19 Channel is "registered" (e.g. by ChanServ).
R 19 Only registered users are allowed to join this channel.
s 0.9.0 Channel is "secret".
t 0.3.0 Only ChanOps are allowed to modify the channel topic.
V 20 Channel doesn't allow invites.
z 16 Only users connected via SSL are allowed to join the channel.
III. Channel User Modes
~~~~~~~~~~~~~~~~~~~~~~~
Channel user modes are attributes that a particular user has in a specific
channel of which he is a member.
mode since description
q 20 User is channel owner can only be set by a service, other
owner and irc op. Can promote other users to q, a, o, h, v.
a 20 User is channel admin and can promote other users to v, h, o
o 0.2.0 User is channel operator and can op/kick/... other members.
h 20 User is half op and can set channel modes imntvIbek and kick
voiced and normal users.
v 0.2.0 User is "voiced" and can speak even if channel is moderated.
Notes
~~~~~
(1) This mode is not set by ngIRCd itself but by services. ngIRCd handles
the mode transparently and possibly adjusts its behaviour.

36
doc/PAM.txt Normal file
View File

@@ -0,0 +1,36 @@
ngIRCd - Next Generation IRC Server
(c)2001-2010 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- PAM.txt --
ngIRCd can optionally be compiled to use PAM, the Pluggable Authentication
Modules library, for user authentication. When compiled with PAM support,
ngIRCd will authenticate all users connecting to the daemon using the
configured PAM modules in an asynchronous child process.
To enable PAM, you have to pass the command line parameter "--with-pam" to
the "configure" script. Please see the PAM documentation ("man 7 pam") for
details and information about configuring PAM and its individual modules.
A very simple -- and quite useless ;-) -- example would be:
/etc/pam.d/ngircd:
auth required pam_debug.so
Here the "pam_debug" module will be called each time a client connects to
the ngIRCd and has sent its PASS, NICK, and USER commands.
Please note ONE VERY IMPORTANT THING:
All the PAM modules are executed with the privileges of the user ngIRCd
is running as. Therefore a lot of PAM modules aren't working as expected,
because they need root privileges ("pam_unix", for example)!
Only PAM modules not(!) requiring root privileges (such as "pam_pgsql",
"pam_mysql", "pam_opendirectory" ...) can be used in conjunction with ngIRCd.

102
doc/Platforms.txt Normal file
View File

@@ -0,0 +1,102 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- Platforms.txt --
This file lists the status of all platforms on which the ngIRCd has been
tested. Included is the date and version of the last "official" test and
the name of the tester/maintainer.
If you successfully compiled and tested ngIRCd on a platform that isn't
listed here, please contact Alexander Barton, <alex@barton.de>, so that this
list can be updated. Thanks for your help!
the executable works ("runs") as expected --+
tests run successfully ("make check") --+ |
ngIRCd compiles ("make") --+ | |
./configure works --+ | | |
| | | |
Platform Compiler ngIRCd Date Tester C M T R See
--------------------------- ------------ ---------- -------- ------ - - - - ---
alpha/unknown/netbsd3.0 gcc 3.3.3 CVSHEAD 06-05-07 fw Y Y Y Y (3)
armv6l/unkn./linux-gnueabi gcc 4.4.5 19.1 12-06-04 goetz Y Y Y Y (5)
armv7l/unkn./linux-gnueabi gcc 4.4.3 19.1 12-04-29 goetz Y Y Y Y (5)
hppa/unknown/openbsd3.5 gcc 2.95.3 CVSHEAD 04-05-25 alex Y Y Y Y
hppa1.1/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
hppa2.0/unknown/linux-gnu gcc 3.3.5 13~rc1 08-12-02 alex Y Y Y Y
hppa2.0w-hp-hpux11.11 gcc 4.2.3 14.1 09-07-22 goetz Y Y Y Y
i386/apple/darwin9.7.0 gcc 4.0.1 14.1 09-08-04 alex Y Y Y Y (3)
i386/apple/darwin10.8.0 gcc 4.2.1 19 12-02-26 alex Y Y Y Y (3)
i386/apple/darwin11.3.0 gcc 4.2.1 19 12-02-26 alex Y Y Y Y (3)
i386/pc/solaris2.9 gcc 3.2.2 CVSHEAD 04-02-24 alex Y Y Y Y
i386/pc/solaris2.11 gcc 3.4.3 19 12-02-26 alex Y Y N Y (4)
i386/pc/solaris2.11 gcc 4.2.3 19.1 12-05-29 goetz Y Y Y Y (4)
i386/unknown/freebsd5.2.1 gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
i386/unknown/freebsd6.2 gcc 3.4.6 20~rc1 12-11-13 alex Y Y Y Y (3)
i386/unknown/freebsd7.3 gcc 4.2.1 20~rc1 12-11-13 alex Y Y Y Y (3)
i686/unknown/gnu0.3 gcc 4.4.5 19 12-02-29 alex Y Y Y Y
i686/unkn./kfreebsd7.2-gnu gcc 4.3.4 15 09-12-02 alex Y Y Y Y (3)
i386/unknown/netbsdelf1.6.2 gcc 2.95.3 18 11-07-10 goetz Y Y Y Y
i386/unknown/netbsdelf3.0.1 gcc 3.3.3 0.10.0-p1 06-08-30 alex Y Y Y Y (3)
i386/unknown/netbsdelf4.0 gcc 4.1.2 19 12-02-29 alex Y Y Y Y (3)
i386/unknown/netbsdelf5.0.2 gcc 4.1.3 19 12-02-26 alex Y Y Y Y (3)
i386/unknown/openbsd3.9 gcc 3.3.5 0.10.0-p1 06-08-30 alex Y Y Y Y (3)
i386/unknown/openbsd4.1 gcc 3.3.5 16 10-04-11 alex Y Y Y Y (3)
i586/pc/haiku gcc 2.95.3 19.2~138 12-10-11 user Y Y N N
i586/pc/interix3.5 gcc 3.3 19 12-02-29 alex Y Y N Y
i686/pc/cygwin gcc 3.3.1 0.8.0 04-05-30 alex Y Y N Y
i686/pc/linux-gnu gcc 2.7.2 19.1 12-05-30 goetz Y Y Y Y (1)
i686/pc/linux-gnu gcc 2.95.4 0.8.0 04-05-30 alex Y Y Y Y (1)
i686/pc/linux-gnu gcc 3.3.5 14.1 09-08-04 alex Y Y Y Y (1)
i386/pc/linux-gnu gcc 4.1.2 13~rc1 08-12-05 alex Y Y Y Y (1)
i686/pc/linux-gnu gcc 4.3.2 14.1 09-08-04 alex Y Y Y Y (1)
m68k/apple/aux3.0.1 gcc 2.7.2 17 10-11-07 alex Y Y N Y
m68k/apple/aux3.0.1 Orig. A/UX 17 10-11-07 alex Y Y N Y (2)
m68k/apple/aux3.1.1 gcc 2.7.2 19 12-02-26 alex Y Y N Y
m68k/apple/aux3.1.1 Orig. A/UX 19 12-02-26 alex Y Y N Y (2)
m68k/hp/hp-ux9.10 Orig. HPUX 0.7.x-CVS 03-04-30 goetz Y Y Y Y
m88k/dg/dgux5.4R3.10 gcc 2.5.8 CVSHEAD 04-03-15 alex Y Y ? ?
mipsel/unknown/linux-gnu gcc 4.1.2 18 11-07-05 goetz Y Y N Y (1)
mipsel/unknown/linux-gnu gcc 4.4.5 18 11-07-30 goetz Y Y Y Y (1)
powerpc/apple/darwin6.5 gcc 3.1 0.7.x-CVS 03-04-23 alex Y Y Y Y
powerpc/apple/darwin7.9.0 gcc 3.3 19.1 12-05-22 goetz Y Y Y Y (3)
powerpc/apple/darwin8.11.0 gcc 4.0.1 18 11-07-02 goetz Y Y Y Y (3)
powerpc/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
powerpc/unknown/openbsd3.6 gcc 2.95.3 0.10.0 06-10-08 alex Y Y N Y
sparc/sun/solaris2.6 gcc 2.95.3 0.7.x-CVS 03-04-22 alex Y Y Y Y
sparc/sun/solaris2.7 gcc 3.3 0.8.0 04-05-30 alex Y Y Y Y
sparc/unkn./netbsdelf1.6.1 gcc 2.95.3 0.8.0 04-05-30 alex Y Y Y Y
x86_64/apple/darwin12.2.0 gcc 4.2.1 20~rc1 12-11-13 alex Y Y Y Y (3)
x86_64/unknown/freebsd8.1 gcc 4.2.1 20~rc1 12-11-13 alex Y Y Y Y (3)
x86_64/unkn./freebsd8.1-gnu gcc 4.4.5 19 12-02-26 alex Y Y Y Y (3)
x86_64/unknown/linux-gnu gcc 4.4.5 20~rc1 12-02-26 alex Y Y Y Y (1)
x86_64/unknown/openbsd4.7 gcc 3.3.5 20~rc1 12-02-26 alex Y Y Y Y (3)
x86_64/unknown/openbsd4.8 gcc 4.2.1 20~rc1 12-11-13 alex Y Y Y Y (3)
Notes
~~~~~
(1) */*/linux-gnu (Linux platforms):
ngIRCd has been tested with various Linux distributions, such as SuSE,
RedHat, Debian, and Gentoo using Kernels 2.2.x, 2.4.x and 2.6.x with
various versions of the GNU C compiler (starting with 2.95.x and up to
version 4.3.x). The eldest glibc used was glibc-2.0.7. ngIRCd compiled
and run on all these systems without problems.
Actual Linux kernels (2.6.x) and glibc's support the epoll() IO interface.
(2) This compiler is an pre-ANSI C compiler, therefore the source code is
automatically converted using the included ansi2knr tool while building.
(3) Using the kqueue() IO interface.
(4) Using the /dev/poll IO interface.
(5) Using the epoll() IO interface.

254
doc/Protocol.txt Normal file
View File

@@ -0,0 +1,254 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- Protocol.txt --
I. Compatibility
~~~~~~~~~~~~~~~~
The ngIRCd implements the Internet Relay Chat (IRC) protocol version 2.10
as defined in RFC ("request for comment") 1459 and 2810-2813. These (and
probably further relevant RFCs) are listed in doc/RFC.txt.
Unfortunately, even the "original" ircd doesn't follow these specifications
in all details. But because the ngIRCd should be a fully compatible
replacement for this server ("ircd") it tries to emulate these differences.
If you don't like this behavior please ./configure the ngIRCd using the
"--enable-strict-rfc" command line option. But keep in mind: not all IRC
clients are compatible with a server configured that way, some can't even
connect at all! Therefore this option usually isn't desired for "normal
server operation".
II. The IRC+ Protocol
~~~~~~~~~~~~~~~~~~~~~
Starting with version 0.5.0, the ngIRCd extends the original IRC protocol
as defined in RFC 2810-2813. This enhanced protocol is named "IRC+". It is
backwards compatible to the "plain" IRC protocol and will only be used by
the ngIRCd if it detects that the peer supports it as well.
The "PASS" command is used to detect the protocol and peer versions see
RFC 2813 (section 4.1.1) and below.
II.1 Register new server link
Command: PASS
Parameters: <password> <version> <flags> [<options>]
Used by: servers only (with these parameters)
<password> is the password for this new server link as defined in the server
configuration which is sent to the peer or received from it.
<version> consists of two parts and is at least 4, at most 14 characters
long: the first four bytes contain the IRC protocol version number, whereas
the first two bytes represent the major version, the last two bytes the
minor version (the string "0210" indicates version 2.10, e.g.).
The following optional(!) 10 bytes contain an implementation-dependent
version number. Servers supporting the IRC+ protocol as defined in this
document provide the string "-IRC+" here.
Example for <version>: "0210-IRC+".
<flags> consists of two parts separated with the character "|" and is at
most 100 bytes long. The first part contains the name of the implementation
(ngIRCd sets this to "ngircd", the original ircd to "IRC", e.g.). The second
part is implementation-dependent and should only be parsed if the peer
supports the IRC+ protocol as well. In this case the following syntax is
used: "<serverversion>[:<serverflags>]".
<serverversion> is an ASCII representation of the clear-text server version
number, <serverflags> indicates the supported IRC+ protocol extensions (and
may be empty!).
The following <serverflags> are defined at the moment:
- C: The server supports the CHANINFO command.
- L: INVITE- and BAN-lists should be synchronized between servers: if the
peer understands this flag, it will send "MODE +I" and "MODE +b"
commands after the server link has been established.
- H: The server supports the "enhanced server handshake", see section II.2
for a detailed description.
- M: Changing client "metadata" (hostname, real name, ...) using the
METADATA command is supported.
- o: IRC operators are allowed to change channel- and channel-user-modes
even if they aren't channel-operator of the affected channel.
- S: The server supports the SERVICE command (on this link).
- X: Server supports XOP channel modes (owner, admin, halfop) and supports
these user prefixes in CHANINFO commands, for example.
- Z: Compressed server links are supported by the server.
Example for a complete <flags> string: "ngircd|0.7.5:CZ".
The optional parameter <options> is used to propagate server options as
defined in RFC 2813, section 4.1.1.
II.2 Enhanced Server Handshake
The "enhanced server handshake" is used when both servers support this IRC+
extension, which is indicated by the 'H' flag in the <serverflags> sent with
the PASS command, see section II.1.
It basically means, that after exchanging the PASS and SERVER commands the
server is not registered in the network (as usual), but that IRC numerics
are exchanged until the numeric 376 (ENDOFMOTD) is received. Afterwards the
peer is registered in the network as with the regular IRC protocol.
A server implementing the enhanced server handshake (and indicating this
using 'H' in the <serverflags>) MUST ignore all unknown numerics to it
silently.
In addition, such a server should at least send the numeric 005 (ISUPPORT)
to its peer, containing the following information. Syntax: <key>=<value>,
one token per IRC parameter. If the server has to send more than 12 token
it must send separate ISUPPORT numerics (this is a limitation of the IRC
protocol which allows at max 15 arguments per command).
- NICKLEN: Maximum nickname length. Default: 9.
- CASEMAPPING: Case mapping used for nick- and channel name comparing.
Default: "ascii", the chars [a-z] are lowercase of [A-Z].
- PREFIX: List of channel modes a person can get and the respective prefix
a channel or nickname will get in case the person has it. The order of the
modes goes from most powerful to least powerful. Default: "(ov)@+"
- CHANTYPES: Supported channel prefixes. Default: "#".
- CHANMODES: List of channel modes for 4 types, separated by comma (","):
Mode that adds or removes a nick or address to a list, mode that changes
a setting (both have always has a parameter), mode that changes a setting
and only has a parameter when set, and mode that changes a setting and
never has a parameter. For example "bI,k,l,imnPst".
- CHANLIMIT: Maximum number of channels allowed to join by channel prefix,
for example "#:10".
Please see <http://www.irc.org/tech_docs/005.html> for details.
The information exchanged using ISUPPORT can be used to detect configuration
incompatibilities (different maximum nickname length, for example) and
therefore to disconnect the peer prior to registering it in the network.
II.3 Exchange channel-modes, topics, and persistent channels
Command: CHANINFO
Parameters: <channel> +<modes> [[<key> <limit>] <topic>]
Used by: servers only
CHANINFO is used by servers to inform each other about a channel: its
modes, channel key, user limits and its topic. The parameter combination
<key> and <limit> is optional, as well as the <topic> parameter, so that
there are three possible forms of this command:
CHANINFO <channel> +<modes>
CHANINFO <channel> +<modes> <topic>
CHANINFO <channel> +<modes> <key> <limit> <topic>
If the channel already exists on the server receiving the CHANINFO command,
it only adopts the <modes> (or the <topic>) if there are no modes (or topic)
already set. It there are already values set the server ignores the
corresponding parameter.
If the channel doesn't exists at all it will be created.
The parameter <key> must be ignored if a channel has no key (the parameter
<modes> doesn't list the "k" channel mode). In this case <key> should
contain "*" because the parameter <key> is required by the CHANINFO syntax
and therefore can't be omitted. The parameter <limit> must be ignored when
a channel has no user limit (the parameter <modes> doesn't list the "l"
channel mode). In this case <limit> should be "0".
II.4 Update webchat/proxy client information
Command: WEBIRC
Parameters: <password> <username> <hostname> <ip-address>
Used by: unregistered clients only
The WEBIRC command is used by some Web-to-IRC gateways to set the correct
user name and host name of users instead of their own. It must be the very
first command sent to the server, even before USER and NICK commands!
The <password> must be set in the server configuration file to prevent
unauthorized clients to fake their identity; it is an arbitrary string.
II.5 Client character encoding conversion
Command: CHARCONV
Parameters: <client-charset>
Used by: registered clients
Replies: RPL_IP_CHARCONV, ERR_IP_CHARCONV
A client can set its character set encoding using the CHARCONV command:
after receiving such a command, the server translates all message data
received from the client using the set <client-charset> to the server
encoding (UTF-8), and all message data which is to be sent to the client
from the server encoding (UTF-8) to <client-charset>.
The list of supported client character sets is implementation dependent.
If a client sets its <client-charset> to the server encoding (UTF-8),
it disables all conversions; the connection behaves as if no CHARCONV
command has been sent at all in this session.
II.6 Update client "metadata"
Command: METADATA
Parameters: <target> <key> <value>
Used by: servers only
The METADATA command is used on server-links to update "metadata" information
of clients, like the hostname, the info text ("real name"), or the user name.
The server updates its client database according to the received <key> and
<value> parameters, and passes the METADATA command on to all the other
servers in the network that support this command (see section II.1 "Register
new server link", <serverflag> "M"), even if it doesn't support the given
<key> itself: unknown <key> names are ignored silently!
The following <key> names are defined:
- "host": the hostname of a client (can't be empty)
- "cloakhost": the cloaked hostname of a client
- "info": info text ("real name") of a client
- "user": the user name of a client (can't be empty)
III. Numerics used by IRC+ Protocol
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The IRC+ protocol uses numerics in the range 800-899 which aren't used by
RFC 2812 and hopefully don't clash with other implementations ...
Numerics 800-849 are used for status and success messages, and numerics
850-899 are failure and error messages.
III.1 IRC+ status and success numerics
801 - RPL_IP_CHARCONV
%1 :Client encoding set"
%1 client character set
III.2 IRC+ failure and error numerics
851 - ERR_IP_CHARCONV
:Can't initialize client encoding

View File

@@ -1,47 +1,67 @@
ngIRCd - Next Generation IRC Server
ngIRCd - Next Generation IRC Server
(c)2001,2002 by Alexander Barton,
alex@barton.de, http://www.barton.de/
(c)2001-2005 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd ist freie Software und steht unter
der GNU General Public License.
-- README-AUX.txt --
ngIRCd is free software and published under the
terms of the GNU General Public License.
Seit Version 0.2.2-pre gehoert Apple A/UX zu den offiziell unterstuetzten
Platformen. Er ist im vollen Funktionsumfang nutzbar.
Folgende Software wird jedoch benoetigt:
- GNU C Compiler (gcc)
Bezugsquellen:
http://www.rezepte-im-web.de/appleux/gcc281.tar.gz
ftp://arthur.ath.cx/pub/AUX/Software/Development/gcc281.tar.gz
- GNU make
Bezugsquellen:
http://www.rezepte-im-web.de/appleux/make-3.79.tar.gz
ftp://arthur.ath.cx/pub/AUX/Software/Development/make-3.79.tar.gz
- GNU sed
Bezugsquellen:
http://www.rezepte-im-web.de/appleux/sed-3.02.tar.gz
ftp://arthur.ath.cx/pub/AUX/Software/Tools/sed-3.02.tar.gz
- libUTIL.a
Bezugsquellen:
http://ftp.mayn.de/pub/apple/apple_unix/Sys_stuff/libUTIL-2.1.tar.gz
ftp://arthur.ath.cx/pub/AUX/Software/Libraries/libUTIL-2.1.tar.gz
Nachdem diese Pakete entsprechend installiert sind, reicht ein ganz normales
"./configure" und "make" aus, um den ngIRCd unter A/UX zu compilieren.
-- README-AUX.txt --
Hier die Zeiten von Alex System (Macintosh SE/30, 32 MB, A/UX 3.0.1):
configure: 7:33, make: 12:02
Since version 0.2.2-pre Apple's A/UX belongs to the officially supported
platforms. It is not restricted in any way.
Since version 0.5.0 ngIRCd's source compiles with the native A/UX c
compiler. GNU C isn't a must-have anymore.
The following software packages are needed:
- GNU sed
Source:
http://www.rezepte-im-web.de/appleux/sed-3.02.tar.gz
ftp://arthur.barton.de/pub/unix/aux/tools/sed-3.02.tar.gz
A/UX comes with /bin/sed which isn't supporting all functions needed
by GNU automake/autoconf.
Warning: When installing GNU sed please make sure that A/UX doesn't
use the old one anymore which means set the $PATH or replace /bin/sed
at all.
- libUTIL.a
Source:
ftp://ftp.mayn.de/pub/really_old_stuff/apple/apple_unix/Sys_stuff/libUTIL-2.1.tar.gz>
ftp://arthur.barton.de/pub/unix/aux/libraries/libUTIL-2.1.tar.gz
This library contains functions that are common on other UNIX
systems but not on A/UX e.g. memmove(), strerror() and strdup().
After installation of these packages just do a "./configure" and "make" to
compile ngIRCd on A/UX.
A few hints in case of errors:
- Either there's an 'install' on your system which is completely broken
(so 'configure' uses its own shell script) or use a fully functionable one.
There's at least one binary "out there" causing problems. The one
of the GNU fileutils works fine:
ftp://arthur.barton.de/pub/unix/aux/tools/fileutils-4.0.tar.gz
- The precompiled binary of the old 'bash' shouldn't be installed within
/bin (better do this in /usr/local/bin) because 'configure' would
choose it as its shell which wouldn't work.
- Because of limitations of /bin/sh on A/UX it can't be used to create
the 'config.status' script. Better rename /bin/sh to /bin/sh.AUX and
replace it by a symbolic link to /bin/ksh (ln -s /bin/ksh /bin/sh as
root).
These procedure shouldn't cause you into problems and is recommended
even if you don't use ngIRCd.
--
$Id: README-AUX.txt,v 1.1 2002/02/25 14:02:32 alex Exp $
$Id: README-AUX.txt,v 1.10 2006/07/23 12:19:57 alex Exp $

View File

@@ -1,15 +1,21 @@
ngIRCd - Next Generation IRC Server
(c)2001,2002 by Alexander Barton,
(c)2001-2003 by Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd ist freie Software und steht unter
der GNU General Public License.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- README-BeOS.txt --
+-------------------------------------------------------------+
| This text is only available in german at the moment, sorry! |
| Contributors for this text or the BeOS port are welcome :-) |
+-------------------------------------------------------------+
BeOS gehoert im Moment (noch?) nicht zu den offiziell unterstuetzten Plat-
formen: der ngIRCd enthaelt zwar bereits einige Anpassungen an BeOS und
compiliert auch, jedoch bricht er bei jedem Connect-Versuch eines Clients
@@ -18,11 +24,11 @@ mit diesem Fehler ab:
select(): Bad file descriptor!
Es sieht leider so aus, als ob das select() von BeOS nicht mit File-Handles
von Pipes verschiedener Prozesse umgehen kann: sobald der Resolver asyncron
von Pipes verschiedener Prozesse umgehen kann: sobald der Resolver asynchron
gestartet wird, also Pipe-Handles im select() vorhanden sind, fuehrt das zu
obiger Meldung.
Theoretische "L<EFBFBD>sung"/Workaround:
Theoretische "Loesung"/Workaround:
Den Resolver unter BeOS nicht verwenden, sondern mit IP-Adressen arbeiten.
Nachteil: der ngIRCd koennte sich nicht zu Servern verbinden, die dynamische
Adressen benutzen -- dazu muesste er den Namen aufloesen. Ansonsten sollte
@@ -32,5 +38,16 @@ Also: wenn es jemand implementieren will ... ;-))
Vielleicht mache ich es auch irgendwann mal selber. Mal sehen.
2002-05-19:
Ich habe gerade damit ein wenig gespielt und den Source hier so geaendert,
dass unter BeOS keine Resolver-Subprozesse mehr erzeugt werden, sondern mit
den "rohen" IP-Adressen gearbeitet wird. Das funktioniert so weit auch,
allerdings verschluckt sich BeOS nun bei anderen Funktionen, so zum Beispiel
bei close(), wenn ein Socket eines Clients geschlossen werden soll!?
Sehr komisch.
Wer Interesse daran hat, das weiter zu verfolgen, der moege sich bitte mit
mir in Verbindung setzen (alex@barton.de), ich maile gerne meine Patches zu.
Fuer eine Aenderung im CVS ist es aber meiner Meinung nach noch zu frueh ...
--
$Id: README-BeOS.txt,v 1.1 2002/02/25 14:02:32 alex Exp $
$Id: README-BeOS.txt,v 1.7 2003/05/15 21:47:57 alex Exp $

44
doc/README-Interix.txt Normal file
View File

@@ -0,0 +1,44 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- README-Interix.txt --
ngIRCd release 15 has successfully been tested on Microsoft Windows XP
Professional using the Services for UNIX (SFU) version 3.5 and Microsoft
Windows 7 with the bundled Subsystem for UNIX Applications (SUA).
SFU are supported on Windows 2000, Windows 2000 Server, Windows XP, and
Windows Server 2003. SUA is supported on Windows Server 2003 R2, Windows
Server 2008 & 2008 R2, Windows Vista, and Windows 7 -- so ngIRCd should be
able to run on all of these platforms.
But please note that two things:
1. Don't use the poll() IO API
The poll() API function is not fully implemented by SFU/SUA and therefore
can't be used by ngIRCd -- which normally would be the default. Please see
<http://www.suacommunity.com/faqs.aspx> section 4.25 for details:
"If you do try to use the poll() API your program will block on the
API call forever. You must direct your program to build using the
select() API."
So when running the ./configure script, you HAVE TO DISABLE poll() support:
./configure --without-poll
ngIRCd then defaults to using the select() API function which works fine.
2. Use GNU make(1)
Starting with ngIRCd 18, our build system doesn't work with the default
make(1) binary of Interix, you should use GNU make instead (tested with
version 3.82 built from source).

View File

@@ -1,16 +1,17 @@
ngIRCd - Next Generation IRC Server
(c)2001,2002 by Alexander Barton,
(c)2001-2003 by Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd ist freie Software und steht unter
der GNU General Public License.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- RFC.txt --
Das IRC-Protokoll ist in diesen RFC's (Request For Comments) dokumentiert:
The Internet Relay Chat (IRC) protocol is documented in these Request for
Comments (RFC), which you can get e.g. via <http://www.faqs.org/>:
1459 Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol",
May 1993, [IRC].
@@ -29,4 +30,4 @@ Das IRC-Protokoll ist in diesen RFC's (Request For Comments) dokumentiert:
--
$Id: RFC.txt,v 1.4 2002/01/23 18:20:04 alex Exp $
$Id: RFC.txt,v 1.6 2003/03/07 20:42:20 alex Exp $

108
doc/SSL.txt Normal file
View File

@@ -0,0 +1,108 @@
ngIRCd - Next Generation IRC Server
(c)2001-2008 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- SSL.txt --
ngIRCd supports SSL/TLSv1 encrypted connections using the OpenSSL or GnuTLS
libraries. Both encrypted server-server links as well as client-server links
are supported.
SSL is a compile-time option which is disabled by default. Use one of these
options of the ./configure script to enable it:
--with-openssl enable SSL support using OpenSSL
--with-gnutls enable SSL support using GnuTLS
You also need a key/certificate, see below for how to create a self-signed one.
From a feature point of view, ngIRCds support for both libraries is
comparable. The only major difference (at this time) is that ngircd with gnutls
does not support password protected private keys.
Configuration
~~~~~~~~~~~~~
To enable SSL connections a separate port must be configured: it is NOT
possible to handle unencrypted and encrypted connections on the same port!
This is a limitation of the IRC protocol ...
You have to set (at least) the following configuration variables in the
[SSL] section of ngircd.conf(5): Ports, KeyFile, and CertFile.
Now IRC clients are able to connect using SSL on the configured port(s).
(Using port 6697 for encrypted connections is common.)
To enable encrypted server-server links, you have to additionally set
SSLConnect to "yes" in the corresponding [SERVER] section.
Creating a self-signed certificate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OpenSSL:
Creating a self-signed certificate and key:
$ openssl req -newkey rsa:2048 -x509 -keyout server-key.pem -out server-cert.pem -days 1461
Create DH parameters (optional):
$ openssl dhparam -2 -out dhparams.pem 4096
GnuTLS:
Creating a self-signed certificate and key:
$ certtool --generate-privkey --bits 2048 --outfile server-key.pem
$ certtool --generate-self-signed --load-privkey server-key.pem --outfile server-cert.pem
Create DH parameters (optional):
$ certtool --generate-dh-params --bits 4096 --outfile dhparams.pem
Alternate approach using stunnel(1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Alternatively (or if you are using ngIRCd compiled without support
for GnuTLS/OpenSSL), you can use external programs/tools like stunnel(1) to
get SSL encrypted connections:
<http://stunnel.mirt.net/>
<http://www.stunnel.org/>
Stefan Sperling (stefan at binarchy dot net) mailed the following text as a
short "how-to", thanks Stefan!
=== snip ===
! This guide applies to stunnel 4.x !
Put this in your stunnel.conf:
[ircs]
accept = 6667
connect = 6668
This makes stunnel listen for incoming connections
on port 6667 and forward decrypted data to port 6668.
We call the connection 'ircs'. Stunnel will use this
name when logging connection attempts via syslog.
You can also use the name in /etc/hosts.{allow,deny}
if you run tcp-wrappers.
To make sure ngircd is listening on the port where
the decrypted data arrives, set
Ports = 6668
in your ngircd.conf.
Start stunnel and restart ngircd.
That's it.
Don't forget to activate ssl support in your irc client ;)
The main drawback of this approach compared to using builtin ssl
is that from ngIRCds point of view, all ssl-enabled client connections will
originate from the host running stunnel.
=== snip ===

138
doc/Services.txt Normal file
View File

@@ -0,0 +1,138 @@
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.
-- Services.txt --
ngIRCd doesn't implement a "special IRC services interface", but services
acting as a "regular servers" ("pseudo servers") are supported, either
using the IRC protocol as defined in RFC 1459 or RFC 2812.
Support for Services has been tested using
- Anope 1.9.8 or later (<http://www.anope.org/>; unreleased!)
- Atheme 7.0.2 or later (<http://www.atheme.net>)
- "IRC Services" 5.1.x by Andrew Church (<http://achurch.org/services/>)
This document describes setting up ngIRCd and these services.
Please let us know if you are successfully using other IRC service packages or
which problems you encounter -- thanks!
Setting up ngIRCd
~~~~~~~~~~~~~~~~~
The "pseudo server" handling the IRC services is configured as a regular
remote server in the ngircd.conf(5). In addition the variable "ServiceMask"
should be set, enabling this ngIRCd to recognize the "pseudo users" as IRC
services instead of regular IRC users.
Example:
[SERVER]
Name = services.irc.net
MyPassword = 123abc
PeerPassword = 123abc
ServiceMask = *Serv
Setting up Anope 1.9.x
~~~~~~~~~~~~~~~~~~~~~~
Anope 1.9.8 or later (<http://www.anope.org/>; unreleased as of 2012-11-10)
may be used with ngIRCd using the "ngircd" protocol module.
Until Anope 1.9.8 is released, you have to use the sources from the Anope
development GIT tree, see <http://sourceforge.net/projects/anope/develop/>!
At least the following settings have to be tweaked, in addition to all the
settings marked as required by Anope:
In conf/services.conf:
define
{
name = "services.host"
value = "services.irc.net"
}
uplink
{
host = "server.irc.net"
port = 6667
password = "123abc"
}
# Load ngIRCd protocol module
module { name = "ngircd" }
networkinfo
{
# Must be set to the "MaxNickLength" setting of ngIRCd!
nicklen = 9
chanlen = 50
}
In conf/nickserv.conf:
nickserv
{
# not required if you are running ngIRCd with a higher nickname limit
# ("MaxNickLength") than 11 characters, but REQUIRED by default!
guestnickprefix = "G-"
}
Setting up Atheme 7.0.2 or later
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Atheme 7.0.2 or later (<http://www.atheme.net>) may be used with ngIRCd using
the "ngircd" protocol module.
The following settings need to be in atheme.conf:
loadmodule "modules/protocol/ngircd";
uplink "server.irc.net" {
password = "123abc";
port = 6667;
};
The documentation of Atheme can be found in the doc/ directory of the
Atheme source distribution.
Setting up IRC Services 5.1.x
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IRC Services 5.1.3 and above can be used with ngIRCd using the "rfc1459"
protocol module.
Please note that versions up to and including 5.1.3 contain a bug that
sometimes causes IRC Services to hang on startup. There are two workarounds:
a) send the services process a HUP signal ("killall -HUP ircservices")
b) apply this patch to the IRC Services source tree:
<ftp://ngircd.barton.de/ngircd/contrib/IRCServices513-FlushBuffer.patch>
At least the following settings have to be tweaked, in addition to all the
settings marked as required by IRC Services:
In ircservices.conf:
Variable Example value
RemoteServer server.irc.net 6667 "123abc"
ServerName "services.irc.net"
LoadModule protocol/rfc1459
In modules.conf:
Module protocol/rfc1459
The documentation of IRC Services can be found here:
<http://www.ircservices.za.net/docs/>

View File

@@ -1,108 +0,0 @@
# $Id: sample-ngircd.conf,v 1.8 2002/03/30 13:03:12 alex Exp $
#
# Das ist eine Beispiel-Konfiguration fuer den ngIRCd, die an die
# jeweiligen Beduerfnisse angepasst werden kann/muss.
#
# Kommentare werden mit "#" oder ";" eingeleitet.
#
[Global]
#
# Im [Global]-Abschnitt der Konfigurationsdatei wird der Server
# "an sich" konfiguriert. Notwendig ist nur die Variable "Name",
# Info ist in der Regel ebengalls anzupassen. Fuer alle uebrigen
# Variablen koennen oft die Defaults benutzt werden.
#
# Servername im IRC-Netz
Name = irc.the.net
# Info-Text des Servers
Info = Server Info Text
# Ports, auf denen Verbindungen angenommen werden sollen. Es koennen
# mehrere Ports mit "," getrennt angegeben werden. (Default: 6667)
;Ports = 6667, 6668, 6669
# Textdatei mit der "Message of the Day" (MOTD)
;MotdFile = /usr/local/etc/ngircd.motd
# User-ID, unter der der Daemon laufen soll (dazu muss der Server
# jedoch mit root-Rechten gestartet werden).
# ACHTUNG: Die Konfigurations- und MOTD-Datei muessen fuer diesen
# Benutzer lesbar sein, ansonsten schlaegt ein RESTART fehl!
;ServerUID = 65534
# Group-ID, zu der der Daemon wechseln soll (hierzu muss der Server
# jedoch mit root-Rechten gestartet werden)
;ServerGID = 65534
# Nach <PingTimeout> Sekunden verschickt der Server bei Inaktivitaet
# von einem Client diesem ein PING.
;PingTimeout = 120
# Antwortet ein Client, der ein PING bekam, nicht innerhalb von
# <PongTimeout> Sekunden mit einem PONG, so wird er disconnectiert.
;PongTimeout = 20
# Der Server versucht alle <ConnectRetry> Sekunden, noch nicht bzw.
# nicht mehr connectierte Server-Links aufzubauen.
;ConnectRetry = 60
[Operator]
#
# Mit einem [Operator]-Block wird der Name und das Passwort eines
# IRC-Operators konfiguriert. Es darf mehrere [Operator]-Bloecke
# geben (fuer jeden Operator einen).
#
# ID des IRC-Operators (muss nicht mit dem Nick identisch sein).
;Name = TheOper
# Passwort des IRC-Operators
;Password = ThePwd
[Server]
#
# In [Server]-Bloecken werden Server konfiguriert, zu denen dieser
# Server sich verbinden soll bzw. von denen Verbindungen angekommen
# werden duerfen.
# Es koennen mehrere Server konfiguriert werden, d.h. [Server]-
# Bloecke koennen mehrfach vorkommen.
# Ist fuer einen Server ein Port konfiguriert, so versucht dieser
# Server die Gegenseite zu connectieren. Ist kein Port vorgegeben,
# so wartet dieser Server auf eine Verbindung der Gegenseite.
#
# Server-Gruppen:
# Fuer jeden Server kann (optinal!) eine Gruppe konfiguriert werden,
# zu der er gehoert (wird nur beachtet, wenn ein Port konfiguriert
# ist!): eine solche Server-Gruppe wird quasi als ein Server ange-
# sehen, der ngIRCd baut also nur eine Verbindung auf. Schlaegt die
# Verbindung zu einem Server in einer Gruppe fehl, so wird der
# naechste Server in der Gruppe probiert.
#
# Hostname des Servers
;Host = connect-to-host.the.net
# IRC-Name des Servers
;Name = irc2.the.net
# Port, zu dem dieser Server eine Verbindung herstellen soll. Wird
# kein Port angegeben, so wird auf eine Verbindung der Gegenseite
# gewartet.
;Port = 6666
# Passwort fuer diese Verbindung
;Password = ThePwd1
# Gruppe, zu der dieser Server gehoert (optional).
;Group = 123
# -eof-

351
doc/sample-ngircd.conf.tmpl Normal file
View File

@@ -0,0 +1,351 @@
#
# This is a sample configuration file for the ngIRCd IRC daemon, which must
# be customized to the local preferences and needs.
#
# Comments are started with "#" or ";".
#
# A lot of configuration options in this file start with a ";". You have
# to remove the ";" in front of each variable to actually set a value!
# The disabled variables are shown with example values for completeness only
# and the daemon is using compiled-in default settings.
#
# Use "ngircd --configtest" (see manual page ngircd(8)) to validate that the
# server interprets the configuration file as expected!
#
# Please see ngircd.conf(5) for a complete list of configuration options
# and their descriptions.
#
[Global]
# The [Global] section of this file is used to define the main
# configuration of the server, like the server name and the ports
# on which the server should be listening.
# These settings depend on your personal preferences, so you should
# make sure that they correspond to your installation and setup!
# Server name in the IRC network, must contain at least one dot
# (".") and be unique in the IRC network. Required!
Name = irc.example.net
# Information about the server and the administrator, used by the
# ADMIN command. Not required by server but by RFC!
;AdminInfo1 = Description
;AdminInfo2 = Location
;AdminEMail = admin@irc.server
# Info text of the server. This will be shown by WHOIS and
# LINKS requests for example.
Info = Server Info Text
# Comma separated list of IP addresses on which the server should
# listen. Default values are:
# "0.0.0.0" or (if compiled with IPv6 support) "::,0.0.0.0"
# so the server listens on all IP addresses of the system by default.
;Listen = 127.0.0.1,192.168.0.1
# Text file with the "message of the day" (MOTD). This message will
# be shown to all users connecting to the server:
;MotdFile = :ETCDIR:/ngircd.motd
# A simple Phrase (<256 chars) if you don't want to use a motd file.
;MotdPhrase = "Hello world!"
# Global password for all users needed to connect to the server.
# (Default: not set)
;Password = abc
# This tells ngIRCd to write its current process ID to a file.
# Note that the pidfile is written AFTER chroot and switching the
# user ID, e.g. the directory the pidfile resides in must be
# writable by the ngIRCd user and exist in the chroot directory.
;PidFile = /var/run/ngircd/ngircd.pid
# Ports on which the server should listen. There may be more than
# one port, separated with ",". (Default: 6667)
;Ports = 6667, 6668, 6669
# Group ID under which the ngIRCd should run; you can use the name
# of the group or the numerical ID. ATTENTION: For this to work the
# server must have been started with root privileges!
;ServerGID = 65534
# User ID under which the server should run; you can use the name
# of the user or the numerical ID. ATTENTION: For this to work the
# server must have been started with root privileges! In addition,
# the configuration and MOTD files must be readable by this user,
# otherwise RESTART and REHASH won't work!
;ServerUID = 65534
[Limits]
# Define some limits and timeouts for this ngIRCd instance. Default
# values should be safe, but it is wise to double-check :-)
# The server tries every <ConnectRetry> seconds to establish a link
# to not yet (or no longer) connected servers.
;ConnectRetry = 60
# Maximum number of simultaneous in- and outbound connections the
# server is allowed to accept (0: unlimited):
;MaxConnections = 0
# Maximum number of simultaneous connections from a single IP address
# the server will accept (0: unlimited):
;MaxConnectionsIP = 5
# Maximum number of channels a user can be member of (0: no limit):
;MaxJoins = 10
# Maximum length of an user nickname (Default: 9, as in RFC 2812).
# Please note that all servers in an IRC network MUST use the same
# maximum nickname length!
;MaxNickLength = 9
# Maximum number of channels returned in response to a /list
# command (0: unlimited):
;MaxListSize = 100
# After <PingTimeout> seconds of inactivity the server will send a
# PING to the peer to test whether it is alive or not.
;PingTimeout = 120
# If a client fails to answer a PING with a PONG within <PongTimeout>
# seconds, it will be disconnected by the server.
;PongTimeout = 20
[Options]
# Optional features and configuration options to further tweak the
# behavior of ngIRCd. If you want to get started quickly, you most
# probably don't have to make changes here -- they are all optional.
# Are remote IRC operators allowed to control this server, e.g.
# use commands like CONNECT, SQUIT, DIE, ...?
;AllowRemoteOper = no
# A directory to chroot in when everything is initialized. It
# doesn't need to be populated if ngIRCd is compiled as a static
# binary. By default ngIRCd won't use the chroot() feature.
# ATTENTION: For this to work the server must have been started
# with root privileges!
;ChrootDir = /var/empty
# Set this hostname for every client instead of the real one.
# Use %x to add the hashed value of the original hostname.
;CloakHost = cloaked.host
# Use this hostname for hostname cloaking on clients that have the
# user mode "+x" set, instead of the name of the server.
# Use %x to add the hashed value of the original hostname.
;CloakHostModeX = cloaked.user
# The Salt for cloaked hostname hashing. When undefined a random
# hash is generated after each server start.
;CloakHostSalt = abcdefghijklmnopqrstuvwxyz
# Set every clients' user name to their nickname
;CloakUserToNick = yes
# Try to connect to other IRC servers using IPv4 and IPv6, if possible.
;ConnectIPv6 = yes
;ConnectIPv4 = yes
# Do any DNS lookups when a client connects to the server.
;DNS = yes
# Do IDENT lookups if ngIRCd has been compiled with support for it.
# Users identified using IDENT are registered without the "~" character
# prepended to their user name.
;Ident = yes
# Enhance user privacy slightly (useful for IRC server on TOR or I2P)
# by censoring some information like idle time, logon time, etc.
;MorePrivacy = no
# Normally ngIRCd doesn't send any messages to a client until it is
# registered. Enable this option to let the daemon send "NOTICE AUTH"
# messages to clients while connecting.
;NoticeAuth = no
# Should IRC Operators be allowed to use the MODE command even if
# they are not(!) channel-operators?
;OperCanUseMode = no
# Should IRC Operators get AutoOp (+o) in persistent (+P) channels?
;OperChanPAutoOp = yes
# Mask IRC Operator mode requests as if they were coming from the
# server? (This is a compatibility hack for ircd-irc2 servers)
;OperServerMode = no
# Use PAM if ngIRCd has been compiled with support for it.
# Users identified using PAM are registered without the "~" character
# prepended to their user name.
;PAM = yes
# When PAM is enabled, all clients are required to be authenticated
# using PAM; connecting to the server without successful PAM
# authentication isn't possible.
# If this option is set, clients not sending a password are still
# allowed to connect: they won't become "identified" and keep the "~"
# character prepended to their supplied user name.
# Please note: To make some use of this behavior, it most probably
# isn't useful to enable "Ident", "PAM" and "PAMIsOptional" at the
# same time, because you wouldn't be able to distinguish between
# Ident'ified and PAM-authenticated users: both don't have a "~"
# character prepended to their respective user names!
;PAMIsOptional = no
# Allow Pre-Defined Channels only (see Section [Channels])
;PredefChannelsOnly = no
# Let ngIRCd send an "authentication PING" when a new client connects,
# and register this client only after receiving the corresponding
# "PONG" reply.
;RequireAuthPing = no
# Silently drop all incoming CTCP requests.
;ScrubCTCP = no
# Syslog "facility" to which ngIRCd should send log messages.
# Possible values are system dependent, but most probably auth, daemon,
# user and local1 through local7 are possible values; see syslog(3).
# Default is "local5" for historical reasons, you probably want to
# change this to "daemon", for example.
;SyslogFacility = local1
# Password required for using the WEBIRC command used by some
# Web-to-IRC gateways. If not set/empty, the WEBIRC command can't
# be used. (Default: not set)
;WebircPassword = xyz
;[SSL]
# SSL-related configuration options. Please note that this section
# is only available when ngIRCd is compiled with support for SSL!
# So don't forget to remove the ";" above if this is the case ...
# SSL Server Key Certificate
;CertFile = :ETCDIR:/ssl/server-cert.pem
# Diffie-Hellman parameters
;DHFile = :ETCDIR:/ssl/dhparams.pem
# SSL Server Key
;KeyFile = :ETCDIR:/ssl/server-key.pem
# password to decrypt SSLKeyFile (OpenSSL only)
;KeyFilePassword = secret
# Additional Listen Ports that expect SSL/TLS encrypted connections
;Ports = 6697, 9999
[Operator]
# [Operator] sections are used to define IRC Operators. There may be
# more than one [Operator] block, one for each local operator.
# ID of the operator (may be different of the nickname)
;Name = TheOper
# Password of the IRC operator
;Password = ThePwd
# Optional Mask from which /OPER will be accepted
;Mask = *!ident@somewhere.example.com
[Operator]
# More [Operator] sections, if you like ...
[Server]
# Other servers are configured in [Server] sections. If you
# configure a port for the connection, then this ngircd tries to
# connect to to the other server on the given port; if not it waits
# for the other server to connect.
# There may be more than one server block, one for each server.
#
# Server Groups:
# The ngIRCd allows "server groups": You can assign an "ID" to every
# server with which you want this ngIRCd to link. If a server of a
# group won't answer, the ngIRCd tries to connect to the next server
# in the given group. But the ngircd never tries to connect to two
# servers with the same group ID.
# IRC name of the remote server, must match the "Name" variable in
# the [Global] section of the other server (when using ngIRCd).
;Name = irc2.example.net
# Internet host name or IP address of the peer (only required when
# this server should establish the connection).
;Host = connect-to-host.example.net
# IP address to use as _source_ address for the connection. if
# unspecified, ngircd will let the operating system pick an address.
;Bind = 10.0.0.1
# Port of the server to which the ngIRCd should connect. If you
# assign no port the ngIRCd waits for incoming connections.
;Port = 6667
# Own password for the connection. This password has to be configured
# as "PeerPassword" on the other server.
;MyPassword = MySecret
# Foreign password for this connection. This password has to be
# configured as "MyPassword" on the other server.
;PeerPassword = PeerSecret
# Group of this server (optional)
;Group = 123
# Set the "Passive" option to "yes" if you don't want this ngIRCd to
# connect to the configured peer (same as leaving the "Port" variable
# empty). The advantage of this option is that you can actually
# configure a port an use the IRC command CONNECT more easily to
# manually connect this specific server later.
;Passive = no
# Connect to the remote server using TLS/SSL (Default: false)
;SSLConnect = yes
# Define a (case insensitive) list of masks matching nicknames that
# should be treated as IRC services when introduced via this remote
# server, separated by commas (",").
# REGULAR SERVERS DON'T NEED this parameter, so leave it empty
# (which is the default).
# When you are connecting IRC services which mask as a IRC server
# and which use "virtual users" to communicate with, for example
# "NickServ" and "ChanServ", you should set this parameter to
# something like "*Serv" or "NickServ,ChanServ,XyzServ".
;ServiceMask = *Serv,Global
[Server]
# More [Server] sections, if you like ...
[Channel]
# Pre-defined channels can be configured in [Channel] sections.
# Such channels are created by the server when starting up and even
# persist when there are no more members left.
# Persistent channels are marked with the mode 'P', which can be set
# and unset by IRC operators like other modes on the fly.
# There may be more than one [Channel] block, one for each channel.
# Name of the channel
;Name = #TheName
# Topic for this channel
;Topic = a great topic
# Initial channel modes
;Modes = tnk
# initial channel password (mode k)
;Key = Secret
# Key file, syntax for each line: "<user>:<nick>:<key>".
# Default: none.
;KeyFile = :ETCDIR:/#chan.key
# maximum users per channel (mode l)
;MaxUsers = 23
[Channel]
# More [Channel] sections, if you like ...
# -eof-

1
doc/src/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
html

164
doc/src/Doxyfile Normal file
View File

@@ -0,0 +1,164 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for ngIRCd.
#
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
PROJECT_NAME = ngIRCd
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY = .
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
# only done if one of the specified strings matches the left-hand part of
# the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the
# path to strip.
STRIP_FROM_PATH = ../..
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
# will interpret the first line (until the first dot) of a JavaDoc-style
# comment as the brief description. If set to NO, the JavaDoc
# comments will behave just like the Qt-style comments (thus requiring an
# explicit @brief command for a brief description.
JAVADOC_AUTOBRIEF = YES
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C.
# For instance, some of the names that are used will be different. The list
# of all members will be omitted, etc.
OPTIMIZE_OUTPUT_FOR_C = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available.
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = YES
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = YES
# If the sources in your project are distributed over multiple directories
# then setting the SHOW_DIRECTORIES tag to YES will show the directory
# hierarchy in the documentation. The default is NO.
SHOW_DIRECTORIES = YES
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
# The INPUT tag can be used to specify the files and/or directories that
# contain documented source files. You may enter file names like "myfile.cpp"
# or directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
INPUT = ../../src
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.
# If left blank NO is used.
RECURSIVE = YES
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
# be generated. Documented entities will be cross-referenced with these sources.
# Note: To get rid of all source code in the generated output, make sure also
# VERBATIM_HEADERS is set to NO.
SOURCE_BROWSER = YES
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
# doxygen to hide any special comment blocks from generated source code
# fragments. Normal C and C++ comments will always remain visible.
STRIP_CODE_COMMENTS = NO
# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
# function all documented functions referencing it will be listed.
REFERENCED_BY_RELATION = YES
# If the REFERENCES_RELATION tag is set to YES then for each documented
# function all documented entities called/used by that function will be listed.
REFERENCES_RELATION = YES
#---------------------------------------------------------------------------
# Output formats
#---------------------------------------------------------------------------
GENERATE_HTML = YES
# The HTML_FOOTER tag can be used to specify a personal HTML footer for each
# generated HTML page. If it is left blank doxygen will generate a standard
# footer.
HTML_FOOTER = footer.inc.html
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded. For this to work a browser that supports JavaScript and
# DHTML is required (for instance Mozilla 1.0+, Firefox Netscape 6.0+,
# Internet explorer 5.0+, Konqueror, or Safari).
HTML_DYNAMIC_SECTIONS = YES
GENERATE_DOCSET = NO
GENERATE_HTMLHELP = NO
GENERATE_LATEX = NO
GENERATE_RTF = NO
GENERATE_MAN = NO
GENERATE_XML = NO
GENERATE_AUTOGEN_DEF = NO
GENERATE_PERLMOD = NO
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
# The PREDEFINED tag can be used to specify one or more macro names that
# are defined before the preprocessor is started (similar to the -D option of
# gcc). The argument of the tag is a list of macros of the form: name
# or name=definition (no spaces). If the definition and the = are
# omitted =1 is assumed. To prevent a macro definition from being
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
PREDEFINED = DEBUG ZLIB PAM ZEROCONF CONN_MODULE __client_c__
# -eof-

25
doc/src/Makefile.am Normal file
View File

@@ -0,0 +1,25 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2011 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
EXTRA_DIST = Doxyfile footer.inc.html
maintainer-clean-local:
rm -f Makefile Makefile.in
distclean-local:
rm -rf html
srcdoc:
@doxygen --version >/dev/null 2>&1 \
|| ( echo; echo "Error: \"doxygen\" not found!"; echo; exit 1 )
doxygen
# -eof-

11
doc/src/footer.inc.html Normal file
View File

@@ -0,0 +1,11 @@
<hr class="footer">
<p>
ngIRCd
<a href="http://ngircd.barton.de/">Homepage</a>,
<a href="http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git">GIT-Repository</a>,
<a href="http://ngircd.barton.de/bugzilla/index.cgi">Bug-Tracker</a>.
</p>
</body>
</html>

2
man/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
ngircd.8
ngircd.conf.5

View File

@@ -9,18 +9,27 @@
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
#
# $Id: Makefile.am,v 1.2 2002/03/15 15:41:55 alex Exp $
# $Id: Makefile.am,v 1.6 2006/12/25 16:13:26 alex Exp $
#
check_PROGRAMS = portabtest
TEMPLATE_MANS = ngircd.conf.5.tmpl ngircd.8.tmpl
portabtest_SOURCES = portabtest.c
SUFFIXES = .tmpl .
noinst_HEADERS = imp.h exp.h portab.h
.tmpl:
$(AM_V_GEN)sed \
-e s@:SBINDIR:@${sbindir}@ \
-e s@:BINDIR:@${bindir}@ \
-e s@:ETCDIR:@${sysconfdir}@ \
<$< >$@
man_MANS = ngircd.conf.5 ngircd.8
CLEANFILES = $(man_MANS)
EXTRA_DIST = $(TEMPLATE_MANS)
maintainer-clean-local:
rm -f Makefile Makefile.in
TESTS = portabtest
# -eof-

119
man/ngircd.8.tmpl Normal file
View File

@@ -0,0 +1,119 @@
.\"
.\" ngircd(8) manual page template
.\"
.TH ngircd 8 "Oct 2012" ngIRCd "ngIRCd Manual"
.SH NAME
ngIRCd \- the "next generation" IRC daemon
.SH SYNOPSIS
.B ngircd
[
.I Options
]
.SH DESCRIPTION
.BR ngIRCd
is a free, portable and lightweight Internet Relay Chat server for small
or private networks, developed under the GNU General Public License (GPL).
It is easy to configure, can cope with dynamic IP addresses, and supports
IPv6, SSL-protected connections as well as PAM for authentication.
It is written from scratch and not based on the original IRCd.
.PP
The name ngIRCd means
.IR "next generation IRC daemon",
which is a little bit exaggerated:
.IR "lightweight Internet Relay Chat server"
most probably would have been a better name :-)
.PP
Currently supported platforms include AIX, A/UX, FreeBSD, HP-UX, IRIX,
Linux, Mac OS X, NetBSD, OpenBSD, Solaris, and Windows with Cygwin.
.PP
As ngIRCd relies on UNIX standards and uses GNU automake and GNU autoconf
there are good chances that it also supports other UNIX-based operating
systems as well. By default, ngIRCd writes diagnostic and informational
messages using the syslog mechanism.
.SH OPTIONS
The default behavior of
.BR ngircd
is to read its standard configuration file (see below), to detach from the
controlling terminal and to wait for clients.
.PP
You can use these options to modify this default:
.TP
\fB\-f\fR \fIfile\fR, \fB\-\-config\fR \fIfile\fR
Use
.I file
as configuration file.
.TP
\fB\-n\fR, \fB\-\-nodaemon\fR
Don't fork a child and don't detach from controlling terminal.
All log messages go to the console and you can use CTRL-C to
terminate the server.
.TP
\fB\-p\fR, \fB\-\-passive\fR
Disable automatic connections to other servers. You can use the IRC command
CONNECT later on as IRC Operator to link this ngIRCd to other servers.
.TP
\fB\-t\fR, \fB\-\-configtest\fR
Read, validate and display the configuration; then exit.
.TP
\fB\-V\fR, \fB\-\-version\fR
Output version information and exit.
.TP
\fB\-h\fR, \fB\-\-help\fR
Display a brief help text and exit.
.SH FILES
.I :ETCDIR:/ngircd.conf
.RS
The system wide default configuration file.
.RE
.I :ETCDIR:/ngircd.motd
.RS
Default "message of the day" (MOTD).
.RE
.SH SIGNALS
The daemon understands the following signals:
.TP
\fBTERM\fR
Shut down all connections and terminate the daemon.
.TP
\fBHUP\fR
Shut down all listening sockets, re-read the configuration file and
re-initialize the daemon.
.SH HINTS
It's wise to use "ngircd \-\-configtest" to validate the configuration file
after changing it.
.SH DEBUGGING
When ngIRCd is compiled with debug code, that is, its source code has
been ./configure'd with "\-\-enable\-debug" and/or "\-\-enable\-sniffer" (witch
enables debug mode automatically as well), you can use two more command
line options and two more signals to debug problems with the daemon itself
or IRC clients:
.PP
\fBOptions:\fR
.TP
\fB\-d\fR, \fB\-\-debug\fR
Enable debug mode and log extra messages.
.TP
\fB\-s\fR, \fB\-\-sniffer\fR
Enable IRC protocol sniffer, which logs all sent and received IRC commands to
the console/syslog. This option requires that ngIRCd has been ./configure'd
with "\-\-enable\-sniffer" and enables debug mode automatically, too.
.PP
\fBSignals:\fR
.TP
\fBUSR1\fR
Toggle debug mode on and off during runtime.
.TP
\fBUSR2\fR
Dump internal server state to the console/syslog when debug mode is on (use
command line option \-\-debug or signal USR1).
.SH AUTHORS
Alexander Barton, <alex@barton.de>
.br
Florian Westphal, <fw@strlen.de>
.PP
Homepage: http://ngircd.barton.de/
.SH "SEE ALSO"
.BR ngircd.conf (5),
.BR ircd (8)
.\"
.\" -eof-

527
man/ngircd.conf.5.tmpl Normal file
View File

@@ -0,0 +1,527 @@
.\"
.\" ngircd.conf(5) manual page template
.\"
.TH ngircd.conf 5 "Nov 2012" ngIRCd "ngIRCd Manual"
.SH NAME
ngircd.conf \- configuration file of ngIRCd
.SH SYNOPSIS
.B :ETCDIR:/ngircd.conf
.SH DESCRIPTION
.BR ngircd.conf
is the configuration file of the
.BR ngircd (8)
Internet Relay Chat (IRC) daemon, which must be customized to the local
preferences and needs.
.PP
Most variables can be modified while the ngIRCd daemon is already running:
It will reload its configuration file when a HUP signal or REHASH command
is received.
.SH "FILE FORMAT"
The file consists of sections and parameters. A section begins with the name
of the section in square brackets and continues until the next section
begins.
.PP
Sections contain parameters of the form
.PP
.RS
.I name
=
.I value
.RE
.PP
Empty lines and any line beginning with a semicolon (';') or a hash ('#')
character are treated as a comment and will be ignored. Leading and trailing
whitespaces are trimmed before any processing takes place.
.PP
The file format is line-based - that means, each non-empty newline-terminated
line represents either a comment, a section name, or a parameter.
.PP
Section and parameter names are not case sensitive.
.PP
There are three types of variables:
.I booleans,
.I text strings,
and
.I numbers.
Boolean values are
.I true
if they are "yes", "true", or any non-null integer. Text strings are used 1:1
without leading and following spaces; there is no way to quote strings. And
for numbers all decimal integer values are valid.
.PP
In addition, some string or numerical variables accept lists of values,
separated by commas (",").
.SH "SECTION OVERVIEW"
The file can contain blocks of seven types: [Global], [Limits], [Options],
[SSL], [Operator], [Server], and [Channel].
.PP
The main configuration of the server is stored in the
.I [Global]
section, like the server name, administrative information and the ports on
which the server should be listening. The variables in this section have to be
adjusted to the local requirements most of the time, whereas all the variables
in the other sections can be left on there defaults very often.
.PP
Options in the
.I [Limits]
block are used to tweak different limits and timeouts of the daemon, like the
maximum number of clients allowed to connect to this server. Variables in the
.I [Options]
section can be used to enable or disable specific features of ngIRCd, like
support for IDENT, PAM, IPv6, and protocol and cloaking features. The
.I [SSL]
block contains all SSL-related configuration variables. These three sections
are all optional.
.PP
IRC operators of this server are defined in
.I [Operator]
blocks. Links to remote servers are configured in
.I [Server]
sections. And
.I [Channel]
blocks are used to configure pre-defined ("persistent") IRC channels.
.PP
There can be more than one [Operator], [Server] and [Channel] section per
configuration file (one for each operator, server, and channel), but only
exactly one [Global], one [Limits], one [Options], and one [SSL] section.
.SH [GLOBAL]
The
.I [Global]
section of this file is used to define the main configuration of the server,
like the server name and the ports on which the server should be listening.
These settings depend on your personal preferences, so you should make sure
that they correspond to your installation and setup!
.TP
\fBName\fR (string; required)
Server name in the IRC network. This is an individual name of the IRC
server, it is not related to the DNS host name. It must be unique in the
IRC network and must contain at least one dot (".") character.
.TP
\fBAdminInfo1\fR, \fBAdminInfo2\fR, \fBAdminEMail\fR (string)
Information about the server and the administrator, used by the ADMIN
command. This information is not required by the server but by RFC!
.TP
\fBInfo\fR (string)
Info text of the server. This will be shown by WHOIS and LINKS requests for
example.
.TP
\fBListen\fR (list of strings)
A comma separated list of IP address on which the server should listen.
If unset, the defaults value is "0.0.0.0" or, if ngIRCd was compiled
with IPv6 support, "::,0.0.0.0". So the server listens on all configured
IP addresses and interfaces by default.
.TP
\fBMotdFile\fR (string)
Text file with the "message of the day" (MOTD). This message will be shown to
all users connecting to the server. Please note: Changes made to this file
take effect when ngircd starts up or is instructed to re-read its
configuration file.
.TP
\fBMotdPhrase\fR (string)
A simple Phrase (<256 chars) if you don't want to use a MOTD file.
.TP
\fBPassword\fR (string)
Global password for all users needed to connect to the server. The default is
empty, so no password is required. Please note: This feature is not available
if ngIRCd is using PAM!
.TP
\fBPidFile\fR (string)
This tells ngIRCd to write its current process ID to a file. Note that the
pidfile is written AFTER chroot and switching the user ID, e.g. the directory
the pidfile resides in must be writable by the ngIRCd user and exist in the
chroot directory (if configured, see above).
.TP
\fBPorts\fR (list of numbers)
Ports on which the server should listen for unencrypted connections. There
may be more than one port, separated with commas (","). Default: 6667.
.TP
\fBServerGID\fR (string or number)
Group ID under which the ngIRCd should run; you can use the name of the
group or the numerical ID.
.PP
.RS
.B Attention:
.br
For this to work the server must have been started with root privileges!
.RE
.TP
\fBServerUID\fR (string or number)
User ID under which the server should run; you can use the name of the user
or the numerical ID.
.PP
.RS
.B Attention:
.br
For this to work the server must have been started with root privileges! In
addition, the configuration and MOTD files must be readable by this user,
otherwise RESTART and REHASH won't work!
.RE
.SH [LIMITS]
Define some limits and timeouts for this ngIRCd instance. Default values
should be safe, but it is wise to double-check :-)
.TP
\fBConnectRetry\fR (number)
The server tries every <ConnectRetry> seconds to establish a link to not yet
(or no longer) connected servers. Default: 60.
.TP
\fBMaxConnections\fR (number)
Maximum number of simultaneous in- and outbound connections the server is
allowed to accept (0: unlimited). Default: 0.
.TP
\fBMaxConnectionsIP\fR (number)
Maximum number of simultaneous connections from a single IP address that
the server will accept (0: unlimited). This configuration options lowers
the risk of denial of service attacks (DoS). Default: 5.
.TP
\fBMaxJoins\fR (number)
Maximum number of channels a user can be member of (0: no limit).
Default: 10.
.TP
\fBMaxNickLength\fR (number)
Maximum length of an user nickname (Default: 9, as in RFC 2812). Please
note that all servers in an IRC network MUST use the same maximum nickname
length!
.TP
\fBMaxListSize\fR (number)
Maximum number of channels returned in response to a LIST command. Default: 100.
.TP
\fBPingTimeout\fR (number)
After <PingTimeout> seconds of inactivity the server will send a PING to
the peer to test whether it is alive or not. Default: 120.
.TP
\fBPongTimeout\fR (number)
If a client fails to answer a PING with a PONG within <PongTimeout>
seconds, it will be disconnected by the server. Default: 20.
.SH [OPTIONS]
Optional features and configuration options to further tweak the behavior of
ngIRCd. If you want to get started quickly, you most probably don't have to
make changes here -- they are all optional.
.TP
\fBAllowRemoteOper\fR (boolean)
Are IRC operators connected to remote servers allowed to control this server,
e.g. are they allowed to use administrative commands like CONNECT, DIE,
SQUIT, ... that affect this server? Default: no.
.TP
\fBChrootDir\fR (string)
A directory to chroot in when everything is initialized. It doesn't need
to be populated if ngIRCd is compiled as a static binary. By default ngIRCd
won't use the chroot() feature.
.PP
.RS
.B Attention:
.br
For this to work the server must have been started with root privileges!
.RE
.TP
\fBCloakHost\fR (string)
Set this hostname for every client instead of the real one. Default: empty,
don't change. Use %x to add the hashed value of the original hostname.
.TP
\fBCloakHostModeX\fR (string)
Use this hostname for hostname cloaking on clients that have the user mode
"+x" set, instead of the name of the server. Default: empty, use the name
of the server. Use %x to add the hashed value of the original hostname
.TP
\fBCloakHostSalt\fR (string)
The Salt for cloaked hostname hashing. When undefined a random hash is
generated after each server start.
.TP
\fBCloakUserToNick\fR (boolean)
Set every clients' user name to their nickname and hide the one supplied
by the IRC client. Default: no.
.TP
\fBConnectIPv4\fR (boolean)
Set this to no if you do not want ngIRCd to connect to other IRC servers using
the IPv4 protocol. This allows the usage of ngIRCd in IPv6-only setups.
Default: yes.
.TP
\fBConnectIPv6\fR (boolean)
Set this to no if you do not want ngIRCd to connect to other IRC servers using
the IPv6 protocol.
Default: yes.
.TP
\fBDNS\fR (boolean)
If set to false, ngIRCd will not make any DNS lookups when clients connect.
If you configure the daemon to connect to other servers, ngIRCd may still
perform a DNS lookup if required.
Default: yes.
.TP
\fBIdent\fR (boolean)
If ngIRCd is compiled with IDENT support this can be used to disable IDENT
lookups at run time.
Users identified using IDENT are registered without the "~" character
prepended to their user name.
Default: yes.
.TP
\fBMorePrivacy\fR (boolean)
This will cause ngIRCd to censor user idle time, logon time as well as the
part/quit messages (that are sometimes used to inform everyone about which
client software is being used). WHOWAS requests are also silently ignored.
This option is most useful when ngIRCd is being used together with
anonymizing software such as TOR or I2P and one does not wish to make it
too easy to collect statistics on the users.
Default: no.
.TP
\fBNoticeAuth\fR (boolean)
Normally ngIRCd doesn't send any messages to a client until it is registered.
Enable this option to let the daemon send "NOTICE AUTH" messages to clients
while connecting. Default: no.
.TP
\fBOperCanUseMode\fR (boolean)
Should IRC Operators be allowed to use the MODE command even if they are
not(!) channel-operators? Default: no.
.TP
\fBOperChanPAutoOp\fR (boolean)
Should IRC Operators get AutoOp (+o) in persistent (+P) channels?
Default: yes.
.TP
\fBOperServerMode\fR (boolean)
If \fBOperCanUseMode\fR is enabled, this may lead the compatibility problems
with Servers that run the ircd-irc2 Software. This Option "masks" mode
requests by non-chanops as if they were coming from the server. Default: no;
only enable it if you have ircd-irc2 servers in your IRC network.
.TP
\fBPAM\fR (boolean)
If ngIRCd is compiled with PAM support this can be used to disable all calls
to the PAM library at runtime; all users connecting without password are
allowed to connect, all passwords given will fail.
Users identified using PAM are registered without the "~" character
prepended to their user name.
Default: yes.
.TP
\fBPAMIsOptional\fR (boolean)
When PAM is enabled, all clients are required to be authenticated using PAM;
connecting to the server without successful PAM authentication isn't possible.
If this option is set, clients not sending a password are still allowed to
connect: they won't become "identified" and keep the "~" character prepended
to their supplied user name.
Please note:
To make some use of this behavior, it most probably isn't useful to enable
"Ident", "PAM" and "PAMIsOptional" at the same time, because you wouldn't be
able to distinguish between Ident'ified and PAM-authenticated users: both
don't have a "~" character prepended to their respective user names!
Default: no.
.TP
\fBPredefChannelsOnly\fR (boolean)
If enabled, no new channels can be created. Useful if you do not want to have
other channels than those defined in [Channel] sections in the configuration
file on this server.
Default: no.
.TP
\fBRequireAuthPing\fR (boolean)
Let ngIRCd send an "authentication PING" when a new client connects, and
register this client only after receiving the corresponding "PONG" reply.
Default: no.
.TP
\fBScrubCTCP\fR (boolean)
If set to true, ngIRCd will silently drop all CTCP requests sent to it from
both clients and servers. It will also not forward CTCP requests to any
other servers. CTCP requests can be used to query user clients about which
software they are using and which versions said software is. CTCP can also be
used to reveal clients IP numbers. ACTION CTCP requests are not blocked,
this means that /me commands will not be dropped, but please note that
blocking CTCP will disable file sharing between users!
Default: no.
.TP
\fBSyslogFacility\fR (string)
Syslog "facility" to which ngIRCd should send log messages. Possible
values are system dependent, but most probably "auth", "daemon", "user"
and "local1" through "local7" are possible values; see syslog(3).
Default is "local5" for historical reasons, you probably want to
change this to "daemon", for example.
.TP
\fBWebircPassword\fR (string)
Password required for using the WEBIRC command used by some Web-to-IRC
gateways. If not set or empty, the WEBIRC command can't be used.
Default: not set.
.SH [SSL]
All SSL-related configuration variables are located in the
.I [SSL]
section. Please note that this whole section is only recognized by ngIRCd
when it is compiled with support for SSL using OpenSSL or GnuTLS!
.TP
\fBCertFile\fR (string)
SSL Certificate file of the private server key.
.TP
\fBDHFile\fR (string)
Name of the Diffie-Hellman Parameter file. Can be created with GnuTLS
"certtool \-\-generate-dh-params" or "openssl dhparam". If this file is not
present, it will be generated on startup when ngIRCd was compiled with GnuTLS
support (this may take some time). If ngIRCd was compiled with OpenSSL, then
(Ephemeral)-Diffie-Hellman Key Exchanges and several Cipher Suites will not be
available.
.TP
\fBKeyFile\fR (string)
Filename of SSL Server Key to be used for SSL connections. This is required
for SSL/TLS support.
.TP
\fBKeyFilePassword\fR (string)
OpenSSL only: Password to decrypt the private key file.
.TP
\fBPorts\fR (list of numbers)
Same as \fBPorts\fR , except that ngIRCd will expect incoming connections
to be SSL/TLS encrypted. Common port numbers for SSL-encrypted IRC are 6669
and 6697. Default: none.
.SH [OPERATOR]
.I [Operator]
sections are used to define IRC Operators. There may be more than one
.I [Operator]
block, one for each local operator.
.TP
\fBName\fR (string)
ID of the operator (may be different of the nickname).
.TP
\fBPassword\fR (string)
Password of the IRC operator.
.TP
\fBMask\fR (string)
Mask that is to be checked before an /OPER for this account is accepted.
Example: nick!ident@*.example.com
.SH [SERVER]
Other servers are configured in
.I [Server]
sections. If you configure a port for the connection, then this ngIRCd
tries to connect to to the other server on the given port (active);
if not, it waits for the other server to connect (passive).
.PP
ngIRCd supports "server groups": You can assign an "ID" to every server
with which you want this ngIRCd to link, and the daemon ensures that at
any given time only one direct link exists to servers with the same ID.
So if a server of a group won't answer, ngIRCd tries to connect to the next
server in the given group (="with the same ID"), but never tries to connect
to more than one server of this group simultaneously.
.PP
There may be more than one
.I [Server]
block.
.TP
\fBName\fR (string)
IRC name of the remote server.
.TP
\fBHost\fR (string)
Internet host name (or IP address) of the peer.
.TP
\fBBind\fR (string)
IP address to use as source IP for the outgoing connection. Default is
to let the operating system decide.
.TP
\fBPort\fR (number)
Port of the remote server to which ngIRCd should connect (active).
If no port is assigned to a configured server, the daemon only waits for
incoming connections (passive, default).
.TP
\fBMyPassword\fR (string)
Own password for this connection. This password has to be configured as
\fBPeerPassword\fR on the other server. Must not have ':' as first character.
.TP
\fBPeerPassword\fR (string)
Foreign password for this connection. This password has to be configured as
\fBMyPassword\fR on the other server.
.TP
\fBGroup\fR (number)
Group of this server (optional).
.TP
\fBPassive\fR (boolean)
Disable automatic connection even if port value is specified. Default: false.
You can use the IRC Operator command CONNECT later on to create the link.
.TP
\fBSSLConnect\fR (boolean)
Connect to the remote server using TLS/SSL. Default: false.
.TP
\fBServiceMask\fR (string)
Define a (case insensitive) list of masks matching nicknames that should be
treated as IRC services when introduced via this remote server, separated
by commas (","). REGULAR SERVERS DON'T NEED this parameter, so leave it empty
(which is the default).
.PP
.RS
When you are connecting IRC services which mask as a IRC server and which use
"virtual users" to communicate with, for example "NickServ" and "ChanServ",
you should set this parameter to something like "*Serv", "*Serv,OtherNick",
or "NickServ,ChanServ,XyzServ".
.SH [CHANNEL]
Pre-defined channels can be configured in
.I [Channel]
sections. Such channels are created by the server when starting up and even
persist when there are no more members left.
.PP
Persistent channels are marked with the mode 'P', which can be set and unset
by IRC operators like other modes on the fly.
.PP
There may be more than one
.I [Channel]
block.
.TP
\fBName\fR (string)
Name of the channel, including channel prefix ("#" or "&").
.TP
\fBTopic\fR (string)
Topic for this channel.
.TP
\fBModes\fR (string)
Initial channel modes.
.TP
\fBKey\fR (string)
Sets initial channel key (only relevant if channel mode "k" is set).
.TP
\fBKeyFile\fR (string)
Path and file name of a "key file" containing individual channel keys for
different users. The file consists of plain text lines with the following
syntax (without spaces!):
.PP
.RS
.RS
.I user
:
.I nick
:
.I key
.RE
.PP
.I user
and
.I nick
can contain the wildcard character "*".
.br
.I key
is an arbitrary password.
.PP
Valid examples are:
.PP
.RS
*:*:KeY
.br
*:nick:123
.br
~user:*:xyz
.RE
.PP
The key file is read on each JOIN command when this channel has a key
(channel mode +k). Access is granted, if a) the channel key set using the
MODE +k command or b) one of the lines in the key file match.
.PP
.B Please note:
.br
The file is not reopened on each access, so you can modify and overwrite it
without problems, but moving or deleting the file will have not effect until
the daemon re-reads its configuration!
.RE
.TP
\fBMaxUsers\fR (number)
Set maximum user limit for this channel (only relevant if channel mode "l"
is set).
.SH HINTS
It's wise to use "ngircd \-\-configtest" to validate the configuration file
after changing it. See
.BR ngircd (8)
for details.
.SH AUTHOR
Alexander Barton, <alex@barton.de>
.br
Florian Westphal, <fw@strlen.de>
.PP
Homepage: http://ngircd.barton.de/
.SH "SEE ALSO"
.BR ngircd (8)
.\"
.\" -eof-

4
src/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
config.h
config.h.in
config.h.in~
stamp-h1

View File

@@ -2,17 +2,16 @@
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
#
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
# der GNU General Public License (GPL), wie von der Free Software Foundation
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
# $Id: Makefile.am,v 1.3 2002/03/12 14:37:51 alex Exp $
# $Id: Makefile.am,v 1.8 2008/02/26 22:04:15 fw Exp $
#
SUBDIRS = portab ngircd
SUBDIRS = portab tool ipaddr ngircd testsuite
maintainer-clean-local:
rm -f Makefile Makefile.in config.h config.h.in stamp-h.in

1
src/ipaddr/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
Makefile.am

21
src/ipaddr/Makefile.ng Normal file
View File

@@ -0,0 +1,21 @@
#
# ipaddr/Makefile.am
# (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
#
__ng_Makefile_am_template__
EXTRA_DIST = Makefile.ng
AM_CPPFLAGS = -I$(srcdir)/../portab
noinst_LIBRARIES = libngipaddr.a
libngipaddr_a_SOURCES = ng_ipaddr.c
noinst_HEADERS = ng_ipaddr.h
maintainer-clean-local:
rm -f Makefile Makefile.in Makefile.am
# -eof-

179
src/ipaddr/ng_ipaddr.c Normal file
View File

@@ -0,0 +1,179 @@
/*
* (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
*/
#include "portab.h"
/**
* @file
* Functions for AF_ agnostic ipv4/ipv6 handling.
*/
#include <assert.h>
#include <stdio.h>
#include <string.h>
#ifdef HAVE_GETADDRINFO
#include <netdb.h>
#include <sys/types.h>
#endif
#include "ng_ipaddr.h"
GLOBAL bool
ng_ipaddr_init(ng_ipaddr_t *addr, const char *ip_str, UINT16 port)
{
#ifdef HAVE_GETADDRINFO
int ret;
char portstr[64];
struct addrinfo *res0;
struct addrinfo hints;
assert(ip_str);
memset(&hints, 0, sizeof(hints));
#ifdef AI_NUMERICHOST
hints.ai_flags = AI_NUMERICHOST;
#endif
#ifndef WANT_IPV6 /* do not convert ipv6 addresses */
hints.ai_family = AF_INET;
#endif
/* some getaddrinfo implementations require that ai_socktype is set. */
hints.ai_socktype = SOCK_STREAM;
/* silly, but ngircd stores UINT16 in server config, not string */
snprintf(portstr, sizeof(portstr), "%u", (unsigned int) port);
ret = getaddrinfo(ip_str, portstr, &hints, &res0);
if (ret != 0)
return false;
assert(sizeof(*addr) >= res0->ai_addrlen);
if (sizeof(*addr) >= res0->ai_addrlen)
memcpy(addr, res0->ai_addr, res0->ai_addrlen);
else
ret = -1;
freeaddrinfo(res0);
return ret == 0;
#else /* HAVE_GETADDRINFO */
assert(ip_str);
memset(addr, 0, sizeof *addr);
#ifdef HAVE_sockaddr_in_len
addr->sin4.sin_len = sizeof(addr->sin4);
#endif
addr->sin4.sin_family = AF_INET;
# ifdef HAVE_INET_ATON
if (inet_aton(ip_str, &addr->sin4.sin_addr) == 0)
return false;
# else
addr->sin4.sin_addr.s_addr = inet_addr(ip_str);
if (addr->sin4.sin_addr.s_addr == (unsigned) -1)
return false;
# endif
ng_ipaddr_setport(addr, port);
return true;
#endif /* HAVE_GETADDRINFO */
}
GLOBAL void
ng_ipaddr_setport(ng_ipaddr_t *a, UINT16 port)
{
#ifdef WANT_IPV6
int af;
assert(a != NULL);
af = a->sa.sa_family;
assert(af == AF_INET || af == AF_INET6);
switch (af) {
case AF_INET:
a->sin4.sin_port = htons(port);
break;
case AF_INET6:
a->sin6.sin6_port = htons(port);
break;
}
#else /* WANT_IPV6 */
assert(a != NULL);
assert(a->sin4.sin_family == AF_INET);
a->sin4.sin_port = htons(port);
#endif /* WANT_IPV6 */
}
GLOBAL bool
ng_ipaddr_ipequal(const ng_ipaddr_t *a, const ng_ipaddr_t *b)
{
assert(a != NULL);
assert(b != NULL);
#ifdef WANT_IPV6
if (a->sa.sa_family != b->sa.sa_family)
return false;
assert(ng_ipaddr_salen(a) == ng_ipaddr_salen(b));
switch (a->sa.sa_family) {
case AF_INET6:
return IN6_ARE_ADDR_EQUAL(&a->sin6.sin6_addr, &b->sin6.sin6_addr);
case AF_INET:
return memcmp(&a->sin4.sin_addr, &b->sin4.sin_addr, sizeof(a->sin4.sin_addr)) == 0;
}
return false;
#else
assert(a->sin4.sin_family == AF_INET);
assert(b->sin4.sin_family == AF_INET);
return memcmp(&a->sin4.sin_addr, &b->sin4.sin_addr, sizeof(a->sin4.sin_addr)) == 0;
#endif
}
#ifdef WANT_IPV6
GLOBAL const char *
ng_ipaddr_tostr(const ng_ipaddr_t *addr)
{
static char strbuf[NG_INET_ADDRSTRLEN];
strbuf[0] = 0;
ng_ipaddr_tostr_r(addr, strbuf);
return strbuf;
}
/* str must be at least NG_INET_ADDRSTRLEN bytes long */
GLOBAL bool
ng_ipaddr_tostr_r(const ng_ipaddr_t *addr, char *str)
{
#ifdef HAVE_GETNAMEINFO
const struct sockaddr *sa = (const struct sockaddr *) addr;
int ret;
*str = 0;
ret = getnameinfo(sa, ng_ipaddr_salen(addr),
str, NG_INET_ADDRSTRLEN, NULL, 0, NI_NUMERICHOST);
/*
* avoid leading ':'.
* causes mis-interpretation of client host in e.g. /WHOIS
*/
if (*str == ':') {
char tmp[NG_INET_ADDRSTRLEN] = "0";
ret = getnameinfo(sa, ng_ipaddr_salen(addr),
tmp + 1, (socklen_t)sizeof(tmp) - 1,
NULL, 0, NI_NUMERICHOST);
if (ret == 0)
strlcpy(str, tmp, NG_INET_ADDRSTRLEN);
}
assert (ret == 0);
return ret == 0;
#else
abort(); /* WANT_IPV6 depends on HAVE_GETNAMEINFO */
#endif
}
#endif /* WANT_IPV6 */
/* -eof- */

124
src/ipaddr/ng_ipaddr.h Normal file
View File

@@ -0,0 +1,124 @@
/*
* (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
*/
#ifndef NG_IPADDR_HDR
#define NG_IPADDR_HDR
#include "portab.h"
/**
* @file
* Functions for AF_ agnostic ipv4/ipv6 handling (header).
*/
#include <assert.h>
#include <sys/socket.h>
#include <netinet/in.h>
#ifdef HAVE_ARPA_INET_H
# include <arpa/inet.h>
#else
# define PF_INET AF_INET
#endif
#ifdef WANT_IPV6
#define NG_INET_ADDRSTRLEN INET6_ADDRSTRLEN
#else
#define NG_INET_ADDRSTRLEN 16
#endif
#ifdef WANT_IPV6
typedef union {
struct sockaddr sa;
struct sockaddr_in sin4;
struct sockaddr_in6 sin6;
} ng_ipaddr_t;
#else
/* assume compiler can't deal with typedef struct {... */
struct NG_IP_ADDR_DONTUSE {
struct sockaddr_in sin4;
};
typedef struct NG_IP_ADDR_DONTUSE ng_ipaddr_t;
#endif
static inline int
ng_ipaddr_af(const ng_ipaddr_t *a)
{
#ifdef WANT_IPV6
return a->sa.sa_family;
#else
assert(a->sin4.sin_family == 0 || a->sin4.sin_family == AF_INET);
return a->sin4.sin_family;
#endif
}
static inline socklen_t
ng_ipaddr_salen(const ng_ipaddr_t *a)
{
#ifdef WANT_IPV6
assert(a->sa.sa_family == AF_INET || a->sa.sa_family == AF_INET6);
if (a->sa.sa_family == AF_INET6)
return (socklen_t)sizeof(a->sin6);
#endif
assert(a->sin4.sin_family == AF_INET);
return (socklen_t)sizeof(a->sin4);
}
static inline UINT16
ng_ipaddr_getport(const ng_ipaddr_t *a)
{
#ifdef WANT_IPV6
int af = a->sa.sa_family;
assert(af == AF_INET || af == AF_INET6);
if (af == AF_INET6)
return ntohs(a->sin6.sin6_port);
#endif /* WANT_IPV6 */
assert(a->sin4.sin_family == AF_INET);
return ntohs(a->sin4.sin_port);
}
/*
* init a ng_ipaddr_t object.
* @param addr: pointer to ng_ipaddr_t to initialize.
* @param ip_str: ip address in dotted-decimal (ipv4) or hexadecimal (ipv6) notation
* @param port: transport layer port number to use.
*/
GLOBAL bool ng_ipaddr_init PARAMS((ng_ipaddr_t *addr, const char *ip_str, UINT16 port));
/* set sin4/sin6_port, depending on a->sa_family */
GLOBAL void ng_ipaddr_setport PARAMS((ng_ipaddr_t *a, UINT16 port));
/* return true if a and b have the same IP address. If a and b have different AF, return false. */
GLOBAL bool ng_ipaddr_ipequal PARAMS((const ng_ipaddr_t *a, const ng_ipaddr_t *b));
#ifdef WANT_IPV6
/* convert struct sockaddr to string, returns pointer to static buffer */
GLOBAL const char *ng_ipaddr_tostr PARAMS((const ng_ipaddr_t *addr));
/* convert struct sockaddr to string. dest must be NG_INET_ADDRSTRLEN bytes long */
GLOBAL bool ng_ipaddr_tostr_r PARAMS((const ng_ipaddr_t *addr, char *dest));
#else
static inline const char*
ng_ipaddr_tostr(const ng_ipaddr_t *addr)
{
return inet_ntoa(addr->sin4.sin_addr);
}
static inline bool
ng_ipaddr_tostr_r(const ng_ipaddr_t *addr, char *d)
{
strlcpy(d, inet_ntoa(addr->sin4.sin_addr), NG_INET_ADDRSTRLEN);
return true;
}
#endif
#endif
/* -eof- */

4
src/ngircd/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
Makefile.am
check-help
check-version
ngircd

View File

@@ -1,59 +0,0 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
#
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
# der GNU General Public License (GPL), wie von der Free Software Foundation
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
#
# $Id: Makefile.am,v 1.19 2002/03/29 22:52:12 alex Exp $
#
AM_CFLAGS = -I$(srcdir)/../portab
LINTARGS = -weak -warnunixlib +unixlib -booltype BOOLEAN
sbin_PROGRAMS = ngircd
ngircd_SOURCES = ngircd.c channel.c client.c conf.c conn.c hash.c irc.c \
irc-channel.c irc-login.c irc-mode.c irc-oper.c irc-server.c \
irc-write.c log.c parse.c tool.c
noinst_HEADERS = ngircd.h channel.h client.h conf.h conn.h hash.h irc.h \
irc-channel.h irc-login.h irc-mode.h irc-oper.h irc-server.h \
irc-write.h log.h parse.h tool.h \
messages.h defines.h
clean-local:
rm -f check-version check-help lint.out
maintainer-clean-local:
rm -f Makefile Makefile.in
check-version: Makefile
echo "#!/bin/sh" > check-version
echo "./ngircd --version | grep version > /dev/null 2>&1" >> check-version
chmod 755 check-version
check-help: Makefile
echo "#!/bin/sh" > check-help
echo "./ngircd --help | grep help > /dev/null 2>&1" >> check-help
chmod 755 check-help
lint:
rm -f lint.out
for f in *.c; do \
echo "checking $$f ..."; \
splint $$f $(LINTARGS) -I./.. $(AM_CFLAGS) > lint.out 2>&1; \
grep "no warnings" lint.out > /dev/null 2>&1; \
if [ $$? -ne 0 ]; then \
echo; cat lint.out; echo; \
fi; \
done;
TESTS = check-version check-help
# -eof-

152
src/ngircd/Makefile.ng Normal file
View File

@@ -0,0 +1,152 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2012 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# Please read the file COPYING, README and AUTHORS for more information.
#
__ng_Makefile_am_template__
EXTRA_DIST = Makefile.ng
AM_CPPFLAGS = -I$(srcdir)/../portab -I$(srcdir)/../tool -I$(srcdir)/../ipaddr
LINTARGS = -weak -warnunixlib +unixlib -booltype BOOLEAN \
-varuse -retvalother -emptyret -unrecog
sbin_PROGRAMS = ngircd
ngircd_SOURCES = \
ngircd.c \
array.c \
channel.c \
class.c \
client.c \
client-cap.c \
conf.c \
conn.c \
conn-encoding.c \
conn-func.c \
conn-ssl.c \
conn-zip.c \
hash.c \
io.c \
irc.c \
irc-cap.c \
irc-channel.c \
irc-encoding.c \
irc-info.c \
irc-login.c \
irc-metadata.c \
irc-mode.c \
irc-op.c \
irc-oper.c \
irc-server.c \
irc-write.c \
lists.c \
log.c \
login.c \
match.c \
numeric.c \
op.c \
pam.c \
parse.c \
proc.c \
resolve.c \
sighandlers.c
ngircd_LDFLAGS = -L../portab -L../tool -L../ipaddr
ngircd_LDADD = -lngportab -lngtool -lngipaddr
noinst_HEADERS = \
ngircd.h \
array.h \
channel.h \
class.h \
client.h \
client-cap.h \
conf.h \
conf-ssl.h \
conn.h \
conn-encoding.h \
conn-func.h \
conn-ssl.h \
conn-zip.h \
defines.h \
hash.h \
io.h \
irc.h \
irc-cap.h \
irc-channel.h \
irc-encoding.h \
irc-info.h \
irc-login.h \
irc-metadata.h \
irc-mode.h \
irc-op.h \
irc-oper.h \
irc-server.h \
irc-write.h \
lists.h \
log.h \
login.h \
match.h \
messages.h \
numeric.h \
op.h \
pam.h \
parse.h \
proc.h \
resolve.h \
sighandlers.h
clean-local:
rm -f check-version check-help lint.out
maintainer-clean-local:
rm -f Makefile Makefile.in Makefile.am
check-version: Makefile
echo "#!/bin/sh" > check-version
echo "./ngircd --version | grep ngircd >/dev/null 2>&1" >>check-version
chmod 755 check-version
check-help: Makefile
echo "#!/bin/sh" > check-help
echo "./ngircd --help | grep help >/dev/null 2>&1" >>check-help
chmod 755 check-help
lint:
@splint --version >/dev/null 2>&1 \
|| ( echo; echo "Error: \"splint\" not found!"; echo; exit 1 )
@echo; warnings=0; files=0; \
for f in *.c; do \
echo "checking $$f ..."; \
splint $$f $(LINTARGS) -I$(srcdir) -I$(srcdir)/.. \
$(AM_CPPFLAGS) $(AM_CFLAGS) >lint.out 2>&1; \
grep "no warnings" lint.out > /dev/null 2>&1; \
if [ $$? -ne 0 ]; then \
waswarning=1; \
echo; grep -v "^Command Line: " lint.out; echo; \
w=$$( grep "code warning" lint.out | $(AWK) "{ print \$$4 }" ); \
[ "$$w" -gt 0 ] && warnings=`expr $$warnings + $$w`; \
files=`expr $$files + 1`; \
else \
waswarning=0; \
fi; \
rm -f lint.out; \
done; \
[ $$waswarning -eq 0 ] && echo; \
[ $$warnings -gt 0 ] \
&& echo "Result: $$warnings warning(s) in $$files file(s)!" \
|| echo "Result: no warnings found."; \
echo; [ $$warnings -gt 0 ] && exit 1
TESTS = check-version check-help
# -eof-

328
src/ngircd/array.c Normal file
View File

@@ -0,0 +1,328 @@
/*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
*
* libarray - dynamically allocate arrays.
* Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de)
*/
/**
* @file
* Functions to dynamically allocate arrays.
*/
#include "array.h"
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include "log.h"
/* Enable more Debug messages in alloc / append / memmove code. */
/* #define DEBUG_ARRAY */
#define array_UNUSABLE(x) ( !(x)->mem )
static bool
safemult_sizet(size_t a, size_t b, size_t *res)
{
size_t tmp = a * b;
if (b && (tmp / b != a))
return false;
*res = tmp;
return true;
}
void
array_init(array *a)
{
assert(a != NULL);
a->mem = NULL;
a->allocated = 0;
a->used = 0;
}
/* if realloc() fails, array_alloc return NULL. otherwise return pointer to elem pos in array */
void *
array_alloc(array * a, size_t size, size_t pos)
{
size_t alloc, pos_plus1 = pos + 1;
char *tmp;
assert(size > 0);
if (pos_plus1 == 0 || !safemult_sizet(size, pos_plus1, &alloc))
return NULL;
if (a->allocated < alloc) {
#ifdef DEBUG_ARRAY
Log(LOG_DEBUG, "array_alloc(): changing size from %u to %u bytes.",
a->allocated, alloc);
#endif
tmp = realloc(a->mem, alloc);
if (!tmp)
return NULL;
a->mem = tmp;
a->allocated = alloc;
memset(a->mem + a->used, 0, a->allocated - a->used);
a->used = alloc;
}
assert(a->allocated >= a->used);
return a->mem + (pos * size);
}
/*return number of initialized ELEMS in a. */
size_t
array_length(const array * const a, size_t membersize)
{
assert(a != NULL);
assert(membersize > 0);
if (array_UNUSABLE(a))
return 0;
assert(a->allocated);
return membersize ? a->used / membersize : 0;
}
/* copy array src to array dest */
bool
array_copy(array * dest, const array * const src)
{
if (array_UNUSABLE(src))
return false;
assert(src->allocated);
return array_copyb(dest, src->mem, src->used);
}
/* return false on failure (realloc failure, invalid src/dest array) */
bool
array_copyb(array * dest, const char *src, size_t len)
{
assert(dest != NULL);
assert(src != NULL );
if (!src || !dest)
return false;
array_trunc(dest);
return array_catb(dest, src, len);
}
/* copy string to dest */
bool
array_copys(array * dest, const char *src)
{
return array_copyb(dest, src, strlen(src));
}
/* append len bytes from src to the array dest.
return false if we could not append all bytes (realloc failure, invalid src/dest array) */
bool
array_catb(array * dest, const char *src, size_t len)
{
size_t tmp;
size_t used;
char *ptr;
assert(dest != NULL);
assert(src != NULL);
if (!len)
return true;
if (!src || !dest)
return false;
used = dest->used;
tmp = used + len;
if (tmp < used || tmp < len) /* integer overflow */
return false;
if (!array_alloc(dest, 1, tmp))
return false;
ptr = dest->mem;
assert(ptr != NULL);
#ifdef DEBUG_ARRAY
Log(LOG_DEBUG,
"array_catb(): appending %u bytes to array (now %u bytes in array).",
len, tmp);
#endif
memcpy(ptr + used, src, len);
dest->used = tmp;
return true;
}
/* append string to dest */
bool
array_cats(array * dest, const char *src)
{
return array_catb(dest, src, strlen(src));
}
/* append trailing NUL byte to array */
bool
array_cat0(array * a)
{
return array_catb(a, "", 1);
}
/* append trailing NUL byte to array, but do not count it. */
bool
array_cat0_temporary(array * a)
{
char *endpos = array_alloc(a, 1, array_bytes(a));
if (!endpos)
return false;
*endpos = '\0';
return true;
}
/* add contents of array src to array dest. */
bool
array_cat(array * dest, const array * const src)
{
if (array_UNUSABLE(src))
return false;
return array_catb(dest, src->mem, src->used);
}
/* return pointer to the element at pos.
return NULL if the array is unallocated, or if pos is larger than
the number of elements stored int the array. */
void *
array_get(array * a, size_t membersize, size_t pos)
{
size_t totalsize;
size_t posplus1 = pos + 1;
assert(membersize > 0);
assert(a != NULL);
if (!posplus1 || array_UNUSABLE(a))
return NULL;
if (!safemult_sizet(posplus1, membersize, &totalsize))
return NULL;
if (a->allocated < totalsize)
return NULL;
totalsize = pos * membersize;
return a->mem + totalsize;
}
void
array_free(array * a)
{
assert(a != NULL);
#ifdef DEBUG_ARRAY
Log(LOG_DEBUG,
"array_free(): %u bytes free'd (%u bytes still used at time of free()).",
a->allocated, a->used);
#endif
free(a->mem);
a->mem = NULL;
a->allocated = 0;
a->used = 0;
}
void
array_free_wipe(array *a)
{
size_t bytes = a->allocated;
if (bytes)
memset(a->mem, 0, bytes);
array_free(a);
}
void *
array_start(const array * const a)
{
assert(a != NULL);
return a->mem;
}
void
array_trunc(array * a)
{
assert(a != NULL);
a->used = 0;
}
void
array_truncate(array * a, size_t membersize, size_t len)
{
size_t newlen;
assert(a != NULL);
if (!safemult_sizet(membersize, len, &newlen))
return;
if (newlen <= a->allocated)
a->used = newlen;
}
/* move elements starting at pos to beginning of array */
void
array_moveleft(array * a, size_t membersize, size_t pos)
{
size_t bytepos;
assert(a != NULL);
assert(membersize > 0);
if (!safemult_sizet(membersize, pos, &bytepos)) {
a->used = 0;
return;
}
if (!bytepos)
return; /* nothing to do */
#ifdef DEBUG_ARRAY
Log(LOG_DEBUG,
"array_moveleft(): %u bytes used in array, starting at position %u.",
a->used, bytepos);
#endif
if (a->used <= bytepos) {
a->used = 0;
return;
}
a->used -= bytepos;
memmove(a->mem, a->mem + bytepos, a->used);
}
/* -eof- */

104
src/ngircd/array.h Normal file
View File

@@ -0,0 +1,104 @@
/*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
*
* libarray - dynamically allocate arrays.
* Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de)
*/
#ifndef array_h_included
#define array_h_included
/**
* @file
* Functions to dynamically allocate arrays (header).
*/
#include "portab.h"
typedef struct {
char * mem;
size_t allocated;
size_t used;
} array;
/* allocated: mem != NULL, used >= 0 && used <= allocated, allocated > 0
unallocated: mem == NULL, allocated == 0, used == 0 */
#define array_unallocated(x) (array_bytes(x)==0)
#define INIT_ARRAY { NULL, 0, 0 }
/* set all variables in a to 0 */
extern void array_init PARAMS((array *a));
/* allocates space for at least nmemb+1 elements of size bytes each.
return pointer to elem at pos, or NULL if realloc() fails */
extern void * array_alloc PARAMS((array *a, size_t size, size_t pos));
/* returns the number of initialized BYTES in a. */
#define array_bytes(array) ( (array)->used )
/* returns the number of initialized ELEMS in a. */
extern size_t array_length PARAMS((const array* const a, size_t elemsize));
/* _copy functions: copy src to dest.
return true if OK, else false (e. g. realloc failure, invalid src/dest
array, ...). In that case dest is left unchanged. */
/* copy array src to dest */
extern bool array_copy PARAMS((array* dest, const array* const src));
/* copy len bytes from src to array dest. */
extern bool array_copyb PARAMS((array* dest, const char* src, size_t len));
/* copy string to dest */
extern bool array_copys PARAMS((array* dest, const char* src));
/* _cat functions: append src to dest.
return true if OK, else false (e. g. realloc failure, invalid src/dest
array, ...). In that case dest is left unchanged. */
/* append len bytes from src to array dest. */
extern bool array_catb PARAMS((array* dest, const char* src, size_t len));
/* append string to dest */
extern bool array_cats PARAMS((array* dest, const char* src));
/* append NUL byte to dest */
extern bool array_cat0 PARAMS((array* dest));
/* append NUL byte to dest, but do not count null byte */
extern bool array_cat0_temporary PARAMS((array* dest));
/* append contents of array src to array dest. */
extern bool array_cat PARAMS((array* dest, const array* const src));
/* return pointer to element at pos.
return NULL if the array is unallocated or if pos is larger than the number
of elements stored int the array. */
extern void* array_get PARAMS((array* a, size_t membersize, size_t pos));
/* free the contents of this array. */
extern void array_free PARAMS((array* a));
/* overwrite array with zeros before free */
extern void array_free_wipe PARAMS((array* a));
/* return pointer to first element in this array */
extern void* array_start PARAMS((const array* const a));
/* reset this array (the memory is not free'd */
extern void array_trunc PARAMS((array* a));
/* set number of used elements in this array to len */
extern void array_truncate PARAMS((array* a, size_t membersize, size_t len));
/* move elements starting at pos to beginning of array */
extern void array_moveleft PARAMS((array* a, size_t membersize, size_t pos));
#endif
/* -eof- */

File diff suppressed because it is too large Load Diff

View File

@@ -1,37 +1,46 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
* Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
*
* Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
* der GNU General Public License (GPL), wie von der Free Software Foundation
* herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
* der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
*
* $Id: channel.h,v 1.16 2002/03/25 19:11:01 alex Exp $
*
* channel.h: Management der Channels (Header)
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
*/
#ifndef __channel_h__
#define __channel_h__
#include "client.h"
/**
* @file
* Channel management (header)
*/
#if defined(__channel_c__) | defined(S_SPLINT_S)
#include "lists.h"
#include "defines.h"
#include "array.h"
typedef struct _CHANNEL
{
struct _CHANNEL *next;
CHAR name[CHANNEL_NAME_LEN]; /* Name des Channel */
UINT32 hash; /* Hash ueber (kleingeschrieben) Namen */
CHAR modes[CHANNEL_MODE_LEN]; /* Channel-Modes */
CHAR topic[CHANNEL_TOPIC_LEN]; /* Topic des Channels */
char name[CHANNEL_NAME_LEN]; /* Name of the channel */
UINT32 hash; /* Hash of the (lowecase!) name */
char modes[CHANNEL_MODE_LEN]; /* Channel modes */
array topic; /* Topic of the channel */
#ifndef STRICT_RFC
time_t creation_time; /* Channel creation time */
time_t topic_time; /* Time when topic was set */
char topic_who[CLIENT_NICK_LEN];/* Nickname of user that set topic */
#endif
char key[CLIENT_PASS_LEN]; /* Channel key ("password", mode "k" ) */
unsigned long maxusers; /* Maximum number of members (mode "l") */
struct list_head list_bans; /* list head of banned users */
struct list_head list_excepts; /* list head of (ban) exception list */
struct list_head list_invites; /* list head of invited users */
array keyfile; /* Name of the channel key file */
} CHANNEL;
typedef struct _CLIENT2CHAN
@@ -39,7 +48,7 @@ typedef struct _CLIENT2CHAN
struct _CLIENT2CHAN *next;
CLIENT *client;
CHANNEL *channel;
CHAR modes[CHANNEL_MODE_LEN]; /* User-Modes in dem Channel */
char modes[CHANNEL_MODE_LEN]; /* User-Modes in Channel */
} CL2CHAN;
#else
@@ -49,51 +58,94 @@ typedef POINTER CL2CHAN;
#endif
GLOBAL struct list_head *Channel_GetListBans PARAMS((CHANNEL *c));
GLOBAL struct list_head *Channel_GetListExcepts PARAMS((CHANNEL *c));
GLOBAL struct list_head *Channel_GetListInvites PARAMS((CHANNEL *c));
GLOBAL VOID Channel_Init( VOID );
GLOBAL VOID Channel_Exit( VOID );
GLOBAL void Channel_Init PARAMS(( void ));
GLOBAL void Channel_InitPredefined PARAMS(( void ));
GLOBAL void Channel_Exit PARAMS(( void ));
GLOBAL BOOLEAN Channel_Join( CLIENT *Client, CHAR *Name );
GLOBAL BOOLEAN Channel_Part( CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *Reason );
GLOBAL bool Channel_Join PARAMS(( CLIENT *Client, const char *Name ));
GLOBAL bool Channel_Part PARAMS(( CLIENT *Client, CLIENT *Origin, const char *Name, const char *Reason ));
GLOBAL VOID Channel_RemoveClient( CLIENT *Client, CHAR *Reason );
GLOBAL void Channel_Quit PARAMS(( CLIENT *Client, const char *Reason ));
GLOBAL INT Channel_Count( VOID );
GLOBAL void Channel_Kick PARAMS((CLIENT *Peer, CLIENT *Target, CLIENT *Origin,
const char *Name, const char *Reason));
GLOBAL CHAR *Channel_Name( CHANNEL *Chan );
GLOBAL CHAR *Channel_Modes( CHANNEL *Chan );
GLOBAL CHAR *Channel_Topic( CHANNEL *Chan );
GLOBAL unsigned long Channel_CountVisible PARAMS((CLIENT *Client));
GLOBAL unsigned long Channel_MemberCount PARAMS(( CHANNEL *Chan ));
GLOBAL int Channel_CountForUser PARAMS(( CLIENT *Client ));
GLOBAL VOID Channel_SetTopic( CHANNEL *Chan, CHAR *Topic );
GLOBAL const char *Channel_Name PARAMS(( const CHANNEL *Chan ));
GLOBAL char *Channel_Modes PARAMS(( CHANNEL *Chan ));
GLOBAL char *Channel_Topic PARAMS(( CHANNEL *Chan ));
GLOBAL char *Channel_Key PARAMS(( CHANNEL *Chan ));
GLOBAL unsigned long Channel_MaxUsers PARAMS(( CHANNEL *Chan ));
GLOBAL CHANNEL *Channel_Search( CHAR *Name );
GLOBAL void Channel_SetTopic PARAMS(( CHANNEL *Chan, CLIENT *Client, const char *Topic ));
GLOBAL void Channel_SetModes PARAMS(( CHANNEL *Chan, const char *Modes ));
GLOBAL void Channel_SetKey PARAMS(( CHANNEL *Chan, const char *Key ));
GLOBAL void Channel_SetMaxUsers PARAMS(( CHANNEL *Chan, unsigned long Count ));
GLOBAL CHANNEL *Channel_First( VOID );
GLOBAL CHANNEL *Channel_Next( CHANNEL *Chan );
GLOBAL CHANNEL *Channel_Search PARAMS(( const char *Name ));
GLOBAL CL2CHAN *Channel_FirstMember( CHANNEL *Chan );
GLOBAL CL2CHAN *Channel_NextMember( CHANNEL *Chan, CL2CHAN *Cl2Chan );
GLOBAL CL2CHAN *Channel_FirstChannelOf( CLIENT *Client );
GLOBAL CL2CHAN *Channel_NextChannelOf( CLIENT *Client, CL2CHAN *Cl2Chan );
GLOBAL CHANNEL *Channel_First PARAMS(( void ));
GLOBAL CHANNEL *Channel_Next PARAMS(( CHANNEL *Chan ));
GLOBAL CLIENT *Channel_GetClient( CL2CHAN *Cl2Chan );
GLOBAL CHANNEL *Channel_GetChannel( CL2CHAN *Cl2Chan );
GLOBAL CL2CHAN *Channel_FirstMember PARAMS(( CHANNEL *Chan ));
GLOBAL CL2CHAN *Channel_NextMember PARAMS(( CHANNEL *Chan, CL2CHAN *Cl2Chan ));
GLOBAL CL2CHAN *Channel_FirstChannelOf PARAMS(( CLIENT *Client ));
GLOBAL CL2CHAN *Channel_NextChannelOf PARAMS(( CLIENT *Client, CL2CHAN *Cl2Chan ));
GLOBAL BOOLEAN Channel_IsValidName( CHAR *Name );
GLOBAL CLIENT *Channel_GetClient PARAMS(( CL2CHAN *Cl2Chan ));
GLOBAL CHANNEL *Channel_GetChannel PARAMS(( CL2CHAN *Cl2Chan ));
GLOBAL BOOLEAN Channel_ModeAdd( CHANNEL *Chan, CHAR Mode );
GLOBAL BOOLEAN Channel_ModeDel( CHANNEL *Chan, CHAR Mode );
GLOBAL bool Channel_IsValidName PARAMS(( const char *Name ));
GLOBAL BOOLEAN Channel_UserModeAdd( CHANNEL *Chan, CLIENT *Client, CHAR Mode );
GLOBAL BOOLEAN Channel_UserModeDel( CHANNEL *Chan, CLIENT *Client, CHAR Mode );
GLOBAL CHAR *Channel_UserModes( CHANNEL *Chan, CLIENT *Client );
GLOBAL bool Channel_ModeAdd PARAMS(( CHANNEL *Chan, char Mode ));
GLOBAL bool Channel_ModeDel PARAMS(( CHANNEL *Chan, char Mode ));
GLOBAL BOOLEAN Channel_IsMemberOf( CHANNEL *Chan, CLIENT *Client );
GLOBAL bool Channel_UserModeAdd PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
GLOBAL bool Channel_UserModeDel PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
GLOBAL char *Channel_UserModes PARAMS(( CHANNEL *Chan, CLIENT *Client ));
GLOBAL BOOLEAN Channel_Write( CHANNEL *Chan, CLIENT *From, CLIENT *Client, CHAR *Text );
GLOBAL bool Channel_IsMemberOf PARAMS(( CHANNEL *Chan, CLIENT *Client ));
GLOBAL bool Channel_Write PARAMS((CHANNEL *Chan, CLIENT *From, CLIENT *Client,
const char *Command, bool SendErrors,
const char *Text));
GLOBAL CHANNEL *Channel_Create PARAMS(( const char *Name ));
#ifndef STRICT_RFC
GLOBAL unsigned int Channel_TopicTime PARAMS(( CHANNEL *Chan ));
GLOBAL char *Channel_TopicWho PARAMS(( CHANNEL *Chan ));
GLOBAL unsigned int Channel_CreationTime PARAMS(( CHANNEL *Chan ));
#endif
GLOBAL bool Channel_AddBan PARAMS((CHANNEL *c, const char *Mask));
GLOBAL bool Channel_AddExcept PARAMS((CHANNEL *c, const char *Mask));
GLOBAL bool Channel_AddInvite PARAMS((CHANNEL *c, const char *Mask,
bool OnlyOnce));
GLOBAL bool Channel_ShowBans PARAMS((CLIENT *client, CHANNEL *c));
GLOBAL bool Channel_ShowExcepts PARAMS((CLIENT *client, CHANNEL *c));
GLOBAL bool Channel_ShowInvites PARAMS((CLIENT *client, CHANNEL *c));
GLOBAL void Channel_LogServer PARAMS((const char *msg));
GLOBAL bool Channel_CheckKey PARAMS((CHANNEL *Chan, CLIENT *Client,
const char *Key));
GLOBAL void Channel_CheckAdminRights PARAMS((CHANNEL *Chan, CLIENT *Client,
CLIENT *Origin, bool *OnChannel,
bool *AdminOk, bool *UseServerMode));
#define Channel_IsLocal(c) (Channel_Name(c)[0] == '&')
#define Channel_IsModeless(c) (Channel_Name(c)[0] == '+')
#endif
/* -eof- */

143
src/ngircd/class.c Normal file
View File

@@ -0,0 +1,143 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2012 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
*/
#include "portab.h"
/**
* @file
* User class management.
*/
#include "imp.h"
#include <assert.h>
#include <string.h>
#include "defines.h"
#include "array.h"
#include "conn.h"
#include "client.h"
#include "lists.h"
#include "match.h"
#include "stdio.h"
#include "exp.h"
#include "class.h"
struct list_head My_Classes[CLASS_COUNT];
char Reject_Reason[COMMAND_LEN];
GLOBAL void
Class_Init(void)
{
memset(My_Classes, 0, sizeof(My_Classes));
}
GLOBAL void
Class_Exit(void)
{
int i;
for (i = 0; i < CLASS_COUNT; Lists_Free(&My_Classes[i++]));
}
GLOBAL char *
Class_GetMemberReason(const int Class, CLIENT *Client)
{
char *reason;
assert(Class < CLASS_COUNT);
assert(Client != NULL);
reason = Lists_CheckReason(&My_Classes[Class], Client);
if (!reason)
return NULL;
if (!*reason)
reason = "listed";
switch(Class) {
case CLASS_GLINE:
snprintf(Reject_Reason, sizeof(Reject_Reason),
"\"%s\" (G-Line)", reason);
return Reject_Reason;
case CLASS_KLINE:
snprintf(Reject_Reason, sizeof(Reject_Reason),
"\"%s\" (K-Line)", reason);
return Reject_Reason;
}
return reason;
}
/**
* Check if a client is banned from this server: GLINE, KLINE.
*
* If a client isn't allowed to connect, it will be disconnected again.
*
* @param Client The client to check.
* @return CONNECTED if client is allowed to join, DISCONNECTED if not.
*/
GLOBAL bool
Class_HandleServerBans(CLIENT *Client)
{
char *rejectptr;
assert(Client != NULL);
rejectptr = Class_GetMemberReason(CLASS_GLINE, Client);
if (!rejectptr)
rejectptr = Class_GetMemberReason(CLASS_KLINE, Client);
if (rejectptr) {
Client_Reject(Client, rejectptr, true);
return DISCONNECTED;
}
return CONNECTED;
}
GLOBAL bool
Class_AddMask(const int Class, const char *Mask, time_t ValidUntil,
const char *Reason)
{
assert(Class < CLASS_COUNT);
assert(Mask != NULL);
assert(Reason != NULL);
return Lists_Add(&My_Classes[Class], Lists_MakeMask(Mask),
ValidUntil, Reason);
}
GLOBAL void
Class_DeleteMask(const int Class, const char *Mask)
{
assert(Class < CLASS_COUNT);
assert(Mask != NULL);
Lists_Del(&My_Classes[Class], Lists_MakeMask(Mask));
}
GLOBAL struct list_head *
Class_GetList(const int Class)
{
assert(Class < CLASS_COUNT);
return &My_Classes[Class];
}
GLOBAL void
Class_Expire(void)
{
Lists_Expire(&My_Classes[CLASS_GLINE], "G-Line");
Lists_Expire(&My_Classes[CLASS_KLINE], "K-Line");
}
/* -eof- */

41
src/ngircd/class.h Normal file
View File

@@ -0,0 +1,41 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2012 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
*/
#ifndef __class_h__
#define __class_h__
/**
* @file
* User class management.
*/
#define CLASS_KLINE 0
#define CLASS_GLINE 1
#define CLASS_COUNT 2
GLOBAL void Class_Init PARAMS((void));
GLOBAL void Class_Exit PARAMS((void));
GLOBAL bool Class_AddMask PARAMS((const int Class, const char *Mask,
const time_t ValidUntil, const char *Reason));
GLOBAL void Class_DeleteMask PARAMS((const int Class, const char *Mask));
GLOBAL char *Class_GetMemberReason PARAMS((const int Class, CLIENT *Client));
GLOBAL bool Class_HandleServerBans PARAMS((CLIENT *Client));
GLOBAL struct list_head *Class_GetList PARAMS((const int Class));
GLOBAL void Class_Expire PARAMS((void));
#endif /* __class_h__ */
/* -eof- */

73
src/ngircd/client-cap.c Normal file
View File

@@ -0,0 +1,73 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2012 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
*/
#define __client_cap_c__
#include "portab.h"
/**
* @file
* Functions to deal with IRC Capabilities
*/
#include "imp.h"
#include <assert.h>
#include "defines.h"
#include "conn.h"
#include "client.h"
#include "log.h"
#include "exp.h"
#include "client-cap.h"
GLOBAL int
Client_Cap(CLIENT *Client)
{
assert (Client != NULL);
return Client->capabilities;
}
GLOBAL void
Client_CapSet(CLIENT *Client, int Cap)
{
assert(Client != NULL);
assert(Cap >= 0);
Client->capabilities = Cap;
LogDebug("Set new capability of \"%s\" to %d.",
Client_ID(Client), Client->capabilities);
}
GLOBAL void
Client_CapAdd(CLIENT *Client, int Cap)
{
assert(Client != NULL);
assert(Cap > 0);
Client->capabilities |= Cap;
LogDebug("Add capability %d, new capability of \"%s\" is %d.",
Cap, Client_ID(Client), Client->capabilities);
}
GLOBAL void
Client_CapDel(CLIENT *Client, int Cap)
{
assert(Client != NULL);
assert(Cap > 0);
Client->capabilities &= ~Cap;
LogDebug("Delete capability %d, new capability of \"%s\" is %d.",
Cap, Client_ID(Client), Client->capabilities);
}
/* -eof- */

31
src/ngircd/client-cap.h Normal file
View File

@@ -0,0 +1,31 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2012 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
*/
#ifndef __client_cap_h__
#define __client_cap_h__
/**
* @file
* Functions to deal with IRC Capabilities (header)
*/
#define CLIENT_CAP_PENDING 1 /* Capability negotiation pending */
#define CLIENT_CAP_SUPPORTED 2 /* Client supports IRC capabilities */
#define CLIENT_CAP_MULTI_PREFIX 4 /* multi-prefix */
GLOBAL int Client_Cap PARAMS((CLIENT *Client));
GLOBAL void Client_CapSet PARAMS((CLIENT *Client, int Cap));
GLOBAL void Client_CapAdd PARAMS((CLIENT *Client, int Cap));
GLOBAL void Client_CapDel PARAMS((CLIENT *Client, int Cap));
#endif

Some files were not shown because too many files have changed in this diff Show More