From 19e302b9181c54de6d4a71cbfdc6a7aaeba5eb80 Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Fri, 17 Jul 2009 11:20:28 +0200
Subject: [PATCH] bosh port must now be included in bosh URI

---
 data/glade/manage_proxies_window.glade | 135 ++++++++++++-------------
 src/common/config.py                   |   1 -
 src/common/connection.py               |   2 +-
 src/common/xmpp/bosh.py                |   5 +-
 src/common/xmpp/transports_nb.py       |   8 +-
 src/config.py                          |  12 ---
 6 files changed, 73 insertions(+), 90 deletions(-)

diff --git a/data/glade/manage_proxies_window.glade b/data/glade/manage_proxies_window.glade
index 81e5b6799c..7a0029d2fe 100644
--- a/data/glade/manage_proxies_window.glade
+++ b/data/glade/manage_proxies_window.glade
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
+<?xml version="1.0"?>
 <glade-interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy toplevel-contextual -->
   <widget class="GtkWindow" id="manage_proxies_window">
     <property name="border_width">12</property>
     <property name="title" translatable="yes">Manage Proxy Profiles</property>
@@ -22,9 +22,9 @@
                   <widget class="GtkScrolledWindow" id="scrolledwindow38">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_IN</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">in</property>
                     <child>
                       <widget class="GtkTreeView" id="proxies_treeview">
                         <property name="visible">True</property>
@@ -35,34 +35,44 @@
                       </widget>
                     </child>
                   </widget>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
                 </child>
                 <child>
                   <widget class="GtkHButtonBox" id="hbuttonbox21">
                     <property name="visible">True</property>
                     <property name="spacing">6</property>
-                    <property name="layout_style">GTK_BUTTONBOX_END</property>
+                    <property name="layout_style">end</property>
                     <child>
                       <widget class="GtkButton" id="add_proxy_button">
+                        <property name="label">gtk-add</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="can_default">True</property>
-                        <property name="label">gtk-add</property>
+                        <property name="receives_default">False</property>
                         <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
                         <signal name="clicked" handler="on_add_proxy_button_clicked"/>
                       </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
                     </child>
                     <child>
                       <widget class="GtkButton" id="remove_proxy_button">
+                        <property name="label">gtk-remove</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="can_default">True</property>
-                        <property name="label">gtk-remove</property>
+                        <property name="receives_default">False</property>
                         <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
                         <signal name="clicked" handler="on_remove_proxy_button_clicked"/>
                       </widget>
                       <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
@@ -73,6 +83,9 @@
                   </packing>
                 </child>
               </widget>
+              <packing>
+                <property name="position">0</property>
+              </packing>
             </child>
             <child>
               <widget class="GtkVBox" id="vbox90">
@@ -81,7 +94,7 @@
                   <widget class="GtkFrame" id="frame34">
                     <property name="visible">True</property>
                     <property name="label_xalign">0</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
+                    <property name="shadow_type">none</property>
                     <child>
                       <widget class="GtkAlignment" id="alignment72">
                         <property name="visible">True</property>
@@ -165,13 +178,16 @@ BOSH</property>
                       </packing>
                     </child>
                   </widget>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
                 </child>
                 <child>
                   <widget class="GtkFrame" id="frame23">
                     <property name="visible">True</property>
                     <property name="border_width">6</property>
                     <property name="label_xalign">0</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
+                    <property name="shadow_type">none</property>
                     <child>
                       <widget class="GtkAlignment" id="alignment51">
                         <property name="visible">True</property>
@@ -180,53 +196,24 @@ BOSH</property>
                           <widget class="GtkTable" id="proxy_table">
                             <property name="visible">True</property>
                             <property name="sensitive">False</property>
-                            <property name="n_rows">8</property>
+                            <property name="n_rows">7</property>
                             <property name="n_columns">2</property>
                             <property name="column_spacing">12</property>
                             <property name="row_spacing">6</property>
-                            <child>
-                              <widget class="GtkEntry" id="boshport_entry">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <signal name="changed" handler="on_boshport_entry_changed"/>
-                              </widget>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="y_options"></property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="boshport_label">
-                                <property name="visible">True</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">B_OSH Port:</property>
-                                <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">boshport_entry</property>
-                              </widget>
-                              <packing>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
-                              </packing>
-                            </child>
                             <child>
                               <widget class="GtkCheckButton" id="boshuseproxy_checkbutton">
