예제 #1
0
    def __init__(self, config):
        Network.__init__(self)
        self.config = config
        import pyconnman
        import dbus
        self.dbus = dbus
        self.p = pyconnman
        try:
            self.manager = pyconnman.ConnManager()
        except self.dbus.exceptions.DBusException as e:
            logging.warning("Connman not a known service on DBus")
            return
        self.technologies = self.manager.get_technologies()
        self.wifi = None
        self.ethernet = None
        self.bluetooth = None
        self.aps_by_path = {}

        for t in self.technologies:
            (path, params) = t
            if params['Name'] == "WiFi":
                self.wifi = pyconnman.ConnTechnology(path)
                self._start_agent()
            elif params['Name'] == "Wired":
                self.ethernet = pyconnman.ConnTechnology(path)
            elif params['Name'] == "Bluetooth":
                self.bluetooth = t
        self.manager.add_signal_receiver(self.services_changed,
                                         self.manager.SIGNAL_SERVICES_CHANGED,
                                         None)
        if self.wifi:
            self.wifi.add_signal_receiver(self.wifi_changed,
                                          self.wifi.SIGNAL_PROPERTY_CHANGED,
                                          None)
예제 #2
0
def _get_state():
    try:
        state = pyconnman.ConnManager().get_property('State')
    except Exception as exc:
        raise salt.exceptions.CommandExecutionError(
            'Connman daemon error: {0}'.format(exc))
    return state
예제 #3
0
파일: nilrt_ip.py 프로젝트: aneisch/salt-1
def _get_technologies():
    strTech = ''
    technologies = pyconnman.ConnManager().get_technologies()
    for path, params in technologies:
        strTech += '{0}\n\tName = {1}\n\tType = {2}\n\tPowered = {3}\n\tConnected = {4}\n'.format(
            path, params['Name'], params['Type'], params['Powered'] == 1, params['Connected'] == 1)
    return strTech
예제 #4
0
    def __init__(self, autoconnect_timeout):
        self.__bus = dbus.SystemBus()
        # self.bus = dbus.SessionBus()
        self.manager = dbus.Interface(
            self.__bus.get_object("net.connman", "/"), "net.connman.Manager")
        # self.technology = dbus.Interface(self.bus.get_object("net.connman",
        #         "/"), "net.connman.Service")
        self.dbus = dbus.Interface(self.__bus.get_object(DBUS_DOMAIN, '/'),
                                   'net.connman.Service')
        self.manager_py = pyconnman.ConnManager()

        try:
            # manager = pyconnman.ConnManager()
            self.manager_py.add_signal_receiver(
                self.dump_signal,
                pyconnman.ConnManager.SIGNAL_TECHNOLOGY_ADDED, None)
            self.manager_py.add_signal_receiver(
                self.dump_signal,
                pyconnman.ConnManager.SIGNAL_TECHNOLOGY_REMOVED,  # noqa
                None)
            self.manager_py.add_signal_receiver(
                self.dump_signal,
                pyconnman.ConnManager.SIGNAL_SERVICES_CHANGED, None)
            self.manager_py.add_signal_receiver(
                self.dump_signal,
                pyconnman.ConnManager.SIGNAL_PROPERTY_CHANGED, None)
        except dbus.exceptions.DBusException:
            print 'Unable to complete:', sys.exc_info()
예제 #5
0
 def test_manager_basic(self):
     manager = pyconnman.ConnManager()
     print repr(manager)
     print '========================================================='
     print manager
     print '========================================================='
     print 'Technologies:', manager.get_technologies()
     print 'Services:', manager.get_services()
예제 #6
0
 def test_manager_basic(self):
     manager = pyconnman.ConnManager()
     print(repr(manager))
     print('=========================================================')
     print(manager)
     print('=========================================================')
     print('Technologies:', manager.get_technologies())
     print('Services:', manager.get_services())
예제 #7
0
def _get_services():
    """
    Returns a list with all connman services
    """
    serv = []
    services = pyconnman.ConnManager().get_services()
    for path, _ in services:
        serv.append(six.text_type(path[len(SERVICE_PATH) :]))
    return serv
예제 #8
0
def _get_services():
    '''
    Returns a list with all connman services.
    '''
    serviceList = []
    services = pyconnman.ConnManager().get_services()
    for path, params in services:
        serviceList.append(six.text_type(path[len(SERVICE_PATH):]))
    return serviceList
예제 #9
0
def _get_state():
    '''
    Returns the state of connman
    '''
    try:
        return pyconnman.ConnManager().get_property('State')
    except KeyError:
        return 'offline'
    except dbus.DBusException as exc:
        raise salt.exceptions.CommandExecutionError('Connman daemon error: {0}'.format(exc))
예제 #10
0
 def test_agent_registration(self):
     agent = '/agent/myagent'
     manager = pyconnman.ConnManager()
     try:
         exception_raised = False
         manager.register_agent(agent)
         manager.unregister_agent(agent)
     except:
         exception_raised = True
     self.assertFalse(exception_raised)
