plugins/icq/proxy.c

Sat, 21 Apr 2001 23:53:06 +0000

author
Decklin Foster <decklin@red-bean.com>
date
Sat, 21 Apr 2001 23:53:06 +0000
changeset 1741
4ee66d726ac7
parent 1432
ab10a52f94a7
child 1912
77d18e17199b
permissions
-rw-r--r--

[gaim-migrate @ 1751]
thanks decklin :)

committer: Eric Warmenhoven <warmenhoven@yahoo.com>

1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 /*
1432
ab10a52f94a7 [gaim-migrate @ 1442]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1309
diff changeset
3 $Id: proxy.c 1442 2001-01-28 01:52:27Z warmenhoven $
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 $Log$
1432
ab10a52f94a7 [gaim-migrate @ 1442]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1309
diff changeset
5 Revision 1.3 2001/01/28 01:52:27 warmenhoven
ab10a52f94a7 [gaim-migrate @ 1442]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1309
diff changeset
6 icqlib 1.1.5
ab10a52f94a7 [gaim-migrate @ 1442]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1309
diff changeset
7
ab10a52f94a7 [gaim-migrate @ 1442]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1309
diff changeset
8 Revision 1.9 2001/01/17 01:19:49 bills
ab10a52f94a7 [gaim-migrate @ 1442]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1309
diff changeset
9 cleanup
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 Revision 1.8 2000/05/10 18:51:23 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 icq_Disconnect() now called before icq_Disconnected callback to
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 prevent high CPU usage in kicq's "reconnect on disconnect" code.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 Revision 1.7 2000/05/03 18:29:15 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 Callbacks have been moved to the ICQLINK structure.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 Revision 1.6 2000/04/05 14:37:02 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 Applied patch from "Guillaume R." <grs@mail.com> for basic Win32
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 compatibility.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 Revision 1.5 1999/10/07 18:00:59 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23 proxy.h file removed.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
24
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25 Revision 1.4 1999/07/16 12:01:06 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 ICQLINK support added.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
27
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
28 Revision 1.3 1999/07/12 15:13:33 cproch
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
29 - added definition of ICQLINK to hold session-specific global variabled
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
30 applications which have more than one connection are now possible
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
31 - changed nearly every function defintion to support ICQLINK parameter
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
32
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
33 Revision 1.2 1999/04/14 14:51:42 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
34 Switched from icq_Log callback to icq_Fmt function.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
35 Cleanups for "strict" compiling (-ansi -pedantic)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37 Revision 1.1 1999/03/24 11:37:38 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
38 Underscored files with TCP stuff renamed.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
39 TCP stuff cleaned up
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
40 Function names changed to corresponding names.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41 icqlib.c splitted to many small files by subject.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42 C++ comments changed to ANSI C comments.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44 */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
45
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
46 #ifndef _WIN32
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
47 #include <unistd.h>
1432
ab10a52f94a7 [gaim-migrate @ 1442]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1309
diff changeset
48 #else
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49 #include <winsock.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52 #include <stdlib.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
53
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
54 #include "util.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55 #include "icqtypes.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56 #include "icq.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57 #include "icqlib.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
58
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59 void icq_HandleProxyResponse(ICQLINK *link)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
61 int s;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
62 char buf[256];
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63 #ifdef _WIN32
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64 s = recv(link->icq_ProxySok, buf, sizeof(buf), 0);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
65 #else
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
66 s = read(link->icq_ProxySok, &buf, sizeof(buf));
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
67 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
68 if(s<=0)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
70 icq_FmtLog(link, ICQ_LOG_FATAL, "[SOCKS] Connection terminated\n");
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
71 icq_Disconnect(link);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
72 if(link->icq_Disconnected)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 (*link->icq_Disconnected)(link);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
76
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77 /*******************
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78 SOCKS5 Proxy support
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
79 ********************/
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
80 void icq_SetProxy(ICQLINK *link, const char *phost, unsigned short pport, int pauth, const char *pname, const char *ppass)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
81 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
82 if(link->icq_ProxyHost)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
83 free(link->icq_ProxyHost);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 if(link->icq_ProxyName)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85 free(link->icq_ProxyName);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
86 if(link->icq_ProxyPass)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
87 free(link->icq_ProxyPass);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
88 if(strlen(pname)>255)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
90 icq_FmtLog(link, ICQ_LOG_ERROR, "[SOCKS] User name greater than 255 chars\n");
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
91 link->icq_UseProxy = 0;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
92 return;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
94 if(strlen(ppass)>255)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
96 icq_FmtLog(link, ICQ_LOG_ERROR, "[SOCKS] User password greater than 255 chars\n");
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
97 link->icq_UseProxy = 0;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
98 return;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
99 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
100 link->icq_UseProxy = 1;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101 link->icq_ProxyHost = strdup(phost);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102 link->icq_ProxyPort = pport;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
103 link->icq_ProxyAuth = pauth;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 link->icq_ProxyName = strdup(pname);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105 link->icq_ProxyPass = strdup(ppass);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108 void icq_UnsetProxy(ICQLINK *link)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110 link->icq_UseProxy = 0;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
113 int icq_GetProxySok(ICQLINK *link)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
114 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115 return link->icq_ProxySok;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116 }

mercurial