gnome-shell/gnome-shell-private-connection.patch
Dominique Leuenberger 9d8f90830e Accepting request 963316 from GNOME:Next
- Update to version 42.0:
  + introspect: Add WindowsChanged signal.
  + Fix on-screen keyboard during grabs.
  + Fixed crash.
  + Updated translations.

- Update to version 42.rc:
  + Fix programatically set scrollview fade.
  + Fix overview DND during screencasts.
  + Fix taking screenshots with shift+PrntScrn.
  + Disable workspace switching while in search.
  + Fix opening device settings for enterprise WPA networks.
  + Switch workspaces with Home and End keys in overview.
  + Fix regressions from style refresh.
  + Show disabled icons in system menu when devices are disabled.
  + Fix inserting items from object inspector in looking glass.
  + Fix drag placeholder position in dash in RTL locales.
  + Simplify signal handling with (dis)connectObject() convenience
    methods.
  + Ensure remote access indicator is shown for a minimum time.
  + Improve CSS shadow appearance.
  + Ignore work area in overview layout.
  + Fix glitches in overview transition.
  + Fixed crash.
  + Misc. bug fixes and cleanups.
  + Updated translations.
- Update patches with quilt.

- Update to version 42.beta+40:
  * overview: Don't expect time argument from drag-end signal

OBS-URL: https://build.opensuse.org/request/show/963316
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-shell?expand=0&rev=500
2022-03-21 08:37:00 +00:00

119 lines
5.1 KiB
Diff

From 342795440012a216d4abb9cfb04d2c3bd0fe8f4d 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
---
Index: gnome-shell-42.rc/js/ui/status/network.js
===================================================================
--- gnome-shell-42.rc.orig/js/ui/status/network.js
+++ gnome-shell-42.rc/js/ui/status/network.js
@@ -350,6 +350,11 @@ var NMConnectionDevice = class NMConnect
_autoConnect() {
let connection = new NM.SimpleConnection();
+ if (this._privateConnections) {
+ let connectionSetting = new NM.SettingConnection();
+ connectionSetting.add_permission('user', GLib.get_user_name(), null);
+ connection.add_setting(connectionSetting);
+ }
this._client.add_and_activate_connection_async(connection, this._device, null, null, null);
}
@@ -478,10 +483,11 @@ var NMConnectionDevice = class NMConnect
};
var NMDeviceWired = class extends NMConnectionDevice {
- constructor(client, device) {
+ constructor(client, device, privateConnections) {
super(client, device);
this.item.menu.addSettingsAction(_("Wired Settings"), 'gnome-network-panel.desktop');
+ this._privateConnections = privateConnections;
}
get category() {
@@ -738,11 +744,12 @@ var NMWirelessDialogItem = GObject.regis
var NMWirelessDialog = GObject.registerClass(
class NMWirelessDialog extends ModalDialog.ModalDialog {
- _init(client, device) {
+ _init(client, device, privateConnections) {
super._init({ styleClass: 'nm-dialog' });
this._client = client;
this._device = device;
+ this._privateConnections = privateConnections;
this._client.connectObject('notify::wireless-enabled',
this._syncView.bind(this), this);
@@ -978,6 +985,11 @@ class NMWirelessDialog extends ModalDial
this._getDeviceDBusPath(), accessPoints[0].get_path());
} else {
let connection = new NM.SimpleConnection();
+ if (this._privateConnections) {
+ let connectionSetting = new NM.SettingConnection();
+ connectionSetting.add_permission('user', GLib.get_user_name(), null);
+ connection.add_setting(connectionSetting);
+ }
this._client.add_and_activate_connection_async(connection, this._device, accessPoints[0].get_path(), null, null);
}
}
@@ -1243,9 +1255,10 @@ class NMWirelessDialog extends ModalDial
});
var NMDeviceWireless = class {
- constructor(client, device) {
+ constructor(client, device, privateConnections) {
this._client = client;
this._device = device;
+ this._privateConnections = privateConnections;
this._description = '';
@@ -1313,7 +1326,7 @@ var NMDeviceWireless = class {
}
_showDialog() {
- this._dialog = new NMWirelessDialog(this._client, this._device);
+ this._dialog = new NMWirelessDialog(this._client, this._device, this._privateConnections);
this._dialog.connect('closed', this._dialogClosed.bind(this));
this._dialog.open();
}
@@ -1683,6 +1696,20 @@ class Indicator extends PanelMenu.System
async _getClient() {
this._client = await NM.Client.new_async(null);
+
+ // 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 = [];
@@ -1812,7 +1839,7 @@ class Indicator extends PanelMenu.System
let wrapperClass = this._dtypes[device.get_device_type()];
if (wrapperClass) {
- let wrapper = new wrapperClass(this._client, device);
+ let wrapper = new wrapperClass(this._client, device, this._privateConnections);
device._delegate = wrapper;
this._addDeviceWrapper(wrapper);