From: Alexander Barton Date: Tue, 3 Sep 2002 20:39:54 +0000 (+0000) Subject: - Anpassungen/Umstellung auf IRC+-Protokoll. X-Git-Tag: rel-0-5-0-pre1~67 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=commitdiff_plain;h=ad1cbe34b4213214dfa5f68ccec9d5264b5c91a0 - Anpassungen/Umstellung auf IRC+-Protokoll. --- diff --git a/src/ngircd/defines.h b/src/ngircd/defines.h index afe4cb58..fb6c5da8 100644 --- a/src/ngircd/defines.h +++ b/src/ngircd/defines.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: defines.h,v 1.30 2002/09/03 18:53:38 alex Exp $ + * $Id: defines.h,v 1.31 2002/09/03 20:39:54 alex Exp $ * * defines.h: (globale) Konstanten */ @@ -57,7 +57,7 @@ #define WRITEBUFFER_LEN 4096 /* Laenge des Schreibpuffers je Verbindung (Bytes) */ #define PROTOVER "0210" /* implementierte Protokoll-Version (RFC 2813, 4.1.1) */ -#define PROTOSUFFIX "-ngIRCd" /* Protokoll-Suffix (RFC 2813, 4.1.1) */ +#define PROTOIRCPLUS "-IRC+" /* Protokoll-Suffix (RFC 2813, 4.1.1) */ #define STARTUP_DELAY 1 /* Erst n Sek. nach Start zu anderen Servern verbinden */ #define RECONNECT_DELAY 3 /* Server-Links erst nach 3 Sekunden versuchen, wieder aufzubauen */ diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c index 594ddcc3..dcfa2d72 100644 --- a/src/ngircd/irc-login.c +++ b/src/ngircd/irc-login.c @@ -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.18 2002/09/03 18:55:03 alex Exp $ + * $Id: irc-login.c,v 1.19 2002/09/03 20:39:54 alex Exp $ * * irc-login.c: Anmeldung und Abmeldung im IRC */ @@ -65,7 +65,7 @@ IRC_PASS( CLIENT *Client, REQUEST *Req ) } else if((( Client_Type( Client ) == CLIENT_UNKNOWN ) || ( Client_Type( Client ) == CLIENT_UNKNOWNSERVER )) && (( Req->argc == 3 ) || ( Req->argc == 4 ))) { - CHAR *impl, *serverver, *flags, *ptr; + CHAR c, *type, *impl, *serverver, *flags, *ptr; INT protohigh, protolow; /* noch nicht registrierte Server-Verbindung */ @@ -74,24 +74,33 @@ IRC_PASS( CLIENT *Client, REQUEST *Req ) /* Passwort speichern */ Client_SetPassword( Client, Req->argv[0] ); - /* Protokollversion ueberpruefen */ - if( strlen( Req->argv[1] ) > 4 ) Req->argv[1][4] = '\0'; - if( strlen( Req->argv[1] ) != 4 ) protohigh = protolow = 0; - else + /* Protokollversion ermitteln */ + if( strlen( Req->argv[1] ) >= 4 ) { + c = Req->argv[1][4]; + Req->argv[1][4] = '\0'; + protolow = atoi( &Req->argv[1][2] ); Req->argv[1][2] = '\0'; protohigh = atoi( Req->argv[1] ); - } + + Req->argv[1][4] = c; + } + else protohigh = protolow = 0; + + /* Protokoll-Typ */ + if( strlen( Req->argv[1] ) > 4 ) type = &Req->argv[1][4]; + else type = NULL; /* Implementation, Version und ngIRCd-Flags */ impl = Req->argv[2]; ptr = strchr( impl, '|' ); if( ptr ) *ptr = '\0'; - if( strcmp( impl, PACKAGE ) == 0 ) + if( type && ( strcmp( type, PROTOIRCPLUS ) == 0 )) { - /* auf der anderen Seite laeuft auch ein ngIRCd */ + /* auf der anderen Seite laeuft ein Server, der + * ebenfalls das IRC+-Protokoll versteht */ serverver = ptr + 1; flags = strchr( serverver, ':' ); if( flags ) @@ -100,12 +109,12 @@ IRC_PASS( CLIENT *Client, REQUEST *Req ) flags++; } else flags = ""; - Log( LOG_INFO, "Connection %d: Peer announces itself as %s-%s (flags: \"%s\") using protocol version %d.%d.", Client_Conn( Client ), impl, serverver, flags, protohigh, protolow ); + Log( LOG_INFO, "Connection %d: Peer announces itself as %s-%s (flags: \"%s\") using protocol version %d.%d+.", Client_Conn( Client ), impl, serverver, flags, protohigh, protolow ); } else { serverver = flags = ""; - Log( LOG_INFO, "Connection %d: Peer announces itself as server of type \"%s\" usinf protocol version %d.%d.", Client_Conn( Client ), impl, protohigh, protolow ); + Log( LOG_INFO, "Connection %d: Peer announces itself as \"%s\" using protocol version %d.%d.", Client_Conn( Client ), impl, protohigh, protolow ); } Client_SetType( Client, CLIENT_GOTPASSSERVER ); diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index ace97f34..96ac6ff1 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -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.51 2002/09/02 21:06:11 alex Exp $ + * $Id: ngircd.c,v 1.52 2002/09/03 20:39:54 alex Exp $ * * ngircd.c: Hier beginnt alles ;-) */ @@ -285,7 +285,7 @@ main( int argc, const char *argv[] ) /* Protokoll- und Server-Identifikation erzeugen. Die vom ngIRCd * beim PASS-Befehl verwendete Syntax sowie die erweiterten Flags * sind in doc/Protocol.txt beschrieben. */ - sprintf( NGIRCd_ProtoID, "%s%s %s|%s:", PROTOVER, PROTOSUFFIX, PACKAGE, VERSION ); + sprintf( NGIRCd_ProtoID, "%s%s %s|%s:", PROTOVER, PROTOIRCPLUS, PACKAGE, VERSION ); if( Conf_OperCanMode ) strcat( NGIRCd_ProtoID, "o" ); strcat( NGIRCd_ProtoID, " P" ); Log( LOG_DEBUG, "Protocol and server ID is \"%s\".", NGIRCd_ProtoID );