| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/cros/onc_network_parser.h" | 5 #include "chrome/browser/chromeos/cros/onc_network_parser.h" |
| 6 | 6 |
| 7 #include <keyhi.h> | 7 #include <keyhi.h> |
| 8 #include <pk11pub.h> | 8 #include <pk11pub.h> |
| 9 | 9 |
| 10 #include "base/base64.h" | 10 #include "base/base64.h" |
| (...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 static_cast<const base::Value&>(info), | 574 static_cast<const base::Value&>(info), |
| 575 network_configuration_signature, | 575 network_configuration_signature, |
| 576 ParseNetworkConfigurationValue)) { | 576 ParseNetworkConfigurationValue)) { |
| 577 LOG(WARNING) << "Network " << network->name() << " failed to parse."; | 577 LOG(WARNING) << "Network " << network->name() << " failed to parse."; |
| 578 if (parse_error_.empty()) | 578 if (parse_error_.empty()) |
| 579 parse_error_ = l10n_util::GetStringUTF8( | 579 parse_error_ = l10n_util::GetStringUTF8( |
| 580 IDS_NETWORK_CONFIG_ERROR_NETWORK_PROP_DICT_MALFORMED); | 580 IDS_NETWORK_CONFIG_ERROR_NETWORK_PROP_DICT_MALFORMED); |
| 581 return NULL; | 581 return NULL; |
| 582 } | 582 } |
| 583 | 583 |
| 584 // Update the UI data property in flimflam. | 584 // Update the UI data property in shill. |
| 585 std::string ui_data_json; | 585 std::string ui_data_json; |
| 586 base::DictionaryValue ui_data_dict; | 586 base::DictionaryValue ui_data_dict; |
| 587 network->ui_data().FillDictionary(&ui_data_dict); | 587 network->ui_data().FillDictionary(&ui_data_dict); |
| 588 base::JSONWriter::Write(&ui_data_dict, &ui_data_json); | 588 base::JSONWriter::Write(&ui_data_dict, &ui_data_json); |
| 589 base::StringValue ui_data_string_value(ui_data_json); | 589 base::StringValue ui_data_string_value(ui_data_json); |
| 590 network->UpdatePropertyMap(PROPERTY_INDEX_UI_DATA, &ui_data_string_value); | 590 network->UpdatePropertyMap(PROPERTY_INDEX_UI_DATA, &ui_data_string_value); |
| 591 | 591 |
| 592 if (VLOG_IS_ON(2)) { | 592 if (VLOG_IS_ON(2)) { |
| 593 VLOG(2) << "Created Network '" << network->name() | 593 VLOG(2) << "Created Network '" << network->name() |
| 594 << "' from info. Path:" << service_path | 594 << "' from info. Path:" << service_path |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 784 std::string str = | 784 std::string str = |
| 785 NativeNetworkParser::network_type_mapper()->GetKey(network->type()); | 785 NativeNetworkParser::network_type_mapper()->GetKey(network->type()); |
| 786 base::StringValue val(str); | 786 base::StringValue val(str); |
| 787 network->UpdatePropertyMap(PROPERTY_INDEX_TYPE, &val); | 787 network->UpdatePropertyMap(PROPERTY_INDEX_TYPE, &val); |
| 788 return true; | 788 return true; |
| 789 } | 789 } |
| 790 case PROPERTY_INDEX_GUID: | 790 case PROPERTY_INDEX_GUID: |
| 791 // Fall back to generic parser. | 791 // Fall back to generic parser. |
| 792 return parser->ParseValue(index, value, network); | 792 return parser->ParseValue(index, value, network); |
| 793 case PROPERTY_INDEX_NAME: | 793 case PROPERTY_INDEX_NAME: |
| 794 // flimflam doesn't allow setting name for non-VPN networks. | 794 // shill doesn't allow setting name for non-VPN networks. |
| 795 if (network->type() != TYPE_VPN) { | 795 if (network->type() != TYPE_VPN) { |
| 796 network->UpdatePropertyMap(PROPERTY_INDEX_NAME, NULL); | 796 network->UpdatePropertyMap(PROPERTY_INDEX_NAME, NULL); |
| 797 return true; | 797 return true; |
| 798 } | 798 } |
| 799 | 799 |
| 800 // Fall back to generic parser. | 800 // Fall back to generic parser. |
| 801 return parser->ParseValue(index, value, network); | 801 return parser->ParseValue(index, value, network); |
| 802 default: | 802 default: |
| 803 break; | 803 break; |
| 804 } | 804 } |
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1223 default: | 1223 default: |
| 1224 break; | 1224 break; |
| 1225 } | 1225 } |
| 1226 if (!proxy_dict.get()) | 1226 if (!proxy_dict.get()) |
| 1227 return false; | 1227 return false; |
| 1228 | 1228 |
| 1229 // Serialize ProxyConfigDictionary into a string. | 1229 // Serialize ProxyConfigDictionary into a string. |
| 1230 std::string proxy_dict_str = ConvertValueToString(*proxy_dict.get()); | 1230 std::string proxy_dict_str = ConvertValueToString(*proxy_dict.get()); |
| 1231 | 1231 |
| 1232 // Add ProxyConfig property to property map so that it will be updated in | 1232 // Add ProxyConfig property to property map so that it will be updated in |
| 1233 // flimflam in NetworkLibraryImplCros::CallConfigureService after all parsing | 1233 // shill in NetworkLibraryImplCros::CallConfigureService after all parsing |
| 1234 // has completed. | 1234 // has completed. |
| 1235 base::StringValue val(proxy_dict_str); | 1235 base::StringValue val(proxy_dict_str); |
| 1236 network->UpdatePropertyMap(PROPERTY_INDEX_PROXY_CONFIG, &val); | 1236 network->UpdatePropertyMap(PROPERTY_INDEX_PROXY_CONFIG, &val); |
| 1237 | 1237 |
| 1238 // If |network| is currently being connected to or it exists in memory, | 1238 // If |network| is currently being connected to or it exists in memory, |
| 1239 // flimflam will fire PropertyChanged notification in ConfigureService, | 1239 // shill will fire PropertyChanged notification in ConfigureService, |
| 1240 // chromeos::ProxyConfigServiceImpl will get OnNetworkChanged notification | 1240 // chromeos::ProxyConfigServiceImpl will get OnNetworkChanged notification |
| 1241 // and, if necessary, activate |proxy_dict_str| on network stack and reflect | 1241 // and, if necessary, activate |proxy_dict_str| on network stack and reflect |
| 1242 // it in UI via "Change proxy settings" button. | 1242 // it in UI via "Change proxy settings" button. |
| 1243 network->set_proxy_config(proxy_dict_str); | 1243 network->set_proxy_config(proxy_dict_str); |
| 1244 VLOG(1) << "Parsed ProxyConfig: " << network->proxy_config(); | 1244 VLOG(1) << "Parsed ProxyConfig: " << network->proxy_config(); |
| 1245 | 1245 |
| 1246 return true; | 1246 return true; |
| 1247 } | 1247 } |
| 1248 | 1248 |
| 1249 // static | 1249 // static |
| (...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1730 PropertyIndex index, | 1730 PropertyIndex index, |
| 1731 const base::Value& value, | 1731 const base::Value& value, |
| 1732 Network* network) { | 1732 Network* network) { |
| 1733 if (!CheckNetworkType(network, TYPE_VPN, onc::kVPN)) | 1733 if (!CheckNetworkType(network, TYPE_VPN, onc::kVPN)) |
| 1734 return false; | 1734 return false; |
| 1735 VirtualNetwork* virtual_network = static_cast<VirtualNetwork*>(network); | 1735 VirtualNetwork* virtual_network = static_cast<VirtualNetwork*>(network); |
| 1736 switch (index) { | 1736 switch (index) { |
| 1737 case PROPERTY_INDEX_PROVIDER_HOST: { | 1737 case PROPERTY_INDEX_PROVIDER_HOST: { |
| 1738 base::StringValue empty_value(""); | 1738 base::StringValue empty_value(""); |
| 1739 virtual_network->set_server_hostname(GetStringValue(value)); | 1739 virtual_network->set_server_hostname(GetStringValue(value)); |
| 1740 // Flimflam requires a domain property which is unused. | 1740 // Shill requires a domain property which is unused. |
| 1741 network->UpdatePropertyMap(PROPERTY_INDEX_VPN_DOMAIN, &empty_value); | 1741 network->UpdatePropertyMap(PROPERTY_INDEX_VPN_DOMAIN, &empty_value); |
| 1742 return true; | 1742 return true; |
| 1743 } | 1743 } |
| 1744 case PROPERTY_INDEX_ONC_IPSEC: | 1744 case PROPERTY_INDEX_ONC_IPSEC: |
| 1745 if (virtual_network->provider_type() != PROVIDER_TYPE_L2TP_IPSEC_PSK && | 1745 if (virtual_network->provider_type() != PROVIDER_TYPE_L2TP_IPSEC_PSK && |
| 1746 virtual_network->provider_type() != | 1746 virtual_network->provider_type() != |
| 1747 PROVIDER_TYPE_L2TP_IPSEC_USER_CERT) { | 1747 PROVIDER_TYPE_L2TP_IPSEC_USER_CERT) { |
| 1748 VLOG(1) << "IPsec field not allowed with this VPN type"; | 1748 VLOG(1) << "IPsec field not allowed with this VPN type"; |
| 1749 return false; | 1749 return false; |
| 1750 } | 1750 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1761 return parser->ParseNestedObject(network, | 1761 return parser->ParseNestedObject(network, |
| 1762 onc::vpn::kL2TP, | 1762 onc::vpn::kL2TP, |
| 1763 value, | 1763 value, |
| 1764 l2tp_signature, | 1764 l2tp_signature, |
| 1765 ParseL2TPValue); | 1765 ParseL2TPValue); |
| 1766 case PROPERTY_INDEX_ONC_OPENVPN: { | 1766 case PROPERTY_INDEX_ONC_OPENVPN: { |
| 1767 if (virtual_network->provider_type() != PROVIDER_TYPE_OPEN_VPN) { | 1767 if (virtual_network->provider_type() != PROVIDER_TYPE_OPEN_VPN) { |
| 1768 VLOG(1) << "OpenVPN field not allowed with this VPN type"; | 1768 VLOG(1) << "OpenVPN field not allowed with this VPN type"; |
| 1769 return false; | 1769 return false; |
| 1770 } | 1770 } |
| 1771 // The following are needed by flimflam to set up the OpenVPN | 1771 // The following are needed by shill to set up the OpenVPN |
| 1772 // management channel which every ONC OpenVPN configuration will | 1772 // management channel which every ONC OpenVPN configuration will |
| 1773 // use. | 1773 // use. |
| 1774 base::StringValue empty_value(""); | 1774 base::StringValue empty_value(""); |
| 1775 network->UpdatePropertyMap(PROPERTY_INDEX_OPEN_VPN_AUTHUSERPASS, | 1775 network->UpdatePropertyMap(PROPERTY_INDEX_OPEN_VPN_AUTHUSERPASS, |
| 1776 &empty_value); | 1776 &empty_value); |
| 1777 network->UpdatePropertyMap(PROPERTY_INDEX_OPEN_VPN_MGMT_ENABLE, | 1777 network->UpdatePropertyMap(PROPERTY_INDEX_OPEN_VPN_MGMT_ENABLE, |
| 1778 &empty_value); | 1778 &empty_value); |
| 1779 return parser->ParseNestedObject(network, | 1779 return parser->ParseNestedObject(network, |
| 1780 onc::vpn::kOpenVPN, | 1780 onc::vpn::kOpenVPN, |
| 1781 value, | 1781 value, |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1842 certificate_pattern_signature, | 1842 certificate_pattern_signature, |
| 1843 ParseClientCertPattern); | 1843 ParseClientCertPattern); |
| 1844 } | 1844 } |
| 1845 case PROPERTY_INDEX_ONC_CLIENT_CERT_TYPE: { | 1845 case PROPERTY_INDEX_ONC_CLIENT_CERT_TYPE: { |
| 1846 ClientCertType type = ParseClientCertType(GetStringValue(value)); | 1846 ClientCertType type = ParseClientCertType(GetStringValue(value)); |
| 1847 virtual_network->set_client_cert_type(type); | 1847 virtual_network->set_client_cert_type(type); |
| 1848 return true; | 1848 return true; |
| 1849 } | 1849 } |
| 1850 case PROPERTY_INDEX_IPSEC_IKEVERSION: { | 1850 case PROPERTY_INDEX_IPSEC_IKEVERSION: { |
| 1851 if (!value.IsType(TYPE_STRING)) { | 1851 if (!value.IsType(TYPE_STRING)) { |
| 1852 // Flimflam wants all provider properties to be strings. | 1852 // Shill wants all provider properties to be strings. |
| 1853 base::StringValue string_value(ConvertValueToString(value)); | 1853 base::StringValue string_value(ConvertValueToString(value)); |
| 1854 virtual_network->UpdatePropertyMap(index, &string_value); | 1854 virtual_network->UpdatePropertyMap(index, &string_value); |
| 1855 } | 1855 } |
| 1856 return true; | 1856 return true; |
| 1857 } | 1857 } |
| 1858 default: | 1858 default: |
| 1859 break; | 1859 break; |
| 1860 } | 1860 } |
| 1861 return false; | 1861 return false; |
| 1862 } | 1862 } |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1946 virtual_network->UpdatePropertyMap(index, &expanded_user_value); | 1946 virtual_network->UpdatePropertyMap(index, &expanded_user_value); |
| 1947 return true; | 1947 return true; |
| 1948 } | 1948 } |
| 1949 case PROPERTY_INDEX_SAVE_CREDENTIALS: | 1949 case PROPERTY_INDEX_SAVE_CREDENTIALS: |
| 1950 virtual_network->set_save_credentials(GetBooleanValue(value)); | 1950 virtual_network->set_save_credentials(GetBooleanValue(value)); |
| 1951 return true; | 1951 return true; |
| 1952 case PROPERTY_INDEX_OPEN_VPN_CACERT: | 1952 case PROPERTY_INDEX_OPEN_VPN_CACERT: |
| 1953 virtual_network->set_ca_cert_nss(GetStringValue(value)); | 1953 virtual_network->set_ca_cert_nss(GetStringValue(value)); |
| 1954 return true; | 1954 return true; |
| 1955 case PROPERTY_INDEX_OPEN_VPN_REMOTECERTKU: { | 1955 case PROPERTY_INDEX_OPEN_VPN_REMOTECERTKU: { |
| 1956 // ONC supports a list of these, but we flimflam supports only one | 1956 // ONC supports a list of these, but we shill supports only one |
| 1957 // today. So extract the first. | 1957 // today. So extract the first. |
| 1958 const base::ListValue* value_list = NULL; | 1958 const base::ListValue* value_list = NULL; |
| 1959 value.GetAsList(&value_list); | 1959 value.GetAsList(&value_list); |
| 1960 const base::Value* first_item = NULL; | 1960 const base::Value* first_item = NULL; |
| 1961 if (!value_list->Get(0, &first_item) || | 1961 if (!value_list->Get(0, &first_item) || |
| 1962 !first_item->IsType(base::Value::TYPE_STRING)) { | 1962 !first_item->IsType(base::Value::TYPE_STRING)) { |
| 1963 VLOG(1) << "RemoteCertKU must be non-empty list of strings"; | 1963 VLOG(1) << "RemoteCertKU must be non-empty list of strings"; |
| 1964 return false; | 1964 return false; |
| 1965 } | 1965 } |
| 1966 virtual_network->UpdatePropertyMap(index, first_item); | 1966 virtual_network->UpdatePropertyMap(index, first_item); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1980 case PROPERTY_INDEX_OPEN_VPN_PUSHPEERINFO: | 1980 case PROPERTY_INDEX_OPEN_VPN_PUSHPEERINFO: |
| 1981 case PROPERTY_INDEX_OPEN_VPN_REMOTECERTEKU: | 1981 case PROPERTY_INDEX_OPEN_VPN_REMOTECERTEKU: |
| 1982 case PROPERTY_INDEX_OPEN_VPN_REMOTECERTTLS: | 1982 case PROPERTY_INDEX_OPEN_VPN_REMOTECERTTLS: |
| 1983 case PROPERTY_INDEX_OPEN_VPN_RENEGSEC: | 1983 case PROPERTY_INDEX_OPEN_VPN_RENEGSEC: |
| 1984 case PROPERTY_INDEX_OPEN_VPN_SERVERPOLLTIMEOUT: | 1984 case PROPERTY_INDEX_OPEN_VPN_SERVERPOLLTIMEOUT: |
| 1985 case PROPERTY_INDEX_OPEN_VPN_SHAPER: | 1985 case PROPERTY_INDEX_OPEN_VPN_SHAPER: |
| 1986 case PROPERTY_INDEX_OPEN_VPN_STATICCHALLENGE: | 1986 case PROPERTY_INDEX_OPEN_VPN_STATICCHALLENGE: |
| 1987 case PROPERTY_INDEX_OPEN_VPN_TLSAUTHCONTENTS: | 1987 case PROPERTY_INDEX_OPEN_VPN_TLSAUTHCONTENTS: |
| 1988 case PROPERTY_INDEX_OPEN_VPN_TLSREMOTE: { | 1988 case PROPERTY_INDEX_OPEN_VPN_TLSREMOTE: { |
| 1989 if (!value.IsType(TYPE_STRING)) { | 1989 if (!value.IsType(TYPE_STRING)) { |
| 1990 // Flimflam wants all provider properties to be strings. | 1990 // Shill wants all provider properties to be strings. |
| 1991 base::StringValue string_value(ConvertValueToString(value)); | 1991 base::StringValue string_value(ConvertValueToString(value)); |
| 1992 virtual_network->UpdatePropertyMap(index, &string_value); | 1992 virtual_network->UpdatePropertyMap(index, &string_value); |
| 1993 } | 1993 } |
| 1994 return true; | 1994 return true; |
| 1995 } | 1995 } |
| 1996 case PROPERTY_INDEX_ONC_CLIENT_CERT_REF: { | 1996 case PROPERTY_INDEX_ONC_CLIENT_CERT_REF: { |
| 1997 std::string cert_id = GetPkcs11IdFromCertGuid(GetStringValue(value)); | 1997 std::string cert_id = GetPkcs11IdFromCertGuid(GetStringValue(value)); |
| 1998 if (cert_id.empty()) | 1998 if (cert_id.empty()) |
| 1999 return false; | 1999 return false; |
| 2000 virtual_network->set_client_cert_id(cert_id); | 2000 virtual_network->set_client_cert_id(cert_id); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2027 // on the value of AuthenticationType. | 2027 // on the value of AuthenticationType. |
| 2028 { "L2TP-IPsec", PROVIDER_TYPE_L2TP_IPSEC_PSK }, | 2028 { "L2TP-IPsec", PROVIDER_TYPE_L2TP_IPSEC_PSK }, |
| 2029 { "OpenVPN", PROVIDER_TYPE_OPEN_VPN }, | 2029 { "OpenVPN", PROVIDER_TYPE_OPEN_VPN }, |
| 2030 }; | 2030 }; |
| 2031 CR_DEFINE_STATIC_LOCAL(EnumMapper<ProviderType>, parser, | 2031 CR_DEFINE_STATIC_LOCAL(EnumMapper<ProviderType>, parser, |
| 2032 (table, arraysize(table), PROVIDER_TYPE_MAX)); | 2032 (table, arraysize(table), PROVIDER_TYPE_MAX)); |
| 2033 return parser.Get(type); | 2033 return parser.Get(type); |
| 2034 } | 2034 } |
| 2035 | 2035 |
| 2036 } // namespace chromeos | 2036 } // namespace chromeos |
| OLD | NEW |