network: fix initial connections to WPA[2] Enterprise APs
Call out to nm-applet to do the dirty work since the dialog of doom is pretty complicated and we don't have a JS equivalent of it for now. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=648171
This commit is contained in:
parent
101a07a3d7
commit
ae0652d13f
@ -48,6 +48,16 @@ const NM80211ApSecurityFlags = NetworkManager['80211ApSecurityFlags'];
|
|||||||
// (the remaining are placed into More...)
|
// (the remaining are placed into More...)
|
||||||
const NUM_VISIBLE_NETWORKS = 5;
|
const NUM_VISIBLE_NETWORKS = 5;
|
||||||
|
|
||||||
|
const NMAppletHelperInterface = {
|
||||||
|
name: 'org.gnome.network_manager_applet',
|
||||||
|
methods: [
|
||||||
|
{ name: 'ConnectToHiddenNetwork', inSignature: '', outSignature: '' },
|
||||||
|
{ name: 'CreateWifiNetwork', inSignature: '', outSignature: '' },
|
||||||
|
{ name: 'ConnectTo8021xNetwork', inSignature: 'oo', outSignature: '' }
|
||||||
|
],
|
||||||
|
};
|
||||||
|
const NMAppletProxy = DBus.makeProxyClass(NMAppletHelperInterface);
|
||||||
|
|
||||||
function macToArray(string) {
|
function macToArray(string) {
|
||||||
return string.split(':').map(function(el) {
|
return string.split(':').map(function(el) {
|
||||||
return parseInt(el, 16);
|
return parseInt(el, 16);
|
||||||
@ -991,6 +1001,10 @@ NMDeviceWireless.prototype = {
|
|||||||
this._overflowItem = null;
|
this._overflowItem = null;
|
||||||
this._networks = [ ];
|
this._networks = [ ];
|
||||||
|
|
||||||
|
this._applet_proxy = new NMAppletProxy(DBus.session,
|
||||||
|
'org.gnome.network_manager_applet',
|
||||||
|
'/org/gnome/network_manager_applet');
|
||||||
|
|
||||||
// breaking the layers with this, but cannot call
|
// breaking the layers with this, but cannot call
|
||||||
// this.connectionValid until I have a device
|
// this.connectionValid until I have a device
|
||||||
this.device = device;
|
this.device = device;
|
||||||
@ -1483,9 +1497,20 @@ NMDeviceWireless.prototype = {
|
|||||||
apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
|
apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
|
||||||
apObj.item._apObj = apObj;
|
apObj.item._apObj = apObj;
|
||||||
apObj.item.connect('activate', Lang.bind(this, function() {
|
apObj.item.connect('activate', Lang.bind(this, function() {
|
||||||
let connection = this._createAutomaticConnection(apObj);
|
|
||||||
let accessPoints = sortAccessPoints(apObj.accessPoints);
|
let accessPoints = sortAccessPoints(apObj.accessPoints);
|
||||||
|
if ( (accessPoints[0]._secType == NMAccessPointSecurity.WPA2_ENT)
|
||||||
|
|| (accessPoints[0]._secType == NMAccessPointSecurity.WPA_ENT)) {
|
||||||
|
// 802.1x-enabled APs get handled by nm-applet for now...
|
||||||
|
this._applet_proxy.ConnectTo8021xNetworkRemote(this.device.get_path(),
|
||||||
|
accessPoints[0].dbus_path,
|
||||||
|
Lang.bind(this, function(results, err) {
|
||||||
|
if (err)
|
||||||
|
log(err);
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
let connection = this._createAutomaticConnection(apObj);
|
||||||
this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null)
|
this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null)
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
if (position < NUM_VISIBLE_NETWORKS)
|
if (position < NUM_VISIBLE_NETWORKS)
|
||||||
|
Loading…
Reference in New Issue
Block a user