mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-10-25 11:07:38 +00:00 
			
		
		
		
	Compare commits
	
		
			15 Commits
		
	
	
		
			branch-0-1
			...
			rel-0-4-3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | a0318e8d0b | ||
|   | d0084cfae2 | ||
|   | 880d35f82b | ||
|   | 83e49bf74b | ||
|   | b6f53b6f82 | ||
|   | ab52d2b818 | ||
|   | aaf42ae77b | ||
|   | fa30f2a0d2 | ||
|   | 1fa46bedbe | ||
|   | d772acf9d6 | ||
|   | 15f380592d | ||
|   | 54b9381dd0 | ||
|   | 889b7ef48f | ||
|   | 31c8078706 | ||
|   | 34eb2528d0 | 
							
								
								
									
										38
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -10,12 +10,36 @@ | ||||
|                         -- ChangeLog / Aenderungen -- | ||||
|  | ||||
|  | ||||
| ngIRCd 0.3.x, ??.??.2002 | ||||
| ngIRCd 0.4.3, 11.06.2002 | ||||
|  | ||||
|   - Bei PRIVMSG und NOTICE hat der ngIRCd nicht ueberpruft, ob das Ziel | ||||
|     ueberhaupt ein User ist. War es keiner, so fuehrte dies zu einem | ||||
|     Abbruch des Servers [es wurde assert() aufgerufen]. | ||||
|  | ||||
| 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 +47,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 +54,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 +198,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.6 2002/06/11 20:29:44 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.5 2002/06/11 20:29:44 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.3) | ||||
| 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: irc.c,v 1.89 2002/03/25 17:04:02 alex Exp $ | ||||
|  * $Id: irc.c,v 1.89.2.1 2002/06/11 17:52:23 alex Exp $ | ||||
|  * | ||||
|  * irc.c: IRC-Befehle | ||||
|  */ | ||||
| @@ -74,6 +74,9 @@ GLOBAL BOOLEAN IRC_PRIVMSG( CLIENT *Client, REQUEST *Req ) | ||||
| 	cl = Client_Search( Req->argv[0] ); | ||||
| 	if( cl ) | ||||
| 	{ | ||||
| 		/* Okay, Ziel ist ein Client. Aber ist es auch ein User? */ | ||||
| 		if( Client_Type( cl ) != CLIENT_USER ) return IRC_WriteStrClient( from, ERR_NOSUCHNICK_MSG, Client_ID( from ), Req->argv[0] ); | ||||
|  | ||||
| 		/* Okay, Ziel ist ein User */ | ||||
| 		if(( Client_Type( Client ) != CLIENT_SERVER ) && ( strchr( Client_Modes( cl ), 'a' ))) | ||||
| 		{ | ||||
| @@ -110,7 +113,7 @@ GLOBAL BOOLEAN IRC_NOTICE( CLIENT *Client, REQUEST *Req ) | ||||
| 	if( ! from ) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->prefix ); | ||||
|  | ||||
| 	to = Client_Search( Req->argv[0] ); | ||||
| 	if( to ) | ||||
| 	if(( to ) && ( Client_Type( to ) == CLIENT_USER )) | ||||
| 	{ | ||||
| 		/* Okay, Ziel ist ein User */ | ||||
| 		return IRC_WriteStrClientPrefix( to, from, "NOTICE %s :%s", Client_ID( to ), Req->argv[1] ); | ||||
|   | ||||
| @@ -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