From 968a44dbaf9b98f4273542211f7156eb0d645b16 Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Wed, 29 Jul 2009 12:56:59 +0200
Subject: [PATCH] stringprep nick and room jid in manage bookmark dialog.

---
 src/config.py | 30 ++++++++++++++++++++++++++----
 1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/src/config.py b/src/config.py
index fbc9077905..2fcad148d0 100644
--- a/src/config.py
+++ b/src/config.py
@@ -2906,20 +2906,42 @@ class ManageBookmarksWindow:
 	def on_nick_entry_changed(self, widget):
 		(model, iter_) = self.selection.get_selected()
 		if iter_:
-			model[iter_][6] = self.nick_entry.get_text()
+			nick = self.nick_entry.get_text().decode('utf-8')
+			try:
+				nick = helpers.parse_resource(nick)
+			except helpers.InvalidFormat, e:
+				dialogs.ErrorDialog(_('Invalid nickname'),
+					_('Character not allowed'))
+				self.nick_entry.set_text(model[iter_][6])
+				return True
+			model[iter_][6] = nick
 
 	def on_server_entry_changed(self, widget):
 		(model, iter_) = self.selection.get_selected()
 		if iter_:
 			room_jid = self.room_entry.get_text().decode('utf-8').strip() + '@' + \
 				self.server_entry.get_text().decode('utf-8').strip()
-			model[iter_][2] = room_jid.replace(' ', '')
+			try:
+				room_jid = helpers.parse_resource(room_jid)
+			except helpers.InvalidFormat, e:
+				dialogs.ErrorDialog(_('Invalid server'),
+					_('Character not allowed'))
+				self.server_entry.set_text(model[iter_][2].split('@')[1])
+				return True
+			model[iter_][2] = room_jid
 
 	def on_room_entry_changed(self, widget):
 		(model, iter_) = self.selection.get_selected()
 		if iter_:
-			room_jid = self.room_entry.get_text().decode('utf-8') + '@' + \
-				self.server_entry.get_text().decode('utf-8')
+			room_jid = self.room_entry.get_text().decode('utf-8').strip() + '@' + \
+				self.server_entry.get_text().decode('utf-8').strip()
+			try:
+				room_jid = helpers.parse_resource(room_jid)
+			except helpers.InvalidFormat, e:
+				dialogs.ErrorDialog(_('Invalid room'),
+					_('Character not allowed'))
+				self.room_entry.set_text(model[iter_][2].split('@')[0])
+				return True
 			model[iter_][2] = room_jid
 
 	def on_pass_entry_changed(self, widget):
-- 
GitLab