added python version checks

added startup test to CryptoBox
integrate CryptoBoxRootActions into CryptoBox (see example-super.tab for details)
implemented "mount" and "umount" in CryptoBoxRootActions
adapted CryptoBoxRootActions checks to 'super'
This commit is contained in:
lars 2006-08-23 13:27:25 +00:00
parent accbb7c515
commit 84028f4a92
9 changed files with 263 additions and 96 deletions

80
pythonrewrite/bin2/CryptoBoxContainer.py Normal file → Executable file
View file

@ -1,8 +1,17 @@
from CryptoBoxLogger import CryptoBoxLogger
try:
import subprocess
except:
print "Couldn't import 'subprocess'. You need a python version >= 2.4"
#!/usr/bin/env python2.4
"""
TODO: implement "getCapacity"
"""
# check python version
import sys
(ver_major, ver_minor, ver_sub, ver_desc, ver_subsub) = sys.version_info
if (ver_major < 2) or ((ver_major == 2) and (ver_minor < 4)):
sys.stderr.write("You need a python version >= 2.4\nCurrent version is:\n %s\n" % sys.version)
sys.exit(1)
import subprocess
import os
import re
import logging
@ -114,10 +123,12 @@ class CryptoBoxContainer:
stdout = subprocess.PIPE,
stderr = subprocess.PIPE,
args = [
self.Progs["cryptsetup"],
"--batch-mode",
self.Progs["super"],
self.Progs["CryptoBoxRootActions"],
"cryptsetup",
"luksAddKey",
self.device])
self.device,
"--batch-mode"])
proc.stdin.write("%s\n%s" % (oldpw, newpw))
(output, errout) = proc.communicate()
if proc.returncode != 0:
@ -299,11 +310,13 @@ class CryptoBoxContainer:
stdout = devnull,
stderr = subprocess.PIPE,
args = [
self.Progs["cryptsetup"],
self.Progs["super"],
self.Progs["CryptoBoxRootActions"],
"cryptsetup",
"luksOpen",
"--batch-mode",
self.device,
self.name])
self.name,
"--batch-mode"])
proc.stdin.write(password)
(output, errout) = proc.communicate()
if proc.returncode != 0:
@ -316,7 +329,9 @@ class CryptoBoxContainer:
stdout = devnull,
stderr = subprocess.PIPE,
args = [
self.Progs["mount"],
self.Progs["super"],
self.Progs["CryptoBoxRootActions"],
"mount",
os.path.join(self.__dmDir, self.name),
self.__getMountPoint()])
proc.wait()
@ -340,7 +355,11 @@ class CryptoBoxContainer:
stdin = None,
stdout = devnull,
stderr = subprocess.PIPE,
args = [self.Progs["umount"], "-l", self.__getMountPoint()])
args = [
self.Progs["super"],
self.Progs["CryptoBoxRootActions"],
"umount",
self.__getMountPoint()])
proc.wait()
if proc.returncode != 0:
errorMsg = "Could not umount the filesystem: %s" % (proc.stderr.read().strip(), )
@ -353,10 +372,12 @@ class CryptoBoxContainer:
stdout = devnull,
stderr = subprocess.PIPE,
args = [
self.Progs["cryptsetup"],
"--batch-mode",
self.Progs["super"],
self.Progs["CryptoBoxRootActions"],
"cryptsetup",
"luksClose",
self.name])
self.name,
"--batch-mode"])
proc.wait()
if proc.returncode != 0:
errorMsg = "Could not remove the luks mapping: %s" % (proc.stderr.read().strip(), )
@ -386,7 +407,9 @@ class CryptoBoxContainer:
stdout = devnull,
stderr = subprocess.PIPE,
args = [
self.Progs["mount"],
self.Progs["super"],
self.Progs["CryptoBoxRootActions"],
"mount",
self.device,
self.__getMountPoint()])
proc.wait()
@ -411,8 +434,9 @@ class CryptoBoxContainer:
stdout = devnull,
stderr = subprocess.PIPE,
args = [
self.Progs["umount"],
"-l",
self.Progs["super"],
self.Progs["CryptoBoxRootActions"],
"umount",
self.__getMountPoint()])
proc.wait()
if proc.returncode != 0:
@ -469,12 +493,14 @@ class CryptoBoxContainer:
stdout = devnull,
stderr = subprocess.PIPE,
args = [
self.Progs["cryptsetup"],
self.Progs["super"],
self.Progs["CryptoBoxRootActions"],
"cryptsetup",
"luksFormat",
self.device,
"--batch-mode",
"--cipher", self.cbox.cbxPrefs["System"]["DefaultCipher"],
"--iter-time", "2000",
"luksFormat",
self.device])
"--iter-time", "2000"])
proc.stdin.write(password)
(output, errout) = proc.communicate()
if proc.returncode != 0:
@ -488,11 +514,13 @@ class CryptoBoxContainer:
stdout = devnull,
stderr = subprocess.PIPE,
args = [
self.Progs["cryptsetup"],
"--batch-mode",
self.Progs["super"],
self.Progs["CryptoBoxRootActions"],
"cryptsetup",
"luksOpen",
self.device,
self.name])
self.name,
"--batch-mode"])
proc.stdin.write(password)
(output, errout) = proc.communicate()
if proc.returncode != 0: