* 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
*/
#include <string.h>
#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 );
} /* 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;
} /* IRC_NICK */
-GLOBAL BOOLEAN IRC_USER( CLIENT *Client, REQUEST *Req )
+GLOBAL BOOLEAN
+IRC_USER( CLIENT *Client, REQUEST *Req )
{
assert( Client != NULL );
assert( Req != NULL );
} /* 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 */
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;
} /* IRC_PING */
-GLOBAL BOOLEAN IRC_PONG( CLIENT *Client, REQUEST *Req )
+GLOBAL BOOLEAN
+IRC_PONG( CLIENT *Client, REQUEST *Req )
{
CLIENT *target, *from;
} /* IRC_PONG */
-LOCAL BOOLEAN Hello_User( CLIENT *Client )
+LOCAL BOOLEAN
+Hello_User( CLIENT *Client )
{
assert( Client != NULL );
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 );
} /* Hello_User */
-LOCAL VOID Kill_Nick( CHAR *Nick, CHAR *Reason )
+LOCAL VOID
+Kill_Nick( CHAR *Nick, CHAR *Reason )
{
CLIENT *c;