mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-11-04 07:52:59 +00:00 
			
		
		
		
	Compare commits
	
		
			13 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					880d35f82b | ||
| 
						 | 
					83e49bf74b | ||
| 
						 | 
					b6f53b6f82 | ||
| 
						 | 
					ab52d2b818 | ||
| 
						 | 
					aaf42ae77b | ||
| 
						 | 
					fa30f2a0d2 | ||
| 
						 | 
					1fa46bedbe | ||
| 
						 | 
					d772acf9d6 | ||
| 
						 | 
					15f380592d | ||
| 
						 | 
					54b9381dd0 | ||
| 
						 | 
					889b7ef48f | ||
| 
						 | 
					31c8078706 | ||
| 
						 | 
					34eb2528d0 | 
							
								
								
									
										32
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								ChangeLog
									
									
									
									
									
								
							@@ -10,12 +10,30 @@
 | 
			
		||||
                        -- ChangeLog / Aenderungen --
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ngIRCd 0.3.x, ??.??.2002
 | 
			
		||||
ngIRCd 0.4.2, 29.04.2002
 | 
			
		||||
 | 
			
		||||
  - LUSERS verzaehlt sich bei eigenen Server-Links nicht mehr.
 | 
			
		||||
  - QUIT wird nun auch von noch nicht registrierten Clients akzeptiert.
 | 
			
		||||
  - IRC-Funktion LIST implementiert; bisher werden allerdings noch keine
 | 
			
		||||
    Regular Expressions (bis auf "*") unterstuetzt.
 | 
			
		||||
 | 
			
		||||
ngIRCd 0.4.1, 08.04.2002
 | 
			
		||||
 | 
			
		||||
  - Bei Server-Links wird nicht mehr an Hand der Anzahl der Parameter
 | 
			
		||||
    eines empfangenen SERVER-Befehls, sondern "intern" erkannt, ob es
 | 
			
		||||
    sich um eine ein- oder ausgehende Verbindung handelt und somit das
 | 
			
		||||
    eigene PASS-SERVER-Paar gesendet werden muss oder nicht. Da sich
 | 
			
		||||
    verschiedene Versionen des Original-ircd's anders verhalten, schlug
 | 
			
		||||
    die Anmeldung je nach Gehenseite evtl. fehl.
 | 
			
		||||
  - Bei einem NICK-Befehl eines lokalen Client konnte der Server ab-
 | 
			
		||||
    stuerzen, da ein Format-String einer Log-Meldung fehlerhaft war.
 | 
			
		||||
 | 
			
		||||
ngIRCd 0.4.0, 01.04.2002
 | 
			
		||||
 | 
			
		||||
  - IRC-Befehle nochmal auf weitere Source-Dateien aufgespalten.
 | 
			
		||||
  - WHO implementiert (bisher ohne komplette Unerstuetzung von Masks).
 | 
			
		||||
  - WHO implementiert (bisher ohne komplette Unterstuetzung von Masks).
 | 
			
		||||
  - Der AWAY-Mode wurde nicht ueber mehrere Server-Links weitergegeben.
 | 
			
		||||
  - stderr wird nun in eine Datei umgelenkt (/usr/local/var/ngircd.err).
 | 
			
		||||
  - stderr wird nun in eine Datei umgelenkt (/tmp/ngircd-<PID>.err).
 | 
			
		||||
    Laeuft der Server nicht im Debug-Modus, so wird diese bei Programm-
 | 
			
		||||
    ende geloescht. Sollte der Server abstuerzen, finden sich hier evtl.
 | 
			
		||||
    zusaetzliche Informationen.
 | 
			
		||||
@@ -23,7 +41,6 @@ ngIRCd 0.3.x, ??.??.2002
 | 
			
		||||
  - die Beispiel-Konfigurationsdatei (doc/sample-ngircd.conf) wird als
 | 
			
		||||
    ngircd.conf installiert, wenn noch keine "echte" Konfigurationsdatei
 | 
			
		||||
    vorhanden ist.
 | 
			
		||||
  - bei "ngircd --help" werden nun die eincompilierten Pfade angezeigt.
 | 
			
		||||
  - bei WHO, WHOIS und NAMES wird nun nur noch der Status "Operator" oder
 | 
			
		||||
    "voiced" geliefert -- nicht mehr beides.
 | 
			
		||||
  - Server-Gruppen implementiert: es wird immer nur zu einem Server in
 | 
			
		||||
