Skip to content

Commit b3becc2

Browse files
committed
Connect over a connector
1 parent ed72401 commit b3becc2

18 files changed

Lines changed: 1462 additions & 71 deletions

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
[submodule "libssh"]
22
path = libssh
33
url = git://git.libssh.org/projects/libssh.git
4+
[submodule "CoSocket"]
5+
path = CoSocket
6+
url = https://github.com/codinn/CoSocket

CoSocket

Submodule CoSocket added at 43b1986

SSHKitCore.xcodeproj/project.pbxproj

Lines changed: 99 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
4A49F63B1A491C8400D9BA80 /* CoSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A49F6301A491C8400D9BA80 /* CoSocket.h */; };
11+
4A49F63C1A491C8400D9BA80 /* CoSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A49F6311A491C8400D9BA80 /* CoSocket.m */; };
12+
4A49F65A1A491CD100D9BA80 /* SSHKitConnectorHTTPS.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A49F64F1A491CD100D9BA80 /* SSHKitConnectorHTTPS.m */; };
13+
4A49F65B1A491CD100D9BA80 /* SSHKitConnector+Protected.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A49F6501A491CD100D9BA80 /* SSHKitConnector+Protected.h */; };
14+
4A49F65C1A491CD100D9BA80 /* SSHKitConnectorProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A49F6511A491CD100D9BA80 /* SSHKitConnectorProxy.h */; };
15+
4A49F65D1A491CD100D9BA80 /* SSHKitConnectorProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A49F6521A491CD100D9BA80 /* SSHKitConnectorProxy.m */; };
16+
4A49F65E1A491CD100D9BA80 /* SSHKitConnectorSOCKS4.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A49F6531A491CD100D9BA80 /* SSHKitConnectorSOCKS4.m */; };
17+
4A49F65F1A491CD100D9BA80 /* SSHKitConnectorSOCKS5.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A49F6541A491CD100D9BA80 /* SSHKitConnectorSOCKS5.m */; };
18+
4A49F6601A491CD100D9BA80 /* CoHTTPMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A49F6561A491CD100D9BA80 /* CoHTTPMessage.h */; settings = {ATTRIBUTES = (Public, ); }; };
19+
4A49F6611A491CD100D9BA80 /* CoHTTPMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A49F6571A491CD100D9BA80 /* CoHTTPMessage.m */; };
20+
4A49F6621A491CD100D9BA80 /* CoSOCKSMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A49F6581A491CD100D9BA80 /* CoSOCKSMessage.h */; settings = {ATTRIBUTES = (Public, ); }; };
21+
4A49F6631A491CD100D9BA80 /* CoSOCKSMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A49F6591A491CD100D9BA80 /* CoSOCKSMessage.m */; };
22+
4A49F6661A49282600D9BA80 /* SSHKitConnector.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A49F6641A49282600D9BA80 /* SSHKitConnector.h */; };
23+
4A49F6671A49282600D9BA80 /* SSHKitConnector.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A49F6651A49282600D9BA80 /* SSHKitConnector.m */; };
1024
4A623BFC1A26F90B0071C135 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E4D99AA315DE15B300EB5615 /* libz.dylib */; };
1125
4A652E9319AD891400FAEB28 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A652E9219AD891400FAEB28 /* Security.framework */; };
1226
4A729ABA1A295E8D0014CB03 /* libssh_threads.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4AEF725E19FFE2AE009B0CC7 /* libssh_threads.a */; };
@@ -144,14 +158,14 @@
144158
isa = PBXContainerItemProxy;
145159
containerPortal = 4AEF724019FFE2AC009B0CC7 /* libssh.xcodeproj */;
146160
proxyType = 1;
147-
remoteGlobalIDString = AC13BF2EFBED43A8B88FC174;
161+
remoteGlobalIDString = 18DE45E5AFAA415EBCCB3268;
148162
remoteInfo = ssh_static;
149163
};
150164
4AEF727919FFE2E4009B0CC7 /* PBXContainerItemProxy */ = {
151165
isa = PBXContainerItemProxy;
152166
containerPortal = 4AEF724019FFE2AC009B0CC7 /* libssh.xcodeproj */;
153167
proxyType = 1;
154-
remoteGlobalIDString = 1FEE43259BE3411CAF32EA25;
168+
remoteGlobalIDString = B732C26E493941D5BE56278B;
155169
remoteInfo = ssh_threads_static;
156170
};
157171
/* End PBXContainerItemProxy section */
@@ -170,6 +184,20 @@
170184
/* End PBXCopyFilesBuildPhase section */
171185

