Commit Diff
Diff:
ed406b4a930a330444c693d648f469537453a3d3
07903baa61944ecaa5b0ba7571e2a247a460a7c7
Commit:
07903baa61944ecaa5b0ba7571e2a247a460a7c7
Tree:
9e132b71c3b9a43a96fa90c5b3383287edffab1c
Author:
Alexander Barton <alex@barton.de>
Committer:
Alexander Barton <alex@barton.de>
Date:
Thu Jan 3 02:28:06 2002 UTC
Message:
- neue Funktion Client_CheckID(), diverse Aenderungen fuer Server-Links.
blob - 41b4731d7430dbbe568484f9b25b596a87670ef4
blob + 9955f785665baacf2e99ce8c2d30f4e1fd6f597c
--- src/ngircd/client.c
+++ 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
} /* 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
blob - c7f49a4353f4b719102fe866ff326a1486bd9b64
blob + 225d0067c7d0db8efe174d0f28a98c4c86293fab
--- src/ngircd/client.h
+++ 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 );
IRCNow