#!/usr/bin/python import sys import dbus def make_variant(string): return dbus.String(string, variant_level=1) def extract_values(values): val = "{" for key in list(values.keys()): val += " " + key + "=" if key in ["Servers", "Excludes"]: val += extract_list(values[key]) else: val += str(values[key]) val += " }" return val def extract_list(list): val = "[" for i in list: if type(i).__name__ == 'Dictionary': val += extract_values(i) elif type(i).__name__ == 'Struct': val += extract_list(i) else: val += " " + str(i) val += "]" return val argc = len(sys.argv) if (argc < 2): print("Usage: %s [] []" % (sys.argv[0])) sys.exit(1) bus = dbus.SystemBus() manager = dbus.Interface(bus.get_object("net.connman.vpn", "/"), "net.connman.vpn.Manager") connections = manager.GetConnections() path = "/net/connman/vpn/connection/" + sys.argv[1] print("Attempting to connect VPN %s" % (path)) connection = dbus.Interface(bus.get_object("net.connman.vpn", path), "net.connman.vpn.Connection") if (argc < 3): properties = connection.GetProperties() for key in list(properties.keys()): if key in ["IPv4", "IPv6" ]: val = extract_values(properties[key]) elif key in ["Nameservers","ServerRoutes","UserRoutes"]: val = extract_list(properties[key]) else: val = str(properties[key]) print(" %s = %s" % (key, val)) elif (argc < 4): try: connection.ClearProperty(sys.argv[2]) except dbus.DBusException as error: print("%s: %s" % (error._dbus_error_name, error.message)) else: try: connection.SetProperty(sys.argv[2], sys.argv[3]) except dbus.DBusException as error: print("%s: %s" % (error._dbus_error_name, error.message))