172186
/* Begin PBXFileReference section */
187+
4A49F6301A491C8400D9BA80 /* CoSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoSocket.h; sourceTree = "<group>"; };
188+
4A49F6311A491C8400D9BA80 /* CoSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CoSocket.m; sourceTree = "<group>"; };
189+
4A49F64F1A491CD100D9BA80 /* SSHKitConnectorHTTPS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SSHKitConnectorHTTPS.m; sourceTree = "<group>"; };
190+
4A49F6501A491CD100D9BA80 /* SSHKitConnector+Protected.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SSHKitConnector+Protected.h"; sourceTree = "<group>"; };
191+
4A49F6511A491CD100D9BA80 /* SSHKitConnectorProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSHKitConnectorProxy.h; sourceTree = "<group>"; };
192+
4A49F6521A491CD100D9BA80 /* SSHKitConnectorProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SSHKitConnectorProxy.m; sourceTree = "<group>"; };
193+
4A49F6531A491CD100D9BA80 /* SSHKitConnectorSOCKS4.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SSHKitConnectorSOCKS4.m; sourceTree = "<group>"; };
194+
4A49F6541A491CD100D9BA80 /* SSHKitConnectorSOCKS5.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SSHKitConnectorSOCKS5.m; sourceTree = "<group>"; };
195+
4A49F6561A491CD100D9BA80 /* CoHTTPMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoHTTPMessage.h; sourceTree = "<group>"; };
196+
4A49F6571A491CD100D9BA80 /* CoHTTPMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CoHTTPMessage.m; sourceTree = "<group>"; };
197+
4A49F6581A491CD100D9BA80 /* CoSOCKSMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoSOCKSMessage.h; sourceTree = "<group>"; };
198+
4A49F6591A491CD100D9BA80 /* CoSOCKSMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CoSOCKSMessage.m; sourceTree = "<group>"; };
199+
4A49F6641A49282600D9BA80 /* SSHKitConnector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSHKitConnector.h; sourceTree = "<group>"; };
200+
4A49F6651A49282600D9BA80 /* SSHKitConnector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SSHKitConnector.m; sourceTree = "<group>"; };
173201
4A652E9219AD891400FAEB28 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
174202
4ADCA2451A32E26000DC8FF1 /* SSHKitForwardChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSHKitForwardChannel.h; sourceTree = "<group>"; };
175203
4ADCA2461A32E26000DC8FF1 /* SSHKitForwardChannel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SSHKitForwardChannel.m; sourceTree = "<group>"; };
@@ -213,12 +241,56 @@
213241
/* End PBXFrameworksBuildPhase section */
214242

