diff options
| author | Papoteur <papoteur@mageia.org> | 2025-11-08 12:48:53 +0100 |
|---|---|---|
| committer | Papoteur <papoteur@mageia.org> | 2025-12-19 18:53:38 +0100 |
| commit | df07d08294994a0e9cc066df5fe8b13c772ed5bf (patch) | |
| tree | 70dbb325d830aec6b4fc7265df86313130fb905a | |
| parent | 707709d26dd2dd368707606be6f86e8acc590070 (diff) | |
| download | isodumper-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-x | backend/magiback | 8 | ||||
| -rwxr-xr-x | backend/raw_write.py | 12 | ||||
| -rwxr-xr-x | lib/isodumper.py | 58 |
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 |