@@ -31,19 +48,20 @@ ngIRCd 0.3.x, ??.??.2002
 | 
			
		||||
    nicht, so wird der naechste probiert (Variable "Group" in der Kon-
 | 
			
		||||
    figurationsdatei, Sektion [Server]).
 | 
			
		||||
  - IRC_PING() ist, wenn nicht im "strict RFC"-Mode, toleranter und ak-
 | 
			
		||||
    zeptiert beliebig viele Parameter: z.B. BitchX sendet soetwas.
 | 
			
		||||
    zeptiert beliebig viele Parameter (z.B. BitchX sendet soetwas).
 | 
			
		||||
  - die "Portab-Header" werden nicht mehr benoetigt, die System-Erkennung
 | 
			
		||||
    wird nun ausschliesslich vom configure-Script durchgefuehrt. System-
 | 
			
		||||
    abhaengige Definitionen finden sich nun unter src/portrab/.
 | 
			
		||||
  - Clients und Channels werden nicht mehr ueber ihren Namen, sondern
 | 
			
		||||
    einen Hash-Wert gesucht: sollte deutlich schneller sein.
 | 
			
		||||
  - neuer Kommandozeilen-Parameter "--configtest": die Konfiguration wird
 | 
			
		||||
    gelesen und die dann verwendeten Werte angezeigt.
 | 
			
		||||
    gelesen und dann die verwendeten Werte angezeigt.
 | 
			
		||||
  - Client-Mode "s" (Server Notices) implementiert.
 | 
			
		||||
  - mit dem neuen Kommandozeilen-Parameter "--config"/"-f" kann eine
 | 
			
		||||
    alternative Konfigurationsdatei angegeben werden.
 | 
			
		||||
  - nach dem Start kann der ngIRCd, wenn er mit root-Rechten laeuft,
 | 
			
		||||
    zu einer anderen User-ID und Group-ID wechseln.
 | 
			
		||||
  - URL der Homepage wird u.a. bei "--version" mit angezeigt.
 | 
			
		||||
 | 
			
		||||
ngIRCd 0.3.0, 02.03.2002
 | 
			
		||||
 | 
			
		||||
@@ -174,4 +192,4 @@ ngIRCd 0.0.1, 31.12.2001
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
$Id: ChangeLog,v 1.54 2002/03/29 23:41:23 alex Exp $
 | 
			
		||||
$Id: ChangeLog,v 1.54.2.5 2002/04/29 14:10:59 alex Exp $
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										112
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										112
									
								
								INSTALL
									
									
									
									
									
								
							@@ -8,36 +8,29 @@
 | 
			
		||||
                       der GNU General Public License.
 | 
			
		||||
 | 
			
		||||
                         -- INSTALL / Installation --
 | 
			
		||||
                         
 | 
			
		||||
                      Ilja Osthoff, <ilja@glide.ath.cx>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ngIRCd ist fuer UNIXoide-Systeme konzipiert. Dieser Text beschreibt den
 | 
			
		||||
"Standardfall": ein UNIX bzw. UNIX-aehnliches System, das von GNU automake
 | 
			
		||||
und GNU autoconf ("configure") unterstuetzt wird.
 | 
			
		||||
I. 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
I. Voraussetzungen
 | 
			
		||||
~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
ngIRCd benoetigt "Alex' Portability Headers" (portab.h). Diese koennen von
 | 
			
		||||
der Homepage heruntergeladen werden:
 | 
			
		||||
 | 
			
		||||
<http://arthur.ath.cx/~alex/ngircd/#download>
 | 
			
		||||
 | 
			
		||||
Vor dem configure-Lauf des ngIRCd muessen dies Header auf dem System in-
 | 
			
		||||
stalliert sein, anonsten bricht configure ab.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
II. Quick Start
 | 
			
		||||
~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
In der Regel sind folgende Schritte ausreichend:
 | 
			
		||||
 | 
			
		||||
   1) ./autogen.sh	[nur erforderlich, wenn ueber CVS bezogen]
 | 
			
		||||
   2) ./configure
 | 
			
		||||
   3) make
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
zu 1) autogen.sh:
 | 
			
		||||
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
 | 
			
		||||
@@ -54,7 +47,7 @@ Versionen!) benoetigt.
 | 
			
		||||
(nochmal: "Endanwender" mussen diesen Schritt i.d.R. nicht ausfuehren!)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
zu 2) ./configure:
 | 
			
		||||
zu 4): "./configure"
 | 
			
		||||
 | 
			
		||||
