004-08-27 Bryan Clark <bclark@redhat.com>
* examples/python/systray/trayiconmodule.c: * examples/python/systray/trayicon.override: * examples/python/systray/network_tray.py: * examples/python/systray/eggtrayicon.h: * examples/python/systray/eggtrayicon.c: * examples/python/systray/Makefile: * examples/python/README: * examples/python/NetworkManager.py: * examples/python/NMTester.py: Initial commit of these python example files git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@93 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:

committed by
Bryan W. Clark

parent
7fd3e529b4
commit
591576fbc1
150
examples/python/NetworkManager.py
Executable file
150
examples/python/NetworkManager.py
Executable file
@@ -0,0 +1,150 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import dbus
|
||||
from dbus_bindings import DBusException
|
||||
|
||||
NM_SERVICE="org.freedesktop.NetworkManager"
|
||||
NM_PATH="/org/freedesktop/NetworkManager"
|
||||
NM_INTERFACE=NM_SERVICE
|
||||
|
||||
# i can append device names like eth0 to this path to get more info
|
||||
NM_PATH_DEVICES="/org/freedesktop/NetworkManager/Devices"
|
||||
NM_INTERFACE_DEVICES="org.freedesktop.NetworkManager.Devices"
|
||||
|
||||
NMI_SERVICE="org.freedesktop.NetworkManagerInfo"
|
||||
NMI_PATH="/org/freedesktop/NetworkManagerInfo"
|
||||
NMI_INTERFACE=NMI_SERVICE
|
||||
|
||||
HAL_SERVICE="org.freedesktop.Hal"
|
||||
HAL_PATH="/org/freedesktop/Hal/Manager"
|
||||
HAL_INTERFACE="org.freedesktop.Hal.Manager"
|
||||
HAL_INTERFACE_DEVICE="org.freedesktop.Hal.Device"
|
||||
|
||||
class NetworkManager:
|
||||
WIRED_DEVICE = 1
|
||||
WIRELESS_DEVICE = 2
|
||||
|
||||
NM_SIGNALS = [ "DeviceNoLongerActive",
|
||||
"DeviceNowActive",
|
||||
"DeviceActivating",
|
||||
"DevicesChanging",
|
||||
"DeviceIP4AddressChange",
|
||||
"WirelessNetworkDisappeared",
|
||||
"WirelessNetworkAppeared"
|
||||
]
|
||||
|
||||
NMI_SIGNALS = [ "TrustedNetworkUpdate",
|
||||
"PreferredNetworkUpdate"
|
||||
]
|
||||
|
||||
def __init__(self):
|
||||
self.__init_dbus__()
|
||||
|
||||
# dictionary of devices
|
||||
self.__devices = {}
|
||||
|
||||
def __init_dbus__(self):
|
||||
self._bus = dbus.SystemBus()
|
||||
self._nm_service = self._bus.get_service(NM_SERVICE)
|
||||
self.nm_object = self._nm_service.get_object(NM_PATH,
|
||||
NM_INTERFACE)
|
||||
|
||||
self._nmi_service = self._bus.get_service(NMI_SERVICE)
|
||||
self.nmi_object = self._nmi_service.get_object(NMI_PATH,
|
||||
NMI_INTERFACE)
|
||||
|
||||
self._hal_service = self._bus.get_service(HAL_SERVICE)
|
||||
self._hal_manager = self._hal_service.get_object(HAL_PATH,
|
||||
HAL_INTERFACE)
|
||||
|
||||
|
||||
"""
|
||||
returns dictionary of the active device information
|
||||
if device does not exist returns get_device failure method
|
||||
"""
|
||||
def get_active_device(self):
|
||||
active_device = self.nm_object.getActiveDevice()
|
||||
return self.get_device(active_device)
|
||||
|
||||
"""
|
||||
pass device string /org/freedesktop/NetworkManager/Device/eth0
|
||||
returns dictionary of device information
|
||||
if device does not exist returns None
|
||||
"""
|
||||
def get_device(self, device):
|
||||
try:
|
||||
nm_device_object = self._nm_service.get_object(device,
|
||||
NM_INTERFACE_DEVICES)
|
||||
d = {}
|
||||
d["nm.name"] = nm_device_object.getName(device)
|
||||
d["nm.type"] = nm_device_object.getType(device)
|
||||
d["nm.udi"] = nm_device_object.getHalUdi(device)
|
||||
d["nm.ip4"] = nm_device_object.getIP4Address(device)
|
||||
d["nm.quality"] = nm_device_object.getMaxQuality(device)
|
||||
|
||||
try:
|
||||
d["nm.active_network"] = nm_device_object.getActiveNetwork(device)
|
||||
except DBusException, e:
|
||||
pass
|
||||
|
||||
try:
|
||||
d["nm.networks"] = nm_device_object.getNetworks(device)
|
||||
except DBusException, e:
|
||||
pass
|
||||
|
||||
active_device = self.nm_object.getActiveDevice()
|
||||
active_device_status = self.nm_object.status()
|
||||
|
||||
if device == active_device:
|
||||
d["nm.status"] = active_device_status
|
||||
else:
|
||||
d["nm.status"] = "not connected"
|
||||
|
||||
if device in self.__devices:
|
||||
for k,v in d.iteritems():
|
||||
self.__devices[device][k] = [v]
|
||||
return d
|
||||
else:
|
||||
hal = self._get_hal_info(d["nm.udi"])
|
||||
for k,v in hal.iteritems():
|
||||
d[k] = v
|
||||
self.__devices[device] = d
|
||||
return d
|
||||
except:
|
||||
return None
|
||||
|
||||
"""
|
||||
Returns list of dictionary objects of all active devices
|
||||
Returns empty list if no active devices
|
||||
"""
|
||||
def get_devices(self):
|
||||
|
||||
active_devices = self.nm_object.getDevices()
|
||||
devices = []
|
||||
|
||||
for device in active_devices:
|
||||
devices.append(self.get_device(device))
|
||||
|
||||
return devices
|
||||
|
||||
"""
|
||||
Returns list of dictionary objects of all devices active or not
|
||||
Returns empty list if no active devices
|
||||
"""
|
||||
def get_all_devices(self):
|
||||
return self.__devices.values()
|
||||
|
||||
def _get_hal_info(self, udi):
|
||||
hal_devices = self._hal_manager.FindDeviceStringMatch("info.udi",
|
||||
udi)
|
||||
for hal_device in hal_devices:
|
||||
device_dbus_obj = self._hal_service.get_object(hal_device,
|
||||
HAL_INTERFACE_DEVICE)
|
||||
properties = device_dbus_obj.GetAllProperties()
|
||||
return properties
|
||||
|
||||
if __name__ == "__main__":
|
||||
nm = NetworkManager()
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user