diff --git a/js/misc/config.js.in b/js/misc/config.js.in index 065d7a0a2..e54e28044 100644 --- a/js/misc/config.js.in +++ b/js/misc/config.js.in @@ -15,6 +15,5 @@ var LOCALEDIR = '@datadir@/locale'; /* other standard directories */ var LIBEXECDIR = '@libexecdir@'; var PKGDATADIR = '@datadir@/@PACKAGE_NAME@'; -var VPNDIR = '@vpndir@'; /* g-i package versions */ var LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@' diff --git a/js/misc/meson.build b/js/misc/meson.build index 5a4871762..2702c3dbc 100644 --- a/js/misc/meson.build +++ b/js/misc/meson.build @@ -7,7 +7,6 @@ jsconf.set10('HAVE_BLUETOOTH', bt_dep.found()) jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager) jsconf.set('datadir', datadir) jsconf.set('libexecdir', libexecdir) -jsconf.set('vpndir', vpndir) config_js = configure_file( input: 'config.js.in', diff --git a/js/ui/components/networkAgent.js b/js/ui/components/networkAgent.js index 4ab598597..c0f00f5a2 100644 --- a/js/ui/components/networkAgent.js +++ b/js/ui/components/networkAgent.js @@ -615,14 +615,6 @@ var NetworkAgent = class { this._vpnRequests = { }; this._notifications = { }; - this._pluginDir = Gio.file_new_for_path(Config.VPNDIR); - try { - let monitor = this._pluginDir.monitor(Gio.FileMonitorFlags.NONE, null); - monitor.connect('changed', () => (this._vpnCacheBuilt = false)); - } catch (e) { - log('Failed to create monitor for VPN plugin dir: %s'.format(e.message)); - } - this._native.connect('new-request', this._newRequest.bind(this)); this._native.connect('cancel-request', this._cancelRequest.bind(this)); @@ -770,9 +762,7 @@ var NetworkAgent = class { let vpnSetting = connection.get_setting_vpn(); let serviceType = vpnSetting.service_type; - this._buildVPNServiceCache(); - - let binary = this._vpnBinaries[serviceType]; + let binary = this._findAuthBinary(serviceType); if (!binary) { log('Invalid VPN service type (cannot find authentication binary)'); @@ -788,36 +778,26 @@ var NetworkAgent = class { this._vpnRequests[requestId] = vpnRequest; } - _buildVPNServiceCache() { - if (this._vpnCacheBuilt) - return; + _findAuthBinary(serviceType) { + const plugin = NM.VpnPluginInfo.new_search_file(null, serviceType); - this._vpnCacheBuilt = true; - this._vpnBinaries = { }; + if (plugin === null) + return null; - NM.VpnPluginInfo.list_load().forEach(plugin => { - let service = plugin.get_service(); - let fileName = plugin.get_auth_dialog(); - let supportsHints = plugin.supports_hints(); - let externalUIMode = false; + const fileName = plugin.get_auth_dialog(); + if (!GLib.file_test(fileName, GLib.FileTest.IS_EXECUTABLE)) { + log('VPN plugin at %s is not executable'.format(fileName)); + return null; + } - let prop = plugin.lookup_property('GNOME', 'supports-external-ui-mode'); - if (prop) { - prop = prop.trim().toLowerCase(); - externalUIMode = ['true', 'yes', 'on', '1'].includes(prop); - } + const prop = plugin.lookup_property('GNOME', 'supports-external-ui-mode'); + const trimmedProp = prop ? prop.trim().toLowerCase() : ''; - if (GLib.file_test(fileName, GLib.FileTest.IS_EXECUTABLE)) { - let binary = { fileName, externalUIMode, supportsHints }; - this._vpnBinaries[service] = binary; - - plugin.get_aliases().forEach(alias => { - this._vpnBinaries[alias] = binary; - }); - } else { - log('VPN plugin at %s is not executable'.format(fileName)); - } - }); + return { + fileName, + supportsHints: plugin.supports_hints(), + externalUIMode: ['true', 'yes', 'on', '1'].includes(trimmedProp), + }; } }; var Component = NetworkAgent; diff --git a/meson.build b/meson.build index 5d51db668..55dcccad0 100644 --- a/meson.build +++ b/meson.build @@ -114,12 +114,8 @@ if get_option('networkmanager') nm_deps += dependency('libnm', version: nm_req) nm_deps += dependency('libsecret-1', version: secret_req) - vpndir = nm_deps[0].get_pkgconfig_variable('vpnservicedir') - have_networkmanager = true else - vpndir = prefix - have_networkmanager = false endif