예제 #11
0
def _get_state():
    """
    Returns the state of connman
    """
    try:
        return pyconnman.ConnManager().get_property("State")
    except KeyError:
        return "offline"
    except dbus.DBusException as exc:
        raise salt.exceptions.CommandExecutionError(
            "Connman daemon error: {0}".format(exc))
예제 #12
0
def wifi_connect(ssid, password):
    try:
        wifi_enable()
        path = wifi_service_path(ssid)
        if (path is None):
            return False
        print path + ' [' + ssid + ']'
        agent_path = '/bwsetup/agent'
        agent = pyconnman.SimpleWifiAgent(agent_path)
        agent.set_service_params(path, None, ssid, None, None, None, password,
                                 None)
        pyconnman.ConnManager().register_agent(agent_path)
        try:
            service = pyconnman.ConnService(path)
            service.set_property('autoconnect', 'yes')
            service.set_property('ipv4', 'dhcp')
            service.connect()
        except Exception, e:
            print e
        pyconnman.ConnManager().unregister_agent(agent_path)
        return True
예제 #13
0
 def test_service_basic(self):
     manager = pyconnman.ConnManager()
     services = manager.get_services()
     serv = pyconnman.ConnService(services[0][0])
     print "Serv:", serv
     print '========================================================='
     serv.connect()
     serv.disconnect()
     serv.move_before('a service')
     serv.move_after('a service')
     serv.reset_counters()
     serv.remove()
     serv.clear_property('a property')
예제 #14
0
def wifi_service_path(ssid):
    try:
        tech = pyconnman.ConnTechnology(CONNCTRL_TECH_PATH_WIFI)
        tech.scan()
        services = pyconnman.ConnManager().get_services()
        for i in services:
            (path, params) = i
            if (params['Type'] == 'wifi'):
                if (params['Name'] == ssid):
                    return path
        return None
    except Exception, e:
        print e
        return None
예제 #15
0
def _get_technologies():
    """
    Returns the technologies of connman
    """
    tech = ""
    technologies = pyconnman.ConnManager().get_technologies()
    for path, params in technologies:
        tech += "{0}\n\tName = {1}\n\tType = {2}\n\tPowered = {3}\n\tConnected = {4}\n".format(
            path,
            params["Name"],
            params["Type"],
            params["Powered"] == 1,
            params["Connected"] == 1,
        )
    return tech
예제 #16
0
 def test_scan(self):
     manager = pyconnman.ConnManager()
     technologies = manager.get_technologies()
     tech = pyconnman.ConnTechnology(technologies[0][0])
     print repr(tech)
     print '========================================================='
     print tech
     print '========================================================='
     added = 'Added'
     removed = 'Removed'
     signal = pyconnman.ConnManager.SIGNAL_SERVICES_CHANGED
     user = mock.MagicMock()
     manager.add_signal_receiver(user.callback_fn, signal, self)
     tech.scan()
     self.mock_system_bus.add_signal_receiver.assert_called()
     cb = self.mock_system_bus.add_signal_receiver.call_args_list[0][0][0]
     cb(added, removed)
     user.callback_fn.assert_called_with(signal, self, added, removed)
     user.callback_fn.assert_called()
     manager.remove_signal_receiver(signal)
     self.mock_system_bus.remove_signal_receiver.assert_called()
    def __init__(self):
        self.manager = pyconnman.ConnManager()
        self.bInternetConnected = False
        self.status = STATUS_DISCONNECTED
        self.agent = None
        self.services = None
        self.connectedSSID = None
        self.bScanning = False
        self.activePath = None

        self.waitForWifiInterface()
        self.setWifiPower(True)
        time.sleep(1)

        # Monitor the state of wifi and internet status every few seconds.
        def monitor():
            while True:
                self.getStatus()
                time.sleep(3)

        t = threading.Thread(target=monitor, args=())
        t.setDaemon(True)
        t.start()
예제 #18
0
파일: demo.py 프로젝트: jsbronder/pyconnman
        cmd_entry.func(args)
    else:
        print('Error: Command "{}" was not recognized.'.format(cmd))


def timeout_handler(signum, frame):
    while GLib.MainLoop().get_context().pending():
        GLib.MainLoop().get_context().iteration(False)


dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
signal.signal(signal.SIGALRM, timeout_handler)
signal.setitimer(signal.ITIMER_REAL, 0.01, 0.01)

try:
    manager = pyconnman.ConnManager()
    manager.add_signal_receiver(dump_signal,
                                pyconnman.ConnManager.SIGNAL_TECHNOLOGY_ADDED,
                                None)
    manager.add_signal_receiver(
        dump_signal,
        pyconnman.ConnManager.SIGNAL_TECHNOLOGY_REMOVED,  # noqa
        None)
    manager.add_signal_receiver(dump_signal,
                                pyconnman.ConnManager.SIGNAL_SERVICES_CHANGED,
                                None)
    manager.add_signal_receiver(dump_signal,
                                pyconnman.ConnManager.SIGNAL_PROPERTY_CHANGED,
                                None)
except dbus.exceptions.DBusException:
    print('Unable to complete:', sys.exc_info())