| #!/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 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 <VPN connection id> [<property name>] [<property values>]" % (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 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, error: |
| print "%s: %s" % (error._dbus_error_name, error.message) |
| else: |
| try: |
| connection.SetProperty(sys.argv[2], sys.argv[3]) |
| except dbus.DBusException, error: |
| print "%s: %s" % (error._dbus_error_name, error.message) |