added session manager and support for an external login system
[TransparentIRC.git] / src / UserClient.h
1 /* UserClient.h - TransparentIRC 0.1
2  * Copyright (C) 2011-2012  Philipp Kreil (pk910)
3  * 
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * 
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  * 
14  * You should have received a copy of the GNU General Public License 
15  * along with this program. If not, see <http://www.gnu.org/licenses/>. 
16  */
17
18 #ifndef _UserClient_h
19 #define _UserClient_h
20 #include "overall.h"
21
22 struct IODescriptor;
23 struct ServerSocket;
24 struct UserSession;
25
26 #define USERCLIENT_LOGIN_PROCESSING 0x01
27 #define USERCLIENT_LOGGED_IN        0x02
28
29 struct UserLogin {
30     struct UserClient *client;
31     char *username;
32     char *password;
33     char *nick;
34     
35     int login_accepted : 1;
36     char *reject_reason;
37     
38     char *session_class;
39     
40     struct IODescriptor *login_iofd;
41 };
42
43 struct UserClient {
44     struct IODescriptor *iofd;
45     struct ServerSocket *server;
46     
47     int flags;
48     void *user; /* struct UserSession / struct UserLogin */
49     
50     char *username;
51     char *password;
52     char *nick;
53     
54     struct UserClient *next, *prev;
55 };
56
57 void userclient_accepted(struct ServerSocket *server, int sockfd);
58 void userclient_close(struct UserClient *client);
59 void userclient_close_server(struct ServerSocket *server, int keep_clients);
60 void userclient_login_failed(struct UserLogin *login, char *reason);
61 void userclient_login_successful(struct UserLogin *login, struct UserSession *session, int recover);
62
63 #endif