Overview
Comment: | Add OFSOCKS5Socket. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
48e58dfed1008ec5ec8ac9380a34d7ae |
User & Date: | js on 2011-08-12 16:18:57 |
Other Links: | manifest | tags |
Context
2011-08-13
| ||
10:04 | Introduce a naming scheme for classes implementing abstract classes. check-in: 80d754522a user: js tags: trunk | |
2011-08-12
| ||
16:18 | Add OFSOCKS5Socket. check-in: 48e58dfed1 user: js tags: trunk | |
2011-08-07
| ||
16:57 | Add -[makeImmutable] to all mutable classes and use it. check-in: 927dbf6e7d user: js tags: trunk | |
Changes
Modified src/Makefile from [af792bbc48] to [beed6c9c08].
︙ | ︙ | |||
38 39 40 41 42 43 44 45 46 47 48 49 50 51 | OFNumber.m \ OFObject.m \ OFObject+Serialization.m \ ${OFPLUGIN_M} \ OFSeekableStream.m \ OFSet.m \ OFSHA1Hash.m \ OFStream.m \ OFStreamObserver.m \ OFStreamSocket.m \ OFString.m \ OFString+Hashing.m \ OFString+Serialization.m \ OFString+URLEncoding.m \ | > | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | OFNumber.m \ OFObject.m \ OFObject+Serialization.m \ ${OFPLUGIN_M} \ OFSeekableStream.m \ OFSet.m \ OFSHA1Hash.m \ OFSOCKS5Socket.m \ OFStream.m \ OFStreamObserver.m \ OFStreamSocket.m \ OFString.m \ OFString+Hashing.m \ OFString+Serialization.m \ OFString+URLEncoding.m \ |
︙ | ︙ |
Added src/OFSOCKS5Socket.h version [afdf754ba6].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | /* * Copyright (c) 2008, 2009, 2010, 2011 * Jonathan Schleifer <js@webkeks.org> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #import "OFTCPSocket.h" /** * \brief A class which provides functions to create and use TCP sockets using a * SOCKS5 proxy. */ @interface OFSOCKS5Socket: OFTCPSocket { OFString *proxyHost; uint16_t proxyPort; } /** * \brief Creates a new, autoreleased OFSOCKS5Socket which uses the specified * SOCKS5 proxy. * * \param proxyHost The host of the SOCKS5 proxy * \param proxyPort The port of the SOCKS5 proxy * \return A new, autoreleased OFSOCKS5Socket */ + socketWithProxyHost: (OFString*)proxyHost port: (uint16_t)proxyPort; /** * \brief Initializes an already allocated OFSOCKS5Socket with the specified * SOCKS5 proxy. * * \param proxyHost The host of the SOCKS5 proxy * \param proxyPort The port of the SOCKS5 proxy * \return An initialized OFSOCKS5Socket */ - initWithProxyHost: (OFString*)proxyHost port: (uint16_t)proxyPort; @end |
Added src/OFSOCKS5Socket.m version [ad986810a7].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | /* * Copyright (c) 2008, 2009, 2010, 2011 * Jonathan Schleifer <js@webkeks.org> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #include "config.h" #import "OFSOCKS5Socket.h" #import "OFConnectionFailedException.h" #import "OFNotImplementedException.h" @implementation OFSOCKS5Socket + socketWithProxyHost: (OFString*)host port: (uint16_t)port { return [[[self alloc] initWithProxyHost: host port: port] autorelease]; } - init { Class c = isa; [self release]; @throw [OFNotImplementedException newWithClass: c selector: _cmd]; } - initWithProxyHost: (OFString*)host port: (uint16_t)port { self = [super init]; @try { proxyHost = [host copy]; proxyPort = port; } @catch (id e) { [self release]; @throw e; } return self; } - (void)dealloc { [proxyHost release]; [super dealloc]; } - (void)connectToHost: (OFString*)host port: (uint16_t)port { const char request[] = { 5, 1, 0, 3 }; char reply[256]; BOOL oldBuffersWrites; [super connectToHost: proxyHost port: proxyPort]; /* 5 1 0 -> no authentication */ [self writeNBytes: 3 fromBuffer: request]; [self readExactlyNBytes: 2 intoBuffer: reply]; if (reply[0] != 5 || reply[1] != 0) { [self close]; @throw [OFConnectionFailedException newWithClass: isa socket: self host: proxyHost port: proxyPort]; } oldBuffersWrites = [self buffersWrites]; [self setBuffersWrites: YES]; /* CONNECT request */ [self writeNBytes: 4 fromBuffer: request]; [self writeInt8: [host cStringLength]]; [self writeString: host]; [self writeBigEndianInt16: port]; [self flushWriteBuffer]; [self setBuffersWrites: oldBuffersWrites]; [self readExactlyNBytes: 4 intoBuffer: reply]; if (reply[0] != 5 || reply[1] != 0 || reply[2] != 0) { [self close]; @throw [OFConnectionFailedException newWithClass: isa socket: self host: host port: port]; } /* Skip the rest of the reply */ switch (reply[3]) { case 1: /* IPv4 */ [self readExactlyNBytes: 4 intoBuffer: reply]; break; case 3: /* Domainname */ [self readExactlyNBytes: [self readInt8] intoBuffer: reply]; break; case 4: /* IPv6 */ [self readExactlyNBytes: 16 intoBuffer: reply]; break; default: [self close]; @throw [OFConnectionFailedException newWithClass: isa socket: self host: host port: port]; } [self readBigEndianInt16]; } @end |
Modified src/ObjFW.h from [fa0b5845a5] to [d11c048c78].
︙ | ︙ | |||
42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #import "OFDate.h" #import "OFURL.h" #import "OFStream.h" #import "OFFile.h" #import "OFStreamSocket.h" #import "OFTCPSocket.h" #import "OFStreamObserver.h" #import "OFHTTPRequest.h" #import "OFHash.h" #import "OFMD5Hash.h" #import "OFSHA1Hash.h" | > | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #import "OFDate.h" #import "OFURL.h" #import "OFStream.h" #import "OFFile.h" #import "OFStreamSocket.h" #import "OFTCPSocket.h" #import "OFSOCKS5Socket.h" #import "OFStreamObserver.h" #import "OFHTTPRequest.h" #import "OFHash.h" #import "OFMD5Hash.h" #import "OFSHA1Hash.h" |
︙ | ︙ |