+                                <property name="label" translatable="yes">Use HTTP prox_y</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">Use HTTP prox_y</property>
+                                <property name="receives_default">False</property>
                                 <property name="use_underline">True</property>
-                                <property name="response_id">0</property>
                                 <property name="draw_indicator">True</property>
                                 <signal name="toggled" handler="on_boshuseproxy_checkbutton_toggled"/>
                               </widget>
                               <packing>
                                 <property name="right_attach">2</property>
-                                <property name="top_attach">2</property>
-                                <property name="bottom_attach">3</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
                                 <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"></property>
                               </packing>
@@ -258,18 +245,18 @@ BOSH</property>
                             </child>
                             <child>
                               <widget class="GtkCheckButton" id="useauth_checkbutton">
+                                <property name="label" translatable="yes">Use proxy auth_entication</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">Use proxy auth_entication</property>
+                                <property name="receives_default">False</property>
                                 <property name="use_underline">True</property>
-                                <property name="response_id">0</property>
                                 <property name="draw_indicator">True</property>
                                 <signal name="toggled" handler="on_useauth_checkbutton_toggled"/>
                               </widget>
                               <packing>
                                 <property name="right_attach">2</property>
-                                <property name="top_attach">5</property>
-                                <property name="bottom_attach">6</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
                                 <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"></property>
                               </packing>
@@ -283,8 +270,8 @@ BOSH</property>
                               <packing>
                                 <property name="left_attach">1</property>
                                 <property name="right_attach">2</property>
-                                <property name="top_attach">6</property>
-                                <property name="bottom_attach">7</property>
+                                <property name="top_attach">5</property>
+                                <property name="bottom_attach">6</property>
                                 <property name="y_options"></property>
                               </packing>
                             </child>
@@ -298,8 +285,8 @@ BOSH</property>
                               <packing>
                                 <property name="left_attach">1</property>
                                 <property name="right_attach">2</property>
-                                <property name="top_attach">7</property>
-                                <property name="bottom_attach">8</property>
+                                <property name="top_attach">6</property>
+                                <property name="bottom_attach">7</property>
                                 <property name="y_options"></property>
                               </packing>
                             </child>
@@ -312,8 +299,8 @@ BOSH</property>
                                 <property name="mnemonic_widget">proxyuser_entry</property>
                               </widget>
                               <packing>
-                                <property name="top_attach">6</property>
-                                <property name="bottom_attach">7</property>
+                                <property name="top_attach">5</property>
+                                <property name="bottom_attach">6</property>
                                 <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"></property>
                               </packing>
@@ -327,8 +314,8 @@ BOSH</property>
                                 <property name="mnemonic_widget">proxypass_entry</property>
                               </widget>
                               <packing>
-                                <property name="top_attach">7</property>
-                                <property name="bottom_attach">8</property>
+                                <property name="top_attach">6</property>
+                                <property name="bottom_attach">7</property>
                                 <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"></property>
                               </packing>
@@ -342,8 +329,8 @@ BOSH</property>
                                 <property name="mnemonic_widget">proxyhost_entry</property>
                               </widget>
                               <packing>
-                                <property name="top_attach">3</property>
-                                <property name="bottom_attach">4</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
                                 <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"></property>
                               </packing>
@@ -357,8 +344,8 @@ BOSH</property>
                               <packing>
                                 <property name="left_attach">1</property>
                                 <property name="right_attach">2</property>
-                                <property name="top_attach">4</property>
-                                <property name="bottom_attach">5</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
                                 <property name="y_options"></property>
                               </packing>
                             </child>
@@ -371,8 +358,8 @@ BOSH</property>
                               <packing>
                                 <property name="left_attach">1</property>
                                 <property name="right_attach">2</property>
-                                <property name="top_attach">3</property>
-                                <property name="bottom_attach">4</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
                                 <property name="y_options"></property>
                               </packing>
                             </child>
@@ -385,8 +372,8 @@ BOSH</property>
                                 <property name="mnemonic_widget">proxyport_entry</property>
                               </widget>
                               <packing>
