Commit Graph

28 Commits

Author SHA1 Message Date
Daniel Gnoutcheff
7f8dc06dff remove nm-settings-connection-interface
NMSettingsConnectionInterface was created to allow the daemon and NM
clients to have common code that handled both system and user
connections. It's no longer needed now that user settings services are
gone.

This concludes the flattening of libnm-glib.
2010-08-06 20:53:37 -04:00
Daniel Gnoutcheff
bbd4c23213 split nm_sysconfig_connection_update
The various "update" functions implemented by NMSysconfigConnection have
become confusing.  Depending on how you count, we've wound up with about
4 functions that all share the name "update" but nonetheless do
different things.  These functions used to be distributed over several
interfaces implemented by NMSysconfigConnection, but now that we've
removed NMExportedConnection and are about to remove
NMSettingsConnectionInterface, they will be all crammed into a single
interface and will be even more confusing than before.  It's time to
give better names to these guys.

The renames planned are:

- nm_settings_connection_interface_update() -->
    nm_sysconfig_connection_commit_changes()

- nm_sysconfig_connection_update() with signal_update==FALSE -->
    nm_sysconfig_connection_replace_settings()

- nm_sysconfig_connection_update() with signal_update==TRUE -->
    nm_sysconfig_connection_replace_and_commit()

This commit performs the last two renames.  The first will be performed
when removing NMSettingsConnectionInterface.

We also have nm_sysconfig_connection_replace_and_commit() have an
async-ish API that accepts a callback. This fits nicely with the
async-ish API of nm_settings_connection_interface_update(), and it lets
us clean up pk_update_cb() a bit.
2010-08-06 13:05:47 -04:00
Dan Williams
3abf5f30bf system-settings: fix plugins for /etc/NetworkManager/NetworkManager.conf 2010-03-06 00:18:28 -08:00
Dan Williams
0bbdc6b0fc system-settings: generalize nm_sysconfig_connection_update() a bit
So that it can be the sole location where secrets caching happens.
2009-11-16 16:14:50 -08:00
Dan Williams
b135fa3265 system-settings: add helper for updating plugin connections
nm_connection_replace_settings() replaces the connection's settings
but doesn't allow interception of the new settings.  Plugins would then
send out the update signal, but secrets are scrubbed out of them to
ensure secrets aren't leaked out into D-Bus signals.

With NM 0.8 the system settings service was integrated into NM and
thus nm_connection_clear_secrets() acts directly on the system
settings plugins' NMConnection objects.  So when NM cleared secrets
(for example after determining that they might be bad in a device's
stage2 handler), we completely lost the secrets forever.

Adding this function allows the system settings service to hook into
the connection updates when the plugin connection's backing storage
(like config files or whatever) changes and cache the secrets for
use in NMSettingsConnectionInterface get_secrets() requestes.
2009-11-16 15:51:40 -08:00
Dan Williams
e2b13be3d9 Merge commit 'origin/master' into polkit1
Conflicts:
	libnm-glib/Makefile.am
	src/system-settings/nm-sysconfig-settings.c
	system-settings/plugins/ifcfg-rh/plugin.c
2009-08-21 14:12:31 -05:00
Dan Williams
9c0e929552 core: require gio
Which isn't a problem, since we already require glib-2.16 which
includes gio.  Thus, we can remove all the gfilemonitor compat
stuff.
2009-08-20 13:00:37 -05:00
Dan Williams
0d69dfe39e libnm-glib: implement new settings interfaces
The old NMExportedConnection was used for both client and server-side classes,
which was a mistake and made the code very complicated to follow.  Additionally,
all PolicyKit operations were synchronous, and PK operations can block for a
long time (ie for user input) before returning, so they need to be async.  But
NMExportedConnection and NMSysconfigConnection didn't allow for async PK ops
at all.

