diff --git a/src/common/config.py b/src/common/config.py
index 25c609048..ec6e8e7cb 100644
--- a/src/common/config.py
+++ b/src/common/config.py
@@ -115,11 +115,7 @@ class Config:
'resource': [ opt_str, 'gajim' ],
'priority': [ opt_int, 5 ],
'autoconnect': [ opt_bool, False ],
- 'use_proxy': [ opt_bool, False ],
- 'proxyhost': [ opt_str, '' ],
- 'proxyport': [ opt_int, 3128 ],
- 'proxyuser': [ opt_str, '' ],
- 'proxypass': [ opt_str, '' ],
+ 'proxy': [ opt_str, '' ],
'keyid': [ opt_str, '' ],
'keyname': [ opt_str, '' ],
'usessl': [ opt_bool, False ],
@@ -139,6 +135,13 @@ class Config:
'enabled': [ opt_bool, True ],
'path': [ opt_str, '' ],
}, {}),
+ 'proxies': ({
+ 'type': [ opt_str, 'http' ],
+ 'host': [ opt_str, '' ],
+ 'port': [ opt_int, 3128 ],
+ 'user': [ opt_str, '' ],
+ 'password': [ opt_str, '' ],
+ }, {}),
}
emoticons_default = {
diff --git a/src/common/connection.py b/src/common/connection.py
index cf23a5f5f..f9bd765f8 100644
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -597,15 +597,12 @@ class Connection:
if self.connection:
return self.connection
self.connected = 1
- if gajim.config.get_per('accounts', self.name, 'use_proxy'):
- proxy = {'host': gajim.config.get_per('accounts', self.name,
- 'proxyhost')}
- proxy['port'] = gajim.config.get_per('accounts', self.name,
- 'proxyport')
- proxy['user'] = gajim.config.get_per('accounts', self.name,
- 'proxyuser')
- proxy['password'] = gajim.config.get_per('accounts', self.name,
- 'proxypass')
+ p = gajim.config.get_per('accounts', self.name, 'proxy')
+ if p and gajim.config.get_per('proxies').has_key(p):
+ proxy = {'host': gajim.config.get_per('proxies', p, 'host')}
+ proxy['port'] = gajim.config.get_per('proxies', p, 'port')
+ proxy['user'] = gajim.config.get_per('proxies', p, 'user')
+ proxy['password'] = gajim.config.get_per('proxies', p, 'pass')
else:
proxy = None
if gajim.verbose:
@@ -880,9 +877,12 @@ class Connection:
# If a connection already exist we cannot create a new account
if self.connection:
return
- if config['use_proxy']:
- proxy = {'host': config['proxyhost'], 'port': config['proxyport'],
- 'user': config['proxyuser'], 'password': config['proxypass']}
+ p = config['proxy']
+ if p and gajim.config.get_per('proxies').has_key(p):
+ proxy = {'host': gajim.config.get_per('proxies', p, 'host')}
+ proxy['port'] = gajim.config.get_per('proxies', p, 'port')
+ proxy['user'] = gajim.config.get_per('proxies', p, 'user')
+ proxy['password'] = gajim.config.get_per('proxies', p, 'pass')
else:
proxy = None
if gajim.verbose:
diff --git a/src/config.py b/src/config.py
index fe0999a93..8ae4eddf9 100644
--- a/src/config.py
+++ b/src/config.py
@@ -1069,13 +1069,6 @@ class Account_modification_window:
for w in widgets:
w.set_sensitive(widget.get_active())
- def on_use_proxy_checkbutton_toggled(self, widget):
- proxy_table = self.xml.get_widget('proxy_table')
- widgets = proxy_table.get_children()
- widgets.append(proxy_table)
- self.on_checkbutton_toggled(widget, widgets)
-
-
def init_account_gpg(self):
keyid = gajim.config.get_per('accounts', self.account, 'keyid')
keyname = gajim.config.get_per('accounts', self.account, 'keyname')
@@ -1119,28 +1112,20 @@ class Account_modification_window:
'accounts', self.account, 'resource'))
self.xml.get_widget('priority_spinbutton').set_value(gajim.config.\
get_per('accounts', self.account, 'priority'))
-
- use_proxy = gajim.config.get_per('accounts', self.account, 'use_proxy')
- self.xml.get_widget('use_proxy_checkbutton').set_active(use_proxy)
-
- entry = self.xml.get_widget('proxyhost_entry')
- entry.set_sensitive(use_proxy)
- entry.set_text(gajim.config.get_per('accounts', self.account,
- 'proxyhost'))
- entry = self.xml.get_widget('proxyport_entry')
- entry.set_sensitive(use_proxy)
- entry.set_text(str(gajim.config.get_per('accounts', self.account,
- 'proxyport')))
-
- entry = self.xml.get_widget('proxyuser_entry')
- entry.set_sensitive(use_proxy)
- entry.set_text(gajim.config.get_per('accounts', self.account,
- 'proxyuser'))
-
- entry = self.xml.get_widget('proxypass_entry')
- entry.set_sensitive(use_proxy)
- entry.set_text(gajim.config.get_per('accounts', self.account,
- 'proxypass'))
+
+ # init proxy list
+ our_proxy = gajim.config.get_per('accounts', self.account, 'proxy')
+ if not our_proxy:
+ our_proxy = 'None'
+ self.proxy_combobox = self.xml.get_widget('proxies_combobox')
+ model = gtk.ListStore(gobject.TYPE_STRING)
+ self.proxy_combobox.set_model(model)
+ l = gajim.config.get_per('proxies')
+ l.insert(0, 'None')
+ for i in range(len(l)):
+ model.append([l[i]])
+ if our_proxy == l[i]:
+ self.proxy_combobox.set_active(i)
usessl = gajim.config.get_per('accounts', self.account, 'usessl')
self.xml.get_widget('use_ssl_checkbutton').set_active(usessl)
@@ -1212,28 +1197,11 @@ _('To change the account name, it must be disconnected.')).get_response()
config['sync_with_global_status'] = self.xml.get_widget(
'sync_with_global_status_checkbutton').get_active()
- config['use_proxy'] = self.xml.get_widget('use_proxy_checkbutton').\
- get_active()
- config['proxyhost'] = self.xml.get_widget('proxyhost_entry').get_text()
- config['proxyport'] = self.xml.get_widget('proxyport_entry').get_text()
- config['proxyuser'] = self.xml.get_widget('proxyuser_entry').get_text()
- config['proxypass'] = self.xml.get_widget('proxypass_entry').get_text()
- if config['use_proxy']:
- if config['proxyport'] != '':
- if not config['proxyport'].isdigit():
- dialogs.Error_dialog(_('Invalid proxy port'),
- _('Port numbers must contain digits only.')).get_response()
- return
- config['proxyport'] = int(config['proxyport'])
-
- else:
- dialogs.Error_dialog(_('Invalid proxy port'),
- _('You must enter a port number to use a proxy.')).get_response()
- return
- if config['proxyhost'] == '':
- dialogs.Error_dialog(_('Invalid proxy host'),
- _('You must enter a proxy host to use a proxy.')).get_response()
- return
+ active = self.proxy_combobox.get_active()
+ proxy = self.proxy_combobox.get_model()[active][0]
+ if proxy == 'None':
+ proxy = ''
+ config['proxy'] = proxy
config['usessl'] = self.xml.get_widget('use_ssl_checkbutton').get_active()
(config['name'], config['hostname']) = jid.split('@')
diff --git a/src/gtkgui.glade b/src/gtkgui.glade
index 729047f26..80fbb3a1e 100644
--- a/src/gtkgui.glade
+++ b/src/gtkgui.glade
@@ -1058,7 +1058,7 @@
True
- None
+
0
@@ -13724,7 +13724,7 @@ the Jabber network.
-
+
6
True
Manage Proxy Profiles