Ejemplo n.º 1
0
    def service_connect_handler(self, interface, object_path, method, args, ok, err):
        if interface == Network().get_interface_name() and method == "Connect":
            uuid = args[0]
            name = uuid16_to_name(uuid128_to_uuid16(uuid))
            d = Device(object_path)

            conn = self.find_active_connection(d.Address, "panu")
            if conn:
                err(dbus.DBusException(_("Already connected")))
            else:
                params = {}
                params["bluetooth"] = {"name": "bluetooth", "bdaddr": str(d.Address), "type": "panu"}
                params["connection"] = {"autoconnect": False, "id": str("%s on %s") % (name, d.Alias),
                                        "uuid": str(uuid1()), "type": "bluetooth"}
                params['ipv4'] = {'addresses': dbus.Array([], dbus.Signature("i")),
                                  'dns': dbus.Array([], dbus.Signature("i")), "method": "auto",
                                  "routes": dbus.Array([], dbus.Signature("i"))}

                NewConnectionBuilder(self, params, ok, err)

            return True

        elif interface == Network().get_interface_name() and method == "Disconnect":
            d = Device(object_path)
            active_conn_path = self.find_active_connection(d.Address, "panu")
            if active_conn_path:
                self.bus.call_blocking("org.freedesktop.NetworkManager",
                                       "/org/freedesktop/NetworkManager",
                                       "org.freedesktop.NetworkManager",
                                       "DeactivateConnection",
                                       "o",
                                       [active_conn_path])
                ok()
                return True
Ejemplo n.º 2
0
    def on_load(self, applet):
        GObject.GObject.__init__(self)
        self.monitors = []
        self.devices = weakref.WeakValueDictionary()
        self.signals = SignalTracker()

        bus = self.bus = dbus.SystemBus()
        self.signals.Handle('bluez',
                            Network(),
                            self.on_network_property_changed,
                            'PropertyChanged',
                            path_keyword="path")

        item = create_menuitem(_("Network _Usage"),
                               get_icon("network-wireless", 16))
        item.props.tooltip_text = _("Shows network traffic usage")
        self.signals.Handle(item, "activate", self.activate_ui)
        self.Applet.Plugins.Menu.Register(self, item, 84, True)

        self.signals.Handle("dbus",
                            bus,
                            self.on_nm_ppp_stats,
                            "PppStats",
                            "org.freedesktop.NetworkManager.Device.Serial",
                            path_keyword="path")
        self.nm_paths = {}
Ejemplo n.º 3
0
    def on_load(self, applet):
        self.Signals = SignalTracker()

        self.Signals.Handle('bluez',
                            Network(),
                            self.on_network_prop_changed,
                            'PropertyChanged',
                            path_keyword='path')
Ejemplo n.º 4
0
    def add_item(self, item):
        device = item["device"]

        if item["service"] == Serial().get_interface_name():
            name = sdp.sdp_get_serial_name(item["address"],
                                           item["conn_args"][0])

        elif item["service"] == Network().get_interface_name():
            name = _("Network Access (%s)") % sdp.uuid16_to_name(
                sdp.uuid128_to_uuid16(item["conn_args"][0]))
        else:
            try:
                name = sdp.bluez_to_friendly_name(
                    item["service"].split(".")[-1].lower())
            except:
                name = item["service"].split(".")[-1] + " " + _("Service")
                name = name.capitalize()

        if not item["mitem"]:
            mitem = create_menuitem("", get_icon(item["icon"], 16))
            item["mitem"] = mitem
            mitem.connect("activate", self.on_item_activated, item)
        else:
            mitem = item["mitem"]
            mitem.props.sensitive = True
            mitem.props.tooltip_text = None

        item["mitem"].props.label = (_("%(service)s on %(device)s") % {
            "service": name,
            "device": item["alias"]
        })

        if item["adapter"] not in self.Adapters.values():
            if item["device"] and item["gsignal"]:
                item["device"].disconnect(item["gsignal"])

            item["device"] = None
        elif not item["device"] and item["adapter"] in self.Adapters.values():
            try:
                dev = self.get_device(item)
                item["device"] = dev
                item["gsignal"] = item["device"].connect(
                    "invalidated", self.on_device_removed, item)

            except:
                RecentConns.items.remove(item)
                self.initialize()

        if not item["device"]:
            mitem.props.sensitive = False
            mitem.props.tooltip_text = _(
                "Adapter for this connection is not available")

        self.prepend(mitem)
        mitem.show()
