Commit 6d7ceb67 authored by Adrian Georgescu's avatar Adrian Georgescu

Added NAT traversal section in Preferences and STUN servers settings

parent 27df9531
...@@ -18,7 +18,7 @@ from zope.interface import implementer ...@@ -18,7 +18,7 @@ from zope.interface import implementer
from sipsimple.account import AccountManager, BonjourAccount from sipsimple.account import AccountManager, BonjourAccount
from sipsimple.application import SIPApplication from sipsimple.application import SIPApplication
from sipsimple.configuration import DefaultValue from sipsimple.configuration import DefaultValue
from sipsimple.configuration.datatypes import H264Profile, MSRPRelayAddress, Path, PortRange, SIPProxyAddress from sipsimple.configuration.datatypes import H264Profile, MSRPRelayAddress, Path, PortRange, SIPProxyAddress, STUNServerAddress, STUNServerAddressList
from sipsimple.configuration.settings import SIPSimpleSettings from sipsimple.configuration.settings import SIPSimpleSettings
from sipsimple.threading import run_in_thread from sipsimple.threading import run_in_thread
...@@ -234,6 +234,7 @@ class PreferencesWindow(base_class, ui_class, metaclass=QSingleton): ...@@ -234,6 +234,7 @@ class PreferencesWindow(base_class, ui_class, metaclass=QSingleton):
self.auth_username_editor.editingFinished.connect(self._SH_AuthUsernameEditorEditingFinished) self.auth_username_editor.editingFinished.connect(self._SH_AuthUsernameEditorEditingFinished)
self.always_use_my_msrp_relay_button.clicked.connect(self._SH_AlwaysUseMyMSRPRelayButtonClicked) self.always_use_my_msrp_relay_button.clicked.connect(self._SH_AlwaysUseMyMSRPRelayButtonClicked)
self.msrp_relay_host_editor.editingFinished.connect(self._SH_MSRPRelayHostEditorEditingFinished) self.msrp_relay_host_editor.editingFinished.connect(self._SH_MSRPRelayHostEditorEditingFinished)
self.stun_server_list_editor.editingFinished.connect(self._SH_StunServerListEditorEditingFinished)
self.msrp_relay_port.valueChanged[int].connect(self._SH_MSRPRelayPortValueChanged) self.msrp_relay_port.valueChanged[int].connect(self._SH_MSRPRelayPortValueChanged)
self.msrp_relay_transport_button.activated[str].connect(self._SH_MSRPRelayTransportButtonActivated) self.msrp_relay_transport_button.activated[str].connect(self._SH_MSRPRelayTransportButtonActivated)
self.voicemail_uri_editor.editingFinished.connect(self._SH_VoicemailURIEditorEditingFinished) self.voicemail_uri_editor.editingFinished.connect(self._SH_VoicemailURIEditorEditingFinished)
...@@ -241,7 +242,7 @@ class PreferencesWindow(base_class, ui_class, metaclass=QSingleton): ...@@ -241,7 +242,7 @@ class PreferencesWindow(base_class, ui_class, metaclass=QSingleton):
self.server_tools_url_editor.editingFinished.connect(self._SH_ServerToolsURLEditorEditingFinished) self.server_tools_url_editor.editingFinished.connect(self._SH_ServerToolsURLEditorEditingFinished)
self.conference_server_editor.editingFinished.connect(self._SH_ConferenceServerEditorEditingFinished) self.conference_server_editor.editingFinished.connect(self._SH_ConferenceServerEditorEditingFinished)
# Account network settings # Account NAT traversal settings
self.use_ice_button.clicked.connect(self._SH_UseICEButtonClicked) self.use_ice_button.clicked.connect(self._SH_UseICEButtonClicked)
self.msrp_transport_button.activated[str].connect(self._SH_MSRPTransportButtonActivated) self.msrp_transport_button.activated[str].connect(self._SH_MSRPTransportButtonActivated)
...@@ -820,6 +821,12 @@ class PreferencesWindow(base_class, ui_class, metaclass=QSingleton): ...@@ -820,6 +821,12 @@ class PreferencesWindow(base_class, ui_class, metaclass=QSingleton):
self.always_use_my_proxy_button.setChecked(account.sip.always_use_my_proxy) self.always_use_my_proxy_button.setChecked(account.sip.always_use_my_proxy)
outbound_proxy = account.sip.outbound_proxy or UnspecifiedOutboundProxy outbound_proxy = account.sip.outbound_proxy or UnspecifiedOutboundProxy
self.outbound_proxy_host_editor.setText(outbound_proxy.host) self.outbound_proxy_host_editor.setText(outbound_proxy.host)
if account.nat_traversal.stun_server_list:
stun_server_list = ", ".join('%s:%s' % (s.host, s.port) for s in account.nat_traversal.stun_server_list)
else:
stun_server_list = ""
self.stun_server_list_editor.setText(stun_server_list)
with blocked_qt_signals(self.outbound_proxy_port): with blocked_qt_signals(self.outbound_proxy_port):
self.outbound_proxy_port.setValue(outbound_proxy.port) self.outbound_proxy_port.setValue(outbound_proxy.port)
self.outbound_proxy_transport_button.setCurrentIndex(self.outbound_proxy_transport_button.findText(outbound_proxy.transport.upper())) self.outbound_proxy_transport_button.setCurrentIndex(self.outbound_proxy_transport_button.findText(outbound_proxy.transport.upper()))
...@@ -1026,7 +1033,7 @@ class PreferencesWindow(base_class, ui_class, metaclass=QSingleton): ...@@ -1026,7 +1033,7 @@ class PreferencesWindow(base_class, ui_class, metaclass=QSingleton):
if tab_widget.indexOf(self.server_settings_tab) == -1: if tab_widget.indexOf(self.server_settings_tab) == -1:
tab_widget.addTab(self.server_settings_tab, "Server Settings") tab_widget.addTab(self.server_settings_tab, "Server Settings")
if tab_widget.indexOf(self.network_tab) == -1: if tab_widget.indexOf(self.network_tab) == -1:
tab_widget.addTab(self.network_tab, "Network") tab_widget.addTab(self.network_tab, "NAT Traversal")
if tab_widget.indexOf(self.advanced_tab) == -1: if tab_widget.indexOf(self.advanced_tab) == -1:
tab_widget.addTab(self.advanced_tab, "Advanced") tab_widget.addTab(self.advanced_tab, "Advanced")
self.password_label.show() self.password_label.show()
...@@ -1233,12 +1240,44 @@ class PreferencesWindow(base_class, ui_class, metaclass=QSingleton): ...@@ -1233,12 +1240,44 @@ class PreferencesWindow(base_class, ui_class, metaclass=QSingleton):
account.nat_traversal.msrp_relay = msrp_relay account.nat_traversal.msrp_relay = msrp_relay
account.save() account.save()
def _SH_StunServerListEditorEditingFinished(self):
account = self.selected_account
stun_server_list = self.stun_server_list_editor.text().strip().lower() or ''
new_stun_server_list = []
if stun_server_list:
for server in stun_server_list.split(","):
try:
(host, port) = server.strip().split(':')
except ValueError:
host = server
port = STUNServerAddress.default_port
else:
try:
int(port)
except (TypeError, ValueError) as e:
port = STUNServerAddress.default_port
try:
new_stun_server_list.append(STUNServerAddress(host, port))
except ValueError as e:
continue
new_stun_server_list = new_stun_server_list or None
if account.nat_traversal.stun_server_list != new_stun_server_list:
try:
account.nat_traversal.stun_server_list = new_stun_server_list
account.save()
except ValueError as e:
pass
def _SH_MSRPRelayPortValueChanged(self, value): def _SH_MSRPRelayPortValueChanged(self, value):
account = self.selected_account account = self.selected_account
msrp_relay = self.account_msrp_relay msrp_relay = self.account_msrp_relay
if account.nat_traversal.msrp_relay != msrp_relay: if account.nat_traversal.msrp_relay != msrp_relay:
account.nat_traversal.msrp_relay = msrp_relay account.nat_traversal.msrp_relay = msrp_relay
account.save() account.save()
def _SH_MSRPRelayTransportButtonActivated(self, text): def _SH_MSRPRelayTransportButtonActivated(self, text):
account = self.selected_account account = self.selected_account
......
...@@ -10,6 +10,12 @@ ...@@ -10,6 +10,12 @@
<height>630</height> <height>630</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>890</width> <width>890</width>
...@@ -72,7 +78,7 @@ ...@@ -72,7 +78,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0" colspan="2"> <item row="1" column="0" colspan="4">
<widget class="QWidget" name="account_buttons_widget" native="true"> <widget class="QWidget" name="account_buttons_widget" native="true">
<layout class="QHBoxLayout" name="account_buttons_layout"> <layout class="QHBoxLayout" name="account_buttons_layout">
<property name="spacing"> <property name="spacing">
...@@ -155,10 +161,10 @@ ...@@ -155,10 +161,10 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="3">
<widget class="QTabWidget" name="account_tab_widget"> <widget class="QTabWidget" name="account_tab_widget">
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>3</number>
</property> </property>
<widget class="QWidget" name="account_information_tab"> <widget class="QWidget" name="account_information_tab">
<attribute name="title"> <attribute name="title">
...@@ -239,7 +245,7 @@ ...@@ -239,7 +245,7 @@
<item row="0" column="0" colspan="2"> <item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="account_enabled_button"> <widget class="QCheckBox" name="account_enabled_button">
<property name="text"> <property name="text">
<string>Use account</string> <string>Enable account</string>
</property> </property>
</widget> </widget>
</item> </item>
...@@ -258,369 +264,6 @@ ...@@ -258,369 +264,6 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="media_tab">
<attribute name="title">
<string>Media</string>
</attribute>
<layout class="QGridLayout" name="media_tab_layout">
<property name="leftMargin">
<number>10</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>10</number>
</property>
<property name="bottomMargin">
<number>10</number>
</property>
<property name="spacing">
<number>5</number>
</property>
<item row="5" column="0" colspan="2">
<widget class="QWidget" name="rtp_options_widget" native="true">
<layout class="QGridLayout" name="rtp_options_widget_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="2" column="1" colspan="2">
<widget class="QCheckBox" name="inband_dtmf_button">
<property name="text">
<string>Send inband DTMF</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="key_negotiation_button">
<item>
<property name="text">
<string>Opportunistic</string>
</property>
</item>
<item>
<property name="text">
<string>ZRTP</string>
</property>
</item>
<item>
<property name="text">
<string>SDES optional</string>
</property>
</item>
<item>
<property name="text">
<string>SDES mandatory</string>
</property>
</item>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="key_negotiation_label">
<property name="text">
<string>Encryption:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="rtp_options_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Options</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="Line" name="line_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="5" column="2">
<spacer name="key_negotiation_spacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="1" colspan="2">
<widget class="QCheckBox" name="rtp_encryption_button">
<property name="text">
<string>Encrypt audio and video</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="account_auto_answer">
<property name="text">
<string>Auto answer from allowed contacts</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="account_audio_codecs_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Audio Codecs</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<spacer name="media_spacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QLabel" name="account_video_codecs_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Video Codecs</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="Line" name="line_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QListWidget" name="account_audio_codecs_list">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="dragEnabled">
<bool>true</bool>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::InternalMove</enum>
</property>
<item>
<property name="text">
<string>opus</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
<item>
<property name="text">
<string>speex</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
<item>
<property name="text">
<string>G722</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
<item>
<property name="text">
<string>GSM</string>
</property>
<property name="checkState">
<enum>Unchecked</enum>
</property>
</item>
<item>
<property name="text">
<string>iLBC</string>
</property>
<property name="checkState">
<enum>Unchecked</enum>
</property>
</item>
<item>
<property name="text">
<string>PCMU</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
<item>
<property name="text">
<string>PCMA</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QWidget" name="reset_buttons_widget" native="true">
<layout class="QHBoxLayout" name="reset_buttons_widget_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="reset_account_audio_codecs_button">
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="codecs_note_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Drag codecs to change their order</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="reset_account_video_codecs_button">
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="1">
<widget class="QListWidget" name="account_video_codecs_list">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="dragEnabled">
<bool>true</bool>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::InternalMove</enum>
</property>
<item>
<property name="text">
<string>H264</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
<item>
<property name="text">
<string>VP8</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
<item>
<property name="text">
<string>VP9</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
</widget>
</item>
<item row="4" column="0" colspan="2">
<spacer name="media_spacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>25</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="Line" name="line_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="server_settings_tab"> <widget class="QWidget" name="server_settings_tab">
<attribute name="title"> <attribute name="title">
<string>Server Settings</string> <string>Server Settings</string>
...@@ -650,7 +293,7 @@ ...@@ -650,7 +293,7 @@
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>SIP Proxy</string> <string>SIP Proxy server</string>
</property> </property>
</widget> </widget>
</item> </item>
...@@ -664,7 +307,7 @@ ...@@ -664,7 +307,7 @@
<item row="2" column="1" colspan="5"> <item row="2" column="1" colspan="5">
<widget class="QCheckBox" name="always_use_my_proxy_button"> <widget class="QCheckBox" name="always_use_my_proxy_button">
<property name="text"> <property name="text">
<string>Always use my proxy for outgoing sessions</string> <string>Always use the proxy server for outgoing sessions</string>
</property> </property>
</widget> </widget>
</item> </item>
...@@ -753,106 +396,6 @@ ...@@ -753,106 +396,6 @@
<widget class="QLineEdit" name="auth_username_editor"/> <widget class="QLineEdit" name="auth_username_editor"/>
</item> </item>
<item row="5" column="0" colspan="6"> <item row="5" column="0" colspan="6">
<widget class="QLabel" name="msrp_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">margin-top: 20px;</string>
</property>
<property name="text">
<string>MSRP Relay</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="6">
<widget class="Line" name="line_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="7" column="1" colspan="5">
<widget class="QCheckBox" name="always_use_my_msrp_relay_button">
<property name="text">
<string>Always use my relay for outgoing sessions</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="msrp_relay_label">
<property name="text">
<string>MSRP Relay:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="LineEdit" name="msrp_relay_host_editor">
<property name="inactiveText" stdset="0">
<string>Relay address taken from DNS</string>
</property>
<property name="widgetSpacing" stdset="0">
<number>0</number>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="QLabel" name="msrp_relay_port_label">
<property name="text">
<string>Port:</string>
</property>
<property name="indent">
<number>3</number>
</property>
</widget>
</item>
<item row="8" column="3">
<widget class="QSpinBox" name="msrp_relay_port">
<property name="specialValueText">
<string>2855</string>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item row="8" column="4">
<widget class="QLabel" name="msrp_relay_transport_label">
<property name="text">
<string>Transport:</string>
</property>
<property name="indent">
<number>3</number>
</property>
</widget>
</item>
<item row="8" column="5">
<widget class="QComboBox" name="msrp_relay_transport_button">
<item>
<property name="text">
<string>TLS</string>
</property>
</item>
<item>
<property name="text">
<string>TCP</string>
</property>
</item>
</widget>
</item>
<item row="9" column="0" colspan="6">
<widget class="QLabel" name="voicemail_label"> <widget class="QLabel" name="voicemail_label">
<property name="font"> <property name="font">
<font> <font>
...@@ -864,18 +407,18 @@ ...@@ -864,18 +407,18 @@
<string notr="true">margin-top: 20px;</string> <string notr="true">margin-top: 20px;</string>
</property> </property>
<property name="text"> <property name="text">
<string>Extra Server Settings</string> <string>Other Servers</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="10" column="0" colspan="6"> <item row="6" column="0" colspan="6">
<widget class="Line" name="line_5"> <widget class="Line" name="line_5">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item row="11" column="0"> <item row="7" column="0">
<widget class="QLabel" name="voicemail_uri_label"> <widget class="QLabel" name="voicemail_uri_label">
<property name="text"> <property name="text">
<string>Voicemail URI:</string> <string>Voicemail URI:</string>
...@@ -885,7 +428,7 @@ ...@@ -885,7 +428,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="11" column="1" colspan="5"> <item row="7" column="1" colspan="5">
<widget class="LineEdit" name="voicemail_uri_editor"> <widget class="LineEdit" name="voicemail_uri_editor">
<property name="inactiveText" stdset="0"> <property name="inactiveText" stdset="0">
<string>Discovered by subscribing to myself</string> <string>Discovered by subscribing to myself</string>
...@@ -895,7 +438,7 @@ ...@@ -895,7 +438,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="12" column="0"> <item row="8" column="0">
<widget class="QLabel" name="xcap_root_label"> <widget class="QLabel" name="xcap_root_label">
<property name="text"> <property name="text">
<string>XCAP Root URL:</string> <string>XCAP Root URL:</string>
...@@ -905,7 +448,7 @@ ...@@ -905,7 +448,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="12" column="1" colspan="5"> <item row="8" column="1" colspan="5">
<widget class="LineEdit" name="xcap_root_editor"> <widget class="LineEdit" name="xcap_root_editor">
<property name="inactiveText" stdset="0"> <property name="inactiveText" stdset="0">
<string>Taken from the DNS TXT record for xcap.domain</string> <string>Taken from the DNS TXT record for xcap.domain</string>
...@@ -915,20 +458,20 @@ ...@@ -915,20 +458,20 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="13" column="1" colspan="5"> <item row="9" column="1" colspan="5">
<widget class="QLineEdit" name="server_tools_url_editor"/> <widget class="QLineEdit" name="server_tools_url_editor"/>
</item> </item>
<item row="13" column="0"> <item row="9" column="0">
<widget class="QLabel" name="server_tools_url_label"> <widget class="QLabel" name="server_tools_url_label">
<property name="text"> <property name="text">
<string>Server Tools URL:</string> <string>Server Setting URL:</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="15" column="0" colspan="6"> <item row="11" column="0" colspan="6">
<spacer name="server_settings_spacer"> <spacer name="server_settings_spacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
...@@ -941,138 +484,744 @@ ...@@ -941,138 +484,744 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="14" column="0"> <item row="10" column="0">
<widget class="QLabel" name="conference_server_label"> <widget class="QLabel" name="conference_server_label">
<property name="text"> <property name="text">
<string>Conference Server:</string> <string>Conference Server:</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="14" column="1" colspan="5"> <item row="10" column="1" colspan="5">
<widget class="LineEdit" name="conference_server_editor"> <widget class="LineEdit" name="conference_server_editor">
<property name="widgetSpacing" stdset="0"> <property name="widgetSpacing" stdset="0">
<number>0</number> <number>0</number>
</property>
<property name="inactiveText" stdset="0">
<string>conference.sip2sip.info</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="network_tab">
<attribute name="title">
<string>NAT Traversal</string>
</attribute>
<widget class="QWidget" name="widget" native="true">
<property name="geometry">
<rect>
<x>0</x>
<y>170</y>
<width>621</width>
<height>201</height>
</rect>
</property>
<widget class="Line" name="rtp_line">
<property name="geometry">
<rect>
<x>9</x>
<y>45</y>
<width>611</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QLabel" name="rtp_label">
<property name="geometry">
<rect>
<x>6</x>
<y>10</y>
<width>171</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">margin-top: 20px;</string>
</property>
<property name="text">
<string>Audio and Video</string>
</property>
</widget>
<widget class="QCheckBox" name="use_ice_button">
<property name="geometry">
<rect>
<x>108</x>
<y>60</y>
<width>199</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>Enable ICE</string>
</property>
</widget>
<widget class="QLineEdit" name="stun_server_list_editor">
<property name="geometry">
<rect>
<x>110</x>
<y>90</y>
<width>490</width>
<height>27</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>server1.com:3566, server2.com:3456</string>
</property>
</widget>
<widget class="QLabel" name="stun_label">
<property name="geometry">
<rect>
<x>6</x>
<y>88</y>
<width>96</width>
<height>27</height>
</rect>
</property>
<property name="text">
<string>STUN servers:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</widget>
<widget class="QWidget" name="widget_2" native="true">
<property name="geometry">
<rect>
<x>0</x>
<y>-20</y>
<width>631</width>
<height>201</height>
</rect>
</property>
<widget class="Line" name="msrp_line">
<property name="geometry">
<rect>
<x>9</x>
<y>43</y>
<width>613</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QLabel" name="msrp_label">
<property name="geometry">
<rect>
<x>6</x>
<y>10</y>
<width>181</width>
<height>37</height>
</rect>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">margin-top: 20px;</string>
</property>
<property name="text">
<string>Chat and File transfers</string>
</property>
</widget>
<widget class="LineEdit" name="msrp_relay_host_editor">
<property name="geometry">
<rect>
<x>110</x>
<y>89</y>
<width>490</width>
<height>27</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="inactiveText" stdset="0">
<string>Relay address is learned from DNS</string>
</property>
<property name="widgetSpacing" stdset="0">
<number>0</number>
</property>
</widget>
<widget class="QLabel" name="msrp_relay_label">
<property name="geometry">
<rect>
<x>9</x>
<y>92</y>
<width>95</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>MSRP Relay:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QLabel" name="msrp_relay_transport_label">
<property name="geometry">
<rect>
<x>30</x>
<y>160</y>
<width>73</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>Transport:</string>
</property>
<property name="indent">
<number>3</number>
</property>
</widget>
<widget class="QSpinBox" name="msrp_relay_port">
<property name="geometry">
<rect>
<x>110</x>
<y>122</y>
<width>74</width>
<height>27</height>
</rect>
</property>
<property name="specialValueText">
<string>2855</string>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
<widget class="QComboBox" name="msrp_relay_transport_button">
<property name="geometry">
<rect>
<x>110</x>
<y>155</y>
<width>55</width>
<height>27</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>TLS</string>
</property> </property>
<property name="inactiveText" stdset="0"> </item>
<string>conference.sip2sip.info</string> <item>
<property name="text">
<string>TCP</string>
</property> </property>
</widget> </item>
</item> </widget>
</layout> <widget class="QCheckBox" name="always_use_my_msrp_relay_button">
<property name="geometry">
<rect>
<x>108</x>
<y>61</y>
<width>317</width>
<height>22</height>
</rect>
</property>
<property name="toolTip">
<string>Normally the realy is used only for incoming sessions</string>
</property>
<property name="toolTipDuration">
<number>5</number>
</property>
<property name="text">
<string>Always use the relay for outgoing sessions</string>
</property>
</widget>
<widget class="QLabel" name="msrp_relay_port_label">
<property name="geometry">
<rect>
<x>66</x>
<y>127</y>
<width>37</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>Port:</string>
</property>
<property name="indent">
<number>3</number>
</property>
</widget>
</widget>
</widget> </widget>
<widget class="QWidget" name="network_tab"> <widget class="QWidget" name="media_tab">
<attribute name="title"> <attribute name="title">
<string>NAT Traversal</string> <string>Media</string>
</attribute> </attribute>
<layout class="QGridLayout" name="network_tab_layout"> <widget class="QWidget" name="rtp_options_widget" native="true">
<property name="leftMargin"> <property name="geometry">
<number>10</number> <rect>
<x>10</x>
<y>290</y>
<width>571</width>
<height>181</height>
</rect>
</property> </property>
<property name="topMargin"> <layout class="QGridLayout" name="rtp_options_widget_layout">
<number>10</number> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="4" column="1" colspan="2">
<widget class="QCheckBox" name="inband_dtmf_button">
<property name="text">
<string>Send inband DTMF</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="key_negotiation_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<item>
<property name="text">
<string>Opportunistic</string>
</property>
</item>
<item>
<property name="text">
<string>ZRTP</string>
</property>
</item>
<item>
<property name="text">
<string>SDES optional</string>
</property>
</item>
<item>
<property name="text">
<string>SDES mandatory</string>
</property>
</item>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="key_negotiation_label">
<property name="text">
<string>Audio/Video Encryption:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="Line" name="line_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="5" column="1" colspan="2">
<widget class="QCheckBox" name="rtp_encryption_button">
<property name="text">
<string>Encrypt audio and video</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QCheckBox" name="account_auto_answer">
<property name="text">
<string>Auto answer from allowed contacts</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="msrp_transport_label">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>MSRP transport:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QComboBox" name="msrp_transport_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>0</height>
</size>
</property>
<item>
<property name="text">
<string>TLS</string>
</property>
</item>
<item>
<property name="text">
<string>TCP</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
<widget class="QLabel" name="account_audio_codecs_label">
<property name="geometry">
<rect>
<x>20</x>
<y>10</y>
<width>97</width>
<height>17</height>
</rect>
</property> </property>
<property name="rightMargin"> <property name="font">
<number>10</number> <font>
<weight>75</weight>
<bold>true</bold>
</font>
</property> </property>
<property name="bottomMargin"> <property name="text">
<number>10</number> <string>Audio Codecs</string>
</property> </property>
<property name="spacing"> </widget>
<number>5</number> <widget class="QLabel" name="account_video_codecs_label">
<property name="geometry">
<rect>
<x>140</x>
<y>10</y>
<width>97</width>
<height>17</height>
</rect>
</property> </property>
<item row="2" column="1" colspan="2"> <property name="font">
<widget class="QCheckBox" name="use_ice_button"> <font>
<property name="text"> <weight>75</weight>
<string>Enable ICE</string> <bold>true</bold>
</property> </font>
</widget> </property>
<property name="text">
<string>Video Codecs</string>
</property>
</widget>
<widget class="QListWidget" name="account_audio_codecs_list">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>121</width>
<height>161</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="dragEnabled">
<bool>true</bool>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::InternalMove</enum>
</property>
<item>
<property name="text">
<string>opus</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item> </item>
<item row="3" column="0"> <item>
<widget class="QLabel" name="msrp_transport_label"> <property name="text">
<property name="minimumSize"> <string>speex</string>
<size> </property>
<width>105</width> <property name="checkState">
<height>0</height> <enum>Checked</enum>
</size> </property>
</property>
<property name="text">
<string>MSRP Transport:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item> </item>
<item row="3" column="1"> <item>
<widget class="QComboBox" name="msrp_transport_button"> <property name="text">
<property name="minimumSize"> <string>G722</string>
<size> </property>
<width>70</width> <property name="checkState">
<height>0</height> <enum>Checked</enum>
</size> </property>
</property>
<item>
<property name="text">
<string>TLS</string>
</property>
</item>
<item>
<property name="text">
<string>TCP</string>
</property>
</item>
</widget>
</item> </item>
<item row="3" column="2"> <item>
<spacer name="msrp_transport_spacer"> <property name="text">
<property name="orientation"> <string>GSM</string>
<enum>Qt::Horizontal</enum> </property>
</property> <property name="checkState">
<property name="sizeHint" stdset="0"> <enum>Unchecked</enum>
<size> </property>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item> </item>
<item row="4" column="0" colspan="3"> <item>
<spacer name="account_network_spacer"> <property name="text">
<property name="orientation"> <string>iLBC</string>
<enum>Qt::Vertical</enum> </property>
</property> <property name="checkState">
<property name="sizeHint" stdset="0"> <enum>Unchecked</enum>
<size> </property>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item> </item>
<item row="0" column="0" colspan="3"> <item>
<widget class="QLabel" name="label"> <property name="text">
<property name="font"> <string>PCMU</string>
<font> </property>
<weight>75</weight> <property name="checkState">
<bold>true</bold> <enum>Checked</enum>
</font> </property>
</property>
<property name="text">
<string>Network Settings</string>
</property>
</widget>
</item> </item>
<item row="1" column="0" colspan="3"> <item>
<widget class="Line" name="line_2"> <property name="text">
<property name="orientation"> <string>PCMA</string>
<enum>Qt::Horizontal</enum> </property>
</property> <property name="checkState">
</widget> <enum>Checked</enum>
</property>
</item> </item>
</layout> </widget>
<widget class="QWidget" name="reset_buttons_widget" native="true">
<property name="geometry">
<rect>
<x>10</x>
<y>203</y>
<width>571</width>
<height>31</height>
</rect>
</property>
<layout class="QHBoxLayout" name="reset_buttons_widget_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
<widget class="QListWidget" name="account_video_codecs_list">
<property name="geometry">
<rect>
<x>130</x>
<y>40</y>
<width>121</width>
<height>161</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="dragEnabled">
<bool>true</bool>
</property>
<property name="dragDropMode">
<enum>QAbstractItemView::InternalMove</enum>
</property>
<item>
<property name="text">
<string>H264</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
<item>
<property name="text">
<string>VP8</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
<item>
<property name="text">
<string>VP9</string>
</property>
<property name="checkState">
<enum>Checked</enum>
</property>
</item>
</widget>
<widget class="Line" name="line_6">
<property name="geometry">
<rect>
<x>10</x>
<y>23</y>
<width>581</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QLabel" name="codecs_note_label">
<property name="geometry">
<rect>
<x>280</x>
<y>40</y>
<width>231</width>
<height>27</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Drag codecs to change their order</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QPushButton" name="reset_account_audio_codecs_button">
<property name="geometry">
<rect>
<x>30</x>
<y>210</y>
<width>85</width>
<height>27</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Reset</string>
</property>
</widget>
<widget class="QPushButton" name="reset_account_video_codecs_button">
<property name="geometry">
<rect>
<x>150</x>
<y>210</y>
<width>85</width>
<height>27</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Reset</string>
</property>
</widget>
<widget class="QLabel" name="rtp_options_label">
<property name="geometry">
<rect>
<x>10</x>
<y>260</y>
<width>413</width>
<height>27</height>
</rect>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Options</string>
</property>
</widget>
</widget> </widget>
<widget class="QWidget" name="advanced_tab"> <widget class="QWidget" name="advanced_tab">
<attribute name="title"> <attribute name="title">
...@@ -1368,7 +1517,7 @@ ...@@ -1368,7 +1517,7 @@
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>Dialing landline and mobile numbers</string> <string>When calling to phone numbers</string>
</property> </property>
</widget> </widget>
</item> </item>
...@@ -1516,8 +1665,14 @@ ...@@ -1516,8 +1665,14 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="5" column="0">
<widget class="QLabel" name="account_peer_name_label"> <widget class="QLabel" name="account_peer_name_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>140</width> <width>140</width>
...@@ -1532,8 +1687,14 @@ ...@@ -1532,8 +1687,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="2"> <item row="5" column="1" colspan="2">
<widget class="QLineEdit" name="account_tls_name_editor"> <widget class="QLineEdit" name="account_tls_name_editor">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip"> <property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Verify the remote TLS certifcate Common Name against this name&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Verify the remote TLS certifcate Common Name against this name&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
...@@ -2823,7 +2984,7 @@ ...@@ -2823,7 +2984,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>18</x> <x>18</x>
<y>373</y> <y>365</y>
<width>856</width> <width>856</width>
<height>16</height> <height>16</height>
</rect> </rect>
...@@ -2979,7 +3140,7 @@ ...@@ -2979,7 +3140,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>18</x> <x>18</x>
<y>26</y> <y>0</y>
<width>86</width> <width>86</width>
<height>17</height> <height>17</height>
</rect> </rect>
...@@ -3072,7 +3233,7 @@ ...@@ -3072,7 +3233,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>18</x> <x>18</x>
<y>49</y> <y>14</y>
<width>856</width> <width>856</width>
<height>16</height> <height>16</height>
</rect> </rect>
...@@ -3168,7 +3329,7 @@ ...@@ -3168,7 +3329,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>18</x> <x>18</x>
<y>244</y> <y>237</y>
<width>856</width> <width>856</width>
<height>16</height> <height>16</height>
</rect> </rect>
...@@ -3285,10 +3446,10 @@ ...@@ -3285,10 +3446,10 @@
<widget class="QLabel" name="port_note_label"> <widget class="QLabel" name="port_note_label">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>170</x> <x>180</x>
<y>200</y> <y>30</y>
<width>288</width> <width>288</width>
<height>17</height> <height>22</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
...@@ -3588,13 +3749,10 @@ ...@@ -3588,13 +3749,10 @@
<tabstop>account_list</tabstop> <tabstop>account_list</tabstop>
<tabstop>add_account_button</tabstop> <tabstop>add_account_button</tabstop>
<tabstop>delete_account_button</tabstop> <tabstop>delete_account_button</tabstop>
<tabstop>account_tab_widget</tabstop>
<tabstop>account_enabled_button</tabstop> <tabstop>account_enabled_button</tabstop>
<tabstop>display_name_editor</tabstop> <tabstop>display_name_editor</tabstop>
<tabstop>password_editor</tabstop> <tabstop>password_editor</tabstop>
<tabstop>reset_account_audio_codecs_button</tabstop>
<tabstop>account_audio_codecs_list</tabstop> <tabstop>account_audio_codecs_list</tabstop>
<tabstop>reset_account_video_codecs_button</tabstop>
<tabstop>account_video_codecs_list</tabstop> <tabstop>account_video_codecs_list</tabstop>
<tabstop>inband_dtmf_button</tabstop> <tabstop>inband_dtmf_button</tabstop>
<tabstop>rtp_encryption_button</tabstop> <tabstop>rtp_encryption_button</tabstop>
...@@ -3604,16 +3762,10 @@ ...@@ -3604,16 +3762,10 @@
<tabstop>outbound_proxy_port</tabstop> <tabstop>outbound_proxy_port</tabstop>
<tabstop>outbound_proxy_transport_button</tabstop> <tabstop>outbound_proxy_transport_button</tabstop>
<tabstop>auth_username_editor</tabstop> <tabstop>auth_username_editor</tabstop>
<tabstop>always_use_my_msrp_relay_button</tabstop>
<tabstop>msrp_relay_host_editor</tabstop>
<tabstop>msrp_relay_port</tabstop>
<tabstop>msrp_relay_transport_button</tabstop>
<tabstop>voicemail_uri_editor</tabstop> <tabstop>voicemail_uri_editor</tabstop>
<tabstop>xcap_root_editor</tabstop> <tabstop>xcap_root_editor</tabstop>
<tabstop>server_tools_url_editor</tabstop> <tabstop>server_tools_url_editor</tabstop>
<tabstop>conference_server_editor</tabstop> <tabstop>conference_server_editor</tabstop>
<tabstop>use_ice_button</tabstop>
<tabstop>msrp_transport_button</tabstop>
<tabstop>reregister_button</tabstop> <tabstop>reregister_button</tabstop>
<tabstop>register_interval</tabstop> <tabstop>register_interval</tabstop>
<tabstop>publish_interval</tabstop> <tabstop>publish_interval</tabstop>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment