added SSL backend for IOMultiplexer
[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     char *realname;
35     
36     int login_accepted : 1;
37     char *reject_reason;
38     
39     char *session_class;
40     char *bind_address;
41     char *server_address;
42     int server_override_port : 1;
43     int server_port : 17;
44     int server_ssl : 1;
45     
46     struct IODescriptor *login_iofd;
47 };
48
49 struct UserClient {
50     struct IODescriptor *iofd;
51     struct ServerSocket *server;
52     
53     int flags;
54     void *user; /* struct UserSession / struct UserLogin */
55     
56     char *username;
57     char *password;
58     char *nick;
59     
60     struct UserClient *next, *prev;
61 };
62
63 void userclient_accepted(struct ServerSocket *server, int sockfd);
64 void userclient_close(struct UserClient *client);
65 void userclient_close_server(struct ServerSocket *server, int keep_clients);
66 void userclient_login_failed(struct UserLogin *login, char *reason);
67 void userclient_login_successful(struct UserLogin *login, struct UserSession *session, int recover);
68
69 #endif