| #!/usr/bin/python | |
| import gobject | |
| import dbus | |
| import dbus.mainloop.glib | |
| 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: | |
| val += " " + str(i) | |
| val += " ]" | |
| return val | |
| def property_changed(name, value, path): | |
| service = path[path.rfind("/") + 1:] | |
| if name in ["Services"]: | |
| val = "[" | |
| for i in value: | |
| val = val + " " + i[i.rfind("/") + 1:] | |
| val = val + " ]" | |
| elif name in ["IPv4", "IPv4.Configuration", | |
| "IPv6", "IPv6.Configuration", | |
| "Proxy", "Proxy.Configuration", "Ethernet", "Provider"]: | |
| val = extract_values(value) | |
| elif name in ["Nameservers", "Nameservers.Configuration", | |
| "Domains", "Domains.Configuration", | |
| "Timeservers", "Timeservers.Configuration", "Security"]: | |
| val = extract_list(value) | |
| elif name in ["Strength", "Priority"]: | |
| val = int(value) | |
| else: | |
| val = str(value) | |
| print "[%s] %s = %s" % (service, name, val) | |
| def services_changed(services, removed): | |
| for i in services: | |
| service = i[0][i[0].rfind("/") + 1:] | |
| print "[%s] changed" % (service) | |
| for n in i[1].keys(): | |
| property_changed(n, i[1][n], i[0]) | |
| for i in removed: | |
| service = i[i.rfind("/") + 1:] | |
| print "[%s] removed" % (service) | |
| def technology_added(path, properties): | |
| technology = path[path.rfind("/") + 1:] | |
| print "[%s] added" % (technology) | |
| for n in properties.keys(): | |
| property_changed(n, properties[n], technology) | |
| def technology_removed(path): | |
| technology = path[path.rfind("/") + 1:] | |
| print "[%s] removed" % (technology) | |
| if __name__ == '__main__': | |
| dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) | |
| bus = dbus.SystemBus() | |
| bus.add_signal_receiver(property_changed, | |
| bus_name="net.connman", | |
| dbus_interface="net.connman.Manager", | |
| signal_name="PropertyChanged", | |
| path_keyword="path") | |
| bus.add_signal_receiver(services_changed, | |
| bus_name="net.connman", | |
| dbus_interface="net.connman.Manager", | |
| signal_name="ServicesChanged") | |
| bus.add_signal_receiver(property_changed, | |
| bus_name="net.connman", | |
| dbus_interface="net.connman.Service", | |
| signal_name="PropertyChanged", | |
| path_keyword="path") | |
| bus.add_signal_receiver(technology_added, | |
| bus_name="net.connman", | |
| dbus_interface="net.connman.Manager", | |
| signal_name="TechnologyAdded") | |
| bus.add_signal_receiver(technology_removed, | |
| bus_name="net.connman", | |
| dbus_interface="net.connman.Manager", | |
| signal_name="TechnologyRemoved") | |
| bus.add_signal_receiver(property_changed, | |
| bus_name="net.connman", | |
| dbus_interface="net.connman.Technology", | |
| signal_name="PropertyChanged", | |
| path_keyword="path") | |
| mainloop = gobject.MainLoop() | |
| mainloop.run() |