diff options
| author | Michael Biebl <biebl@debian.org> | 2011-03-18 20:17:47 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2011-03-18 20:17:47 +0100 |
| commit | e22c6e05e9ebc6cce941762020c5710b8014677b (patch) | |
| tree | 7e9fd7f8ae24a94b03f683e0cef9a346968e1e8b /examples/python/vpn.py | |
| parent | a6b89d35fabd9f5934b84d7cde22e9268f92c3d3 (diff) | |
Imported Upstream version 0.8.3.998 upstream/0.8.3.998
Diffstat (limited to 'examples/python/vpn.py')
| -rw-r--r-- | examples/python/vpn.py | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/examples/python/vpn.py b/examples/python/vpn.py deleted file mode 100644 index 4b4057fc..00000000 --- a/examples/python/vpn.py +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/python -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Copyright (C) 2009 Novell, Inc. -# Copyright (C) 2009 Red Hat, Inc. -# - -# Run this script without any arguments to list the available connection uuids. - -# The uuid of the connection to activate -CONNECTION_UUID="ac6dc9b2-85ef-4311-83d8-add5d7db3f59" - -# UID to use. Note that NM only allows the owner of the connection to activate it. -#UID=1000 -UID=0 - -import sys -import os -import dbus -from dbus.mainloop.glib import DBusGMainLoop -import gobject - -DBusGMainLoop(set_as_default=True) - -def get_connections(): - bus = dbus.SystemBus() - proxy = bus.get_object('org.freedesktop.NetworkManagerUserSettings', '/org/freedesktop/NetworkManagerSettings') - iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.NetworkManagerSettings') - return iface.ListConnections() - - -def get_connection_by_uuid(uuid): - bus = dbus.SystemBus() - for c in get_connections(): - proxy = bus.get_object('org.freedesktop.NetworkManagerUserSettings', c) - iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.NetworkManagerSettings.Connection') - settings = iface.GetSettings() - if settings['connection']['uuid'] == uuid: - return c - - return None - - -def list_uuids(): - bus = dbus.SystemBus() - for c in get_connections(): - proxy = bus.get_object('org.freedesktop.NetworkManagerUserSettings', c) - iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.NetworkManagerSettings.Connection') - settings = iface.GetSettings() - conn = settings['connection'] - print "%s - %s (%s)" % (conn['uuid'], conn['id'], conn['type']) - - -def get_active_connection_path(uuid): - bus = dbus.SystemBus() - proxy = bus.get_object('org.freedesktop.NetworkManager', '/org/freedesktop/NetworkManager') - iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties') - active_connections = iface.Get('org.freedesktop.NetworkManager', 'ActiveConnections') - all_connections = get_connections() - - for a in active_connections: - proxy = bus.get_object('org.freedesktop.NetworkManager', a) - iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties') - path = iface.Get('org.freedesktop.NetworkManager.Connection.Active', 'Connection') - - proxy = bus.get_object('org.freedesktop.NetworkManagerUserSettings', path) - iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.NetworkManagerSettings.Connection') - settings = iface.GetSettings() - - if settings['connection']['uuid'] == uuid: - return a - - return None - - -def get_wifi_device_path(): - bus = dbus.SystemBus() - proxy = bus.get_object('org.freedesktop.NetworkManager', '/org/freedesktop/NetworkManager') - iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.NetworkManager') - devices = iface.GetDevices() - for d in devices: - proxy = bus.get_object('org.freedesktop.NetworkManager', d) - iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties') - devtype = iface.Get('org.freedesktop.NetworkManager.Device', 'DeviceType') - if devtype == 2: - return d - return None - -def activate_connection(connection_path, device_path): - - def reply_handler(opath): - print "Success: device activating" - sys.exit(0) - - def error_handler(*args): - print "Error activating device: %s" % args - sys.exit(1) - - bus = dbus.SystemBus() - proxy = bus.get_object('org.freedesktop.NetworkManager', '/org/freedesktop/NetworkManager') - iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.NetworkManager') - iface.ActivateConnection('org.freedesktop.NetworkManagerUserSettings', - connection_path, - device_path, - "/", - reply_handler=reply_handler, - error_handler=error_handler) - - -# Change the UID first if required -if UID != 0: - os.setuid(UID) - -# Are we configured? -if not len(CONNECTION_UUID): - print "missing connection UUID" - sys.exit(0) - -connection_path = get_connection_by_uuid(CONNECTION_UUID) -if not connection_path: - # Configured VPN connection is not known to NM, check CONNECTION_UUID. - print "couldn't find the connection" - sys.exit(1) - -device_path = get_wifi_device_path() -if not device_path: - print "no wifi device found" - sys.exit(1) - -# Is it already activated? -if get_active_connection_path(CONNECTION_UUID): - print "already connected" - sys.exit(0) - -print "Activating connection..." -activate_connection(connection_path, device_path) -loop = gobject.MainLoop() -loop.run() - |