RE: networkmanager control issue



On Tue, 2010-03-30 at 13:31 +0800, Edward_Doong wistron com wrote:
> Dear Dan:
> Thanks your teach.
> Now, I use libnm-glib base on my program.
> And I also look at Networkmanager/libnm-glib/*
> 
> BTW, If I will make a new dbus base on Networkmanager.
> ( because UI only need "GetWirelessAPList" "SetWirelessAPPW" two bus to
> get information )
> Could you teach me how I start to modify ( or make new dbus ) in
> Networkmanager?

There's already a "get the list of wifi aps" call in NM; it's the
GetAccessPoints call of the org.freedesktop.Device.Wireless interface.
You'll also get signals when APs are found or removed from that list.

For setting the password, there isn't a specific call for that because
that's not quite how NM works.  Instead, remember that all the specific
parameters required to connect to a wifi network (including SSID,
security details, etc) are stored in the "NM Connection".  Your settings
service (either system or user) stores those details however it wants to
store them; NM just asks for those details when connecting to the AP.
SO the flow generally goes like this:

1) user clicks "Cafe" in the applet
2) the applet checks it's storage and determines if there's already a
saved connection for the "Cafe" SSID
3) applet finds no saved connection
4) applet creates a new saved connection for "Cafe" SSID and asks the
user for the password if "Cafe" is a protected SSID
5) user enters the network password
6) applet finally has enough information to tell NM to connect to
"Cafe", and stores the user's password in saved connection details
7) applet calls NM's ActivateConnection D-Bus method and gives NM the
identifier of the saved connection details
8) NM connects to "Cafe"

Dan

> Thanks a lot.
> Edward
> 
> -----Original Message-----
> From: Dan Williams [mailto:dcbw redhat com] 
> Sent: Friday, March 19, 2010 8:44 AM
> To: Edward Doong/WHQ/Wistron
> Cc: networkmanager-list gnome org
> Subject: RE: networkmanager control issue
> 
> On Thu, 2010-03-18 at 10:41 +0800, Edward_Doong wistron com wrote:
> > Dear Dan:
> > Thanks for your reply.
> > 1. I had look over this spec. in few days.
> >   Now, I can check my system network state. (
> > org.freedesktop.NetworkManager )
> >   And I will try to get AP list from D-Bus. ( when I click icon that
> > will scan AP. Not always scan )
> 
> Take a look at the 'cli/src' directory in the NM git repo
> (http://git.freedesktop.org) to see some easier details about how to ask
> for APs and such with libnm-glib, if you're basing your application off
> glib.  If you're not basing your application off glib, then using direct
> D-Bus C calls (ie, libdbus) will work too, but is more painful since you
> can't use libnm-glib.
> 
> With libnm-glib it's basically:
> 
> NMClient *client;
> const GPtrArray *devices, *aps;
> int i, z;
> 
> client = nm_client_new ();
> devices = nm_client_get_devices ();
> for (i = 0; devices && (i < devices->len); i++) {
>     NMDevice *device = g_ptr_array_index (devices, i);
> 
>     if (NM_IS_DEVICE_WIFI (device)) {
>         aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI
> (device));
>         for (z = 0; aps && (z < aps->len); z++) {
>             NMAccessPoint *ap = g_ptr_array_index (aps, z);
> 
>             <get AP attributes here and show them to the user>
>         }
>     }
> }
> 
> > 2. Yes, I will register another D-Bus that communication with UI.
> >   So, my D-Bus will communication between UI & NetworkManager.
> 
> You could put both the UI and the saved connection storage service in
> the same process to keep things simpler, but you don't have to.
> 
> >   Because I want that UI just only have AP & PW for type. 
> >   Other networksecret, etc... don't choice by UI.
> >   And is it "Feasible"?
> 
> Yes.
> 
> >   BTW, I will change python language to C language. ( That let me
> > "crazy" )
> 
> Yeah, there are tradeoffs either way.
> 
> Dan
> 
> > Thanks
> > Edward
> > 
> > On Tue, 2010-03-16 at 10:52 +0800, 
> > > Dear,
> > >            I study network-manager 0.8 first time by myself.
> > > And I meet some issue. Now I use python & gtk+ language.
> > > I want to control all network interfaces in my window.
> > > What do I add D-bus script in my language,
> > > Like this : 
> > > First window I can scan AP & choice.
> > 
> > NetworkManager periodically scans for you, though we're looking into
> > making a scan request call via D-Bus if you want updated AP lists more
> > often than every 2 minutes, which I suspect you'd be interested in.
> > 
> > You can get the list of all APs the devices sees via D-Bus; see the NM
> > D-Bus API spec here:
> > 
> > http://projects.gnome.org/NetworkManager/developers/spec-08.html
> > 
> > This allows you to ask NetworkManager for the AP list for a specific
> > wifi device and get each AP's details like signal strength and
> > encryption type.
> > 
> > > Second window I can type password.
> > 
> > NetworkManager doesn't quite operate like that; instead you have
> "saved
> > connections" (representing all the parameters needed to connect to a
> > specific network) that the user-interface applet provides to
> > NetworkManager via D-Bus.  NM will only connect to APs that are
> > specified by these "saved connections".  How you store that saved
> > connection is up to your applet; the GNOME nm-applet saves them in
> > GConf, the KDE networkmanager applet saves them in other ways.  The
> > programs that provide this connection data to NM are called "settings
> > services".
> > 
> > So when you want to connect, your applet does the following:
> > 
> > 1) do I have a saved connection that matches up with this access
> point?
> > If so, tell NM to connect to the AP using this saved connection.
> > 
> > 2) If not, create a saved connection, tell NetworkManager that you've
> > created a new saved connection via D-Bus (see the system settings
> > interface documentation [1]), then tell NM that you want to connect to
> > the AP using that saved connection.
> > 
> > 3) When the D-Bus ActivateConnection() call returns, it'll send an
> > "ActiveConnection" object back to you, which you can use to track the
> > status of the in-progress connection to the access point, and you can
> > show that progress in the UI.
> > 
> > If you want any other help or clarification, let me know.
> > 
> > Dan
> > 
> > [1]
> >
> http://projects.gnome.org/NetworkManager/developers/spec-08.html#org.fre
> > edesktop.NetworkManagerSettings
> > 
> > 
> 
> 




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