X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Firc-login.c;h=b8528084e0cc8df388c16a3af795915e3808d04f;hp=93998f5937874c0c7322afb0262d331d678ac9f3;hb=f7567db01f1a9b1e0f0dbef0ee28438c8ece7892;hpb=5b4e9152addb4dd8bb41297f70859d6bd776b2f6 diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c index 93998f59..b8528084 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.12 2002/04/08 16:37:50 alex Exp $ + * $Id: irc-login.c,v 1.15 2002/05/30 16:52:21 alex Exp $ * * irc-login.c: Anmeldung und Abmeldung im IRC */ @@ -24,21 +24,27 @@ #include #include "ngircd.h" +#include "resolve.h" #include "conf.h" -#include "irc.h" -#include "irc-write.h" +#include "conn.h" +#include "client.h" +#include "channel.h" #include "log.h" #include "messages.h" +#include "parse.h" +#include "irc.h" +#include "irc-write.h" #include "exp.h" #include "irc-login.h" -LOCAL BOOLEAN Hello_User( CLIENT *Client ); -LOCAL VOID Kill_Nick( CHAR *Nick, CHAR *Reason ); +LOCAL BOOLEAN Hello_User PARAMS(( CLIENT *Client )); +LOCAL VOID Kill_Nick PARAMS(( CHAR *Nick, CHAR *Reason )); -GLOBAL BOOLEAN IRC_PASS( CLIENT *Client, REQUEST *Req ) +GLOBAL BOOLEAN +IRC_PASS( CLIENT *Client, REQUEST *Req ) { assert( Client != NULL ); assert( Req != NULL ); @@ -77,7 +83,8 @@ GLOBAL BOOLEAN IRC_PASS( CLIENT *Client, REQUEST *Req ) } /* IRC_PASS */ -GLOBAL BOOLEAN IRC_NICK( CLIENT *Client, REQUEST *Req ) +GLOBAL BOOLEAN +IRC_NICK( CLIENT *Client, REQUEST *Req ) { CLIENT *intr_c, *target, *c; CHAR *modes; @@ -215,7 +222,8 @@ GLOBAL BOOLEAN IRC_NICK( CLIENT *Client, REQUEST *Req ) } /* IRC_NICK */ -GLOBAL BOOLEAN IRC_USER( CLIENT *Client, REQUEST *Req ) +GLOBAL BOOLEAN +IRC_USER( CLIENT *Client, REQUEST *Req ) { assert( Client != NULL ); assert( Req != NULL ); @@ -245,26 +253,15 @@ GLOBAL BOOLEAN IRC_USER( CLIENT *Client, REQUEST *Req ) } /* IRC_USER */ -GLOBAL BOOLEAN IRC_QUIT( CLIENT *Client, REQUEST *Req ) +GLOBAL BOOLEAN +IRC_QUIT( CLIENT *Client, REQUEST *Req ) { CLIENT *target; assert( Client != NULL ); assert( Req != NULL ); - if(( Client_Type( Client ) == CLIENT_USER ) || ( Client_Type( Client ) == CLIENT_SERVICE )) - { - /* User / Service */ - - /* Falsche Anzahl Parameter? */ - if( Req->argc > 1 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command ); - - if( Req->argc == 0 ) Conn_Close( Client_Conn( Client ), "Got QUIT command.", NULL, TRUE ); - else Conn_Close( Client_Conn( Client ), "Got QUIT command.", Req->argv[0], TRUE ); - - return DISCONNECTED; - } - else if ( Client_Type( Client ) == CLIENT_SERVER ) + if ( Client_Type( Client ) == CLIENT_SERVER ) { /* Server */ @@ -284,11 +281,23 @@ GLOBAL BOOLEAN IRC_QUIT( CLIENT *Client, REQUEST *Req ) return CONNECTED; } - else return IRC_WriteStrClient( Client, ERR_NOTREGISTERED_MSG, Client_ID( Client )); + else + { + /* User, Service, oder noch nicht registriert */ + + /* Falsche Anzahl Parameter? */ + if( Req->argc > 1 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command ); + + if( Req->argc == 0 ) Conn_Close( Client_Conn( Client ), "Got QUIT command.", NULL, TRUE ); + else Conn_Close( Client_Conn( Client ), "Got QUIT command.", Req->argv[0], TRUE ); + + return DISCONNECTED; + } } /* IRC_QUIT */ -GLOBAL BOOLEAN IRC_PING( CLIENT *Client, REQUEST *Req ) +GLOBAL BOOLEAN +IRC_PING( CLIENT *Client, REQUEST *Req ) { CLIENT *target, *from; @@ -323,7 +332,8 @@ GLOBAL BOOLEAN IRC_PING( CLIENT *Client, REQUEST *Req ) } /* IRC_PING */ -GLOBAL BOOLEAN IRC_PONG( CLIENT *Client, REQUEST *Req ) +GLOBAL BOOLEAN +IRC_PONG( CLIENT *Client, REQUEST *Req ) { CLIENT *target, *from; @@ -361,7 +371,8 @@ GLOBAL BOOLEAN IRC_PONG( CLIENT *Client, REQUEST *Req ) } /* IRC_PONG */ -LOCAL BOOLEAN Hello_User( CLIENT *Client ) +LOCAL BOOLEAN +Hello_User( CLIENT *Client ) { assert( Client != NULL ); @@ -380,9 +391,9 @@ LOCAL BOOLEAN Hello_User( CLIENT *Client ) IRC_WriteStrServers( NULL, "NICK %s 1 %s %s 1 +%s :%s", Client_ID( Client ), Client_User( Client ), Client_Hostname( Client ), Client_Modes( Client ), Client_Info( Client )); if( ! IRC_WriteStrClient( Client, RPL_WELCOME_MSG, Client_ID( Client ), Client_Mask( Client ))) return FALSE; - if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )))) return FALSE; + if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), VERSION, TARGET_CPU, TARGET_CPU, TARGET_OS )) return FALSE; if( ! IRC_WriteStrClient( Client, RPL_CREATED_MSG, Client_ID( Client ), NGIRCd_StartStr )) return FALSE; - if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )))) return FALSE; + if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), VERSION, USERMODES, CHANMODES )) return FALSE; Client_SetType( Client, CLIENT_USER ); @@ -393,7 +404,8 @@ LOCAL BOOLEAN Hello_User( CLIENT *Client ) } /* Hello_User */ -LOCAL VOID Kill_Nick( CHAR *Nick, CHAR *Reason ) +LOCAL VOID +Kill_Nick( CHAR *Nick, CHAR *Reason ) { CLIENT *c;