From: Debian Cinnamon Team Date: Sun, 13 Mar 2016 19:07:24 +0100 Subject: network-user-connections --- .../applets/network@cinnamon.org/applet.js | 32 +++++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js b/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js index daddebf..12643af 100644 --- a/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js +++ b/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js @@ -100,6 +100,11 @@ function NMNetworkMenuItem() { this._init.apply(this, arguments); } +function default_to_private_connections(client) { + let perms = client.get_permission_result (NMClient.ClientPermission.SETTINGS_MODIFY_SYSTEM); + return (perms != NMClient.ClientPermissionResult.YES); +} + NMNetworkMenuItem.prototype = { __proto__: PopupMenu.PopupBaseMenuItem.prototype, @@ -926,12 +931,14 @@ NMDeviceBluetooth.prototype = { let connection = new NetworkManager.Connection; connection._uuid = NetworkManager.utils_uuid_generate(); connection.add_setting(new NetworkManager.SettingBluetooth); - connection.add_setting(new NetworkManager.SettingConnection({ + let setting_conn = new NetworkManager.SettingConnection({ uuid: connection._uuid, id: this._autoConnectionName, type: NetworkManager.SETTING_BLUETOOTH_SETTING_NAME, autoconnect: false - })); + }); + setting_conn.add_permission('user', GLib.get_user_name(), null); + connection.add_setting(setting_conn); return connection; }, @@ -1012,6 +1019,8 @@ NMDeviceWireless.prototype = { this._overflowItem = null; this._networks = [ ]; + this._client = client; + // breaking the layers with this, but cannot call // this.connectionValid until I have a device this.device = device; @@ -1555,12 +1564,27 @@ NMDeviceWireless.prototype = { let connection = new NetworkManager.Connection(); connection.add_setting(new NetworkManager.SettingWireless()); - connection.add_setting(new NetworkManager.SettingConnection({ + let setting_conn = new NetworkManager.SettingConnection({ id: name, autoconnect: true, // NetworkManager will know to ignore this if appropriate uuid: NetworkManager.utils_uuid_generate(), type: NetworkManager.SETTING_WIRELESS_SETTING_NAME - })); + }); + if (default_to_private_connections(this._client)) { + setting_conn.add_permission('user', GLib.get_user_name(), null); + if (apObj.security == NMAccessPointSecurity.WPA2_PSK || + apObj.security == NMAccessPointSecurity.WPA_PSK) { + connection.add_setting(new NetworkManager.SettingWirelessSecurity({ + psk_flags: NetworkManager.SettingSecretFlags.AGENT_OWNED + })); + } + if (apObj.security == NMAccessPointSecurity.WEP) { + connection.add_setting(new NetworkManager.SettingWirelessSecurity({ + wep_key_flags: NetworkManager.SettingSecretFlags.AGENT_OWNED + })); + } + } + connection.add_setting(setting_conn); return connection; },