Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Unified Diff: chromeos/network/network_connection_handler.cc

Issue 23583018: Check configuration for networks without UIData (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/network/network_connection_handler.cc
diff --git a/chromeos/network/network_connection_handler.cc b/chromeos/network/network_connection_handler.cc
index f27ff4f8a1a25e74cc6bb8cbc03744a3d91d7d5f..1b7fc33973e0b4103025d974fdf1f2f50616b948 100644
--- a/chromeos/network/network_connection_handler.cc
+++ b/chromeos/network/network_connection_handler.cc
@@ -55,6 +55,13 @@ void CopyStringFromDictionary(const base::DictionaryValue& source,
dest->SetStringWithoutPathExpansion(key, string_value);
}
+std::string GetStringFromDictionary(const base::DictionaryValue& dict,
+ const std::string& key) {
+ std::string s;
+ dict.GetStringWithoutPathExpansion(key, &s);
+ return s;
+}
+
bool NetworkRequiresActivation(const NetworkState* network) {
return (network->type() == flimflam::kTypeCellular &&
((network->activation_state() != flimflam::kActivationStateActivated &&
@@ -65,16 +72,14 @@ bool VPNIsConfigured(const std::string& service_path,
const std::string& provider_type,
const base::DictionaryValue& provider_properties) {
if (provider_type == flimflam::kProviderOpenVpn) {
- std::string hostname;
- provider_properties.GetStringWithoutPathExpansion(
- flimflam::kHostProperty, &hostname);
+ std::string hostname = GetStringFromDictionary(
+ provider_properties, flimflam::kHostProperty);
if (hostname.empty()) {
NET_LOG_EVENT("OpenVPN: No hostname", service_path);
return false;
}
- std::string username;
- provider_properties.GetStringWithoutPathExpansion(
- flimflam::kOpenVPNUserProperty, &username);
+ std::string username = GetStringFromDictionary(
+ provider_properties, flimflam::kOpenVPNUserProperty);
if (username.empty()) {
NET_LOG_EVENT("OpenVPN: No username", service_path);
return false;
@@ -373,11 +378,10 @@ void NetworkConnectionHandler::VerifyConfiguredAndConnect(
return;
}
- std::string type, security;
- service_properties.GetStringWithoutPathExpansion(
- flimflam::kTypeProperty, &type);
- service_properties.GetStringWithoutPathExpansion(
- flimflam::kSecurityProperty, &security);
+ std::string type = GetStringFromDictionary(
+ service_properties, flimflam::kTypeProperty);
+ std::string security = GetStringFromDictionary(
+ service_properties, flimflam::kSecurityProperty);
bool connectable = false;
service_properties.GetBooleanWithoutPathExpansion(
flimflam::kConnectableProperty, &connectable);
@@ -466,6 +470,40 @@ void NetworkConnectionHandler::VerifyConfiguredAndConnect(
ErrorCallbackForPendingRequest(service_path, kErrorCertificateRequired);
return;
}
+ } else {
+ // Certificate is not configured in ui_data, check properties.
+ bool configured = true;
+ if (client_cert_type == client_cert::CONFIG_TYPE_OPENVPN) {
pneubeck (no reviews) 2013/08/30 11:04:08 How about putting this into a client_cert::GetSh
stevenjb 2013/08/30 17:01:21 Yeah, I considered doing something like that origi
+ std::string cert_id = GetStringFromDictionary(
+ service_properties, flimflam::kOpenVPNClientCertIdProperty);
pneubeck (no reviews) 2013/08/30 11:04:08 service_properties -> provider_properties in case
stevenjb 2013/08/30 17:01:21 Bah, you're right, I keep reversing setting vs get
+ std::string username = GetStringFromDictionary(
+ service_properties, flimflam::kOpenVPNUserProperty);
+ if (cert_id.empty() || username.empty())
+ configured = false;
+ } else if (client_cert_type == client_cert::CONFIG_TYPE_IPSEC) {
+ std::string cert_id = GetStringFromDictionary(
+ service_properties, flimflam::kL2tpIpsecClientCertIdProperty);
+ std::string username = GetStringFromDictionary(
+ service_properties, flimflam::kL2tpIpsecUserProperty);
+ if (cert_id.empty() || username.empty())
+ configured = false;
+ } else if (client_cert_type == client_cert::CONFIG_TYPE_EAP) {
+ std::string cert_id = GetStringFromDictionary(
+ service_properties, flimflam::kEapCertIdProperty);
+ std::string key_id = GetStringFromDictionary(
+ service_properties, flimflam::kEapKeyIdProperty);
+ std::string identity = GetStringFromDictionary(
+ service_properties, flimflam::kEapIdentityProperty);
+ if (cert_id.empty() || key_id.empty() || identity.empty())
+ configured = false;
+ } else {
+ NOTREACHED();
+ }
+ if (!configured) {
+ ErrorCallbackForPendingRequest(service_path,
+ kErrorConfigurationRequired);
+ return;
+ }
}
// The network may not be 'Connectable' because the TPM properties are not
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698