static void real_connection_secrets_updated (NMDevice *dev, NMConnection *connection, GSList *updated_settings, RequestSecretsCaller caller) { NMActRequest *req; gboolean found = FALSE; GSList *iter; if (caller == SECRETS_CALLER_PPP) { NMPPPManager *ppp_manager; NMSettingGsm *s_gsm = NULL; ppp_manager = nm_modem_get_ppp_manager (NM_MODEM (dev)); g_return_if_fail (ppp_manager != NULL); s_gsm = (NMSettingGsm *) nm_connection_get_setting (connection, NM_TYPE_SETTING_GSM); if (!s_gsm) { /* Shouldn't ever happen */ nm_ppp_manager_update_secrets (ppp_manager, nm_device_get_iface (dev), NULL, NULL, "missing GSM setting; no secrets could be found."); } else { const char *username = nm_setting_gsm_get_username (s_gsm); const char *password = nm_setting_gsm_get_password (s_gsm); nm_ppp_manager_update_secrets (ppp_manager, nm_device_get_iface (dev), username ? username : "", password ? password : "", NULL); } return; } g_return_if_fail (caller == SECRETS_CALLER_GSM); g_return_if_fail (nm_device_get_state (dev) == NM_DEVICE_STATE_NEED_AUTH); for (iter = updated_settings; iter; iter = g_slist_next (iter)) { const char *setting_name = (const char *) iter->data; if (!strcmp (setting_name, NM_SETTING_GSM_SETTING_NAME)) found = TRUE; else nm_warning ("Ignoring updated secrets for setting '%s'.", setting_name); } if (!found) return; req = nm_device_get_act_request (dev); g_assert (req); g_return_if_fail (nm_act_request_get_connection (req) == connection); nm_device_activate_schedule_stage1_device_prepare (dev); }
static gboolean extract_details_from_connection (NMConnection *connection, const char *secrets_setting_name, const char **username, const char **password, GError **error) { NMSettingConnection *s_con; NMSetting *setting; const char *setting_name; g_return_val_if_fail (connection != NULL, FALSE); g_return_val_if_fail (username != NULL, FALSE); g_return_val_if_fail (password != NULL, FALSE); if (secrets_setting_name) setting_name = secrets_setting_name; else { /* Get the setting matching the connection type */ s_con = nm_connection_get_setting_connection (connection); g_assert (s_con); setting_name = nm_setting_connection_get_connection_type (s_con); g_assert (setting_name); /* In case of bluetooth connection, use GSM or CDMA setting */ if (strcmp (setting_name, NM_SETTING_BLUETOOTH_SETTING_NAME) == 0) { if (nm_connection_get_setting_gsm (connection)) setting_name = NM_SETTING_GSM_SETTING_NAME; else setting_name = NM_SETTING_CDMA_SETTING_NAME; } } setting = nm_connection_get_setting_by_name (connection, setting_name); if (!setting) { /* This shouldn't ever happen */ g_set_error_literal (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED, "Missing type-specific setting; no secrets could be found."); return FALSE; } if (NM_IS_SETTING_PPPOE (setting)) { *username = nm_setting_pppoe_get_username (NM_SETTING_PPPOE (setting)); *password = nm_setting_pppoe_get_password (NM_SETTING_PPPOE (setting)); } else if (NM_IS_SETTING_ADSL (setting)) { *username = nm_setting_adsl_get_username (NM_SETTING_ADSL (setting)); *password = nm_setting_adsl_get_password (NM_SETTING_ADSL (setting)); } else if (NM_IS_SETTING_GSM (setting)) { *username = nm_setting_gsm_get_username (NM_SETTING_GSM (setting)); *password = nm_setting_gsm_get_password (NM_SETTING_GSM (setting)); } else if (NM_IS_SETTING_CDMA (setting)) { *username = nm_setting_cdma_get_username (NM_SETTING_CDMA (setting)); *password = nm_setting_cdma_get_password (NM_SETTING_CDMA (setting)); } return TRUE; }
static GHashTable * create_connect_properties (NMConnection *connection) { NMSettingGsm *setting; GHashTable *properties; const char *str; setting = NM_SETTING_GSM (nm_connection_get_setting (connection, NM_TYPE_SETTING_GSM)); properties = value_hash_create (); str = nm_setting_gsm_get_number (setting); if (str) value_hash_add_str (properties, "number", str); str = nm_setting_gsm_get_apn (setting); if (str) value_hash_add_str (properties, "apn", str); str = nm_setting_gsm_get_network_id (setting); if (str) value_hash_add_str (properties, "network_id", str); str = nm_setting_gsm_get_pin (setting); if (str) value_hash_add_str (properties, "pin", str); str = nm_setting_gsm_get_username (setting); if (str) value_hash_add_str (properties, "username", str); str = nm_setting_gsm_get_password (setting); if (str) value_hash_add_str (properties, "password", str); switch (nm_setting_gsm_get_network_type (setting)) { case NM_GSM_NETWORK_UMTS_HSPA: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_MODE_3G_ONLY); break; case NM_GSM_NETWORK_GPRS_EDGE: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_MODE_2G_ONLY); break; case NM_GSM_NETWORK_PREFER_UMTS_HSPA: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_MODE_3G_PREFERRED); break; case NM_GSM_NETWORK_PREFER_GPRS_EDGE: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_MODE_2G_PREFERRED); break; default: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_MODE_ANY); break; } /* FIXME: band */ return properties; }
static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { NMSettingGsm *setting = NM_SETTING_GSM (object); switch (prop_id) { case PROP_NUMBER: g_value_set_string (value, nm_setting_gsm_get_number (setting)); break; case PROP_USERNAME: g_value_set_string (value, nm_setting_gsm_get_username (setting)); break; case PROP_PASSWORD: g_value_set_string (value, nm_setting_gsm_get_password (setting)); break; case PROP_PASSWORD_FLAGS: g_value_set_flags (value, nm_setting_gsm_get_password_flags (setting)); break; case PROP_APN: g_value_set_string (value, nm_setting_gsm_get_apn (setting)); break; case PROP_NETWORK_ID: g_value_set_string (value, nm_setting_gsm_get_network_id (setting)); break; case PROP_PIN: g_value_set_string (value, nm_setting_gsm_get_pin (setting)); break; case PROP_PIN_FLAGS: g_value_set_flags (value, nm_setting_gsm_get_pin_flags (setting)); break; case PROP_HOME_ONLY: g_value_set_boolean (value, nm_setting_gsm_get_home_only (setting)); break; case PROP_DEVICE_ID: g_value_set_string (value, nm_setting_gsm_get_device_id (setting)); break; case PROP_SIM_ID: g_value_set_string (value, nm_setting_gsm_get_sim_id (setting)); break; case PROP_SIM_OPERATOR_ID: g_value_set_string (value, nm_setting_gsm_get_sim_operator_id (setting)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { NMSettingGsm *setting = NM_SETTING_GSM (object); switch (prop_id) { case PROP_NUMBER: g_value_set_string (value, nm_setting_gsm_get_number (setting)); break; case PROP_USERNAME: g_value_set_string (value, nm_setting_gsm_get_username (setting)); break; case PROP_PASSWORD: g_value_set_string (value, nm_setting_gsm_get_password (setting)); break; case PROP_PASSWORD_FLAGS: g_value_set_uint (value, nm_setting_gsm_get_password_flags (setting)); break; case PROP_APN: g_value_set_string (value, nm_setting_gsm_get_apn (setting)); break; case PROP_NETWORK_ID: g_value_set_string (value, nm_setting_gsm_get_network_id (setting)); break; case PROP_NETWORK_TYPE: g_value_set_int (value, NM_SETTING_GSM_GET_PRIVATE (setting)->network_type); break; case PROP_ALLOWED_BANDS: g_value_set_uint (value, NM_SETTING_GSM_GET_PRIVATE (setting)->allowed_bands); break; case PROP_PIN: g_value_set_string (value, nm_setting_gsm_get_pin (setting)); break; case PROP_PIN_FLAGS: g_value_set_uint (value, nm_setting_gsm_get_pin_flags (setting)); break; case PROP_HOME_ONLY: g_value_set_boolean (value, nm_setting_gsm_get_home_only (setting)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static gboolean get_user_pass (NMModem *modem, NMConnection *connection, const char **user, const char **pass) { NMSettingGsm *s_gsm; s_gsm = nm_connection_get_setting_gsm (connection); if (!s_gsm) return FALSE; if (user) *user = nm_setting_gsm_get_username (s_gsm); if (pass) *pass = nm_setting_gsm_get_password (s_gsm); return TRUE; }
static gboolean extract_details_from_connection (NMConnection *connection, const char **username, const char **password, GError **error) { NMSettingConnection *s_con; NMSetting *setting; const char *connection_type; g_return_val_if_fail (connection != NULL, FALSE); g_return_val_if_fail (username != NULL, FALSE); g_return_val_if_fail (password != NULL, FALSE); s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION)); g_assert (s_con); connection_type = nm_setting_connection_get_connection_type (s_con); g_assert (connection_type); setting = nm_connection_get_setting_by_name (connection, connection_type); if (!setting) { g_set_error_literal (error, NM_PPP_MANAGER_ERROR, NM_PPP_MANAGER_ERROR_UNKOWN, "Missing type-specific setting; no secrets could be found."); return FALSE; } /* FIXME: push this down to the settings and keep PPP manager generic */ if (NM_IS_SETTING_PPPOE (setting)) { *username = nm_setting_pppoe_get_username (NM_SETTING_PPPOE (setting)); *password = nm_setting_pppoe_get_password (NM_SETTING_PPPOE (setting)); } else if (NM_IS_SETTING_GSM (setting)) { *username = nm_setting_gsm_get_username (NM_SETTING_GSM (setting)); *password = nm_setting_gsm_get_password (NM_SETTING_GSM (setting)); } else if (NM_IS_SETTING_CDMA (setting)) { *username = nm_setting_cdma_get_username (NM_SETTING_CDMA (setting)); *password = nm_setting_cdma_get_password (NM_SETTING_CDMA (setting)); } return TRUE; }
static GHashTable * create_connect_properties (NMConnection *connection) { NMSettingGsm *setting; NMSettingPPP *s_ppp; GHashTable *properties; const char *str; setting = nm_connection_get_setting_gsm (connection); properties = value_hash_create (); str = nm_setting_gsm_get_number (setting); if (str) value_hash_add_str (properties, "number", str); str = nm_setting_gsm_get_apn (setting); if (str) value_hash_add_str (properties, "apn", str); str = nm_setting_gsm_get_network_id (setting); if (str) value_hash_add_str (properties, "network_id", str); str = nm_setting_gsm_get_pin (setting); if (str) value_hash_add_str (properties, "pin", str); str = nm_setting_gsm_get_username (setting); if (str) value_hash_add_str (properties, "username", str); str = nm_setting_gsm_get_password (setting); if (str) value_hash_add_str (properties, "password", str); /* Add both old and new preferred modes */ switch (nm_setting_gsm_get_network_type (setting)) { case NM_SETTING_GSM_NETWORK_TYPE_UMTS_HSPA: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_ONLY); value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_3G_ONLY); break; case NM_SETTING_GSM_NETWORK_TYPE_GPRS_EDGE: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_ONLY); value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_2G_ONLY); break; case NM_SETTING_GSM_NETWORK_TYPE_PREFER_UMTS_HSPA: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_PREFERRED); value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_3G_PREFERRED); break; case NM_SETTING_GSM_NETWORK_TYPE_PREFER_GPRS_EDGE: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_PREFERRED); value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_2G_PREFERRED); break; case NM_SETTING_GSM_NETWORK_TYPE_PREFER_4G: /* deprecated modes not extended for 4G, so no need to set them here */ value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_4G_PREFERRED); break; case NM_SETTING_GSM_NETWORK_TYPE_4G: /* deprecated modes not extended for 4G, so no need to set them here */ value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_4G_ONLY); break; default: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_ANY); value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_ANY); break; } /* Roaming */ if (nm_setting_gsm_get_home_only (setting)) value_hash_add_bool (properties, "home_only", TRUE); /* For IpMethod == STATIC or DHCP */ s_ppp = nm_connection_get_setting_ppp (connection); if (s_ppp) { guint32 auth = MM_MODEM_GSM_ALLOWED_AUTH_UNKNOWN; if (nm_setting_ppp_get_noauth (s_ppp)) auth |= MM_MODEM_GSM_ALLOWED_AUTH_NONE; if (!nm_setting_ppp_get_refuse_pap (s_ppp)) auth |= MM_MODEM_GSM_ALLOWED_AUTH_PAP; if (!nm_setting_ppp_get_refuse_chap (s_ppp)) auth |= MM_MODEM_GSM_ALLOWED_AUTH_CHAP; if (!nm_setting_ppp_get_refuse_mschap (s_ppp)) auth |= MM_MODEM_GSM_ALLOWED_AUTH_MSCHAP; if (!nm_setting_ppp_get_refuse_mschapv2 (s_ppp)) auth |= MM_MODEM_GSM_ALLOWED_AUTH_MSCHAPV2; if (!nm_setting_ppp_get_refuse_eap (s_ppp)) auth |= MM_MODEM_GSM_ALLOWED_AUTH_EAP; if (auth != MM_MODEM_GSM_ALLOWED_AUTH_UNKNOWN) value_hash_add_uint (properties, "allowed_auth", auth); } return properties; }
static void populate_gsm_ui (CEPageMobile *self, NMConnection *connection) { CEPageMobilePrivate *priv = CE_PAGE_MOBILE_GET_PRIVATE (self); NMSettingGsm *setting = NM_SETTING_GSM (priv->setting); int type_idx; const char *s; s = nm_setting_gsm_get_number (setting); if (s) gtk_entry_set_text (priv->number, s); s = nm_setting_gsm_get_username (setting); if (s) gtk_entry_set_text (priv->username, s); s = nm_setting_gsm_get_apn (setting); if (s) gtk_entry_set_text (priv->apn, s); s = nm_setting_gsm_get_network_id (setting); if (s) gtk_entry_set_text (priv->network_id, s); switch (nm_setting_gsm_get_network_type (setting)) { case NM_SETTING_GSM_NETWORK_TYPE_UMTS_HSPA: type_idx = NET_TYPE_3G; break; case NM_SETTING_GSM_NETWORK_TYPE_GPRS_EDGE: type_idx = NET_TYPE_2G; break; case NM_SETTING_GSM_NETWORK_TYPE_PREFER_UMTS_HSPA: type_idx = NET_TYPE_PREFER_3G; break; case NM_SETTING_GSM_NETWORK_TYPE_PREFER_GPRS_EDGE: type_idx = NET_TYPE_PREFER_2G; break; case NM_SETTING_GSM_NETWORK_TYPE_PREFER_4G: type_idx = NET_TYPE_PREFER_4G; break; case NM_SETTING_GSM_NETWORK_TYPE_4G: type_idx = NET_TYPE_4G; break; case NM_SETTING_GSM_NETWORK_TYPE_ANY: default: type_idx = NET_TYPE_ANY; break; } gtk_combo_box_set_active (priv->network_type, type_idx); gtk_toggle_button_set_active (priv->roaming_allowed, !nm_setting_gsm_get_home_only (setting)); s = nm_setting_gsm_get_password (setting); if (s) gtk_entry_set_text (priv->password, s); s = nm_setting_gsm_get_pin (setting); if (s) gtk_entry_set_text (priv->pin, s); }
static GHashTable * create_connect_properties (NMConnection *connection) { NMSettingGsm *setting; GHashTable *properties; const char *str; setting = NM_SETTING_GSM (nm_connection_get_setting (connection, NM_TYPE_SETTING_GSM)); properties = value_hash_create (); str = nm_setting_gsm_get_number (setting); if (str) value_hash_add_str (properties, "number", str); str = nm_setting_gsm_get_apn (setting); if (str) value_hash_add_str (properties, "apn", str); str = nm_setting_gsm_get_network_id (setting); if (str) value_hash_add_str (properties, "network_id", str); str = nm_setting_gsm_get_pin (setting); if (str) value_hash_add_str (properties, "pin", str); str = nm_setting_gsm_get_username (setting); if (str) value_hash_add_str (properties, "username", str); str = nm_setting_gsm_get_password (setting); if (str) value_hash_add_str (properties, "password", str); /* Add both old and new preferred modes */ switch (nm_setting_gsm_get_network_type (setting)) { case NM_SETTING_GSM_NETWORK_TYPE_UMTS_HSPA: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_ONLY); value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_3G_ONLY); break; case NM_SETTING_GSM_NETWORK_TYPE_GPRS_EDGE: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_ONLY); value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_2G_ONLY); break; case NM_SETTING_GSM_NETWORK_TYPE_PREFER_UMTS_HSPA: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_PREFERRED); value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_3G_PREFERRED); break; case NM_SETTING_GSM_NETWORK_TYPE_PREFER_GPRS_EDGE: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_PREFERRED); value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_2G_PREFERRED); break; default: value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_ANY); value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_ANY); break; } /* Roaming */ if (nm_setting_gsm_get_home_only (setting)) value_hash_add_bool (properties, "home_only", TRUE); return properties; }