Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
GNOME:STABLE:3.26
gnome-shell
gnome-shell-private-connection.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gnome-shell-private-connection.patch of Package gnome-shell
From f9a23ba5908fb93d25ef702510ea182c220db8aa Mon Sep 17 00:00:00 2001 From: Giovanni Campagna <gcampagna@src.gnome.org> Date: Thu, 31 Mar 2011 15:56:13 +0200 Subject: [PATCH] NetworkMenu: create private connections if the user is not authorized Check polkit setting at startup and add, if needed, the "permissions" setting to the connections we create, so that polkit authentication is never needed. The connection is thus only available to other users if the system administrator decides so. https://bugzilla.gnome.org/show_bug.cgi?id=646187 --- js/ui/status/network.js | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) Index: gnome-shell-3.14.0/js/ui/status/network.js =================================================================== --- gnome-shell-3.14.0.orig/js/ui/status/network.js +++ gnome-shell-3.14.0/js/ui/status/network.js @@ -7,6 +7,7 @@ const Gtk = imports.gi.Gtk; const Mainloop = imports.mainloop; const NetworkManager = imports.gi.NetworkManager; const NMClient = imports.gi.NMClient; +const Polkit = imports.gi.Polkit; const NMGtk = imports.gi.NMGtk; const Signals = imports.signals; const Shell = imports.gi.Shell; @@ -369,6 +370,11 @@ const NMConnectionDevice = new Lang.Clas _autoConnect: function() { let connection = new NetworkManager.Connection(); + if (this._privateConnections) { + let connectionSetting = new NetworkManager.SettingConnection(); + connectionSetting.add_permission('user', GLib.get_user_name(), null); + connection.add_setting(connectionSetting); + } this._client.add_and_activate_connection(connection, this._device, null, null); }, @@ -627,10 +633,12 @@ const NMDeviceBluetooth = new Lang.Class Extends: NMConnectionDevice, category: NMConnectionCategory.WWAN, - _init: function(client, device, settings) { + + _init: function(client, device, settings, privateConnections) { this.parent(client, device, settings); this.item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-network-panel.desktop'); + this._privateConnections = privateConnections; }, _getDescription: function() { @@ -727,11 +735,12 @@ const NMWirelessDialog = new Lang.Class( Name: 'NMWirelessDialog', Extends: ModalDialog.ModalDialog, - _init: function(client, device, settings) { + _init: function(client, device, settings, privateConnections) { this.parent({ styleClass: 'nm-dialog' }); this._client = client; this._device = device; + this._privateConnections = privateConnections; this._wirelessEnabledChangedId = this._client.connect('notify::wireless-enabled', Lang.bind(this, this._syncView)); @@ -964,6 +973,11 @@ const NMWirelessDialog = new Lang.Class( this._device.get_path(), accessPoints[0].dbus_path]); } else { let connection = new NetworkManager.Connection(); + if (this._privateConnections) { + let connectionSetting = new NetworkManager.SettingConnection(); + connectionSetting.add_permission('user', GLib.get_user_name(), null); + connection.add_setting(connectionSetting); + } this._client.add_and_activate_connection(connection, this._device, accessPoints[0].dbus_path, null) } } @@ -1194,10 +1209,11 @@ const NMDeviceWireless = new Lang.Class( Name: 'NMDeviceWireless', category: NMConnectionCategory.WIRELESS, - _init: function(client, device, settings) { + _init: function(client, device, settings, privateConnections) { this._client = client; this._device = device; this._settings = settings; + this._privateConnections = privateConnections; this._description = ''; @@ -1280,7 +1295,7 @@ const NMDeviceWireless = new Lang.Class( }, _showDialog: function() { - this._dialog = new NMWirelessDialog(this._client, this._device, this._settings); + this._dialog = new NMWirelessDialog(this._client, this._device, this._settings, this._privateConnections); this._dialog.connect('closed', Lang.bind(this, this._dialogClosed)); this._dialog.open(); }, @@ -1678,6 +1693,19 @@ const NMApplet = new Lang.Class({ if (!this._client || !this._settings) return; + // Check if newly created connections should be private or not + this._privateConnections = true; + let authority = Polkit.Authority.get_sync(null); + let credential = new Gio.Credentials(); + let subject = new Polkit.UnixProcess({ pid: credential.get_unix_pid(), uid: credential.get_unix_user() }); + let authResult = authority.check_authorization_sync(subject, + 'org.freedesktop.NetworkManager.settings.modify.system', + null /* details */, + Polkit.CheckAuthorizationFlags.NONE, + null /* cancellable */); + if (authResult) + this._privateConnections = !authResult.get_is_authorized(); + this._activeConnections = [ ]; this._connections = [ ]; this._connectivityQueue = [ ]; @@ -1807,7 +1835,7 @@ const NMApplet = new Lang.Class({ let wrapperClass = this._dtypes[device.get_device_type()]; if (wrapperClass) { - let wrapper = new wrapperClass(this._client, device, this._settings); + let wrapper = new wrapperClass(this._client, device, this._settings, this._privateConnections); device._delegate = wrapper; this._addDeviceWrapper(wrapper);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor