aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPapoteur <papoteur@mageia.org>2025-11-08 12:48:53 +0100
committerPapoteur <papoteur@mageia.org>2025-12-19 18:53:38 +0100
commitdf07d08294994a0e9cc066df5fe8b13c772ed5bf (patch)
tree70dbb325d830aec6b4fc7265df86313130fb905a
parent707709d26dd2dd368707606be6f86e8acc590070 (diff)
downloadisodumper-df07d08294994a0e9cc066df5fe8b13c772ed5bf.tar
isodumper-df07d08294994a0e9cc066df5fe8b13c772ed5bf.tar.gz
isodumper-df07d08294994a0e9cc066df5fe8b13c772ed5bf.tar.bz2
isodumper-df07d08294994a0e9cc066df5fe8b13c772ed5bf.tar.xz
isodumper-df07d08294994a0e9cc066df5fe8b13c772ed5bf.zip
refact: use rename _do_persistence feature in magiback and use it for format operations.
-rwxr-xr-xbackend/magiback8
-rwxr-xr-xbackend/raw_write.py12
-rwxr-xr-xlib/isodumper.py58
3 files changed, 55 insertions, 23 deletions
diff --git a/backend/magiback b/backend/magiback
index 5c55307..d67c11d 100755
--- a/backend/magiback
+++ b/backend/magiback
@@ -103,14 +103,14 @@ class Isodumper(raw_write.Dumper):
logging.debug(self.return_message)
self.finished.set()
- def do_persistence(self, target, label, key, fs_type):
+ def do_format(self, target, label, key, fs_type, order):
self.finished.clear()
if self.writing_perm and self.writing_target == target:
- self.thread = threading.Thread(target=self._do_persistence, args=(target, label, key, fs_type))
+ self.thread = threading.Thread(target=self._do_format, args=(target, label, key, fs_type, order=order))
self.thread.start()
- logging.info("Persistence thread started")
+ logging.info("Partitioning thread started")
else:
- self.return_message = "Persistence: Access denied"
+ self.return_message = "Partitioning: Access denied"
logging.info(self.return_message)
self.finished.set()
self.writing_perm = False
diff --git a/backend/raw_write.py b/backend/raw_write.py
index fe21046..7a7ae18 100755
--- a/backend/raw_write.py
+++ b/backend/raw_write.py
@@ -198,7 +198,7 @@ class Dumper(object):
return False
return True
- def _do_persistence(self, target, label, key, fs_type):
+ def _do_format(self, target, label, key, fs_type, order=3):
logging.debug("Start doing persistence partition")
p = Popen(["fdisk", target], stdin=PIPE, stderr=PIPE)
# commands:
@@ -208,7 +208,7 @@ class Dumper(object):
# default first sector
# default last sector
# w : write and quit
- outs, errs = p.communicate(input=b"n\np\n3\n\n\nw\n")
+ outs, errs = p.communicate(input=b"n\np\n" + bytes(order) + b"\n\n\nw\n")
working = True
while working:
time.sleep(0.5)
@@ -266,7 +266,7 @@ class Dumper(object):
if key == "":
# example mkfs.ext4 -L mgalive-persist /dev/sdf3
self.return_message = _("Additional partition added. Formatting...")
- path = target + "3"
+ path = target + str(order)
# Format partition according to the fs_type specified
fs_type = fs_type.lower()
if fs_type == "fat32":
@@ -314,9 +314,9 @@ class Dumper(object):
else:
# example cryptsetup luksFormat /dev/sdb3
self.return_message = _("Persistent partition added. Encrypting...")
- base_target = os.path.basename(target) + "3"
+ base_target = os.path.basename(target) + str(order)
process = Popen(
- ["cryptsetup", "luksFormat", "-q", target + "3", "-d", "-"],
+ ["cryptsetup", "luksFormat", "-q", target + str(order), "-d", "-"],
stdin=PIPE,
stderr=PIPE,
)
@@ -349,7 +349,7 @@ class Dumper(object):
[
"cryptsetup",
"luksOpen",
- target + "3",
+ target + str(order),
"crypt_" + base_target,
"-d",
"-",
diff --git a/lib/isodumper.py b/lib/isodumper.py
index e0dc2e3..3bc9f4f 100755
--- a/lib/isodumper.py
+++ b/lib/isodumper.py
@@ -458,6 +458,7 @@ class IsoDumper(basedialog.BaseDialog):
def do_format(self):
# code, format_type, name = self.ask_format()
+ self.init_iface()
if self.partition_cb.value() != "":
self.operation = True
format_type = list(self.format_type.keys())[
@@ -480,16 +481,42 @@ class IsoDumper(basedialog.BaseDialog):
name = name.upper()[:11]
elif format_type == "ntfs":
name = name[:32]
- rc = self.raw_format(target, format_type, name)
- self.operation = False
- if rc == 0:
- return True, _("The device was formatted successfully.")
- elif rc == 5:
- return False, _("An error occurred while creating a partition.")
- elif rc == 127:
- return False, _("Authentication error.")
+ # rc = self.raw_format(target, format_type, name)
+ print(
+ target,
+ name,
+ self.cryptkey.value(),
+ self.partition_cb.value(),
+ "1")
+ self.iface.do_format(
+ target,
+ name,
+ self.cryptkey.value(),
+ self.partition_cb.value(),
+ "1"
+ )
+ while not self.iface.done:
+ progress = self.iface.progress
+ self.progress.setValue(progress)
+ self.dialog.pollEvent()
+ time.sleep(0.5)
+ if self.iface.state:
+ message = _("The device was formatted successfully.")
+ rc = True
else:
- return False, _("An error {} occurred.".format(rc))
+ message = _("An error occurred while creating a partition.")
+ self.logger.warning(self.iface.message)
+ nowarning = False
+ rc = False
+ self.logger.warning(message)
+ self.operation = False
+ return rc, message
+ # elif rc == 5:
+ # return False, _("An error occurred while creating a partition.")
+ # elif rc == 127:
+ # return False, _("Authentication error.")
+ # else:
+ # return False, _("An error {} occurred.".format(rc))
def initial_state(self):
self.update_list()
@@ -694,11 +721,12 @@ class IsoDumper(basedialog.BaseDialog):
)
self.logger.warning(message)
else:
- self.iface.do_persistence(
+ self.iface.do_format(
target,
self.partition_label.value(),
self.cryptkey.value(),
- self.partition_cb.value()
+ self.partition_cb.value(),
+ "3"
)
while not self.iface.done:
progress = self.iface.progress
@@ -720,8 +748,12 @@ class IsoDumper(basedialog.BaseDialog):
self.logger.error(self.iface.message)
nowarning = False
else:
- self.iface.do_persistence(
- target, self.partition_label.value(), "", self.partition_cb.value()
+ self.iface.do_format(
+ target,
+ self.partition_label.value(),
+ "",
+ self.partition_cb.value(),
+ "3"
)
while not self.iface.done:
progress = self.iface.progress