mirror of
https://github.com/osmarks/ngircd.git
synced 2025-10-13 21:57:40 +00:00
Compare commits
2 Commits
master
...
rel-0-6-0-
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3544d1bc40 | ||
![]() |
6c88184b58 |
@@ -1,4 +0,0 @@
|
||||
-I./src
|
||||
-I./src/ipaddr
|
||||
-I./src/portab
|
||||
-I./src/tool
|
@@ -1 +0,0 @@
|
||||
.gitignore
|
@@ -1,20 +0,0 @@
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2016 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.
|
||||
|
||||
# .editorconfig: Editor settings, see <http://editorconfig.org>.
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = tab
|
||||
indent_size = 8
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
81
.github/workflows/ci.yml
vendored
81
.github/workflows/ci.yml
vendored
@@ -1,81 +0,0 @@
|
||||
name: ngIRCd CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths-ignore:
|
||||
- 'COPYING'
|
||||
- 'ChangeLog'
|
||||
- 'NEWS'
|
||||
- 'contrib/**'
|
||||
- 'doc/**'
|
||||
- 'man/**'
|
||||
- '**.md'
|
||||
- '**.txt'
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
paths-ignore:
|
||||
- 'COPYING'
|
||||
- 'ChangeLog'
|
||||
- 'NEWS'
|
||||
- 'contrib/**'
|
||||
- 'doc/**'
|
||||
- 'man/**'
|
||||
- '**.md'
|
||||
- '**.txt'
|
||||
|
||||
jobs:
|
||||
build_and_distcheck:
|
||||
name: build+test
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu
|
||||
- macos
|
||||
toolchain:
|
||||
- gcc
|
||||
- llvm
|
||||
include:
|
||||
- os: ubuntu
|
||||
toolchain: gcc
|
||||
install_cmd: |
|
||||
sudo apt update
|
||||
sudo apt install build-essential expect libident-dev libpam0g-dev libssl-dev libwrap0-dev pkg-config telnet zlib1g-dev gcc
|
||||
configure_cmd: |
|
||||
./configure CC=gcc --enable-ipv6 --with-iconv --with-ident --with-openssl --with-pam --with-tcp-wrappers --with-zlib
|
||||
- os: ubuntu
|
||||
toolchain: llvm
|
||||
install_cmd: |
|
||||
sudo apt update
|
||||
sudo apt install build-essential expect libident-dev libpam0g-dev libssl-dev libwrap0-dev pkg-config telnet zlib1g-dev clang
|
||||
configure_cmd: |
|
||||
./configure CC=clang --enable-ipv6 --with-iconv --with-ident --with-openssl --with-pam --with-tcp-wrappers --with-zlib
|
||||
- os: macos
|
||||
toolchain: gcc
|
||||
install_cmd: |
|
||||
brew update
|
||||
brew install autoconf automake expect openssl@3 pkg-config telnet zlib gcc
|
||||
configure_cmd: |
|
||||
./configure CC=gcc --enable-ipv6 --with-iconv --with-openssl --with-zlib
|
||||
- os: macos
|
||||
toolchain: llvm
|
||||
install_cmd: |
|
||||
brew update
|
||||
brew install autoconf automake expect openssl@3 pkg-config telnet zlib llvm
|
||||
configure_cmd: |
|
||||
./configure CC=clang --enable-ipv6 --with-iconv --with-openssl --with-zlib
|
||||
runs-on: ${{ matrix.os }}-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install dependencies
|
||||
run: ${{ matrix.install_cmd }}
|
||||
- name: Generate build system files
|
||||
run: ./autogen.sh
|
||||
- name: Configure the build system
|
||||
run: ${{ matrix.configure_cmd }}
|
||||
- name: Build everything
|
||||
run: make all
|
||||
- name: Create distribution archive and run tests
|
||||
run: make distcheck
|
54
.gitignore
vendored
54
.gitignore
vendored
@@ -1,54 +0,0 @@
|
||||
.*.swp
|
||||
.deps
|
||||
.trunk
|
||||
.vscode
|
||||
*.a
|
||||
*.e_
|
||||
*.exe
|
||||
*.log
|
||||
*.o
|
||||
*~
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
ansi2knr.1
|
||||
ansi2knr.c
|
||||
ansi2knr.h
|
||||
ar-lib
|
||||
autom4te.cache
|
||||
build-stamp-ngircd*
|
||||
build+*
|
||||
compile
|
||||
config.cache
|
||||
config.status
|
||||
configure
|
||||
configure.ac
|
||||
configure.lineno
|
||||
cov-int
|
||||
cscope.out
|
||||
debian
|
||||
depcomp
|
||||
install-sh
|
||||
missing
|
||||
ngircd.dest
|
||||
doc/sample-ngircd.conf
|
||||
doc/src/html
|
||||
man/ngircd.8
|
||||
man/ngircd.conf.5
|
||||
src/*/Makefile.am
|
||||
src/config.h
|
||||
src/config.h.in
|
||||
src/stamp-h1
|
||||
src/ngircd/check-help
|
||||
src/ngircd/check-version
|
||||
src/ngircd/ngircd
|
||||
src/portab/portabtest
|
||||
src/testsuite/*-test
|
||||
src/testsuite/logs
|
||||
src/testsuite/ngircd-*.motd
|
||||
src/testsuite/ssl/cert.pem
|
||||
src/testsuite/ssl/dhparams.pem
|
||||
src/testsuite/ssl/key.pem
|
||||
src/testsuite/T-ngircd?
|
||||
src/testsuite/tests
|
||||
src/testsuite/tests-skipped.lst
|
22
.mailmap
22
.mailmap
@@ -1,22 +0,0 @@
|
||||
# mailmap file for git-[short]log and git-blame
|
||||
# use "git shortlog -se" to see the list of all authors.
|
||||
|
||||
Alexander Barton <alex@barton.de> <anonymous>
|
||||
Alexander Barton <alex@barton.de> <alex@kfreebsd.barton.de>
|
||||
|
||||
Ali Shemiran <ashemira@ucsd.edu>
|
||||
|
||||
Christoph Biedl <ngircd.anoy@manchmal.in-ulm.de> <debian.axhn@manchmal.in-ulm.de>
|
||||
|
||||
Dana Dahlstrom <dana+ngIRCd@cs.ucsd.edu> <dana@cs.ucsd.edu>
|
||||
Dana Dahlstrom <dana+ngIRCd@cs.ucsd.edu> <dana+70@cs.ucsd.edu>
|
||||
|
||||
DNS <dns@rbose.org>
|
||||
|
||||
Götz Hoffart <goetz@hoffart.de>
|
||||
|
||||
LucentW <lucent@zebes.info> <LucentW@users.noreply.github.com>
|
||||
|
||||
Michi <michi+ngircd@dataswamp.org>
|
||||
|
||||
Sam James <sam@cmpct.info> <11667869+thesamesam@users.noreply.github.com>
|
13
AUTHORS
Normal file
13
AUTHORS
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
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.
|
||||
|
||||
-- AUTHORS / Autoren --
|
||||
|
||||
|
||||
Alexander Barton, alex@arthur.ath.cx
|
82
AUTHORS.md
82
AUTHORS.md
@@ -1,82 +0,0 @@
|
||||
# [ngIRCd](https://ngircd.barton.de) - Authors & Contributors
|
||||
|
||||
Please feel free to post an email to the ngIRCd users mailing list
|
||||
<ngircd@lists.barton.de> (see <https://ngircd.barton.de/support> for details)
|
||||
if you have comments, patches, suggestions or questions.
|
||||
|
||||
Or join the "#ngircd" channel in IRC on irc.barton.de:
|
||||
<irc://irc.barton.de/ngircd>.
|
||||
|
||||
*Please do not email the people listed here directly, if possible!*
|
||||
|
||||
## Main Authors
|
||||
|
||||
- Alexander Barton <alex@barton.de>
|
||||
- Florian Westphal <fw@strlen.de>
|
||||
|
||||
## Contributors
|
||||
|
||||
- 9pfs <hellosmile6@tilde.pink>
|
||||
- Ali Shemiran <ashemira@ucsd.edu>
|
||||
- Ask Bjørn Hansen <ask@develooper.com>
|
||||
- Benjamin Pineau <ben@zouh.org>
|
||||
- Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
- Brandon Beresini <beresini@google.com>
|
||||
- Brett Smith <brett@w3.org>
|
||||
- Brian Collins <bricollins@gmail.com>
|
||||
- Bryan Caldwell <bcaldwel@ucsd.edu>
|
||||
- Christian Aistleitner <christian@quelltextlich.at>
|
||||
- Christoph Biedl <ngircd.anoy@manchmal.in-ulm.de>
|
||||
- Dana Dahlstrom <dana+ngIRCd@cs.ucsd.edu>
|
||||
- David Kingston <deathking1337@aim.com>
|
||||
- DNS <dns@rbose.org>
|
||||
- Eric Grunow <egrunow@ucsd.edu>
|
||||
- ewired <37567272+ewired@users.noreply.github.com>
|
||||
- Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
- Federico G. Schwindt <fgsch@lodoss.net>
|
||||
- Florian Weimer <fweimer@redhat.com>
|
||||
- Gabor Adam Toth <tg@tgbit.net>
|
||||
- Götz Hoffart <goetz@hoffart.de>
|
||||
- hello-smile6 <73048226+hello-smile6@users.noreply.github.com>
|
||||
- Hilko Bengen <bengen@hilluzination.de>
|
||||
- Ian Chard <ian@chard.org>
|
||||
- Ilja Osthoff <i.osthoff@gmx.net>
|
||||
- ItsOnlyBinary <ItsOnlyBinary@users.noreply.github.com>
|
||||
- Ivan Agarkov <i_agarkov@wargaming.net>
|
||||
- James Lu <james@overdrivenetworks.com>
|
||||
- Jari Aalto <jari.aalto@cante.net>
|
||||
- Johann Hartwig Hauschild <git@hauschild.it>
|
||||
- JRMU <jrmu@lecturify.com>
|
||||
- Jules Maselbas <jmaselbas@zdiv.net>
|
||||
- Katherine Peeters <katherine.peeters@leagueh.xyz>
|
||||
- LucentW <lucent@zebes.info>
|
||||
- Mantas Mikulėnas <grawity@gmail.com>
|
||||
- Michi <michi+ngircd@dataswamp.org>
|
||||
- Neale Pickett <neale@woozle.org>
|
||||
- Peter Powell <petpow@saberuk.com>
|
||||
- Rolf Eike Beer <eike@sf-mail.de>
|
||||
- Rosen Penev <rosenp@gmail.com>
|
||||
- Roy Sindre Norangshol <roy.sindre@norangshol.no>
|
||||
- salaaad2 <47527723+salaaad2@users.noreply.github.com>
|
||||
- Sam James <sam@cmpct.info>
|
||||
- Scott Perry <scperry@ucsd.edu>
|
||||
- Sean Reifschneider <jafo-rpms@tummy.com>
|
||||
- Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
|
||||
- Sebastian Köhler <sebkoehler@whoami.org.uk>
|
||||
- shankari <shankari@eecs.berkeley.edu>
|
||||
- Tassilo Schweyer <dev@welterde.de>
|
||||
- Tom Ryder <tom@sanctum.geek.nz>
|
||||
- Unit 193 <unit193@ubuntu.com>
|
||||
- Valentin Lorentz <progval+git@progval.net>
|
||||
- Val Lorentz <progval+git@progval.net>
|
||||
- William Pitcock <nenolod@dereferenced.org>
|
||||
- Windree <57554809+Windree@users.noreply.github.com>
|
||||
- xnaas <8271327+xnaas@users.noreply.github.com>
|
||||
- xor <xorboy@gmail.com>
|
||||
- Yecheng Fu <cofyc.jackson@gmail.com>
|
||||
|
||||
## Code snippets
|
||||
|
||||
- Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions
|
||||
- John Kercheval: pattern matching functions
|
||||
- Patrick Powell <papowell@astart.com>: snprintf()-function
|
39
COPYING
39
COPYING
@@ -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.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
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.
|
||||
|
||||
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 Lesser General Public License instead.) You can apply it to
|
||||
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
|
||||
@@ -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,9 +303,10 @@ 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.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
@@ -335,5 +336,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 Lesser General
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
|
162
INSTALL
Normal file
162
INSTALL
Normal file
@@ -0,0 +1,162 @@
|
||||
|
||||
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.
|
||||
|
||||
-- INSTALL / Installation --
|
||||
|
||||
Ilja Osthoff, <ilja@glide.ath.cx>
|
||||
|
||||
|
||||
+-----------------------------------------------------------------------+
|
||||
| Please note: English translations of some of the german documentation |
|
||||
| files can be found in the directory "doc/en" -- please have a look! |
|
||||
+-----------------------------------------------------------------------+
|
||||
|
||||
|
||||
0. Update von frueheren Versionen
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Unterschiede zu Version 0.5.x
|
||||
|
||||
- Ab Version 0.6.0 werden asyncrone Passwoerter zur Identifikation anderer
|
||||
Server, die Variable "Password" in [Server]-Abschnitten wird nicht mehr
|
||||
unterstuetzt. Passwoerter fuer Server-Server-Links werden nun mit den
|
||||
Variablen "MyPassword" und "PeerPassword" angegeben.
|
||||
|
||||
- Neue Konfigurationsvariablen, Sektion [Global]: MaxConnections, MaxJoins
|
||||
(vgl. auch Beispiel-Konfiguration "doc/sample-ngircd.conf"!)
|
||||
|
||||
|
||||
I. Standard-Installation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ngIRCd ist fuer UNIXoide-Systeme konzipiert worden, das bedeutet, dass die
|
||||
Installation auf einem modernen UNIX-aehnlichen System kein Problem dar-
|
||||
stellen sollte. Das System muss nur von GNU automake und GNU autoconf
|
||||
("configure") unterstuetzt werden.
|
||||
|
||||
Die Standard-Installation sieht so aus:
|
||||
|
||||
1) tar xzf ngircd-<Version>.tar.gz
|
||||
2) cd ngircd-<Version>
|
||||
3) ./autogen.sh [nur erforderlich, wenn ueber CVS bezogen]
|
||||
4) ./configure
|
||||
5) make
|
||||
6) make install
|
||||
|
||||
|
||||
zu 3): "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 immer, wenn der Source-Code ueber CVS
|
||||
bezogen wurde.
|
||||
|
||||
Dieser Absatz ist also eigentlich ausschliesslich fuer Entwickler interessant.
|
||||
|
||||
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.
|
||||
|
||||
(nochmal: "Endanwender" mussen diesen Schritt i.d.R. nicht ausfuehren!)
|
||||
|
||||
|
||||
zu 4): "./configure"
|
||||
|
||||
Mit dem configure-Script wird ngIRCd, wie GNU Software meistens, an das
|
||||
lokale System angepasst und die erforderlichen Makefile's erzeugt.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
zu 5): "make"
|
||||
|
||||
Der make-Befehl bearbeitet die vom configure-Script erzeugten Makefile's und
|
||||
uebersetzt den ngIRCd.
|
||||
|
||||
|
||||
zu 6): "make install"
|
||||
|
||||
Mit "make install" wird der Server und ggf. eine Beispiels-Konfiguration
|
||||
im System installiert; hierzu sind in der Regel root-Rechte erforderlich.
|
||||
Eine bereits vorhandene Konfigurationsdatei wird nie ueberschrieben.
|
||||
|
||||
Folgende Dateien werden installiert:
|
||||
|
||||
- /usr/local/sbin/ngircd: ausfuehrbarer Server
|
||||
- /usr/local/etc/ngircd.conf: Beispiel-Konfiguration, wenn nicht vorhanden
|
||||
|
||||
|
||||
II. Nuetzliche make-Targets
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Die vom configure-Script erzeugten Makefile's enthalten immer die folgenden
|
||||
nuetzlichen Targets:
|
||||
|
||||
- clean: alle Erzeugnisse des Compilers/Linkers loeschen.
|
||||
Naechster Schritt: -> make
|
||||
|
||||
- distclean: zusaetzliche alle Makefile's loeschen.
|
||||
Naechster Schritt: -> ./configure
|
||||
|
||||
- maintainer-clean: alle automat. erzeugten Dateien loeschen.
|
||||
Naechster Schritt: -> ./autogen.sh
|
||||
|
||||
|
||||
|
||||
III. Konfigurationsdatei ngircd.conf
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In der Konfigurationsdatei werden Kommentare durch "#" oder durch ";"
|
||||
eingeleitet. Dieses dient nur der besseren Lesbarkeit.
|
||||
|
||||
Die Datei ist in drei Abschnitte unterteilt: [Global], [Operator] und
|
||||
[Server]. Im [Global]-Teil werden die grundlegenden Einstellungen vor-
|
||||
genommen, z.B. der Server-Name und die Ports, auf denen er Verbindungen
|
||||
annehmen soll. In [Operator]-Abschnitten werden Server-Operatoren fest-
|
||||
gelegt und unter [Server] werden die Einstellungen fuer die Verbindung
|
||||
mit anderen Servern konfiguriert.
|
||||
|
||||
Die Bedeutung der einzelnen Variablen ist in der Beispiel-Konfiguration
|
||||
"doc/sample-ngircd.conf" erklaert, die bei "make install" auch als
|
||||
"ngircd.conf" in /usr/local/etc installiert wird, wenn dort noch keine
|
||||
Konfigurationsdatei vorhanden ist.
|
||||
|
||||
|
||||
IV. Kommandozeilen-Optionen
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Folgende Parameter koennen dem ngIRCd u.a. uebergeben werden:
|
||||
|
||||
-f, --config <file>
|
||||
Der Daemon wird angewiesen, statt der Standard-Konfigurationsdatei
|
||||
/usr/local/etc/ngircd.conf die Datei <file> einzulesen.
|
||||
|
||||
-n, --nodaemon
|
||||
ngIRCd soll im Fordergrund laufen; alle Meldungen werden zusaetzlich
|
||||
zum Syslog auch auf der Konsole ausgegeben.
|
||||
|
||||
-p, --passive
|
||||
Verbindungen zu anderen Servern (wie in der Konfigurationsdatei in
|
||||
[Server]-Abschnitten definiert) werden nicht automatisch hergestellt.
|
||||
|
||||
--configtest
|
||||
Die Konfigurationsdatei wird eingelesen, ueberprueft und so aus-
|
||||
gegeben, wie sie vom ngIRCd interpretiert wurde. Danach beendet
|
||||
sich der Server wieder.
|
||||
|
||||
Mit dem Parameter "--help" werden alle unterstuetzten Parameter angezeigt,
|
||||
mit "--version" die Versionsnummer. Bei beiden Parametern beendet sich der
|
||||
Server nach der Ausgabe wieder.
|
||||
|
||||
|
||||
--
|
||||
$Id: INSTALL,v 1.9 2002/12/18 12:19:07 alex Exp $
|
411
INSTALL.md
411
INSTALL.md
@@ -1,411 +0,0 @@
|
||||
# [ngIRCd](https://ngircd.barton.de) - Installation
|
||||
|
||||
This document describes how to install ngIRCd, the lightweight Internet Relay
|
||||
Chat (IRC) server.
|
||||
|
||||
The first section lists noteworthy changes to earlier releases; you definitely
|
||||
should read this when upgrading your setup! But you can skip over this section
|
||||
when you are working on a fresh installation.
|
||||
|
||||
The subsequent sections describe the steps required to build and install ngIRCd
|
||||
_from sources_. The information given here is not relevant when you are using
|
||||
packages provided by your operating system vendor or third-party repositories!
|
||||
|
||||
Please see the file `doc/QuickStart.md` in the `doc/` directory or on
|
||||
[GitHub](https://github.com/ngircd/ngircd/blob/master/doc/QuickStart.md) for
|
||||
information about _setting up_ and _running_ ngIRCd, including some real-world
|
||||
configuration examples.
|
||||
|
||||
## Upgrade Information
|
||||
|
||||
This section lists important updates and breaking changes that you should be
|
||||
aware of *before* starting the upgrade:
|
||||
|
||||
Differences to version 26
|
||||
|
||||
- **Attention**:
|
||||
Starting with release 27, ngIRCd validates SSL/TLS certificates on outgoing
|
||||
server-server links by default and drops(!) connections when the remote
|
||||
certificate is invalid (for example self-signed, expired, not matching the
|
||||
host name, ...). Therefore you have to make sure that all relevant
|
||||
*certificates are valid* (or to disable certificate validation on this
|
||||
connection using the new `SSLVerify = false` setting in the affected
|
||||
`[Server]` block, where the remote certificate is not valid and you can not
|
||||
fix this issue).
|
||||
|
||||
Differences to version 25
|
||||
|
||||
- **Attention**:
|
||||
All already deprecated legacy options (besides the newly deprecated *Key* and
|
||||
*MaxUsers* settings, see below) were removed in ngIRCd 26, so make sure to
|
||||
update your configuration before upgrading, if you haven't done so already
|
||||
(you got a warning on daemon startup when using deprecated options): you can
|
||||
check your configuration using `ngircd --configtest` -- which is a good idea
|
||||
anyway ;-)
|
||||
|
||||
- Setting modes for predefined channels in *[Channel]* sections has been
|
||||
enhanced: now you can set *all* modes, like in IRC "MODE" commands, and have
|
||||
this setting multiple times per *[Channel]* block. Modifying lists (ban list,
|
||||
invite list, exception list) is supported, too.
|
||||
|
||||
Both the *Key* and *MaxUsers* settings are now deprecated and should be
|
||||
replaced by `Modes = +l <limit>` and `Modes = +k <key>` respectively.
|
||||
|
||||
Differences to version 22.x
|
||||
|
||||
- The *NoticeAuth* `ngircd.conf` configuration variable has been renamed to
|
||||
*NoticeBeforeRegistration*. The old *NoticeAuth* variable still works but
|
||||
is deprecated now.
|
||||
|
||||
- The default value of the SSL *CipherList* variable has been changed to
|
||||
"HIGH:!aNULL:@STRENGTH:!SSLv3" (OpenSSL) and "SECURE128:-VERS-SSL3.0"
|
||||
(GnuTLS) to disable the old SSLv3 protocol by default.
|
||||
|
||||
To enable connections of clients still requiring the weak SSLv3 protocol,
|
||||
the *CipherList* must be set to its old value (not recommended!), which
|
||||
was "HIGH:!aNULL:@STRENGTH" (OpenSSL) and "SECURE128" (GnuTLS), see below.
|
||||
|
||||
Differences to version 20.x
|
||||
|
||||
- Starting with ngIRCd 21, the ciphers used by SSL are configurable and
|
||||
default to "HIGH:!aNULL:@STRENGTH" (OpenSSL) or "SECURE128" (GnuTLS).
|
||||
Previous version were using the OpenSSL or GnuTLS defaults, "DEFAULT"
|
||||
and "NORMAL" respectively.
|
||||
|
||||
- When adding GLINE's or KLINE's to ngIRCd 21 (or newer), all clients matching
|
||||
the new mask will be KILL'ed. This was not the case with earlier versions
|
||||
that only added the mask but didn't kill already connected users.
|
||||
|
||||
- The *PredefChannelsOnly* configuration variable has been superseded by the
|
||||
new *AllowedChannelTypes* variable. It is still supported and translated to
|
||||
the appropriate *AllowedChannelTypes* setting but is deprecated now.
|
||||
|
||||
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 operators, 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.x
|
||||
|
||||
- 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.x
|
||||
|
||||
- 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`!).
|
||||
|
||||
## Standard Installation
|
||||
|
||||
*Note*: This sections describes installing ngIRCd *from sources*. If you use
|
||||
packages available for your operating system distribution you should skip over
|
||||
and continue with the *Configuration* section, see below.
|
||||
|
||||
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` script") should be no problem.
|
||||
|
||||
The normal installation procedure after getting (and expanding) the source
|
||||
files (using a distribution archive or Git) is as following:
|
||||
|
||||
1) Satisfy prerequisites
|
||||
2) `./autogen.sh` [only necessary when using "raw" sources with Git]
|
||||
3) `./configure`
|
||||
4) `make`
|
||||
5) `make install`
|
||||
|
||||
(Please see details below!)
|
||||
|
||||
Now the newly compiled executable "ngircd" is installed in its standard
|
||||
location, `/usr/local/sbin/`.
|
||||
|
||||
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`.
|
||||
|
||||
The next step is to configure and afterwards start the daemon. See the section
|
||||
*Configuration* below.
|
||||
|
||||
### Satisfy prerequisites
|
||||
|
||||
When building from source, you'll need some other software to build ngIRCd:
|
||||
for example a working C compiler, make tool, and a few libraries depending on
|
||||
the feature set you want to enable at compile time (like IDENT, SSL, and PAM).
|
||||
|
||||
And if you aren't using a distribution archive ("tar.gz" file), but cloned the
|
||||
plain source archive, you need a few additional tools to generate the build
|
||||
system itself: GNU automake and autoconf, as well as pkg-config.
|
||||
|
||||
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:
|
||||
|
||||
#### Red Hat / Fedora based distributions
|
||||
|
||||
``` shell
|
||||
yum install \
|
||||
autoconf automake expect gcc glibc-devel gnutls-devel \
|
||||
libident-devel make pam-devel pkg-config tcp_wrappers-devel \
|
||||
telnet zlib-devel
|
||||
```
|
||||
|
||||
*Note:* More recent versions use the DNF package manager; so substitute "yum"
|
||||
with "dnf" in the command above. And neither "libident-devel" (IDENT support)
|
||||
nor "tcp_wrappers-devel" (TCP Wrappers) are provided any more!
|
||||
|
||||
So the resulting command looks like this:
|
||||
|
||||
``` shell
|
||||
dnf install \
|
||||
autoconf automake expect gcc glibc-devel gnutls-devel \
|
||||
make pam-devel pkg-config telnet zlib-devel
|
||||
```
|
||||
|
||||
#### Debian / Ubuntu based distributions
|
||||
|
||||
``` shell
|
||||
apt-get install \
|
||||
autoconf automake build-essential expect libgnutls28-dev \
|
||||
libident-dev libpam-dev pkg-config libwrap0-dev libz-dev telnet
|
||||
```
|
||||
|
||||
#### ArchLinux based distributions
|
||||
|
||||
``` shell
|
||||
pacman -S --needed \
|
||||
autoconf automake expect gcc gnutls inetutils libident libwrap \
|
||||
make pam pkg-config zlib
|
||||
```
|
||||
|
||||
#### macOS with Homebrew
|
||||
|
||||
To build ngIRCd on Apple macOS, you need either Xcode or the command line
|
||||
development tools. You can install the latter with the `xcode-select --install`
|
||||
command.
|
||||
|
||||
Additional tools and libraries that are not part of macOS itself are best
|
||||
installed with the [Homebrew](https://brew.sh) package manager:
|
||||
|
||||
``` shell
|
||||
brew install autoconf automake gnutls libident pkg-config
|
||||
```
|
||||
|
||||
Note: To actually use the GnuTLS and IDENT libraries installed by Homebrew, you
|
||||
need to pass the installation path to the `./configure` command (see below). For
|
||||
example like this:
|
||||
|
||||
``` shell
|
||||
./configure --with-gnutls=$(brew --prefix) --with-ident=$(brew --prefix) [...]
|
||||
```
|
||||
|
||||
### `./autogen.sh`
|
||||
|
||||
The first step, to run `./autogen.sh`, is *only* necessary if the `configure`
|
||||
script itself isn't already generated and available. This never happens in
|
||||
official ("stable") releases in "tar.gz" archives, but when cloning the source
|
||||
code repository using Git.
|
||||
|
||||
**This step is therefore only interesting for developers!**
|
||||
|
||||
The `autogen.sh` script produces the `Makefile.in`'s, which are necessary for
|
||||
the configure script itself, and some more files for `make(1)`.
|
||||
|
||||
To run `autogen.sh` you'll need GNU autoconf, GNU automake and pkg-config: at
|
||||
least autoconf 2.61 and automake 1.10 are required, newer is better. But don't
|
||||
use automake 1.12 or newer for creating distribution archives: it will work
|
||||
but lack "de-ANSI-fication" 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.
|
||||
|
||||
Again: "end users" do not need this step and neither need GNU autoconf nor GNU
|
||||
automake at all!
|
||||
|
||||
### `./configure`
|
||||
|
||||
The `configure` script is used to detect local system dependencies.
|
||||
|
||||
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:
|
||||
|
||||
``` shell
|
||||
CFLAGS=-static ./configure [--your-options ...]
|
||||
```
|
||||
|
||||
Then you can use a void directory as ChrootDir (like OpenSSH's `/var/empty`).
|
||||
|
||||
### `make`
|
||||
|
||||
The `make(1)` command uses the `Makefile`'s produced by `configure` and
|
||||
compiles the ngIRCd daemon.
|
||||
|
||||
### `make install`
|
||||
|
||||
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.
|
||||
|
||||
These files and folders will be installed by default:
|
||||
|
||||
- `/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
|
||||
|
||||
### 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(2)` and
|
||||
`poll(2)` API which should be supported by most UNIX-like operating systems,
|
||||
or the more efficient and flexible `epoll(7)` (Linux >=2.6), `kqueue(2)`
|
||||
(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(7)` API, support for `select(2)` 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.md` for details.
|
||||
|
||||
- IPv6 (autodetected by default):
|
||||
|
||||
`--enable-ipv6` / `--disable-ipv6`
|
||||
|
||||
Enable (disable) support for version 6 of the Internet Protocol, which should
|
||||
be available on most modern UNIX-like operating systems by default.
|
21
MacOSX/Makefile.am
Normal file
21
MacOSX/Makefile.am
Normal file
@@ -0,0 +1,21 @@
|
||||
#
|
||||
# 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-
|
20
MacOSX/ngircd.pbproj/Makefile.am
Normal file
20
MacOSX/ngircd.pbproj/Makefile.am
Normal file
@@ -0,0 +1,20 @@
|
||||
#
|
||||
# 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-
|
1332
MacOSX/ngircd.pbproj/project.pbxproj
Normal file
1332
MacOSX/ngircd.pbproj/project.pbxproj
Normal file
File diff suppressed because it is too large
Load Diff
51
Makefile.am
51
Makefile.am
@@ -1,48 +1,31 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
|
||||
# Copyright (c)2001,2002 by 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.
|
||||
# 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.10 2002/10/01 09:57:08 alex Exp $
|
||||
#
|
||||
|
||||
SUBDIRS = doc src man contrib
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
|
||||
EXTRA_DIST = \
|
||||
AUTHORS.md \
|
||||
INSTALL.md \
|
||||
README.md \
|
||||
autogen.sh \
|
||||
configure.ng \
|
||||
.clang_complete \
|
||||
.dockerignore \
|
||||
.mailmap
|
||||
|
||||
clean-local:
|
||||
rm -f build-stamp*
|
||||
SUBDIRS = doc MacOSX src man contrib
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -rf autom4te.cache
|
||||
rm -f Makefile.in Makefile aclocal.m4 configure configure.ac
|
||||
rm -f ar-lib mkinstalldirs missing depcomp install-sh
|
||||
rm -f config.log debian
|
||||
rm -f Makefile.in Makefile aclocal.m4 configure
|
||||
rm -f mkinstalldirs missing depcomp install-sh
|
||||
rm -f config.log
|
||||
|
||||
testsuite:
|
||||
${MAKE} -C src/testsuite check
|
||||
|
||||
srcdoc:
|
||||
${MAKE} -C doc/src srcdoc
|
||||
lint:
|
||||
make -C src/ngircd lint
|
||||
|
||||
rpm: distcheck
|
||||
rpmbuild -ta ngircd-$(VERSION).tar.gz
|
||||
|
||||
deb:
|
||||
[ -f debian/rules ] || ln -s contrib/Debian debian
|
||||
dpkg-buildpackage --build=binary
|
||||
|
||||
.PHONY: deb rpm srcdoc testsuite
|
||||
rpm -ta ngircd-*.tar.gz
|
||||
|
||||
# -eof-
|
||||
|
105
README
Normal file
105
README
Normal file
@@ -0,0 +1,105 @@
|
||||
|
||||
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.
|
||||
|
||||
-- README / Liesmich --
|
||||
|
||||
Ilja Osthoff, <ilja@glide.ath.cx>
|
||||
|
||||
|
||||
+-----------------------------------------------------------------------+
|
||||
| Please note: English translations of some of the german documentation |
|
||||
| files can be found in the directory "doc/en" -- please have a look! |
|
||||
+-----------------------------------------------------------------------+
|
||||
|
||||
|
||||
I. Einfuehrung
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
ngIRCd ist ein Open-Source-Server fuer den Internet Relay Chat (IRC), der
|
||||
unter der GNU General Public License (http://www.gnu.org/licenses/gpl.html)
|
||||
entwickelt wird. ngIRCd steht fuer "next generation IRC daemon", er ist von
|
||||
Grund auf neu geschrieben, also nicht wie die meisten anderen IRCd's vom
|
||||
Urvater, dem Daemon des IRCNet abgeleitet.
|
||||
|
||||
|
||||
II. Status
|
||||
~~~~~~~~~~~
|
||||
|
||||
Zur Zeit befindet sich der ngIRCd noch in Entwicklung, manche Features sind
|
||||
noch nicht implementiert, andere nur teilweise.
|
||||
|
||||
Bisher (mehr oder wenig vollstaendig) implementierte IRC-Befehle:
|
||||
|
||||
ADMIN, AWAY, CHANINFO, CONNECT, DIE, ERROR, INVITE, ISON, JOIN, KICK, KILL,
|
||||
LINKS, LIST, LUSERS, MODE, MOTD, NAMES, NICK, NJOIN, NOTICE, OPER, PART,
|
||||
PASS, PING, PONG, PRIVMSG, QUIT, RESTART, SERVER, SQUIT, TIME, TOPIC,
|
||||
USERHOST, USER, VERSION, WHO, WHOIS.
|
||||
|
||||
|
||||
III. Features (oder: warum gerade ngIRCd?)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- keine Probleme mit Servern, deren IP-Adresse dynamisch ist,
|
||||
- einfache, uebersichtliche Konfigurationsdatei,
|
||||
- frei verfuegbarer C-Quellcode.
|
||||
- ngIRCd wird aktiv weiterentwickelt.
|
||||
- unterstuetzte Plattformen (getestete Version): AIX (3.2.5), A/UX (3.0.1),
|
||||
FreeBSD/i386 (4.5), HP-UX (10.20), IRIX (6.5), Linux (2.x), Mac OS X (10.x),
|
||||
NetBSD (1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), Windows mit Cygwin.
|
||||
|
||||
|
||||
IV. Dokumentation
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Im Paket enthalten ist u.a.:
|
||||
|
||||
- README: das Dokument, das Du gerade liest :-)
|
||||
- INSTALL: Hinweise zur Installation des ngIRCd
|
||||
- NEWS: sagt der Name schon :-)
|
||||
- ChangeLog: die komplette History des ngIRCd
|
||||
- doc/FAQ.txt: haeufige Fragen und Antworten zum ngIRCd
|
||||
- doc/CVS.txt: Hinweise zum CVS-System
|
||||
- doc/RFC.txt: Infos ueber die RFC's
|
||||
- doc/sample-ngircd.conf: Beispiel-Konfigurationsdatei
|
||||
- doc/README-AUX.txt: Installationshinweise fuer A/UX
|
||||
- doc/README-BeOS.txt: dito fuer BeOS
|
||||
|
||||
- doc/en/: englischsprachige Dokumentation
|
||||
|
||||
|
||||
V. Bezugsquellen
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Die Homepage des ngIRCd ist: <http://arthur.ath.cx/~alex/ngircd>; dort
|
||||
findest du immer die neusten Informationen ueber den ngIRCd und die aktuellen
|
||||
freigegebenen ("stabilen") Releases.
|
||||
|
||||
Falls du dich fuer die aktuellen Entwicklungs-Versionen (die jedoch nicht
|
||||
immer "stabil" sind) interessierst, dann lese bitte den Punkt "CVS" auf der
|
||||
Homepage und die Datei "doc/CVS.txt", die die Verwendung des "Concurrent
|
||||
Versioning System" (CVS) beschreibt.
|
||||
|
||||
|
||||
VI. Bugs
|
||||
~~~~~~~~
|
||||
|
||||
Wenn du im ngIRCd Bugs finden solltest (so was soll ja auch vorkommen :-),
|
||||
dann lege bitte einen Bug-Report ueber diese URL an:
|
||||
|
||||
<http://arthur.ath.cx/~alex/ngircd/#bugs>
|
||||
|
||||
Dort kannst du dich auch ueber bekannte Fehler informieren.
|
||||
|
||||
Falls du noch Anregungen, Kritik, Patches etc. pp. zum ngIRCd hast, dann
|
||||
bitte einfach eine Mail an <alex@barton.de> oder <alex@arthur.ath.cx>
|
||||
schreiben.
|
||||
|
||||
|
||||
--
|
||||
$Id: README,v 1.14 2002/11/24 18:48:59 alex Exp $
|
101
README.md
101
README.md
@@ -1,101 +0,0 @@
|
||||
# [ngIRCd](https://ngircd.barton.de) - Internet Relay Chat Server
|
||||
|
||||
## Introduction
|
||||
|
||||
*ngIRCd* is a free, portable and lightweight *Internet Relay Chat* ([IRC])
|
||||
server for small or private networks, developed under the terms of the GNU
|
||||
General Public License ([GPL]); please see the file `COPYING` for licensing
|
||||
information.
|
||||
|
||||
The server is quite easy to configure and runs as a single-node server or can
|
||||
be part of a network of ngIRCd servers in a LAN or across the internet. It
|
||||
optionally supports the IPv6 protocol, SSL/TLS-protected client-server and
|
||||
server-server links, the Pluggable Authentication Modules (PAM) system for user
|
||||
authentication, IDENT requests, and character set conversion for legacy
|
||||
clients.
|
||||
|
||||
The name ngIRCd stands for *next-generation IRC daemon*, which is a little bit
|
||||
exaggerated: *lightweight Internet Relay Chat server* most probably would have
|
||||
been a better name :-)
|
||||
|
||||
## Status
|
||||
|
||||
Development of *ngIRCd* started back in 2001: The server has been written from
|
||||
scratch in C, tries to follow all relevant standards, and is not based on the
|
||||
forefather, the daemon of the IRCNet.
|
||||
|
||||
It is not the goal of ngIRCd to implement all the nasty behaviors of the
|
||||
original `ircd` or corner-cases in the RFCs, but to implement most of the useful
|
||||
commands and semantics that are used by existing clients.
|
||||
|
||||
*ngIRCd* is used as the daemon in real-world in-house and public IRC networks
|
||||
and included in the package repositories of various operating systems.
|
||||
|
||||
## Advantages and strengths
|
||||
|
||||
- Well arranged (lean) configuration file.
|
||||
- Simple to build, install, configure, and maintain.
|
||||
- Supports IPv6 and SSL.
|
||||
- Can use PAM for user authentication.
|
||||
- Lots of popular user and channel modes are implemented.
|
||||
- Supports "cloaking" of users.
|
||||
- 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, macOS, NetBSD, OpenBSD, Solaris and Windows with WSL or Cygwin.
|
||||
|
||||
## Documentation
|
||||
|
||||
The **homepage** of the ngIRCd project is <https://ngircd.barton.de>.
|
||||
|
||||
The `INSTALL.md` document describes how to _install_ and _upgrade_ ngIRCd. It
|
||||
is included in all distribution archives and available online on
|
||||
[GitHub](https://github.com/ngircd/ngircd/blob/master/INSTALL.md).
|
||||
|
||||
Please see the file `doc/QuickStart.md` in the `doc/` directory or on
|
||||
[GitHub](https://github.com/ngircd/ngircd/blob/master/doc/QuickStart.md) for
|
||||
information about _setting up_ and _running_ ngIRCd, including some real-world
|
||||
configuration examples.
|
||||
|
||||
More information can be found in a couple of files in the `doc/` directory
|
||||
(online on [GitHub](https://github.com/ngircd/ngircd/tree/master/doc)) and in
|
||||
the [documentation section](https://ngircd.barton.de/documentation) on the
|
||||
[homepage of ngIRCd](https://ngircd.barton.de).
|
||||
|
||||
In addition, ngIRCd comes with two _manual pages_: `ngircd(8)` (for the daemon)
|
||||
and `ngircd.conf(5)` (for its configuration file). They have even more details
|
||||
and list all possible command line parameters and configuration options. You
|
||||
can read them with the `man` command (when they are installed locally on your
|
||||
system, e.g. `man 8 ngircd` and `man 5 ngircd.conf`) or online here:
|
||||
|
||||
- Daemon:
|
||||
[ngircd(8)](https://ngircd.barton.de/man/ngircd.8.html)
|
||||
- Configuration file:
|
||||
[ngircd.conf(5)](https://ngircd.barton.de/man/ngircd.conf.5.html)
|
||||
|
||||
## Downloads & Source Code
|
||||
|
||||
You can find the latest information about the ngIRCd and the most recent
|
||||
stable release on the [news](https://ngircd.barton.de/news) and
|
||||
[downloads](https://ngircd.barton.de/download) pages of the homepage.
|
||||
|
||||
Visit our source code repository at [GitHub](https://github.com/ngircd/ngircd)
|
||||
if you are interested in the latest development code.
|
||||
|
||||
## Problems, Bugs, Patches
|
||||
|
||||
Please don't hesitate to contact us if you encounter problems:
|
||||
|
||||
- On IRC: <irc://irc.barton.de/ngircd>
|
||||
- Via the mailing list: <ngircd@lists.barton.de>
|
||||
|
||||
See <https://ngircd.barton.de/support> for details.
|
||||
|
||||
If you find any bugs in ngIRCd (which most probably will be there ...), please
|
||||
report them to our issue tracker at GitHub:
|
||||
|
||||
- Bug tracker: <https://github.com/ngircd/ngircd/issues>
|
||||
- Patches, "pull requests": <https://github.com/ngircd/ngircd/pulls>
|
||||
|
||||
[IRC]: https://wikipedia.org/wiki/Internet_Relay_Chat
|
||||
[GPL]: https://wikipedia.org/wiki/GNU_General_Public_License
|
258
autogen.sh
258
autogen.sh
@@ -1,258 +1,16 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2024 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".
|
||||
# $Id: autogen.sh,v 1.3 2002/03/12 14:37:51 alex Exp $
|
||||
#
|
||||
|
||||
Check_Tool()
|
||||
{
|
||||
searchlist="$1"
|
||||
major="$2"
|
||||
minor="$3"
|
||||
|
||||
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
|
||||
return 1
|
||||
}
|
||||
|
||||
Search()
|
||||
{
|
||||
[ $# -lt 2 ] && return 1
|
||||
[ $# -gt 3 ] && return 1
|
||||
|
||||
searchlist="$1"
|
||||
major="$2"
|
||||
minor_pref="$3"
|
||||
minor=99
|
||||
|
||||
[ -n "$PREFIX" ] && searchlist="${PREFIX}/$1 ${PREFIX}/bin/$1 $searchlist"
|
||||
|
||||
if [ -n "$minor_pref" ]; then
|
||||
Check_Tool "$searchlist" "$major" "$minor_pref" && return 0
|
||||
fi
|
||||
|
||||
for name in $searchlist; do
|
||||
$EXIST "${name}" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
"${name}" --version 2>&1 \
|
||||
| grep -v "environment variable" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "${name}"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
while [ $minor -ge 0 ]; do
|
||||
Check_Tool "$searchlist" "$major" "$minor" && return 0
|
||||
minor=$(expr $minor - 1)
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
Notfound()
|
||||
{
|
||||
echo "Error: $* not found!"
|
||||
echo 'Please install supported versions of GNU autoconf, GNU automake'
|
||||
echo 'and pkg-config: see the INSTALL file for details.'
|
||||
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 11)
|
||||
[ "$VERBOSE" = "1" ] && echo " - ACLOCAL=$ACLOCAL"
|
||||
[ -z "$AUTOHEADER" ] && AUTOHEADER=$(Search autoheader 2)
|
||||
[ "$VERBOSE" = "1" ] && echo " - AUTOHEADER=$AUTOHEADER"
|
||||
[ -z "$AUTOMAKE" ] && AUTOMAKE=$(Search automake 1 11)
|
||||
[ "$VERBOSE" = "1" ] && echo " - AUTOMAKE=$AUTOMAKE"
|
||||
[ -z "$AUTOCONF" ] && AUTOCONF=$(Search autoconf 2)
|
||||
[ "$VERBOSE" = "1" ] && echo " - AUTOCONF=$AUTOCONF"
|
||||
|
||||
AUTOCONF_VERSION=$(echo "$AUTOCONF" | cut -d'-' -f2-)
|
||||
[ -n "$AUTOCONF_VERSION" ] && [ "$AUTOCONF_VERSION" != "autoconf" ] \
|
||||
&& export AUTOCONF_VERSION || unset AUTOCONF_VERSION
|
||||
[ "$VERBOSE" = "1" ] && echo " - AUTOCONF_VERSION=$AUTOCONF_VERSION"
|
||||
AUTOMAKE_VERSION=$(echo $AUTOMAKE | cut -d'-' -f2-)
|
||||
[ -n "$AUTOMAKE_VERSION" ] && [ "$AUTOMAKE_VERSION" != "automake" ] \
|
||||
&& export AUTOMAKE_VERSION || unset AUTOMAKE_VERSION
|
||||
[ "$VERBOSE" = "1" ] && echo " - AUTOMAKE_VERSION=$AUTOMAKE_VERSION"
|
||||
|
||||
[ $# -gt 0 ] && CONFIGURE_ARGS=" $*" || CONFIGURE_ARGS=""
|
||||
[ -z "$GO" ] && [ -n "$CONFIGURE_ARGS" ] && GO=1
|
||||
|
||||
# Verify that all tools have been found
|
||||
command -v pkg-config >/dev/null || Notfound pkg-config
|
||||
[ -z "$ACLOCAL" ] && Notfound aclocal
|
||||
[ -z "$AUTOHEADER" ] && Notfound autoheader
|
||||
[ -z "$AUTOMAKE" ] && Notfound automake
|
||||
[ -z "$AUTOCONF" ] && Notfound autoconf
|
||||
|
||||
AM_VERSION=$($AUTOMAKE --version | head -n 1 | sed -e 's/.* //g')
|
||||
ifs=$IFS; IFS="."; set $AM_VERSION; IFS=$ifs
|
||||
AM_MAJOR="$1"; AM_MINOR="$2"
|
||||
echo "Detected automake $AM_VERSION ..."
|
||||
|
||||
AM_MAKEFILES="src/ipaddr/Makefile.ng src/ngircd/Makefile.ng src/testsuite/Makefile.ng src/tool/Makefile.ng"
|
||||
|
||||
# De-ANSI-fication?
|
||||
if [ "$AM_MAJOR" -eq "1" ] && [ "$AM_MINOR" -lt "12" ]; then
|
||||
# automake < 1.12 => automatic de-ANSI-fication support available
|
||||
echo " - Enabling de-ANSI-fication support."
|
||||
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."
|
||||
sed -e "s|^__ng_PROTOTYPES__|AC_C_PROTOTYPES|g" configure.ng >configure.ac
|
||||
DEANSI_START="#"
|
||||
DEANSI_END=" (disabled by ./autogen.sh script)"
|
||||
fi
|
||||
# Serial test harness?
|
||||
if [ "$AM_MAJOR" -eq "1" ] && [ "$AM_MINOR" -ge "13" ]; then
|
||||
# automake >= 1.13 => enforce "serial test harness"
|
||||
echo " - Enforcing serial test harness."
|
||||
SERIAL_TESTS="serial-tests"
|
||||
else
|
||||
# automake < 1.13 => no new test harness, nothing to do
|
||||
# shellcheck disable=SC2034
|
||||
SERIAL_TEST=""
|
||||
if [ -f configure ]; then
|
||||
echo "autogen.sh: configure-Skript existiert bereits ..."
|
||||
fi
|
||||
|
||||
sed -e "s|^__ng_Makefile_am_template__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}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__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}../portab/ansi2knr${DEANSI_END}|g" \
|
||||
$makefile_ng >$makefile_am
|
||||
done
|
||||
|
||||
export ACLOCAL AUTOHEADER AUTOMAKE AUTOCONF
|
||||
|
||||
# Generate files
|
||||
echo "Generating files using \"$AUTOCONF\" and \"$AUTOMAKE\" ..."
|
||||
Run $ACLOCAL && \
|
||||
Run $AUTOCONF && \
|
||||
Run $AUTOHEADER && \
|
||||
Run $AUTOMAKE --add-missing --no-force
|
||||
|
||||
if [ $? -eq 0 ] && [ -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-
|
||||
|
2076
config.guess
vendored
Executable file → Normal file
2076
config.guess
vendored
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
2735
config.sub
vendored
Executable file → Normal file
2735
config.sub
vendored
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
258
configure.in
Normal file
258
configure.in
Normal file
@@ -0,0 +1,258 @@
|
||||
#
|
||||
# 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.69.2.1 2002/12/18 16:50:29 alex Exp $
|
||||
#
|
||||
|
||||
# -- Initialisierung --
|
||||
|
||||
AC_INIT
|
||||
AC_PREREQ(2.50)
|
||||
AC_CANONICAL_TARGET
|
||||
AC_CONFIG_SRCDIR(src/config.h.in)
|
||||
AM_INIT_AUTOMAKE(ngircd,0.6.0-pre1)
|
||||
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([USE_ZLIB], [Define if zlib compression should be enabled])
|
||||
AH_TEMPLATE([IRCPLUS], [Define if IRC+ protocol should be used])
|
||||
|
||||
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
|
||||
|
||||
# -- Hilfsprogramme --
|
||||
|
||||
AC_PROG_AWK
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_RANLIB
|
||||
|
||||
# -- Compiler Features --
|
||||
|
||||
AC_LANG_C
|
||||
|
||||
AM_C_PROTOTYPES
|
||||
AC_C_CONST
|
||||
|
||||
# -- Defines --
|
||||
|
||||
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
|
||||
|
||||
if test `uname` = "HP-UX"; then
|
||||
# unter HP-UX 11.11 muss _XOPEN_SOURCE_EXTENDED definiert sein.
|
||||
AC_MSG_RESULT([detected HP-UX, defining _XOPEN_SOURCE_EXTENDED])
|
||||
CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
|
||||
fi
|
||||
|
||||
# -- Header --
|
||||
|
||||
AC_HEADER_STDC
|
||||
|
||||
AC_HEADER_TIME
|
||||
|
||||
AC_HEADER_SYS_WAIT
|
||||
|
||||
AC_CHECK_HEADERS([ \
|
||||
ctype.h errno.h fcntl.h netdb.h netinet/in.h stdlib.h string.h \
|
||||
strings.h sys/socket.h sys/time.h unistd.h \
|
||||
],,AC_MSG_ERROR([required C header missing!]))
|
||||
|
||||
AC_CHECK_HEADERS(arpa/inet.h ctype.h malloc.h stdint.h sys/select.h varargs.h)
|
||||
|
||||
# -- 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)
|
||||
])
|
||||
|
||||
AC_TYPE_SIGNAL
|
||||
|
||||
AC_TYPE_SIZE_T
|
||||
|
||||
# -- Libraries --
|
||||
|
||||
AC_CHECK_LIB(UTIL,memmove)
|
||||
AC_CHECK_LIB(socket,bind)
|
||||
AC_CHECK_LIB(nsl,gethostent)
|
||||
|
||||
# -- Funktionen --
|
||||
|
||||
AC_FUNC_MALLOC
|
||||
|
||||
AC_FUNC_FORK
|
||||
|
||||
AC_FUNC_STRFTIME
|
||||
|
||||
AC_CHECK_FUNCS([ \
|
||||
bind gethostbyaddr gethostbyname gethostname inet_ntoa memmove \
|
||||
memset select setsockopt socket strcasecmp strchr strerror \
|
||||
strstr waitpid \
|
||||
],,AC_MSG_ERROR([required function missing!]))
|
||||
|
||||
AC_CHECK_FUNCS(inet_aton isdigit sigaction snprintf vsnprintf)
|
||||
|
||||
# -- Konfigurationsoptionen --
|
||||
|
||||
x_syslog_on=no
|
||||
AC_ARG_ENABLE(syslog,
|
||||
[ --disable-syslog disable syslog (autodetected by default)],
|
||||
[ if test "$enableval" = "yes"; then
|
||||
AC_CHECK_HEADER(syslog.h, x_syslog_on=yes,
|
||||
AC_MSG_ERROR([Can't enable syslog: syslog.h not found!])
|
||||
)
|
||||
fi
|
||||
],
|
||||
[ AC_CHECK_HEADER(syslog.h, x_syslog_on=yes) ]
|
||||
)
|
||||
if test "$x_syslog_on" = "yes"; then
|
||||
AC_DEFINE(USE_SYSLOG, 1)
|
||||
AC_CHECK_LIB(be,syslog)
|
||||
fi
|
||||
|
||||
x_zlib_on=no
|
||||
AC_ARG_ENABLE(zlib,
|
||||
[ --disable-zlib disable zlib compression (autodetected by default)],
|
||||
[ if test "$enableval" = "yes"; then
|
||||
AC_CHECK_HEADER(zlib.h, x_zlib_on=yes,
|
||||
AC_MSG_ERROR([Can't enable zlib: zlib.h not found!])
|
||||
)
|
||||
fi
|
||||
],
|
||||
[ AC_CHECK_HEADER(zlib.h, x_zlib_on=yes) ]
|
||||
)
|
||||
if test "$x_zlib_on" = "yes"; then
|
||||
AC_DEFINE(USE_ZLIB, 1)
|
||||
AC_CHECK_LIB(z,deflate)
|
||||
fi
|
||||
|
||||
x_ircplus_on=yes
|
||||
AC_ARG_ENABLE(ircplus,
|
||||
[ --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)
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(sniffer,
|
||||
[ --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
|
||||
)
|
||||
|
||||
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)
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(strict-rfc,
|
||||
[ --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
|
||||
)
|
||||
|
||||
|
||||
# -- 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
|
||||
|
||||
the_CFLAGS="$CFLAGS"
|
||||
|
||||
CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'"
|
||||
|
||||
# -- Ausgabe der Dateien --
|
||||
|
||||
AC_OUTPUT([ \
|
||||
Makefile \
|
||||
doc/Makefile \
|
||||
doc/en/Makefile \
|
||||
MacOSX/Makefile \
|
||||
MacOSX/ngircd.pbproj/Makefile \
|
||||
src/Makefile \
|
||||
src/portab/Makefile \
|
||||
src/ngircd/Makefile \
|
||||
src/testsuite/Makefile \
|
||||
man/Makefile \
|
||||
contrib/Makefile \
|
||||
])
|
||||
|
||||
# -- Ergebnis --
|
||||
|
||||
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}`
|
||||
|
||||
echo " host: ${host}"
|
||||
echo " compiler: ${CC}"
|
||||
echo " compiler flags: ${the_CFLAGS}"
|
||||
echo " preprocessor flags: ${CPPFLAGS}"
|
||||
echo " linker flags: ${LDFLAGS}"
|
||||
echo " libraries: ${LIBS}"
|
||||
echo
|
||||
echo " 'ngircd' binary: $S"
|
||||
echo " configuration file: $C"
|
||||
echo " manual pages: $M"
|
||||
echo
|
||||
|
||||
echo $ECHO_N " active options: $ECHO_C"
|
||||
test "$x_syslog_on" = "yes" && echo $ECHO_N "Syslog $ECHO_C"
|
||||
test "$x_zlib_on" = "yes" && echo $ECHO_N "zLib $ECHO_C"
|
||||
test "$x_debug_on" = "yes" && echo $ECHO_N "Debug $ECHO_C"
|
||||
test "$x_sniffer_on" = "yes" && echo $ECHO_N "Sniffer $ECHO_C"
|
||||
test "$x_strict_rfc_on" = "yes" && echo $ECHO_N "Strict-RFC $ECHO_C"
|
||||
test "$x_ircplus_on" = "yes" && echo $ECHO_N "IRC+ $ECHO_C"
|
||||
echo; echo
|
||||
|
||||
# -eof-
|
850
configure.ng
850
configure.ng
@@ -1,850 +0,0 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2024 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@lists.barton.de],[ngircd],[https://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 foreign ]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_MKDIR_P
|
||||
AC_PROG_RANLIB
|
||||
|
||||
# -- Compiler Features --
|
||||
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
__ng_PROTOTYPES__
|
||||
|
||||
# -- Function Definitions --
|
||||
|
||||
AC_DEFUN([GCC_STACK_PROTECT_CC],[
|
||||
ssp_cc=yes
|
||||
# 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_LINK_IFELSE([AC_LANG_PROGRAM([],[])],[],[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
|
||||
])
|
||||
|
||||
AC_DEFUN([WORKING_GETADDRINFO],[
|
||||
AC_CHECK_FUNCS([getaddrinfo],[
|
||||
AC_MSG_CHECKING([whether getaddrinfo() works])
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netdb.h>
|
||||
#include <string.h>
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
struct addrinfo hints, *ai;
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_flags = AI_PASSIVE;
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
hints.ai_family = PF_UNSPEC;
|
||||
if(getaddrinfo(NULL, "0", &hints, &ai) != 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
]])],[
|
||||
AC_DEFINE([HAVE_WORKING_GETADDRINFO], 1, [getaddrinfo(0)])
|
||||
AC_MSG_RESULT(yes)
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
||||
])
|
||||
|
||||
AC_DEFUN([GCC_W_NO_FORMAT_TRUNC],[
|
||||
result=yes
|
||||
AC_MSG_CHECKING([whether ${CC} accepts -Wno-format-truncation])
|
||||
old_cflags="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror -Wno-format-truncation"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],[],[result=no])
|
||||
echo $result
|
||||
if test "X$result" = "Xyes"; then
|
||||
CFLAGS="$old_cflags -Wno-format-truncation"
|
||||
else
|
||||
CFLAGS="$old_cflags"
|
||||
fi
|
||||
])
|
||||
|
||||
# -- Hard coded system and compiler dependencies/features/options ... --
|
||||
|
||||
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
|
||||
GCC_W_NO_FORMAT_TRUNC
|
||||
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)\"' -DDOCDIR='\"\$(docdir)\"'"
|
||||
|
||||
# -- Headers --
|
||||
|
||||
AC_HEADER_STDC
|
||||
AC_HEADER_SYS_WAIT
|
||||
AC_HEADER_TIME
|
||||
|
||||
# Required header files
|
||||
AC_CHECK_HEADERS([ \
|
||||
fcntl.h \
|
||||
netdb.h \
|
||||
netinet/in.h \
|
||||
stdlib.h \
|
||||
string.h \
|
||||
strings.h \
|
||||
sys/socket.h \
|
||||
sys/time.h \
|
||||
sys/types.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/in_systm.h \
|
||||
netinet/ip.h \
|
||||
stdbool.h \
|
||||
stddef.h \
|
||||
stdint.h \
|
||||
sys/resource.h \
|
||||
sys/un.h \
|
||||
varargs.h \
|
||||
])
|
||||
|
||||
# -- Datatypes --
|
||||
|
||||
AC_MSG_CHECKING(whether socklen_t exists)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#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_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([
|
||||
arc4random \
|
||||
arc4random_stir \
|
||||
gai_strerror \
|
||||
getnameinfo \
|
||||
inet_aton \
|
||||
setgroups \
|
||||
setrlimit \
|
||||
sigaction \
|
||||
sigprocmask \
|
||||
snprintf \
|
||||
strdup \
|
||||
strlcat \
|
||||
strlcpy \
|
||||
strndup \
|
||||
strsignal \
|
||||
strtok_r \
|
||||
unsetenv \
|
||||
vsnprintf \
|
||||
waitpid \
|
||||
])
|
||||
|
||||
WORKING_GETADDRINFO
|
||||
|
||||
# -- 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
|
||||
PKG_CHECK_MODULES([OPENSSL], [libssl libcrypto],
|
||||
[LIBS="$LIBS $OPENSSL_LIBS" CFLAGS="$CFLAGS $OPENSSL_CFLAGS"
|
||||
AC_DEFINE(HAVE_LIBSSL, 1)],
|
||||
[AC_CHECK_LIB(crypto, BIO_s_mem)
|
||||
AC_CHECK_LIB(ssl, SSL_new)]
|
||||
)
|
||||
AC_CHECK_FUNCS(SSL_new, 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
|
||||
|
||||
AM_CONDITIONAL(HAVE_SSL, [test $x_ssl_lib != "no"])
|
||||
|
||||
# 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)
|
||||
saved_LIBS="$LIBS"
|
||||
LIBS="-lwrap $LIBS"
|
||||
LIBS_END="-lwrap $LIBS_END"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#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!])
|
||||
])
|
||||
LIBS="$saved_LIBS"
|
||||
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,
|
||||
AS_HELP_STRING([--with-iconv],
|
||||
[enable character conversion 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)
|
||||
if test "$x_iconv_on" != "yes"; then
|
||||
AC_CHECK_LIB(iconv, libiconv_open)
|
||||
AC_CHECK_FUNCS(libiconv_open, x_iconv_on=yes)
|
||||
fi
|
||||
if test "$x_iconv_on" != "yes"; then
|
||||
AC_MSG_ERROR([Can't enable libiconv support!])
|
||||
fi
|
||||
fi ]
|
||||
)
|
||||
if test "$x_iconv_on" = "yes"; then
|
||||
AC_DEFINE(ICONV, 1)
|
||||
fi
|
||||
fi
|
||||
|
||||
# enable support for IPv6?
|
||||
|
||||
x_ipv6_on=yes
|
||||
AC_ARG_ENABLE(ipv6,
|
||||
AS_HELP_STRING([--disable-ipv6],
|
||||
[disable IPv6 protocol support (autodetected by default)]),
|
||||
[ if test "$enableval" = "no"; then
|
||||
x_ipv6_on=no
|
||||
else
|
||||
AC_CHECK_FUNCS(
|
||||
[getaddrinfo getnameinfo],,
|
||||
AC_MSG_ERROR([required function missing for IPv6 support!])
|
||||
)
|
||||
fi
|
||||
],
|
||||
[ AC_CHECK_FUNCS([getaddrinfo getnameinfo],, x_ipv6_on=no)
|
||||
]
|
||||
)
|
||||
if test "$x_ipv6_on" = "yes"; then
|
||||
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, LDFLAGS and LIBS which were specified on the command
|
||||
# line or by some tests from above, but after running this script. Useful for
|
||||
# adding "-Werror", for example:
|
||||
test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END"
|
||||
test -n "$LDFLAGS_END" && LDFLAGS="$LDFLAGS $LDFLAGS_END"
|
||||
test -n "$LIBS_END" && LIBS="$LIBS $LIBS_END"
|
||||
|
||||
# -- Generate files --
|
||||
|
||||
AC_CONFIG_FILES([ \
|
||||
Makefile \
|
||||
contrib/Debian/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 ..."
|
||||
if test ! -f debian/rules -a -f contrib/Debian/rules; then
|
||||
ln -s contrib/Debian debian
|
||||
fi
|
||||
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
|
||||
|
||||
define(_automake_regex_,[[^AUTOMAKE_OPTIONS = [a-z .\-]*/portab/ansi2knr]])
|
||||
if ! grep "_automake_regex_" 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-
|
7
contrib/Debian/.gitignore
vendored
7
contrib/Debian/.gitignore
vendored
@@ -1,7 +0,0 @@
|
||||
*.log
|
||||
*.debhelper
|
||||
*.substvars
|
||||
debhelper-build-stamp
|
||||
files
|
||||
ngircd/
|
||||
ngircd.service
|
@@ -1,30 +0,0 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2024 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 = \
|
||||
changelog \
|
||||
control \
|
||||
copyright \
|
||||
ngircd.default \
|
||||
ngircd.pam \
|
||||
rules \
|
||||
watch \
|
||||
source/format
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
clean-local:
|
||||
rm -f *.log *.debhelper *.substvars
|
||||
rm -f debhelper-build-stamp files ngircd.service
|
||||
rm -rf .debhelper/ ngircd/
|
||||
|
||||
# -eof-
|
@@ -1,598 +0,0 @@
|
||||
ngircd (27-0ab1) unstable; urgency=medium
|
||||
|
||||
* New "upstream" release: ngIRCd 27.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Fri, 26 Apr 2024 16:52:14 +0200
|
||||
|
||||
ngircd (27~rc1-0ab1) unstable; urgency=medium
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 27.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sat, 13 Apr 2024 12:26:35 +0200
|
||||
|
||||
ngircd (26.1-0ab1) unstable; urgency=medium
|
||||
|
||||
* New "upstream" release: ngIRCd 26.1.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sat, 02 Jan 2021 14:31:51 +0100
|
||||
|
||||
ngircd (26-0ab1) unstable; urgency=medium
|
||||
|
||||
* New "upstream" release: ngIRCd 26.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sat, 20 Jun 2020 15:26:46 +0200
|
||||
|
||||
ngircd (26~rc2-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 2 for ngIRCd Release 26.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Thu, 11 Jun 2020 17:21:17 +0200
|
||||
|
||||
ngircd (26~rc1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 26.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sun, 10 May 2020 17:13:17 +0200
|
||||
|
||||
ngircd (25-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 25.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Wed, 23 Jan 2019 23:13:03 +0100
|
||||
|
||||
ngircd (25~rc1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 25.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sat, 11 Aug 2018 21:35:08 +0200
|
||||
|
||||
ngircd (24-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 24.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Fri, 20 Jan 2017 16:43:09 +0100
|
||||
|
||||
ngircd (24~rc1-0ab2) unstable; urgency=low
|
||||
|
||||
* Use OpenSSL instead of GnuTLS for SSL-enabled packages.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Fri, 20 Jan 2017 15:20:07 +0100
|
||||
|
||||
ngircd (24~rc1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 24.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sat, 07 Jan 2017 18:58:02 +0100
|
||||
|
||||
ngircd (23-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 23.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Mon, 16 Nov 2015 21:27:03 +0100
|
||||
|
||||
ngircd (23~rc1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 23.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sun, 06 Sep 2015 16:55:23 +0200
|
||||
|
||||
ngircd (22.1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 22.1.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Mon, 06 Apr 2015 14:34:50 +0200
|
||||
|
||||
ngircd (22-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 22.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sat, 11 Oct 2014 20:29:03 +0200
|
||||
|
||||
ngircd (22~rc1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 22.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Mon, 29 Sep 2014 17:07:55 +0200
|
||||
|
||||
ngircd (21.1-0ab2) unstable; urgency=low
|
||||
|
||||
* Use correct package name in pathname to "HelpFile" (Command.txt)
|
||||
in "ngircd-full" and "ngircd-full-dbg" packages.
|
||||
* Don't adjust path names that are correct by default.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Mon, 14 Jul 2014 11:20:17 +0200
|
||||
|
||||
ngircd (21.1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 21.1.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Tue, 25 Mar 2014 14:44:59 +0100
|
||||
|
||||
ngircd (21-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 21.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Wed, 30 Oct 2013 22:13:55 +0100
|
||||
|
||||
ngircd (21~rc2-0ab3) unstable; urgency=low
|
||||
|
||||
* Fix sed(1) rules adjusting "ngircd-full" package, error introduced
|
||||
by last commit :-/
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sun, 20 Oct 2013 18:31:16 +0200
|
||||
|
||||
ngircd (21~rc2-0ab2) unstable; urgency=low
|
||||
|
||||
* Fix default "HelpFile" file name in ngircd.conf for "full" packages.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sun, 20 Oct 2013 17:18:28 +0200
|
||||
|
||||
ngircd (21~rc2-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 2 for ngIRCd Release 21.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sun, 20 Oct 2013 15:50:03 +0200
|
||||
|
||||
ngircd (21~rc1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 21.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sat, 05 Oct 2013 23:24:09 +0200
|
||||
|
||||
ngircd (20.3-0ab1) unstable; urgency=high
|
||||
|
||||
* New "upstream" release, fixing a security related bug: ngIRCd 20.3.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Fri, 23 Aug 2013 21:53:21 +0200
|
||||
|
||||
ngircd (20.2-0ab1) unstable; urgency=high
|
||||
|
||||
* New "upstream" release, fixing a security related bug: ngIRCd 20.2.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Fri, 15 Feb 2013 12:17:00 +0100
|
||||
|
||||
ngircd (20.1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 20.1.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Wed, 02 Jan 2013 22:37:26 +0100
|
||||
|
||||
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,46 +0,0 @@
|
||||
Source: ngircd
|
||||
Section: net
|
||||
Priority: optional
|
||||
Maintainer: Alexander Barton <alex@barton.de>
|
||||
Rules-Requires-Root: binary-targets
|
||||
Build-Depends: debhelper-compat (= 13),
|
||||
expect,
|
||||
libident-dev,
|
||||
libpam0g-dev,
|
||||
libssl-dev,
|
||||
libz-dev,
|
||||
openssl,
|
||||
procps,
|
||||
telnet | telnet-ssl,
|
||||
Standards-Version: 4.6.2
|
||||
Homepage: https://ngircd.barton.de
|
||||
Vcs-Browser: https://github.com/ngircd/ngircd
|
||||
Vcs-Git: https://github.com/ngircd/ngircd.git
|
||||
|
||||
Package: ngircd
|
||||
Architecture: any
|
||||
Depends:
|
||||
${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
Conflicts:
|
||||
ircd,
|
||||
Provides:
|
||||
ircd,
|
||||
Description: lightweight Internet Relay Chat (IRC) server
|
||||
ngIRCd is a free, portable and lightweight Internet Relay Chat (IRC) server
|
||||
for small or private networks, developed under the terms of the GNU General
|
||||
Public License (GPL).
|
||||
.
|
||||
The server is quite easy to configure and runs as a single-node server or can
|
||||
be part of a network of ngIRCd servers in a LAN or across the internet. It
|
||||
optionally supports the IPv6 protocol, SSL/TLS-protected client-server and
|
||||
server-server links, the Pluggable Authentication Modules (PAM) system for
|
||||
user authentication, IDENT requests, and character set conversion for legacy
|
||||
clients.
|
||||
.
|
||||
The name ngIRCd stands for next-generation IRC daemon, which is a little bit
|
||||
exaggerated: lightweight Internet Relay Chat server most probably would have
|
||||
been a better name :-)
|
||||
.
|
||||
This package is built with support for all optional features and uses the
|
||||
OpenSSL library for SSL/TLS support.
|
@@ -1,58 +0,0 @@
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Source: https://ngircd.barton.de
|
||||
Upstream-Name: ngircd
|
||||
Upstream-Contact: ngIRCd Mailing List <ngircd@lists.barton.de>
|
||||
|
||||
Files:
|
||||
*
|
||||
Copyright:
|
||||
2001-2024 Alexander Barton <alex@barton.de> and Contributors.
|
||||
License: GPL-2.0+
|
||||
Comment:
|
||||
See /usr/share/doc/ngircd/AUTHORS.md for the full list of authors and
|
||||
contributors.
|
||||
|
||||
Files:
|
||||
contrib/de.barton.ngircd.metainfo.xml
|
||||
Copyright:
|
||||
2001-2024 Alexander Barton <alex@barton.de> and Contributors.
|
||||
License: MIT
|
||||
Comment:
|
||||
See /usr/share/doc/ngircd/AUTHORS.md for the full list of authors and
|
||||
contributors.
|
||||
|
||||
License: GPL-2.0+
|
||||
This package 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.
|
||||
.
|
||||
This package is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
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, see <https://www.gnu.org/licenses/>
|
||||
Comment:
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||
|
||||
License: MIT
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
.
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
@@ -1,7 +0,0 @@
|
||||
#
|
||||
# Defaults for the ngIRCd daemon
|
||||
#
|
||||
|
||||
# Parameters to pass to the ngircd daemon on startup, see ngircd(8) for
|
||||
# possible options (default: empty).
|
||||
PARAMS=""
|
@@ -1,10 +0,0 @@
|
||||
# /etc/pam.d/ngircd
|
||||
|
||||
# You have to adjust this configuration to your local setup and needs. Keep in
|
||||
# mind that all PAM modules are run with the privileges of the user account the
|
||||
# ngIRCd daemon runs as ("irc" by default, not root!), so you can't use PAM
|
||||
# modules requiring root privileges (like pam_unix, for example)!
|
||||
|
||||
# Log and deny all connections to ngIRCd:
|
||||
auth required pam_warn.so
|
||||
auth required pam_deny.so
|
@@ -1,72 +0,0 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
# See FEATURE AREAS in dpkg-buildflags(1).
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
|
||||
%:
|
||||
dh $@
|
||||
|
||||
# Disable dh_autoreconf since we are using de-ANSI-fication which was removed
|
||||
# from automake a while ago. See <https://github.com/ngircd/ngircd/issues/261>.
|
||||
override_dh_autoreconf:
|
||||
|
||||
override_dh_auto_configure:
|
||||
dh_auto_configure -- \
|
||||
--host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
|
||||
--prefix=/usr \
|
||||
--mandir=\$${prefix}/share/man \
|
||||
--sysconfdir=/etc/ngircd \
|
||||
--with-iconv \
|
||||
--with-ident \
|
||||
--with-openssl \
|
||||
--with-pam \
|
||||
--with-syslog \
|
||||
--with-zlib
|
||||
|
||||
execute_before_dh_auto_install:
|
||||
ln -fs $(CURDIR)/contrib/ngircd.service $(CURDIR)/debian/ngircd.service
|
||||
|
||||
execute_after_dh_auto_install:
|
||||
# Generate the default ngircd.conf:
|
||||
install -o root -g irc -m 0640 -D /dev/null \
|
||||
$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf
|
||||
sed \
|
||||
-e "s|;ServerUID = 65534|ServerUID = irc|g" \
|
||||
-e "s|;ServerGID = 65534|ServerGID = irc|g" \
|
||||
-e "s|;PidFile = /var/run/ngircd/ngircd.pid|PidFile = /run/ircd/ngircd.pid|g" \
|
||||
-e "s|;PAM = yes|PAM = no|g" \
|
||||
-e "s|;\[SSL\]|[SSL]|g" \
|
||||
-e "s|;CAFile = /etc/ssl/CA/cacert.pem|CAFile = /etc/ssl/certs/ca-certificates.crt|g" \
|
||||
$(CURDIR)/debian/ngircd/usr/share/doc/ngircd/sample-ngircd.conf \
|
||||
>>$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf
|
||||
|
||||
# Create drop-in configuration directory:
|
||||
install -o root -g irc -m 0750 -d \
|
||||
$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf.d
|
||||
|
||||
# Install an empty MOTD file.
|
||||
install -o root -g irc -m 0640 -D /dev/null \
|
||||
$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.motd
|
||||
|
||||
# Install the logcheck(8) configuration.
|
||||
install -o root -g root -m 0644 -D \
|
||||
$(CURDIR)/contrib/ngircd.logcheck \
|
||||
$(CURDIR)/debian/ngircd/etc/logcheck/ignore.d.paranoid/ngircd
|
||||
|
||||
# Install the fail2ban configuration.
|
||||
install -o root -g root -m 0644 -D \
|
||||
$(CURDIR)/contrib/ngircd-fail2ban.conf \
|
||||
$(CURDIR)/debian/ngircd/etc/fail2ban/filter.d/ngircd.conf
|
||||
|
||||
# Make lintian happy :-)
|
||||
rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING
|
||||
mv $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/ChangeLog \
|
||||
$(CURDIR)/debian/ngircd/usr/share/doc/ngircd/changelog
|
||||
|
||||
override_dh_fixperms:
|
||||
# Preserve the permissions of files installed in /etc/ngircd!
|
||||
dh_fixperms -X/etc/ngircd
|
||||
|
||||
override_dh_compress:
|
||||
# The Commands.txt file is read by the daemon, don't compress it!
|
||||
dh_compress -XCommands.txt
|
@@ -1 +0,0 @@
|
||||
3.0 (quilt)
|
@@ -1,10 +0,0 @@
|
||||
# Watch control file for uscan.
|
||||
# See uscan(1) for format.
|
||||
|
||||
# Compulsory line, this is a version 4 file.
|
||||
version=4
|
||||
|
||||
# PGP signature mangle, so foo.tar.gz has foo.tar.gz.sig.
|
||||
opts="pgpsigurlmangle=s%$%.sig%"
|
||||
|
||||
https://arthur.barton.de/pub/@PACKAGE@/@PACKAGE@-([0-9\.]+)@ARCHIVE_EXT@
|
@@ -1,62 +0,0 @@
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
|
||||
|
||||
# Build Container
|
||||
|
||||
FROM docker.io/library/debian:stable-slim AS build
|
||||
USER root
|
||||
RUN apt-get -y update \
|
||||
&& apt-get -y install --no-install-recommends \
|
||||
autoconf \
|
||||
automake \
|
||||
build-essential \
|
||||
expect \
|
||||
gawk \
|
||||
git \
|
||||
libgnutls28-dev \
|
||||
libident-dev \
|
||||
libpam0g-dev \
|
||||
openssl \
|
||||
pkg-config \
|
||||
telnet \
|
||||
zlib1g-dev \
|
||||
&& mkdir -p /usr/local/src/ngircd /opt/ngircd \
|
||||
&& chown bin:bin /usr/local/src/ngircd /opt/ngircd
|
||||
WORKDIR /usr/local/src/ngircd
|
||||
COPY . /usr/local/src/ngircd
|
||||
RUN chown -R bin /usr/local/src/ngircd
|
||||
USER bin
|
||||
RUN ./autogen.sh --prefix=/opt/ngircd \
|
||||
--with-gnutls \
|
||||
--with-iconv \
|
||||
--with-ident \
|
||||
--with-pam \
|
||||
&& make all \
|
||||
&& make -C src/ngircd check \
|
||||
&& make install \
|
||||
&& printf \
|
||||
"# ngircd.conf\n\n[Global]\nServerGID=irc\nServerUID=irc\n\n[Options]\nIdent=no\nPAM=no\n\n[SSL]\nCAFile=/etc/ssl/certs/ca-certificates.crt\n" \
|
||||
>/opt/ngircd/etc/ngircd.conf \
|
||||
&& chmod -R a+rX /opt/ngircd
|
||||
|
||||
# Run container
|
||||
|
||||
FROM docker.io/library/debian:stable-slim
|
||||
USER root
|
||||
RUN apt-get -y update \
|
||||
&& apt-get -y install --no-install-recommends --no-install-suggests \
|
||||
ca-certificates \
|
||||
catatonit \
|
||||
libgnutls30 \
|
||||
libident \
|
||||
libpam0g \
|
||||
libwrap0 \
|
||||
zlib1g \
|
||||
&& apt-get -y clean \
|
||||
&& rm -rf /var/cache/debconf/*-old /var/lib/apt/lists/*
|
||||
COPY --from=build /opt/ngircd /opt/ngircd
|
||||
USER irc
|
||||
ENTRYPOINT [ "/usr/bin/catatonit", "--", "/opt/ngircd/sbin/ngircd", "--nodaemon" ]
|
||||
EXPOSE 6667 6697
|
||||
HEALTHCHECK --interval=30s --timeout=5s --retries=1 --start-period=5s \
|
||||
CMD [ "/usr/bin/grep", "-F", ":1A0B ", "/proc/net/tcp" ]
|
@@ -1,31 +1,18 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
|
||||
# Copyright (c)2001,2002 by 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.
|
||||
# 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.1 2002/10/01 09:57:08 alex Exp $
|
||||
#
|
||||
|
||||
SUBDIRS = Debian
|
||||
|
||||
EXTRA_DIST = README.md \
|
||||
de.barton.ngircd.metainfo.xml \
|
||||
de.barton.ngircd.plist \
|
||||
Dockerfile \
|
||||
ngindent.sh \
|
||||
ngircd-bsd.sh \
|
||||
ngircd-fail2ban.conf \
|
||||
ngIRCd-Logo.gif \
|
||||
ngircd-redhat.init \
|
||||
ngircd.logcheck \
|
||||
ngircd.service \
|
||||
ngircd.socket \
|
||||
ngircd.spec \
|
||||
nglog.sh \
|
||||
platformtest.sh
|
||||
EXTRA_DIST = ngircd.spec
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
@@ -1,40 +0,0 @@
|
||||
# [ngIRCd](https://ngircd.barton.de) - Supplemental Files
|
||||
|
||||
This `contrib/` directory contains the following sub-folders and files:
|
||||
|
||||
- `Debian/` folder: This subfolder contains the _rules_ file and additional
|
||||
assets for building Debian packages.
|
||||
|
||||
- `de.barton.ngircd.metainfo.xml`: AppStream metadata file.
|
||||
|
||||
- `de.barton.ngircd.plist[.tmpl]`: launchd(8) property list file.
|
||||
|
||||
- `Dockerfile`: Container definition file, for Docker or Podman for example.
|
||||
More information can be found in the `doc/Container.md` file.
|
||||
|
||||
- `ngindent.sh`: Script to indent the code of ngIRCd in the "standard way".
|
||||
|
||||
- `ngircd-bsd.sh`: Start/stop script for FreeBSD.
|
||||
|
||||
- `ngircd-fail2ban.conf`: fail2ban(1) filter configuration for ngIRCd.
|
||||
|
||||
- `ngircd-redhat.init`: Start/stop script for old(er) RedHat-based
|
||||
distributions (like CentOS and Fedora), which did _not_ use systemd(8).
|
||||
|
||||
- `ngIRCd-Logo.gif`: The ngIRCd logo as GIF file.
|
||||
|
||||
- `ngircd.logcheck`: Sample rules for logcheck(8) to ignore "normal" log
|
||||
messages of ngIRCd.
|
||||
|
||||
- `ngircd.service`: systemd(8) service unit configuration file.
|
||||
|
||||
- `ngircd.socket`: systemd(8) socket unit configuration file for "socket
|
||||
activation".
|
||||
|
||||
- `ngircd.spec`: RPM "spec" file.
|
||||
|
||||
- `nglog.sh`: Script for colorizing the log messages of ngircd(8) according to
|
||||
their log level. Example: `./src/ngircd/ngircd -n | ./contrib/nglog.sh`.
|
||||
|
||||
- `platformtest.sh`: Build ngIRCd and output a "result line" suitable for
|
||||
the `doc/Platforms.txt` file.
|
@@ -1,129 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="service">
|
||||
<id>de.barton.ngircd</id>
|
||||
<name>ngIRCd</name>
|
||||
<summary>Lightweight Internet Relay Chat server</summary>
|
||||
<metadata_license>MIT</metadata_license>
|
||||
<project_license>GPL-2.0-or-later</project_license>
|
||||
<developer_name>Alexander Barton and Contributors</developer_name>
|
||||
<update_contact>alex@barton.de</update_contact>
|
||||
<description>
|
||||
<p>ngIRCd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL).</p>
|
||||
<p>The server is quite easy to configure and runs as a single-node server or can be part of a network of ngIRCd servers in a LAN or across the internet. It optionally supports the IPv6 protocol, SSL/TLS-protected client-server and server-server links, the Pluggable Authentication Modules (PAM) system for user authentication, IDENT requests, and character set conversion for legacy clients.</p>
|
||||
<p>The name ngIRCd stands for next-generation IRC daemon, which is a little bit exaggerated: lightweight Internet Relay Chat server most probably would have been a better name :-)</p>
|
||||
</description>
|
||||
<icon type="remote" width="300" height="300">https://ngircd.barton.de/common/ngircd-300x300.png</icon>
|
||||
<categories>
|
||||
<category>Network</category>
|
||||
</categories>
|
||||
<url type="homepage">https://ngircd.barton.de</url>
|
||||
<url type="bugtracker">https://ngircd.barton.de/bugtracker</url>
|
||||
<url type="help">https://ngircd.barton.de/support</url>
|
||||
<provides>
|
||||
<binary>ngircd</binary>
|
||||
</provides>
|
||||
<launchable type="service">ngircd</launchable>
|
||||
<releases>
|
||||
<release version="27" date="2024-04-26" />
|
||||
<release version="27~rc1" date="2024-04-13" />
|
||||
<release version="26.1" date="2021-01-02" />
|
||||
<release version="26" date="2020-06-20" />
|
||||
<release version="26~rc2" date="2020-06-11" type="development" />
|
||||
<release version="26~rc1" date="2020-05-10" type="development" />
|
||||
<release version="25" date="2019-01-23" />
|
||||
<release version="25~rc1" date="2018-08-11" type="development" />
|
||||
<release version="24" date="2017-01-20" />
|
||||
<release version="24~rc1" date="2017-01-07" type="development" />
|
||||
<release version="23" date="2015-11-16" />
|
||||
<release version="23~rc1" date="2015-09-06" type="development" />
|
||||
<release version="22.1" date="2015-04-06" />
|
||||
<release version="22" date="2014-10-11" />
|
||||
<release version="22~rc1" date="2014-09-29" type="development" />
|
||||
<release version="21.1" date="2014-03-25" />
|
||||
<release version="21" date="2013-10-30" />
|
||||
<release version="21~rc2" date="2013-10-20" type="development" />
|
||||
<release version="21~rc1" date="2013-10-05" type="development" />
|
||||
<release version="20.3" date="2013-08-23" />
|
||||
<release version="20.2" date="2013-02-15" />
|
||||
<release version="20.1" date="2013-01-02" />
|
||||
<release version="20" date="2012-12-17" />
|
||||
<release version="20~rc2" date="2012-12-02" type="development" />
|
||||
<release version="20~rc1" date="2012-11-11" type="development" />
|
||||
<release version="19.2" date="2012-06-19" />
|
||||
<release version="19.2~rc1" date="2012-06-13" type="development" />
|
||||
<release version="19.1" date="2012-03-19" />
|
||||
<release version="19" date="2012-02-29" />
|
||||
<release version="19~rc1" date="2012-02-12" type="development" />
|
||||
<release version="18" date="2011-07-10" />
|
||||
<release version="18~rc2" date="2011-06-29" type="development" />
|
||||
<release version="18~rc1" date="2011-06-27" type="development" />
|
||||
<release version="17.1" date="2010-12-19" />
|
||||
<release version="17" date="2010-11-07" />
|
||||
<release version="17~rc3" date="2010-10-27" type="development" />
|
||||
<release version="17~rc2" date="2010-10-25" type="development" />
|
||||
<release version="17~rc1" date="2010-10-11" type="development" />
|
||||
<release version="16" date="2010-05-02" />
|
||||
<release version="16~rc2" date="2010-04-25" type="development" />
|
||||
<release version="16~rc1" date="2010-03-25" type="development" />
|
||||
<release version="15" date="2009-11-07" />
|
||||
<release version="15~rc1" date="2009-10-15" type="development" />
|
||||
<release version="14.1" date="2009-05-05" />
|
||||
<release version="14" date="2009-04-20" />
|
||||
<release version="14~rc1" date="2009-03-29" type="development" />
|
||||
<release version="13" date="2008-12-25" />
|
||||
<release version="0.12.1" date="2008-07-09" />
|
||||
<release version="0.12.0" date="2008-05-13" />
|
||||
<release version="0.12.0-pre2" date="2008-04-29" type="development" />
|
||||
<release version="0.12.0-pre1" date="2008-04-20" type="development" />
|
||||
<release version="0.11.1" date="2008-02-26" />
|
||||
<release version="0.11.0" date="2008-01-15" />
|
||||
<release version="0.11.0-pre2" date="2008-01-07" type="development" />
|
||||
<release version="0.11.0-pre1" date="2008-01-02" type="development" />
|
||||
<release version="0.10.4" date="2008-01-07" />
|
||||
<release version="0.10.3" date="2007-08-01" />
|
||||
<release version="0.10.2" date="2007-06-08" />
|
||||
<release version="0.10.2-pre2" date="2007-05-19" type="development" />
|
||||
<release version="0.10.2-pre1" date="2007-05-05" type="development" />
|
||||
<release version="0.10.1" date="2006-12-17" />
|
||||
<release version="0.10.0" date="2006-10-01" />
|
||||
<release version="0.10.0-pre2" date="2006-09-09" type="development" />
|
||||
<release version="0.10.0-pre1" date="2006-08-02" type="development" />
|
||||
<release version="0.9.2" date="2005-10-15" />
|
||||
<release version="0.9.1" date="2005-08-03" />
|
||||
<release version="0.9.0" date="2005-07-24" />
|
||||
<release version="0.9.0-pre1" date="2005-07-09" type="development" />
|
||||
<release version="0.8.3" date="2005-02-03" />
|
||||
<release version="0.8.2" date="2005-01-26" />
|
||||
<release version="0.8.1" date="2004-12-25" />
|
||||
<release version="0.8.0" date="2004-06-26" />
|
||||
<release version="0.8.0-pre1" date="2004-05-07" type="development" />
|
||||
<release version="0.7.7" date="2004-02-05" />
|
||||
<release version="0.7.6" date="2003-12-05" />
|
||||
<release version="0.7.5" date="2003-11-07" />
|
||||
<release version="0.7.1" date="2003-07-18" />
|
||||
<release version="0.7.0" date="2003-05-01" />
|
||||
<release version="0.7.0-pre2" date="2003-04-27" type="development" />
|
||||
<release version="0.7.0-pre1" date="2003-04-22" type="development" />
|
||||
<release version="0.6.0" date="2002-12-24" />
|
||||
<release version="0.6.0-pre2" date="2002-12-23" type="development" />
|
||||
<release version="0.6.0-pre1" date="2002-12-18" type="development" />
|
||||
<release version="0.5.4" date="2002-11-24" />
|
||||
<release version="0.5.3" date="2002-11-08" />
|
||||
<release version="0.5.2" date="2002-10-04" />
|
||||
<release version="0.5.1" date="2002-10-03" />
|
||||
<release version="0.5.0" date="2002-09-20" />
|
||||
<release version="0.5.0-pre2" date="2002-09-17" type="development" />
|
||||
<release version="0.5.0-pre1" date="2002-09-16" type="development" />
|
||||
<release version="0.4.3" date="2002-06-11" />
|
||||
<release version="0.4.2" date="2002-04-29" />
|
||||
<release version="0.4.1" date="2002-04-08" />
|
||||
<release version="0.4.0" date="2002-04-01" />
|
||||
<release version="0.3.0" date="2002-03-02" />
|
||||
<release version="0.2.1" date="2002-02-17" />
|
||||
<release version="0.2.0" date="2002-02-15" />
|
||||
<release version="0.1.0" date="2002-01-29" />
|
||||
<release version="0.0.3" date="2002-01-16" />
|
||||
<release version="0.0.2" date="2002-01-06" />
|
||||
<release version="0.0.1" date="2001-12-31" />
|
||||
</releases>
|
||||
</component>
|
@@ -1,23 +0,0 @@
|
||||
<?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>/opt/ngircd/sbin/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>
|
Binary file not shown.
Before Width: | Height: | Size: 1.9 KiB |
@@ -1,46 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2019 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 uses GNU indent(1) to format C source code files of ngIRCd.
|
||||
# Usage:
|
||||
# - ./contrib/ngindent.sh [<file> [<file> [...]]]
|
||||
# - cat ./src/ngircd/<c_file> | ./contrib/ngindent.sh
|
||||
|
||||
# Use a coding-style based on "Kernighan & Ritchie" (-kr):
|
||||
INDENTARGS="-kr
|
||||
-bad
|
||||
-c3
|
||||
-cd41
|
||||
-i8
|
||||
-l80
|
||||
-ncs
|
||||
-psl
|
||||
-sob
|
||||
-ss
|
||||
-ts8
|
||||
-blf
|
||||
-il0
|
||||
"
|
||||
|
||||
# check if indent(1) is available
|
||||
command -v indent >/dev/null 2>&1 && INDENT="indent"
|
||||
command -v gindent >/dev/null 2>&1 && INDENT="gindent"
|
||||
command -v gnuindent >/dev/null 2>&1 && INDENT="gnuindent"
|
||||
|
||||
if [ -z "$INDENT" ]; then
|
||||
echo "Error: GNU \"indent\" not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
$INDENT -v $INDENTARGS "$@"
|
||||
|
||||
# -eof-
|
@@ -1,51 +0,0 @@
|
||||
#!/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-
|
@@ -1,25 +0,0 @@
|
||||
# Fail2ban filter for ngIRCd
|
||||
#
|
||||
# Put into /etc/fail2ban/filter.d/ngircd.conf and enable in your jail.local
|
||||
# configuration like this:
|
||||
#
|
||||
# [ngircd]
|
||||
# enabled = true
|
||||
# backend = systemd
|
||||
#
|
||||
|
||||
[INCLUDES]
|
||||
|
||||
before = common.conf
|
||||
|
||||
[DEFAULT]
|
||||
|
||||
_daemon = ngircd
|
||||
|
||||
[Definition]
|
||||
|
||||
failregex = ^%(__prefix_line)sRefused connection from <ADDR> on socket \d+:
|
||||
|
||||
[Init]
|
||||
|
||||
journalmatch = _SYSTEMD_UNIT=ngircd.service + _COMM=ngircd
|
@@ -1,119 +0,0 @@
|
||||
#!/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
|
@@ -1,54 +0,0 @@
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: ".*" added ".*" to G-Line list: ".*" \([0-9]+ seconds\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: (GnuTLS|OpenSSL) .* initialized\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Accepted connection [0-9]+ from ".*:[0-9]+" on socket [0-9]+\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Address mismatch:
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Can't create pre-defined channel ".*": name already in use\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Can't resolve( address)? ".*": (Name or service not known|No address associated with hostname|Temporary failure in name resolution)( \[.*\]\.)?$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Client( ".*")? unregistered \(connection [0-9]+\): (Can't connect|Client closed connection|Got QUIT command|Read error|Server configuration already in use|SSL accept error, closing socket|Timeout|Write error)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+ \(socket [0-9]+\) with ".*:[0-9]+" established\. Now logging in \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+ with ".*:[0-9]+" closed \(in: .*, out: .*\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+: initialized TLSv?1\.[0123] using cipher .*\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Created pre-defined channel ".*", mode ".*" \((channel key set|no channel key), user limit [0-9]+\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Deleted ".*" \(".*"\) from G-Line list \(expired\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Enabled link compression \(zlib\) on connection [0-9]+\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Establishing connection for ".*" to ".*:[0-9]+" \(.*\), socket [0-9]+ \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: File descriptor limit is [0-9]+; "MaxConnections" is (not set|set to [0-9]+)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Got (valid server|unchecked peer) certificate: .*\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Got signal "(Hangup|Terminated)" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Got valid OPER for ".*" from ".*", user is an IRC operator now\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: IDENT lookup for connection [0-9]+: (no result|".*")\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: IO subsystem: epoll \(hint size 100, initial maxfd 100, masterfd [0-9]+\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Not running with changed root directory\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Now listening on .*:[0-9]+ \(socket [0-9]+\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Peer did not present a certificate\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Peer on connection [0-9]+ announces itself as .* using protocol .* \(flags: ".*"\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Possible forgery: .* resolved to ".*", which (has no IP address|points to a different address)!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Preparing to establish a new server link for ".*" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Re-reading configuration NOW!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Re-reading of configuration done\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Read error on connection [0-9]+ \(socket [0-9]+\): Connection reset by peer!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Running as user .*, group .*, with PID [0-9]+\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL connection on socket [0-9]+ failed!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL error, client disconnected \[in .*\(\)\]!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL error: (Connection reset by peer|Broken pipe) \[in .*\]!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL protocol error: (ConnSSL_Read|ConnSSL_Write|SSL_accept) \(.*\)$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" \(on ".*"\) ready\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" registered \(connection [0-9]+, 1 hop - direct link\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" registered \(via .*, connected to .*, [0-9]+ hops\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" unregistered \(connection [0-9]+\): Ping timeout: [0-9]+ seconds\.
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" unregistered( \(connection [0-9]+\))?: .* \(Server going down\)\.
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" unregistered: .* .*\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server \".*\" \(on ".*"\) ready\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server going down NOW!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down all listening sockets \([0-9]+ total\) \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(Can't connect|Client closed connection|Closing connection: .* \(Server going down\)|Got QUIT command|ID ".*" already registered|Ping timeout: [0-9]+ seconds|Read error|SSL accept error, closing socket|Server configuration already in use|Server going down|Timeout|Write error|".*" \((G-Line|SQUIT from .*)\)\) with ".*:[0-9]+" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Synchronization with ".*" done \(connection [0-9]+\): [0-9]+ seconds? \[[0-9]+ users, [0-9]+ channels\]\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" changed nick \(connection [0-9]+\): ".*" -> ".*"\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" registered \(connection [0-9]+\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" unregistered \(connection [0-9]+\): (Client closed connection|Got QUIT command|Ping timeout: [0-9]+ seconds|Read error|Server going down)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Using (default|specified) configuration file ".*" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Write error on connection [0-9]+ \(socket [0-9]+\): (Broken pipe|Connection reset by peer)!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: ngIRCd [0-9].* starting \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: ngIRCd done, served [0-9]+ connections?\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: warning: /etc/hosts\.allow, line [0-9]+: (can't verify hostname|host name/address mismatch): getaddrinfo\(.*, AF_INET\) failed$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: warning: can't get client address: Connection reset by peer$
|
@@ -1,48 +0,0 @@
|
||||
# ngIRCd systemd service unit.
|
||||
# See systemd(1), systemd.unit(5), systemd.service(5), systemd.exec(5).
|
||||
|
||||
[Unit]
|
||||
Description=Next Generation IRC Daemon
|
||||
Documentation=man:ngircd(8) man:ngircd.conf(5) https://ngircd.barton.de
|
||||
After=network.target
|
||||
Wants=anope.service atheme.service irc-services.service
|
||||
Wants=bopm.service hopm.service
|
||||
Before=anope.service atheme.service irc-services.service
|
||||
Before=bopm.service hopm.service
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
User=irc
|
||||
Group=irc
|
||||
# Settings & limits:
|
||||
CapabilityBoundingSet=CAP_SYS_CHROOT CAP_NET_BIND_SERVICE
|
||||
MemoryDenyWriteExecute=yes
|
||||
NoNewPrivileges=yes
|
||||
PrivateDevices=yes
|
||||
PrivateTmp=yes
|
||||
ProtectControlGroups=yes
|
||||
ProtectHome=yes
|
||||
ProtectKernelModules=yes
|
||||
ProtectKernelTunables=yes
|
||||
ProtectSystem=full
|
||||
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
|
||||
RestrictRealtime=yes
|
||||
RuntimeDirectory=ircd
|
||||
RuntimeDirectoryMode=750
|
||||
StandardError=journal
|
||||
StandardOutput=journal
|
||||
# Try to load "default files" from any Debian package variant to keep this
|
||||
# unit generic.
|
||||
EnvironmentFile=-/etc/default/ngircd
|
||||
EnvironmentFile=-/etc/default/ngircd-full
|
||||
EnvironmentFile=-/etc/default/ngircd-full-dbg
|
||||
# Start ngIRCd. Note: systemd doesn't allow to use $DAEMON here!
|
||||
ExecStart=/usr/sbin/ngircd --nodaemon --syslog $PARAMS
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
# Error handling:
|
||||
# ngIRCd tries to "ping" the service manager every 3 seconds.
|
||||
WatchdogSec=10
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@@ -1,12 +0,0 @@
|
||||
[Unit]
|
||||
Description=Next Generation IRC Daemon (Socket)
|
||||
Documentation=man:ngircd(8) man:ngircd.conf(5)
|
||||
|
||||
[Socket]
|
||||
BindIPv6Only=ipv6-only
|
||||
ListenStream=0.0.0.0:6667
|
||||
#ListenStream=[::]:6667
|
||||
IPTOS=low-delay
|
||||
|
||||
[Install]
|
||||
WantedBy=sockets.target
|
@@ -1,38 +1,37 @@
|
||||
%define name ngircd
|
||||
%define version 27
|
||||
%define version 0.6.0-pre1
|
||||
%define release 1
|
||||
%define prefix %{_prefix}
|
||||
|
||||
Summary: A lightweight daemon for the Internet Relay Chat (IRC)
|
||||
Summary: Next Generation Internet Relay Chat Daemon
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}
|
||||
License: GPLv2+
|
||||
Group: System Environment/Daemons
|
||||
URL: http://ngircd.barton.de/
|
||||
Copyright: GPL
|
||||
Group: Networking/Daemons
|
||||
URL: http://arthur.ath.cx/~alex/ngircd/
|
||||
Source: %{name}-%{version}.tar.gz
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
BuildRequires: zlib-devel, openssl-devel
|
||||
Packager: Sean Reifschneider <jafo-rpms@tummy.com>
|
||||
BuildRoot: /var/tmp/%{name}-root
|
||||
|
||||
%description
|
||||
ngIRCd is a free, portable and lightweight Internet Relay Chat server for small
|
||||
or private networks, developed under the GNU General Public License (GPL).
|
||||
ngIRCd is a free open source daemon for Internet Relay Chat (IRC),
|
||||
developed under the GNU General Public License (GPL). It's written from
|
||||
scratch and is not based upon the original IRCd like many others.
|
||||
|
||||
The server is quite easy to configure, can handle dynamic IP addresses, and
|
||||
optionally supports IDENT, IPv6 connections, SSL-protected links, and PAM for
|
||||
user authentication as well as character set conversion for legacy clients. The
|
||||
server has been written from scratch and is not based on the forefather, the
|
||||
daemon of IRCNet.
|
||||
Why should you use ngIRCd? Because ...
|
||||
|
||||
* ... there are no problems with servers on changing or non-static IP
|
||||
addresses.
|
||||
* ... there is a small and lean configuration file.
|
||||
* ... there is a free, modern and open source C source code.
|
||||
* ... it is still under active development.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%setup
|
||||
%build
|
||||
%configure \
|
||||
--with-zlib \
|
||||
--with-openssl
|
||||
|
||||
make %{?_smp_mflags}
|
||||
%configure
|
||||
make
|
||||
|
||||
%install
|
||||
[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT"
|
||||
@@ -42,7 +41,6 @@ make %{?_smp_mflags}
|
||||
( 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
|
||||
@@ -50,8 +48,7 @@ make %{?_smp_mflags}
|
||||
|
||||
%files
|
||||
%defattr(755,root,root)
|
||||
%doc AUTHORS.md COPYING ChangeLog INSTALL.md NEWS README.md doc/*
|
||||
%doc AUTHORS COPYING ChangeLog INSTALL NEWS README
|
||||
%config(noreplace) /etc
|
||||
%{_prefix}/sbin
|
||||
%{_mandir}/man5/ngircd.conf*
|
||||
%{_mandir}/man8/ngircd.8*
|
||||
%{_prefix}/share/man/
|
||||
|
@@ -1,28 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2020 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 parses the log output of ngircd(8), and colorizes the messages
|
||||
# according to their log level. Example usage:
|
||||
# ./src/ngircd/ngircd -f $PWD/doc/sample-ngircd.conf -np | ./contrib/nglog.sh
|
||||
#
|
||||
|
||||
gawk '
|
||||
/^\[[[:digit:]]+:0 / {print "\033[1;95m" $0 "\033[0m"}
|
||||
/^\[[[:digit:]]+:1 / {print "\033[1;35m" $0 "\033[0m"}
|
||||
/^\[[[:digit:]]+:2 / {print "\033[1;91m" $0 "\033[0m"}
|
||||
/^\[[[:digit:]]+:3 / {print "\033[1;31m" $0 "\033[0m"}
|
||||
/^\[[[:digit:]]+:4 / {print "\033[1;33m" $0 "\033[0m"}
|
||||
/^\[[[:digit:]]+:5 / {print "\033[1m" $0 "\033[0m"}
|
||||
/^\[[[:digit:]]+:6 / {print $0}
|
||||
/^\[[[:digit:]]+:7 / {print "\033[90m" $0 "\033[0m"}
|
||||
' </dev/stdin &
|
||||
|
||||
wait
|
@@ -1,257 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2016 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@lists.barton.de>.
|
||||
|
||||
NAME=$(basename "$0")
|
||||
VERBOSE=
|
||||
CLEAN=1
|
||||
|
||||
PLATFORM=
|
||||
COMPILER="unknown"
|
||||
VERSION="unknown"
|
||||
DATE=$(date "+%y-%m-%d")
|
||||
COMMENT=
|
||||
|
||||
R_CONFIGURE=
|
||||
R_MAKE=
|
||||
R_CHECK=
|
||||
R_CHECK_Y="?"
|
||||
R_RUN=
|
||||
|
||||
SRC_D=$(dirname "$0")
|
||||
MY_D="$PWD"
|
||||
|
||||
[ -n "$MAKE" ] || MAKE="make"
|
||||
export MAKE CC
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
"-v")
|
||||
VERBOSE=1
|
||||
;;
|
||||
"-x")
|
||||
CLEAN=
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $NAME [-v] [-x]"
|
||||
echo
|
||||
echo " -v Verbose output"
|
||||
echo " -x Don't regenerate build system, even when possible"
|
||||
echo
|
||||
exit 2
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
for cmd in telnet expect; do
|
||||
command -v "$cmd" >/dev/null 2>&1 \
|
||||
|| echo "$NAME: WARNING: $cmd(1) not found, \"make check\" won't run all tests!"
|
||||
done
|
||||
|
||||
echo "$NAME: Checking ngIRCd base source directory ..."
|
||||
grep "ngIRCd" "$SRC_D/ChangeLog" >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
grep "ngIRCd" "$SRC_D/../ChangeLog" >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "$NAME: ngIRCd base source directory not found!?"
|
||||
exit 1
|
||||
fi
|
||||
SRC_D="$SRC_D/.."
|
||||
fi
|
||||
echo "$NAME: - source directory: $SRC_D"
|
||||
echo "$NAME: - working directory: $MY_D"
|
||||
|
||||
echo "$NAME: Checking for GIT tree ..."
|
||||
if [ -d "$SRC_D/.git" ]; then
|
||||
echo "$NAME: Checking for \"git\" command ..."
|
||||
git version >/dev/null 2>&1
|
||||
if [ $? -eq 0 ] && [ -n "$CLEAN" ]; then
|
||||
echo "$NAME: Running \"git clean\" ..."
|
||||
cd "$SRC_D" || exit 1
|
||||
if [ -n "$VERBOSE" ]; then
|
||||
git clean -dxf
|
||||
else
|
||||
git clean -dxf >/dev/null
|
||||
fi
|
||||
cd "$MY_D" || exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$NAME: Checking for \"$SRC_D/configure\" script ..."
|
||||
if [ ! -r "$SRC_D/configure" ]; then
|
||||
echo "$NAME: Running \"$SRC_D/autogen.sh\" ..."
|
||||
cd "$SRC_D" || exit 1
|
||||
if [ -n "$VERBOSE" ]; then
|
||||
./autogen.sh
|
||||
else
|
||||
./autogen.sh >/dev/null
|
||||
fi
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "$NAME: \"$SRC_D/autogen.sh\" script failed, aborting!"
|
||||
exit 1
|
||||
fi
|
||||
cd "$MY_D" || exit 1
|
||||
fi
|
||||
|
||||
if [ -r "$SRC_D/configure" ]; then
|
||||
echo "$NAME: Running \"$SRC_D/configure\" script ..."
|
||||
if [ -n "$VERBOSE" ]; then
|
||||
"$SRC_D/configure" -C
|
||||
else
|
||||
"$SRC_D/configure" -C >/dev/null
|
||||
fi
|
||||
if [ $? -eq 0 ] && [ -r ./Makefile ]; then
|
||||
R_CONFIGURE=1
|
||||
rm -f "src/ngircd/ngircd"
|
||||
echo "$NAME: Running \"$MAKE\" ..."
|
||||
if [ -n "$VERBOSE" ]; then
|
||||
"$MAKE"
|
||||
else
|
||||
"$MAKE" >/dev/null
|
||||
fi
|
||||
if [ $? -eq 0 ] && [ -x src/ngircd/ngircd ]; then
|
||||
R_MAKE=1
|
||||
echo "$NAME: Running \"$MAKE check\" ..."
|
||||
if [ -n "$VERBOSE" ]; then
|
||||
"$MAKE" check
|
||||
else
|
||||
"$MAKE" check >/dev/null
|
||||
fi
|
||||
if [ $? -eq 0 ]; then
|
||||
R_CHECK=1
|
||||
R_RUN=$R_CHECK
|
||||
[ -r ./src/testsuite/tests-skipped.lst ] \
|
||||
&& R_CHECK_Y="y" || R_CHECK_Y="Y"
|
||||
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
|
||||
# GCC, or compiler that mimics GCC
|
||||
$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
|
||||
# Non-GCC compiler
|
||||
$CC --version 2>&1 | grep -i "clang" >/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
COMPILER=$($CC --version 2>/dev/null | head -1 \
|
||||
| cut -d'(' -f1 | cut -d'-' -f1 \
|
||||
| sed -e 's/version //g; s/^\([A-Z]\)[A-Za-z]* clang/\1-clang/g; s/LLVM /clang /g')
|
||||
fi
|
||||
$CC -version 2>&1 | grep -i "tcc" >/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
COMPILER=$($CC -version 2>/dev/null | head -1 \
|
||||
| cut -d'(' -f1 | sed -e 's/version //g')
|
||||
fi
|
||||
if [ "$COMPILER" = "unknown" ]; then
|
||||
v="$($CC --version 2>/dev/null | head -1)"
|
||||
[ -z "$v" ] && v="$($CC -version 2>/dev/null | head -1)"
|
||||
[ -n "$v" ] && COMPILER="$v"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Get ngIRCd version information
|
||||
eval "$(grep "^VERSION = " Makefile | sed -e 's/ //g')"
|
||||
case "$VERSION" in
|
||||
*~*-*)
|
||||
VERSION=$(echo "$VERSION" | cut -b1-10)
|
||||
;;
|
||||
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="$R_CHECK_Y" || T="N"
|
||||
if [ -n "$R_RUN" ]; then
|
||||
# Mark "runs" with "Y" only when the test suite succeeded:
|
||||
[ "$T" = "N" ] && R="?" || R="Y"
|
||||
else
|
||||
R="N"
|
||||
fi
|
||||
[ -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 *"
|
||||
echo "--------------------------- ------------ ---------- -------- -------- - - - - -"
|
||||
command -v printf >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
printf "%-27s %-12s %-10s %s %-8s %s %s %s %s%s\n" \
|
||||
"$PLATFORM" "$COMPILER" "$VERSION" "$DATE" "$LOGNAME" \
|
||||
"$C" "$M" "$T" "$R" "$COMMENT"
|
||||
else
|
||||
echo "$PLATFORM $COMPILER $VERSION $DATE $LOGNAME" \
|
||||
"$C" "$M" "$T" "$R" "$COMMENT"
|
||||
fi
|
||||
echo
|
||||
|
||||
double_check() {
|
||||
echo "Please double check that the ngIRCd daemon starts up, runs and handles IRC"
|
||||
echo "connections successfully!"
|
||||
}
|
||||
|
||||
if [ "$R_CHECK_Y" = "y" ]; then
|
||||
echo "WARNING: Some tests have been skipped!"
|
||||
double_check
|
||||
echo
|
||||
fi
|
||||
if [ "$R" = "?" ]; then
|
||||
echo "WARNING: The resulting binary passed simple tests, but the test suite failed!"
|
||||
double_check
|
||||
echo
|
||||
fi
|
53
doc/Bopm.txt
53
doc/Bopm.txt
@@ -1,53 +0,0 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2014 Alexander Barton and Contributors.
|
||||
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."
|
||||
|
||||
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(!):
|
||||
"Client connecting: ([^ ]+) \\(([^@]+)@([^\\)]+)\\) \\[([0-9\\.]+)\\].*";
|
||||
and comment out all the other "connregex" examples (that is, prepend a
|
||||
"#" character).
|
||||
|
||||
5) Set "kline" to "GLINE *@%h :Open proxy found on your host!";
|
||||
and comment out 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 ...
|
64
doc/CVS.txt
Normal file
64
doc/CVS.txt
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
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 $
|
@@ -1,28 +0,0 @@
|
||||
|
||||
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://ircv3.net/specs/core/capability-negotiation-3.1.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.net/specs/extensions/multi-prefix-3.1.html>.
|
996
doc/Commands.txt
996
doc/Commands.txt
@@ -1,996 +0,0 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2019 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- Commands.txt --
|
||||
|
||||
|
||||
This file lists all commands available on ngIRCd. It is written in a format
|
||||
that is human readable as well as machine parseable and therefore can be used
|
||||
as "help text file" of the daemon.
|
||||
|
||||
In short, the daemon reads this file on startup and parses it as following
|
||||
when an user issues a "HELP <cmd>" command:
|
||||
|
||||
1. Search the file for a line "- <cmd>",
|
||||
2. Output all subsequent lines that start with a TAB (ASCII 9) character
|
||||
to the client using NOTICE commands, treat lines containing a single "."
|
||||
after the TAB as empty lines.
|
||||
3. Break at the first line not starting with a TAB character.
|
||||
|
||||
This format allows to have information to each command stored in this file
|
||||
which will not be sent to an IRC user requesting help which enables us to
|
||||
have additional annotations stored here which further describe the origin,
|
||||
implementation details, or limits of the specific command which are not
|
||||
relevant to an end-user but administrators and developers.
|
||||
|
||||
A special "Intro" block is returned to the user when the HELP command is
|
||||
used without a command name:
|
||||
|
||||
|
||||
- Intro
|
||||
This is ngIRCd, a server software for Internet Relay Chat (IRC)
|
||||
networks. You can find more information about ngIRCd on its homepage:
|
||||
<http://ngircd.barton.de>
|
||||
.
|
||||
Use "HELP COMMANDS" to get a list of all available commands and
|
||||
"HELP <command-name>" to get help for a specific IRC command, for
|
||||
example "HELP quit" or "HELP privmsg".
|
||||
|
||||
|
||||
Connection Handling Commands
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- CAP
|
||||
CAP LS
|
||||
CAP LIST
|
||||
CAP REQ <capabilities>
|
||||
CAP ACK <capabilities>
|
||||
CAP NAK <capabilities>
|
||||
CAP CLEAR
|
||||
CAP END
|
||||
.
|
||||
List, request, and clear "IRC Capabilities".
|
||||
.
|
||||
Using this command, an IRC client can request additional "IRC
|
||||
capabilities" during login or later on, which influences the
|
||||
communication between server and client. Normally, these commands
|
||||
aren't directly used by humans, but automatically by their client
|
||||
software. And please note that issuing such commands manually can
|
||||
irritate the client software used, because of the "non-standard"
|
||||
behavior of the server!
|
||||
.
|
||||
- CAP LS: list all available capabilities.
|
||||
- CAP LIST: list active capabilities of this connection.
|
||||
- CAP REQ: Request particular capabilities.
|
||||
- CAP ACK: Acknowledge a set of capabilities to be enabled/disabled.
|
||||
- CAP NAK: Reject a set of capabilities.
|
||||
- CAP CLEAR: Clear all set capabilities.
|
||||
- CAP END: Indicate end of capability negotiation during login,
|
||||
ignored in an fully registered session.
|
||||
|
||||
Please note that the <capabilities> must be given in a single
|
||||
parameter but whitespace separated, therefore a command could look
|
||||
like this: "CAP REQ :capability1 capability2 capability3" for example.
|
||||
|
||||
References:
|
||||
- <http://ircv3.net/specs/core/capability-negotiation-3.1.html>
|
||||
- <http://ngircd.barton.de/doc/Capabilities.txt>
|
||||
- doc/Capabilities.txt
|
||||
|
||||
- CHARCONV
|
||||
CHARCONV <client-charset>
|
||||
.
|
||||
Set client character set encoding to <client-charset>.
|
||||
.
|
||||
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>.
|
||||
.
|
||||
This enables older clients and clients using "strange" character sets
|
||||
to transparently participate in channels and direct messages to
|
||||
clients using UTF-8, which should be the default today.
|
||||
|
||||
References:
|
||||
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
|
||||
- IRC+, doc/Protocol.txt
|
||||
|
||||
- NICK
|
||||
NICK <nickname>
|
||||
NICK <nickname> [<hops>]
|
||||
NICK <nickname> <hops> <username> <host> <servertoken> <usermodes> <realname>
|
||||
.
|
||||
Set or change the <nickname> of a client (first form) and register
|
||||
remote clients (second and third form; servers only).
|
||||
|
||||
References:
|
||||
- RFC 1459, 4.1.2 "Nick message" (old client and server protocol)
|
||||
- RFC 2812, 3.1.2 "Nick message" (client protocol)
|
||||
- RFC 2813, 4.1.3 "Nick" (server protocol)
|
||||
|
||||
- PASS
|
||||
PASS <password>
|
||||
PASS <password> <version> <flags> [<options>]
|
||||
.
|
||||
Set a connection <password>. This command must be the first command
|
||||
sent to the server, even before the NICK/USER or SERVER commands.
|
||||
.
|
||||
The first form is used by user sessions or (old) RFC 1459 servers,
|
||||
the second form is used by RFC 2812 or IRC+ compliant servers and
|
||||
enables the server to indicate its version and supported protocol
|
||||
features.
|
||||
|
||||
References:
|
||||
- RFC 1459, 4.1.1 "Password message" (old client and server protocol)
|
||||
- RFC 2812, 3.1.1 "Password message" (client protocol)
|
||||
- RFC 2813, 4.1.1 "Password message" (server protocol)
|
||||
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
|
||||
- IRC+, doc/Protocol.txt
|
||||
|
||||
- PING
|
||||
PING <token> [<target>]
|
||||
.
|
||||
Tests the presence of a connection to a client or server.
|
||||
.
|
||||
If no <target> has been given, the local server is used. User clients
|
||||
can only use other servers as <target>, no user clients.
|
||||
.
|
||||
A PING message results in a PONG reply containing the <token>, which
|
||||
can be arbitrary text.
|
||||
|
||||
Please note:
|
||||
The RFCs state that the <token> parameter is used to specify the
|
||||
origin of the PING command when forwarded in the network, but this
|
||||
is not the case: the sender is specified using the prefix as usual,
|
||||
and the parameter is used to identify the PONG reply in practice.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.7.2 "Ping message"
|
||||
|
||||
- PONG
|
||||
PONG <target> [<token>]
|
||||
.
|
||||
Reply to a "PING" command, indicate that the connection is alive.
|
||||
.
|
||||
The <token> is the arbitrary text received in the "PING" command and
|
||||
can be used to identify the correct PONG sent as answer.
|
||||
.
|
||||
When the "PONG" command is received from a user session, the <target>
|
||||
parameter is ignored; otherwise the PONG is forwarded to this client.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.7.3 "Pong message"
|
||||
|
||||
- QUIT
|
||||
QUIT [<quit-message>]
|
||||
.
|
||||
Terminate a user session.
|
||||
.
|
||||
When received from a user, the server acknowledges this by sending
|
||||
an "ERROR" message back to the client and terminates the connection.
|
||||
.
|
||||
When a <quit-message> has been given, it is sent to all the channels
|
||||
that the client is a member of when leaving.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.1.7 "Quit"
|
||||
- RFC 2813, 4.1.5 "Quit"
|
||||
|
||||
- USER
|
||||
USER <username> <hostname> <unused> <realname>
|
||||
.
|
||||
Register (and authenticate) a new user session with a short <username>
|
||||
and a human-readable <realname>.
|
||||
.
|
||||
The parameter <hostname> is only used when received by an other server
|
||||
and ignored otherwise; and the parameter <unused> is always ignored.
|
||||
But both parameters are required on each invocation by the protocol
|
||||
and can be set to arbitrary characters/text when not used.
|
||||
.
|
||||
If <username> contains an "@" character, the full <username> is used
|
||||
for authentication, but only the first part up to this character is
|
||||
set as "user name" for this session.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.1.3 "User message"
|
||||
|
||||
- WEBIRC
|
||||
WEBIRC <password> <username> <hostname> <ip-address>
|
||||
.
|
||||
Allow Web-to-IRC gateway software (for example) 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.
|
||||
|
||||
References:
|
||||
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
|
||||
- IRC+, doc/Protocol.txt
|
||||
|
||||
|
||||
General Commands
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
- AWAY
|
||||
AWAY [<message>]
|
||||
.
|
||||
Provides the server with a message to automatically send in reply to a
|
||||
PRIVMSG directed at the user, but not to a channel they are on.
|
||||
.
|
||||
If <message> is omitted, the away status is removed.
|
||||
|
||||
References:
|
||||
- RFC 2812, 4.1 "Away"
|
||||
|
||||
- HELP
|
||||
HELP [<command>]
|
||||
.
|
||||
Show help information for a specific IRC <command>. The <command> name
|
||||
is case-insensitive.
|
||||
.
|
||||
Use the command "HELP Commands" to get a list of all available commands.
|
||||
|
||||
The HELP command isn't specified by any RFC but implemented by most
|
||||
daemons. If no help text could be read in, ngIRCd outputs a list of all
|
||||
implemented commands when receiving a plain "HELP" command as well as
|
||||
on "HELP Commands".
|
||||
|
||||
ngIRCd replies using "NOTICE" commands like ircd 2.10/2.11; other
|
||||
implementations are using numerics 704, 705, and 706.
|
||||
|
||||
- MODE
|
||||
MODE <nickname> [{+|-}<mode>[<mode>] [{+|-}<mode>[<mode>] [...]]]
|
||||
MODE <channel> [{+|-}<mode>[<mode>] [<arg> [<arg> [...]]] [{+|-}<mode>[<mode>] [<arg> [<arg> [...]]] [...]]]
|
||||
.
|
||||
Set and get user and channel modes.
|
||||
.
|
||||
When no mode parameters are given, the currently set user or channel
|
||||
modes are returned. Otherwise the modes are adjusted accordingly
|
||||
and the changes will be reported back to the client.
|
||||
.
|
||||
All user and channel "modes" are indicated by single case-sensitive
|
||||
characters.
|
||||
.
|
||||
Please note that a user can only get and set his own modes, and not
|
||||
all user "levels" are allowed to change all channel modes ...
|
||||
.
|
||||
The mode parameters can become quite complex, especially when dealing
|
||||
with channel modes that require additional arguments:
|
||||
.
|
||||
{+|-}<mode(s}> -- set or unset one or more modes.
|
||||
+<mode(s)> -<mode(s)> -- set some modes and unset others.
|
||||
+<modes> <arg1> <arg2> -- set (at least) two modes with arguments.
|
||||
.
|
||||
Some examples:
|
||||
.
|
||||
MODE nick +i -- set user to "invisible".
|
||||
MODE #chan +tn -- set "topic lock" and "no external messages".
|
||||
MODE #chan -t +l 50 -- remove "topic lock", set "user limit" to 50.
|
||||
MODE #chan +ov nick1 nick2 -- set "channel op" and "voice" mode
|
||||
to nick1 and nick2 in channel #chan.
|
||||
.
|
||||
A complete list of all modes supported by ngIRCd can be found online
|
||||
here: <http://ngircd.barton.de/doc/Modes.txt>.
|
||||
|
||||
References:
|
||||
- RFC 2811, 4. "Channel Modes"
|
||||
- RFC 2812, 3.1.5 "User mode message"
|
||||
- RFC 2812, 3.2.3 "Channel mode message"
|
||||
- <http://ngircd.barton.de/doc/Modes.txt>
|
||||
- doc/Modes.txt
|
||||
|
||||
- NOTICE
|
||||
NOTICE <target>[,<target>[,...]] <message>
|
||||
.
|
||||
Send a <message> to a given <target>, which can be a user or a
|
||||
channel, but DON'T report any error.
|
||||
.
|
||||
The "NOTICE" command exactly behaves like the "PRIVMSG" command, but
|
||||
doesn't report any errors it encounters (like an unknown <target>).
|
||||
Please see the help text of the "PRIVMSG" command for a detailed
|
||||
description of the parameters!
|
||||
|
||||
References:
|
||||
- RFC 2812, 2.3.1 "Message format in Augmented BNF"
|
||||
- RFC 2812, 3.3 "Sending messages"
|
||||
- RFC 2812, 3.3.2 "Notice"
|
||||
|
||||
- PRIVMSG
|
||||
PRIVMSG <target>[,<target>[,...]] <message>
|
||||
.
|
||||
Send a <message> to a given <target>, which can be a user or a
|
||||
channel, and report all errors.
|
||||
.
|
||||
The <target> must follow one of these syntax variants:
|
||||
.
|
||||
- <nickname>
|
||||
- <channel>
|
||||
- <user>[%<host>]@<server>
|
||||
- <user>%<host>
|
||||
- <nickname>!<user>@<host>
|
||||
.
|
||||
If the <target> is a user, a private message is sent directly to this
|
||||
user; if it resolves to a channel name, a public message is sent
|
||||
to all the members of that channel.
|
||||
.
|
||||
In addition, IRC Ops can use these two forms to specify the <target>:
|
||||
.
|
||||
- #<hostmask>
|
||||
- $<servermask>
|
||||
.
|
||||
The <mask> can contain the wildcard characters "*" and "?", but must
|
||||
contain at least one dot (".") and no wildcard after the last one.
|
||||
Then, the <message> is sent to all users matching this <mask>.
|
||||
.
|
||||
All warnings and errors are reported back to the initiator using
|
||||
numeric status codes, which is the only difference to the "NOTICE"
|
||||
command, which doesn't report back any errors or warnings at all.
|
||||
.
|
||||
Please note that clients often use "MSG" as an alias to PRIVMSG, and
|
||||
a command "QUERY <nick> [<message>]" to initiate private chats. Both
|
||||
are command extensions of the client and never sent to the server.
|
||||
|
||||
References:
|
||||
- RFC 2812, 2.3.1 "Message format in Augmented BNF"
|
||||
- RFC 2812, 3.3 "Sending messages"
|
||||
- RFC 2812, 3.3.1 "Private messages"
|
||||
|
||||
Status and Informational Commands
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- ADMIN
|
||||
ADMIN [<target>]
|
||||
.
|
||||
Show administrative information about an IRC server in the network.
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to
|
||||
a specific server, or a mask matching a server name in the network.
|
||||
The server of the current connection is used when <target> is omitted.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.4.9 "Admin command"
|
||||
|
||||
- INFO
|
||||
INFO [<target>]
|
||||
.
|
||||
Show the version, birth & online time of an IRC server in the network.
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to
|
||||
a specific server, or a mask matching a server name in the network.
|
||||
The server of the current connection is used when <target> is omitted.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.4.10 "Info command"
|
||||
|
||||
- ISON
|
||||
ISON <nickname> [<nickname> [...]]
|
||||
.
|
||||
Query online status of a list of nicknames. The server replies with
|
||||
a list only containing nicknames actually connected to a server in
|
||||
the network. If no nicknames of the given list are online, an empty
|
||||
list is returned to the client requesting the information.
|
||||
|
||||
Please note that "all" IRC daemons even parse separate nicknames in
|
||||
a single parameter (like ":nick1 nick2"), and therefore ngIRCd
|
||||
implements this behavior, too.
|
||||
|
||||
References:
|
||||
- RFC 2812, 4.9 "Ison message"
|
||||
|
||||
- LINKS
|
||||
LINKS [[<target>] <mask>]
|
||||
.
|
||||
List all servers currently registered in the network matching <mask>,
|
||||
or all servers if <mask> has been omitted, as seen by the server
|
||||
specified by <target> or the local server when <target> is omitted.
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to
|
||||
a specific server, or a mask matching a server name in the network.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.4.5 "Links message"
|
||||
|
||||
- LUSERS
|
||||
LUSERS [<mask> [<target>]]
|
||||
.
|
||||
Return statistics about the number of clients (users, servers,
|
||||
services, ...) in the network as seen by the server <target>.
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to
|
||||
a specific server, or a mask matching a server name in the network.
|
||||
The server of the current connection is used when <target> is omitted.
|
||||
|
||||
Please note that ngIRCd ignores the <mask> parameter entirely: it
|
||||
is not possible to get information for a part of the network only.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.4.2 "Lusers message"
|
||||
|
||||
- MOTD
|
||||
MOTD [<target>]
|
||||
.
|
||||
Show the "Message of the Day" (MOTD) of an IRC server in the network.
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to
|
||||
a specific server, or a mask matching a server name in the network.
|
||||
The server of the current connection is used when <target> is omitted.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.4.1 "Motd message"
|
||||
|
||||
- NAMES
|
||||
NAMES [<channel>[,<channel>[,...]] [<target>]]
|
||||
.
|
||||
Show the list of users that are members of a particular <channel>
|
||||
(and that are visible for the client requesting this information) as
|
||||
seen by the server <target>. More than one <channel> can be given
|
||||
separated by "," (but not whitespaces!).
|
||||
.
|
||||
If <channel> has been omitted, all visible users are shown, grouped
|
||||
by channel name, and all visible users not being members of at least
|
||||
one channel are shown as members of the pseudo channel "*".
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to
|
||||
a specific server, or a mask matching a server name in the network.
|
||||
The server of the current connection is used when <target> is omitted.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.2.5 "Names message"
|
||||
|
||||
- STATS
|
||||
STATS [<query> [<target>]]
|
||||
.
|
||||
Show statistics and other information of type <query> of a particular
|
||||
IRC server in the network.
|
||||
.
|
||||
The following <query> types are supported (case-insensitive where
|
||||
applicable):
|
||||
.
|
||||
- g Network-wide bans ("G-Lines").
|
||||
- k Server-local bans ("K-Lines").
|
||||
- L Link status (servers and user links).
|
||||
- l Link status (servers and own link).
|
||||
- m Command usage count.
|
||||
- u Server uptime.
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to
|
||||
a specific server, or a mask matching a server name in the network.
|
||||
The server of the current connection is used when <target> is omitted.
|
||||
.
|
||||
To use "STATS L" the user must be an IRC Operator.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.4.4 "Stats message"
|
||||
|
||||
- TIME
|
||||
TIME [<target>]
|
||||
.
|
||||
Show the local time of an IRC server in the network.
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to
|
||||
a specific server, or a mask matching a server name in the network.
|
||||
The server of the current connection is used when <target> is omitted.
|
||||
|
||||
References
|
||||
- RFC 2812, 3.4.6 "Time message"
|
||||
|
||||
- TRACE
|
||||
TRACE [<target>]
|
||||
.
|
||||
Find the route to a specific server and send information about its
|
||||
peers. Each server that processes this command reports back to the
|
||||
sender about it: the replies from pass-through servers form a chain
|
||||
which shows the route to the destination.
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to
|
||||
a specific server, or a mask matching a server name in the network.
|
||||
The server of the current connection is used when <target> is omitted.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.4.8 "Trace message"
|
||||
|
||||
- USERHOST
|
||||
USERHOST <nickname> [<nickname> [...]]
|
||||
.
|
||||
Show flags and the hostmasks (<user>@<host>) of the <nickname>s,
|
||||
separated by spaces. The following flags are used:
|
||||
.
|
||||
- "-" The client is "away" (the mode "+a" is set on this client).
|
||||
- "+" Client seems to be available, at least it isn't marked "away".
|
||||
- "*" The client is an IRC operator (the mode "+o" is set).
|
||||
|
||||
References:
|
||||
- RFC 2812, 4.8 "Userhost message"
|
||||
|
||||
- VERSION
|
||||
VERSION [<target>]
|
||||
.
|
||||
Show version information about a particular IRC server in the network.
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to
|
||||
a specific server, or a mask matching a server name in the network.
|
||||
The server of the current connection is used when <target> is omitted.
|
||||
.
|
||||
Please note: in normal operation, the version number ends in a dot
|
||||
(".", for example "ngIRCd-20.1."). If it ends in ".1" (for example
|
||||
"ngIRCd-20.1.1", same version than before!), the server is running in
|
||||
debug-mode; and if it ends in ".2", the "network sniffer" is active!
|
||||
Keep your privacy in mind ...
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.4.3 "Version message"
|
||||
|
||||
- WHO
|
||||
WHO [<mask> ["o"]]
|
||||
.
|
||||
Show a list of users who match the <mask>, or all visible users when
|
||||
the <mask> has been omitted. (Special case: the <mask> "0" is
|
||||
equivalent to "*")
|
||||
.
|
||||
If the flag "o" is given, the server will only return information about
|
||||
IRC Operators.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.6.1 "Who query"
|
||||
|
||||
- WHOIS
|
||||
WHOIS [<target>] <mask>[,<mask>[,...]]
|
||||
.
|
||||
Query information about users matching the <mask> parameter(s) as seen
|
||||
by the server <target>; up to 3 <masks> are supported.
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to a
|
||||
specific server, or a mask matching a server name in the network. The
|
||||
server of the current connection is used when <target> is omitted.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.6.2 "Whois query"
|
||||
|
||||
- WHOWAS
|
||||
WHOWAS <nickname>[,<nickname>[,...]] [<count> [<target>]]
|
||||
.
|
||||
Query information about nicknames no longer in use in the network,
|
||||
either because of nickname changes or disconnects. The history is
|
||||
searched backwards, returning the most recent entry first. If there
|
||||
are multiple entries, up to <count> entries will be shown (or all of
|
||||
them, if no <count> has been given).
|
||||
.
|
||||
<target> can be a server name, the nickname of a client connected to a
|
||||
specific server, or a mask matching a server name in the network. The
|
||||
server of the current connection is used when <target> is omitted.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.6.3 "Whowas"
|
||||
|
||||
|
||||
Channel Commands
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
- INVITE
|
||||
INVITE <nickname> <channel>
|
||||
.
|
||||
Invite <nickname> to join channel <channel>.
|
||||
.
|
||||
<channel> does not have to exist, but if it does, only members of the
|
||||
channel are allowed to invite other users. If the channel mode "+i"
|
||||
is set, only channel "half-ops" (and above) may invite other clients,
|
||||
and if channel mode "+V" is set, nobody can invite other users.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.2.7 "Invite message"
|
||||
|
||||
- JOIN
|
||||
JOIN {<channel>[,<channel>[,...]] [<key>[,<key>[,...]]] | 0}
|
||||
.
|
||||
Makes the client join the <channel> (comma-separated list), specifying
|
||||
the channel keys ("passwords"). A <channel-key> is only needed if the
|
||||
<channel> has the mode "+k" set.
|
||||
.
|
||||
If the channel(s) do not exist, then they will be created.
|
||||
.
|
||||
Using "JOIN 0" parts all channels at once.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.2.1 "Join message" (client protocol)
|
||||
- RFC 2813, 4.2.1 "Join message" (server protocol)
|
||||
|
||||
- KICK
|
||||
KICK <channel>[,<channel>[,...]] <nickname>[,<nickname>[,...]] [<reason>]
|
||||
.
|
||||
Remove users(s) with <nickname>(s) from <channel>(s).
|
||||
.
|
||||
There must be either exactly one <channel> parameter and multiple
|
||||
<nickname> parameters, or as many <channel> parameters as there are
|
||||
<nickname> parameters. The <reason> is shown to the users being
|
||||
kicked, and the nickname of the current user is used when <reason>
|
||||
is omitted.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.2.8 "Kick command"
|
||||
|
||||
- LIST
|
||||
LIST [<mask>[,<mask>[,...]] [<server>]]
|
||||
.
|
||||
List all visible channels matching the <mask> (comma-separated list),
|
||||
or all channels when no <mask> was specified.
|
||||
.
|
||||
If <server> is given, the command will be forwarded to <server> for
|
||||
evaluation.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.2.6 "List message"
|
||||
|
||||
- PART
|
||||
PART <channel>[,<channel>[,...]] [<part-message>]
|
||||
.
|
||||
Leave <channel> (comma-separated list), optionally with sending a
|
||||
<part-message> to all the other channel members.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.2.2 "Part message"
|
||||
|
||||
- TOPIC
|
||||
TOPIC <channel> [<topic>]
|
||||
.
|
||||
Change or view the topic of a channel.
|
||||
.
|
||||
The topic for channel <channel> is returned if there is no <topic>
|
||||
given. If the <topic> parameter is present, the topic for that
|
||||
channel will be changed, if this action is allowed for the user
|
||||
requesting it. If the <topic> parameter is an empty string, the
|
||||
topic for that channel will be removed.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.2.4 "Topic message"
|
||||
|
||||
|
||||
Administrative Commands
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- CONNECT
|
||||
CONNECT <server> [<port> [<remote-server> [<my-pwd> <peer-pwd>]]]
|
||||
.
|
||||
Instructs the current server, or <remote-server> if specified,
|
||||
to connect to the server named <server>, which must be configured
|
||||
in the server configuration file.
|
||||
.
|
||||
To use this command, the user must be an IRC Operator. To establish
|
||||
a connection on a <remote-server>, you must have remote IRC operator
|
||||
privileges.
|
||||
.
|
||||
If <port>, <my-pwd> and <peer-pwd> are given, these values override
|
||||
the ones specified in the server configuration file.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.4.7 "Connect message"
|
||||
|
||||
- DIE
|
||||
DIE [<message>]
|
||||
.
|
||||
Instructs the server to shut down.
|
||||
.
|
||||
The optional (and non-standard) <message> text is sent to each client
|
||||
connected to this server before all connections are closed.
|
||||
.
|
||||
To use this command, the user must be an IRC Operator.
|
||||
|
||||
References:
|
||||
- RFC 2812, 4.3 "Die message"
|
||||
|
||||
- DISCONNECT
|
||||
DISCONNECT <server>
|
||||
.
|
||||
Disconnect and disable a locally linked server.
|
||||
.
|
||||
To use this command, the user must be an IRC Operator.
|
||||
|
||||
References:
|
||||
- This command is not specified in the IRC RFCs, it is an extension
|
||||
of ngIRCd.
|
||||
|
||||
- GLINE
|
||||
GLINE <nick!user@hostmask> [<timeout> :<reason>]
|
||||
.
|
||||
This command provides timed G-Lines (network-wide bans).
|
||||
.
|
||||
If a client matches a G-Line, it cannot connect to any server on
|
||||
the IRC network for <timeout> seconds. When <timeout> is 0, it make
|
||||
the G-Line permanent.
|
||||
.
|
||||
If no <timeout> and no <reason> is given, the G-Line is removed.
|
||||
.
|
||||
To use this command, the user must be an IRC Operator.
|
||||
.
|
||||
"STATS g" can be used to list all currently active G-Lines.
|
||||
|
||||
References:
|
||||
- This command is not specified in the IRC RFCs, it is an extension
|
||||
of ngIRCd.
|
||||
|
||||
- KILL
|
||||
KILL <nickname> <reason>
|
||||
.
|
||||
Forcibly remove all users with a given <nickname> from the IRC
|
||||
network and display the given <reason> to them.
|
||||
.
|
||||
This command is used internally between servers, too, for example
|
||||
to disconnect duplicate <nickname>'s after a "net split".
|
||||
.
|
||||
To use this command, the user must be an IRC Operator.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.7.1 "Kill message"
|
||||
|
||||
- KLINE
|
||||
KLINE <nick!user@hostmask> [<timeout> :<reason>]
|
||||
.
|
||||
This command provides timed K-Lines (server-local bans).
|
||||
.
|
||||
If a client matches a K-Line, it cannot connect to this server for
|
||||
<timeout> seconds. When <timeout> is 0, it makes the K-Line permanent.
|
||||
.
|
||||
If no <timeout> and no <reason> is given, the K-Line is removed.
|
||||
.
|
||||
To use this command, the user must be an IRC Operator.
|
||||
.
|
||||
"STATS k" can be used to list all currently active K-Lines.
|
||||
|
||||
References:
|
||||
- This command is not specified in the IRC RFCs, it is an extension
|
||||
of ngIRCd.
|
||||
|
||||
- OPER
|
||||
OPER <name> <password>
|
||||
.
|
||||
Authenticates a user named <name> as an IRC operator on the current
|
||||
server/network.
|
||||
.
|
||||
This operator <name> must be configured in the server configuration.
|
||||
.
|
||||
Please note that <name> is NOT related to a nickname at all!
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.1.4 "Oper message"
|
||||
|
||||
- REHASH
|
||||
REHASH
|
||||
.
|
||||
Causes the server to re-read and re-process its configuration file(s).
|
||||
.
|
||||
While rehashing, no new connections are accepted, but all already
|
||||
established connections stay connected.
|
||||
.
|
||||
To use this command, the user must be an IRC Operator.
|
||||
|
||||
References:
|
||||
- RFC 2812, 4.2 "Rehash message"
|
||||
|
||||
- RESTART
|
||||
RESTART
|
||||
.
|
||||
Restart the server.
|
||||
.
|
||||
While restarting, all connections are reset and no new connections
|
||||
are accepted.
|
||||
.
|
||||
To use this command, the user must be an IRC Operator.
|
||||
|
||||
References:
|
||||
- RFC 2812, 4.4 "Restart message"
|
||||
|
||||
- WALLOPS
|
||||
WALLOPS <message>
|
||||
.
|
||||
Sends <message> to all users with user mode "+w".
|
||||
.
|
||||
To use this command, the user must be an IRC Operator.
|
||||
|
||||
References:
|
||||
- RFC 2812, 4.7 "Operwall message"
|
||||
|
||||
IRC Service Commands
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- SERVICE
|
||||
SERVICE <name> <reserved1> <distribution> <type> <reserved2> <info>
|
||||
SERVICE <name> <servertoken> <distribution> {<type>|+<modes>} <hops> <info>
|
||||
.
|
||||
Register a new service in the network.
|
||||
.
|
||||
The first form is used by directly linked services and isn't supported
|
||||
by ngIRCd at the moment. The second form announces services connected
|
||||
to remote "pseudo-servers" ("services hubs").
|
||||
.
|
||||
The <distribution> and <type> parameters are ignored by ngIRCd.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.1.6 "Service message"
|
||||
- RFC 2813, 4.1.4 "Service message"
|
||||
|
||||
- SERVLIST
|
||||
SERVLIST [<mask> [<type>]]
|
||||
.
|
||||
List all IRC services currently registered in the network.
|
||||
.
|
||||
The optional <mask> and <type> parameters can be used to limit the
|
||||
listing to services matching the <mask> and that are of type <type>.
|
||||
.
|
||||
Please note that ngIRCd doesn't use any service types at the moment
|
||||
and therefore all services are of type "0".
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.5.1 "Servlist message"
|
||||
|
||||
- SQUERY
|
||||
SQUERY <target>[,<target>[,...]] <message>
|
||||
.
|
||||
Send a <message> to a given <target> IRC service, and report all
|
||||
errors.
|
||||
.
|
||||
The "SQUERY" command exactly behaves like the "PRIVMSG" command, but
|
||||
enforces that the <target> of the <message> is an IRC service.
|
||||
Please see the help text of the "PRIVMSG" command for a detailed
|
||||
description of the parameters!
|
||||
.
|
||||
If a user wants to interact with IRC services, he should use "SQUERY"
|
||||
instead of "PRIVMSG" or "NOTICE": only "SQUERY makes sure that no
|
||||
regular user, which uses the nickname of an IRC service, receives
|
||||
the command in error, for example during a "net split"!
|
||||
|
||||
References:
|
||||
- RFC 2812, 2.3.1 "Message format in Augmented BNF"
|
||||
- RFC 2812, 3.3 "Sending messages"
|
||||
- RFC 2812, 3.3.2 "Notice"
|
||||
|
||||
- SVSNICK
|
||||
SVSNICK <oldnick> <newnick>
|
||||
.
|
||||
Forcefully change foreign user nicknames. This command is allowed
|
||||
for servers only.
|
||||
.
|
||||
The "SVSNICK" command is forwarded to the server to which the user
|
||||
with nickname <oldnick> is connected to, which in turn generates a
|
||||
regular "NICK" command that then is sent to the client, so no special
|
||||
support in the client software is required.
|
||||
|
||||
References:
|
||||
- ngIRCd GIT commit e3f300d3231f
|
||||
|
||||
|
||||
Server Protocol Commands
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- CHANINFO
|
||||
CHANINFO <channel> +<modes> [[<key> <limit>] <topic>]
|
||||
.
|
||||
CHANINFO is used by servers to inform each other about a channel:
|
||||
its modes, channel key, user limits and its topic.
|
||||
.
|
||||
Note: even when <modes> don't include "k" (key) or "l" (limit), both
|
||||
parameters must be given when used; use "*" for "no key" and 0 for
|
||||
"no limit" for the unused parameter in this case.
|
||||
.
|
||||
The CHANINFO command is allowed on server-links only.
|
||||
|
||||
References:
|
||||
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
|
||||
- IRC+, doc/Protocol.txt
|
||||
|
||||
- ERROR
|
||||
ERROR [<message> [<> [...]]]
|
||||
.
|
||||
Inform a client or a server about an error condition. The first
|
||||
parameter, if given, is logged by the server receiving the message,
|
||||
all other parameters are silently ignored.
|
||||
.
|
||||
This command is silently ignored on non-server and non-service links
|
||||
and shouldn't be used by regular IRC clients.
|
||||
.
|
||||
The ERROR message is also sent before terminating a regular client
|
||||
connection.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.7.4 "Error message"
|
||||
|
||||
- METADATA
|
||||
METADATA <target> <key> <value>
|
||||
.
|
||||
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 METADATA command is allowed on server-links only.
|
||||
|
||||
References:
|
||||
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
|
||||
- IRC+, doc/Protocol.txt
|
||||
|
||||
- NJOIN
|
||||
NJOIN <channel> [<mode>]<nick>[,[<mode>]<nick>[,...]]
|
||||
.
|
||||
The NJOIN command is used on server-links to add users with <nick>
|
||||
and <mode> to a <channel> while peering.
|
||||
.
|
||||
The NJOIN command is allowed on server-links only.
|
||||
|
||||
References:
|
||||
- RFC 2813, 4.2.2 "Njoin message"
|
||||
|
||||
- SERVER
|
||||
SERVER <servername> <info>
|
||||
SERVER <servername> <hopcount> <info>
|
||||
SERVER <servername> <hopcount> <token> <info>
|
||||
.
|
||||
The first form registers the local connection as a new server in the
|
||||
network, the second (RFC 1459) and third (RFC 2812) form announce a
|
||||
new remote server in the network.
|
||||
.
|
||||
The SERVER command is allowed on unregistered or server-links only.
|
||||
|
||||
References:
|
||||
- RFC 1459, 4.1.4 "Server message"
|
||||
- RFC 2813, 4.1.2 "Server message"
|
||||
|
||||
- SQUIT
|
||||
SQUIT <server> <comment>
|
||||
.
|
||||
Disconnects an IRC Server from the network.
|
||||
.
|
||||
This command is used on server-links, but can be used by IRC Operators
|
||||
to forcefully disconnect servers from the network, too.
|
||||
|
||||
References:
|
||||
- RFC 2812, 3.1.8 "Squit"
|
||||
- RFC 2813, 4.1.6 "Server quit message"
|
||||
|
||||
Dummy Commands
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
- SUMMON
|
||||
SUMMON <user> [<target> [<channel>]]
|
||||
.
|
||||
This command was intended to call people into IRC who are directly
|
||||
connected to the terminal console of the IRC server -- but is
|
||||
deprecated today. Therefore ngIRCd doesn't really implement this
|
||||
command and always returns an error message, regardless of the
|
||||
parameters given.
|
||||
|
||||
References:
|
||||
- RFC 2812, 4.5 "Summon message"
|
||||
|
||||
- USERS
|
||||
USERS [<target>]
|
||||
.
|
||||
This command was intended to list users directly logged in into the
|
||||
console of the IRC server -- but is deprecated today. Therefore ngIRCd
|
||||
doesn't really implement this command and always returns an error
|
||||
message, regardless of the parameters given.
|
||||
|
||||
References:
|
||||
- RFC 2812, 4.6 "Users"
|
||||
|
||||
- GET
|
||||
GET [...]
|
||||
.
|
||||
Fake HTTP GET command. When received, the connection is shut down
|
||||
immediately again to protect against crazy web browsers ...
|
||||
|
||||
References:
|
||||
- ngIRCd GIT commit 33e8c2480649
|
||||
|
||||
- POST
|
||||
POST [...]
|
||||
.
|
||||
Fake HTTP POST command. When received, the connection is shut down
|
||||
immediately again to protect against crazy web browsers ...
|
||||
|
||||
References:
|
||||
- ngIRCd GIT commit 33e8c2480649
|
@@ -1,83 +0,0 @@
|
||||
# [ngIRCd](https://ngircd.barton.de) - Container How-To
|
||||
|
||||
The ngIRCd daemon can be run as a containerized application, for example using
|
||||
Docker or Podman (the latter being preferred and used in the examples below).
|
||||
The container definition file, also known as "Docker file", is bundled with this
|
||||
distribution as `contrib/Dockerfile` and based on the official "stable-slim"
|
||||
container of the Debian project (see https://hub.docker.com/_/debian).
|
||||
|
||||
## Building the container
|
||||
|
||||
You can use the following command to build the ngIRCd container image:
|
||||
|
||||
```bash
|
||||
podman build --format=docker -f contrib/Dockerfile .
|
||||
```
|
||||
|
||||
The `Dockerfile` includes a `HEALTHCHECK` directive, which is not supported by
|
||||
the default OCI 1.0 image format, therefore we use the "docker" format here.
|
||||
|
||||
If you are using Git, you can tag the built image like this (use the ID of the
|
||||
newly built image!):
|
||||
|
||||
```bash
|
||||
tag=$(git describe --tags | sed 's/rel-//g')
|
||||
podman tag <container_id> "ngircd:${tag}"
|
||||
```
|
||||
|
||||
## Running the container
|
||||
|
||||
You can use this command to run the ngIRCd container using Podman, for example:
|
||||
|
||||
```bash
|
||||
podman run --name=ngircd --detach \
|
||||
-p 127.0.0.1:6667:6667 \
|
||||
ngircd:<tag>
|
||||
```
|
||||
|
||||
This creates and starts a new container named "ngircd" from the image
|
||||
"ngircd:<tag>" (you habe to substitute _<tag>_ with the real tag name here!) and
|
||||
maps the host port 6667 on localhost to the port 6667 inside of the container.
|
||||
|
||||
### Configuring the container
|
||||
|
||||
The ngIRCd inside of the container is installed inside of `/opt/ngircd/` and the
|
||||
default drop-in directory is `/opt/ngircd/etc/ngircd.conf.d`. Therefore you can
|
||||
map a host folder to this drop-in directory inside of the container and place
|
||||
drop-in configuration file(s) in the host path like this:
|
||||
|
||||
```bash
|
||||
mkdir -p /host/path/to/ngircd/conf.d
|
||||
touch /host/path/to/ngircd/conf.d/my.conf
|
||||
podman run --name=ngircd --detach \
|
||||
-p 127.0.0.1:6667:6667 \
|
||||
-v "/host/path/to/ngircd/conf.d:/opt/ngircd/etc/ngircd.conf.d" \
|
||||
ngircd:<tag>
|
||||
```
|
||||
|
||||
### Testing the configuration
|
||||
|
||||
As with the native daemon, it is a very good idea to validate the configuration
|
||||
of the daemon after making changes.
|
||||
|
||||
With Docker and Podman, you can pass arguments to the `ngircd` binary inside of
|
||||
the container by simply appending it to the "run" command line like this:
|
||||
|
||||
```bash
|
||||
podman run --rm -it \
|
||||
-v "/host/path/to/ngircd/conf.d:/opt/ngircd/etc/ngircd.conf.d" \
|
||||
ngircd:<tag> \
|
||||
--configtest
|
||||
```
|
||||
|
||||
### Reloading the daemon configuration in a running container
|
||||
|
||||
To activate changed configuration of ngIRCd, you can either restart the
|
||||
container (which will disconnect all currently connected clients) or signal
|
||||
`ngircd`(8) inside of the running container to reload its configuration file(s).
|
||||
|
||||
The latter can be done with this command, for example:
|
||||
|
||||
```bash
|
||||
podman exec -it ngircd /bin/bash -c 'kill -HUP $(/usr/bin/pidof -s ngircd)'
|
||||
```
|
@@ -1,60 +0,0 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2015 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 lives
|
||||
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"!
|
||||
|
||||
- Use GitHub to create "Pull Requests"
|
||||
|
||||
ngIRCd is hosted on GitHub (<https://github.com/ngircd>), so please use the
|
||||
tools available there and open issues (comment!) and create pull requests!
|
||||
See <https://help.github.com/articles/using-pull-requests/> for details.
|
176
doc/FAQ.md
176
doc/FAQ.md
@@ -1,176 +0,0 @@
|
||||
# [ngIRCd](https://ngircd.barton.de) - FAQ, Tips & Tricks
|
||||
|
||||
# General
|
||||
|
||||
## Is it possible to link ngIRCd with other non-ngIRCd servers?
|
||||
|
||||
Yes and no. Back in the beginning (2001, 2002, ...) the server-server protocol
|
||||
used by ngIRCd was compatible to the original ircd used by IRCNet at that time,
|
||||
version 2.10.3p3. And most probably this is still the case today, although not
|
||||
actively tested for a long time.
|
||||
|
||||
Please note that newer ircd versions (2.11.x) are *not* compatible any more!
|
||||
|
||||
And other server-server protocols were never supported.
|
||||
|
||||
## Is there a homepage with further information and downloads?
|
||||
|
||||
Yes. Please visit https://ngircd.barton.de :-)
|
||||
|
||||
## Why should I use ngIRCd instead of the original one?
|
||||
|
||||
The `README.md` file and the [homepage](https://ngircd.barton.de) list a few
|
||||
advantages of ngIRCd:
|
||||
|
||||
- Well arranged (lean) configuration file.
|
||||
- Simple to build, install, configure, and maintain.
|
||||
- Supports IPv6 and SSL.
|
||||
- Can use PAM for user authentication.
|
||||
- Lots of popular user and channel modes are implemented.
|
||||
- Supports "cloaking" of users.
|
||||
- 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, macOS, NetBSD, OpenBSD, Solaris and Windows with WSL or Cygwin.
|
||||
|
||||
# Building and Compilation
|
||||
|
||||
## The `./configure` script is missing in the source directory!?
|
||||
|
||||
When using sources checked out via *Git*, the `configure` script as well as the
|
||||
`Makefile.in` templates must be generated using the GNU *automake*, *autoconf*
|
||||
and *pkg-config* tools. To simplify this task run the `./autogen.sh` script
|
||||
which will execute the required commands for you; then continue with executing
|
||||
the `./configure` script as usual.
|
||||
|
||||
Please see the `INSTALL.md` file for details!
|
||||
|
||||
## Error message `aclocal: command not found`
|
||||
|
||||
GNU *automake* is missing on your system but required for building Git versions
|
||||
of ngIRCd. Install GNU automake 1.6 or later and try again.
|
||||
|
||||
## Error message `autoheader: command not found`?
|
||||
|
||||
GNU *autoconf* is missing on your system but required for building Git versions
|
||||
of ngIRCd. Install GNU autoconf 2.52 or later and try again.
|
||||
|
||||
## Error message `automake: configure.in: AM_INIT_AUTOMAKE must be used`?
|
||||
|
||||
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.)
|
||||
|
||||
# Troubleshooting ngIRCd Runtime Issues
|
||||
|
||||
Always start with:
|
||||
|
||||
1. Make sure that ngIRCd parsed its configuration file as it was intended!
|
||||
Run `ngircd --configest` and double-check its output!
|
||||
|
||||
2. Check the logs of your system, especially the entries generated by ngIRCd!
|
||||
Where you can find the log messages depends on your system and your setup:
|
||||
it can be plain text files in `/var/log/` (syslog) or the systemd journal
|
||||
database, for example.
|
||||
|
||||
3. Ensure that the daemon started up successfully, is actually running and did
|
||||
not stop/crash in the meantime. You can check this with your service
|
||||
manager (like `systemctl status ngircd` on Linux systems using systemd) or
|
||||
using `pgrep -l ngircd` to check for "ngircd" processes. If ngIRCd is not
|
||||
running, try to restart the service and check the service status and the
|
||||
logs (syslog, systemd journal) again!
|
||||
|
||||
## Where is the log file stored?
|
||||
|
||||
See introduction to this section above :-)
|
||||
|
||||
## "Connection refused" errors
|
||||
|
||||
1. Is the daemon really running? See introduction to this section above!
|
||||
|
||||
2. Does ngIRCd listen on the correct interface(s) and port(s)? On Linux, you
|
||||
can check this with `sudo ss -ltnp|awk '/ngircd/{print $4}`, for example.
|
||||
Check your `Listen` and `Ports` settings in the `[Global]` (and `[SSL]`)
|
||||
sections and the startup messages of the daemon, especially the lines
|
||||
stating "Now listening on xxx:yyy (socket zzz)"!
|
||||
|
||||
3. Are you able to connect to the ngIRCd service locally from the system the
|
||||
daemon runs on? Test all the interface IP addresses you expect ngIRCd to
|
||||
listen on, for example with a regular IRC client or tools like `telnet` or
|
||||
`nc` ("net cat"): `telnet localhost 6667`, `nc 192.168.1.2 6667`, ...
|
||||
|
||||
If all the above works as expected, the issue most probably is not with
|
||||
ngIRCd or its configuration but the network layer.
|
||||
|
||||
4. Are the port(s) ngIRCd listens on open and not blocked by a firewall? Check
|
||||
the logs of your firewall solution (on the server itself and all firewalls
|
||||
"in front of it") and use tools like `tcpdump` to check the network layer!
|
||||
|
||||
## Issues related to running ngIRCd inside of a `chroot` environment
|
||||
|
||||
**I cannot connect to remote peers when I use the chroot option, the following
|
||||
is logged: `Can't resolve example.com: unknown error!`**
|
||||
|
||||
See next question blow ...
|
||||
|
||||
**When running ngIRCd inside a chroot, no IP addresses can be translated in DNS
|
||||
names, errors like "Name or service not known" are logged!**
|
||||
|
||||
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:
|
||||
|
||||
``` bash
|
||||
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 do
|
||||
not depend on NSS modules and these files.
|
||||
|
||||
# IRC Features
|
||||
|
||||
## I have added an `[Oper]` section, but how do I log in as an IRC operator?
|
||||
|
||||
You can use the `/OPER <name> <password>` command in your IRC client to become
|
||||
an IRC operator as defined in an `[Oper]` block in your configuration file.
|
||||
|
||||
ngIRCd will also log all OPER requests (using syslog), and if an OPER command
|
||||
fails you can look there to determine why it did not work (bad password,
|
||||
unauthorized host mask, ...).
|
||||
|
||||
Please keep in mind that the "name" in the `/OPER` command is *not* related to
|
||||
your nick name at all!
|
||||
|
||||
## I am an IRC operator, but MODE doesn't work!
|
||||
|
||||
By default, IRC operators are still not allowed to use `/MODE` globally.
|
||||
|
||||
If you set `OperCanUseMode = yes` in your configuration, then IRC operators can
|
||||
use the `/MODE` command for changing modes even when they are not joined to the
|
||||
specific channel.
|
||||
|
||||
## How can I "auto-op" users in channels?
|
||||
|
||||
ngIRCd can't do this: you would have to use some "IRC Services", like
|
||||
[Atheme](http://atheme.net/atheme.html) or [Anope](http://www.anope.org).
|
||||
|
||||
See `doc/Services.txt` for setup instructions.
|
||||
|
||||
# Bugs!?
|
||||
|
||||
## Is there a list of known bugs and desired feature enhancements?
|
||||
|
||||
Yes. Have a look at the bug tracking system (GitHub issues) for ngIRCd located
|
||||
at <https://github.com/ngircd/ngircd/issues>. There you can file bug reports and
|
||||
feature requests as well as search the bug database.
|
||||
|
||||
## What should I do if I found a bug?
|
||||
|
||||
Please file a bug report at <https://github.com/ngircd/ngircd/issues/new>!
|
||||
The authors will be notified automagically :-)
|
61
doc/FAQ.txt
Normal file
61
doc/FAQ.txt
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
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.
|
||||
|
||||
-- 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.
|
||||
|
||||
Q: Gibt es eine Homepage mit Informationen und Downloads?
|
||||
A: Ja. Die URL ist <http://arthur.ath.cx/~alex/ngircd/>.
|
||||
|
||||
|
||||
II. Compilieren
|
||||
~~~~~~~~~~~~~~~
|
||||
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: ./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").
|
||||
|
||||
|
||||
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.
|
||||
|
||||
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/>
|
||||
|
||||
|
||||
--
|
||||
$Id: FAQ.txt,v 1.2 2002/02/19 20:05:02 alex Exp $
|
@@ -1,89 +0,0 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2024 Alexander Barton and Contributors.
|
||||
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 you have working versions of GNU autoconf and GNU automake
|
||||
installed on the system you use for generating the release:
|
||||
as of May 2020 we are using GNU autoconf 2.69 and GNU automake 1.11.6
|
||||
which seem to work just fine.
|
||||
NOTE: new releases of GNU automake DO NOT work, as they lack support for
|
||||
the "ansi2knr" wrapper and "de-ANSI-fication" support!
|
||||
|
||||
b) Make sure the source tree is in a releasable state ;-)
|
||||
- Are all branches & patches merged? Check GitHub issues, pull requests
|
||||
and milestones!
|
||||
- Run as many tests as you can!
|
||||
- Is the AUTHORS.md file up to date? This command may be helpful:
|
||||
"( grep '>$' AUTHORS.md; git shortlog -se|cut -c8-|sed 's/^/- /' ) \
|
||||
| grep -Ev '(alex@barton.de|fw@strlen.de)' \
|
||||
| LC_ALL=de_DE.UTF-8 sort -u"
|
||||
|
||||
c) Update the files describing the new release:
|
||||
- ChangeLog
|
||||
- NEWS
|
||||
|
||||
d) Update the version numbers in the following files:
|
||||
- contrib/de.barton.ngircd.metainfo.xml
|
||||
- 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" (and "make dist-tarZ && make dist-xz") to generate all
|
||||
of 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 (to the website, its mirrors, and GitHub).
|
||||
|
||||
m) Update the ngIRCd website and its mirrors!
|
||||
|
||||
n) Write an announcement to the mailing list, Twitter, ...
|
||||
|
||||
o) Relax :-)
|
@@ -1,92 +1,29 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors
|
||||
# Copyright (c)2001,2002 by 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.
|
||||
# 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.10 2002/09/16 10:35:06 alex Exp $
|
||||
#
|
||||
|
||||
.tmpl:
|
||||
$(AM_V_GEN)sed \
|
||||
-e "s@:ETCDIR:@${sysconfdir}@" \
|
||||
-e "s@:DOCDIR:@${docdir}@" \
|
||||
<$< >$@
|
||||
SUBDIRS = en
|
||||
|
||||
SUFFIXES = .tmpl
|
||||
|
||||
static_docs = \
|
||||
Bopm.txt \
|
||||
Capabilities.txt \
|
||||
Commands.txt \
|
||||
Container.md \
|
||||
Contributing.txt \
|
||||
FAQ.md \
|
||||
HowToRelease.txt \
|
||||
Modes.txt \
|
||||
PAM.txt \
|
||||
Platforms.txt \
|
||||
Protocol.txt \
|
||||
README-AUX.txt \
|
||||
README-BeOS.txt \
|
||||
README-Interix.txt \
|
||||
RFC.txt \
|
||||
Services.txt \
|
||||
SSL.md
|
||||
|
||||
doc_templates = sample-ngircd.conf.tmpl
|
||||
|
||||
generated_docs = sample-ngircd.conf
|
||||
|
||||
toplevel_docs = ../AUTHORS.md ../COPYING ../ChangeLog ../INSTALL.md ../NEWS ../README.md
|
||||
|
||||
SUBDIRS = src
|
||||
|
||||
EXTRA_DIST = $(static_docs) $(doc_templates)
|
||||
|
||||
CLEANFILES = $(generated_docs)
|
||||
EXTRA_DIST = CVS.txt FAQ.txt Protocol.txt README-AUX.txt \
|
||||
README-BeOS.txt RFC.txt sample-ngircd.conf
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
all: $(generated_docs)
|
||||
|
||||
install-data-hook: $(static_docs) $(toplevel_docs) $(generated_docs)
|
||||
$(MKDIR_P) -m 755 $(DESTDIR)$(sysconfdir)
|
||||
@if [ ! -f $(DESTDIR)$(sysconfdir)/ngircd.conf ]; then \
|
||||
${MAKE} install-config; \
|
||||
fi
|
||||
$(MKDIR_P) -m 755 $(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
|
||||
|
||||
.PHONY: install-config uninstall-config
|
||||
install-data-hook:
|
||||
$(mkinstalldirs) $(DESTDIR)$(sysconfdir)
|
||||
if [ ! -f $(DESTDIR)$(sysconfdir)/ngircd.conf ]; then \
|
||||
$(INSTALL) -m 600 -c $(srcdir)/sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf; \
|
||||
fi
|
||||
|
||||
# -eof-
|
||||
|
@@ -1,95 +0,0 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2015 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.
|
||||
F 22 Relaxed flood protection (only settable by IRC Operators).
|
||||
i 0.0.1 User is "invisible".
|
||||
I 23 No channels are shown on WHOIS (IRC Ops can always see those).
|
||||
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.
|
||||
N 23 Users can't change their nickname while on this channel.
|
||||
O 18 Only IRC operators are allowed to join this channel.
|
||||
P 0.5.0 Channel is "persistent".
|
||||
Q 20 Nobody can be kicked from the channel.
|
||||
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. This mode can only be set by an IRC
|
||||
service, other owner or IRC operator. Channel owners can
|
||||
promote other users to all levels: q, a, o, h, v. Prefix: "~".
|
||||
a 20 User is channel admin and can promote other users to v, h, o.
|
||||
Prefix: "&".
|
||||
o 0.2.0 User is channel operator and can op/kick/... other members.
|
||||
Prefix: "@".
|
||||
h 20 User is half op and can set channel modes imntvIbek and kick
|
||||
voiced and normal users. Prefix: "%".
|
||||
v 0.2.0 User is "voiced" and can speak even if channel is moderated.
|
||||
Prefix: "+".
|
||||
|
||||
|
||||
Notes
|
||||
~~~~~
|
||||
|
||||
(1) This mode is not set by ngIRCd itself but by services. ngIRCd handles
|
||||
the mode transparently and possibly adjusts its behavior.
|
49
doc/PAM.txt
49
doc/PAM.txt
@@ -1,49 +0,0 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2013 Alexander Barton and Contributors.
|
||||
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.
|
||||
|
||||
The PAM library used by the ngIRCd daemon must be able to access its
|
||||
configuration file, so don't forget to check permissions and run something
|
||||
like this: "chmod 644 /etc/pam.d/ngircd".
|
||||
|
||||
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.
|
||||
|
||||
More Examples:
|
||||
|
||||
* Use an own "password file" for ngIRCd:
|
||||
|
||||
Note: you can use the htpasswd(1) utility of Apache to manage password
|
||||
files used by pam_pwdfile, see "man htpasswd"!
|
||||
|
||||
/etc/pam.d/ngircd:
|
||||
auth required pam_pwdfile.so pwdfile=/etc/ngircd/ngircd.passwd
|
@@ -1,179 +0,0 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2024 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 ngIRCd has been tested.
|
||||
Included is the date and version of the last test and the name of the tester
|
||||
or maintainer.
|
||||
|
||||
If you successfully compiled and tested ngIRCd on a platform that isn't listed
|
||||
here, please write to the mailing list so that this list can be updated. The
|
||||
script "./contrib/platformtest.sh" should output a summary that is suitable
|
||||
for inclusion here. 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 *
|
||||
--------------------------- ------------ ---------- -------- -------- - - - - -
|
||||
aarch64/apple/darwin A-clang 12.0 26 20-12-10 goetz N Y Y Y 3
|
||||
aarch64/apple/darwin23.4.0 A-clang 15.0 27~rc1 24-04-13 alex Y Y Y Y 3
|
||||
aarch64/unknown/linux-gnu gcc 12.2.0 27~rc1 24-04-21 alex Y Y Y Y 1
|
||||
alpha/unknown/netbsd3.0 gcc 3.3.3 CVSHEAD 06-05-07 fw Y Y Y Y 3
|
||||
armv6l/unk./linux-gnueabi gcc 4.7.2 20.2 13-03-08 goetz Y Y Y Y 5
|
||||
armv6l/unk./linux-gnueabihf gcc 4.6.3 21~rc2 13-10-26 pi Y Y Y Y 5
|
||||
armv7l/unk./linux-gnueabi gcc 4.4.3 19.1 12-04-29 goetz Y Y Y Y 5
|
||||
armv7l/unk./linux-gnueabihf gcc 4.6.3 22~rc1-3 14-10-10 alex Y Y Y Y 5
|
||||
armv7l/unk./linux-gnueabihf gcc 4.8.2 21.1 14-07-15 goetz Y Y Y Y 5
|
||||
armv7l/unk./linux-gnueabihf gcc 4.9.2 23 16-01-10 alex Y Y Y Y 5
|
||||
hppa/unknown/openbsd3.5 gcc 2.95.3 CVSHEAD 04-05-25 alex Y Y Y Y
|
||||
hppa/unknown/openbsd5.4 gcc 4.2.1 22~rc1-3 14-10-10 alex Y Y y Y 3
|
||||
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/linux-gnu gcc 4.1.2 13~rc1 08-12-05 alex Y Y Y Y 1
|
||||
i386/pc/linux-gnu gcc 4.4.5 22~rc1-3 14-10-10 alex Y Y Y Y 1
|
||||
i386/pc/minix clang 3.4 23 16-01-06 goetz Y Y N Y
|
||||
i386/pc/solaris2.9 gcc 3.2.2 CVSHEAD 04-02-24 alex Y Y Y Y
|
||||
i386/pc/solaris2.11 gcc 4.8.2 24 17-01-21 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 24~rc1-7 17-01-20 alex Y Y Y Y 3
|
||||
i386/unknown/netbsdelf1.5.2 egcs-1.1.2 21 13-11-25 goetz Y Y N Y
|
||||
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 24~rc1-7 17-01-20 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.5 gcc 2.95.3 23 15-11-27 goetz 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
|
||||
i386/unknown/openbsd5.3 gcc 4.2.1 21 13-11-28 goetz Y Y Y Y 3
|
||||
i386/unknown/openbsd5.4 gcc 4.2.1 21 13-11-28 goetz 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 23 16-01-29 alex Y Y N Y
|
||||
i686/pc/cygwin gcc 4.9.3 23 16-01-06 alex Y Y Y Y
|
||||
i686/pc/linux-gnu gcc 2.6.3 23 16-01-06 goetz Y Y y Y 1
|
||||
i686/pc/linux-gnu gcc 2.7.2.1 23 15-11-30 goetz Y Y N Y 1
|
||||
i686/pc/linux-gnu gcc 2.95.2 23 15-12-23 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
|
||||
i686/pc/linux-gnu gcc 4.3.2 14.1 09-08-04 alex Y Y Y Y 1
|
||||
i686/pc/minix gcc 4.4.6 21~rc2 13-10-27 alex Y Y N N
|
||||
i686/unknown/gnu0.3 gcc 4.4.5 19 12-02-29 alex Y Y Y Y
|
||||
i686/unknown/gnu0.5 gcc 4.9.1 22~rc1-3 14-10-11 alex Y Y Y Y
|
||||
i686/unknown/gnu0.9 gcc 12.2.0 27~rc1 24-04-21 alex Y Y Y Y
|
||||
i686/unkn./kfreebsd7.2-gnu gcc 4.3.4 15 09-12-02 alex Y Y Y Y 3
|
||||
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 ? ?
|
||||
mips/sgi/irix6.5 SGI 25 19-12-29 goetz Y Y ? ?
|
||||
mipsel/openwrt/linux-uclibc gcc 4.8 24~9-g619a 18-01-28 goetz - - - Y 6
|
||||
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 21 13-11-24 goetz Y Y Y Y 1
|
||||
mipsel/unknown/netbsd8.0 gcc 5.5.0 25 19-08-09 root Y Y y Y 3
|
||||
powerpc/apple/darwin6.8 gcc 3.1 21 14-01-03 goetz Y Y Y Y
|
||||
powerpc/apple/darwin7.9.0 gcc 3.3 22 15-03-22 goetz Y Y Y Y 3
|
||||
powerpc/apple/darwin8.11.0 gcc 4.0.1 26 20-07-08 goetz Y Y Y Y 3
|
||||
powerpc/apple/darwin9.8.0 gcc 4.0.1 21 14-01-04 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
|
||||
sparc/unknown/openbsd5.5 gcc 4.2.1 21.1 14-05-03 goetz Y Y Y Y 3
|
||||
x86_64/apple/darwin10.8.0 gcc 4.2.1 21~rc2 13-10-30 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin12.3.0 gcc 4.2.1 20.2 13-04-01 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin13.0.0 A-clang 5.0 21 14-01-02 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin14.5.0 A-clang 6.1 23~rc1 15-09-06 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin15.6.0 A-clang 8.0 23~38-g455 16-11-04 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin16.5.0 A-clang 8.1 25~rc1-7-g 18-11-04 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin17.7.0 A-clang 10.0 25~rc1 18-11-04 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin18.2.0 A-clang 10.0 25~rc1-11 19-01-23 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin19.4.0 A-clang 11.0 26~rc1 20-05-10 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin19.6.0 A-clang 12.0 26 20-10-20 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin20.1.0 A-clang 12.0 26 21-01-01 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin23.4.0 A-clang 15.0 27~rc1 24-04-21 alex Y Y Y Y 3
|
||||
x86_64/unknown/dragonfly3.4 gcc 4.7.2 21 13-11-12 goetz Y Y N 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/freebsd8.4 gcc 4.2.1 24~rc1-7 17-01-20 alex Y Y Y Y 3
|
||||
x86_64/unknown/freebsd9.2 gcc 4.2.1 22~rc1-3 14-10-10 alex Y Y Y Y 3
|
||||
x86_64/unknown/freebsd10.3 F-clang 3.4 24 17-01-20 goetz Y Y Y Y 3
|
||||
x86_64/unknown/freebsd11.0 F-clang 3.8 24 17-01-21 goetz Y Y Y Y 3
|
||||
x86_64/unknown/freebsd12.1 F-clang 8.0 26 20-08-28 alex Y Y Y Y 3
|
||||
x86_64/unknown/freebsd14.0 F-clang 16.0 27~rc1 24-04-21 alex Y Y Y Y 3
|
||||
x86_64/unknown/haiku gcc 7.3.0 25~rc1-11 19-01-06 alex Y Y N Y
|
||||
x86_64/unknown/haiku gcc 13.2.0 27~rc1 24-04-21 user Y Y Y Y
|
||||
x86_64/unknown/linux-gnu clang 3.3 21 14-01-07 alex Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu clang 3.4 22~rc1-3 14-10-11 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu D-clang 14.0 27~rc1 24-04-21 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 4.4.5 24~rc1-7 17-01-20 alex Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu gcc 4.7.2 23~rc1-3 15-11-15 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 4.8.4 24~rc1-7 17-01-20 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 4.9.2 24~rc1-7 17-01-20 alex Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu gcc 5.3.0 23 15-12-14 goetz Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu [WSL] gcc 5.4.0 24 18-03-07 goetz Y Y y Y 7
|
||||
x86_64/pc/linux-gnu gcc 6.2.1 24~rc1-7 17-01-20 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 6.3.0 25~rc1-11 19-01-23 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 8.3.0 26 20-08-28 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 11.4.0 27~rc1 24-04-21 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 12.2.0 27~rc1 24-04-21 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 13.2.1 27~rc1 24-04-21 alex Y Y Y Y 1
|
||||
x86_64/pc/solaris2.11 gcc 10.3.0 27~rc1 24-04-26 alex Y Y y Y 5
|
||||
x86_64/unknown/linux-gnu icc 16 23 16-01-13 goetz Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu nwcc 0.8.2 21 13-12-01 goetz Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu Open64 21.1 14-03-27 goetz Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu Sun C 5.12 21.1 14-03-27 goetz Y Y Y Y 1
|
||||
x86_64/unknown/netbsd9.0 gcc 7.4.0 26 20-08-28 alex Y Y y Y 3
|
||||
x86_64/unknown/netbsd10.0 gcc 10.5.0 27~rc1 24-04-21 alex Y Y Y Y 3
|
||||
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 22~rc1-3 14-10-10 alex Y Y y Y 3
|
||||
x86_64/unknown/openbsd5.1 gcc 4.2.1 21 13-12-28 alex Y Y Y Y 3
|
||||
x86_64/unknown/openbsd5.5 gcc 4.2.1 22~rc1-3 14-10-10 alex Y Y Y Y 3
|
||||
x86_64/unknown/openbsd6.6 gcc 4.2.1 26 20-08-28 alex Y Y Y Y 3
|
||||
x86_64/unknown/openbsd6.6 O-clang 8.0 26 20-08-28 alex Y Y Y Y 3
|
||||
x86_64/unknown/openbsd6.7 gcc 4.2.1 26 20-09-26 goetz Y Y y Y 3
|
||||
x86_64/unknown/openbsd7.4 O-clang 13.0 27~rc1 24-04-21 alex Y Y Y Y 3
|
||||
|
||||
|
||||
* Notes
|
||||
~~~~~~~
|
||||
|
||||
(1) */*/linux-gnu (Linux platforms):
|
||||
ngIRCd has been tested with various Linux distributions, such as ArchLinux,
|
||||
Debian, Gentoo, Red Hat (Fedora) and SuSE using Linux kernels 2.2.x, 2.4.x,
|
||||
2.6.x, 3.x, 4.x and 5.x, with various versions of the GNU C compiler
|
||||
(starting with 2.95.x) and Clang. The eldest glibc used was glibc-2.0.7.
|
||||
ngIRCd compiled and ran on all of these systems successfully.
|
||||
Current Linux kernels (starting with 2.6.x) and glibc's support the more
|
||||
efficient epoll() IO interface, see (5) below.
|
||||
|
||||
(2) This compiler is a pre-ANSI C compiler (K&R), 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.
|
||||
|
||||
(6) ngIRCd has been cross-compiled with gcc 4.8 on Ubuntu x86-64 for
|
||||
MIPSEL Linux OpenWRT distribution (uclibc), for the target computer
|
||||
Vocore2, where the created binary ran well.
|
||||
|
||||
(7) This actually is Windows 10 running Windows Subsystem for Linux (WSL).
|
306
doc/Protocol.txt
306
doc/Protocol.txt
@@ -1,265 +1,109 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2019 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
(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.
|
||||
|
||||
-- Protocol.txt --
|
||||
|
||||
|
||||
I. Compatibility
|
||||
~~~~~~~~~~~~~~~~
|
||||
I. Kompatibilitaet
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
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.
|
||||
Der ngIRCd haelt sich an das IRC-Protokoll Version 2.10, wie es in den RFCs
|
||||
1459 und 2810-2813 beschrieben ist. Diese (und ggf. weitere fuer den ngIRCd
|
||||
relevante) RFCs sind in RFC.txt aufgefuehrt.
|
||||
|
||||
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.
|
||||
Leider verhaelt sich aber schon der "Originalserver" nicht immer genau so,
|
||||
wie es in den RFCs beschrieben ist. Da der ngIRCd aber ein Ersatz fuer
|
||||
eben diesen Server sein soll, werden diese Abweichungen in der Regel vom
|
||||
ngIRCd emuliert um die Kompatibilitaet zu wahren.
|
||||
|
||||
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".
|
||||
Sollte dieses Verhalten nicht erwuenscht sein, so kann mit der configure-
|
||||
Option "--enable-strict-rfc" der ngIRCd so compiliert werden, dass er sich
|
||||
strikt an die entsprechenden RFCs haelt.
|
||||
|
||||
In addition, ngIRCd implements some "IRCv3" features. This includes:
|
||||
- IRCv3 Client Capability Negotiation
|
||||
- IRCv3.1 multi-prefix Extension
|
||||
- IRCv3.2 userhost-in-names Extension
|
||||
Please see the IRCv3 homepage for more information: <https://ircv3.net>.
|
||||
ACHTUNG: an einem so compilierten Server koennen sich andere Server und
|
||||
Clients, die sich nicht genau an das Protokoll halten, u.U. nicht mehr
|
||||
anmelden oder alle Funktionen nutzen! In der Regel ist diese Option daher
|
||||
nicht erwuenscht.
|
||||
|
||||
|
||||
II. The IRC+ Protocol
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
II. Das IRC+-Protokoll
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
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.
|
||||
Der ngIRCd unterstuetzt als Erweiterung zum IRC-Protokoll wie es in den RFCs
|
||||
2810-2813 beschrieben ist, das IRC+-Protokoll. Dieses Protokoll ist dabei
|
||||
kompatibel zum IRC-Protokoll und wird nur verwendet, wenn der ngIRCd fest-
|
||||
stellt, dass ein connectierter Server ebenfalls dieses erweiterte Protokoll
|
||||
unterstuetzt.
|
||||
|
||||
The "PASS" command is used to detect the protocol and peer versions see
|
||||
RFC 2813 (section 4.1.1) and below.
|
||||
Die Protokoll- und Server-Erkennung wird mit dem "PASS"-Befehl durchgefuehrt
|
||||
(vgl. RFC 2813, Sektion 4.1.1):
|
||||
|
||||
|
||||
II.1 Register new server link
|
||||
II.1 neuen Server-Link registrieren
|
||||
|
||||
Command: PASS
|
||||
Parameters: <password> <version> <flags> [<options>]
|
||||
Used by: servers only (with these parameters)
|
||||
Befehl: PASS
|
||||
Parameter: <password> <version> <flags> [<options>]
|
||||
Fuer: mit dieser Syntax nur Server
|
||||
|
||||
<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.
|
||||
<password> enthaelt das Passwort fur den neu aufzubauenden Server-Link,
|
||||
so wie es in der Konfigurationsdatei definiert wurde.
|
||||
|
||||
<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.).
|
||||
<version> setzt sich aus zwei Teilen zusammen und ist mindestens 4, maximal
|
||||
14 Zeichen lang: die ersten vier Bytes enthalten die Versionsnummer des
|
||||
unterstuetzten IRC-Protokolls, wobei die ersten zwei Bytes die Major-, die
|
||||
letzten beiden die Minor-Revision angeben. Der String "0210" steht also
|
||||
fuer Protokollversion 2.10.
|
||||
Die folgenden (optionalen!) 10 Bytes enthalten eine von der jeweiligen
|
||||
Implementation abhaengige Versionsnummer. Server, die das IRC+-Protokoll
|
||||
unterstuetzen, liefern hier "-IRC+".
|
||||
|
||||
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.
|
||||
<flags> setzt sich ebenfalls aus zwei Bestandteilen zusammen und ist
|
||||
maximal 100 Bytes lang. Getrennt werden die beiden Teile mit dem Zeichen
|
||||
"|". Der erste Teil enthaelt den Namen der Implementation, der ngIRCd
|
||||
liefert hier z.B. "ngIRCd", der Originalserver "IRC". Anhand dieser "ID"
|
||||
kann zwischen Serverimplementationen unterschieden werden. Der zweite Teil
|
||||
(nach dem "|") ist implementationsabhaengig und wird nur ausgewertet,
|
||||
wenn die Gegenseite das IRC+-Protokoll unterstuetzt. In diesem Fall wird
|
||||
folgende Syntax erwartet: "<serverversion>[:<serverflags>]".
|
||||
|
||||
Example for <version>: "0210-IRC+".
|
||||
<serverversion> ist hier eine ASCII-Klartext-Darstellung der Versionsnummer,
|
||||
<serverflags> zeigt die vom Server unterstuetzten Erweiterungen an (und
|
||||
kann die leere Menge sein).
|
||||
|
||||
<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>]".
|
||||
Mit dem optionalen Parameter <options> werden Server-Optionen uebermittelt,
|
||||
wie sie in RFC 2813, Sektion 4.1.1 definiert sind.
|
||||
|
||||
<serverversion> is an ASCII representation of the clear-text server version
|
||||
number, <serverflags> indicates the supported IRC+ protocol extensions (and
|
||||
may be empty!).
|
||||
Folgende <serverflags> sind zur Zeit definiert:
|
||||
|
||||
The following <serverflags> are defined at the moment:
|
||||
- o: IRC-Operatoren duerfen auch dann Channel- und Channel-User-Modes
|
||||
aendern, wenn sie kein Channel-Operator im betroffenen Channel sind.
|
||||
|
||||
- C: The server supports the CHANINFO command.
|
||||
- C: der Server unterstuetzt den CHANINFO-Befehl.
|
||||
|
||||
- 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.
|
||||
II.2 Channel-Modes, persistente Channel und Topic austauschen
|
||||
|
||||
- M: Changing client "metadata" (hostname, real name, ...) using the
|
||||
METADATA command is supported.
|
||||
Befehl: CHANINFO
|
||||
Parameter: <channel> +<mode> [<topic>]
|
||||
Fuer: Server
|
||||
|
||||
- o: IRC operators are allowed to change channel- and channel-user-modes
|
||||
even if they aren't channel-operator of the affected channel.
|
||||
Mit CHANINFO Informiert ein Server den anderen ueber einen Channel: dessen
|
||||
Modes und dessen Topic. <topic> ist optional.
|
||||
|
||||
- S: The server supports the SERVICE command (on this link).
|
||||
Existiert auf dem Server, der das CHANINFO empfaengt, der Channel bereits,
|
||||
so uebernimmt er die Werte jeweils nur dann, wenn er selber noch keine
|
||||
Modes bzw. kein Topic definiert hat. Ansonsten wird der jeweilige Parameter
|
||||
ignoriert.
|
||||
|
||||
- X: Server supports XOP channel modes (owner, admin, halfop) and supports
|
||||
these user prefixes in CHANINFO commands, for example.
|
||||
Existiert der Channel noch nicht, so wird er mit den entsprechenden Angaben
|
||||
erzeugt.
|
||||
|
||||
- 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> [<ignored>]
|
||||
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.
|
||||
|
||||
Optionally, a 5th parameter is accepted to comply with an IRCv3 extension,
|
||||
see <https://github.com/ircv3/ircv3-ideas/issues/12>, but ignored.
|
||||
|
||||
|
||||
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:
|
||||
|
||||
- "accountname": the account name of a client (can't be empty)
|
||||
- "certfp": the certificate fingerprint of a client (can't be empty)
|
||||
- "cloakhost": the cloaked hostname of a client
|
||||
- "host": the hostname of a client (can't be empty)
|
||||
- "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
|
||||
--
|
||||
$Id: Protocol.txt,v 1.5 2002/09/04 00:06:19 alex Exp $
|
||||
|
@@ -1,126 +0,0 @@
|
||||
# [ngIRCd](https://ngircd.barton.de) - Quick Start
|
||||
|
||||
This *Quick Start* document explains how to configure ngIRCd, the lightweight
|
||||
Internet Relay Chat (IRC) server, using some "real world" scenarios.
|
||||
|
||||
## Introduction
|
||||
|
||||
The ngIRCd daemon can be run without any configuration file using built-in
|
||||
defaults. These defaults are probably sufficient for very simple single-node
|
||||
setups, but most probably need further tweaking for more "advanced" setups.
|
||||
|
||||
You can check the current settings by running `ngircd --configtest`. This
|
||||
command not only shows the settings, it shows error, warning and hints, if it
|
||||
detects any.
|
||||
|
||||
Therefore it is definitely best practice to *always run this check* after
|
||||
making any changes to the configuration file(s) and double-check that
|
||||
everything was parsed as expected!
|
||||
|
||||
### Configuration File and Drop-in Directory
|
||||
|
||||
After installing ngIRCd, a sample configuration file should have been set up if
|
||||
none existed already. By default, when installing from sources, the file is
|
||||
named `/usr/local/etc/ngircd.conf` (other common names, especially for
|
||||
distribution packages, are `/etc/ngircd.conf` or `/etc/ngircd/ngircd.conf`).
|
||||
Run the command `ngircd --configtest` to check the name of the configuration
|
||||
file which is used by default on your local system.
|
||||
|
||||
In addition, ngIRCd supports configuration file snippets in a "drop-in"
|
||||
directory which is configured with the `IncludeDir` variable in the `[Options]`
|
||||
section and has a built-in default value (like `/etc/ngircd/ngircd.conf.d/`).
|
||||
All configuration files matching the `*.conf` pattern are read-in from this
|
||||
directory after the main `ngircd.conf` file.
|
||||
|
||||
It is a good idea to not edit the default `ngircd.conf` file but to create one
|
||||
ore more new files in this include directory, overriding the defaults as
|
||||
needed. This way you don't get any clashes when updating ngIRCd to newer
|
||||
releases.
|
||||
|
||||
You can find the template of the sample configuration file in the `doc/`
|
||||
directory as `sample-ngircd.conf` and
|
||||
[online](https://ngircd.barton.de/doc/sample-ngircd.conf) on the homepage. It
|
||||
contains all available options.
|
||||
|
||||
## Configuration File Syntax
|
||||
|
||||
The configuration consists of sections and parameters.
|
||||
|
||||
A section begins with the name of the section in square brackets (like
|
||||
`[Example]`) and continues until the next section begins. Sections contain
|
||||
parameters of the form `name = value`.
|
||||
|
||||
Section and parameter names are not case sensitive.
|
||||
|
||||
Please see the `ngircd.conf`(5) manual page for an in-depth description of the
|
||||
configuration file, its syntax and all supported configuration options.
|
||||
|
||||
The sample configuration file uses comments beginning with `#` *or* `;` -- this
|
||||
is only for the better understanding of the file, both comment styles are
|
||||
equal. The lines commented out with `;` show example or default settings,
|
||||
whereas the lines using `#` are descriptions of the options.
|
||||
|
||||
## Simple Single-Instance Server
|
||||
|
||||
A good starting point is to configure a valid (and unique!) IRC server name
|
||||
(which is *not* related to a host name, it is purely a unique *server ID* that
|
||||
must contain at least one dot ".").
|
||||
|
||||
This looks like this:
|
||||
|
||||
``` ini
|
||||
[Global]
|
||||
Name = my.irc.server
|
||||
```
|
||||
|
||||
This results in the following *warning* in the logs when starting the daemon:
|
||||
`No administrative information configured but required by RFC!` -- which works,
|
||||
but is a bit ugly. So let's fix that by adding some *admin info*:
|
||||
|
||||
``` ini
|
||||
[Global]
|
||||
Name = irc.example.net
|
||||
AdminInfo1 = Example IRC Server
|
||||
AdminInfo2 = Anywhere On Earth
|
||||
AdminEMail = admin@irc.example.net
|
||||
```
|
||||
|
||||
*Please Note*: The server `Name` looks like a DNS host name, but it is not: in
|
||||
fact it is not related to your server's fully qualified domain name (FQDN) in
|
||||
any way and can be an arbitrary string -- but it *must* contain at least
|
||||
one dot (".") character!
|
||||
|
||||
## Add a Local IRC Operator
|
||||
|
||||
Some IRC commands, like `REHASH` which reloads the server configuration on the
|
||||
fly, require the user to authenticate to the daemon to become an *IRC
|
||||
Operator* first.
|
||||
|
||||
So let's configure an *Operator* account in the configuration file (in
|
||||
addition to what we configured above):
|
||||
|
||||
``` ini
|
||||
[Operator]
|
||||
# ID of the operator (may be different of the nickname)
|
||||
Name = BigOp
|
||||
# Password of the IRC operator
|
||||
Password = secret
|
||||
# Optional Mask from which /OPER will be accepted
|
||||
;Mask = *!ident@somewhere.example.com
|
||||
```
|
||||
|
||||
Now you can use the IRC command `OPER BigOp secret` to get *IRC Operator*
|
||||
status on that server.
|
||||
|
||||
Please choose a sensible password, and keep in mind that the *name* is not
|
||||
related to the *nickname* used by the user at all!
|
||||
|
||||
We don't make use of the `Mask` setting in the example above (commented out
|
||||
with the `;` character), but it is a good idea to enable it whenever possible!
|
||||
|
||||
And you can have as many *Operator blocks* as you like, configuring multiple
|
||||
different IRC Operators.
|
||||
|
||||
## Configuring SSL/TLS Encryption
|
||||
|
||||
Please see the file `SSL.md` for details.
|
@@ -1,67 +1,68 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001-2005 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
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-AUX.txt --
|
||||
|
||||
|
||||
-- README-AUX.txt --
|
||||
Seit Version 0.2.2-pre gehoert Apple A/UX zu den offiziell unterstuetzten
|
||||
Plattformen. Er ist im vollen Funktionsumfang nutzbar.
|
||||
|
||||
Ab Version 0.5.0 compiliert zudem der ngIRCd mit dem nativen A/UX-Compiler,
|
||||
d.h. GNU C wird nicht mehr zwingend vorausgesetzt.
|
||||
|
||||
Folgende Software wird jedoch benoetigt:
|
||||
|
||||
- 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
|
||||
|
||||
A/UX beinhaltet ein /bin/sed, dieses unterstuetzt jedoch leider nicht
|
||||
alle Funktionen, die GNU automake/autoconf nutzen.
|
||||
Achtung: bitte bei der Installation von GNU sed sicherstellen, dass
|
||||
immer dieses und nie das von A/UX verwendet wird (also $PATH entsprechend
|
||||
anpassen bzw. die A/UX-Version komplett ersetzen)!
|
||||
|
||||
- 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
|
||||
|
||||
Diese Library beinhaltet Systemfunktionen, die auf UNIXoiden Systemen
|
||||
gaengig, unter A/UX jedoch leider nicht verfuegbar sind. Dazu gehoert
|
||||
u.a. memmove(), strerror() und strdup().
|
||||
|
||||
Nachdem diese Pakete entsprechend installiert sind, reicht ein ganz normales
|
||||
"./configure" und "make" aus, um den ngIRCd unter A/UX zu compilieren.
|
||||
|
||||
|
||||
Since version 0.2.2-pre Apple's A/UX belongs to the officially supported
|
||||
platforms. It is not restricted in any way.
|
||||
Noch ein paar Hinweise, wenn es doch (noch) nicht klappt:
|
||||
|
||||
Since version 0.5.0 ngIRCd's source compiles with the native A/UX c
|
||||
compiler. GNU C isn't a must-have anymore.
|
||||
- auf dem System muss entweder ein install vorhanden sein, welches so
|
||||
"broken" ist, dass configure das eigene Shell-Skript waehlt, oder eben
|
||||
eines, welches funktioniert. Leider ist mindestens ein Binary im Um-
|
||||
lauf, welches Probleme verursacht. Das Binary aus folgenden GNU
|
||||
fileutils funktioniert hier aber z.B.:
|
||||
ftp://arthur.ath.cx/pub/UNIX/AUX/Software/Tools/fileutils-4.0.tar.gz
|
||||
|
||||
The following software packages are needed:
|
||||
- das sich im Umlauf befindende vorcompilierte Binary der alten Bash sollte
|
||||
unbedingt ausserhalb von /bin (z.B. unter /usr/local/bin) installiert
|
||||
werden. Ansonsten waehlt es das configure-Script als Shell aus, leider
|
||||
funktioniert das aber nicht.
|
||||
|
||||
- GNU sed
|
||||
Source:
|
||||
http://www.rezepte-im-web.de/appleux/sed-3.02.tar.gz
|
||||
http://arthur.barton.de/pub/unix/aux/tools/sed-3.02.tar.gz
|
||||
- da die /bin/sh von A/UX recht limitiert ist, kann sie u.a. nicht zum
|
||||
Erzeugen des "config.status"-Scripts verwendet werden.
|
||||
Abhilfe: /bin/sh umbenennen (z.B. in "/bin/sh.AUX") und durch einen (am
|
||||
besten symbolischen) Link auf /bin/ksh ersetzen.
|
||||
Dieser Schritt sollte keine Probleme nach sich ziehen und ist daher immer,
|
||||
auch unabhaengig vom ngIRCd, empfehlenswert.
|
||||
|
||||
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>
|
||||
http://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:
|
||||
http://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.10 2006/07/23 12:19:57 alex Exp $
|
||||
$Id: README-AUX.txt,v 1.4 2002/11/11 00:59:11 alex Exp $
|
||||
|
@@ -1,21 +1,15 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001-2003 by Alexander Barton,
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
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-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
|
||||
@@ -24,7 +18,7 @@ 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 asynchron
|
||||
von Pipes verschiedener Prozesse umgehen kann: sobald der Resolver asyncron
|
||||
gestartet wird, also Pipe-Handles im select() vorhanden sind, fuehrt das zu
|
||||
obiger Meldung.
|
||||
|
||||
@@ -50,4 +44,4 @@ 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.7 2003/05/15 21:47:57 alex Exp $
|
||||
$Id: README-BeOS.txt,v 1.3 2002/05/19 13:10:26 alex Exp $
|
||||
|
@@ -1,44 +0,0 @@
|
||||
|
||||
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).
|
||||
|
18
doc/RFC.txt
18
doc/RFC.txt
@@ -1,17 +1,16 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2017 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
(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.
|
||||
|
||||
-- RFC.txt --
|
||||
|
||||
|
||||
The Internet Relay Chat (IRC) protocol is documented in these Request for
|
||||
Comments (RFCs), which you can get via <http://www.faqs.org/rfcs/> or
|
||||
<https://www.ietf.org/rfc.html> for example.
|
||||
Das IRC-Protokoll ist in diesen RFC's (Request For Comments) dokumentiert:
|
||||
|
||||
1459 Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol",
|
||||
May 1993, [IRC].
|
||||
@@ -28,5 +27,6 @@ Comments (RFCs), which you can get via <http://www.faqs.org/rfcs/> or
|
||||
2813 Kalt, C., "Internet Relay Chat: Server Protocol",
|
||||
April 2000, [IRC-SERVER].
|
||||
|
||||
7194 Hartmann, R., "Default Port for Internet Relay Chat (IRC) via TLS/SSL",
|
||||
August 2014.
|
||||
|
||||
--
|
||||
$Id: RFC.txt,v 1.4 2002/01/23 18:20:04 alex Exp $
|
||||
|
80
doc/SSL.md
80
doc/SSL.md
@@ -1,80 +0,0 @@
|
||||
# [ngIRCd](https://ngircd.barton.de) - SSL/TLS Encrypted Connections
|
||||
|
||||
ngIRCd supports SSL/TLS 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 can check the output of `ngircd --version` to validate if your executable
|
||||
includes support for SSL or not: "+SSL" must be listed in the feature flags.
|
||||
|
||||
You also need a SSL key and certificate, for example using Let's Encrypt, which
|
||||
is out of the scope of this document.
|
||||
|
||||
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
|
||||
|
||||
SSL-encrypted connections and plain-text connects can't run on the same network
|
||||
port (which is a limitation of the IRC protocol); therefore you have to define
|
||||
separate port(s) in your `[SSL]` block in the configuration file.
|
||||
|
||||
A minimal configuration for *accepting* SSL-encrypted client & server
|
||||
connections looks like this:
|
||||
|
||||
``` ini
|
||||
[SSL]
|
||||
CertFile = /etc/ssl/certs/my-fullchain.pem
|
||||
KeyFile = /etc/ssl/certs/my-privkey.pem
|
||||
Ports = 6697, 6698
|
||||
```
|
||||
|
||||
In this case, the server only deals with *incoming* connections and never has to
|
||||
validate SSL certificates itself, and therefore no "Certificate Authorities" are
|
||||
needed.
|
||||
|
||||
If you want to use *outgoing* SSL-connections to other servers, you need to add:
|
||||
|
||||
``` ini
|
||||
[SSL]
|
||||
...
|
||||
CAFile = /etc/ssl/certs/ca-certificates.crt
|
||||
DHFile = /etc/ngircd/dhparams.pem
|
||||
|
||||
[SERVER]
|
||||
...
|
||||
SSLConnect = yes
|
||||
```
|
||||
|
||||
The `CAFile` option configures a file listing all the certificates of the
|
||||
trusted Certificate Authorities.
|
||||
|
||||
The Diffie-Hellman parameters file `dhparams.pem` can be created like this:
|
||||
|
||||
- OpenSSL: `openssl dhparam -2 -out /etc/ngircd/dhparams.pem 4096`
|
||||
- GnuTLS: `certtool --generate-dh-params --bits 4096 --outfile /etc/ngircd/dhparams.pem`
|
||||
|
||||
Note that enabling `SSLConnect` not only enforces SSL-encrypted links for
|
||||
*outgoing* connections to other servers, but for *incoming* connections as well:
|
||||
If a server configured with `SSLConnect = yes` tries to connect on a plain-text
|
||||
connection, it won't be accepted to prevent data leakage! Therefore you should
|
||||
set this for *all* servers you expect to use SSL-encrypted connections!
|
||||
|
||||
## Accepting untrusted Remote Certificates
|
||||
|
||||
If you are using self-signed certificates or otherwise invalid certificates,
|
||||
which ngIRCd would reject by default, you can force ngIRCd to skip certificate
|
||||
validation on a per-server basis and continue establishing outgoing connections
|
||||
to the respective peer by setting `SSLVerify = no` in the `[SERVER]` block of
|
||||
this remote server in your configuration.
|
||||
|
||||
But please think twice before doing so: the established connection is still
|
||||
encrypted but the remote site is *not verified at all* and man-in-the-middle
|
||||
attacks are possible!
|
152
doc/Services.txt
152
doc/Services.txt
@@ -1,152 +0,0 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2011 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- 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/>)
|
||||
- Atheme 7.0.2 or later (<https://atheme.org/>)
|
||||
- "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:
|
||||
|
||||
[GLOBAL]
|
||||
Name = server.irc.net
|
||||
Ports = 6667
|
||||
|
||||
[SERVER]
|
||||
Name = services.irc.net
|
||||
MyPassword = 123abc
|
||||
PeerPassword = 123abc
|
||||
ServiceMask = *Serv
|
||||
|
||||
|
||||
Setting up Anope 1.9.x & 2.x
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Anope 1.9.8 or later (<http://www.anope.org/>) can be used with ngIRCd using
|
||||
the "ngircd" protocol module.
|
||||
|
||||
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
|
||||
|
||||
# When not using "strict mode", which is the default:
|
||||
userlen = 20
|
||||
|
||||
chanlen = 50
|
||||
}
|
||||
|
||||
In conf/nickserv.conf:
|
||||
|
||||
module
|
||||
{
|
||||
name = "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 (<https://atheme.org/>) may be used with ngIRCd using
|
||||
the "ngircd" protocol module.
|
||||
|
||||
The following settings need to be in atheme.conf:
|
||||
|
||||
loadmodule "modules/protocol/ngircd";
|
||||
|
||||
serverinfo {
|
||||
name = "services.irc.net";
|
||||
}
|
||||
|
||||
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:
|
||||
<http://arthur.barton.de/pub/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/>
|
139
doc/en/INSTALL
Normal file
139
doc/en/INSTALL
Normal file
@@ -0,0 +1,139 @@
|
||||
|
||||
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.
|
||||
|
||||
-- INSTALL --
|
||||
|
||||
|
||||
|
||||
0. Upgrade Information
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Differences to version 0.5.x
|
||||
|
||||
- Starting with version 0.6.0, other servers are identified using asyncronous
|
||||
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/en/sample-ngircd.conf"!).
|
||||
|
||||
|
||||
I. Standard-Installation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ngIRCd is developed for UNIX-like systems, which means, that the installation
|
||||
on a modern UNIX-like system should be no problem. The only thing is, that
|
||||
the system should be supported by GNU automake and GNU autoconf ("configure").
|
||||
|
||||
The normal installation is like that:
|
||||
|
||||
1) tar xzf ngircd-<Version>.tar.gz
|
||||
2) cd ngircd-<Version>
|
||||
3) ./autogen.sh [only necessary when using CVS]
|
||||
4) ./configure
|
||||
5) make
|
||||
6) make install
|
||||
|
||||
3): "autogen.sh"
|
||||
|
||||
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-archieves, but when using the CVS system.
|
||||
|
||||
The next is therefore only interesting for developpers.
|
||||
|
||||
autogen.sh produces the makefile.in's, which are necessary for the configure
|
||||
script it self, and some more files for make. For this step, there must be
|
||||
GNU automake and GNU autoconf (in recent versions).
|
||||
|
||||
(again: "end users" do not need this step!)
|
||||
|
||||
to 4): "./configure"
|
||||
|
||||
The configure-script is used to detect local system dependancies.
|
||||
|
||||
In the perfect case, configure should recognize all needed libraries, header
|
||||
and so on. If this shouldn't work, "./configure --help" shows more options.
|
||||
|
||||
to 5): "make"
|
||||
|
||||
The make command uses the Makefiles produced by configure and compiles the
|
||||
ngIRCd daemon.
|
||||
|
||||
to 6): "make install"
|
||||
|
||||
Use "make install" to install the server and a sample configuration file on
|
||||
the local system. For this step, root privileges are necessary. If there is
|
||||
already an older configuration file present, it won't be overwritten.
|
||||
|
||||
This are the files that are installed:
|
||||
|
||||
- /usr/local/sbin/ngircd: exectable server
|
||||
- /usr/local/etc/ngircd.conf: sample configuration, if not there
|
||||
|
||||
|
||||
II. Useful make-targets
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The Makefile produced by the configure-script contain always these useful
|
||||
targets:
|
||||
|
||||
- clean: delete every product from the compiler/linker
|
||||
next step: -> make
|
||||
|
||||
- distclean: plus erase all generated Makefiles
|
||||
next step: -> ./configure
|
||||
|
||||
- maintainer-clean: erease all automatic generated files
|
||||
next step: -> ./autogen.sh
|
||||
|
||||
|
||||
III. 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 code.
|
||||
|
||||
The file is seperated in three blocks: [Global], [Operator], [Server]. In
|
||||
the [Gobal] part, there is the main configuration, like the server-name
|
||||
and the ports, on which the server should be listening. In the [Operator]
|
||||
section, the server-operators are defined and [Server] is the section,
|
||||
where the server-links are configured.
|
||||
|
||||
The meaning of the variables in the configuration file is explained in the
|
||||
"doc/sample-ngircd.conf", which is also the sample configuration file in
|
||||
/usr/local/etc after running "make install" (if you don't already have one).
|
||||
|
||||
|
||||
IV. 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.
|
||||
|
||||
--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.
|
||||
|
||||
|
||||
--
|
||||
$Id: INSTALL,v 1.3 2002/12/18 12:19:07 alex Exp $
|
20
doc/en/Makefile.am
Normal file
20
doc/en/Makefile.am
Normal file
@@ -0,0 +1,20 @@
|
||||
#
|
||||
# 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.2 2002/11/18 14:06:29 alex Exp $
|
||||
#
|
||||
|
||||
EXTRA_DIST = INSTALL README sample-ngircd.conf
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
# -eof-
|
101
doc/en/README
Normal file
101
doc/en/README
Normal file
@@ -0,0 +1,101 @@
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- README --
|
||||
|
||||
Ilja Osthoff, <ilja@glide.ath.cx>
|
||||
|
||||
|
||||
I. Introduction
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
ngIRCd is an Open-Source server for the Internet Realy Chat (IRC), which
|
||||
is developped 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.
|
||||
|
||||
|
||||
|
||||
II. Status
|
||||
~~~~~~~~~~~
|
||||
|
||||
At present, the ngIRCd is under active development, some features are not
|
||||
implemented, some only partly.
|
||||
|
||||
Till today (more or less complete) implemented IRC-commands:
|
||||
|
||||
ADMIN, AWAY, CHANINFO, CONNECT, DIE, ERROR, INVITE, ISON, JOIN, KICK, KILL,
|
||||
LINKS, LIST, LUSERS, MODE, MOTD, NAMES, NICK, NJOIN, NOTICE, OPER, PART,
|
||||
PASS, PING, PONG, PRIVMSG, QUIT, RESTART, SERVER, SQUIT, TIME, TOPIC,
|
||||
USERHOST, USER, VERSION, WHO, WHOIS.
|
||||
|
||||
|
||||
III. Features (or: why use ngIRCd?)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- no problems with servers which have dynamic ip-adresses
|
||||
- simple, easy understandable configuration file,
|
||||
- freely published C-Sourcecode,
|
||||
- ngIRCd will be developed on in the future.
|
||||
- supported platforms (tested versions): AIX (3.2.5), A/UX (3.0.1), FreeBSD
|
||||
(4.5), HP-UX (10.20), IRIX (6.5), Linux (2.x), Mac OS X (10.x), NetBSD
|
||||
(1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), and Windows with Cygwin.
|
||||
|
||||
|
||||
IV. Documentation
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
English documentation:
|
||||
|
||||
- doc/en/README: the file that you are reading :-)
|
||||
- doc/en/INSTALL: hints for the installation of the ngIRCd
|
||||
|
||||
German documentation:
|
||||
|
||||
- README: readme text in german
|
||||
- INSTALL: german installation instructions
|
||||
- NEWS: what do you think? :-)
|
||||
- Changelog: the complete history of the ngIRCd
|
||||
- doc/FAQ.txt: frequently asked questions and answers
|
||||
- doc/CVS.txt: hints for the CVS-system
|
||||
- doc/RFC.txt: information about the RFC's
|
||||
- doc/sample-ngircd.conf: sample configuration file
|
||||
- doc/README-AUX.txt: installation hints for A/UX
|
||||
- doc/README-BeOS.txt: the same for BeOS
|
||||
|
||||
|
||||
V. Download
|
||||
~~~~~~~~~~~
|
||||
|
||||
The homepage of the ngIRCd is: <http://arthur.ath.cx/~alex/ngircd>; you
|
||||
will find the newest information about the ngIRCd and the most recent
|
||||
("stable") releases there.
|
||||
|
||||
If you are interested in the newest developper-versions (which are not
|
||||
always stable), then please read the section "CVS" on the homepage and
|
||||
the file "doc/CVS.txt" which describes the use of CVS, the "Concurrent
|
||||
Versioning System".
|
||||
|
||||
|
||||
VI. Bugs
|
||||
~~~~~~~~
|
||||
|
||||
If you find bugs in the ngIRCd (which might be there :-), please report
|
||||
them at the following URL:
|
||||
|
||||
<http://arthur.ath.cx/~alex/ngircd/#bugs>
|
||||
|
||||
There you can read about kown bugs, too.
|
||||
|
||||
If you have critics, patches or something else, please feel yourself free
|
||||
to post a mail to: <alex@barton.de> or <alex@arthur.ath.cx>
|
||||
|
||||
|
||||
--
|
||||
$Id: README,v 1.7 2002/11/24 18:48:59 alex Exp $
|
138
doc/en/sample-ngircd.conf
Normal file
138
doc/en/sample-ngircd.conf
Normal file
@@ -0,0 +1,138 @@
|
||||
# $Id: sample-ngircd.conf,v 1.4 2002/12/18 12:19:07 alex Exp $
|
||||
|
||||
#
|
||||
# This is a sample configuration for the ngIRCd, which must adept to the
|
||||
# local preferences and needs.
|
||||
#
|
||||
# Comments are started with "#" or ";".
|
||||
#
|
||||
# Author: Alexander Barton, <alex@barton.de>
|
||||
# Translation by Ilja Osthoff, <ilja@glide.ath.cx>
|
||||
#
|
||||
|
||||
[Global]
|
||||
|
||||
# In the [global] section of this file, there is the place of the
|
||||
# main server configuration. Needed is only the variable "Name",
|
||||
# Info you can adjust, if you like to. For all the others variables,
|
||||
# you can use the defaults, this means you can leave it by default.
|
||||
|
||||
# Server name in the IRC-network
|
||||
Name = irc.the.net
|
||||
|
||||
# Info-text of the server. This will be shown i.e. by a WHOIS- or
|
||||
# LINKS-request.
|
||||
Info = Server Info Text
|
||||
|
||||
# Information about the server and administrator in the ADMIN-request
|
||||
;AdminInfo1 = Description
|
||||
;AdminInfo2 = Location
|
||||
;AdminEMail = admin@irc.server
|
||||
|
||||
# Ports, on which the server will listen. There may be more than
|
||||
# one port, separated with ";". (Default: 6667)
|
||||
;Ports = 6667, 6668, 66694
|
||||
|
||||
# Textfile with the "message of the day" (MOTD). This will be shown
|
||||
# on a user connection with the server.
|
||||
;MotdFile = /usr/local/etc/ngircd.motd
|
||||
|
||||
# User-ID, under which the server is started (for that the server
|
||||
# must be started with root-rights). You can use the name of the
|
||||
# user or the numerical ID.
|
||||
# ATTENTION: the configuration and the MOTD file must be readable
|
||||
# by this user, otherwise RESTART won't work!
|
||||
;ServerUID = 65534
|
||||
|
||||
# Group-ID, under which the server is running (for that the server
|
||||
# must be started with root-rights). You can use the name of the
|
||||
# group or the numerical ID.
|
||||
;ServerGID = 65534
|
||||
|
||||
# After <PingTimeout> seconds, the server will send a ping after
|
||||
# inactivity of this client.
|
||||
;PingTimeout = 120
|
||||
|
||||
# If there is an answer of a client, to which the ping was sended,
|
||||
# not after <PongTimeout> seconds, it will be disconnected.
|
||||
;PongTimeout = 20
|
||||
|
||||
# The server tries every <ConnectRetry> seconds, not yet connected
|
||||
# or not anymore connected servers to connect.
|
||||
;ConnectRetry = 60
|
||||
|
||||
# Should IRC-operators be allowed to use the MODE command even if
|
||||
# they are not(!) channel-operators?
|
||||
;OperCanUseMode = no
|
||||
|
||||
# Maximum number of simultanous connection the server is allowed
|
||||
# to accept (<=0: unlimited):
|
||||
;MaxConnections = -1
|
||||
|
||||
# Maximum number of channels a user can be member of (<=0: no limit):
|
||||
;MaxJoins = 10
|
||||
|
||||
[Operator]
|
||||
# In this [operator]-section, there will be the configuration of
|
||||
# the name and password of an IRC operator. There may be more than
|
||||
# one operator-block (for each operator one).
|
||||
|
||||
# ID of the operator (may be different of the nick)
|
||||
;Name = TheOper
|
||||
|
||||
# Password of the operator
|
||||
;Password = ThePwd
|
||||
|
||||
[Server]
|
||||
# In this [Server] section, there is the configuration of the
|
||||
# servers, which are allowed to connect to your own server.
|
||||
# There may be more than one server-block.
|
||||
# If you configured a port for the connection, then the ngIRCd
|
||||
# tries to connect to this port. If not, it waits for the other
|
||||
# server.
|
||||
#
|
||||
# Server-groups:
|
||||
# The ngIRCd allows "server-groups": that means, that you can assign
|
||||
# server-groups for every server, to which you want the ngIRCd to
|
||||
# connect to. If one server of a server-group won't answer, the
|
||||
# ngIRCd tries the next one of this group.
|
||||
# ATTENTION: Server-groups will only work if you defined a port!
|
||||
|
||||
# IRC-name of the server
|
||||
;Name = irc2.the.net
|
||||
|
||||
# Hostname of the server
|
||||
;Host = connect-to-host.the.net
|
||||
|
||||
# Port of the server, to which the ngIRCd should connect. If you
|
||||
# assign no port, the ngIRCd waits for an answer of that server.
|
||||
;Port = 6666
|
||||
|
||||
# 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 that server (optional)
|
||||
;Group = 123
|
||||
|
||||
[Channel]
|
||||
# In the [Channel] there can be defined "persistent channels". This
|
||||
# means, that the server creates the channel and even if all users
|
||||
# left this channel, it will persist. There may be more than one
|
||||
# block. Signed with the mode "P", which can be set or unset, like
|
||||
# normal modes.
|
||||
|
||||
# Name of the channel
|
||||
;Name = #TheName
|
||||
|
||||
# Topic for the channel
|
||||
;Topic = a great topic
|
||||
|
||||
# Channel-modes
|
||||
;Modes = tn
|
||||
|
||||
# -eof-
|
164
doc/sample-ngircd.conf
Normal file
164
doc/sample-ngircd.conf
Normal file
@@ -0,0 +1,164 @@
|
||||
# $Id: sample-ngircd.conf,v 1.17 2002/12/18 12:19:07 alex Exp $
|
||||
|
||||
#
|
||||
# Das ist eine Beispiel-Konfiguration fuer den ngIRCd, die an die
|
||||
# jeweiligen Beduerfnisse angepasst werden kann/muss.
|
||||
#
|
||||
# Kommentare werden mit "#" oder ";" eingeleitet.
|
||||
#
|
||||
# +-----------------------------------------------------------------------+
|
||||
# | Please note: English translations of some of the german documentation |
|
||||
# | files can be found in the directory "doc/en" -- please have a look! |
|
||||
# +-----------------------------------------------------------------------+
|
||||
#
|
||||
# Autor: Alexander Barton, <alex@barton.de>
|
||||
# Erweiterungen von Ilja Osthoff, <ilja@glide.ath.cx>
|
||||
#
|
||||
|
||||
[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, d.h. hier
|
||||
# muss die Variable nicht angegeben werden.
|
||||
#
|
||||
|
||||
# Servername im IRC-Netz
|
||||
Name = irc.the.net
|
||||
|
||||
# Info-Text des Servers. Dieser wird z.B. bei WHOIS- oder LINKS-
|
||||
# Abfragen entsprechend mit ausgegeben.
|
||||
Info = Server Info Text
|
||||
|
||||
# Informationen ueber den Server und Administrator fuer den
|
||||
# ADMIN-Befehl:
|
||||
;AdminInfo1 = Beschreibung
|
||||
;AdminInfo2 = Standort
|
||||
;AdminEMail = admin@irc.server
|
||||
|
||||
# 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). Diese wird aus-
|
||||
# gegeben, wenn sich ein User mit dem Server verbindet.
|
||||
;MotdFile = /usr/local/etc/ngircd.motd
|
||||
|
||||
# User-ID, unter der der Daemon laufen soll (dazu muss der Server
|
||||
# jedoch mit root-Rechten gestartet werden). Es kann der Name oder
|
||||
# die numerische ID angegeben werden.
|
||||
# ACHTUNG: Die Konfigurations- und MOTD-Datei muessen fuer diesen
|
||||
# Benutzer lesbar sein, ansonsten schlaegt ein RESTART fehl!
|
||||
;ServerUID = ircd
|
||||
|
||||
# Group-ID, zu der der Daemon wechseln soll (hierzu muss der Server
|
||||
# jedoch mit root-Rechten gestartet werden). Es kann der Name oder
|
||||
# die numerische ID angegeben werden.
|
||||
;ServerGID = daemon
|
||||
|
||||
# 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
|
||||
|
||||
# Sollen IRC-Operatoren immer den MODE-Befehl in Channel benutzen
|
||||
# koennen, auch wenn sie kein(!) Channel-Operator sind?
|
||||
;OperCanUseMode = no
|
||||
|
||||
# Maximale Anzahl von gleichzeitigen Verbindungen, die dieser
|
||||
# Server annehmen darf (<=0: unlimitiert).
|
||||
;MaxConnections = -1
|
||||
|
||||
# Maximale Anzahl von Channels, in denen ein User zeitgleich
|
||||
# Mitglied sein kann (<=0: unlimitiert).
|
||||
;MaxJoins = 10
|
||||
|
||||
[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 sich
|
||||
# dieser ngIRCd verbinden soll bzw. von denen Verbindungen angekommen
|
||||
# werden duerfen.
|
||||
# Es koennen mehrere Server konfiguriert werden, d.h. [Server]-
|
||||
# Bloecke koennen mehrfach vorkommen.
|
||||
# Wenn man fuer einen Server einen Port angegeben hat, dann versucht
|
||||
# sich der ngIRCd mit der Gegenseite zu verbinden. Hat man keinen
|
||||
# Port konfiguriert, dann wartet der ngIRCd darauf, dass sich die
|
||||
# Gegenseite mit ihm verbindet.
|
||||
#
|
||||
# Server-Gruppen:
|
||||
# Der ngIRCd unterstuetzt "Server-Gruppen": das bedeutet, man kann
|
||||
# jedem Server, mit dem man sich verbinden will, einer Gruppe zu-
|
||||
# ordnen. Wenn der ngIRCd sich dann mit einem Server aus der Gruppe
|
||||
# verbinden will und keine Antwort erhaelt, dann wird der naechste
|
||||
# Server aus der Gruppe versucht.
|
||||
# Achtung: Gruppen werden nur beachtet, wenn man einen Port fur
|
||||
# die Gegenseite angegeben hat!
|
||||
#
|
||||
|
||||
# IRC-Name des Servers
|
||||
;Name = irc2.the.net
|
||||
|
||||
# DNS-Hostname des Servers
|
||||
;Host = connect-to-host.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
|
||||
|
||||
# Eigenes Passwort fuer diese Verbindung. Dieses Passwort muss auf
|
||||
# dem anderen Server als "PeerPassword" konfiguriert werden.
|
||||
;MyPassword = MySecret
|
||||
|
||||
# Passwort des Peer-Servers fuer diese Verbindung. Dieses Passwort
|
||||
# muss auf dem anderen Server als "MyPassword" konfiguriert sein.
|
||||
;PeerPassword = PeerSecret
|
||||
|
||||
# Gruppe, zu der dieser Server gehoert (optional).
|
||||
;Group = 123
|
||||
|
||||
[Channel]
|
||||
|
||||
#
|
||||
# Mit [Channel]-Bloecken werden "persistente Channels" definiert,
|
||||
# die nach dem Start des Servers automatisch erzeugt werden und auch
|
||||
# dann erhalten bleiben, wenn keine User mehr im Channel sind. Es
|
||||
# koennen mehrere solcher Bloecke hier konfiguriert werden.
|
||||
# Gekennzeichnet werden solche Channels mit dem Mode "P", der ganz
|
||||
# normal gesetzt und geloescht werden kann.
|
||||
#
|
||||
|
||||
# Name des Channels
|
||||
;Name = #TheName
|
||||
|
||||
# Topic, das gesetzt werden soll
|
||||
;Topic = Ein tolles Topic
|
||||
|
||||
# Channel-Modes
|
||||
;Modes = tn
|
||||
|
||||
# -eof-
|
@@ -1,425 +0,0 @@
|
||||
#
|
||||
# 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. When not set, ngIRCd tries
|
||||
# to deduce a valid IRC server name from the local host name.
|
||||
;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
|
||||
|
||||
# Text file which contains the ngIRCd help text. This file is required
|
||||
# to display help texts when using the "HELP <cmd>" command. Default: a
|
||||
# built-in standard path (check "ngircd --configtest").
|
||||
;HelpFile = :DOCDIR:/Commands.txt
|
||||
|
||||
# Info text of the server. This will be shown by WHOIS and
|
||||
# LINKS requests for example. Set to the server software name and
|
||||
# version by default.
|
||||
;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: Default: a built-in
|
||||
# standard path (check "ngircd --configtest").
|
||||
;MotdFile = :ETCDIR:/ngircd.motd
|
||||
|
||||
# A simple Phrase (<127 chars) if you don't want to use a motd file.
|
||||
;MotdPhrase = "Hello world!"
|
||||
|
||||
# The name of the IRC network to which this server belongs. This name
|
||||
# is optional, should only contain ASCII characters, and can't contain
|
||||
# spaces. It is only used to inform clients. The default is empty,
|
||||
# so no network name is announced to clients.
|
||||
;Network = aIRCnetwork
|
||||
|
||||
# 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
|
||||
|
||||
# Number of seconds after which the whole daemon should shutdown when
|
||||
# no connections are left active after handling at least one client
|
||||
# (0: never, which is the default).
|
||||
# This can be useful for testing or when ngIRCd is started using
|
||||
# "socket activation" with systemd(8), for example.
|
||||
;IdleTimeout = 0
|
||||
|
||||
# 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 penalty time increase in seconds, per penalty event. Set to -1
|
||||
# for no limit (the default), 0 to disable penalties altogether. The
|
||||
# daemon doesn't use penalty increases higher than 2 seconds during
|
||||
# normal operation, so values greater than 1 rarely make sense.
|
||||
;MaxPenaltyTime = -1
|
||||
|
||||
# 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.
|
||||
|
||||
# List of allowed channel types (channel prefixes) for newly created
|
||||
# channels on the local server. By default, all supported channel
|
||||
# types are allowed. Set this variable to the empty string to disallow
|
||||
# creation of new channels by local clients at all.
|
||||
;AllowedChannelTypes = #&+
|
||||
|
||||
# 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
|
||||
|
||||
# Default user mode(s) to set on new local clients. Please note that
|
||||
# only modes can be set that the client could set using regular MODE
|
||||
# commands, you can't set "a" (away) for example! Default: none.
|
||||
;DefaultUserModes = i
|
||||
|
||||
# Do 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
|
||||
|
||||
# Directory containing configuration snippets (*.conf), that should
|
||||
# be read in after parsing this configuration file.
|
||||
# Default: a built-in directory name when no configuration file was
|
||||
# explicitly given on the command line (check "ngircd --configtest"),
|
||||
# none (empty) otherwise.
|
||||
;IncludeDir = :ETCDIR:/conf.d
|
||||
|
||||
# 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 *"
|
||||
# messages to clients while connecting.
|
||||
;NoticeBeforeRegistration = 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
|
||||
|
||||
# When PAM is enabled, this value determines the used PAM
|
||||
# configuration.
|
||||
# This setting allows to run multiple ngIRCd instances with
|
||||
# different PAM configurations on each instance.
|
||||
# If you set it to "ngircd-foo", PAM will use
|
||||
# /etc/pam.d/ngircd-foo instead of the default
|
||||
# /etc/pam.d/ngircd.
|
||||
;PAMServiceName = ngircd
|
||||
|
||||
# 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 Trusted CA Certificates File for verifying peer certificates.
|
||||
# (Default: not set; so no certificates are trusted)
|
||||
;CAFile = /etc/ssl/CA/cacert.pem
|
||||
|
||||
# Certificate Revocation File (for marking otherwise valid
|
||||
# certficates as invalid)
|
||||
;CRLFile = /etc/ssl/CA/crl.pem
|
||||
|
||||
# SSL Server Key Certificate
|
||||
;CertFile = :ETCDIR:/ssl/server-cert.pem
|
||||
|
||||
# Select cipher suites allowed for SSL/TLS connections. This defaults
|
||||
# to HIGH:!aNULL:@STRENGTH (OpenSSL) or SECURE128 (GnuTLS).
|
||||
# See 'man 1ssl ciphers' (OpenSSL) or 'man 3 gnutls_priority_init'
|
||||
# (GnuTLS) for details.
|
||||
# For OpenSSL:
|
||||
;CipherList = HIGH:!aNULL:@STRENGTH:!SSLv3
|
||||
# For GnuTLS:
|
||||
;CipherList = SECURE128:-VERS-SSL3.0
|
||||
|
||||
# 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 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
|
||||
|
||||
# Verify the TLS certificate presented by the remote server
|
||||
# (Default: yes)
|
||||
;SSLVerify = 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, as used in "MODE" commands. Modifying lists
|
||||
# (ban list, invite list, exception list) is supported.
|
||||
# This option can be specified multiple times, evaluated top to bottom.
|
||||
;Modes = +tnk mykey +l 5
|
||||
;Modes = +b nick!~user@bad.host.example.com
|
||||
|
||||
# Should ngIRCd automatically join ("autojoin") all users to this
|
||||
# channel on connect? Note: The users must have permissions to access
|
||||
# the channel, otherwise joining them will fail!
|
||||
;Autojoin = yes
|
||||
|
||||
# Key file, syntax for each line: "<user>:<nick>:<key>".
|
||||
# Default: none.
|
||||
;KeyFile = :ETCDIR:/#chan.key
|
||||
|
||||
[Channel]
|
||||
# More [Channel] sections, if you like ...
|
||||
|
||||
# -eof-
|
@@ -1,93 +0,0 @@
|
||||
#
|
||||
# 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
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
|
||||
PROJECT_NAME = ngIRCd
|
||||
PROJECT_BRIEF = "Lightweight Internet Relay Chat server"
|
||||
PROJECT_LOGO = "../../contrib/ngIRCd-Logo.gif"
|
||||
|
||||
OUTPUT_DIRECTORY = .
|
||||
STRIP_FROM_PATH = ../..
|
||||
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
TYPEDEF_HIDES_STRUCT = YES
|
||||
|
||||
TAB_SIZE = 8
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_STATIC = YES
|
||||
|
||||
SHOW_DIRECTORIES = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
QUIET = NO
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_NO_PARAMDOC = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
INPUT = ../../src
|
||||
INPUT_ENCODING = UTF-8
|
||||
RECURSIVE = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
SOURCE_BROWSER = YES
|
||||
STRIP_CODE_COMMENTS = NO
|
||||
REFERENCED_BY_RELATION = YES
|
||||
REFERENCES_RELATION = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Output formats
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
GENERATE_HTML = YES
|
||||
HTML_FOOTER = footer.inc.html
|
||||
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
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
PREDEFINED = DEBUG ZLIB PAM ZEROCONF CONN_MODULE __client_c__
|
||||
|
||||
# -eof-
|
@@ -1,25 +0,0 @@
|
||||
#
|
||||
# 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-
|
@@ -1,12 +0,0 @@
|
||||
|
||||
<hr class="footer">
|
||||
<p style="text-align: center">
|
||||
ngIRCd
|
||||
<a href="https://ngircd.barton.de/">Homepage</a>.
|
||||
GitHub:
|
||||
<a href="https://github.com/ngircd/ngircd">Code Repository</a>,
|
||||
<a href="https://github.com/ngircd/ngircd/issues">Bug-Tracker</a>.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -1,30 +1,20 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors
|
||||
# Copyright (c)2001,2002 by 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.
|
||||
# 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.5 2002/04/04 13:02:41 alex Exp $
|
||||
#
|
||||
|
||||
TEMPLATE_MANS = ngircd.conf.5.tmpl ngircd.8.tmpl
|
||||
|
||||
SUFFIXES = .tmpl .
|
||||
|
||||
.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)
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
52
man/ngircd.8
Normal file
52
man/ngircd.8
Normal file
@@ -0,0 +1,52 @@
|
||||
.\"
|
||||
.\" $Id: ngircd.8,v 1.5 2002/11/18 18:49:34 alex Exp $
|
||||
.\"
|
||||
.TH ngircd 8 "September 2002" ngircd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
ngircd \- the next generation IRC daemon
|
||||
.SH SYNOPSIS
|
||||
.B ngircd [
|
||||
.I Options
|
||||
.B ]
|
||||
.SH DESCRIPTION
|
||||
.B ngircd
|
||||
is a portable IRC daemon written from scratch. It is easy to configure,
|
||||
supports server links (even with original ircds) and runs on hosts with
|
||||
changing IP addresses (such as dial-in networks). Currently supported
|
||||
platforms (tested versions) are: AIX (3.2.5), A/UX (3.0.1), FreeBSD
|
||||
(4.5), HP-UX (10.20), IRIX (6.5), Linux (2.x), Mac OS X (10.x), NetBSD
|
||||
(1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), and Windows with Cygwin.
|
||||
.SH OPTIONS
|
||||
.IP --configtest
|
||||
read, validate and display configuration; then exit.
|
||||
.IP "-f file, --config file"
|
||||
use
|
||||
.I file
|
||||
as configuration file.
|
||||
.IP "-n, --nodaemon"
|
||||
don't fork and don't detach from controlling terminal.
|
||||
.IP "-p, --passive"
|
||||
disable automatic connections to other servers.
|
||||
.IP --version
|
||||
output version information and exit.
|
||||
.IP --help
|
||||
display brief help text and exit.
|
||||
.SH FILES
|
||||
.I /usr/local/etc/ngircd.conf
|
||||
.RS
|
||||
The system wide default configuration file.
|
||||
.SH AUTHOR
|
||||
Alexander Barton,
|
||||
.UR mailto:alex@barton.de
|
||||
alex@barton.de
|
||||
.UE
|
||||
.br
|
||||
Homepage:
|
||||
.UR http://arthur.ath.cx/~alex/ngircd/
|
||||
http://arthur.ath.cx/~alex/ngircd/
|
||||
.UE
|
||||
.SH "SEE ALSO"
|
||||
.BR ngircd.conf (5),
|
||||
.BR ircd (8)
|
||||
.\"
|
||||
.\" -eof-
|
@@ -1,147 +0,0 @@
|
||||
.\"
|
||||
.\" ngircd(8) manual page template
|
||||
.\"
|
||||
.TH ngircd 8 "Sep 2023" 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 (IRC) server for small
|
||||
or private networks, developed under the GNU General Public License (GPL).
|
||||
.PP
|
||||
The server is quite easy to configure and runs as a single-node server or can
|
||||
be part of a network of ngIRCd servers in a LAN or across the internet. It
|
||||
optionally supports the IPv6 protocol, SSL/TLS-protected client-server and
|
||||
server-server links, the Pluggable Authentication Modules (PAM) system for user
|
||||
authentication, IDENT requests, and character set conversion for legacy
|
||||
clients.
|
||||
.PP
|
||||
The name ngIRCd stands for
|
||||
.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
|
||||
By default ngIRCd logs diagnostic and informational messages using the syslog
|
||||
mechanism, or writes directly to the console when running in the foreground
|
||||
(see below).
|
||||
.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\-y\fR, \fB\-\-syslog\fR
|
||||
Write log messages to the syslog even when running in the foreground. This only
|
||||
makes sense when
|
||||
.I \-n/\-\-nodaemon
|
||||
was given on the command line
|
||||
.I before
|
||||
this option!
|
||||
.PP
|
||||
The following options prevent ngIRCd from starting regularly, but perform a
|
||||
specific action and then exit the daemon again:
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Display a brief help text and exit.
|
||||
.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.
|
||||
.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 is
|
||||
.I always wise
|
||||
to use "ngircd \-\-configtest" to validate the configuration of ngIRCd after
|
||||
making changes to the configuration files!
|
||||
.SH DEBUGGING
|
||||
ngIRCd can log additional debug messages, which can be enabled with the command
|
||||
line option \-\-debug (\-d) or by sending the USR1 signal to the running daemon.
|
||||
Some of those messages may leak personal information, be very technical and can
|
||||
be very verbose. Therefore the debug mode is meant for troubleshooting only and
|
||||
should definitely be disabled during normal operation!
|
||||
.PP
|
||||
In addition, a "protocol sniffer" can be enabled on build time by passing the
|
||||
"\-\-enable\-sniffer" option to the ./configure script which enables the
|
||||
"\-\-sniffer" (\-s) command line option (which is not available by default):
|
||||
this "sniffer" logs all incoming and outgoing IRC commands on all connections,
|
||||
which can be handy to debug problems with the daemon itself or IRC clients.
|
||||
.PP
|
||||
Both modes are indicated in the version string shown by the IRC "VERSION"
|
||||
command: if the version ends in a dot (like in "26.1."), the daemon operates in
|
||||
"normal" mode (the version used in the example is "26.1"). If it ends in ".1"
|
||||
(like in "26.1.1") the "debug-mode" is enabled; and if it ends in ".2" (like in
|
||||
"26.1.2") the "IRC sniffer" is enabled, too.
|
||||
.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
|
||||
.PP
|
||||
Note: Usage of these signals is broadcasted to all users with the +s ("receive
|
||||
server notices") mode set!
|
||||
.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-
|
26
man/ngircd.conf.5
Normal file
26
man/ngircd.conf.5
Normal file
@@ -0,0 +1,26 @@
|
||||
.\"
|
||||
.\" $Id: ngircd.conf.5,v 1.6 2002/09/16 11:11:21 alex Exp $
|
||||
.\"
|
||||
.TH ngircd.conf 5 "September 2002" ngircd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
ngircd.conf \- configuration file of ngircd
|
||||
.SH SYNOPSIS
|
||||
.B /usr/local/etc/ngircd.conf
|
||||
.SH DESCRIPTION
|
||||
(coming soon, please have a look at the sample configuration
|
||||
file "doc/sample-ngircd.conf" -- Thank you!)
|
||||
.SH AUTHOR
|
||||
Alexander Barton,
|
||||
.UR mailto:alex@barton.de
|
||||
alex@barton.de
|
||||
.UE
|
||||
.br
|
||||
Homepage:
|
||||
.UR http://arthur.ath.cx/~alex/ngircd/
|
||||
http://arthur.ath.cx/~alex/ngircd/
|
||||
.UE
|
||||
.SH "SEE ALSO"
|
||||
.BR ngircd (8)
|
||||
.BR ircd (8)
|
||||
.\"
|
||||
.\" -eof-
|
@@ -1,603 +0,0 @@
|
||||
.\"
|
||||
.\" ngircd.conf(5) manual page template
|
||||
.\"
|
||||
.TH ngircd.conf 5 "Sep 2023" 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 their 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. [Global],
|
||||
[Limits], [Options], and [SSL] sections can occur multiple times, too, but
|
||||
each variable overwrites itself, only the last assignment is relevant.
|
||||
.SH [GLOBAL]
|
||||
The
|
||||
.I [Global]
|
||||
section 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)
|
||||
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. When not set,
|
||||
ngIRCd tries to deduce a valid IRC server name from the local host name.
|
||||
.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
|
||||
\fBHelpFile\fR (string)
|
||||
Text file which contains the ngIRCd help text. This file is required
|
||||
to display help texts when using the "HELP <cmd>" command.
|
||||
Please note: Changes made to this file take effect when ngircd starts up
|
||||
or is instructed to re-read its configuration file. Default: a built-in
|
||||
standard path.
|
||||
.TP
|
||||
\fBInfo\fR (string)
|
||||
Info text of the server. This will be shown by WHOIS and LINKS requests for
|
||||
example. Set to the server software name and version by default.
|
||||
.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. Default: a built-in standard path.
|
||||
.TP
|
||||
\fBMotdPhrase\fR (string)
|
||||
A simple Phrase (<127 chars) if you don't want to use a MOTD file.
|
||||
.TP
|
||||
\fBNetwork\fR (string)
|
||||
The name of the IRC network to which this server belongs. This name is
|
||||
optional, should only contain ASCII characters, and can't contain spaces.
|
||||
It is only used to inform clients. The default is empty, so no network
|
||||
name is announced to clients.
|
||||
.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
|
||||
"PID file" is written AFTER chroot and switching the user ID, therefore the
|
||||
directory the file 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)
|
||||
Port number(s) 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 daemon 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 ngIRCd daemon 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]
|
||||
This section is used to 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
|
||||
\fBIdleTimeout\fR (number)
|
||||
Number of seconds after which the whole daemon should shutdown when no
|
||||
connections are left active after handling at least one client (0: never). This
|
||||
can be useful for testing or when ngIRCd is started using "socket activation"
|
||||
with systemd(8), for example. Default: 0.
|
||||
.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
|
||||
\fBMaxPenaltyTime\fR (number)
|
||||
Maximum penalty time increase in seconds, per penalty event. Set to -1 for no
|
||||
limit (the default), 0 to disable penalties altogether. ngIRCd doesn't use
|
||||
penalty increases higher than 2 seconds during normal operation, so values
|
||||
greater than 1 rarely make sense.
|
||||
.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 are configured in this section. If you want to get started quickly, you
|
||||
most probably don't have to make changes here -- they are all optional.
|
||||
.TP
|
||||
\fBAllowedChannelTypes\fR (string)
|
||||
List of allowed channel types (channel prefixes) for newly created channels
|
||||
on the local server. By default, all supported channel types are allowed.
|
||||
Set this variable to the empty string to disallow creation of new channels
|
||||
by local clients at all. Default: #&+
|
||||
.TP
|
||||
\fBAllowRemoteOper\fR (boolean)
|
||||
If this option is active, IRC operators connected to remote servers are allowed
|
||||
to control this local server using administrative commands, for example like
|
||||
CONNECT, DIE, SQUIT etc. 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 and real 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
|
||||
\fBDefaultUserModes\fR (string)
|
||||
Default user mode(s) to set on new local clients. Please note that only modes
|
||||
can be set that the client could set using regular MODE commands, you can't
|
||||
set "a" (away) for example!
|
||||
Default: none.
|
||||
.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
|
||||
\fBIncludeDir\fR (string)
|
||||
Directory containing configuration snippets (*.conf), that should be read in
|
||||
after parsing the current configuration file.
|
||||
Default: a built-in directory name when no configuration file was explicitly
|
||||
given on the command line (check "ngircd --configtest"), none (empty)
|
||||
otherwise.
|
||||
.PP
|
||||
.RS
|
||||
This way no default include directory is used when a possibly non-default
|
||||
configuration file was explicitly specified using "--config"/"-f" on the
|
||||
command line which (intentionally) did not specify an
|
||||
.I "IncludeDir"
|
||||
directive.
|
||||
.RE
|
||||
.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,
|
||||
and NAMES output doesn't list any clients for non-members.
|
||||
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
|
||||
\fBNoticeBeforeRegistration\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 *" 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
|
||||
\fBPAMServiceName\fR (string)
|
||||
When PAM is enabled, this value determines the used PAM configuration.
|
||||
This setting allows running multiple ngIRCd instances with different
|
||||
PAM configurations on each instance. If you set it to "ngircd-foo",
|
||||
PAM will use /etc/pam.d/ngircd-foo instead of the default
|
||||
/etc/pam.d/ngircd.
|
||||
Default: ngircd.
|
||||
.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
|
||||
\fBCAFile\fR (string)
|
||||
Filename pointing to the Trusted CA Certificates. This is required for
|
||||
verifying peer certificates. Default: not set, so no certificates are trusted.
|
||||
.TP
|
||||
\fBCertFile\fR (string)
|
||||
SSL Certificate file of the private server key.
|
||||
.TP
|
||||
\fBCipherList\fR (string)
|
||||
Select cipher suites allowed for SSL/TLS connections. This defaults to
|
||||
"HIGH:!aNULL:@STRENGTH:!SSLv3" (OpenSSL) or "SECURE128:-VERS-SSL3.0" (GnuTLS).
|
||||
Please see 'man 1ssl ciphers' (OpenSSL) and 'man 3 gnutls_priority_init'
|
||||
(GnuTLS) for details.
|
||||
.TP
|
||||
\fBCRLFile\fR (string)
|
||||
Filename of Certificate Revocation List.
|
||||
.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 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
|
||||
\fBSSLVerify\fR (boolean)
|
||||
Verify the TLS certificate presented by the remote server. Default: yes.
|
||||
.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, as used in "MODE" commands. Modifying lists (ban list,
|
||||
invite list, exception list) is supported.
|
||||
.PP
|
||||
.RS
|
||||
This option can be specified multiple times, evaluated top to bottom.
|
||||
.RE
|
||||
.TP
|
||||
\fBAutojoin\fR (boolean)
|
||||
Should ngIRCd automatically join ("autojoin") all users to this channel on
|
||||
connect? Note: The users must have permissions to access the channel, otherwise
|
||||
joining them will fail!
|
||||
.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
|
||||
.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-
|
@@ -2,16 +2,17 @@
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001,2002 by 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.
|
||||
# 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 2008/02/26 22:04:15 fw Exp $
|
||||
# $Id: Makefile.am,v 1.4 2002/09/09 10:00:15 alex Exp $
|
||||
#
|
||||
|
||||
SUBDIRS = portab tool ipaddr ngircd testsuite
|
||||
SUBDIRS = portab ngircd testsuite
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in config.h config.h.in stamp-h.in
|
||||
|
@@ -1,21 +0,0 @@
|
||||
#
|
||||
# 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-
|
@@ -1,179 +0,0 @@
|
||||
/*
|
||||
* (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_WORKING_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) >= (size_t)res0->ai_addrlen);
|
||||
if (sizeof(*addr) >= (size_t)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- */
|
@@ -1,134 +0,0 @@
|
||||
/*
|
||||
* (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 <string.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)
|
||||
{
|
||||
assert(a != NULL);
|
||||
#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)
|
||||
{
|
||||
assert(a != NULL);
|
||||
#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(a != NULL);
|
||||
assert(af == AF_INET || af == AF_INET6);
|
||||
|
||||
if (af == AF_INET6)
|
||||
return ntohs(a->sin6.sin6_port);
|
||||
#endif /* WANT_IPV6 */
|
||||
|
||||
assert(a != NULL);
|
||||
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)
|
||||
{
|
||||
assert(addr != NULL);
|
||||
return inet_ntoa(addr->sin4.sin_addr);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
ng_ipaddr_tostr_r(const ng_ipaddr_t *addr, char *d)
|
||||
{
|
||||
assert(addr != NULL);
|
||||
assert(d != NULL);
|
||||
strlcpy(d, inet_ntoa(addr->sin4.sin_addr), NG_INET_ADDRSTRLEN);
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* -eof- */
|
74
src/ngircd/Makefile.am
Normal file
74
src/ngircd/Makefile.am
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
# 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.31 2002/12/12 12:36:41 alex Exp $
|
||||
#
|
||||
|
||||
AUTOMAKE_OPTIONS = ../portab/ansi2knr
|
||||
|
||||
INCLUDES = -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-info.c irc-login.c irc-mode.c irc-op.c irc-oper.c \
|
||||
irc-server.c irc-write.c lists.c log.c match.c parse.c resolve.c tool.c
|
||||
|
||||
ngircd_LDFLAGS = -L../portab
|
||||
|
||||
ngircd_LDADD = -lngportab
|
||||
|
||||
noinst_HEADERS = ngircd.h channel.h client.h conf.h conn.h hash.h irc.h \
|
||||
irc-channel.h irc-info.h irc-login.h irc-mode.h irc-op.h irc-oper.h \
|
||||
irc-server.h irc-write.h lists.h log.h match.h parse.h resolve.h tool.h \
|
||||
messages.h defines.h
|
||||
|
||||
clean-local:
|
||||
rm -f check-version check-help lint.out cvs-version.*
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
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:
|
||||
rm -f lint.out
|
||||
for f in *.c; do \
|
||||
echo "checking $$f ..."; \
|
||||
splint $$f $(LINTARGS) -I./.. -I./../portab $(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;
|
||||
|
||||
ngircd.c: cvs-date cvs-version.h
|
||||
|
||||
cvs-date:
|
||||
grep VERSION ../config.h | grep "CVS" \
|
||||
&& echo "#define CVSDATE \"$$( grep "\$$Id" $(srcdir)/*.c \
|
||||
| awk "{ print \$$9 }" | sort | tail -n 1 )\"" > cvs-version.new \
|
||||
|| echo "" > cvs-version.new
|
||||
diff cvs-version.h cvs-version.new || cp cvs-version.new cvs-version.h
|
||||
|
||||
TESTS = check-version check-help
|
||||
|
||||
# -eof-
|
@@ -1,124 +0,0 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2024 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
|
||||
|
||||
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-macros.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
|
||||
|
||||
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
|
||||
|
||||
TESTS = check-version check-help
|
||||
|
||||
# -eof-
|
@@ -1,331 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/* Additionan debug messages related to array handling: 0=off / 1=on */
|
||||
#define DEBUG_ARRAY 0
|
||||
|
||||
#include "array.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#if DEBUG_ARRAY
|
||||
# include "log.h"
|
||||
#endif
|
||||
|
||||
#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) {
|
||||
#if DEBUG_ARRAY
|
||||
LogDebug("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);
|
||||
|
||||
#if DEBUG_ARRAY
|
||||
LogDebug(
|
||||
"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);
|
||||
#if DEBUG_ARRAY
|
||||
LogDebug(
|
||||
"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 */
|
||||
|
||||
#if DEBUG_ARRAY
|
||||
LogDebug(
|
||||
"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- */
|
@@ -1,104 +0,0 @@
|
||||
/*
|
||||
* 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- */
|
1273
src/ngircd/channel.c
1273
src/ngircd/channel.c
File diff suppressed because it is too large
Load Diff
@@ -1,46 +1,36 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001,2002 by 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.
|
||||
*
|
||||
* $Id: channel.h,v 1.26 2002/12/16 23:05:24 alex Exp $
|
||||
*
|
||||
* Channel management (header)
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __channel_h__
|
||||
#define __channel_h__
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Channel management (header)
|
||||
*/
|
||||
|
||||
#if defined(__channel_c__)
|
||||
#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 of the channel */
|
||||
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 */
|
||||
CHAR modes[CHANNEL_MODE_LEN]; /* Channel modes */
|
||||
CHAR topic[CHANNEL_TOPIC_LEN]; /* Topic of the channel */
|
||||
CHAR key[CLIENT_PASS_LEN]; /* Channel key ("password", mode "k" ) */
|
||||
LONG maxusers; /* Maximum number of members (mode "l") */
|
||||
} CHANNEL;
|
||||
|
||||
typedef struct _CLIENT2CHAN
|
||||
@@ -48,7 +38,7 @@ typedef struct _CLIENT2CHAN
|
||||
struct _CLIENT2CHAN *next;
|
||||
CLIENT *client;
|
||||
CHANNEL *channel;
|
||||
char modes[CHANNEL_MODE_LEN]; /* User-Modes in Channel */
|
||||
CHAR modes[CHANNEL_MODE_LEN]; /* User-Modes in dem Channel */
|
||||
} CL2CHAN;
|
||||
|
||||
#else
|
||||
@@ -58,39 +48,37 @@ 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 PARAMS(( void ));
|
||||
GLOBAL void Channel_InitPredefined PARAMS(( void ));
|
||||
GLOBAL void Channel_Exit PARAMS(( void ));
|
||||
GLOBAL VOID Channel_Init PARAMS(( VOID ));
|
||||
GLOBAL VOID Channel_InitPredefined PARAMS(( VOID ));
|
||||
GLOBAL VOID Channel_Exit PARAMS(( VOID ));
|
||||
|
||||
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 BOOLEAN Channel_Join PARAMS(( CLIENT *Client, CHAR *Name ));
|
||||
GLOBAL BOOLEAN Channel_Part PARAMS(( CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *Reason ));
|
||||
|
||||
GLOBAL void Channel_Quit PARAMS(( CLIENT *Client, const char *Reason ));
|
||||
GLOBAL VOID Channel_Quit PARAMS(( CLIENT *Client, CHAR *Reason ));
|
||||
|
||||
GLOBAL void Channel_Kick PARAMS((CLIENT *Peer, CLIENT *Target, CLIENT *Origin,
|
||||
const char *Name, const char *Reason));
|
||||
GLOBAL VOID Channel_Kick PARAMS(( CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *Reason ));
|
||||
|
||||
GLOBAL unsigned long Channel_CountVisible PARAMS((CLIENT *Client));
|
||||
GLOBAL unsigned long Channel_MemberCount PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL int Channel_CountForUser PARAMS(( CLIENT *Client ));
|
||||
GLOBAL LONG Channel_Count PARAMS(( VOID ));
|
||||
GLOBAL LONG Channel_MemberCount PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL INT Channel_CountForUser PARAMS(( CLIENT *Client ));
|
||||
GLOBAL INT Channel_PCount PARAMS(( VOID ));
|
||||
|
||||
GLOBAL const char *Channel_Name PARAMS(( const 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 CHAR *Channel_Name PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL CHAR *Channel_Modes PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL CHAR *Channel_Topic PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL CHAR *Channel_Key PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL LONG Channel_MaxUsers PARAMS(( CHANNEL *Chan ));
|
||||
|
||||
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 VOID Channel_SetTopic PARAMS(( CHANNEL *Chan, CHAR *Topic ));
|
||||
GLOBAL VOID Channel_SetModes PARAMS(( CHANNEL *Chan, CHAR *Modes ));
|
||||
GLOBAL VOID Channel_SetKey PARAMS(( CHANNEL *Chan, CHAR *Key ));
|
||||
GLOBAL VOID Channel_SetMaxUsers PARAMS(( CHANNEL *Chan, LONG Count ));
|
||||
|
||||
GLOBAL CHANNEL *Channel_Search PARAMS(( const char *Name ));
|
||||
GLOBAL CHANNEL *Channel_Search PARAMS(( CHAR *Name ));
|
||||
|
||||
GLOBAL CHANNEL *Channel_First PARAMS(( void ));
|
||||
GLOBAL CHANNEL *Channel_First PARAMS(( VOID ));
|
||||
GLOBAL CHANNEL *Channel_Next PARAMS(( CHANNEL *Chan ));
|
||||
|
||||
GLOBAL CL2CHAN *Channel_FirstMember PARAMS(( CHANNEL *Chan ));
|
||||
@@ -101,53 +89,23 @@ GLOBAL CL2CHAN *Channel_NextChannelOf PARAMS(( CLIENT *Client, CL2CHAN *Cl2Chan
|
||||
GLOBAL CLIENT *Channel_GetClient PARAMS(( CL2CHAN *Cl2Chan ));
|
||||
GLOBAL CHANNEL *Channel_GetChannel PARAMS(( CL2CHAN *Cl2Chan ));
|
||||
|
||||
GLOBAL bool Channel_IsValidName PARAMS(( const char *Name ));
|
||||
GLOBAL BOOLEAN Channel_IsValidName PARAMS(( CHAR *Name ));
|
||||
|
||||
GLOBAL bool Channel_ModeAdd PARAMS(( CHANNEL *Chan, char Mode ));
|
||||
GLOBAL bool Channel_ModeDel PARAMS(( CHANNEL *Chan, char Mode ));
|
||||
GLOBAL bool Channel_HasMode PARAMS(( CHANNEL *Chan, char Mode ));
|
||||
GLOBAL char *Channel_Modes PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL BOOLEAN Channel_ModeAdd PARAMS(( CHANNEL *Chan, CHAR Mode ));
|
||||
GLOBAL BOOLEAN Channel_ModeDel PARAMS(( CHANNEL *Chan, CHAR Mode ));
|
||||
|
||||
GLOBAL bool Channel_UserModeAdd PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
|
||||
GLOBAL bool Channel_UserModeDel PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
|
||||
GLOBAL bool Channel_UserHasMode PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
|
||||
GLOBAL char *Channel_UserModes PARAMS(( CHANNEL *Chan, CLIENT *Client ));
|
||||
GLOBAL BOOLEAN Channel_UserModeAdd PARAMS(( CHANNEL *Chan, CLIENT *Client, CHAR Mode ));
|
||||
GLOBAL BOOLEAN Channel_UserModeDel PARAMS(( CHANNEL *Chan, CLIENT *Client, CHAR Mode ));
|
||||
GLOBAL CHAR *Channel_UserModes PARAMS(( CHANNEL *Chan, CLIENT *Client ));
|
||||
|
||||
GLOBAL bool Channel_IsMemberOf PARAMS(( CHANNEL *Chan, CLIENT *Client ));
|
||||
GLOBAL BOOLEAN 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 BOOLEAN Channel_Write PARAMS(( CHANNEL *Chan, CLIENT *From, CLIENT *Client, CHAR *Text ));
|
||||
|
||||
GLOBAL CHANNEL *Channel_Create PARAMS(( const char *Name ));
|
||||
GLOBAL CHANNEL *Channel_Create PARAMS(( 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, const char *who));
|
||||
GLOBAL bool Channel_AddExcept PARAMS((CHANNEL *c, const char *Mask, const char *who));
|
||||
GLOBAL bool Channel_AddInvite PARAMS((CHANNEL *c, const char *Mask,
|
||||
bool OnlyOnce, const char *who));
|
||||
|
||||
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- */
|
||||
|
@@ -1,138 +0,0 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2014 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 <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "conn.h"
|
||||
#include "lists.h"
|
||||
|
||||
#include "class.h"
|
||||
|
||||
struct list_head My_Classes[CLASS_COUNT];
|
||||
|
||||
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 bool
|
||||
Class_GetMemberReason(const int Class, CLIENT *Client, char *reason, size_t len)
|
||||
{
|
||||
char str[COMMAND_LEN];
|
||||
|
||||
assert(Class < CLASS_COUNT);
|
||||
assert(Client != NULL);
|
||||
|
||||
strlcpy(str, "listed", sizeof(str));
|
||||
|
||||
if (!Lists_CheckReason(&My_Classes[Class], Client, str, sizeof(str)))
|
||||
return false;
|
||||
|
||||
switch(Class) {
|
||||
case CLASS_GLINE:
|
||||
snprintf(reason, len, "\"%s\" (G-Line)", str);
|
||||
break;
|
||||
case CLASS_KLINE:
|
||||
snprintf(reason, len, "\"%s\" (K-Line)", str);
|
||||
break;
|
||||
default:
|
||||
snprintf(reason, len, "%s", str);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 reject[COMMAND_LEN];
|
||||
|
||||
assert(Client != NULL);
|
||||
|
||||
if (Class_GetMemberReason(CLASS_GLINE, Client, reject, sizeof(reject)) ||
|
||||
Class_GetMemberReason(CLASS_KLINE, Client, reject, sizeof(reject))) {
|
||||
Client_Reject(Client, reject, true);
|
||||
return DISCONNECTED;
|
||||
}
|
||||
|
||||
return CONNECTED;
|
||||
}
|
||||
|
||||
|
||||
GLOBAL bool
|
||||
Class_AddMask(const int Class, const char *Pattern, time_t ValidUntil,
|
||||
const char *Reason)
|
||||
{
|
||||
char mask[MASK_LEN];
|
||||
|
||||
assert(Class < CLASS_COUNT);
|
||||
assert(Pattern != NULL);
|
||||
assert(Reason != NULL);
|
||||
|
||||
Lists_MakeMask(Pattern, mask, sizeof(mask));
|
||||
return Lists_Add(&My_Classes[Class], mask,
|
||||
ValidUntil, Reason, false);
|
||||
}
|
||||
|
||||
GLOBAL void
|
||||
Class_DeleteMask(const int Class, const char *Pattern)
|
||||
{
|
||||
char mask[MASK_LEN];
|
||||
|
||||
assert(Class < CLASS_COUNT);
|
||||
assert(Pattern != NULL);
|
||||
|
||||
Lists_MakeMask(Pattern, mask, sizeof(mask));
|
||||
Lists_Del(&My_Classes[Class], 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- */
|
@@ -1,42 +0,0 @@
|
||||
/*
|
||||
* 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 *Pattern,
|
||||
const time_t ValidUntil, const char *Reason));
|
||||
GLOBAL void Class_DeleteMask PARAMS((const int Class, const char *Pattern));
|
||||
|
||||
GLOBAL bool Class_GetMemberReason PARAMS((const int Class, CLIENT *Client,
|
||||
char *reason, size_t len));
|
||||
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- */
|
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2014 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 <assert.h>
|
||||
|
||||
#include "conn.h"
|
||||
#include "log.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- */
|
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* 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
|
1563
src/ngircd/client.c
1563
src/ngircd/client.c
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user