Removed ability to encrypt documents.

This commit is contained in:
Jonas Winkler 2020-11-25 20:22:56 +01:00
parent 97639508cb
commit 3b38ac0f9b
2 changed files with 5 additions and 63 deletions

View File

@ -353,39 +353,23 @@ Documents can be stored in Paperless using GnuPG encryption.
Consider running paperless on an encrypted filesystem instead, which will then Consider running paperless on an encrypted filesystem instead, which will then
at least provide security against physical hardware theft. at least provide security against physical hardware theft.
.. code::
change_storage_type [--passphrase PASSPHRASE] {gpg,unencrypted} {gpg,unencrypted}
positional arguments:
{gpg,unencrypted} The state you want to change your documents from
{gpg,unencrypted} The state you want to change your documents to
optional arguments:
--passphrase PASSPHRASE
Enabling encryption Enabling encryption
------------------- -------------------
Basic usage to enable encryption of your document store (**USE A MORE SECURE PASSPHRASE**): Enabling encryption is no longer supported.
(Note: If ``PAPERLESS_PASSPHRASE`` isn't set already, you need to specify it here)
.. code::
change_storage_type [--passphrase SECR3TP4SSPHRA$E] unencrypted gpg
Disabling encryption Disabling encryption
-------------------- --------------------
Basic usage to enable encryption of your document store: Basic usage to disable encryption of your document store:
(Note: Again, if ``PAPERLESS_PASSPHRASE`` isn't set already, you need to specify it here) (Note: If ``PAPERLESS_PASSPHRASE`` isn't set already, you need to specify it here)
.. code:: .. code::
change_storage_type [--passphrase SECR3TP4SSPHRA$E] gpg unencrypted decrypt_documents [--passphrase SECR3TP4SSPHRA$E]
.. _Pipenv: https://pipenv.pypa.io/en/latest/ .. _Pipenv: https://pipenv.pypa.io/en/latest/

View File

@ -17,16 +17,6 @@ class Command(BaseCommand):
def add_arguments(self, parser): def add_arguments(self, parser):
parser.add_argument(
"from",
choices=("gpg", "unencrypted"),
help="The state you want to change your documents from"
)
parser.add_argument(
"to",
choices=("gpg", "unencrypted"),
help="The state you want to change your documents to"
)
parser.add_argument( parser.add_argument(
"--passphrase", "--passphrase",
help="If PAPERLESS_PASSPHRASE isn't set already, you need to " help="If PAPERLESS_PASSPHRASE isn't set already, you need to "
@ -50,11 +40,6 @@ class Command(BaseCommand):
except KeyboardInterrupt: except KeyboardInterrupt:
return return
if options["from"] == options["to"]:
raise CommandError(
'The "from" and "to" values can\'t be the same.'
)
passphrase = options["passphrase"] or settings.PASSPHRASE passphrase = options["passphrase"] or settings.PASSPHRASE
if not passphrase: if not passphrase:
raise CommandError( raise CommandError(
@ -62,10 +47,7 @@ class Command(BaseCommand):
"by declaring it in your environment or your config." "by declaring it in your environment or your config."
) )
if options["from"] == "gpg" and options["to"] == "unencrypted": self.__gpg_to_unencrypted(passphrase)
self.__gpg_to_unencrypted(passphrase)
elif options["from"] == "unencrypted" and options["to"] == "gpg":
self.__unencrypted_to_gpg(passphrase)
@staticmethod @staticmethod
def __gpg_to_unencrypted(passphrase): def __gpg_to_unencrypted(passphrase):
@ -94,27 +76,3 @@ class Command(BaseCommand):
for path in old_paths: for path in old_paths:
os.unlink(path) os.unlink(path)
@staticmethod
def __unencrypted_to_gpg(passphrase):
unencrypted_files = Document.objects.filter(
storage_type=Document.STORAGE_TYPE_UNENCRYPTED)
for document in unencrypted_files:
print(coloured("Encrypting {}".format(document), "green"))
old_paths = [document.source_path, document.thumbnail_path]
with open(document.source_path, "rb") as raw_document:
with open(document.thumbnail_path, "rb") as raw_thumb:
document.storage_type = Document.STORAGE_TYPE_GPG
with open(document.source_path, "wb") as f:
f.write(GnuPG.encrypted(raw_document, passphrase))
with open(document.thumbnail_path, "wb") as f:
f.write(GnuPG.encrypted(raw_thumb, passphrase))
document.save(update_fields=("storage_type",))
for path in old_paths:
os.unlink(path)