diff --git a/frontends/src/jp/cmd_profile.py b/frontends/src/jp/cmd_profile.py
index 41fc617c..98e40177 100644
--- a/frontends/src/jp/cmd_profile.py
+++ b/frontends/src/jp/cmd_profile.py
@@ -95,7 +95,7 @@ class ProfileCreate(base.CommandBase):
def _profile_created(self):
self.host.bridge.setParam("JabberID", self.args.jid, "Connection" ,profile_key=self.args.profile)
- self.host.bridge.setParam("Server", JID(self.args.jid).domain, "Connection", profile_key=self.args.profile)
+ self.host.bridge.setParam(C.FORCE_SERVER_PARAM, JID(self.args.jid).domain, "Connection", profile_key=self.args.profile)
self.host.bridge.setParam("Password", self.args.password, "Connection", profile_key=self.args.profile)
self.host.quit()
diff --git a/frontends/src/primitivus/profile_manager.py b/frontends/src/primitivus/profile_manager.py
index 8759ddba..89ffc383 100644
--- a/frontends/src/primitivus/profile_manager.py
+++ b/frontends/src/primitivus/profile_manager.py
@@ -167,7 +167,7 @@ class ProfileManager(urwid.WidgetWrap):
if old_jid != new_jid:
self.host.bridge.setParam("JabberID", new_jid, "Connection", profile_key=profile)
- self.host.bridge.setParam("Server", JID(new_jid).domain, "Connection", profile_key=profile)
+ self.host.bridge.setParam(C.FORCE_SERVER_PARAM, JID(new_jid).domain, "Connection", profile_key=profile)
if old_pass != new_pass:
self.host.bridge.setParam("Password", new_pass, "Connection", profile_key=profile)
self.host.plug_profile(profile)
diff --git a/frontends/src/wix/profile_manager.py b/frontends/src/wix/profile_manager.py
index 31fe4930..abb9ab99 100644
--- a/frontends/src/wix/profile_manager.py
+++ b/frontends/src/wix/profile_manager.py
@@ -174,7 +174,7 @@ class ProfileManager(wx.Panel):
if old_jid != new_jid:
log.debug(_('Saving new JID and server'))
self.host.bridge.setParam("JabberID", new_jid, "Connection", profile_key=profile)
- self.host.bridge.setParam("Server", JID(new_jid).domain, "Connection", profile_key=profile)
+ self.host.bridge.setParam(C.FORCE_SERVER_PARAM, JID(new_jid).domain, "Connection", profile_key=profile)
if old_pass != new_pass:
log.debug(_('Saving new password'))
self.host.bridge.setParam("Password", new_pass, "Connection", profile_key=profile)
diff --git a/frontends/src/wix/xmlui.py b/frontends/src/wix/xmlui.py
index 392fc2b0..78939376 100644
--- a/frontends/src/wix/xmlui.py
+++ b/frontends/src/wix/xmlui.py
@@ -320,7 +320,7 @@ class XMLUI(xmlui.XMLUI, wx.Frame):
if (ctrl._param_category, param_name) == ('Connection', 'JabberID'):
domain = JID(ctrl._xmluiGetValue()).domain
for widget in (ctl['control'] for ctl in self.ctrl_list.values()):
- if (widget._param_category, widget._param_name) == ('Connection', 'Server'):
+ if (widget._param_category, widget._param_name) == ('Connection', C.FORCE_SERVER_PARAM):
widget.SetValue(domain)
break
diff --git a/src/core/constants.py b/src/core/constants.py
index 3ee745bc..805ed604 100644
--- a/src/core/constants.py
+++ b/src/core/constants.py
@@ -40,6 +40,9 @@ class Const(object):
NO_SECURITY_LIMIT = -1
INDIVIDUAL = "individual"
GENERAL = "general"
+ # Parameters related to connection
+ FORCE_SERVER_PARAM = "Force server"
+ FORCE_PORT_PARAM = "Force port"
# Parameters related to encryption
PROFILE_PASS_PATH = ('General', 'Password')
MEMORY_CRYPTO_NAMESPACE = 'crypto' # for the private persistent binary dict
diff --git a/src/core/sat_main.py b/src/core/sat_main.py
index 84480dda..e5593a74 100644
--- a/src/core/sat_main.py
+++ b/src/core/sat_main.py
@@ -220,7 +220,7 @@ class SAT(service.Service):
def _connectXMPPClient(self, profile):
"""This part is called from asyncConnect when we have loaded individual parameters from memory"""
try:
- port = int(self.memory.getParamA("Port", "Connection", profile_key=profile))
+ port = int(self.memory.getParamA(C.FORCE_PORT_PARAM, "Connection", profile_key=profile))
except ValueError:
log.error(_("Can't parse port value, using default value"))
port = 5222
@@ -228,7 +228,7 @@ class SAT(service.Service):
password = yield self.memory.asyncGetParamA("Password", "Connection", profile_key=profile)
current = self.profiles[profile] = xmpp.SatXMPPClient(self, profile,
jid.JID(self.memory.getParamA("JabberID", "Connection", profile_key=profile)),
- password, self.memory.getParamA("Server", "Connection", profile_key=profile), port)
+ password, self.memory.getParamA(C.FORCE_SERVER_PARAM, "Connection", profile_key=profile), port)
current.messageProt = xmpp.SatMessageProtocol(self)
current.messageProt.setHandlerParent(current)
diff --git a/src/core/xmpp.py b/src/core/xmpp.py
index a66dc402..a16219db 100644
--- a/src/core/xmpp.py
+++ b/src/core/xmpp.py
@@ -37,7 +37,9 @@ class SatXMPPClient(client.XMPPClient):
implements(iwokkel.IDisco)
def __init__(self, host_app, profile, user_jid, password, host=None, port=5222):
- client.XMPPClient.__init__(self, user_jid, password, host, port)
+ # XXX: DNS SRV records are checked when the host is not specified.
+ # If no SRV record is found, the host is directly extracted from the JID.
+ client.XMPPClient.__init__(self, user_jid, password, host or None, port or 5222)
self.factory.clientConnectionLost = self.connectionLost
self.__connected = False
self.profile = profile
diff --git a/src/memory/params.py b/src/memory/params.py
index 3cf90470..1265baa7 100644
--- a/src/memory/params.py
+++ b/src/memory/params.py
@@ -49,8 +49,8 @@ class Params(object):
-
-
+
+
@@ -66,7 +66,9 @@ class Params(object):
'label_NewAccount': _("Register new account"),
'label_autoconnect': _('Connect on frontend startup'),
'label_autodisconnect': _('Disconnect on frontend closure'),
- 'category_misc': _("Misc")
+ 'category_misc': _("Misc"),
+ 'force_server_param': C.FORCE_SERVER_PARAM,
+ 'force_port_param': C.FORCE_PORT_PARAM,
}
def load_default_params(self):
diff --git a/src/plugins/plugin_misc_account.py b/src/plugins/plugin_misc_account.py
index b527aa65..0be4069a 100755
--- a/src/plugins/plugin_misc_account.py
+++ b/src/plugins/plugin_misc_account.py
@@ -192,7 +192,7 @@ class MiscAccount(object):
#FIXME: values must be in a config file instead of hardcoded
self.host.memory.setParam("JabberID", "%s@%s/%s" % (profile, self.getConfig('new_account_domain'), self.getConfig('new_account_resource')),
"Connection", profile_key=profile)
- self.host.memory.setParam("Server", self.getConfig('new_account_server'),
+ self.host.memory.setParam(C.FORCE_SERVER_PARAM, self.getConfig('new_account_server'),
"Connection", profile_key=profile)
self.host.memory.setParam("Password", password,
"Connection", profile_key=profile)
diff --git a/src/plugins/plugin_misc_register_account.py b/src/plugins/plugin_misc_register_account.py
index 4a46a0cd..240f452b 100644
--- a/src/plugins/plugin_misc_register_account.py
+++ b/src/plugins/plugin_misc_register_account.py
@@ -55,14 +55,14 @@ class RegisterAccount(object):
def registerNewAccountCB(self, data, profile):
"""Called when the use click on the "New account" button."""
session_data = {}
- for param in ('JabberID', 'Password', 'Port', 'Server'):
+ for param in ('JabberID', 'Password', C.FORCE_PORT_PARAM, C.FORCE_SERVER_PARAM):
try:
session_data[param] = data["%s%s%s%s" % (SAT_FORM_PREFIX, "Connection", SAT_PARAM_SEPARATOR, param)]
except KeyError:
- if param == 'Port':
+ if param == C.FORCE_PORT_PARAM:
session_data[param] = 5222
- for param in ('JabberID', 'Password', 'Server'):
+ for param in ('JabberID', 'Password', C.FORCE_SERVER_PARAM):
if not session_data[param]:
form_ui = xml_tools.XMLUI("popup", title=D_("Missing values"))
form_ui.addText(D_("No user, password or server given: can't register new account."))
@@ -71,7 +71,7 @@ class RegisterAccount(object):
user = jid.parse(session_data['JabberID'])[0]
session_id, dummy = self._sessions.newSession(session_data, profile)
form_ui = xml_tools.XMLUI("form", title=D_("Register new account"), submit_id=self.__register_account_id, session_id=session_id)
- form_ui.addText(D_("Do you want to register a new XMPP account [%(user)s] on server %(server)s ?") % {'user': user, 'server': session_data['Server']})
+ form_ui.addText(D_("Do you want to register a new XMPP account [%(user)s] on server %(server)s ?") % {'user': user, 'server': session_data[C.FORCE_SERVER_PARAM]})
return {'xmlui': form_ui.toXml()}
def _registerConfirmation(self, data, profile):
@@ -80,11 +80,11 @@ class RegisterAccount(object):
self.host.memory.setParam("JabberID", session_data["JabberID"], "Connection", profile_key=profile)
self.host.memory.setParam("Password", session_data["Password"], "Connection", profile_key=profile)
- self.host.memory.setParam("Server", session_data["Server"], "Connection", profile_key=profile)
- self.host.memory.setParam("Port", session_data["Port"], "Connection", profile_key=profile)
+ self.host.memory.setParam(C.FORCE_SERVER_PARAM, session_data[C.FORCE_SERVER_PARAM], "Connection", profile_key=profile)
+ self.host.memory.setParam(C.FORCE_PORT_PARAM, session_data[C.FORCE_PORT_PARAM], "Connection", profile_key=profile)
user = jid.parse(session_data['JabberID'])[0]
- d = self._registerNewAccount(user, session_data["Password"], None, session_data["Server"], profile_key=profile)
+ d = self._registerNewAccount(user, session_data["Password"], None, session_data[C.FORCE_SERVER_PARAM], profile_key=profile)
del self._sessions[data['session_id']]
return d
diff --git a/src/stdui/ui_profile_manager.py b/src/stdui/ui_profile_manager.py
index 407adb5f..b76d09d6 100644
--- a/src/stdui/ui_profile_manager.py
+++ b/src/stdui/ui_profile_manager.py
@@ -110,7 +110,7 @@ class ProfileManager(object):
def _changeXMPPPassword(self, data, profile):
session_data = self._sessions.profileGetUnique(profile)
if not session_data:
- server = self.host.memory.getParamA("Server", "Connection", profile_key=profile)
+ server = self.host.memory.getParamA(C.FORCE_SERVER_PARAM, "Connection", profile_key=profile)
session_id, session_data = self._sessions.newSession({'count': 0, 'server': server}, profile)
if session_data['count'] > 2: # 3 attempts with a new password after the initial try
self._sessions.profileDelUnique(profile)