Mit dem configure-Script wird ngIRCd, wie GNU Software meistens, an das
 | 
			
		||||
lokale System angepasst und die erforderlichen Makefile's erzeugt.
 | 
			
		||||
@@ -64,10 +57,22 @@ erkennen und entsprechend reagieren. Sollte dies einmal nicht der Fall sein,
 | 
			
		||||
so zeigt "./configure --help" moegliche Optionen.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
zu 3) make:
 | 
			
		||||
zu 5): "make"
 | 
			
		||||
 | 
			
		||||
Der make-Befehl bearbeitet die vom configure-Script erzeugten Makefile's und
 | 
			
		||||
uebersetzt die comBase-Library und die Testprogramme.
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
III. Nuetzliche make-Targets
 | 
			
		||||
@@ -86,5 +91,52 @@ nuetzlichen Targets:
 | 
			
		||||
   Naechster Schritt: -> ./autogen.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
IV. 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.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
V. 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.5 2002/03/03 13:07:01 alex Exp $
 | 
			
		||||
$Id: INSTALL,v 1.6.2.1 2002/05/08 15:47:06 alex Exp $
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								NEWS
									
									
									
									
									
								
							@@ -10,10 +10,10 @@
 | 
			
		||||
                           -- NEWS / Neuigkeiten --
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ngIRCd 0.3.x, ??.??.2002
 | 
			
		||||
ngIRCd 0.4.0, 01.04.2002
 | 
			
		||||
 | 
			
		||||
  - WHO implementiert (bisher ohne komplette Unerstuetzung von Masks).
 | 
			
		||||
  - stderr wird nun in eine Datei umgelenkt (/usr/local/var/ngircd.err).
 | 
			
		||||
  - WHO implementiert (bisher ohne komplette Unterstuetzung von Masks).
 | 
			
		||||
  - stderr wird nun in eine Datei umgelenkt (/ngircd-<PID>.err).
 | 
			
		||||
    Laeuft der Server nicht im Debug-Modus, so wird diese bei Programm-
 | 
			
		||||
    ende geloescht. Sollte der Server abstuerzen, finden sich hier evtl.
 | 
			
		||||
    zusaetzliche Informationen.
 | 
			
		||||
@@ -85,4 +85,4 @@ ngIRCd 0.0.1, 31.12.2001
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
$Id: NEWS,v 1.25 2002/03/29 23:41:23 alex Exp $
 | 
			
		||||
$Id: NEWS,v 1.25.2.3 2002/04/01 17:18:03 alex Exp $
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
#
 | 
			
		||||
# $Id: configure.in,v 1.39 2002/03/30 18:02:39 alex Exp $
 | 
			
		||||
# $Id: configure.in,v 1.39.2.4 2002/04/29 14:11:09 alex Exp $
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# -- Initialisierung --
 | 
			
		||||
@@ -17,7 +17,7 @@
 | 
			
		||||
AC_INIT
 | 
			
		||||
AC_CANONICAL_TARGET
 | 
			
		||||
AC_CONFIG_SRCDIR(src/config.h.in)
 | 
			
		||||
AM_INIT_AUTOMAKE(ngircd,0.3.0-CVS)
 | 
			
		||||
AM_INIT_AUTOMAKE(ngircd,0.4.2)
 | 
			
		||||
AM_CONFIG_HEADER(src/config.h)
 | 
			
		||||
 | 
			
		||||
# -- Templates fuer config.h --
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ Folgende Software wird jedoch benoetigt:
 | 
			
		||||
  - GNU C Compiler (gcc)
 | 
			
		||||
    Bezugsquellen:
 | 
			
		||||
    http://www.rezepte-im-web.de/appleux/gcc281.tar.gz
 | 
			
		||||
    ftp://arthur.ath.cx/pub/AUX/Software/Development/gcc281.tar.gz
 | 
			
		||||
    ftp://arthur.ath.cx/pub/AUX/Software/Development/gcc-2.8.1-auxbin.tar.gz
 | 
			
		||||
 | 
			
		||||
  - GNU make
 | 
			
		||||
    Bezugsquellen:
 | 
			
		||||
