diff --git a/gnome-shell-private-connection.patch b/gnome-shell-private-connection.patch index 829d902..07a5c15 100644 --- a/gnome-shell-private-connection.patch +++ b/gnome-shell-private-connection.patch @@ -1,98 +1,25 @@ -From 342795440012a216d4abb9cfb04d2c3bd0fe8f4d Mon Sep 17 00:00:00 2001 -From: Giovanni Campagna -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); - } +diff --git a/js/ui/status/network.js b/js/ui/status/network.js +index e3b9a5d..3296e1d 100644 +--- a/js/ui/status/network.js ++++ b/js/ui/status/network.js +@@ -940,6 +940,11 @@ const WirelessNetwork = GObject.registerClass({ + this._getDeviceDBusPath(), ap.get_path()); + } else { + conn = new NM.SimpleConnection(); ++ if (this._IsPrivateConnections()) { ++ let connectionSetting = new NM.SettingConnection(); ++ connectionSetting.add_permission('user', GLib.get_user_name(), null); ++ conn.add_setting(connectionSetting); ++ } + this._device.client.add_and_activate_connection_async( + conn, this._device, ap.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 { +@@ -949,6 +954,22 @@ const WirelessNetwork = GObject.registerClass({ + this.emit('destroy'); } - _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; ++ _IsPrivateConnections() { ++ let 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() }); @@ -102,17 +29,11 @@ Index: gnome-shell-42.rc/js/ui/status/network.js + Polkit.CheckAuthorizationFlags.NONE, + null /* cancellable */); + if (authResult) -+ this._privateConnections = !authResult.get_is_authorized(); ++ 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); - ++ return privateConnections; ++ } ++ + _getDeviceDBusPath() { + // nm_object_get_path() is shadowed by nm_device_get_path() + return NM.Object.prototype.get_path.call(this._device); diff --git a/gnome-shell.changes b/gnome-shell.changes index ac2eeeb..728f571 100644 --- a/gnome-shell.changes +++ b/gnome-shell.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Apr 6 01:13:10 UTC 2023 - Xiaoguang Wang + +- Update gnome-shell-private-connection.patch: (bsc#1209373) + ------------------------------------------------------------------- Thu Mar 30 11:21:55 UTC 2023 - bjorn.lie@gmail.com diff --git a/gnome-shell.spec b/gnome-shell.spec index 3001376..1b60b3e 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -182,7 +182,7 @@ This package contains an optional extensions app for managing GNOME Shell extens %prep %setup -q -#patch1 -p1 +%patch1 -p1 %patch7 -p1 #patch8 -p1