215243
/* Begin PBXGroup section */
244+
4A49F61B1A491C6E00D9BA80 /* Vendor */ = {
245+
isa = PBXGroup;
246+
children = (
247+
4A49F62E1A491C8400D9BA80 /* CoSocket */,
248+
4AEF724019FFE2AC009B0CC7 /* libssh.xcodeproj */,
249+
);
250+
name = Vendor;
251+
sourceTree = "<group>";
252+
};
253+
4A49F62E1A491C8400D9BA80 /* CoSocket */ = {
254+
isa = PBXGroup;
255+
children = (
256+
4A49F6301A491C8400D9BA80 /* CoSocket.h */,
257+
4A49F6311A491C8400D9BA80 /* CoSocket.m */,
258+
);
259+
path = CoSocket;
260+
sourceTree = "<group>";
261+
};
262+
4A49F64E1A491CD100D9BA80 /* Connector */ = {
263+
isa = PBXGroup;
264+
children = (
265+
4A49F6641A49282600D9BA80 /* SSHKitConnector.h */,
266+
4A49F6651A49282600D9BA80 /* SSHKitConnector.m */,
267+
4A49F6511A491CD100D9BA80 /* SSHKitConnectorProxy.h */,
268+
4A49F6521A491CD100D9BA80 /* SSHKitConnectorProxy.m */,
269+
4A49F6531A491CD100D9BA80 /* SSHKitConnectorSOCKS4.m */,
270+
4A49F6541A491CD100D9BA80 /* SSHKitConnectorSOCKS5.m */,
271+
4A49F64F1A491CD100D9BA80 /* SSHKitConnectorHTTPS.m */,
272+
4A49F6501A491CD100D9BA80 /* SSHKitConnector+Protected.h */,
273+
);
274+
path = Connector;
275+
sourceTree = "<group>";
276+
};
277+
4A49F6551A491CD100D9BA80 /* CoMessage */ = {
278+
isa = PBXGroup;
279+
children = (
280+
4A49F6561A491CD100D9BA80 /* CoHTTPMessage.h */,
281+
4A49F6571A491CD100D9BA80 /* CoHTTPMessage.m */,
282+
4A49F6581A491CD100D9BA80 /* CoSOCKSMessage.h */,
283+
4A49F6591A491CD100D9BA80 /* CoSOCKSMessage.m */,
284+
);
285+
path = CoMessage;
286+
sourceTree = "<group>";
287+
};
216288
4AEF724119FFE2AC009B0CC7 /* Products */ = {
217289
isa = PBXGroup;
218290
children = (
219-
4AEF725819FFE2AE009B0CC7 /* libssh.4.4.1.dylib */,
291+
4AEF725819FFE2AE009B0CC7 /* libssh.4.5.0.dylib */,
220292
4AEF725A19FFE2AE009B0CC7 /* libssh.a */,
221-
4AEF725C19FFE2AE009B0CC7 /* libssh_threads.4.4.1.dylib */,
293+
4AEF725C19FFE2AE009B0CC7 /* libssh_threads.4.5.0.dylib */,
222294
4AEF725E19FFE2AE009B0CC7 /* libssh_threads.a */,
223295
4AEF726019FFE2AE009B0CC7 /* exec */,
224296
4AEF726219FFE2AE009B0CC7 /* libssh_scp */,
@@ -239,8 +311,8 @@
239311
E4E96D78158E10FD002E6E0A = {
240312
isa = PBXGroup;
241313
children = (
242-
4AEF724019FFE2AC009B0CC7 /* libssh.xcodeproj */,
243-
E4E96D8D158E10FD002E6E0A /* SSHKit */,
314+
4A49F61B1A491C6E00D9BA80 /* Vendor */,
315+
E4E96D8D158E10FD002E6E0A /* SSHKitCore */,
244316
E4E96D86158E10FD002E6E0A /* Frameworks */,
245317
E4E96D85158E10FD002E6E0A /* Products */,
246318
);
@@ -277,9 +349,11 @@
277349
name = "Other Frameworks";
278350
sourceTree = "<group>";
279351
};
280-
E4E96D8D158E10FD002E6E0A /* SSHKit */ = {
352+
E4E96D8D158E10FD002E6E0A /* SSHKitCore */ = {
281353
isa = PBXGroup;
282354
children = (
355+
4A49F64E1A491CD100D9BA80 /* Connector */,
356+
4A49F6551A491CD100D9BA80 /* CoMessage */,
283357
E4E96D8E158E10FD002E6E0A /* Supporting Files */,
284358
E4E96D94158E10FD002E6E0A /* SSHKitCore.h */,
285359
4AECD11B1A15EE8100458991 /* SSHKitCore.m */,
@@ -293,7 +367,6 @@
293367
4ADCA2451A32E26000DC8FF1 /* SSHKitForwardChannel.h */,
294368
4ADCA2461A32E26000DC8FF1 /* SSHKitForwardChannel.m */,
295369
);
296-
name = SSHKit;
297370
path = SSHKitCore;
298371
sourceTree = "<group>";
299372
};
@@ -313,12 +386,18 @@
313386
isa = PBXHeadersBuildPhase;
314387
buildActionMask = 2147483647;
315388
files = (
389+
4A49F6601A491CD100D9BA80 /* CoHTTPMessage.h in Headers */,
316390
E42815FE15962B7600CF680C /* SSHKitCore.h in Headers */,
391+
4A49F6621A491CD100D9BA80 /* CoSOCKSMessage.h in Headers */,
317392
4ADCA2471A32E26000DC8FF1 /* SSHKitForwardChannel.h in Headers */,
393+
4A49F65C1A491CD100D9BA80 /* SSHKitConnectorProxy.h in Headers */,
318394
4AFD803C19FF91D000D9E48B /* SSHKit+Protected.h in Headers */,
395+
4A49F65B1A491CD100D9BA80 /* SSHKitConnector+Protected.h in Headers */,
319396
E42815C21593D95200CF680C /* SSHKitSession.h in Headers */,
320397
E4F1E680159F5B13007B0B2F /* SSHKitChannel.h in Headers */,
321398
4AEF72C31A00B6BD009B0CC7 /* SSHKitDirectChannel.h in Headers */,
399+
4A49F6661A49282600D9BA80 /* SSHKitConnector.h in Headers */,
400+
4A49F63B1A491C8400D9BA80 /* CoSocket.h in Headers */,
322401
);
323402
runOnlyForDeploymentPostprocessing = 0;
324403
};
@@ -379,10 +458,10 @@
379458
/* End PBXProject section */
380459

381460
/* Begin PBXReferenceProxy section */
382-
4AEF725819FFE2AE009B0CC7 /* libssh.4.4.1.dylib */ = {
461+
4AEF725819FFE2AE009B0CC7 /* libssh.4.5.0.dylib */ = {
383462
isa = PBXReferenceProxy;
384463
fileType = "compiled.mach-o.dylib";
385-
path = libssh.4.4.1.dylib;
464+
path = libssh.4.5.0.dylib;
386465
remoteRef = 4AEF725719FFE2AE009B0CC7 /* PBXContainerItemProxy */;
387466
sourceTree = BUILT_PRODUCTS_DIR;
388467
};
@@ -393,10 +472,10 @@
393472
remoteRef = 4AEF725919FFE2AE009B0CC7 /* PBXContainerItemProxy */;
394473
sourceTree = BUILT_PRODUCTS_DIR;
395474
};
396-
4AEF725C19FFE2AE009B0CC7 /* libssh_threads.4.4.1.dylib */ = {
475+
4AEF725C19FFE2AE009B0CC7 /* libssh_threads.4.5.0.dylib */ = {
397476
isa = PBXReferenceProxy;
398477
fileType = "compiled.mach-o.dylib";
399-
path = libssh_threads.4.4.1.dylib;
478+
path = libssh_threads.4.5.0.dylib;
400479
remoteRef = 4AEF725B19FFE2AE009B0CC7 /* PBXContainerItemProxy */;
401480
sourceTree = BUILT_PRODUCTS_DIR;
402481
};
@@ -508,10 +587,18 @@
508587
isa = PBXSourcesBuildPhase;
509588
buildActionMask = 2147483647;
510589
files = (
590+
4A49F63C1A491C8400D9BA80 /* CoSocket.m in Sources */,
591+
4A49F6631A491CD100D9BA80 /* CoSOCKSMessage.m in Sources */,
592+
4A49F6671A49282600D9BA80 /* SSHKitConnector.m in Sources */,
593+
4A49F65D1A491CD100D9BA80 /* SSHKitConnectorProxy.m in Sources */,
594+
4A49F65F1A491CD100D9BA80 /* SSHKitConnectorSOCKS5.m in Sources */,
595+
4A49F65A1A491CD100D9BA80 /* SSHKitConnectorHTTPS.m in Sources */,
511596
4ABBEA9819D06956005B73CC /* SSHKitChannel.m in Sources */,
597+
4A49F6611A491CD100D9BA80 /* CoHTTPMessage.m in Sources */,
512598
4ADCA2481A32E26000DC8FF1 /* SSHKitForwardChannel.m in Sources */,
513599
4AECD11C1A15EE8100458991 /* SSHKitCore.m in Sources */,
514600
E42815C31593D95200CF680C /* SSHKitSession.m in Sources */,
601+
4A49F65E1A491CD100D9BA80 /* SSHKitConnectorSOCKS4.m in Sources */,
515602
4AEF72C41A00B6BD009B0CC7 /* SSHKitDirectChannel.m in Sources */,
516603
);
517604
runOnlyForDeploymentPostprocessing = 0;
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* The HTTPMessage class is a simple Objective-C wrapper around Apple's CFHTTPMessage class.
3+
**/
4+
5+
#import <Foundation/Foundation.h>
6+
7+
#if TARGET_OS_IPHONE
8+
// Note: You may need to add the CFNetwork Framework to your project
9+
#import <CFNetwork/CFNetwork.h>
10+
#endif
11+
12+
#define HTTPVersion1_0 ((NSString *)kCFHTTPVersion1_0)
13+
#define HTTPVersion1_1 ((NSString *)kCFHTTPVersion1_1)
14+
15+
16+
@interface CoHTTPMessage : NSObject
17+
{
18+
CFHTTPMessageRef message;
19+
}
20+
21+
- (instancetype)initEmptyRequest;
22+
23+
- (instancetype)initRequestWithMethod:(NSString *)method URL:(NSURL *)url version:(NSString *)version;
24+
25+
- (instancetype)initResponseWithStatusCode:(NSInteger)code description:(NSString *)description version:(NSString *)version;
26+
27+
- (instancetype)initResponseWithData:(NSData *)data;
28+
29+
- (BOOL)appendData:(NSData *)data;
30+
31+
- (NSDictionary *)allHeaderFields;
32+
- (NSString *)headerField:(NSString *)headerField;
33+
34+
- (void)setHeaderField:(NSString *)headerField value:(NSString *)headerFieldValue;
35+
36+
- (BOOL)addBasicAuthenticationWithUsername:(NSString *)username password:(NSString *)password forProxy:(BOOL)forProxy;
37+
- (BOOL)addAuthenticationWithFailureResponse:(CoHTTPMessage *)response username:(NSString *)username password:(NSString *)password forProxy:(BOOL)forProxy;
38+
39+
@property (readonly) BOOL isHeaderComplete;
40+
@property (readonly) NSString *method;
41+
@property (readonly) NSString *version;
42+
@property (readonly) NSURL *url;
43+
@property (readonly) NSInteger statusCode;
44+
@property (readonly) NSString *statusLine;
45+
@property (readonly) NSData *serializedData;
46+
@property (readwrite) NSData *body;
47+
@property (readonly) CFHTTPMessageRef rawMessage;
48+
49+
@end

0 commit comments

Comments
 (0)