summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorLogan Dethrow <log@lindenlab.com>2011-06-28 19:54:53 -0400
committerLogan Dethrow <log@lindenlab.com>2011-06-28 19:54:53 -0400
commit7717b6f647feb250c0b94d038f72a640a7888915 (patch)
treeb021d01c78cd8fde5df522b11e2a71ebef9ed34b /indra/newview
parentf91d40c25949ee8c5b1d5c1babab62d6dd90d0c8 (diff)
STORM-1112 More cleanup of SOCKS 5 proxy code.
Renamed llsocks5.cpp to llproxy.cpp.
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/llfloaterpreference.cpp47
-rw-r--r--indra/newview/llloginhandler.cpp6
-rw-r--r--indra/newview/llpanellogin.h3
-rw-r--r--indra/newview/llsecapi.h4
-rw-r--r--indra/newview/llstartup.cpp80
-rw-r--r--indra/newview/llstartup.h2
-rw-r--r--indra/newview/llxmlrpctransaction.cpp14
-rw-r--r--indra/newview/skins/default/xui/en/floater_preferences_proxy.xml181
-rwxr-xr-xindra/newview/skins/default/xui/en/notifications.xml21
-rw-r--r--indra/newview/skins/default/xui/en/panel_cof_wearables.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_privacy.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_setup.xml2
12 files changed, 203 insertions, 161 deletions
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index c97f0779a1..ebdef8e38f 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -105,7 +105,7 @@
#include "llviewermedia.h"
#include "llpluginclassmedia.h"
#include "llteleporthistorystorage.h"
-#include "llsocks5.h"
+#include "llproxy.h"
#include "lllogininstance.h" // to check if logged in yet
#include "llsdserialize.h"
@@ -1940,15 +1940,19 @@ LLFloaterPreferenceProxy::~LLFloaterPreferenceProxy()
BOOL LLFloaterPreferenceProxy::postBuild()
{
- LLLineEditor* edit = getChild<LLLineEditor>("socks_password_editor");
- if (edit) edit->setDrawAsterixes(TRUE);
-
LLRadioGroup* socksAuth = getChild<LLRadioGroup>("socks5_auth_type");
if(socksAuth->getSelectedValue().asString() == "None")
{
getChild<LLLineEditor>("socks5_username")->setEnabled(false);
getChild<LLLineEditor>("socks5_password")->setEnabled(false);
}
+ else
+ {
+ // Populate the SOCKS 5 credential fields with protected values.
+ LLPointer<LLCredential> socks_cred = gSecAPIHandler->loadCredential("SOCKS5");
+ getChild<LLLineEditor>("socks5_username")->setValue(socks_cred->getIdentifier()["username"].asString());
+ getChild<LLLineEditor>("socks5_password")->setValue(socks_cred->getAuthenticator()["creds"].asString());
+ }
center();
return TRUE;
@@ -1968,11 +1972,8 @@ void LLFloaterPreferenceProxy::onClose(bool app_quitting)
// it will not be updated until next restart.
if(LLStartUp::getStartupState()>STATE_LOGIN_WAIT)
{
- if(this->mSocksSettingsDirty == true )
- {
- LLNotifications::instance().add("ChangeSocks5Settings",LLSD(),LLSD());
- mSocksSettingsDirty = false; // we have notified the user now be quiet again
- }
+ LLNotifications::instance().add("ChangeSocks5Settings", LLSD(), LLSD());
+ mSocksSettingsDirty = false; // we have notified the user now be quiet again
}
}
}
@@ -2006,7 +2007,6 @@ void LLFloaterPreferenceProxy::saveSettings()
view_stack.push_back(*iter);
}
}
-
}
void LLFloaterPreferenceProxy::onBtnOk()
@@ -2020,6 +2020,29 @@ void LLFloaterPreferenceProxy::onBtnOk()
cur_focus->onCommit();
}
}
+
+ // Save SOCKS proxy credentials securely if password auth is enabled
+ LLRadioGroup* socksAuth = getChild<LLRadioGroup>("socks5_auth_type");
+ if(socksAuth->getSelectedValue().asString() == "UserPass")
+ {
+ LLSD socks_id = LLSD::emptyMap();
+ socks_id["type"] = "SOCKS5";
+ socks_id["username"] = getChild<LLLineEditor>("socks5_username")->getValue().asString();
+
+ LLSD socks_authenticator = LLSD::emptyMap();
+ socks_authenticator["type"] = "SOCKS5";
+ socks_authenticator["creds"] = getChild<LLLineEditor>("socks5_password")->getValue().asString();
+
+ LLPointer<LLCredential> socks_cred = gSecAPIHandler->createCredential("SOCKS5", socks_id, socks_authenticator);
+ gSecAPIHandler->saveCredential(socks_cred, true);
+ }
+ else
+ {
+ // Clear SOCKS5 credentials since they are no longer needed.
+ LLPointer<LLCredential> socks_cred = new LLCredential("SOCKS5");
+ gSecAPIHandler->deleteCredential(socks_cred);
+ }
+
closeFloater(false);
}
@@ -2036,8 +2059,8 @@ void LLFloaterPreferenceProxy::onBtnCancel()
}
cancel();
-
}
+
void LLFloaterPreferenceProxy::cancel()
{
@@ -2068,7 +2091,7 @@ void LLFloaterPreferenceProxy::onChangeSocksSettings()
getChild<LLLineEditor>("socks5_password")->setEnabled(true);
}
- //Check for invalid states for the other http proxy radio
+ // Check for invalid states for the other HTTP proxy radio
LLRadioGroup* otherHttpProxy = getChild<LLRadioGroup>("other_http_proxy_selection");
if( (otherHttpProxy->getSelectedValue().asString() == "Socks" &&
getChild<LLCheckBoxCtrl>("socks_proxy_enabled")->get() == FALSE )||(
diff --git a/indra/newview/llloginhandler.cpp b/indra/newview/llloginhandler.cpp
index 48be251611..9b4f146332 100644
--- a/indra/newview/llloginhandler.cpp
+++ b/indra/newview/llloginhandler.cpp
@@ -30,13 +30,13 @@
// viewer includes
#include "llsecapi.h"
-#include "lllogininstance.h" // to check if logged in yet
-#include "llpanellogin.h" // save_password_to_disk()
+#include "lllogininstance.h" // to check if logged in yet
+#include "llpanellogin.h"
#include "llstartup.h" // getStartupState()
#include "llslurl.h"
#include "llviewercontrol.h" // gSavedSettings
#include "llviewernetwork.h" // EGridInfo
-#include "llviewerwindow.h" // getWindow()
+#include "llviewerwindow.h" // getWindow()
// library includes
#include "llmd5.h"
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index 11273453ba..b1390a483a 100644
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -115,7 +115,4 @@ private:
static BOOL sCapslockDidNotification;
};
-std::string load_password_from_disk(void);
-void save_password_to_disk(const char* hashed_password);
-
#endif
diff --git a/indra/newview/llsecapi.h b/indra/newview/llsecapi.h
index b65cf37e7f..812a539324 100644
--- a/indra/newview/llsecapi.h
+++ b/indra/newview/llsecapi.h
@@ -286,8 +286,8 @@ bool operator!=(const LLCertificateVector::iterator& _lhs, const LLCertificateVe
#define CRED_AUTHENTICATOR_TYPE_HASH "hash"
//
// LLCredential - interface for credentials providing the following functionality:
-// * persistance of credential information based on grid (for saving username/password)
-// * serialization to an OGP identifier/authenticator pair
+// * Persistence of credential information based on grid (for saving username/password)
+// * Serialization to an OGP identifier/authenticator pair
//
class LLCredential : public LLRefCount
{
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index c2f0ca164b..7f14e403b0 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -125,6 +125,7 @@
#include "llpanelgroupnotices.h"
#include "llpreview.h"
#include "llpreviewscript.h"
+#include "llproxy.h"
#include "llproductinforequest.h"
#include "llsecondlifeurls.h"
#include "llselectmgr.h"
@@ -191,8 +192,6 @@
#include "llevents.h"
#include "llstartuplistener.h"
-#include "llsocks5.h"
-
#if LL_WINDOWS
#include "lldxhardware.h"
#endif
@@ -392,7 +391,7 @@ bool idle_startup()
gSavedSettings.setS32("LastGPUClass", LLFeatureManager::getInstance()->getGPUClass());
// load dynamic GPU/feature tables from website (S3)
- //LLFeatureManager::getInstance()->fetchHTTPTables();
+ LLFeatureManager::getInstance()->fetchHTTPTables();
std::string xml_file = LLUI::locateSkin("xui_version.xml");
LLXMLNodePtr root;
@@ -595,13 +594,13 @@ bool idle_startup()
LL_INFOS("AppInit") << "Message System Initialized." << LL_ENDL;
//-------------------------------------------------
- // Init the socks 5 proxy and open the control TCP
- // connection if the user is using SOCKS5
- // We need to do this early incase the user is using
- // socks for http so we get the login screen via socks
+ // Init the SOCKS 5 proxy and open the control TCP
+ // connection if the user is using SOCKS 5
+ // We need to do this early in case the user is using
+ // socks for HTTP so we get the login screen via SOCKS
//-------------------------------------------------
- LLStartUp::handleSocksProxy(false);
+ LLStartUp::handleSocksProxy();
//-------------------------------------------------
// Init audio, which may be needed for prefs dialog
@@ -823,7 +822,7 @@ bool idle_startup()
// past this point may require the proxy to be up.
if ( gSavedSettings.getBOOL("Socks5ProxyEnabled") )
{
- if (!LLStartUp::handleSocksProxy(true))
+ if (!LLStartUp::handleSocksProxy())
{
// Proxy start up failed, we should now bail the state machine
// HandleSocksProxy() will have reported an error to the user
@@ -835,7 +834,7 @@ bool idle_startup()
}
else
{
- LLSocks::getInstance()->stopProxy();
+ LLProxy::getInstance()->stopProxy();
}
@@ -2760,54 +2759,70 @@ void LLStartUp::setStartSLURL(const LLSLURL& slurl)
}
}
-bool LLStartUp::handleSocksProxy(bool reportOK)
+bool LLStartUp::handleSocksProxy()
{
std::string httpProxyType = gSavedSettings.getString("Socks5HttpProxyType");
- // Determine the http proxy type (if any)
+ // Determine the HTTP proxy type (if any)
if ((httpProxyType.compare("Web") == 0) && gSavedSettings.getBOOL("BrowserProxyEnabled"))
{
LLHost httpHost;
httpHost.setHostByName(gSavedSettings.getString("BrowserProxyAddress"));
httpHost.setPort(gSavedSettings.getS32("BrowserProxyPort"));
- LLSocks::getInstance()->enableHTTPProxy(httpHost,LLPROXY_HTTP);
+ LLProxy::getInstance()->enableHTTPProxy(httpHost, LLPROXY_HTTP);
}
else if ((httpProxyType.compare("Socks") == 0) && gSavedSettings.getBOOL("Socks5ProxyEnabled"))
{
LLHost httpHost;
httpHost.setHostByName(gSavedSettings.getString("Socks5ProxyHost"));
httpHost.setPort(gSavedSettings.getU32("Socks5ProxyPort"));
- LLSocks::getInstance()->enableHTTPProxy(httpHost,LLPROXY_SOCKS);
+ LLProxy::getInstance()->enableHTTPProxy(httpHost, LLPROXY_SOCKS);
}
else
{
- LLSocks::getInstance()->disableHTTPProxy();
+ LLProxy::getInstance()->disableHTTPProxy();
}
bool use_socks_proxy = gSavedSettings.getBOOL("Socks5ProxyEnabled");
if (use_socks_proxy)
{
- // Determine and update LLSocks with the saved authentication system
+ // Determine and update LLProxy with the saved authentication system
std::string auth_type = gSavedSettings.getString("Socks5AuthType");
-
- if (auth_type.compare("None") == 0)
- {
- LLSocks::getInstance()->setAuthNone();
- }
if (auth_type.compare("UserPass") == 0)
{
- LLSocks::getInstance()->setAuthPassword(gSavedSettings.getString("Socks5Username"),gSavedSettings.getString("Socks5Password"));
+ LLPointer<LLCredential> socks_cred = gSecAPIHandler->loadCredential("SOCKS5");
+ std::string socks_user = socks_cred->getIdentifier()["username"].asString();
+ std::string socks_password = socks_cred->getAuthenticator()["creds"].asString();
+ LLProxy::getInstance()->setAuthPassword(socks_user, socks_password);
+ }
+ else if (auth_type.compare("None") == 0)
+ {
+ LLProxy::getInstance()->setAuthNone();
+ }
+ else
+ {
+ // Unknown or missing setting.
+ gSavedSettings.setString("Socks5AuthType", "None");
+
+ // Clear the SOCKS credentials.
+ LLPointer<LLCredential> socks_cred = new LLCredential("SOCKS5");
+ gSecAPIHandler->deleteCredential(socks_cred);
+
+ LLProxy::getInstance()->setAuthNone();
}
// Start the proxy and check for errors
- int status = LLSocks::getInstance()->startProxy(gSavedSettings.getString("Socks5ProxyHost"), gSavedSettings.getU32("Socks5ProxyPort"));
+ // If status != SOCKS_OK, stopProxy() will already have been called when startProxy() returns.
+ int status = LLProxy::getInstance()->startProxy(gSavedSettings.getString("Socks5ProxyHost"), gSavedSettings.getU32("Socks5ProxyPort"));
LLSD subs;
LLSD payload;
subs["HOST"] = gSavedSettings.getString("Socks5ProxyHost");
subs["PORT"] = (S32)gSavedSettings.getU32("Socks5ProxyPort");
+ std::string error_string;
+
switch(status)
{
case SOCKS_OK:
@@ -2815,35 +2830,36 @@ bool LLStartUp::handleSocksProxy(bool reportOK)
break;
case SOCKS_CONNECT_ERROR: // TCP Fail
- LLNotifications::instance().add("SOCKS_CONNECT_ERROR", subs,payload);
+ error_string = "SOCKS_CONNECT_ERROR";
break;
- case SOCKS_NOT_PERMITTED: // Socks5 server rule set refused connection
- LLNotifications::instance().add("SOCKS_NOT_PERMITTED", subs,payload);
+ case SOCKS_NOT_PERMITTED: // SOCKS 5 server rule set refused connection
+ error_string = "SOCKS_NOT_PERMITTED";
break;
case SOCKS_NOT_ACCEPTABLE: // Selected authentication is not acceptable to server
- LLNotifications::instance().add("SOCKS_NOT_ACCEPTABLE", subs,payload);
+ error_string = "SOCKS_NOT_ACCEPTABLE";
break;
case SOCKS_AUTH_FAIL: // Authentication failed
- LLNotifications::instance().add("SOCKS_AUTH_FAIL", subs,payload);
+ error_string = "SOCKS_AUTH_FAIL";
break;
case SOCKS_UDP_FWD_NOT_GRANTED: // UDP forward request failed
- LLNotifications::instance().add("SOCKS_UDP_FWD_NOT_GRANTED", subs,payload);
+ error_string = "SOCKS_UDP_FWD_NOT_GRANTED";
break;
case SOCKS_HOST_CONNECT_FAILED: // Failed to open a TCP channel to the socks server
- LLNotifications::instance().add("SOCKS_HOST_CONNECT_FAILED", subs,payload);
- break;
+ error_string = "SOCKS_HOST_CONNECT_FAILED";
+ break;
}
+ LLNotificationsUtil::add(error_string, subs);
return false;
}
else
{
- LLSocks::getInstance()->stopProxy(); // ensure no UDP proxy is running and it's all cleaned up
+ LLProxy::getInstance()->stopProxy(); // ensure no UDP proxy is running and it's all cleaned up
}
return true;
diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h
index a512ec7bff..7292e4d68c 100644
--- a/indra/newview/llstartup.h
+++ b/indra/newview/llstartup.h
@@ -113,7 +113,7 @@ public:
static void setStartSLURL(const LLSLURL& slurl);
static LLSLURL& getStartSLURL() { return sStartSLURL; }
- static bool handleSocksProxy(bool reportOK); //handle kicking the socks 5 proxy code at startup time
+ static bool handleSocksProxy(); // Initialize the SOCKS 5 proxy
private:
static LLSLURL sStartSLURL;
diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp
index b9ce7d9fae..ef6763a5d1 100644
--- a/indra/newview/llxmlrpctransaction.cpp
+++ b/indra/newview/llxmlrpctransaction.cpp
@@ -41,7 +41,7 @@
#include "llappviewer.h"
#include "lltrans.h"
-#include "llsocks5.h"
+#include "llproxy.h"
// Static instance of LLXMLRPCListener declared here so that every time we
// bring in this code, we instantiate a listener. If we put the static
@@ -309,18 +309,18 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip)
}
mErrorCert = NULL;
- if (LLSocks::getInstance()->isHTTPProxyEnabled())
+ if (LLProxy::getInstance()->isHTTPProxyEnabled())
{
- std::string address = LLSocks::getInstance()->getHTTPProxy().getIPString();
- U16 port = LLSocks::getInstance()->getHTTPProxy().getPort();
+ std::string address = LLProxy::getInstance()->getHTTPProxy().getIPString();
+ U16 port = LLProxy::getInstance()->getHTTPProxy().getPort();
mCurlRequest->setoptString(CURLOPT_PROXY, address.c_str());
mCurlRequest->setopt(CURLOPT_PROXYPORT, port);
- if (LLSocks::getInstance()->getHTTPProxyType() == LLPROXY_SOCKS)
+ if (LLProxy::getInstance()->getHTTPProxyType() == LLPROXY_SOCKS)
{
mCurlRequest->setopt(CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
- if(LLSocks::getInstance()->getSelectedAuthMethod()==METHOD_PASSWORD)
+ if(LLProxy::getInstance()->getSelectedAuthMethod()==METHOD_PASSWORD)
{
- mCurlRequest->setoptString(CURLOPT_PROXYUSERPWD,LLSocks::getInstance()->getProxyUserPwd());
+ mCurlRequest->setoptString(CURLOPT_PROXYUSERPWD,LLProxy::getInstance()->getProxyUserPwdCURL());
}
}
else
diff --git a/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml
index 9baa9a0e02..53060b0326 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences_proxy.xml
@@ -3,82 +3,82 @@
legacy_header_height="18"
height="490"
layout="topleft"
- name="Socks5 Advanced Settings Floater"
+ name="Proxy Settings Floater"
help_topic="hardware_settings_floater"
title="Socks5 proxy advanced settings"
width="385">
- <check_box
- control_name="BrowserProxyEnabled"
- top="30"
- enabled="true"
- follows="left|top"
- height="14"
- initial_value="false"
- commit_callback.function="Proxy.Change"
- label="Use HTTP Proxy for Web pages"
- left_delta="10"
- mouse_opaque="true"
- name="web_proxy_enabled"
- radio_style="false"
- width="400"
- top_pad="5" />
- <check_box
- control_name="Socks5ProxyEnabled"
- height="16"
- label="Use Socks 5 Proxy for UDP traffic"
- layout="topleft"
- left_delta="0"
- name="socks_proxy_enabled"
- top_pad="5"
- width="256"
- commit_callback.function="Proxy.Change" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="Proxy location"
- top_delta="30"
- width="300">
- Other Http traffic proxy:
- </text>
- <radio_group
- control_name="Socks5HttpProxyType"
- height="60"
- layout="topleft"
- name="other_http_proxy_selection"
- top_pad="10"
- width="120"
- border="1"
- left_delta="10"
- commit_callback.function="Proxy.Change" >
- <radio_item
- height="16"
- label="Do not proxy"
- layout="topleft"
- value="None"
- width="120"
- tool_tip="Non web Http traffic should NOT be sent to any proxy."/>
- <radio_item
- height="16"
- label="Use Socks 5 Proxy"
- layout="topleft"
- value="Socks"
- width="120"
- enabled_control="Socks5ProxyEnabled"
- tool_tip="Non-web Http will be sent to the configured Socks 5 proxy."/>
- <radio_item
- height="16"
- label="Use Http Proxy"
- layout="topleft"
- value="Web"
- width="120"
- enabled_control="BrowserProxyEnabled"
- tool_tip="Non-web Http will be sent to the configured Web proxy." />
- </radio_group>
- <text
+ <check_box
+ control_name="BrowserProxyEnabled"
+ top="30"
+ enabled="true"
+ follows="left|top"
+ height="14"
+ initial_value="false"
+ commit_callback.function="Proxy.Change"
+ label="Use HTTP Proxy for Web pages"
+ left_delta="10"
+ mouse_opaque="true"
+ name="web_proxy_enabled"
+ radio_style="false"
+ width="400"
+ top_pad="5" />
+ <check_box
+ control_name="Socks5ProxyEnabled"
+ height="16"
+ label="Use Socks 5 Proxy for UDP traffic"
+ layout="topleft"
+ left_delta="0"
+ name="socks_proxy_enabled"
+ top_pad="5"
+ width="256"
+ commit_callback.function="Proxy.Change" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left="10"
+ name="Proxy location"
+ top_delta="30"
+ width="300">
+ Other Http traffic proxy:
+ </text>
+ <radio_group
+ control_name="Socks5HttpProxyType"
+ height="60"
+ layout="topleft"
+ name="other_http_proxy_selection"
+ top_pad="10"
+ width="120"
+ border="1"
+ left_delta="10"
+ commit_callback.function="Proxy.Change" >
+ <radio_item
+ height="16"
+ label="Do not proxy"
+ layout="topleft"
+ value="None"
+ width="120"
+ tool_tip="Non web Http traffic should NOT be sent to any proxy."/>
+ <radio_item
+ height="16"
+ label="Use Socks 5 Proxy"
+ layout="topleft"
+ value="Socks"
+ width="120"
+ enabled_control="Socks5ProxyEnabled"
+ tool_tip="Non-web Http will be sent to the configured Socks 5 proxy."/>
+ <radio_item
+ height="16"
+ label="Use Http Proxy"
+ layout="topleft"
+ value="Web"
+ width="120"
+ enabled_control="BrowserProxyEnabled"
+ tool_tip="Non-web Http will be sent to the configured Web proxy." />
+ </radio_group>
+ <text
type="string"
length="1"
follows="left|top"
@@ -93,7 +93,7 @@
<line_editor
control_name="BrowserProxyAddress"
enabled_control="BrowserProxyEnabled"
- follows="left|top"
+ follows="left|top"
font="SansSerif"
height="23"
layout="topleft"
@@ -118,7 +118,7 @@
min_val="10"
name="web_proxy_port"
top_delta="0"
- tool_tip="The port of the HTTP proxy you would like to use."
+ tool_tip="The port of the HTTP proxy you would like to use."
width="145" />
<text
type="string"
@@ -162,18 +162,18 @@
name="socks_proxy_port"
top_delta="0"
width="145"
- tool_tip="The port of the SOCKS 5 proxy you would like to use."
- commit_callback.function="Pref.SocksProxy" />
+ tool_tip="The port of the SOCKS 5 proxy you would like to use."
+ commit_callback.function="Proxy.Change" />
<text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="16"
- name="Proxy location"
- top_delta="35"
- width="300">
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left="16"
+ name="Proxy location"
+ top_delta="35"
+ width="300">
Authentication:
</text>
<radio_group
@@ -186,13 +186,13 @@
width="120"
border="1"
commit_callback.function="Proxy.Change" >
- <radio_item
+ <radio_item
height="16"
label="No Authentication"
layout="topleft"
name="Socks5NoAuth"
value="None"
- tool_tip="Socks5 proxy requires no authentication."/>
+ tool_tip="Socks5 proxy requires no authentication."
width="120" />
<radio_item
height="16"
@@ -200,7 +200,7 @@
layout="topleft"
name="Socks5UserPass"
value="UserPass"
- tool_tip="Socks5 proxy requires username/password authentication."/>
+ tool_tip="Socks5 proxy requires username/password authentication."
width="120" />
</radio_group>
<text
@@ -215,7 +215,6 @@
Username:
</text>
<line_editor
- control_name="Socks5Username"
follows="left|top"
font="SansSerif"
height="23"
@@ -238,7 +237,6 @@
Password:
</text>
<line_editor
- control_name="Socks5Password"
follows="left|top"
font="SansSerif"
height="23"
@@ -248,6 +246,7 @@
tool_tip="The password used to authenticate with your SOCKS 5 server"
top_pad="4"
width="200"
+ is_password="true"
commit_callback.function="Proxy.Change" />
<button
follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 06a9baf8c8..7bf742d949 100755
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -7164,7 +7164,8 @@ Click and drag anywhere on the world to rotate your view
icon="alertmodal.tga"
name="SOCKS_NOT_PERMITTED"
type="alertmodal">
- The Socks5 proxy "[HOST]:[PORT]" refused the connection, not allowed by rule set
+ The SOCKS 5 proxy "[HOST]:[PORT]" refused the connection, not allowed by rule set
+ <tag>fail</tag>
<usetemplate
name="okbutton"
yestext="OK"/>
@@ -7174,7 +7175,8 @@ Click and drag anywhere on the world to rotate your view
icon="alertmodal.tga"
name="SOCKS_CONNECT_ERROR"
type="alertmodal">
- The Socks5 proxy "[HOST]:[PORT]" refused the connection, could not open TCP channel
+ The SOCKS 5 proxy "[HOST]:[PORT]" refused the connection, could not open TCP channel
+ <tag>fail</tag>
<usetemplate
name="okbutton"
yestext="OK"/>
@@ -7184,7 +7186,8 @@ Click and drag anywhere on the world to rotate your view
icon="alertmodal.tga"
name="SOCKS_NOT_ACCEPTABLE"
type="alertmodal">
- The Socks5 proxy "[HOST]:[PORT]" refused the selected authentication system
+ The SOCKS 5 proxy "[HOST]:[PORT]" refused the selected authentication system
+ <tag>fail</tag>
<usetemplate
name="okbutton"
yestext="OK"/>
@@ -7194,7 +7197,8 @@ Click and drag anywhere on the world to rotate your view
icon="alertmodal.tga"
name="SOCKS_AUTH_FAIL"
type="alertmodal">
- The Socks5 proxy "[HOST]:[PORT]" reported your credentials are invalid
+ The SOCKS 5 proxy "[HOST]:[PORT]" reported your credentials are invalid
+ <tag>fail</tag>
<usetemplate
name="okbutton"
yestext="OK"/>
@@ -7204,7 +7208,8 @@ Click and drag anywhere on the world to rotate your view
icon="alertmodal.tga"
name="SOCKS_UDP_FWD_NOT_GRANTED"
type="alertmodal">
- The Socks5 proxy "[HOST]:[PORT]" refused the UDP associate request
+ The SOCKS 5 proxy "[HOST]:[PORT]" refused the UDP associate request
+ <tag>fail</tag>
<usetemplate
name="okbutton"
yestext="OK"/>
@@ -7214,7 +7219,8 @@ Click and drag anywhere on the world to rotate your view
icon="alertmodal.tga"
name="SOCKS_HOST_CONNECT_FAILED"
type="alertmodal">
- Could not connect to Socks5 proxy server "[HOST]:[PORT]"
+ Could not connect to SOCKS 5 proxy server "[HOST]:[PORT]"
+ <tag>fail</tag>
<usetemplate
name="okbutton"
yestext="OK"/>
@@ -7224,7 +7230,8 @@ Click and drag anywhere on the world to rotate your view
icon="alertmodal.tga"
name="ChangeSocks5Settings"
type="alert">
- Socks 5 proxy settings take effect after you restart [APP_NAME].
+ SOCKS 5 proxy settings take effect after you restart [APP_NAME].
+ <tag>fail</tag>
<usetemplate
name="okbutton"
yestext="OK"/>
diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
index bbeb592e96..beea53437a 100644
--- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
+++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
@@ -52,7 +52,7 @@
multi_select="true"
name="list_attachments"
top="0"
- width="311">
+ width="311" />
</accordion_tab>
<accordion_tab
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index 30be5bc853..47236c1a48 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -139,7 +139,7 @@
height="16"
label="Add datestamp to log file name."
layout="topleft"
- left_detla="5"
+ left_delta="5"
name="logfile_name_datestamp"
top_pad="10"
width="350"/>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
index d306e46d5e..b0281b11fd 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -79,7 +79,7 @@
<spinner
control_name="ConnectionPort"
enabled_control="ConnectionPortEnabled"
- decimal_digits="0"
+ decimal_digits="0"
follows="left|top"
height="23"
increment="1"