X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fngircd%2Firc-login.c;h=93998f5937874c0c7322afb0262d331d678ac9f3;hb=5b4e9152addb4dd8bb41297f70859d6bd776b2f6;hp=9d1c96df2041281fd9f91eecc21c5a26744ce2cf;hpb=50ec7a56a4e75dad25b20fdb904545143ac19ff3;p=ngircd-alex.git diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c index 9d1c96df..93998f59 100644 --- a/src/ngircd/irc-login.c +++ b/src/ngircd/irc-login.c @@ -9,37 +9,15 @@ * 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.6 2002/03/11 22:04:10 alex Exp $ + * $Id: irc-login.c,v 1.12 2002/04/08 16:37:50 alex Exp $ * * irc-login.c: Anmeldung und Abmeldung im IRC - * - * $Log: irc-login.c,v $ - * Revision 1.6 2002/03/11 22:04:10 alex - * - Client_Destroy() hat neuen Paramter: QUITs fuer Clients verschicken? - * - * Revision 1.5 2002/03/11 17:33:40 alex - * - Log-Level von SQUIT und QUIT bei unbekannten Clients auf DEBUG herabgesetzt. - * - * Revision 1.4 2002/03/10 22:40:22 alex - * - IRC_PING() ist, wenn nicht im "strict RFC"-Mode, toleranter und akzptiert - * beliebig viele Parameter: z.B. BitchX sendet soetwas. - * - * Revision 1.3 2002/03/03 17:15:11 alex - * - Source in weitere Module fuer IRC-Befehle aufgesplitted. - * - * Revision 1.2 2002/03/02 00:49:11 alex - * - Bei der USER-Registrierung wird NICK nicht mehr sofort geforwarded, - * sondern erst dann, wenn auch ein gueltiges USER empfangen wurde. - * - * Revision 1.1 2002/02/27 23:26:21 alex - * - Modul aus irc.c bzw. irc.h ausgegliedert. */ -#include -#include "global.h" +#include "portab.h" -#include +#include "imp.h" #include #include #include @@ -52,7 +30,7 @@ #include "log.h" #include "messages.h" -#include +#include "exp.h" #include "irc-login.h" @@ -122,7 +100,7 @@ GLOBAL BOOLEAN IRC_NICK( CLIENT *Client, REQUEST *Req ) /* "Ziel-Client" ermitteln */ if( Client_Type( Client ) == CLIENT_SERVER ) { - target = Client_GetFromID( Req->prefix ); + target = Client_Search( Req->prefix ); if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->argv[0] ); } else @@ -138,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 :-) */ @@ -162,7 +140,16 @@ GLOBAL BOOLEAN IRC_NICK( CLIENT *Client, REQUEST *Req ) else { /* Nick-Aenderung */ - Log( LOG_INFO, "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] ); @@ -183,7 +170,7 @@ GLOBAL BOOLEAN IRC_NICK( CLIENT *Client, REQUEST *Req ) if( Req->argc != 7 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command ); /* Nick ueberpruefen */ - c = Client_GetFromID( Req->argv[0] ); + c = Client_Search( Req->argv[0] ); if( c ) { /* Der neue Nick ist auf diesem Server bereits registriert: @@ -288,7 +275,7 @@ GLOBAL BOOLEAN IRC_QUIT( CLIENT *Client, REQUEST *Req ) if( ! target ) { /* Den Client kennen wir nicht (mehr), also nichts zu tun. */ - Log( LOG_DEBUG, "Got QUIT from %s for unknown client!?", Client_ID( Client )); + Log( LOG_WARNING, "Got QUIT from %s for unknown client!?", Client_ID( Client )); return CONNECTED; } @@ -319,12 +306,12 @@ GLOBAL BOOLEAN IRC_PING( CLIENT *Client, REQUEST *Req ) if( Req->argc > 1 ) { /* es wurde ein Ziel-Client angegeben */ - target = Client_GetFromID( Req->argv[1] ); + target = Client_Search( Req->argv[1] ); if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[1] ); if( target != Client_ThisServer( )) { /* ok, forwarden */ - if( Client_Type( Client ) == CLIENT_SERVER ) from = Client_GetFromID( Req->prefix ); + if( Client_Type( Client ) == CLIENT_SERVER ) from = Client_Search( Req->prefix ); else from = Client; if( ! from ) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->prefix ); return IRC_WriteStrClientPrefix( target, from, "PING %s :%s", Client_ID( from ), Req->argv[1] ); @@ -352,12 +339,12 @@ GLOBAL BOOLEAN IRC_PONG( CLIENT *Client, REQUEST *Req ) /* forwarden? */ if( Req->argc == 2 ) { - target = Client_GetFromID( Req->argv[1] ); + target = Client_Search( Req->argv[1] ); if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[1] ); if( target != Client_ThisServer( )) { /* ok, forwarden */ - if( Client_Type( Client ) == CLIENT_SERVER ) from = Client_GetFromID( Req->prefix ); + if( Client_Type( Client ) == CLIENT_SERVER ) from = Client_Search( Req->prefix ); else from = Client; if( ! from ) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->prefix ); return IRC_WriteStrClientPrefix( target, from, "PONG %s :%s", Client_ID( from ), Req->argv[1] ); @@ -365,7 +352,7 @@ GLOBAL BOOLEAN IRC_PONG( CLIENT *Client, REQUEST *Req ) } /* Der Connection-Timestamp wurde schon beim Lesen aus dem Socket - * aktualisiert, daher muss das hier nicht mehr gemacht werden. */ + * aktualisiert, daher muss das hier nicht mehr gemacht werden. */ if( Client_Conn( Client ) > NONE ) Log( LOG_DEBUG, "Connection %d: received PONG. Lag: %ld seconds.", Client_Conn( Client ), time( NULL ) - Conn_LastPing( Client_Conn( Client ))); else Log( LOG_DEBUG, "Connection %d: received PONG.", Client_Conn( Client )); @@ -419,7 +406,7 @@ LOCAL VOID Kill_Nick( CHAR *Nick, CHAR *Reason ) IRC_WriteStrServers( NULL, "KILL %s :%s", Nick, Reason ); /* Ggf. einen eigenen Client toeten */ - c = Client_GetFromID( Nick ); + c = Client_Search( Nick ); if( c && ( Client_Conn( c ) != NONE )) Conn_Close( Client_Conn( c ), NULL, Reason, TRUE ); } /* Kill_Nick */