@@ -30,6 +30,13 @@ Folgende Software wird jedoch benoetigt:
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
  - install (z.B. aus den GNU fileutils)
 | 
			
		||||
    Ein install, welches entweder so "broken" ist, dass configure das eigene
 | 
			
		||||
    Shell-Script waehlt, oder eines, das funktioniert. Leider ist mindestens
 | 
			
		||||
    ein Binary im Umlauf, das Probleme macht.
 | 
			
		||||
    Bezugsquelle:
 | 
			
		||||
    ftp://arthur.ath.cx/pub/UNIX/AUX/Software/Tools/fileutils-4.0.tar.gz
 | 
			
		||||
 | 
			
		||||
  - libUTIL.a
 | 
			
		||||
    Bezugsquellen:
 | 
			
		||||
    http://ftp.mayn.de/pub/apple/apple_unix/Sys_stuff/libUTIL-2.1.tar.gz
 | 
			
		||||
@@ -39,9 +46,26 @@ Nachdem diese Pakete entsprechend installiert sind, reicht ein ganz normales
 | 
			
		||||
"./configure" und "make" aus, um den ngIRCd unter A/UX zu compilieren.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Noch ein paar Hinweise, wenn es doch (noch) nicht klappt:
 | 
			
		||||
 | 
			
		||||
  - 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
 | 
			
		||||
 | 
			
		||||
  - 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.
 | 
			
		||||
    Das config.status-Script sollte mit der ksh als Interpreter erstellt
 | 
			
		||||
    worden sein (siehe erste Zeile davon!).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Hier die Zeiten von Alex System (Macintosh SE/30, 32 MB, A/UX 3.0.1):
 | 
			
		||||
configure: 7:33, make: 12:02
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
$Id: README-AUX.txt,v 1.1 2002/02/25 14:02:32 alex Exp $
 | 
			
		||||
$Id: README-AUX.txt,v 1.1.2.2 2002/04/29 14:44:24 alex Exp $
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: channel.c,v 1.20 2002/03/25 16:54:26 alex Exp $
 | 
			
		||||
 * $Id: channel.c,v 1.20.2.1 2002/04/29 14:11:23 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * channel.c: Management der Channels
 | 
			
		||||
 */
 | 
			
		||||
