]>
jfr.im git - irc/quakenet/newserv.git/blob - proxyscan/proxyscan.h
5 #include "../nick/nick.h"
6 #include "../lib/splitline.h"
10 #define MAGICSTRING "NOTICE AUTH :*** Looking up your hostname\r\n"
11 #define MAGICSTRINGLENGTH 42
13 #define MAGICIRCSTRING ".quakenet.org 451 * :Register first.\r\n"
14 #define MAGICIRCSTRINGLENGTH 38
16 #define PSCAN_MAXSCANS 50
17 #define PSCAN_READBUFSIZE (MAGICSTRINGLENGTH * 2)
19 #define SSTATE_CONNECTING 0
20 #define SSTATE_SENTREQUEST 1
21 #define SSTATE_GOTRESPONSE 2
23 #define STYPE_SOCKS4 0
24 #define STYPE_SOCKS5 1
26 #define STYPE_WINGATE 3
28 #define STYPE_DIRECT 5 /* not sure what this is so I'm leaving it alone */
29 #define STYPE_DIRECT_IRC 6
31 #define SOUTCOME_INPROGRESS 0
32 #define SOUTCOME_OPEN 1
33 #define SOUTCOME_CLOSED 2
35 #define SCLASS_NORMAL 0
36 #define SCLASS_CHECK 1
37 #define SCLASS_PASS2 2
38 #define SCLASS_PASS3 3
39 #define SCLASS_PASS4 4
41 typedef struct scantype
{
47 typedef struct extrascan
{
50 struct extrascan
*next
;
51 struct extrascan
*nextbynode
;
54 typedef struct pendingscan
{
55 patricia_node_t
*node
;
60 struct pendingscan
*next
;
63 typedef struct foundproxy
{
66 struct foundproxy
*next
;
69 typedef struct cachehost
{
74 #if defined(PROXYSCAN_MAIL)
75 sstring
*lasthostmask
; /* Not saved to disk */
76 time_t lastconnect
; /* Not saved to disk */
78 struct cachehost
*next
;
83 patricia_node_t
*node
;
87 unsigned short outcome
;
91 char readbuf
[PSCAN_READBUFSIZE
];
96 #if defined(PROXYSCAN_MAIL)
97 extern unsigned int ps_mailip
;
98 extern unsigned int ps_mailport
;
99 extern sstring
*ps_mailname
;
100 extern int psm_mailerfd
;
103 extern int activescans
;
106 extern scantype thescans
[];
108 extern int ps_cache_ext
;
109 extern int ps_scan_ext
;
110 extern int ps_extscan_ext
;
112 extern int rescaninterval
;
114 extern unsigned int normalqueuedscans
;
115 extern unsigned int prioqueuedscans
;
117 extern unsigned int ps_start_ts
;
119 extern unsigned long countpendingscan
;
121 extern unsigned long scanspermin
;
123 /* proxyscancache.c */
124 cachehost
*addcleanhost(time_t timestamp
);
125 cachehost
*findcachehost(patricia_node_t
*node
);
126 void delcachehost(cachehost
*);
127 void dumpcachehosts();
128 void loadcachehosts();
129 unsigned int cleancount();
130 unsigned int dirtycount();
131 void cachehostinit(time_t ri
);
132 void scanall(int type
, int port
);
134 /* proxyscanalloc.c */
136 void freescan(scan
*sp
);
137 cachehost
*getcachehost();
138 void freecachehost(cachehost
*chp
);
139 foundproxy
*getfoundproxy();
140 void freefoundproxy(foundproxy
*fpp
);
141 pendingscan
*getpendingscan();
142 void freependingscan(pendingscan
*psp
);
144 extrascan
*getextrascan();
145 void freeextrascan(extrascan
*esp
);
147 /* proxyscanlisten.c */
148 int openlistensocket(int portnum
);
149 void handlelistensocket(int fd
, short events
);
151 /* proxyscanconnect.c */
152 int createconnectsocket(long ip
, int socknum
);
155 void loggline(cachehost
*chp
, patricia_node_t
*node
);
156 void proxyscandbclose();
157 int proxyscandbinit();
158 int proxyscandolistopen(void *sender
, int cargc
, char **cargv
);
159 void proxyscanspewip(nick
*mynick
, nick
*usernick
, unsigned long a
, unsigned long b
, unsigned long c
, unsigned long d
);
160 void proxyscanshowkill(nick
*mynick
, nick
*usernick
, unsigned long a
);
161 const char *scantostr(int type
);
163 #if defined(PROXYSCAN_MAIL)
164 /* proxyscanmail.c */
165 void ps_makereportmail(scanhost
*shp
);
168 /* proxyscanqueue.c */
169 void queuescan(patricia_node_t
*node
, short scantype
, unsigned short port
, char class, time_t when
);
170 void startqueuedscans();
173 void startscan(patricia_node_t
*node
, int type
, int port
, int class);
176 unsigned int extrascancount();
177 void loadextrascans();
178 extrascan
*findextrascan(patricia_node_t
*node
);
179 void delextrascan(extrascan
*esp
);
180 extrascan
*addextrascan(unsigned short port
, unsigned char type
);