aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG10
-rw-r--r--Makefile2
-rw-r--r--README.md9
-rwxr-xr-xbackend/raw_write.py12
-rwxr-xr-xlib/isodumper.py48
-rw-r--r--po/el.po22
6 files changed, 73 insertions, 30 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 295d5f5..5d54730 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,10 +1,14 @@
The modifications are:
+IsoDumper 1.31
+--------------
+ - Fix display of warning
-IsoDumper 1.29
+IsoDumper 1.30
--------------
- - Fix logging when ~/.isodumper doesn't exist
+ - Verify signatures also when they are detached (mga#27667)
+ - Display warning instead of success when sums or signatures doesn't match (mga#27667)
-IsoDumper 1.28
+IsoDumper 1.29
--------------
- Fix creating ~/.isodumper for logging when not yet existing
diff --git a/Makefile b/Makefile
index f91d325..681c523 100644
--- a/Makefile
+++ b/Makefile
@@ -33,7 +33,7 @@ DBUSDIR=$(SYSCONFDIR)/dbus-1
SYSTEMDCONFDIR=$(LIBDIR)/systemd/system/
PACKAGE = isodumper
-VERSION = 1.29
+VERSION = 1.31
GITPATH = git://git.mageia.org/software/isodumper
all: version dirs pofiles
diff --git a/README.md b/README.md
index 7186356..631ac27 100644
--- a/README.md
+++ b/README.md
@@ -19,12 +19,19 @@ Requirements
- python3-parted
- python3-pydbus
- udisks2
-- libyui and declanation of ncurses, gtk or Qt
+- libyui and declanation of ncurses, gtk or Qt, python bindings
- libyui-mga
- cryptsetup
- fdisk
- e2fsprogs
+- python3-gnupg
+- python3-manatools
+Some explanations
+-----------------
+The application comprises two parts: a GUI and a backend, called magiback.
+The GUI run in user mode, and call backend feature over DBUS. The backend run as deamon using systemd service and is launched as needed. The authorization is called to run the backend.
+Logs of the backend are stored in /var/log/magiback.log
License
--------
diff --git a/backend/raw_write.py b/backend/raw_write.py
index 154b2ad..fefa9b1 100755
--- a/backend/raw_write.py
+++ b/backend/raw_write.py
@@ -119,14 +119,15 @@ class Dumper(object):
return
ifc.close()
self._progress = 100
- self.finished.set()
self.return_state = True
self.return_message = _("Writing terminated")
logging.debug(self.return_message)
+ self.finished.set()
return
def _get_sum(self, source):
self.return_state = False
+ self.signature_checked = FalseS
logging.debug("Starting getting sum")
# Check if the sum file has a valid signature
gpg = gnupg.GPG()
@@ -174,7 +175,6 @@ class Dumper(object):
def _check_write(self, target, source):
logging.debug("Start checking")
- self.return_state = False
self.return_message = ""
b = os.path.getsize(source)
# Compute the sum from the written device
@@ -198,30 +198,32 @@ class Dumper(object):
sha512func.update(block)
sha512sumcalc=sha512func.hexdigest().upper()
f.close()
+ self.return_state = True
if self.signature_found and not self.signature_checked:
#, keep the pourcent, this is the place for source file name
self.return_message = _('Invalid signature for %s')%self.source_file
+ self.return_state = False
if (self.sum_check == "") : # Can't get stored sum
self.return_message += _('SHA3 sum: {}').format(sha512sumcalc)
# compare the sums
elif (sha512sumcalc == self.sum_check) :
- if self.signature_checked:
+ if self.signature_checked and self.signature_found:
#, keep the bracket, this is the place for sum type
self.return_message +="\n" + _("The {} sum check is OK and the sum is signed").format(self.sum_type)
else :
if self.signature_found:
self.return_message +="\n" + _("The signature of the sum is false !").format(self.sum_type)
+ self.return_state = False
else:
#, keep the bracket, this is the place for sum type
self.return_message +="\n" + _("The {} sum check is OK but the signature can't be found").format(self.sum_type)
else:
self.return_message +="\n" + _("/!\\The computed and stored sums don't match")
+ self.return_state = False
#except:
#pass
self._progress = 100
-
logging.info(self.return_message)
- self.return_state = True
self.finished.set()
def udev_wait(self, operation):
diff --git a/lib/isodumper.py b/lib/isodumper.py
index 12b3eb5..2f58d6b 100755
--- a/lib/isodumper.py
+++ b/lib/isodumper.py
@@ -25,11 +25,9 @@
# Requires python3-parted
-# ensure we're using the latest build, if called from our build environment
+
import sys
import importlib
-import logging
-
try:
from isodumper import version
except:
@@ -49,6 +47,10 @@ import gettext
from subprocess import Popen, PIPE
from pydbus import SystemBus
+import logging
+import threading
+from gi.repository import GLib
+from queue import SimpleQueue
import psutil
import manatools.args as args
import manatools.ui.common as common
@@ -163,7 +165,7 @@ class ParseCLI(args.AppArgs):
class IsoDumper(basedialog.BaseDialog):
- def get_devices(self):
+ def get_devices(self, selected=None):
self.list = self.u.find_devices()
while len(self.list) == 0:
if self.nodevDialog():
@@ -174,7 +176,9 @@ class IsoDumper(basedialog.BaseDialog):
if len(self.list) > 0:
for name, path, size in self.list:
if size != 0:
- self.devicelist.addItem(str(name + ' (' + path.lstrip() + ') ' + self.sizeof_fmt(size)), False)
+ label = str(name + ' (' + path.lstrip() + ') ' + self.sizeof_fmt(size))
+ sel = (label == selected) if selected else False
+ self.devicelist.addItem(label, sel)
return True
def active_signal(self):
@@ -213,10 +217,19 @@ class IsoDumper(basedialog.BaseDialog):
self.dialog.recalcLayout()
self.restore()
+<<<<<<< HEAD
def refresh_signal(self, device, params):
print("Refresh ", device)
self.devicelist.deleteAllItems()
self.get_devices()
+=======
+ def update_list_on_event(self):
+ selitem = self.devicelist.selectedItem().label()
+ self.devicelist.deleteAllItems()
+ self.get_devices(selected = selitem)
+ if self.devicelist.selectedItem().label() != selitem:
+ self.restore()
+>>>>>>> master
self.dialog.recalcLayout()
def device_selected(self):
@@ -435,13 +448,13 @@ class IsoDumper(basedialog.BaseDialog):
self.dialog.pollEvent()
# Checking
iface.check_write(target, source)
- progress = iface.progress
+ progress = 0
while progress < 100:
- progress = iface.progress
self.progress.setValue(progress)
self.dialog.pollEvent()
time.sleep(.5)
- success, message = iface.end()
+ progress = iface.progress
+ nowarning, message = iface.end()
self.progress.setEnabled()
self.logger(message)
logging.info(message)
@@ -485,7 +498,10 @@ class IsoDumper(basedialog.BaseDialog):
self.udev_wait(_("unmounting"))
if success:
self.u.eject(target)
- self.success()
+ if nowarning :
+ self.success()
+ else:
+ self.warn()
else:
self.emergency(message)
self.restore()
@@ -507,6 +523,16 @@ class IsoDumper(basedialog.BaseDialog):
if self.ask_OK(info):
return
+ def warn(self):
+ self.operation = False
+ self.final_unsensitive()
+ info = Info(_("Warning"), True, _("The operation completed, but with anomalies.\n\
+ Check carefully the messages in log view.\n\
+ You are free to unplug it now, a logfile \n\
+(/home/-user- or /root)/.isodumper/isodumper.log will be saved when\n\
+ you close the application."))
+ if self.ask_OK(info):
+ return
def confirm_close(self, *args):
if not self.operation: # no writing , backup nor format running
self.close()
@@ -546,6 +572,8 @@ class IsoDumper(basedialog.BaseDialog):
def close(self):
self.dialog.destroy()
self.dialog = None
+ self.glib_loop.quit()
+ self.glib_thread.join()
def logger(self, text):
self.logview.appendLines(text + "\n")
@@ -741,6 +769,7 @@ exFAT, NTFS or ext. You can specify a volume name and the format in a new dialog
self.active_signal()
self.device_selected()
self.dialog.recalcLayout()
+
self.uEventQueue = SimpleQueue()
self.glib_loop = GLib.MainLoop()
self.glib_thread = threading.Thread(target=self.glib_mainloop, args=(self.glib_loop,))
@@ -879,6 +908,7 @@ exFAT, NTFS or ext. You can specify a volume name and the format in a new dialog
self._running = True
self.timeout = 100
+
try:
self._handleEvents()
except Exception:
diff --git a/po/el.po b/po/el.po
index ecf44b0..6bb8013 100644
--- a/po/el.po
+++ b/po/el.po
@@ -8,18 +8,18 @@
# Dimitrios Glentadakis <dglent@free.fr>, 2018
# dtsiamasiotis <dtsiamasiotis@gmail.com>, 2013-2014
# FIRST AUTHOR <EMAIL@ADDRESS>, 2008
-# Δημήτρης Σπέντζος <jimspentzos2000@gmail.com>, 2014
+# Dimitris Spentzos <jimspentzos2000@gmail.com>, 2014
# Jim Spentzos, 2014
-# Δημήτρης Σπέντζος <jimspentzos2000@gmail.com>, 2014
-# Δημήτρης Σπέντζος <jimspentzos2000@gmail.com>, 2014
-# Δημήτρης Σπέντζος <jimspentzos2000@gmail.com>, 2014
+# Dimitris Spentzos <jimspentzos2000@gmail.com>, 2014
+# Dimitris Spentzos <jimspentzos2000@gmail.com>, 2014
+# Dimitris Spentzos <jimspentzos2000@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Mageia\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-30 12:08+0100\n"
-"PO-Revision-Date: 2020-10-30 11:19+0000\n"
-"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"PO-Revision-Date: 2020-12-21 05:27+0000\n"
+"Last-Translator: Dimitrios Glentadakis <dglent@free.fr>\n"
"Language-Team: Greek (http://www.transifex.com/MageiaLinux/mageia/language/"
"el/)\n"
"Language: el\n"
@@ -92,19 +92,19 @@ msgstr "Η μόνιμη κατάτμηση δημιουργήθηκε"
#: backend/raw_write.py:281
msgid "formatting partition"
-msgstr ""
+msgstr "μορφοποίηση κατάτμησης"
#: backend/raw_write.py:329
msgid "opening encrypted partition"
-msgstr ""
+msgstr "άνοιγμα κρυπτογραφημένης κατάτμησης"
#: backend/raw_write.py:352
msgid "formatting encrypted partition"
-msgstr ""
+msgstr "μορφοποίηση κρυπτογραφημένης κατάτμησης"
#: backend/raw_write.py:374
msgid "closing encrypted partition"
-msgstr ""
+msgstr "κλείσιμο κρυπτογραφημένης κατάτμησης"
#: lib/isodumper.py:208
msgid "Target Device: "
@@ -161,7 +161,7 @@ msgstr "Γράφτηκε: {}%"
#: lib/isodumper.py:279 lib/isodumper.py:375 lib/isodumper.py:437
msgid "unmounting"
-msgstr ""
+msgstr "αποπροσάρτηση"
#: lib/isodumper.py:307
msgid "Backup confirmation"