cryptonas/plugins/volume_chpasswd/volume_chpasswd.py
lars 405f6b90fa improved detection of 'active' plugin for marking in the main menu
plugin plugin_manager: prevent browser from caching repeatitive actions
plugin plugin_manager: add support for properties/volume visibility
plugins: moved message handling to central header file (templates/header.cs)
splitted 'volume_props' into 'volume_rename' and 'volume_chpasswd'
volume_props: turned into a container for small property changes
renamed 'format_fs' to 'volume_format_fs'
moved inclusion of 'show_volume_[header|footer].cs' to central header file
2006-11-13 16:11:07 +00:00

54 lines
1.6 KiB
Python

import CryptoBoxPlugin
from CryptoBoxExceptions import *
class volume_chpasswd(CryptoBoxPlugin.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"