summaryrefslogtreecommitdiff
path: root/src/activefor.h
blob: 8d07c8b324a4a09d4ee74cb23d3da4c87788bcf7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*
 * active port forwarder - software for secure forwarding
 * Copyright (C) 2003,2004,2005 jeremian <jeremian [at] poczta.fm>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 *
 */

#ifndef _JS_ACTIVEFOR_H
#define _JS_ACTIVEFOR_H

#include "network.h"
#include "buflist.h"

#define AF_S_CONCLOSED	  1
#define	AF_S_CONOPEN	    2
#define AF_S_MESSAGE	    3
#define AF_S_CLOSING	    4
#define AF_S_LOGIN	      8
#define AF_S_DONT_SEND	  9
#define AF_S_CAN_SEND	   10
#define AF_S_CANT_OPEN	 12

#define AF_S_WRONG       13
#define AF_S_ADMIN_LOGIN 14
#define AF_S_ADMIN_CMD   15

#define S_STATE_CLEAR	    0
#define S_STATE_CLOSING	  5
#define	S_STATE_OPENING	  6
#define S_STATE_OPEN	    7
#define S_STATE_STOPPED	 11

#define	AF_VER(info)	info" v0.6"

#define TYPE_TCP	1
#define TYPE_UDP	3
#define TYPE_SSL	4
#define TYPE_ZLIB	8
#define TYPE_IPV4	16
#define TYPE_IPV6	32
#define TYPE_COMP	0x4000

#define TYPE_SET_ZERO(type)	(type=0)
#define TYPE_IS_SET(type)       (type&1)
#define TYPE_IS_UDP(type)       TYPE_IS_SET(type)&&(type&2)
#define TYPE_IS_TCP(type)       TYPE_IS_SET(type)&&(!(type&2))
#define TYPE_SET_UDP(type)	(type|=TYPE_UDP)
#define TYPE_SET_TCP(type)	(type|=TYPE_TCP)
#define TYPE_SET_SSL(type)	(type|=TYPE_SSL)
#define TYPE_UNSET_SSL(type)	(type&=(~TYPE_SSL))
#define TYPE_IS_SSL(type)	(type&TYPE_SSL)
#define TYPE_SET_ZLIB(type)	(type|=TYPE_ZLIB)
#define TYPE_UNSET_ZLIB(type)	(type&=(~TYPE_ZLIB))
#define TYPE_IS_ZLIB(type)	(type&TYPE_ZLIB)

#define TYPE_SET_IPV4(type)	(type|=TYPE_IPV4)
#define TYPE_UNSET_IPV4(type)	(type&=(~TYPE_IPV4))
#define TYPE_IS_IPV4(type)	(type&TYPE_IPV4)
#define TYPE_SET_IPV6(type)	(type|=TYPE_IPV6)
#define TYPE_UNSET_IPV6(type)	(type&=(~TYPE_IPV6))
#define TYPE_IS_IPV6(type)	(type&TYPE_IPV6)
#define TYPE_SET_UNSPEC(type)	(type&=(~(TYPE_IPV4|TYPE_IPV6)))
#define TYPE_IS_UNSPEC(type)	(!(type&(TYPE_IPV4|TYPE_IPV6)))

#define TYPE_SET_COMP(type)	(type|=TYPE_COMP)
#define TYPE_IS_COMP(type)	(type&TYPE_COMP)

typedef struct {
  char* lisportnum;
  char* manportnum;
  int listenfd;
  int managefd;
} UsrCliT;

typedef struct {
	char state;
	int connfd;
  int whatcli;
  int userid;
  time_t connecttime;
	char namebuf[128];
	char portbuf[7];
	blnodeT* head;
} ConnectuserT;

typedef struct {
  char ready;
  clifd cliconn;
  struct timeval tv;
  int* users;
  int usercon;
  int usernum;
  int listenfd;
  int whatusrcli;
  int clientnum;
  time_t connecttime;
  char* clientid;
	char namebuf[128];
	char portbuf[7];
} ConnectclientT;

typedef struct {
  char* hostname;
  char* users;
  char* clients;
  char* raclients;
  char* usrpcli;
  char* clim;
  char* timeout;
  char* realmname;
  unsigned char pass[4];
  int usercon;
  int usernum;
  int clicon;
  int clinum;
  int raclicon;
  int raclinum;
  int upcnum;
  int tmout;
  int climode;
  int usrclinum;
  int clientcounter;
  int usercounter;
  char type;
  char dnslookups;
  char baseport;
  socklen_t addrlen;
  struct sockaddr* cliaddr;
  ConnectuserT* contable;
  ConnectclientT* clitable;
  ConnectclientT* raclitable;
  UsrCliT* usrclitable;
} RealmT;

typedef struct {
  char* certif;
  char* keys;
  char* logfnam;
  char* logsport;
  char* dateformat;
  char logging;
  char socklogging;
  int size;
  time_t starttime;
  RealmT* realmtable;
} ConfigurationT;

#endif