@@ -171,6 +171,24 @@ GLOBAL INT Channel_Count( VOID )
 | 
			
		||||
} /* Channel_Count */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GLOBAL INT Channel_MemberCount( CHANNEL *Chan )
 | 
			
		||||
{
 | 
			
		||||
	CL2CHAN *cl2chan;
 | 
			
		||||
	INT count;
 | 
			
		||||
 | 
			
		||||
	assert( Chan != NULL );
 | 
			
		||||
 | 
			
		||||
	count = 0;
 | 
			
		||||
	cl2chan = My_Cl2Chan;
 | 
			
		||||
	while( cl2chan )
 | 
			
		||||
	{
 | 
			
		||||
		if( cl2chan->channel == Chan ) count++;
 | 
			
		||||
		cl2chan = cl2chan->next;
 | 
			
		||||
	}
 | 
			
		||||
	return count;
 | 
			
		||||
} /* Channel_MemberCount */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GLOBAL CHAR *Channel_Name( CHANNEL *Chan )
 | 
			
		||||
{
 | 
			
		||||
	assert( Chan != NULL );
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: channel.h,v 1.16 2002/03/25 19:11:01 alex Exp $
 | 
			
		||||
 * $Id: channel.h,v 1.16.2.1 2002/04/29 14:11:23 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * channel.h: Management der Channels (Header)
 | 
			
		||||
 */
 | 
			
		||||
@@ -59,6 +59,7 @@ GLOBAL BOOLEAN Channel_Part( CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *R
 | 
			
		||||
GLOBAL VOID Channel_RemoveClient( CLIENT *Client, CHAR *Reason );
 | 
			
		||||
 | 
			
		||||
GLOBAL INT Channel_Count( VOID );
 | 
			
		||||
GLOBAL INT Channel_MemberCount( CHANNEL *Chan );
 | 
			
		||||
 | 
			
		||||
GLOBAL CHAR *Channel_Name( CHANNEL *Chan );
 | 
			
		||||
GLOBAL CHAR *Channel_Modes( CHANNEL *Chan );
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: client.c,v 1.53 2002/03/27 20:52:58 alex Exp $
 | 
			
		||||
 * $Id: client.c,v 1.53.2.1 2002/04/29 14:11:23 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * client.c: Management aller Clients
 | 
			
		||||
 *
 | 
			
		||||
@@ -798,7 +798,17 @@ GLOBAL INT Client_MyServiceCount( VOID )
 | 
			
		||||
 | 
			
		||||
GLOBAL INT Client_MyServerCount( VOID )
 | 
			
		||||
{
 | 
			
		||||
	return MyCount( CLIENT_SERVER );
 | 
			
		||||
	CLIENT *c;
 | 
			
		||||
	INT cnt;
 | 
			
		||||
 | 
			
		||||
	cnt = 0;
 | 
			
		||||
	c = My_Clients;
 | 
			
		||||
	while( c )
 | 
			
		||||
	{
 | 
			
		||||
		if(( c->type == CLIENT_SERVER ) && ( c->hops == 1 )) cnt++;
 | 
			
		||||
		c = (CLIENT *)c->next;
 | 
			
		||||
	}
 | 
			
		||||
	return cnt;
 | 
			
		||||
} /* Client_MyServerCount */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -867,7 +877,7 @@ LOCAL INT Count( CLIENT_TYPE Type )
 | 
			
		||||
	c = My_Clients;
 | 
			
		||||
	while( c )
 | 
			
		||||
	{
 | 
			
		||||
		if( c && ( c->type == Type )) cnt++;
 | 
			
		||||
		if( c->type == Type ) cnt++;
 | 
			
		||||
		c = (CLIENT *)c->next;
 | 
			
		||||
	}
 | 
			
		||||
	return cnt;
 | 
			
		||||
@@ -883,7 +893,7 @@ LOCAL INT MyCount( CLIENT_TYPE Type )
 | 
			
		||||
	c = My_Clients;
 | 
			
		||||
	while( c )
 | 
			
		||||
	{
 | 
			
		||||
		if( c && ( c->introducer == This_Server ) && ( c->type == Type )) cnt++;
 | 
			
		||||
		if(( c->introducer == This_Server ) && ( c->type == Type )) cnt++;
 | 
			
		||||
		c = (CLIENT *)c->next;
 | 
			
		||||
	}
 | 
			
		||||
	return cnt;
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: conn.c,v 1.60 2002/03/30 13:40:56 alex Exp $
 | 
			
		||||
 * $Id: conn.c,v 1.60.2.1 2002/04/08 18:07:42 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * connect.h: Verwaltung aller Netz-Verbindungen ("connections")
 | 
			
		||||
 */
 | 
			
		||||
@@ -976,6 +976,7 @@ LOCAL VOID New_Server( INT Server, CONN_ID Idx )
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	Client_SetIntroducer( c, c );
 | 
			
		||||
	Client_SetToken( c, TOKEN_OUTBOUND );
 | 
			
		||||
 | 
			
		||||
	/* Verbindung registrieren */
 | 
			
		||||
	My_Connections[Idx].sock = new_sock;
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: defines.h,v 1.21 2002/03/29 22:55:02 alex Exp $
 | 
			
		||||
 * $Id: defines.h,v 1.21.2.1 2002/04/08 18:07:42 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * defines.h: (globale) Konstanten
 | 
			
		||||
 */
 | 
			
		||||
@@ -28,9 +28,9 @@
 | 
			
		||||
 | 
			
		||||
#define MAX_LISTEN_PORTS 16		/* max. Anzahl von Listen-Ports */
 | 
			
		||||
 | 
			
		||||
#define MAX_OPERATORS 8			/* max. Anzahl konfigurierbarer Operatoren */
 | 
			
		||||
#define MAX_OPERATORS 16		/* max. Anzahl konfigurierbarer Operatoren */
 | 
			
		||||
 | 
			
		||||
#define MAX_SERVERS 8			/* max. Anzahl konfigurierbarer Server ("Peers") */
 | 
			
		||||
#define MAX_SERVERS 16			/* max. Anzahl konfigurierbarer Server ("Peers") */
 | 
			
		||||
 | 
			
		||||
#define MAX_CONNECTIONS 100		/* max. Anzahl von Verbindungen an diesem Server */
 | 
			
		||||
 | 
			
		||||
@@ -75,6 +75,8 @@
 | 
			
		||||
 | 
			
		||||
#define MAX_LOG_MSG_LEN 256		/* max. Laenge einer Log-Meldung */
 | 
			
		||||
 | 
			
		||||
#define TOKEN_OUTBOUND -2		/* Kennzeichnung fuer ausgehende Server-Links im Aufbau */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: irc-channel.c,v 1.3 2002/03/25 17:08:54 alex Exp $
 | 
			
		||||
 * $Id: irc-channel.c,v 1.3.2.1 2002/04/29 14:11:23 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * irc-channel.c: IRC-Channel-Befehle
 | 
			
		||||
 */
 | 
			
		||||
@@ -218,4 +218,45 @@ GLOBAL BOOLEAN IRC_TOPIC( CLIENT *Client, REQUEST *Req )
 | 
			
		||||
} /* IRC_TOPIC */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GLOBAL BOOLEAN IRC_LIST( CLIENT *Client, REQUEST *Req )
 | 
			
		||||
{
 | 
			
		||||
	CHAR *pattern;
 | 
			
		||||
	CHANNEL *chan;
 | 
			
		||||
 | 
			
		||||
	assert( Client != NULL );
 | 
			
		||||
	assert( Req != NULL );
 | 
			
		||||
 | 
			
		||||
	if( Client_Type( Client ) != CLIENT_USER ) return IRC_WriteStrClient( Client, ERR_NOTREGISTERED_MSG, Client_ID( Client ));
 | 
			
		||||
 | 
			
		||||
	/* Falsche Anzahl Parameter? */
 | 
			
		||||
	if( Req->argc > 1 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
 | 
			
		||||
 | 
			
		||||
	if( Req->argc > 0 ) pattern = strtok( Req->argv[0], "," );
 | 
			
		||||
	else pattern = "*";
 | 
			
		||||
	
 | 
			
		||||
	while( pattern )
 | 
			
		||||
	{
 | 
			
		||||
		/* alle Channel durchgehen */
 | 
			
		||||
		chan = Channel_First( );
 | 
			
		||||
		while( chan )
 | 
			
		||||
		{
 | 
			
		||||
			/* Passt die Suchmaske auf diesen Channel? Bisher werden hier
 | 
			
		||||
			 * "regular expressions" aber noch nicht unterstuetzt ... */
 | 
			
		||||
			if(( strcasecmp( pattern, Channel_Name( chan )) == 0 ) || ( strcmp( pattern, "*" ) == 0 ))
 | 
			
		||||
			{
 | 
			
		||||
				/* Treffer! */
 | 
			
		||||
				if( ! IRC_WriteStrClient( Client, RPL_LIST_MSG, Client_ID( Client), Channel_Name( chan ), Channel_MemberCount( chan ), Channel_Topic( chan ))) return DISCONNECTED;
 | 
			
		||||
			}
 | 
			
		||||
			chan = Channel_Next( chan );
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		/* naechsten Namen ermitteln */
 | 
			
		||||
		if( Req->argc > 0 ) pattern = strtok( NULL, "," );
 | 
			
		||||
		else pattern = NULL;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	return IRC_WriteStrClient( Client, RPL_LISTEND_MSG, Client_ID( Client ));
 | 
			
		||||
} /* IRC_LIST */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* -eof- */
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: irc-channel.h,v 1.2 2002/03/12 14:37:52 alex Exp $
 | 
			
		||||
 * $Id: irc-channel.h,v 1.2.2.1 2002/04/29 14:11:23 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * irc-channel.h: IRC-Channel-Befehle (Header)
 | 
			
		||||
 */
 | 
			
		||||
@@ -26,6 +26,7 @@ GLOBAL BOOLEAN IRC_JOIN( CLIENT *Client, REQUEST *Req );
 | 
			
		||||
GLOBAL BOOLEAN IRC_PART( CLIENT *Client, REQUEST *Req );
 | 
			
		||||
GLOBAL BOOLEAN IRC_TOPIC( CLIENT *Client, REQUEST *Req );
 | 
			
		||||
 | 
			
		||||
GLOBAL BOOLEAN IRC_LIST( CLIENT *Client, REQUEST *Req );
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: irc-login.c,v 1.11 2002/03/26 23:58:34 alex Exp $
 | 
			
		||||
 * $Id: irc-login.c,v 1.11.2.1 2002/04/08 18:07:42 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * irc-login.c: Anmeldung und Abmeldung im IRC
 | 
			
		||||
 */
 | 
			
		||||
@@ -116,7 +116,7 @@ GLOBAL BOOLEAN IRC_NICK( CLIENT *Client, REQUEST *Req )
 | 
			
		||||
		 * wenn wir es nicht so machen. Ob es so okay ist? Hm ... */
 | 
			
		||||
		if( strcmp( Client_ID( target ), Req->argv[0] ) == 0 ) return CONNECTED;
 | 
			
		||||
#endif
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		/* pruefen, ob Nick bereits vergeben. Speziallfall: der Client
 | 
			
		||||
		 * will nur die Gross- und Kleinschreibung aendern. Das darf
 | 
			
		||||
		 * er natuerlich machen :-) */
 | 
			
		||||
@@ -140,8 +140,16 @@ GLOBAL BOOLEAN IRC_NICK( CLIENT *Client, REQUEST *Req )
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			/* Nick-Aenderung */
 | 
			
		||||
			if( Client_Conn( target ) > NONE ) Log( LOG_INFO, "User \"%s\" changed nick (connection %d): \"%s\" -> \"%s\".", Client_Mask( target ), Client_ID( target ), Req->argv[0], Client_Conn( target ));
 | 
			
		||||
			else Log( LOG_DEBUG, "User \"%s\" changed nick: \"%s\" -> \"%s\".", Client_Mask( target ), Client_ID( target ), Req->argv[0] );
 | 
			
		||||
			if( Client_Conn( target ) > NONE )
 | 
			
		||||
			{
 | 
			
		||||
				/* lokaler Client */
 | 
			
		||||
				Log( LOG_INFO, "User \"%s\" changed nick (connection %d): \"%s\" -> \"%s\".", Client_Mask( target ), Client_Conn( target ), Client_ID( target ), Req->argv[0] );
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				/* Remote-Client */
 | 
			
		||||
				Log( LOG_DEBUG, "User \"%s\" changed nick: \"%s\" -> \"%s\".", Client_Mask( target ), Client_ID( target ), Req->argv[0] );
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/* alle betroffenen User und Server ueber Nick-Aenderung informieren */
 | 
			
		||||
			if( Client_Type( Client ) == CLIENT_USER ) IRC_WriteStrClientPrefix( Client, Client, "NICK :%s", Req->argv[0] );
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: irc-mode.h,v 1.2 2002/03/12 14:37:52 alex Exp $
 | 
			
		||||
 * $Id: irc-mode.h,v 1.2.2.1 2002/04/08 18:07:42 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * irc-mode.h: IRC-Befehle zur Mode-Aenderung (MODE, AWAY, ...) (Header)
 | 
			
		||||
 */
 | 
			
		||||
@@ -29,4 +29,4 @@ GLOBAL BOOLEAN IRC_AWAY( CLIENT *Client, REQUEST *Req );
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* -eof- */
 | 
			
		||||
/* -eof- */
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: irc-oper.c,v 1.3 2002/03/27 20:52:58 alex Exp $
 | 
			
		||||
 * $Id: irc-oper.c,v 1.3.2.1 2002/04/08 18:07:42 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * irc-oper.c: IRC-Operator-Befehle
 | 
			
		||||
 */
 | 
			
		||||
@@ -19,6 +19,7 @@
 | 
			
		||||
 | 
			
		||||
#include "imp.h"
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include "ngircd.h"
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: irc-server.c,v 1.8 2002/03/27 20:52:58 alex Exp $
 | 
			
		||||
 * $Id: irc-server.c,v 1.8.2.1 2002/04/08 18:07:42 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * irc-server.c: IRC-Befehle fuer Server-Links
 | 
			
		||||
 */
 | 
			
		||||
@@ -80,10 +80,11 @@ GLOBAL BOOLEAN IRC_SERVER( CLIENT *Client, REQUEST *Req )
 | 
			
		||||
		Client_SetHops( Client, 1 );
 | 
			
		||||
		Client_SetInfo( Client, Req->argv[Req->argc - 1] );
 | 
			
		||||
		
 | 
			
		||||
		/* Meldet sich der Server bei uns an? */
 | 
			
		||||
		if( Req->argc == 2 )
 | 
			
		||||
		/* Meldet sich der Server bei uns an (d.h., bauen nicht wir
 | 
			
		||||
		 * selber die Verbindung zu einem anderen Server auf)? */
 | 
			
		||||
		if( Client_Token( Client ) != TOKEN_OUTBOUND )
 | 
			
		||||
		{
 | 
			
		||||
			/* Unseren SERVER- und PASS-Befehl senden */
 | 
			
		||||
			/* Eingehende Verbindung: Unseren SERVER- und PASS-Befehl senden */
 | 
			
		||||
			ok = TRUE;
 | 
			
		||||
			if( ! IRC_WriteStrClient( Client, "PASS %s "PASSSERVERADD, Conf_Server[i].pwd )) ok = FALSE;
 | 
			
		||||
			else ok = IRC_WriteStrClient( Client, "SERVER %s 1 :%s", Conf_ServerName, Conf_ServerInfo );
 | 
			
		||||
@@ -95,7 +96,12 @@ GLOBAL BOOLEAN IRC_SERVER( CLIENT *Client, REQUEST *Req )
 | 
			
		||||
			Client_SetIntroducer( Client, Client );
 | 
			
		||||
			Client_SetToken( Client, 1 );
 | 
			
		||||
		}
 | 
			
		||||
		else  Client_SetToken( Client, atoi( Req->argv[1] ));
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			/* Ausgehende verbindung, SERVER und PASS wurden von uns bereits
 | 
			
		||||
			 * an die Gegenseite uerbermittelt */
 | 
			
		||||
			Client_SetToken( Client, atoi( Req->argv[1] ));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		Log( LOG_NOTICE|LOG_snotice, "Server \"%s\" registered (connection %d, 1 hop - direct link).", Client_ID( Client ), Client_Conn( Client ));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: messages.h,v 1.37 2002/03/12 22:08:24 alex Exp $
 | 
			
		||||
 * $Id: messages.h,v 1.37.2.1 2002/04/29 14:11:23 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * irc.h: IRC-Befehle (Header)
 | 
			
		||||
 */
 | 
			
		||||
@@ -95,6 +95,12 @@
 | 
			
		||||
#define RPL_WHOISCHANNELS		"319"
 | 
			
		||||
#define RPL_WHOISCHANNELS_MSG		RPL_WHOISCHANNELS" %s %s :"
 | 
			
		||||
 | 
			
		||||
#define RPL_LIST			"322"
 | 
			
		||||
#define RPL_LIST_MSG			RPL_LIST" %s %s %d :%s"
 | 
			
		||||
 | 
			
		||||
#define RPL_LISTEND			"323"
 | 
			
		||||
#define RPL_LISTEND_MSG			RPL_LISTEND" %s :End of LIST"
 | 
			
		||||
 | 
			
		||||
#define RPL_CHANNELMODEIS		"324"
 | 
			
		||||
#define RPL_CHANNELMODEIS_MSG		RPL_CHANNELMODEIS" %s %s +%s"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: ngircd.c,v 1.41 2002/03/31 13:20:42 alex Exp $
 | 
			
		||||
 * $Id: ngircd.c,v 1.41.2.2 2002/04/08 18:07:42 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * ngircd.c: Hier beginnt alles ;-)
 | 
			
		||||
 */
 | 
			
		||||
@@ -21,6 +21,7 @@
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <signal.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
@@ -435,7 +436,8 @@ LOCAL VOID Initialize_Listen_Ports( VOID )
 | 
			
		||||
LOCAL VOID Show_Version( VOID )
 | 
			
		||||
{
 | 
			
		||||
	puts( NGIRCd_Version( ));
 | 
			
		||||
	puts( "Copyright (c)2001,2002 by Alexander Barton (alex@barton.de).\n" );
 | 
			
		||||
	puts( "Copyright (c)2001,2002 by Alexander Barton (<alex@barton.de>)." );
 | 
			
		||||
	puts( "Homepage: <http://arthur.ath.cx/~alex/ngircd/>\n" );
 | 
			
		||||
	puts( "This is free software; see the source for copying conditions. There is NO" );
 | 
			
		||||
	puts( "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." );
 | 
			
		||||
} /* Show_Version */
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 | 
			
		||||
 * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: parse.c,v 1.31 2002/03/25 17:13:46 alex Exp $
 | 
			
		||||
 * $Id: parse.c,v 1.31.2.1 2002/04/29 14:11:23 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * parse.c: Parsen der Client-Anfragen
 | 
			
		||||
 */
 | 
			
		||||
@@ -292,6 +292,7 @@ LOCAL BOOLEAN Handle_Request( CONN_ID Idx, REQUEST *Req )
 | 
			
		||||
	else if( strcasecmp( Req->command, "AWAY" ) == 0 ) return IRC_AWAY( client, Req );
 | 
			
		||||
	else if( strcasecmp( Req->command, "TOPIC" ) == 0 ) return IRC_TOPIC( client, Req );
 | 
			
		||||
	else if( strcasecmp( Req->command, "WHO" ) == 0 ) return IRC_WHO( client, Req );
 | 
			
		||||
	else if( strcasecmp( Req->command, "LIST" ) == 0 ) return IRC_LIST( client, Req );
 | 
			
		||||
	
 | 
			
		||||
	/* Unbekannter Befehl */
 | 
			
		||||
	if( Client_Type( client ) != CLIENT_SERVER ) IRC_WriteStrClient( client, ERR_UNKNOWNCOMMAND_MSG, Client_ID( client ), Req->command );
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user