-                                <property name="top_attach">4</property>
-                                <property name="bottom_attach">5</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
                                 <property name="x_options">GTK_FILL</property>
                                 <property name="y_options"></property>
                               </packing>
@@ -416,23 +403,31 @@ BOSH</property>
               </packing>
             </child>
           </widget>
+          <packing>
+            <property name="position">0</property>
+          </packing>
         </child>
         <child>
           <widget class="GtkHButtonBox" id="hbuttonbox22">
             <property name="visible">True</property>
             <property name="border_width">7</property>
             <property name="spacing">12</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <property name="layout_style">end</property>
             <child>
               <widget class="GtkButton" id="close_button">
+                <property name="label">gtk-close</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
-                <property name="label">gtk-close</property>
+                <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
-                <property name="response_id">0</property>
                 <signal name="clicked" handler="on_close_button_clicked"/>
               </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
             </child>
           </widget>
           <packing>
diff --git a/src/common/config.py b/src/common/config.py
index 884da1df55..4e5104ddaa 100644
--- a/src/common/config.py
+++ b/src/common/config.py
@@ -363,7 +363,6 @@ class Config:
 			'user': [ opt_str, '' ],
 			'pass': [ opt_str, '' ],
 			'bosh_uri': [ opt_str, '' ],
-			'bosh_port': [ opt_int, 80 ],
 			'bosh_useproxy': [ opt_bool, False ],
 			'bosh_wait': [ opt_int, 30 ],
 			'bosh_hold': [ opt_int, 2 ],
diff --git a/src/common/connection.py b/src/common/connection.py
index fe6baec2aa..9b1b13fa8c 100644
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -622,7 +622,7 @@ class Connection(ConnectionHandlers):
 		if self._proxy:
 			msg = '>>>>>> '
 			if self._proxy['type']=='bosh':
-				msg = '%s over BOSH %s:%s' % (msg, self._proxy['bosh_uri'], self._proxy['bosh_port'])
+				msg = '%s over BOSH %s' % (msg, self._proxy['bosh_uri'])
 			if self._proxy['type'] in ['http','socks5'] or self._proxy['bosh_useproxy']:
 				msg = '%s over proxy %s:%s' % (msg, self._proxy['host'], self._proxy['port'])
 			log.info(msg)
diff --git a/src/common/xmpp/bosh.py b/src/common/xmpp/bosh.py
index 1b34adc48c..a1a9bb60a4 100644
--- a/src/common/xmpp/bosh.py
+++ b/src/common/xmpp/bosh.py
@@ -62,7 +62,6 @@ class NonBlockingBOSH(NonBlockingTransport):
 			self.bosh_hold = bosh_dict['bosh_hold']
 		self.bosh_requests = self.bosh_hold
 		self.bosh_uri = bosh_dict['bosh_uri']
-		self.bosh_port = bosh_dict['bosh_port']
 		self.bosh_content = bosh_dict['bosh_content']
 		self.over_proxy = bosh_dict['bosh_useproxy']
 		if estabilish_tls:
@@ -85,7 +84,8 @@ class NonBlockingBOSH(NonBlockingTransport):
 			self.proxy_dict['type'] = 'http'
 			# with SSL over proxy, we do HTTP CONNECT to proxy to open a channel to
 			# BOSH Connection Manager
-			self.proxy_dict['xmpp_server'] = (urisplit(self.bosh_uri)[1], self.bosh_port)
+			host, port = urisplit(self.bosh_uri)[1].split(':', 1)
+			self.proxy_dict['xmpp_server'] = (host, int(port))
 			self.proxy_dict['credentials'] = self.proxy_creds
 
 
@@ -416,7 +416,6 @@ class NonBlockingBOSH(NonBlockingTransport):
 
 	def get_new_http_socket(self):
 		http_dict = {'http_uri': self.bosh_uri,
-			'http_port': self.bosh_port,
 			'http_version': self.http_version,
 			'http_persistent': self.http_persistent,
 			'add_proxy_headers': self.over_proxy and not self.estabilish_tls}
diff --git a/src/common/xmpp/transports_nb.py b/src/common/xmpp/transports_nb.py
index 445f74c5b5..257be28409 100644
--- a/src/common/xmpp/transports_nb.py
+++ b/src/common/xmpp/transports_nb.py
@@ -56,8 +56,9 @@ def get_proxy_data_from_dict(proxy):
 	proxy_type = proxy['type']
 	if proxy_type == 'bosh' and not proxy['bosh_useproxy']:
 		# with BOSH not over proxy we have to parse the hostname from BOSH URI