Use this opportunity to clean up the mess and create GInterfaces that both
server and client objects implement, so that the connection editor and applet
can operate on generic objects like they did before (using the interfaces) but
can perform specific operations (like async PK verification of callers) depending
on whether they are local or remote or whatever.
2009-07-23 09:20:52 -04:00
Dan Williams
c9067d8fed everything: use libgudev instead of HAL; merge NM and nm-system-settings
The only thing that doesn't work yet is the system-settings service's
"auto eth" connections for ethernet devices that don't have an existing
connection.  Might also have issues with unmanaged devices that can't
provide a MAC address until they are brought up, but we'll see.
2009-06-11 00:39:12 -04:00
Dan Williams
45f2f1144d keyfile: read MAC addresses and a test framework
Clean up handling of "special" keys in keyfiles, ie ones that
need more processing than the basic GKeyFile API supports.  Add
MAC address reading (writing support to come).

Additionally, add some test bits for the keyfile plugin that get
run on 'make check'.
2009-01-12 14:21:44 -05:00
Dan Williams
3c2d8253ec 2008-11-19 Dan Williams <dcbw@redhat.com>
* libnm-util/nm-connection.c
	  libnm-util/nm-connection.h
		- (nm_connection_replace_settings): take a GError

	* libnm-glib/nm-settings.c
	  libnm-glib/nm-dbus-connection.c
	  src/nm-manager.c
	  system-settings/plugins/ifcfg-suse/nm-suse-connection.c
	  system-settings/plugins/keyfile/nm-keyfile-connection.c
	  system-settings/plugins/keyfile/plugin.c
		- Handle, or don't handle, errors from nm_connection_replace_settings()



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4298 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-11-19 15:09:05 +00:00
Dan Williams
19305e2556 Update license headers
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4250 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-11-03 16:05:11 +00:00
Dan Williams
7d723b54a4 2008-10-26 Dan Williams <dcbw@redhat.com>
Patch from Tambet Ingo <tambet@gmail.com>

	* libnm-util/libnm-util.ver
	  libnm-util/nm-setting-connection.c
	  libnm-util/nm-setting-connection.h
		- Make properties private and add accessor functions

	* src/NetworkManagerPolicy.c
	  src/nm-cdma-device.c
	  src/nm-device-ethernet.c
	  src/nm-device-interface.c
	  src/nm-device-wifi.c
	  src/nm-gsm-device.c
	  src/nm-manager.c
	  src/ppp-manager/nm-ppp-manager.c
	  src/vpn-manager/nm-vpn-connection.c
	  system-settings/plugins/ifcfg-fedora/nm-ifcfg-connection.c
	  system-settings/plugins/ifcfg-fedora/plugin.c
	  system-settings/plugins/ifcfg-fedora/reader.c
	  system-settings/plugins/ifcfg-suse/parser.c
	  system-settings/plugins/ifupdown/parser.c
	  system-settings/plugins/keyfile/nm-keyfile-connection.c
	  system-settings/plugins/keyfile/plugin.c
	  system-settings/plugins/keyfile/writer.c
	  system-settings/src/main.c
		- Use those accessors



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4220 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-10-26 17:41:37 +00:00
Dan Williams
e15b737270 Fix possible uninitialized variable
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4095 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-24 16:49:59 +00:00
Tambet Ingo
7faa88681b 2008-09-24 Tambet Ingo <tambet@gmail.com>
* system-settings/plugins/keyfile/plugin.c: Implement unmanaged_devices
	method and get/set hostname property.

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4094 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-24 15:03:33 +00:00
Dan Williams
9d5a2291f7 2008-09-18 Dan Williams <dcbw@redhat.com>
Implement support for honoring configured and automatic hostnames, and for
	setting the configured hostname.

	* introspection/nm-ip4-config.xml
	  src/nm-ip4-config.c
	  src/nm-ip4-config.h
	  src/dhcp-manager/nm-dhcp-manager.c
		- Remove useless hostname property; it's not really part of the IPv4
			config

	* introspection/nm-settings-system.xml
	  libnm-glib/nm-dbus-settings-system.c
	  libnm-glib/nm-dbus-settings-system.h
		- Add SetHostname() call to system settings D-Bus interface
		- Add Hostname property to system settings D-Bus interface
		- (nm_dbus_settings_system_save_hostname,
		   nm_dbus_settings_system_get_hostname): implement

	* src/nm-device.c
	  src/nm-device.h
		- (nm_device_get_dhcp4_config): implement

	* src/nm-manager.c
	  src/nm-manager.h
		- Fetch and track system settings service hostname changes, and proxy
			the changes via a GObject property of the manager

	* system-settings/src/nm-system-config-interface.c
	  system-settings/src/nm-system-config-interface.h
		- Replace nm_system_config_interface_supports_add() with a capabilities
			bitfield

	* system-settings/src/nm-system-config-error.c
	  system-settings/src/nm-system-config-error.h
		- Add additional errors

	* system-settings/src/dbus-settings.c
	  system-settings/src/dbus-settings.h
		- (get_property, nm_sysconfig_settings_class_init): add hostname
			property; first plugin returning a hostname wins
		- (impl_settings_add_connection): use plugin capabilities instead of
			nm_system_config_interface_supports_add()
		- (impl_settings_save_hostname): implement hostname saving

	* src/NetworkManagerPolicy.c
		- (lookup_thread_run_cb, lookup_thread_worker, lookup_thread_new,
		   lookup_thread_die): implement an asynchronous hostname lookup thread
			which given an IPv4 address tries to look up the hostname for that
			address with reverse DNS
		- (get_best_device): split out best device code from
			update_routing_and_dns()
		- (update_etc_hosts): update /etc/hosts with the machine's new hostname
			to preserve the 127.0.0.1 reverse mapping that so many things require
		- (set_system_hostname): set a given hostname
		- (update_system_hostname): implement hostname policy; a configured
			hostname (from the system settings service) is used if available,
			otherwise an automatically determined hostname from DHCP, VPN, etc.
			If there was no automatically determined hostname, reverse DNS of
			the best device's IP address will be used, and as a last resort the
			hostname 'localhost.localdomain' is set.
		- (update_routing_and_dns): use get_best_device(); update the system
			hostname when the network config changes
		- (hostname_changed): update system hostname if the system settings
			service signals a hostname change
		- (nm_policy_new): list for system settings service hostname changes
		- (nm_policy_destroy): ensure that an in-progress hostname lookup thread
			gets told to die

	* system-settings/plugins/keyfile/plugin.c
	  system-settings/plugins/ifcfg-suse/plugin.c
		- (get_property, sc_plugin_ifcfg_class_init): implement hostname and
			capabilities properties

	* system-settings/plugins/ifcfg-fedora/shvar.c
		- (svOpenFile): re-enable R/W access of ifcfg files since the plugin
			writes out /etc/sysconfig/network now

	* system-settings/plugins/ifcfg-fedora/plugin.c
		- (plugin_get_hostname): get hostname from /etc/sysconfig/network
		- (plugin_set_hostname): save hostname to /etc/sysconfig/network
		- (sc_network_changed_cb): handle changes to /etc/sysconfig/network
		- (sc_plugin_ifcfg_init): monitor /etc/sysconfig/network for changes
		- (get_property, set_property, sc_plugin_ifcfg_class_init): implement
			hostname get/set and capabilities get



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4077 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-18 15:16:44 +00:00
Dan Williams
7464db9a14 Fix a crash (Alexander Sack)
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4070 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-17 04:41:01 +00:00
Dan Williams
485b73cee9 2008-09-11 Dan Williams <dcbw@redhat.com>
* system-settings/plugins/keyfile/plugin.c
		- (update_connection_settings): update connection manually, since
			nm_exported_connection_update() does authentication
		- (dir_changed): update_connection_settings() doesn't need to return
			an error



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4057 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-11 09:43:21 +00:00
Dan Williams
16e52d474a Don't free error if it doesn't exist
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4028 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-03 19:59:53 +00:00
Dan Williams
3d70bc42bf 2008-08-26 Dan Williams <dcbw@redhat.com>
* system-settings/plugins/keyfile/nm-keyfile-connection.c
		- (update): Update filename of the connection if the connection id
			was changed

	* system-settings/plugins/keyfile/plugin.c
		- (dir_changed): first pass at handling connection renames correctly

	* system-settings/plugins/keyfile/writer.c
	  system-settings/plugins/keyfile/writer.h
		- (write_connection): replace '/' with '*' when writing out the filename
			from the connection id



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4018 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-08-27 03:09:14 +00:00
Dan Williams
5611f4c4d0 2008-08-12 Dan Williams <dcbw@redhat.com>
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.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3945 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-08-12 22:37:08 +00:00
Dan Williams
a3be3b6e90 2008-08-12 Dan Williams <dcbw@redhat.com>
* introspection/nm-settings-system.xml
	  system-settings/src/dbus-settings.c
	  system-settings/src/dbus-settings.h
		- Add a 'Hostname' property (rw) which represents the configured
			hostname and domain of the system, if any

	* system-settings/src/nm-system-config-error.c
	  system-settings/src/nm-system-config-error.h
	  system-settings/src/nm-system-config-interface.c
	  system-settings/src/nm-system-config-interface.h
		- Add a 'hostname' property to the plugin interface
		- Add a method to send updated hostname to plugins to save in their
			backing configuration store

	* system-settings/plugins/keyfile/nm-keyfile-connection.c
	  system-settings/plugins/keyfile/plugin.c
	  system-settings/plugins/keyfile/writer.c
	  system-settings/plugins/keyfile/writer.h
	  system-settings/plugins/ifcfg-suse/plugin.c
		- Add minimal hostname support

	* system-settings/plugins/ifcfg-fedora/plugin.c
		- Add support for updating system hostname in /etc/sysconfig/network



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3941 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-08-12 18:39:03 +00:00
Tambet Ingo
5262883e96 2008-07-16 Tambet Ingo <tambet@gmail.com>
* system-settings/src/nm-system-config-interface.c
	(nm_system_config_interface_supports_add): Implement.
	(nm_system_config_interface_add_connection): Return a boolean to notify
	of errors.

	* system-settings/src/nm-polkit-helpers.c:
	* system-settings/src/nm-polkit-helpers.h: Move error declarations to
	a separate file.

	* system-settings/src/dbus-settings.c (impl_settings_add_connection):
	Return an error when none of the plugins support add or if addition
	failed for some reason.

	* system-settings/src/nm-system-config-error.h:
	* system-settings/src/nm-system-config-error.c: New files, mostly moved
	here from nm-polkit-helpers.[ch].

	* system-settings/src/Makefile.am: Build new files.

	* system-settings/plugins/keyfile/reader.c
	(read_array_of_array_of_uint): Make it more general so that it would
	work for routes as well.

	* system-settings/plugins/keyfile/writer.c
	(write_array_of_array_of_uint): Ditto.
	Fix the netmask/prefix writing.

	* system-settings/plugins/keyfile/plugin.c (add_connection): Return
	boolean to notify errors.

	* system-settings/plugins/ifcfg-suse/nm-suse-connection.c (update):
	Return more specific error.
	(delete): Ditto.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3821 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-07-16 07:37:10 +00:00
