plugins/icq/proxy.c

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

mercurial