12f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley#!/usr/bin/python 22f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 32f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileyimport sys 42f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileyimport dbus 52f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileyimport flimflam 62f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 72f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileybus = dbus.SystemBus() 82f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 92f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileymanager = dbus.Interface(bus.get_object("org.chromium.flimflam", "/"), 102f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Manager") 112f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 122f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileyif len(sys.argv) < 2: 132f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Usage: %s <command>" % (sys.argv[0]) 142f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "" 152f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " state" 162f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " recheck-portal" 172f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " services" 182f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " passphrase <service> [passphrase]" 192f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " autoconnect <service> [autoconnect]" 202f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " connect <service>" 212f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " disconnect <service>" 222f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " remove <service>" 232f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "" 242f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " scan [type]" 252f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " enable <type>" 262f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " disable <type>" 272f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " offlinemode [on|off]" 282f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "" 292f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " dev <interface>" 302f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " dev <interface> scan" 312f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " dev <interface> networks" 322f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " dev <interface> connect <network>" 332f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " dev <interface> disconnect [network]" 342f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " dev <interface> powered [on|off]" 352f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley sys.exit(1) 362f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 372f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileydef print_properties(object_path, properties): 382f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "[ %s ]" % (object_path) 392f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley for key in properties.keys(): 402f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if key == "Networks": 412f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley continue 422f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 432f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if key in ["Powered", "Scanning", "Connected", 442f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "Available", "Remember", "Default"]: 452f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if properties[key] == dbus.Boolean(1): 462f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley val = "true" 472f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 482f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley val = "false" 492f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif key in ["Strength", "Priority"]: 502f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley val = int(properties[key]) 512f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 522f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley val = str(properties[key]) 532f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 542f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print " %s = %s" % (key, val) 552f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 562f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileydef print_networks(networks): 572f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley for object_path in networks: 582f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley network = dbus.Interface( 592f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley bus.get_object("org.chromium.flimflam", object_path), 602f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Network") 612f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 622f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = network.GetProperties(utf8_strings = True) 632f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 642f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if properties["Connected"] == dbus.Boolean(1): 652f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley connected = "*" 662f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 672f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley connected = " " 682f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 692f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "Name" in properties.keys(): 702f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley name = properties["Name"] 712f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 722f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley name = "" 732f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 742f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley strength = int(properties["Strength"]) 752f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 762f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley details = "" 772f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley try: 782f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley details += "{" + properties["WiFi.Mode"] + "} " 792f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley except Exception, _: 802f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley pass 812f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley try: 822f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley details += "{" + properties["WiFi.Security"] + "} " 832f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley except Exception, _: 842f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley pass 852f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "WiFi.Passphrase" in properties.keys(): 862f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if properties["WiFi.Passphrase"] != "": 872f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley details += "{passphrase present}" 882f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 892f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "%s %-26s %3d%% %s" % (connected, name, strength, details) 902f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 912f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileydef select_network(networks, name): 922f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley for object_path in networks: 932f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley network = dbus.Interface( 942f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley bus.get_object("org.chromium.flimflam", object_path), 952f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Network") 962f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 972f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = network.GetProperties(utf8_strings = True) 982f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 992f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if properties["Name"] != name: 1002f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley continue 1012f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1022f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if properties["Connected"] == dbus.Boolean(1): 1032f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Already connected to network %s" % (name) 1042f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley break 1052f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1062f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Selecting network %s" % (name) 1072f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1082f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley network.Connect() 1092f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1102f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileydef disconnect_network(networks, name): 1112f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley for object_path in networks: 1122f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley network = dbus.Interface( 1132f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley bus.get_object("org.chromium.flimflam", object_path), 1142f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Network") 1152f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1162f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = network.GetProperties(utf8_strings = True) 1172f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1182f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if name != "" and properties["Name"] != name: 1192f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley continue 1202f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1212f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if properties["Connected"] == dbus.Boolean(1): 1222f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley name = properties["Name"] 1232f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Disconnecting from network %s" % (name) 1242f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley network.Disconnect() 1252f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1262f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileydef print_services(services): 1272f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley for object_path in services: 1282f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service = dbus.Interface( 1292f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley bus.get_object("org.chromium.flimflam", object_path), 1302f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Service") 1312f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1322f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = service.GetProperties(utf8_strings = True) 1332f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1342f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley identifier = object_path[object_path.rfind("/") + 1:] 1352f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1362f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if properties["Favorite"] == dbus.Boolean(1): 1372f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley favorite = "*" 1382f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 1392f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley favorite = " " 1402f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1412f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "Name" in properties.keys(): 1422f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley name = properties["Name"] 1432f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 1442f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley name = "{" + properties["Type"] + "}" 1452f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1462f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "%s %-26s { %s }" % (favorite, name, identifier) 1472f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1482f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileydef main(): 1492f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if sys.argv[1] == "state": 1502f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = manager.GetProperties(utf8_strings = True) 1512f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1522f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "System is %s" % (properties["State"]) 1532f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1542f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] == "recheck-portal": 1552f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley manager.RecheckPortal() 1562f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Rechecking portal state" 1572f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1582f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] in ["services", "list", "show"]: 1592f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = manager.GetProperties(utf8_strings = True) 1602f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1612f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print_services(properties["Services"]) 1622f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1632f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] in ["passphrase", "pass"]: 1642f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if (len(sys.argv) < 3): 1652f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Need at least service parameter" 1662f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley sys.exit(1) 1672f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1682f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley path = "/profile/default/" + sys.argv[2] 1692f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1702f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service = dbus.Interface(bus.get_object("org.chromium.flimflam", path), 1712f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Service") 1722f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1732f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if (len(sys.argv) > 3): 1742f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley passphrase = sys.argv[3] 1752f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1762f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service.SetProperty("Passphrase", passphrase) 1772f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1782f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Passphrase %s set for %s" % (passphrase, sys.argv[2]) 1792f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 1802f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = service.GetProperties(utf8_strings = True) 1812f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1822f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "Name" in properties.keys(): 1832f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley name = properties["Name"] 1842f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: name = "{" + properties["Type"] + "}" 1852f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1862f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "Passphrase" in properties.keys(): 1872f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley passphrase = properties["Passphrase"] 1882f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 1892f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley passphrase = "not set" 1902f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1912f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Passphrase for %s is %s" % (name, passphrase) 1922f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1932f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] in ["autoconnect", "autoconn"]: 1942f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if (len(sys.argv) < 3): 1952f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Need at least service parameter" 1962f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley sys.exit(1) 1972f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 1982f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley path = "/profile/default/" + sys.argv[2] 1992f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2002f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service = dbus.Interface(bus.get_object("org.chromium.flimflam", path), 2012f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Service") 2022f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2032f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if (len(sys.argv) > 3): 2042f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley autoconnect = flimflam.make_dbus_boolean(sys.argv[3]) 2052f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2062f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service.SetProperty("AutoConnect", autoconnect) 2072f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2082f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Auto connect %s for %s" % (autoconnect, sys.argv[2]) 2092f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 2102f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = service.GetProperties(utf8_strings = True) 2112f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2122f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "Name" in properties.keys(): 2132f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley name = properties["Name"] 2142f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 2152f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley name = "{" + properties["Type"] + "}" 2162f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2172f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "AutoConnect" in properties.keys(): 2182f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley autoconnect = properties["AutoConnect"] 2192f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 2202f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley autoconnect = dbus.Boolean(0) 2212f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2222f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Auto connect %s for %s" % (autoconnect, name) 2232f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2242f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] in ["connect", "conn"]: 2252f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if (len(sys.argv) < 3): 2262f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Need at least service parameter" 2272f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley sys.exit(1) 2282f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2292f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley path = "/profile/default/" + sys.argv[2] 2302f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2312f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service = dbus.Interface(bus.get_object("org.chromium.flimflam", path), 2322f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Service") 2332f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2342f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley try: 2352f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service.Connect(timeout=60000) 2362f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley except dbus.DBusException, error: 2372f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "%s: %s" % (error.get_dbus_name(), error.message) 2382f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2392f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] in ["disconnect", "disc"]: 2402f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if (len(sys.argv) < 3): 2412f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Need at least service parameter" 2422f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley sys.exit(1) 2432f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2442f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley path = "/profile/default/" + sys.argv[2] 2452f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2462f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service = dbus.Interface(bus.get_object("org.chromium.flimflam", path), 2472f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Service") 2482f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2492f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley try: 2502f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service.Disconnect() 2512f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley except dbus.DBusException, error: 2522f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "%s: %s" % (error.get_dbus_name(), error.message) 2532f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2542f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] in ["remove"]: 2552f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if (len(sys.argv) < 3): 2562f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Need at least service parameter" 2572f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley sys.exit(1) 2582f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2592f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley path = "/profile/default/" + sys.argv[2] 2602f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2612f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service = dbus.Interface(bus.get_object("org.chromium.flimflam", path), 2622f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Service") 2632f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2642f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = service.GetProperties(utf8_strings = True) 2652f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2662f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if properties["Favorite"] == dbus.Boolean(0): 2672f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Only favorite services can be removed" 2682f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley sys.exit(1) 2692f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2702f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley try: 2712f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley service.Remove() 2722f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley except dbus.DBusException, error: 2732f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "%s: %s" % (error.get_dbus_name(), error.message) 2742f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2752f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] == "scan": 2762f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if len(sys.argv) > 2: 2772f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley manager.RequestScan(sys.argv[2]) 2782f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 2792f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley manager.RequestScan("") 2802f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2812f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] == "enable": 2822f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if len(sys.argv) > 2: 2832f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley manager.EnableTechnology(sys.argv[2]) 2842f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 2852f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley manager.EnableTechnology("") 2862f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2872f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] == "disable": 2882f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if len(sys.argv) > 2: 2892f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley manager.DisableTechnology(sys.argv[2]) 2902f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 2912f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley manager.DisableTechnology("") 2922f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 2932f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] in ["offlinemode", "flightmode"]: 2942f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if len(sys.argv) > 2: 2952f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley active = flimflam.make_dbus_boolean(sys.argv[2]) 2962f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley manager.SetProperty("OfflineMode", active) 2972f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 2982f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = manager.GetProperties(utf8_strings = True) 2992f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Offline mode is %s" % (properties["OfflineMode"]) 3002f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 3012f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif sys.argv[1] == "dev": 3022f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = manager.GetProperties(utf8_strings = True) 3032f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 3042f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley interface = "" 3052f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley command = "" 3062f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley value = "" 3072f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 3082f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if len(sys.argv) > 2: 3092f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley interface = sys.argv[2] 3102f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if len(sys.argv) > 3: 3112f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley command = sys.argv[3] 3122f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if len(sys.argv) > 4: 3132f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley value = sys.argv[4] 3142f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 3152f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley for path in properties["Devices"]: 3162f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley device = dbus.Interface( 3172f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley bus.get_object("org.chromium.flimflam", path), 3182f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley "org.chromium.flimflam.Device") 3192f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 3202f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties = device.GetProperties(utf8_strings = True) 3212f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 3222f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if (interface != "" and 3232f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley properties.get("Interface", "") != interface and 3242f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley path != interface): 3252f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley continue 3262f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 3272f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if command == "scan": 3282f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if properties["Type"] in ["wifi", "wimax"]: 3292f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley interface = properties["Interface"] 3302f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Scan for device %s" % (interface) 3312f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley device.ProposeScan() 3322f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 3332f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "No scanning for device %s" % (interface) 3342f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif command in ["networks", "net"]: 3352f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "Networks" in properties.keys(): 3362f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print_networks(properties["Networks"]) 3372f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 3382f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Device has no networks" 3392f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif command in ["connect", "conn"] and value != "": 3402f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "Networks" in properties.keys(): 3412f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley select_network(properties["Networks"], value) 3422f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 3432f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Device can't connect networks" 3442f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif command in ["connect", "conn"]: 3452f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Need to specify network" 3462f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif command in ["disconnect", "disc"] and value != "": 3472f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "Networks" in properties.keys(): 3482f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley disconnect_network(properties["Networks"], value) 3492f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 3502f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Device has no networks" 3512f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif command in ["discconnect", "disc"]: 3522f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if "Networks" in properties.keys(): 3532f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley disconnect_network(properties["Networks"], "") 3542f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 3552f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Device has no networks" 3562f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif command == "powered" and value != "": 3572f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley powered = flimflam.make_dbus_boolean(value) 3582f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley device.SetProperty("Powered", powered) 3592f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif command == "powered": 3602f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley interface = properties.get("Interface", "unknown") 3612f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley if properties["Powered"] == dbus.Boolean(1): 3622f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley powered = "on" 3632f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 3642f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley powered = "off" 3652f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Device %s is powered %s" % (interface, powered) 3662f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley elif command == "list" or command == "": 3672f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print_properties(path, properties) 3682f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 3692f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Unknown command" 3702f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 3712f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley else: 3722f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley print "Unknown command" 3732f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley 3742f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wileyif __name__ == "__main__": 3752f48d9572459c2c90d68e8b017b86eb843fe2a74Christopher Wiley main() 376