aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroot <root@YZenbook.local>2018-12-13 18:54:35 +0100
committerroot <root@YZenbook.local>2018-12-13 18:54:35 +0100
commit790b0c624000b023d18f32aaa3387de36e24a7ec (patch)
tree3893e44531c3db30ec8af3f18cbe50e7a7e7b560
parent67d4650d78c1270a02bcaae65a7005da080c48a8 (diff)
downloadisodumper-790b0c624000b023d18f32aaa3387de36e24a7ec.tar
isodumper-790b0c624000b023d18f32aaa3387de36e24a7ec.tar.gz
isodumper-790b0c624000b023d18f32aaa3387de36e24a7ec.tar.bz2
isodumper-790b0c624000b023d18f32aaa3387de36e24a7ec.tar.xz
isodumper-790b0c624000b023d18f32aaa3387de36e24a7ec.zip
Add operations for persistent partition creation
-rwxr-xr-xbackend/magiback17
-rwxr-xr-xbackend/raw_write.py7
-rwxr-xr-xlib/isodumper.py5
3 files changed, 28 insertions, 1 deletions
diff --git a/backend/magiback b/backend/magiback
index 904afcf..01a730c 100755
--- a/backend/magiback
+++ b/backend/magiback
@@ -36,6 +36,9 @@ class Isodumper(raw_write.Dumper):
<arg type='s' name='target' direction='in'/>
<arg type='s' name='source' direction='in'/>
</method>
+ <method name='do_persistence'>
+ <arg type='s' name='target' direction='in'/>
+ </method>
<method name='get_sum'>
<arg type='s' name='source' direction='in'/>
</method>
@@ -67,6 +70,9 @@ class Isodumper(raw_write.Dumper):
self.sum_check = ""
self.sum_check_searched = False
self.signature_checked = False
+ self.writing_perm = False
+ self.writing_target = ""
+
def do_write(self,source, target, size, dbus_context):
self.finished.clear()
@@ -74,10 +80,21 @@ class Isodumper(raw_write.Dumper):
self.thread = threading.Thread(target=self._do_write, args=(source, target, size, ))
self.thread.start()
logging.debug("Writing thread started")
+ self.writing_perm = True
+ self.writing_target = target
else:
self.return_message = "Access denied"
self.finished.set()
+ def do_persistence(self, target):
+ self.finished.clear()
+ if self.writing_perm and self.writing_target == target :
+ self._do_persistence(target)
+ else:
+ self.return_message = "Access denied"
+ self.writing_perm = False
+ self.writing_target = ""
+
@property
def done(self):
return self.finished.wait(1)
diff --git a/backend/raw_write.py b/backend/raw_write.py
index d9a5a19..b8f307d 100755
--- a/backend/raw_write.py
+++ b/backend/raw_write.py
@@ -30,7 +30,7 @@
import os
import io
import gettext
-from subprocess import call
+from subprocess import call, Popen, PIPE
import hashlib
import gnupg
@@ -221,6 +221,11 @@ class Dumper(object):
self.return_state = True
self.finished.set()
+ def _do_persistence(self, target):
+ p = Popen(["fdisk",target], stdin = PIPE)
+ p.communicate(input=b'n\np\n3\n\n\nw\n')
+
+
def __init__(self):
gettext.install('isodumper', localedir='/usr/share/locale')
# Operation running
diff --git a/lib/isodumper.py b/lib/isodumper.py
index 204450d..4d3ca4c 100755
--- a/lib/isodumper.py
+++ b/lib/isodumper.py
@@ -320,6 +320,11 @@ class IsoDumper(object):
self.progress.setEnabled()
self.progress.setValue(100)
self.logger(message)
+ # Add persistent partition if asked
+ if self.persistencecb.value():
+ self.logger(_("Adding persistent partition"))
+ iface.do_persistence(target)
+ self.logger(_("Added persistent partition"))
self.success()
else:
self.emergency(message)