--- a/Frameworks/Adium Framework/Source/AIAccount.h Sun Mar 04 19:35:28 2012 +0100
+++ b/Frameworks/Adium Framework/Source/AIAccount.h Sun Mar 04 20:01:46 2012 +0100
@@ -54,7 +54,8 @@
Adium_Proxy_Default_HTTP,
Adium_Proxy_Default_SOCKS4,
Adium_Proxy_Default_SOCKS5,
@@ -330,6 +331,16 @@
- (BOOL)shouldLogChat:(AIChat *)chat;
+ * @brief The proxy's type used for this account. +- (AdiumProxyType)proxyType; + * @brief The proxy's hostname the user entered for this account. +- (NSString *)proxyHost; @interface AIAccount (Private_ForSubclasses)
--- a/Frameworks/Adium Framework/Source/AIAccount.m Sun Mar 04 19:35:28 2012 +0100
+++ b/Frameworks/Adium Framework/Source/AIAccount.m Sun Mar 04 20:01:46 2012 +0100
@@ -96,6 +96,7 @@
Adium_Proxy_Default_HTTP_AS = 'DHTP',
Adium_Proxy_Default_SOCKS4_AS = 'DSK4',
Adium_Proxy_Default_SOCKS5_AS = 'DSK5',
+ Adium_Proxy_Tor_AS = 'TOS5', Adium_Proxy_None_AS = 'NONE'
} AdiumProxyTypeApplescript;
@@ -1506,6 +1507,8 @@
return Adium_Proxy_Default_SOCKS4;
case Adium_Proxy_Default_SOCKS5_AS:
return Adium_Proxy_Default_SOCKS5;
+ case Adium_Proxy_Tor_AS: + return Adium_Proxy_Tor; @@ -1526,6 +1529,8 @@
return Adium_Proxy_Default_SOCKS4_AS;
case Adium_Proxy_Default_SOCKS5:
return Adium_Proxy_Default_SOCKS5_AS;
+ return Adium_Proxy_Tor_AS; return Adium_Proxy_None_AS;
--- a/Plugins/Purple Service/CBPurpleAccount.m Sun Mar 04 19:35:28 2012 +0100
+++ b/Plugins/Purple Service/CBPurpleAccount.m Sun Mar 04 20:01:46 2012 +0100
@@ -1993,6 +1993,9 @@
case Adium_Proxy_Default_SOCKS5:
purpleAccountProxyType = PURPLE_PROXY_SOCKS5;
+ purpleAccountProxyType = PURPLE_PROXY_TOR; purpleAccountProxyType = PURPLE_PROXY_NONE;
@@ -2002,7 +2005,16 @@
purple_proxy_info_set_type(proxy_info, purpleAccountProxyType);
if (proxyType != Adium_Proxy_None) {
- purple_proxy_info_set_host(proxy_info, (char *)[[proxyConfig objectForKey:@"Host"] UTF8String]);
+ /* In Tor mode, libpurple will not do any DNS queries itself, ever. + * However, if the user entered "localhost" as the proxy, then that will not be resolved either! + * Let's help the user here by replacing it with 127.0.0.1. + if ([[proxyConfig objectForKey:@"Host"] isEqualToString:@"localhost"]) { + purple_proxy_info_set_host(proxy_info, "127.0.0.1"); + purple_proxy_info_set_host(proxy_info, (char *)[[proxyConfig objectForKey:@"Host"] UTF8String]); purple_proxy_info_set_port(proxy_info, [(NSNumber*)[proxyConfig objectForKey:@"Port"] intValue]);
purple_proxy_info_set_username(proxy_info, (char *)[[proxyConfig objectForKey:@"Username"] UTF8String]);
--- a/Source/AIAccountProxySettings.m Sun Mar 04 19:35:28 2012 +0100
+++ b/Source/AIAccountProxySettings.m Sun Mar 04 20:01:46 2012 +0100
@@ -258,6 +258,7 @@
[proxyMenu addItem:[self _proxyMenuItemWithTitle:AILocalizedString(@"Systemwide HTTP Settings",nil) tag:Adium_Proxy_Default_HTTP]];
[proxyMenu addItem:[self _proxyMenuItemWithTitle:@"SOCKS4" tag:Adium_Proxy_SOCKS4]];
[proxyMenu addItem:[self _proxyMenuItemWithTitle:@"SOCKS5" tag:Adium_Proxy_SOCKS5]];
+ [proxyMenu addItem:[self _proxyMenuItemWithTitle:AILocalizedString(@"Tor (SOCKS5)",nil) tag:Adium_Proxy_Tor]]; [proxyMenu addItem:[self _proxyMenuItemWithTitle:@"HTTP" tag:Adium_Proxy_HTTP]];
return [proxyMenu autorelease];