Ejemplo n.º 5
0
    def on_load(self, applet):
        self.Signals = SignalTracker()

        self.add_dbus_method(self.DhcpClient, in_signature="s")

        self.Signals.Handle('bluez',
                            Network(),
                            self.on_network_prop_changed,
                            'PropertyChanged',
                            path_keyword="path")

        self.quering = []
Ejemplo n.º 6
0
    def dhcp_acquire(self, object_path: str) -> None:
        device = Network(obj_path=object_path)["Interface"]

        if device not in self.quering:
            self.quering.append(device)
        else:
            return

        if device != "":

            def reply(_obj: Mechanism, result: str, _user_data: None) -> None:
                logging.info(result)
                Notification(_("Bluetooth Network"),
                             _("Interface %(0)s bound to IP address %(1)s") % {
                                 "0": device,
                                 "1": result
                             },
                             icon_name="network-workgroup").show()

                self.quering.remove(device)

            def err(_obj: Mechanism, result: GLib.Error,
                    _user_data: None) -> None:
                logging.warning(result)
                Notification(_("Bluetooth Network"),
                             _("Failed to obtain an IP address on %s") %
                             device,
                             icon_name="network-workgroup").show()

                self.quering.remove(device)

            Notification(
                _("Bluetooth Network"),
                _("Trying to obtain an IP address on %s\nPlease wait…" %
                  device),
                icon_name="network-workgroup").show()

            m = Mechanism()
            m.DhcpClient('(s)',
                         object_path,
                         result_handler=reply,
                         error_handler=err,
                         timeout=120 * 1000)
Ejemplo n.º 7
0
    def __init__(self, blueman):
        GObject.GObject.__init__(self)
        self.Blueman = blueman
        self.SelectedDevice = None

        self.is_popup = False

        self._device_property_changed_signal = self.Blueman.List.connect("device-property-changed",
                                                                         self.on_device_property_changed)
        self._selection_done_signal = None

        ManagerDeviceMenu.__instances__.append(self)

        self._any_network = Network()
        self._any_network.connect_signal('property-changed', self._on_service_property_changed)

        self._any_device = Device()
        self._any_device.connect_signal('property-changed', self._on_service_property_changed)

        self.Generate()
Ejemplo n.º 8
0
    def on_load(self, applet):
        GObject.GObject.__init__(self)
        self.monitors = []
        self.devices = weakref.WeakValueDictionary()

        self.bus = dbus.SystemBus()

        self._any_network = Network()
        self._any_network.connect_signal('property-changed',
                                         self._on_network_property_changed)

        item = create_menuitem(_("Network _Usage"),
                               get_icon("network-wireless", 16))
        item.props.tooltip_text = _("Shows network traffic usage")
        item.connect("activate", self.activate_ui)
        self.Applet.Plugins.Menu.Register(self, item, 84, True)

        self.bus.add_signal_receiver(
            self.on_nm_ppp_stats,
            "PppStats",
            "org.freedesktop.NetworkManager.Device.Serial",
            path_keyword="path")
        self.nm_paths = {}
Ejemplo n.º 9
0
 def __init__(self, device, uuid):
     super(NetworkService, self).__init__(device, uuid)
     self._service = Network(device.get_object_path())
Ejemplo n.º 10
0
 def renew(x):
     appl.DhcpClient('(s)', Network(device.get_object_path())["Interface"])
