Changeset 3117

Show
Ignore:
Timestamp:
02/05/06 22:16:46 (2 years ago)
Author:
timothy
Message:

Initial proxy support.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/cocoa-networking/Chat Core/MVChatConnection.h

    r3086 r3117  
    1616        MVChatConnectionHTTPProxy = 'httP', 
    1717        MVChatConnectionHTTPSProxy = 'htpS', 
    18         MVChatConnectionSOCKSProxy = 'sokS' 
     18        MVChatConnectionSOCKS4Proxy = 'soK4', 
     19        MVChatConnectionSOCKS5Proxy = 'soK5' 
    1920} MVChatConnectionProxy; 
    2021 
     
    8384@protected 
    8485        MVChatConnectionStatus _status; 
    85         MVChatConnectionProxy _proxy; 
    8686        MVChatMessageFormat _outgoingChatFormat; 
    8787        NSStringEncoding _encoding; 
     
    9898        NSError *_lastError; 
    9999 
     100        MVChatConnectionProxy _proxy; 
     101        NSString *_proxyServer; 
     102        NSString *_proxyUsername; 
     103        NSString *_proxyPassword; 
     104        unsigned short _serverPort; 
     105        unsigned short _proxyServerPort; 
     106 
     107        BOOL _secure; 
     108 
    100109        NSArray *_alternateNicks; 
    101110        unsigned int _nextAltNickIndex; 
  • branches/cocoa-networking/Chat Core/MVChatConnection.m

    r3098 r3117  
    158158        [_awayMessage release]; 
    159159        [_persistentInformation release]; 
    160  
     160        [_proxyServer release]; 
     161        [_proxyUsername release]; 
     162        [_proxyPassword release]; 
     163         
    161164        _npassword = nil; 
    162165        _roomsCache = nil; 
     
    167170        _awayMessage = nil; 
    168171        _persistentInformation = nil; 
    169  
     172        _proxyServer = nil; 
     173        _proxyUsername = nil; 
     174        _proxyPassword = nil; 
     175         
    170176        [super dealloc]; 
    171177} 
     
    406412 
    407413- (void) setSecure:(BOOL) ssl { 
    408 // subclass this method, if needed 
     414        _secure = ssl; 
    409415} 
    410416 
    411417- (BOOL) isSecure { 
    412 // subclass this method, if needed 
    413         return NO; 
     418        return _secure; 
    414419} 
    415420 
     
    427432 
    428433- (void) setProxyServer:(NSString *) address { 
    429 // subclass this method, if needed 
     434        id old = _proxyServer; 
     435        _proxyServer = [address copyWithZone:nil]; 
     436        [old release]; 
    430437} 
    431438 
    432439- (NSString *) proxyServer { 
    433 // subclass this method, if needed 
    434         return nil; 
     440        return [[_proxyServer retain] autorelease]; 
    435441} 
    436442 
     
    438444 
    439445- (void) setProxyServerPort:(unsigned short) port { 
    440 // subclass this method, if needed 
     446        _proxyServerPort = port; 
    441447} 
    442448 
    443449- (unsigned short) proxyServerPort { 
    444 // subclass this method, if needed 
    445         return 0; 
     450        return _proxyServerPort; 
    446451} 
    447452 
     
    449454 
    450455- (void) setProxyUsername:(NSString *) username { 
    451 // subclass this method, if needed 
     456        id old = _proxyUsername; 
     457        _proxyUsername = [username copyWithZone:nil]; 
     458        [old release]; 
    452459} 
    453460 
    454461- (NSString *) proxyUsername { 
    455 // subclass this method, if needed 
    456         return nil; 
     462        return [[_proxyUsername retain] autorelease]; 
    457463} 
    458464 
     
    460466 
    461467- (void) setProxyPassword:(NSString *) password { 
    462 // subclass this method, if needed 
     468        id old = _proxyPassword; 
     469        _proxyPassword = [password copyWithZone:nil]; 
     470        [old release]; 
    463471} 
    464472 
    465473- (NSString *) proxyPassword { 
    466 // subclass this method, if needed 
    467         return nil; 
     474        return [[_proxyPassword retain] autorelease]; 
    468475} 
    469476 
  • branches/cocoa-networking/Chat Core/MVIRCChatConnection.h

    r3107 r3117  
    1717        NSString *_password; 
    1818        NSString *_realName; 
    19         NSString *_proxyServer; 
    20         NSString *_proxyUsername; 
    21         NSString *_proxyPassword; 
    2219        unsigned short _serverPort; 
    23         unsigned short _proxyServerPort; 
    24         BOOL _secure; 
    2520} 
    2621+ (NSArray *) defaultServerPorts; 
  • branches/cocoa-networking/Chat Core/MVIRCChatConnection.m

    r3116 r3117  
    326326        [_password release]; 
    327327        [_realName release]; 
    328         [_proxyServer release]; 
    329         [_proxyUsername release]; 
    330         [_proxyPassword release]; 
    331328 
    332329        _chatConnection = nil; 
     
    340337        _password = nil; 
    341338        _realName = nil; 
    342         _proxyServer = nil; 
    343         _proxyUsername = nil; 
    344         _proxyPassword = nil; 
    345339 
    346340        [super dealloc]; 
     
    525519- (unsigned short) serverPort { 
    526520        return _serverPort; 
    527 } 
    528  
    529 #pragma mark - 
    530  
    531 - (void) setSecure:(BOOL) ssl { 
    532         _secure = ssl; 
    533 } 
    534  
    535 - (BOOL) isSecure { 
    536         return _secure; 
    537 } 
    538  
    539 #pragma mark - 
    540  
    541 - (void) setProxyServer:(NSString *) address { 
    542         id old = _proxyServer; 
    543         _proxyServer = [address copyWithZone:nil]; 
    544         [old release]; 
    545 } 
    546  
    547 - (NSString *) proxyServer { 
    548         return [[_proxyServer retain] autorelease]; 
    549 } 
    550  
    551 #pragma mark - 
    552  
    553 - (void) setProxyServerPort:(unsigned short) port { 
    554         _proxyServerPort = port; 
    555 } 
    556  
    557 - (unsigned short) proxyServerPort { 
    558         return _proxyServerPort; 
    559 } 
    560  
    561 #pragma mark - 
    562  
    563 - (void) setProxyUsername:(NSString *) username { 
    564         id old = _proxyUsername; 
    565         _proxyUsername = [username copyWithZone:nil]; 
    566         [old release]; 
    567 } 
    568  
    569 - (NSString *) proxyUsername { 
    570         return [[_proxyUsername retain] autorelease]; 
    571 } 
    572  
    573 #pragma mark - 
    574  
    575 - (void) setProxyPassword:(NSString *) password { 
    576         id old = _proxyPassword; 
    577         _proxyPassword = [password copyWithZone:nil]; 
    578         [old release]; 
    579 } 
    580  
    581 - (NSString *) proxyPassword { 
    582         return [[_proxyPassword retain] autorelease]; 
    583521} 
    584522 
     
    780718        [self scheduleReconnectAttemptEvery:30.]; 
    781719        [super _didDisconnect]; 
     720} 
     721 
     722- (BOOL) socketWillConnect:(AsyncSocket *) sock { 
     723        if( [[self proxyServer] length] && [self proxyServerPort] ) { 
     724                if( _proxy == MVChatConnectionHTTPSProxy || _proxy == MVChatConnectionHTTPProxy ) { 
     725                        NSMutableDictionary *settings = [[NSMutableDictionary allocWithZone:nil] init]; 
     726                        if( _proxy == MVChatConnectionHTTPSProxy ) { 
     727                                [settings setObject:[self proxyServer] forKey:(NSString *)kCFStreamPropertyHTTPSProxyHost]; 
     728                                [settings setObject:[NSNumber numberWithUnsignedShort:[self proxyServerPort]] forKey:(NSString *)kCFStreamPropertyHTTPSProxyPort]; 
     729                        } else { 
     730                                [settings setObject:[self proxyServer] forKey:(NSString *)kCFStreamPropertyHTTPProxyHost]; 
     731                                [settings setObject:[NSNumber numberWithUnsignedShort:[self proxyServerPort]] forKey:(NSString *)kCFStreamPropertyHTTPProxyPort]; 
     732                        } 
     733 
     734                        CFReadStreamSetProperty( [sock getCFReadStream], kCFStreamPropertyHTTPProxy, (CFDictionaryRef) settings ); 
     735                        CFWriteStreamSetProperty( [sock getCFWriteStream], kCFStreamPropertyHTTPProxy, (CFDictionaryRef) settings ); 
     736                        [settings release]; 
     737                } else if( _proxy == MVChatConnectionSOCKS4Proxy || _proxy == MVChatConnectionSOCKS5Proxy ) { 
     738                        NSMutableDictionary *settings = [[NSMutableDictionary allocWithZone:nil] init]; 
     739 
     740                        [settings setObject:[self proxyServer] forKey:(NSString *)kCFStreamPropertySOCKSProxyHost]; 
     741                        [settings setObject:[NSNumber numberWithUnsignedShort:[self proxyServerPort]] forKey:(NSString *)kCFStreamPropertySOCKSProxyPort]; 
     742 
     743                        if( [[self proxyUsername] length] ) 
     744                                [settings setObject:[self proxyUsername] forKey:(NSString *)kCFStreamPropertySOCKSUser]; 
     745                        if( [[self proxyPassword] length] ) 
     746                                [settings setObject:[self proxyPassword] forKey:(NSString *)kCFStreamPropertySOCKSPassword]; 
     747 
     748                        if( _proxy == MVChatConnectionSOCKS4Proxy ) 
     749                                [settings setObject:(NSString *)kCFStreamSocketSOCKSVersion4 forKey:(NSString *)kCFStreamPropertySOCKSVersion]; 
     750 
     751                        CFReadStreamSetProperty( [sock getCFReadStream], kCFStreamPropertySOCKSProxy, (CFDictionaryRef) settings ); 
     752                        CFWriteStreamSetProperty( [sock getCFWriteStream], kCFStreamPropertySOCKSProxy, (CFDictionaryRef) settings ); 
     753                        [settings release]; 
     754                } 
     755        } 
     756 
     757        return YES; 
    782758} 
    783759 
  • branches/cocoa-networking/Chat Core/MVSILCChatConnection.m

    r3086 r3117  
    11621162 
    11631163- (void) setServer:(NSString *) server { 
    1164         [_silcServer release]; 
    1165         _silcServer = [server copy]; 
     1164        id old = _silcServer; 
     1165        _silcServer = [server copyWithZone:nil]; 
     1166        [old release]; 
    11661167} 
    11671168