added session manager and support for an external login system
[TransparentIRC.git] / src / UserClient.h
index 6b95ea1f99336ff2d13d0cb9c0d5b70357fe78a5..bde600145e9fd4cc1c5aea87c33d973cafe85813 100644 (file)
 
 struct IODescriptor;
 struct ServerSocket;
-//struct UserSession;
+struct UserSession;
+
+#define USERCLIENT_LOGIN_PROCESSING 0x01
+#define USERCLIENT_LOGGED_IN        0x02
+
+struct UserLogin {
+    struct UserClient *client;
+    char *username;
+    char *password;
+    char *nick;
+    
+    int login_accepted : 1;
+    char *reject_reason;
+    
+    char *session_class;
+    
+    struct IODescriptor *login_iofd;
+};
 
 struct UserClient {
     struct IODescriptor *iofd;
     struct ServerSocket *server;
     
-    //struct UserSession *user;
+    int flags;
+    void *user; /* struct UserSession / struct UserLogin */
+    
+    char *username;
+    char *password;
+    char *nick;
     
     struct UserClient *next, *prev;
 };
@@ -35,5 +57,7 @@ struct UserClient {
 void userclient_accepted(struct ServerSocket *server, int sockfd);
 void userclient_close(struct UserClient *client);
 void userclient_close_server(struct ServerSocket *server, int keep_clients);
+void userclient_login_failed(struct UserLogin *login, char *reason);
+void userclient_login_successful(struct UserLogin *login, struct UserSession *session, int recover);
 
 #endif