Esempio n. 1
0
        def mount_cb(gio_volume: Gio.Volume, result: Gio.AsyncResult):
            logger.debug("in mount_cb")
            self.hide_spinner()
            try:
                gio_volume.mount_finish(result)
            except GLib.Error as e:
                if e.code == Gio.IOErrorEnum.FAILED_HANDLED:
                    logger.warning("Couldn't unlock volume: %s:", e.message)
                    return

                logger.exception(e)

                if "No key available with this passphrase" in e.message or \
                   "No device header detected with this passphrase" in e.message:
                    title = _("Wrong passphrase or parameters")
                else:
                    title = _("Error unlocking volume")

                # Translators: Don't translate {volume_name} or {error_message},
                # they are placeholder and will be replaced.
                body = _("Couldn't unlock volume {volume_name}:\n{error_message}".format(volume_name=self.name, error_message=e.message))
                self.manager.show_warning(title, body)
                return
            finally:
                self.manager.mount_op_lock.release()

            if open_after_unlock:
                # The GVolume now changed from the loop device to the dm device, so
                # by also updating the udisks object we change this volume from the
                # crypto backing loop device to the unlocked device-mapper device,
                # which we can then open
                self.udisks_object = self._find_udisks_object()
                self.open()
Esempio n. 2
0
 def on_volume_added(self, volume_monitor: Gio.VolumeMonitor,
                     gio_volume: Gio.Volume):
     logger.debug(
         "in on_volume_added. volume: %s",
         gio_volume.get_identifier(Gio.VOLUME_IDENTIFIER_KIND_UNIX_DEVICE))
     volume = Volume(self, gio_volume)
     if volume.is_tcrypt:
         self.add_volume(volume)
Esempio n. 3
0
 def on_volume_changed(self, volume_monitor: Gio.VolumeMonitor,
                       gio_volume: Gio.Volume):
     logger.debug(
         "in on_volume_changed. volume: %s",
         gio_volume.get_identifier(Gio.VOLUME_IDENTIFIER_KIND_UNIX_DEVICE))
     try:
         volume = Volume(self, gio_volume)
         if volume.is_tcrypt:
             self.update_volume(volume)
     except UdisksObjectNotFoundError:
         self.remove_volume(Volume(self, gio_volume, with_udisks=False))
Esempio n. 4
0
 def on_volume_removed(self, volume_monitor: Gio.VolumeMonitor,
                       gio_volume: Gio.Volume):
     logger.debug(
         "in on_volume_removed. volume: %s",
         gio_volume.get_identifier(Gio.VOLUME_IDENTIFIER_KIND_UNIX_DEVICE))
     self.remove_volume(Volume(self, gio_volume, with_udisks=False))