[gnome-shell] network: fix initial connections to WPA[2] Enterprise APs



commit ae0652d13fc2d7caa3d64f2b87d174253cae5901
Author: Dan Williams <dcbw redhat com>
Date:   Tue May 3 13:31:45 2011 -0500

    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

 js/ui/status/network.js |   29 +++++++++++++++++++++++++++--
 1 files changed, 27 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index 6f0cdac..ca4facf 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -48,6 +48,16 @@ const NM80211ApSecurityFlags = NetworkManager['80211ApSecurityFlags'];
 // (the remaining are placed into More...)
 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) {
     return string.split(':').map(function(el) {
         return parseInt(el, 16);
@@ -991,6 +1001,10 @@ NMDeviceWireless.prototype = {
         this._overflowItem = null;
         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
         // this.connectionValid until I have a device
         this.device = device;
@@ -1483,9 +1497,20 @@ NMDeviceWireless.prototype = {
             apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
             apObj.item._apObj = apObj;
             apObj.item.connect('activate', Lang.bind(this, function() {
-                let connection = this._createAutomaticConnection(apObj);
                 let accessPoints = sortAccessPoints(apObj.accessPoints);
-                this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null)
+                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)
+                }
             }));
         }
         if (position < NUM_VISIBLE_NETWORKS)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]