Ejemplo n.º 11
0
 def renew(x):
     appl.DhcpClient(Network(device.get_object_path()).get_properties()["Interface"])
Ejemplo n.º 12
0
 def __init__(self, device: Device, uuid: str):
     super().__init__(device, uuid)
     self._service = Network(obj_path=device.get_object_path())
Ejemplo n.º 13
0
 def renew(_item: Gtk.MenuItem) -> None:
     appl.DhcpClient('(s)', Network(device.get_object_path())["Interface"])
Ejemplo n.º 14
0
    def on_request_menu_items(self, manager_menu, device):
        items = []
        appl = AppletService()

        self.has_dun = False
        serial_items = []

        def add_menu_item(manager_menu, service):
            if service.connected:
                item = create_menuitem(service.name, get_x_icon(service.icon, 16))
                manager_menu.Signals.Handle("gobject", item, "activate", manager_menu.on_disconnect, service)
                items.append((item, service.priority + 100))
            else:
                item = create_menuitem(service.name, get_icon(service.icon, 16))
                if service.description:
                    item.props.tooltip_text = service.description
                manager_menu.Signals.Handle("gobject", item, "activate", manager_menu.on_connect, service)
                if service.group == 'serial':
                    serial_items.append(item)
                    if isinstance(service, DialupNetwork):
                        self.has_dun = True
                else:
                    items.append((item, service.priority))
            item.show()

        for service in device.get_services():
            if service.group == 'network':
                manager_menu.Signals.Handle("bluez", Network(device.get_object_path()),
                                            manager_menu.service_property_changed, "PropertyChanged")

            if isinstance(service, Input):
                manager_menu.Signals.Handle("bluez", device, manager_menu.service_property_changed, "PropertyChanged")

            try:
                add_menu_item(manager_menu, service)
            except Exception as e:
                dprint("Failed to load service %s" % service.name)
                traceback.print_exc()
                continue

            if service.group == 'serial':
                for dev in rfcomm_list():
                    if dev["dst"] == device.Address and dev["state"] == "connected":
                        devname = _("Serial Port %s") % "rfcomm%d" % dev["id"]

                        item = create_menuitem(devname, get_x_icon("modem", 16))
                        manager_menu.Signals.Handle("gobject", item, "activate", manager_menu.on_disconnect, service, dev["id"])
                        items.append((item, 120))
                        item.show()

            if service.group == 'network' and service.connected:
                if "DhcpClient" in appl.QueryPlugins():
                    def renew(x):
                        appl.DhcpClient(Network(device.get_object_path()).get_properties()["Interface"])

                    item = create_menuitem(_("Renew IP Address"), get_icon("view-refresh", 16))
                    manager_menu.Signals.Handle("gobject", item, "activate", renew)
                    item.show()
                    items.append((item, 201))

        if self.has_dun and ('PPPSupport' in appl.QueryPlugins() or 'NMDUNSupport' in appl.QueryPlugins()):
            def open_settings(i, device):
                from blueman.gui.GsmSettings import GsmSettings

                d = GsmSettings(device.Address)
                d.run()
                d.destroy()

            item = Gtk.SeparatorMenuItem()
            item.show()
            serial_items.append(item)

            item = create_menuitem(_("Dialup Settings"), get_icon("gtk-preferences", 16))
            serial_items.append(item)
            item.show()
            manager_menu.Signals.Handle("gobject", item, "activate", open_settings, device)

        if len(serial_items) > 1:
            sub = Gtk.Menu()
            sub.show()

            item = create_menuitem(_("Serial Ports"), get_icon("modem", 16))
            item.set_submenu(sub)
            item.show()
            items.append((item, 90))

            for item in serial_items:
                sub.append(item)
        else:
            for item in serial_items:
                items.append((item, 80))

        return items
Ejemplo n.º 15
0
    def on_load(self, applet):
        self._any_network = Network()
        self._any_network.connect_signal('property-changed',
                                         self._on_network_prop_changed)

        self.quering = []