diff --git a/ChangeLog b/ChangeLog index 1bb45d6cba..4f4fd7c446 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-12 Dan Williams + + Revert most of the 'hostname' patch. Too much stuff still breaks when + hostname is updated at runtime. Distros or users who want hostname updates + can use dispatcher scripts to update the hostname if they need it. + 2008-08-12 Dan Williams * introspection/nm-settings-system.xml diff --git a/introspection/nm-settings-system.xml b/introspection/nm-settings-system.xml index e9c61c7f1b..1bea6a8ba4 100644 --- a/introspection/nm-settings-system.xml +++ b/introspection/nm-settings-system.xml @@ -19,31 +19,12 @@ - - - Sets the configured machine hostname and domain. - - - - - - Fully-qualified hostname to set in configuration. To clear hostname, pass a zero-length string. Example: "mycomputer.foobar.com" - - - - The list of HAL UDIs of devices that should not be managed by NetworkManager. - - - The configured hostname of the machine. - - - diff --git a/system-settings/plugins/ifcfg-fedora/plugin.c b/system-settings/plugins/ifcfg-fedora/plugin.c index 3f97a45d54..dc6de9aa22 100644 --- a/system-settings/plugins/ifcfg-fedora/plugin.c +++ b/system-settings/plugins/ifcfg-fedora/plugin.c @@ -44,10 +44,8 @@ #include "plugin.h" #include "nm-system-config-interface.h" #include "nm-ifcfg-connection.h" -#include "shvar.h" #define IFCFG_DIR SYSCONFDIR"/sysconfig/network-scripts/" -#define NETWORK_FILE SYSCONFDIR"/sysconfig/network" static void system_config_interface_init (NMSystemConfigInterface *system_config_interface_class); @@ -75,13 +73,9 @@ typedef struct { NMSystemConfigHalManager *hal_mgr; GHashTable *connections; - char *hostname; - GFileMonitor *ifcfg_monitor; - guint ifcfg_monitor_id; - - GFileMonitor *network_monitor; - guint network_monitor_id; + GFileMonitor *monitor; + guint monitor_id; } SCPluginIfcfgPrivate; @@ -422,120 +416,22 @@ dir_changed (GFileMonitor *monitor, g_free (name); } -static void -read_hostname (SCPluginIfcfg *plugin, gboolean notify) -{ - SCPluginIfcfgPrivate *priv = SC_PLUGIN_IFCFG_GET_PRIVATE (plugin); - shvarFile *network; - char *new_hostname; - gboolean changed = FALSE; - - network = svNewFile (NETWORK_FILE); - if (!network) - return; - - new_hostname = svGetValue (network, "HOSTNAME"); - if (new_hostname && strlen (new_hostname)) { - g_free (priv->hostname); - priv->hostname = new_hostname; - changed = TRUE; - } else - g_free (new_hostname); - svCloseFile (network); - - if (changed) { - PLUGIN_PRINT (IFCFG_PLUGIN_NAME, "system hostname '%s'.", priv->hostname); - if (notify) - g_object_notify (G_OBJECT (plugin), NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME); - } -} - -static gboolean -write_hostname (SCPluginIfcfg *plugin, const char *hostname, GError **error) -{ - shvarFile *network; - gboolean success = FALSE; - - network = svNewFile (NETWORK_FILE); - if (!network) { - /* May not be created; try to create it */ - network = svCreateFile (NETWORK_FILE); - if (!network) - return FALSE; - } - - svSetValue (network, "HOSTNAME", hostname); - if (svWriteFile (network, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) == 0) - success = TRUE; - - svCloseFile (network); - return success; -} - -static void -network_changed (GFileMonitor *monitor, - GFile *file, - GFile *other_file, - GFileMonitorEvent event_type, - gpointer user_data) -{ - SCPluginIfcfg *plugin = SC_PLUGIN_IFCFG (user_data); - SCPluginIfcfgPrivate *priv = SC_PLUGIN_IFCFG_GET_PRIVATE (plugin); - - switch (event_type) { - case G_FILE_MONITOR_EVENT_DELETED: - PLUGIN_PRINT (IFCFG_PLUGIN_NAME, "system hostname cleared."); - g_free (priv->hostname); - priv->hostname = NULL; - g_object_notify (G_OBJECT (plugin), NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME); - break; - case G_FILE_MONITOR_EVENT_CREATED: - case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT: - read_hostname (plugin, TRUE); - break; - default: - break; - } -} - static void setup_monitoring (SCPluginIfcfg *plugin) { SCPluginIfcfgPrivate *priv = SC_PLUGIN_IFCFG_GET_PRIVATE (plugin); GFile *file; GFileMonitor *monitor; - GError *error = NULL; priv->connections = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_object_unref); - /* monitor the ifcfg file directory */ file = g_file_new_for_path (IFCFG_DIR); - monitor = g_file_monitor_directory (file, G_FILE_MONITOR_NONE, NULL, &error); + monitor = g_file_monitor_directory (file, G_FILE_MONITOR_NONE, NULL, NULL); g_object_unref (file); if (monitor) { - priv->ifcfg_monitor_id = g_signal_connect (monitor, "changed", G_CALLBACK (dir_changed), plugin); - priv->ifcfg_monitor = monitor; - } else { - PLUGIN_WARN (IFCFG_PLUGIN_NAME, "unable to monitor %s for changes: (%d) %s.", - IFCFG_DIR, error->code, error->message); - g_error_free (error); - error = NULL; - } - - /* monitor the 'network' file */ - file = g_file_new_for_path (NETWORK_FILE); - monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, &error); - g_object_unref (file); - - if (monitor) { - priv->network_monitor_id = g_signal_connect (monitor, "changed", G_CALLBACK (network_changed), plugin); - priv->network_monitor = monitor; - } else { - PLUGIN_WARN (IFCFG_PLUGIN_NAME, "unable to monitor %s for changes: (%d) %s.", - NETWORK_FILE, error->code, error->message); - g_error_free (error); - error = NULL; + priv->monitor_id = g_signal_connect (monitor, "changed", G_CALLBACK (dir_changed), plugin); + priv->monitor = monitor; } } @@ -566,12 +462,6 @@ get_connections (NMSystemConfigInterface *config) return list; } -static gboolean -set_hostname (NMSystemConfigInterface *config, const char *hostname, GError **error) -{ - return write_hostname (SC_PLUGIN_IFCFG (config), hostname, error); -} - static void init (NMSystemConfigInterface *config, NMSystemConfigHalManager *hal_manager) { @@ -593,8 +483,6 @@ sc_plugin_ifcfg_init (SCPluginIfcfg *plugin) error->message ? error->message : "(unknown)"); g_error_free (error); } - - read_hostname (plugin, FALSE); } static void @@ -611,22 +499,12 @@ dispose (GObject *object) if (priv->connections) g_hash_table_destroy (priv->connections); - g_free (priv->hostname); + if (priv->monitor) { + if (priv->monitor_id) + g_signal_handler_disconnect (priv->monitor, priv->monitor_id); - if (priv->ifcfg_monitor) { - if (priv->ifcfg_monitor_id) - g_signal_handler_disconnect (priv->ifcfg_monitor, priv->ifcfg_monitor_id); - - g_file_monitor_cancel (priv->ifcfg_monitor); - g_object_unref (priv->ifcfg_monitor); - } - - if (priv->network_monitor) { - if (priv->network_monitor_id) - g_signal_handler_disconnect (priv->network_monitor, priv->network_monitor_id); - - g_file_monitor_cancel (priv->network_monitor); - g_object_unref (priv->network_monitor); + g_file_monitor_cancel (priv->monitor); + g_object_unref (priv->monitor); } G_OBJECT_CLASS (sc_plugin_ifcfg_parent_class)->dispose (object); @@ -642,9 +520,6 @@ static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - SCPluginIfcfg *plugin = SC_PLUGIN_IFCFG (object); - SCPluginIfcfgPrivate *priv = SC_PLUGIN_IFCFG_GET_PRIVATE (plugin); - switch (prop_id) { case NM_SYSTEM_CONFIG_INTERFACE_PROP_NAME: g_value_set_string (value, IFCFG_PLUGIN_NAME); @@ -652,31 +527,6 @@ get_property (GObject *object, guint prop_id, case NM_SYSTEM_CONFIG_INTERFACE_PROP_INFO: g_value_set_string (value, IFCFG_PLUGIN_INFO); break; - case NM_SYSTEM_CONFIG_INTERFACE_PROP_HOSTNAME: - g_value_set_string (value, priv->hostname); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - SCPluginIfcfg *plugin = SC_PLUGIN_IFCFG (object); - GError *error = NULL; - - switch (prop_id) { - case NM_SYSTEM_CONFIG_INTERFACE_PROP_HOSTNAME: - if (!write_hostname (plugin, g_value_get_string (value), &error)) { - PLUGIN_WARN (IFCFG_PLUGIN_NAME, "Could not save hostname: %s", - (error && error->message) ? error->message : "(unknown)"); - if (error) - g_error_free (error); - } - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -693,7 +543,6 @@ sc_plugin_ifcfg_class_init (SCPluginIfcfgClass *req_class) object_class->dispose = dispose; object_class->finalize = finalize; object_class->get_property = get_property; - object_class->set_property = set_property; g_object_class_override_property (object_class, NM_SYSTEM_CONFIG_INTERFACE_PROP_NAME, @@ -702,10 +551,6 @@ sc_plugin_ifcfg_class_init (SCPluginIfcfgClass *req_class) g_object_class_override_property (object_class, NM_SYSTEM_CONFIG_INTERFACE_PROP_INFO, NM_SYSTEM_CONFIG_INTERFACE_INFO); - - g_object_class_override_property (object_class, - NM_SYSTEM_CONFIG_INTERFACE_PROP_HOSTNAME, - NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME); } static void @@ -714,7 +559,6 @@ system_config_interface_init (NMSystemConfigInterface *system_config_interface_c /* interface implementation */ system_config_interface_class->get_connections = get_connections; system_config_interface_class->get_unmanaged_devices = get_unmanaged_devices; - system_config_interface_class->set_hostname = set_hostname; system_config_interface_class->init = init; } diff --git a/system-settings/plugins/ifcfg-suse/plugin.c b/system-settings/plugins/ifcfg-suse/plugin.c index 0897935aa7..6bed65abb4 100644 --- a/system-settings/plugins/ifcfg-suse/plugin.c +++ b/system-settings/plugins/ifcfg-suse/plugin.c @@ -65,7 +65,6 @@ typedef struct { gboolean initialized; GHashTable *connections; GHashTable *unmanaged_devices; - char *hostname; guint32 default_gw; GFileMonitor *default_gw_monitor; @@ -352,7 +351,6 @@ dispose (GObject *object) g_hash_table_destroy (priv->connections); g_hash_table_destroy (priv->unmanaged_devices); - g_free (priv->hostname); if (priv->default_gw_monitor) { if (priv->default_gw_monitor_id) @@ -374,8 +372,6 @@ static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - SCPluginIfcfgPrivate *priv = SC_PLUGIN_IFCFG_GET_PRIVATE (object); - switch (prop_id) { case NM_SYSTEM_CONFIG_INTERFACE_PROP_NAME: g_value_set_string (value, IFCFG_PLUGIN_NAME); @@ -383,20 +379,6 @@ get_property (GObject *object, guint prop_id, case NM_SYSTEM_CONFIG_INTERFACE_PROP_INFO: g_value_set_string (value, IFCFG_PLUGIN_INFO); break; - case NM_SYSTEM_CONFIG_INTERFACE_PROP_HOSTNAME: - g_value_set_string (value, priv->hostname); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -411,7 +393,6 @@ sc_plugin_ifcfg_class_init (SCPluginIfcfgClass *req_class) g_type_class_add_private (req_class, sizeof (SCPluginIfcfgPrivate)); object_class->get_property = get_property; - object_class->set_property = set_property; object_class->dispose = dispose; g_object_class_override_property (object_class, @@ -421,10 +402,6 @@ sc_plugin_ifcfg_class_init (SCPluginIfcfgClass *req_class) g_object_class_override_property (object_class, NM_SYSTEM_CONFIG_INTERFACE_PROP_INFO, NM_SYSTEM_CONFIG_INTERFACE_INFO); - - g_object_class_override_property (object_class, - NM_SYSTEM_CONFIG_INTERFACE_PROP_HOSTNAME, - NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME); } static void diff --git a/system-settings/plugins/keyfile/plugin.c b/system-settings/plugins/keyfile/plugin.c index 6158a8d3d2..eaf780e83e 100644 --- a/system-settings/plugins/keyfile/plugin.c +++ b/system-settings/plugins/keyfile/plugin.c @@ -36,8 +36,6 @@ G_DEFINE_TYPE_EXTENDED (SCPluginKeyfile, sc_plugin_keyfile, G_TYPE_OBJECT, 0, typedef struct { GHashTable *hash; - char *hostname; - GFileMonitor *monitor; guint monitor_id; @@ -202,8 +200,6 @@ static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - SCPluginKeyfilePrivate *priv = SC_PLUGIN_KEYFILE_GET_PRIVATE (object); - switch (prop_id) { case NM_SYSTEM_CONFIG_INTERFACE_PROP_NAME: g_value_set_string (value, KEYFILE_PLUGIN_NAME); @@ -211,20 +207,6 @@ get_property (GObject *object, guint prop_id, case NM_SYSTEM_CONFIG_INTERFACE_PROP_INFO: g_value_set_string (value, KEYFILE_PLUGIN_INFO); break; - case NM_SYSTEM_CONFIG_INTERFACE_PROP_HOSTNAME: - g_value_set_string (value, priv->hostname); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -252,8 +234,6 @@ dispose (GObject *object) if (priv->hash) g_hash_table_destroy (priv->hash); - g_free (priv->hostname); - G_OBJECT_CLASS (sc_plugin_keyfile_parent_class)->dispose (object); } @@ -266,7 +246,6 @@ sc_plugin_keyfile_class_init (SCPluginKeyfileClass *req_class) object_class->dispose = dispose; object_class->get_property = get_property; - object_class->set_property = set_property; g_object_class_override_property (object_class, NM_SYSTEM_CONFIG_INTERFACE_PROP_NAME, @@ -275,10 +254,6 @@ sc_plugin_keyfile_class_init (SCPluginKeyfileClass *req_class) g_object_class_override_property (object_class, NM_SYSTEM_CONFIG_INTERFACE_PROP_INFO, NM_SYSTEM_CONFIG_INTERFACE_INFO); - - g_object_class_override_property (object_class, - NM_SYSTEM_CONFIG_INTERFACE_PROP_HOSTNAME, - NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME); } static void diff --git a/system-settings/src/dbus-settings.c b/system-settings/src/dbus-settings.c index 889bdfeb9a..0cb8abcb2c 100644 --- a/system-settings/src/dbus-settings.c +++ b/system-settings/src/dbus-settings.c @@ -39,9 +39,6 @@ static gboolean impl_settings_add_connection (NMSysconfigSettings *self, GHashTable *hash, DBusGMethodInvocation *context); -static gboolean -impl_settings_set_hostname (NMSysconfigSettings *self, const char *hostname, DBusGMethodInvocation *context); - #include "nm-settings-system-glue.h" static void unmanaged_devices_changed (NMSystemConfigInterface *config, gpointer user_data); @@ -55,8 +52,6 @@ typedef struct { gboolean connections_loaded; GHashTable *connections; GHashTable *unmanaged_devices; - - char *hostname; } NMSysconfigSettingsPrivate; G_DEFINE_TYPE (NMSysconfigSettings, nm_sysconfig_settings, NM_TYPE_SETTINGS); @@ -74,7 +69,6 @@ static guint signals[LAST_SIGNAL] = { 0 }; enum { PROP_0, PROP_UNMANAGED_DEVICES, - PROP_HOSTNAME, LAST_PROP }; @@ -103,16 +97,6 @@ load_connections (NMSysconfigSettings *self) nm_sysconfig_settings_add_connection (self, NM_EXPORTED_CONNECTION (elt->data)); g_slist_free (plugin_connections); - - /* Update hostname */ - if (!priv->hostname) { - const char *hostname = NULL; - - g_object_get (G_OBJECT (plugin), - NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME, &hostname, - NULL); - priv->hostname = g_strdup (hostname); - } } /* FIXME: Bad hack */ @@ -155,8 +139,6 @@ settings_finalize (GObject *object) g_slist_foreach (priv->plugins, (GFunc) g_object_unref, NULL); g_slist_free (priv->plugins); - g_free (priv->hostname); - if (priv->pol_ctx) polkit_context_unref (priv->pol_ctx); @@ -232,88 +214,16 @@ get_unmanaged_devices (NMSysconfigSettings *self) return devices; } -static gboolean -write_hostname_to_plugins (NMSysconfigSettings *self, - const char *hostname, - GError **error) -{ - NMSysconfigSettingsPrivate *priv = NM_SYSCONFIG_SETTINGS_GET_PRIVATE (self); - GSList *iter; - gboolean success = FALSE; - const char *real_new_hostname = NULL; - - if (hostname && strlen (hostname)) - real_new_hostname = hostname; - - /* Try to update the hostname in all plugins */ - for (iter = priv->plugins; iter; iter = g_slist_next (iter)) { - NMSystemConfigInterface *plugin = NM_SYSTEM_CONFIG_INTERFACE (iter->data); - GError *plugin_error = NULL; - - if (nm_system_config_interface_set_hostname (plugin, real_new_hostname, &plugin_error)) - success = TRUE; - else { - char *plugin_name = NULL; - - g_object_get (G_OBJECT (plugin), - NM_SYSTEM_CONFIG_INTERFACE_NAME, &plugin_name, - NULL); - g_warning ("Error: plugin '%s' could not set hostname: (%d) %s", - plugin_name ? plugin_name : "unknown", - plugin_error ? plugin_error->code : 0, - plugin_error ? plugin_error->message : "unknown error"); - g_free (plugin_name); - if (plugin_error) - g_error_free (plugin_error); - } - } - - if (!success) { - g_set_error (error, - NM_SYSCONFIG_SETTINGS_ERROR, - NM_SYSCONFIG_SETTINGS_ERROR_SET_HOSTNAME_FAILED, - "%s", - "None of the registered plugins could set the requested hostname."); - } - - return success; -} - static void get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) + GValue *value, GParamSpec *pspec) { NMSysconfigSettings *self = NM_SYSCONFIG_SETTINGS (object); - NMSysconfigSettingsPrivate *priv = NM_SYSCONFIG_SETTINGS_GET_PRIVATE (self); switch (prop_id) { case PROP_UNMANAGED_DEVICES: g_value_take_boxed (value, get_unmanaged_devices (self)); break; - case PROP_HOSTNAME: - g_value_set_string (value, priv->hostname); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - NMSysconfigSettings *self = NM_SYSCONFIG_SETTINGS (object); - GError *error = NULL; - - switch (prop_id) { - case PROP_HOSTNAME: - if (!write_hostname_to_plugins (self, g_value_get_string (value), &error)) { - g_warning ("%s: could not set hostname: (%d) %s", - __func__, error->code, error->message); - g_error_free (error); - } - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -331,7 +241,6 @@ nm_sysconfig_settings_class_init (NMSysconfigSettingsClass *class) /* virtual methods */ object_class->notify = notify; object_class->get_property = get_property; - object_class->set_property = set_property; object_class->finalize = settings_finalize; settings_class->list_connections = list_connections; @@ -344,14 +253,6 @@ nm_sysconfig_settings_class_init (NMSysconfigSettingsClass *class) DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH, G_PARAM_READABLE)); - g_object_class_install_property - (object_class, PROP_HOSTNAME, - g_param_spec_string (NM_SYSCONFIG_SETTINGS_HOSTNAME, - "Hostname", - "Configured hostname", - NULL, - G_PARAM_READWRITE)); - /* signals */ signals[PROPERTIES_CHANGED] = g_signal_new ("properties-changed", @@ -438,41 +339,6 @@ unmanaged_devices_changed (NMSystemConfigInterface *config, g_object_notify (G_OBJECT (self), NM_SYSCONFIG_SETTINGS_UNMANAGED_DEVICES); } -static void -hostname_changed (NMSystemConfigInterface *config, - GParamSpec *pspec, - gpointer user_data) -{ - NMSysconfigSettings *self = NM_SYSCONFIG_SETTINGS (user_data); - NMSysconfigSettingsPrivate *priv = NM_SYSCONFIG_SETTINGS_GET_PRIVATE (self); - gboolean changed = FALSE; - GSList *iter; - - /* Ask each plugin for the hostname, use the highest-priority plugin's response */ - for (iter = priv->plugins; iter; iter = g_slist_next (iter)) { - NMSystemConfigInterface *plugin = NM_SYSTEM_CONFIG_INTERFACE (iter->data); - char *new_hostname = NULL; - - g_object_get (G_OBJECT (plugin), - NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME, &new_hostname, - NULL); - if (new_hostname && strlen (new_hostname)) { - if (g_utf8_validate (new_hostname, -1, NULL)) { - g_free (priv->hostname); - priv->hostname = g_strdup (new_hostname); - g_free (new_hostname); - changed = TRUE; - break; - } else - g_message ("Error: hostname '%s' not UTF-8, ignoring.", new_hostname); - } - g_free (new_hostname); - } - - if (changed) - g_object_notify (G_OBJECT (self), NM_SYSCONFIG_SETTINGS_HOSTNAME); -} - void nm_sysconfig_settings_add_plugin (NMSysconfigSettings *self, NMSystemConfigInterface *plugin) @@ -490,7 +356,6 @@ nm_sysconfig_settings_add_plugin (NMSysconfigSettings *self, g_signal_connect (plugin, "connection-added", G_CALLBACK (plugin_connection_added), self); g_signal_connect (plugin, "unmanaged-devices-changed", G_CALLBACK (unmanaged_devices_changed), self); - g_signal_connect (plugin, "notify::" NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME, G_CALLBACK (hostname_changed), self); nm_system_config_interface_init (plugin, priv->hal_mgr); @@ -637,56 +502,3 @@ impl_settings_add_connection (NMSysconfigSettings *self, } } -static gboolean -impl_settings_set_hostname (NMSysconfigSettings *self, - const char *hostname, - DBusGMethodInvocation *context) -{ - NMSysconfigSettingsPrivate *priv = NM_SYSCONFIG_SETTINGS_GET_PRIVATE (self); - GError *error = NULL; - gboolean success = FALSE, malformed = FALSE; - const char *p = hostname; - guint32 count = 0; - - /* do some minimal hostname validation: - * 1) must have at least one '.' - * 2) must not start with '.' - * 3) must not have two '.' in succession - */ - do { - if (*p == '.') { - count++; - if (*(p+1) == '.') { - malformed = TRUE; - break; - } - } - } while (*p++); - - if (count < 1 || malformed || (*hostname == '.')) { - error = g_error_new (NM_SYSCONFIG_SETTINGS_ERROR, - NM_SYSCONFIG_SETTINGS_ERROR_INVALID_HOSTNAME, - "%s", - "The hostname was malformed or invalid."); - goto out; - } - - if (check_polkit_privileges (priv->g_connection, priv->pol_ctx, context, &error)) - success = write_hostname_to_plugins (self, hostname, &error); - -out: - if (success) - dbus_g_method_return (context); - else { - if (!error) { - error = g_error_new (NM_SYSCONFIG_SETTINGS_ERROR, - NM_SYSCONFIG_SETTINGS_ERROR_SET_HOSTNAME_FAILED, - "%s", - "Hostname could not be saved due to an unknown error."); - } - dbus_g_method_return_error (context, error); - g_error_free (error); - } - - return success; -} diff --git a/system-settings/src/dbus-settings.h b/system-settings/src/dbus-settings.h index d2256c0b7a..d51044b09e 100644 --- a/system-settings/src/dbus-settings.h +++ b/system-settings/src/dbus-settings.h @@ -39,7 +39,6 @@ typedef struct _NMSysconfigSettingsClass NMSysconfigSettingsClass; #define NM_SYSCONFIG_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SYSCONFIG_SETTINGS, NMSysconfigSettingsClass)) #define NM_SYSCONFIG_SETTINGS_UNMANAGED_DEVICES "unmanaged-devices" -#define NM_SYSCONFIG_SETTINGS_HOSTNAME "hostname" struct _NMSysconfigSettings { diff --git a/system-settings/src/nm-system-config-error.c b/system-settings/src/nm-system-config-error.c index e333d2eb5f..e60e525286 100644 --- a/system-settings/src/nm-system-config-error.c +++ b/system-settings/src/nm-system-config-error.c @@ -29,8 +29,6 @@ nm_sysconfig_settings_error_get_type (void) ENUM_ENTRY (NM_SYSCONFIG_SETTINGS_ERROR_UPDATE_NOT_SUPPORTED, "UpdateNotSupported"), ENUM_ENTRY (NM_SYSCONFIG_SETTINGS_ERROR_DELETE_NOT_SUPPORTED, "DeleteNotSupported"), ENUM_ENTRY (NM_SYSCONFIG_SETTINGS_ERROR_ADD_FAILED, "AddFailed"), - ENUM_ENTRY (NM_SYSCONFIG_SETTINGS_ERROR_SET_HOSTNAME_FAILED, "SetHostnameFailed"), - ENUM_ENTRY (NM_SYSCONFIG_SETTINGS_ERROR_INVALID_HOSTNAME, "InvalidHostname"), { 0, 0, 0 } }; diff --git a/system-settings/src/nm-system-config-error.h b/system-settings/src/nm-system-config-error.h index 69c5fbb81e..186631de71 100644 --- a/system-settings/src/nm-system-config-error.h +++ b/system-settings/src/nm-system-config-error.h @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */ #ifndef NM_SYSTEM_CONFIG_ERROR_H #define NM_SYSTEM_CONFIG_ERROR_H @@ -13,9 +13,7 @@ enum { NM_SYSCONFIG_SETTINGS_ERROR_ADD_NOT_SUPPORTED, NM_SYSCONFIG_SETTINGS_ERROR_UPDATE_NOT_SUPPORTED, NM_SYSCONFIG_SETTINGS_ERROR_DELETE_NOT_SUPPORTED, - NM_SYSCONFIG_SETTINGS_ERROR_ADD_FAILED, - NM_SYSCONFIG_SETTINGS_ERROR_SET_HOSTNAME_FAILED, - NM_SYSCONFIG_SETTINGS_ERROR_INVALID_HOSTNAME + NM_SYSCONFIG_SETTINGS_ERROR_ADD_FAILED }; #define NM_SYSCONFIG_SETTINGS_ERROR (nm_sysconfig_settings_error_quark ()) diff --git a/system-settings/src/nm-system-config-interface.c b/system-settings/src/nm-system-config-interface.c index 2735b23fbd..3b73730601 100644 --- a/system-settings/src/nm-system-config-interface.c +++ b/system-settings/src/nm-system-config-interface.c @@ -48,14 +48,6 @@ interface_init (gpointer g_iface) NULL, G_PARAM_READABLE)); - g_object_interface_install_property - (g_iface, - g_param_spec_string (NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME, - "Hostname", - "Configured system hostname", - NULL, - G_PARAM_READWRITE)); - /* Signals */ g_signal_new ("connection-added", iface_type, @@ -160,19 +152,3 @@ nm_system_config_interface_add_connection (NMSystemConfigInterface *config, return success; } - -gboolean -nm_system_config_interface_set_hostname (NMSystemConfigInterface *config, - const char *hostname, - GError **error) -{ - gboolean success = FALSE; - - g_return_val_if_fail (config != NULL, FALSE); - - if (NM_SYSTEM_CONFIG_INTERFACE_GET_INTERFACE (config)->set_hostname) - success = NM_SYSTEM_CONFIG_INTERFACE_GET_INTERFACE (config)->set_hostname (config, hostname, error); - - return success; -} - diff --git a/system-settings/src/nm-system-config-interface.h b/system-settings/src/nm-system-config-interface.h index b6d746f3fb..4a258e3e99 100644 --- a/system-settings/src/nm-system-config-interface.h +++ b/system-settings/src/nm-system-config-interface.h @@ -96,12 +96,6 @@ struct _NMSystemConfigInterface { */ gboolean (*add_connection) (NMSystemConfigInterface *config, NMConnection *connection, GError **error); - /* - * Set the configured hostname/domain in the plugin's backing configuration store. - * Should _NOT_ call sethostname(2) or setdomainname(2). - */ - gboolean (*set_hostname) (NMSystemConfigInterface *config, const char *hostname, GError **error); - /* Signals */ /* Emitted when a new connection has been found by the plugin */ @@ -126,10 +120,6 @@ gboolean nm_system_config_interface_add_connection (NMSystemConfigInterface *con NMConnection *connection, GError **error); -gboolean nm_system_config_interface_set_hostname (NMSystemConfigInterface *config, - const char *hostname, - GError **error); - G_END_DECLS #endif /* NM_SYSTEM_CONFIG_INTERFACE_H */