cryptonas/plugins/volume_chpasswd/volume_chpasswd.py

54 lines
1.6 KiB
Python
Raw Normal View History

import cryptobox.plugins.base
from cryptobox.core.exceptions import *
class volume_chpasswd(cryptobox.plugins.base.CryptoBoxPlugin):
pluginCapabilities = [ "volume" ]
pluginVisibility = [ "properties" ]
requestAuth = False
rank = 70
def doAction(self, store=None, old_pw=None, new_pw=None, new_pw2=None):
self.container = self.cbox.getContainer(self.device)
if not self.container:
return None
elif store == "change_pw":
return self.__changePassword(old_pw, new_pw, new_pw2)
elif not store:
return "volume_chpasswd"
else:
self.cbox.log.info("plugin 'volume_chpasswd' - unknown action: %s" % store)
return "volume_chpasswd"
def getStatus(self):
return "TODO"
def __changePassword(self, old_pw, new_pw, new_pw2):
if not old_pw:
self.hdf["Data.Warning"] = "EmptyPassword"
elif not new_pw:
self.hdf["Data.Warning"] = "EmptyNewPassword"
elif new_pw != new_pw2:
self.hdf["Data.Warning"] = "DifferentPasswords"
elif old_pw == new_pw:
## do nothing
pass
else:
try:
self.container.changePassword(old_pw, new_pw)
except CBInvalidType, errMsg:
self.cbox.log.info("plugin 'volume_chpasswd' - cannot change passphrase for non-encrypted container (%s): %s" % (self.device, errMsg))
except CBVolumeIsActive:
self.hdf["Data.Warning"] = "VolumeMayNotBeMounted"
except CBChangePasswordError, errMsg:
self.cbox.log.warn("plugin 'volume_chpasswd' - cannot change password for device (%s): %s" % (self.device, errMsg))
self.hdf["Data.Warning"] = "Plugins.volume_chpasswd.PasswordChange"
else:
self.hdf["Data.Success"] = "Plugins.volume_chpasswd.PasswordChange"
return "volume_chpasswd"