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
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 = {}
def on_load(self, applet): self.Signals = SignalTracker() self.Signals.Handle('bluez', Network(), self.on_network_prop_changed, 'PropertyChanged', path_keyword='path')
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()
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 = []
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)
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()
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 = {}
def __init__(self, device, uuid): super(NetworkService, self).__init__(device, uuid) self._service = Network(device.get_object_path())
def renew(x): appl.DhcpClient('(s)', Network(device.get_object_path())["Interface"])
def renew(x): appl.DhcpClient(Network(device.get_object_path()).get_properties()["Interface"])
def __init__(self, device: Device, uuid: str): super().__init__(device, uuid) self._service = Network(obj_path=device.get_object_path())
def renew(_item: Gtk.MenuItem) -> None: appl.DhcpClient('(s)', Network(device.get_object_path())["Interface"])
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
def on_load(self, applet): self._any_network = Network() self._any_network.connect_signal('property-changed', self._on_network_prop_changed) self.quering = []