Dan Williams
d7eafc71b1 2008-05-11 Dan Williams <dcbw@redhat.com>
* configure.in
	  Makefile.am
	  gfilemonitor/*
		- Add a private copy of the GIO GFileMonitor code, with a custom GFile
			implementation, so that the same change monitoring code can be used
			on systems without glib-2.14 (like Fedora 8)

	* system-settings/plugins/keyfile/Makefile.am
	  system-settings/plugins/keyfile/plugin.c
	  system-settings/plugins/ifcfg-suse/Makefile.am
	  system-settings/plugins/ifcfg-suse/plugin.c
		- Use private gfilemonitor code if GIO is not present



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3654 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-05-11 20:12:18 +00:00
Tambet Ingo
d2cf6fa75c 2008-05-08 Tambet Ingo <tambet@gmail.com>
Use PolicyKit to authorize the system settings' AddConnection method
    	and the system settings connections' Update and Delete methods.

    	* libnm-glib/nm-settings.c (impl_exported_connection_update)
    	(impl_exported_connection_delete, nm_exported_connection_update)
    	(nm_exported_connection_delete): Return boolean and fill GError
    	to notify the callers of the reasons why it might have failed.

    	* libnm-glib/nm-dbus-settings-system.c
    	(nm_dbus_settings_system_add_connection): Return the error from dbus
    	call so that the callers can see why it failed.

    	* libnm-glib/nm-dbus-connection.c (update, delete): Update the
    	signatures.

    	* system-settings/src/nm-polkit-helpers.[ch]: Implement.

    	* system-settings/src/nm-sysconfig-connection.[ch]: Implement. New
    	abstract base class that checks PolicyKit permissions.

    	* system-settings/src/dbus-settings.c:
    	(impl_settings_add_connection): Check the policy before carring out
    	the request.

    	* system-settings/plugins/keyfile/nm-keyfile-connection.c:
    	Inherit from NMSysconfigConnection, check the policies before
    	allowing updating or removing.

    	* system-settings/plugins/ifcfg-suse/nm-suse-connection.c:
    	Inherit from NMSysconfigConnection.

    	* introspection/nm-exported-connection.xml: Annotate "Update" and
    	"Delete" methods with async flag so that the implementations can get
    	access to DBusGMethodInvocation.

    	* system-settings/src/dbus-settings.c
    	(settings_add_connection_check_privileges): Implement.
    	(impl_settings_add_connection): Check the privileges before adding a new
    	connection. Improve error reporting.

    	* introspection/nm-settings-system.xml: Make the 'AddConnection' method
    	async so that the implementation can access DBusGMethodInvocation.

    	* configure.in: Check for PolicyKit.

    	* policy/org.freedesktop.network-manager-settings.system.policy:
    	New file.

    	* policy/Makefile.am: Install the policy file.

    	* configure.in: Add 'policy' subdir.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3646 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-05-09 06:33:30 +00:00
Dan Williams
fcb725e296 Don't complain if system settings service exits before connections are read
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3641 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-05-08 00:55:21 +00:00
Tambet Ingo
898c29cce2 2008-05-05 Tambet Ingo <tambet@gmail.com>
* system-settings/plugins/keyfile/nm-keyfile-connection.[ch]: Implement.

	* system-settings/plugins/keyfile/plugin.c: Work with
	NMKeyfileConnections.

	* system-settings/src/dbus-settings.c: Remove NMSysconfigExportedConnection.
	Plugins are supposed to return NMExportedConnections now and handle the
	updated(), removed(), and GetSecrets().
	Store the internal list of connections in hash table to make it easier
	to find duplicates.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3640 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-05-07 09:48:12 +00:00
Tambet Ingo
e6a5d0be51 2008-04-22 Tambet Ingo <tambet@gmail.com>
Implement GKeyFile system settings plugin.
	Implement writing system settings (currently supported only by GKeyFile plugin).

	* system-settings/src/main.c:
	* system-settings/src/dbus-settings.c: Move the communication with plugins
	from main.c to dbus-settings.c. Makes it possible to talk to all registered
	plugins for adding/updating/removing connections.

	* system-settings/src/nm-system-config-interface.c
	(nm_system_config_interface_add_connection): Implement
	(nm_system_config_interface_update_connection): Implement.
	(nm_system_config_interface_remove_connection): Implement.

	* system-settings/plugins/keyfile/Makefile.am:
	* system-settings/plugins/keyfile/plugin.[ch]:
	* system-settings/plugins/keyfile/writer.[ch]:
	* system-settings/plugins/keyfile/reader.[ch]: Implement.

	* system-settings/plugins/Makefile.am: Add GKeyFile plugin.

	* configure.in: Generate GKeyFile Makefile.

	* libnm-glib/nm-settings.c (impl_exported_connection_get_id): Fix a memory
	corruption, need to duplicate the returned string.
	(impl_exported_connection_update): Implement.
	(impl_exported_connection_delete): Implement.

	* introspection/nm-settings-system.xml: Add "AddConnection" method.

	* introspection/nm-exported-connection.xml: Add "Update" and "Delete" methods.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3587 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-04-22 14:48:02 +00:00