NetworkAgent: Handle VPN service aliases
A VPN plugin can support multiple services, indicated by an 'aliases' key. We need to be able to spawn the appropriate auth-dialog for these aliases, as well as the base service. Covered as an afterthought (from comment 57) in https://bugzilla.gnome.org/show_bug.cgi?id=658484 See also https://bugzilla.gnome.org/show_bug.cgi?id=746664 and https://bugzilla.gnome.org/show_bug.cgi?id=767197
This commit is contained in:
parent
74553fa95e
commit
5d307c9ad5
@ -796,10 +796,18 @@ const NetworkAgent = new Lang.Class({
|
|||||||
path = GLib.build_filenamev([Config.LIBEXECDIR, path]);
|
path = GLib.build_filenamev([Config.LIBEXECDIR, path]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GLib.file_test(path, GLib.FileTest.IS_EXECUTABLE))
|
if (GLib.file_test(path, GLib.FileTest.IS_EXECUTABLE)) {
|
||||||
this._vpnBinaries[service] = { fileName: path, externalUIMode: externalUIMode, supportsHints: hints };
|
this._vpnBinaries[service] = { fileName: path, externalUIMode: externalUIMode, supportsHints: hints };
|
||||||
else
|
try {
|
||||||
|
let aliases = keyfile.get_string_list('VPN Connection', 'aliases');
|
||||||
|
|
||||||
|
for (let alias of aliases) {
|
||||||
|
this._vpnBinaries[alias] = { fileName: path, externalUIMode: externalUIMode, supportsHints: hints };
|
||||||
|
}
|
||||||
|
} catch(e) { } // ignore errors if key does not exist
|
||||||
|
} else {
|
||||||
throw new Error('VPN plugin at %s is not executable'.format(path));
|
throw new Error('VPN plugin at %s is not executable'.format(path));
|
||||||
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
log('Error \'%s\' while processing VPN keyfile \'%s\''.
|
log('Error \'%s\' while processing VPN keyfile \'%s\''.
|
||||||
format(e.message, dir.get_child(name).get_path()));
|
format(e.message, dir.get_child(name).get_path()));
|
||||||
|
Loading…
Reference in New Issue
Block a user