-		tcp_host, tcp_port = urisplit(proxy['bosh_uri'])[1], proxy['bosh_port']
-		tcp_host = tcp_host.split(':')[0]
+		tcp_host = urisplit(proxy['bosh_uri'])[1]
+		tcp_host, tcp_port = tcp_host.split(':', 1)
+		tcp_port = int(tcp_port)
 	else:
 		# with proxy!=bosh or with bosh over HTTP proxy we're connecting to proxy
 		# machine
@@ -603,9 +604,10 @@ class NonBlockingHTTP(NonBlockingTCP):
 
 		self.http_protocol, self.http_host, self.http_path = urisplit(
 			http_dict['http_uri'])
+		self.http_host, self.http_port = self.http_host.split(':', 1)
+		self.http_port = int(self.http_port)
 		self.http_protocol = self.http_protocol or 'http'
 		self.http_path = self.http_path or '/'
-		self.http_port = http_dict['http_port']
 		self.http_version = http_dict['http_version']
 		self.http_persistent = http_dict['http_persistent']
 		self.add_proxy_headers =  http_dict['add_proxy_headers']
diff --git a/src/config.py b/src/config.py
index 33f2342d31..fbc9077905 100644
--- a/src/config.py
+++ b/src/config.py
@@ -1085,9 +1085,7 @@ class ManageProxiesWindow:
 	def show_bosh_fields(self, show=True):
 		if show:
 			self.xml.get_widget('boshuri_entry').show()
-			self.xml.get_widget('boshport_entry').show()
 			self.xml.get_widget('boshuri_label').show()
-			self.xml.get_widget('boshport_label').show()
 			self.xml.get_widget('boshuseproxy_checkbutton').show()
 		else:
 			cb = self.xml.get_widget('boshuseproxy_checkbutton')
@@ -1095,9 +1093,7 @@ class ManageProxiesWindow:
 			cb.set_active(True)
 			self.on_boshuseproxy_checkbutton_toggled(cb)
 			self.xml.get_widget('boshuri_entry').hide()
-			self.xml.get_widget('boshport_entry').hide()
 			self.xml.get_widget('boshuri_label').hide()
-			self.xml.get_widget('boshport_label').hide()
 
 
 	def fill_proxies_treeview(self):
@@ -1178,7 +1174,6 @@ class ManageProxiesWindow:
 		proxyuser_entry = self.xml.get_widget('proxyuser_entry')
 		proxypass_entry = self.xml.get_widget('proxypass_entry')
 		boshuri_entry = self.xml.get_widget('boshuri_entry')
-		boshport_entry = self.xml.get_widget('boshport_entry')
 		useauth_checkbutton = self.xml.get_widget('useauth_checkbutton')
 		boshuseproxy_checkbutton = self.xml.get_widget('boshuseproxy_checkbutton')
 		proxyhost_entry.set_text('')
@@ -1218,8 +1213,6 @@ class ManageProxiesWindow:
 				'pass'))
 			boshuri_entry.set_text(gajim.config.get_per('proxies', proxy,
 				'bosh_uri'))
-			boshport_entry.set_text(unicode(gajim.config.get_per('proxies', proxy,
-				'bosh_port')))
 			types = ['http', 'socks5', 'bosh']
 			self.proxytype_combobox.set_active(types.index(proxytype))
 			boshuseproxy_checkbutton.set_active(
@@ -1276,11 +1269,6 @@ class ManageProxiesWindow:
 		proxy = self.proxyname_entry.get_text().decode('utf-8')
 		gajim.config.set_per('proxies', proxy, 'bosh_uri', value)
 
-	def on_boshport_entry_changed(self, widget):
-		value = widget.get_text().decode('utf-8')
-		proxy = self.proxyname_entry.get_text().decode('utf-8')
-		gajim.config.set_per('proxies', proxy, 'bosh_port', value)
-
 	def on_proxypass_entry_changed(self, widget):
 		value = widget.get_text().decode('utf-8')
 		proxy = self.proxyname_entry.get_text().decode('utf-8')
-- 
GitLab