about summary refs log tree commit diff
path: root/examples/python/dbus
diff options
context:
space:
mode:
Diffstat (limited to 'examples/python/dbus')
-rwxr-xr-xexamples/python/dbus/add-wifi-sae-connection.py36
-rwxr-xr-xexamples/python/dbus/checkpoint.py71
2 files changed, 107 insertions, 0 deletions
diff --git a/examples/python/dbus/add-wifi-sae-connection.py b/examples/python/dbus/add-wifi-sae-connection.py
new file mode 100755
index 00000000..e9c14a6d
--- /dev/null
+++ b/examples/python/dbus/add-wifi-sae-connection.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+import dbus, uuid
+
+s_con = dbus.Dictionary(
+    {"type": "802-11-wireless", "uuid": str(uuid.uuid4()), "id": "My-WPA3-Personal"}
+)
+
+s_wifi = dbus.Dictionary(
+    {"ssid": dbus.ByteArray("wpa3wifi".encode("utf-8")), "mode": "infrastructure"}
+)
+
+s_wsec = dbus.Dictionary({"key-mgmt": "sae", "psk": "super-secret-password"})
+
+s_ip4 = dbus.Dictionary({"method": "auto"})
+s_ip6 = dbus.Dictionary({"method": "ignore"})
+
+con = dbus.Dictionary(
+    {
+        "connection": s_con,
+        "802-11-wireless": s_wifi,
+        "802-11-wireless-security": s_wsec,
+        "ipv4": s_ip4,
+        "ipv6": s_ip6,
+    }
+)
+print("Creating connection:", s_con["id"], "-", s_con["uuid"])
+
+bus = dbus.SystemBus()
+proxy = bus.get_object(
+    "org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager/Settings"
+)
+settings = dbus.Interface(proxy, "org.freedesktop.NetworkManager.Settings")
+
+settings.AddConnection(con)
diff --git a/examples/python/dbus/checkpoint.py b/examples/python/dbus/checkpoint.py
new file mode 100755
index 00000000..869bfce7
--- /dev/null
+++ b/examples/python/dbus/checkpoint.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright (C) 2016 Red Hat, Inc.
+#
+# This example takes a list of device interface names as a parameter
+# and tells NetworkManager to create a checkpoint on those devices. It
+# is then possible to restore or destroy the checkpoint.
+
+# Get a proxy for the base NetworkManager object
+
+import dbus, sys
+
+bus = dbus.SystemBus()
+proxy = bus.get_object(
+    "org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager"
+)
+manager = dbus.Interface(proxy, "org.freedesktop.NetworkManager")
+allDevs = manager.GetDevices()
+
+
+def Usage():
+    print("Usage: %s <ROLLBACK-INTERVAL> [INTERFACE]..." % sys.argv[0])
+    sys.exit(1)
+
+
+def GetDevicePath(ifname):
+    for dev in allDevs:
+        dev_proxy = bus.get_object("org.freedesktop.NetworkManager", dev)
+        prop_iface = dbus.Interface(dev_proxy, "org.freedesktop.DBus.Properties")
+        interface = prop_iface.Get("org.freedesktop.NetworkManager.Device", "Interface")
+        if interface == ifname:
+            return dev
+    return
+
+
+if len(sys.argv) < 2:
+    Usage()
+
+try:
+    interval = int(sys.argv[1])
+except ValueError:
+    Usage()
+
+devList = []
+
+for arg in sys.argv[2:]:
+    path = GetDevicePath(arg)
+    if path is None:
+        raise Exception("NetworkManager knows nothing about %s" % arg)
+    else:
+        devList.append(path)
+
+checkpoint = manager.CheckpointCreate(devList, interval, 1)
+# DESTROY_ALL
+
+try:
+    # Workaround for Python2
+    input = raw_input
+except NameError:
+    pass
+
+choice = input("Do you want to rollback [y/n]? ").lower()
+if choice == "y":
+    print("Rollback checkpoint")
+    results = manager.CheckpointRollback(checkpoint)
+    for d in results:
+        print("  - device %s: result %u" % (d, results[d]))
+else:
+    print("Destroy checkpoint")
+    manager.CheckpointDestroy(checkpoint)