Exemple #1
0
    def _create_spice_session(self):
        self._spice_session = SpiceClientGLib.Session()
        SpiceClientGLib.set_session_option(self._spice_session)
        gtk_session = SpiceClientGtk.GtkSession.get(self._spice_session)
        gtk_session.set_property("auto-clipboard", True)

        GObject.GObject.connect(self._spice_session, "channel-new",
                                self._channel_new_cb)

        # Distros might have usb redirection compiled out, like OpenBSD
        # https://bugzilla.redhat.com/show_bug.cgi?id=1348479
        try:
            self._usbdev_manager = SpiceClientGLib.UsbDeviceManager.get(
                                        self._spice_session)
            self._usbdev_manager.connect("auto-connect-failed",
                                        self._usbdev_redirect_error)
            self._usbdev_manager.connect("device-error",
                                        self._usbdev_redirect_error)

            autoredir = self.config.get_auto_redirection()
            if autoredir:
                gtk_session.set_property("auto-usbredir", True)
        except:
            self._usbdev_manager = None
            logging.debug("Error initializing spice usb device manager",
                exc_info=True)
Exemple #2
0
    def _create_spice_session(self, conf={}):
        assert not self._spice_session
        self._spice_session = SpiceClientGLib.Session(read_only=False, **conf)
        SpiceClientGLib.set_session_option(self._spice_session)

        GObject.GObject.connect(self._spice_session, "channel-new",
                                self._channel_new_cb)
Exemple #3
0
 def open_fd(self, fd, password=None):
     self.spice_session = SpiceClientGLib.Session()
     if password:
         self.spice_session.set_property("password", password)
     GObject.GObject.connect(self.spice_session, "channel-new",
                             self._channel_new_cb)
     self.spice_session.open_fd(fd)
Exemple #4
0
    def open_host(self, ginfo, password=None):
        host, port = ginfo.get_conn_host()

        uri = "spice://"
        uri += str(host) + "?port=" + str(port)
        logging.debug("spice uri: %s", uri)

        self.spice_session = SpiceClientGLib.Session()
        self.spice_session.set_property("uri", uri)
        if password:
            self.spice_session.set_property("password", password)
        GObject.GObject.connect(self.spice_session, "channel-new",
                                self._channel_new_cb)
        self.spice_session.connect()
Exemple #5
0
    def _create_spice_session(self):
        self._spice_session = SpiceClientGLib.Session()
        SpiceClientGLib.set_session_option(self._spice_session)
        gtk_session = SpiceClientGtk.GtkSession.get(self._spice_session)
        gtk_session.set_property("auto-clipboard", True)

        GObject.GObject.connect(self._spice_session, "channel-new",
                                self._channel_new_cb)

        self._usbdev_manager = SpiceClientGLib.UsbDeviceManager.get(
            self._spice_session)
        self._usbdev_manager.connect("auto-connect-failed",
                                     self._usbdev_redirect_error)
        self._usbdev_manager.connect("device-error",
                                     self._usbdev_redirect_error)

        autoredir = self.config.get_auto_redirection()
        if autoredir:
            gtk_session.set_property("auto-usbredir", True)
Exemple #6
0
    def __init__(self, host, port, listen_port, overlay):
        self._mainloop = GLib.MainLoop()
        self._qxlinstance = None
        self._main_channel = None
        self._display_channel = None
        self._cursor_channel = None
        self._inputs_channel = None
        self._command_queue = Queue()
        self._cursor_set_command = None
        self._tablet_buttons_state = 0
        self._show_overlay = overlay

        # Client

        self._spice_session = SpiceClientGLib.Session(host=host, port=port)
        GObject.GObject.connect(self._spice_session, "channel-new",
                                self._channel_new_cb)
        self._spice_session.connect()

        # Server

        self._spiceserver = SpiceServerGLib.Server(
            noauth=True,
            port=listen_port,
            image_compression=SpiceServerGLib.ImageCompression.OFF,
            jpeg_compression=SpiceServerGLib.WANCompression.NEVER,
            zlib_glz_compression=SpiceServerGLib.WANCompression.NEVER)
        self._spiceserver.init()

        self._keyboardinstance = SpiceServerGLib.KeyboardInstance()
        self._keyboardinstance.connect("push-key", self._keyboard_push_key_cb)
        self._spiceserver.add_interface(self._keyboardinstance)

        self._tabletinstance = SpiceServerGLib.TabletInstance()
        self._tabletinstance.connect("position", self._tablet_position_cb)
        self._tabletinstance.connect("wheel", self._tablet_wheel_cb)
        self._tabletinstance.connect("buttons", self._tablet_buttons_cb)
        self._spiceserver.add_interface(self._tabletinstance)