From: Alexander Barton Date: Thu, 3 Jan 2002 02:28:06 +0000 (+0000) Subject: - neue Funktion Client_CheckID(), diverse Aenderungen fuer Server-Links. X-Git-Tag: rel-0-0-2~34 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=commitdiff_plain;h=07903baa61944ecaa5b0ba7571e2a247a460a7c7 - neue Funktion Client_CheckID(), diverse Aenderungen fuer Server-Links. --- diff --git a/src/ngircd/client.c b/src/ngircd/client.c index 41b4731d..9955f785 100644 --- a/src/ngircd/client.c +++ b/src/ngircd/client.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: client.c,v 1.17 2002/01/02 02:42:58 alex Exp $ + * $Id: client.c,v 1.18 2002/01/03 02:28:06 alex Exp $ * * client.c: Management aller Clients * @@ -21,6 +21,9 @@ * Server gewesen, so existiert eine entsprechende CONNECTION-Struktur. * * $Log: client.c,v $ + * Revision 1.18 2002/01/03 02:28:06 alex + * - neue Funktion Client_CheckID(), diverse Aenderungen fuer Server-Links. + * * Revision 1.17 2002/01/02 02:42:58 alex * - Copyright-Texte aktualisiert. * @@ -298,6 +301,39 @@ GLOBAL BOOLEAN Client_CheckNick( CLIENT *Client, CHAR *Nick ) } /* Client_CheckNick */ +GLOBAL BOOLEAN Client_CheckID( CLIENT *Client, CHAR *ID ) +{ + /* Nick ueberpruefen */ + + CHAR str[COMMAND_LEN]; + CLIENT *c; + + assert( Client != NULL ); + assert( Client->conn_id > NONE ); + assert( ID != NULL ); + + /* Nick zu lang? */ + if( strlen( ID ) > CLIENT_ID_LEN ) return IRC_WriteStrClient( Client, This_Server, ERR_ERRONEUSNICKNAME_MSG, Client_Nick( Client ), ID ); + + /* ID bereits vergeben? */ + c = My_Clients; + while( c ) + { + if( strcasecmp( c->nick, ID ) == 0 ) + { + /* die Server-ID gibt es bereits */ + sprintf( str, "ID \"%s\" already registered!", ID ); + Log( LOG_ALERT, "%s (detected on connection %d)", str, Client->conn_id ); + Conn_Close( Client->conn_id, str ); + return FALSE; + } + c = c->next; + } + + return TRUE; +} /* Client_CheckID */ + + GLOBAL CHAR *Client_GetID( CLIENT *Client ) { /* Client-"ID" liefern, wie sie z.B. fuer diff --git a/src/ngircd/client.h b/src/ngircd/client.h index c7f49a43..225d0067 100644 --- a/src/ngircd/client.h +++ b/src/ngircd/client.h @@ -9,11 +9,14 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: client.h,v 1.12 2002/01/02 02:42:58 alex Exp $ + * $Id: client.h,v 1.13 2002/01/03 02:28:06 alex Exp $ * * client.h: Konfiguration des ngircd (Header) * * $Log: client.h,v $ + * Revision 1.13 2002/01/03 02:28:06 alex + * - neue Funktion Client_CheckID(), diverse Aenderungen fuer Server-Links. + * * Revision 1.12 2002/01/02 02:42:58 alex * - Copyright-Texte aktualisiert. * @@ -70,6 +73,8 @@ typedef enum CLIENT_GOTNICK, /* Client hat NICK gesendet */ CLIENT_GOTUSER, /* Client hat USER gesendet */ CLIENT_USER, /* Client ist ein Benutzer (USER wurde gesendet) */ + CLIENT_UNKNOWNSERVER, /* unregistrierte Server-Verbindung */ + CLIENT_GOTPASSSERVER, /* Client hat PASS nach "Server-Art" gesendet */ CLIENT_SERVER, /* Client ist ein Server */ CLIENT_SERVICE /* Client ist ein Service */ } CLIENT_TYPE; @@ -101,12 +106,18 @@ GLOBAL VOID Client_Exit( VOID ); GLOBAL CLIENT *Client_NewLocal( CONN_ID Idx, CHAR *Hostname ); GLOBAL VOID Client_Destroy( CLIENT *Client ); + GLOBAL VOID Client_SetHostname( CLIENT *Client, CHAR *Hostname ); + GLOBAL CLIENT *Client_GetFromConn( CONN_ID Idx ); GLOBAL CLIENT *Client_GetFromNick( CHAR *Nick ); + GLOBAL CHAR *Client_Nick( CLIENT *Client ); -GLOBAL BOOLEAN Client_CheckNick( CLIENT *Client, CHAR *Nick ); GLOBAL CHAR *Client_GetID( CLIENT *Client ); + +GLOBAL BOOLEAN Client_CheckNick( CLIENT *Client, CHAR *Nick ); +GLOBAL BOOLEAN Client_CheckID( CLIENT *Client, CHAR *ID ); + GLOBAL CLIENT *Client_Search( CHAR *ID ); GLOBAL CLIENT *Client_First( VOID ); GLOBAL CLIENT *Client_Next( CLIENT *c );