A MkDocs plugin that encrypt/decrypt markdown content with AES
Project description
mkdocs-encryptcontent-plugin
This plugin allows you to have password protected articles and pages in MKdocs. The content is encrypted with AES-256 in Python using PyCrypto, and decrypted in the browser with Crypto-JS. It has been tested in Python 2.7 and Python 3.5.
An mkdocs version of the plugin Encrypt content for Pelican.
usecase
I want to be able to protect my articles with password. And I would like this protection to be as granular as possible.
It is possible to define a password to protect each article independently or a global password to encrypt all of them.
If a global password exists, all articles and pages except the homepage are encrypted with this password.
If a password is defined in an article or a page, it is always used even if a global password exists.
If a password is defined as an empty character string, the page is not encrypted.
Installation
Install the package with pip:
pip install -r requirements.txt
pip install mkdocs-encryptcontent-plugin
Install the package from source with pip:
cd mkdocs-encryptcontent-plugin/
python3 setup.py sdist bdist_wheel
pip3 install dist/mkdocs_encryptcontent_plugin-0.0.1-py3-none-any.whl
Enable the plugin in your mkdocs.yml
:
plugins:
- search
- encryptcontent: {}
You are then able to use the meta tag password: secret_password
in your markdown files to protect them.
Note: If you have no
plugins
entry in your config file yet, you'll likely also want to add thesearch
plugin. MkDocs enables it by default if there is noplugins
entry set, but now you have to enable it explicitly.
Using global password protection
Add global_password: your_password
in plugin config variable, to protect by default your articles with this password
plugins:
- search
- encryptcontent:
global_password: 'your_password'
If a password is defined in an article, it will ALWAYS overwrite the global password.
NOTE Keep in mind that if the
password:
tag exists without value in an article, it will not be protected !
Features
HighlightJS support
If your theme use HighlightJS module to improve color, and highlightjs: true
is set in your mkdocs.yml
, this plugin enable this part of the jinja template to force reload heiglighting in decrypted content.
{% if hljs %}
document.getElementById("mkdocs-decrypted-content").querySelectorAll('pre code').forEach((block) => {
hljs.highlightBlock(block);
});
{% endif %}
Testing
virtualenv venv -p python3.5
source venv/bin/activate
python setup.py test
pytest test
Contributing
From reporting a bug to submitting a pull request: every contribution is appreciated and welcome. Report bugs, ask questions and request features using Github issues. If you want to contribute to the code of this project, please read the Contribution Guidelines.
Contributors
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for mkdocs-encryptcontent-plugin-0.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f268f82546f33c4cb2f2a5cafb883aabc77d912b9ebcf66d5bff2811a4fec680 |
|
MD5 | 3067792a182723026ee01b7deac3bc7f |
|
BLAKE2b-256 | f0b94d92d2b70a5f41d45cc56e08c329520dc46ea2a2a608d508ee346261ddec |
Hashes for mkdocs_encryptcontent_plugin-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92e0f388ee6b913c9649b0ce21c87b8f5049ac200c1969c486a4c82f09de817c |
|
MD5 | 87d3aa8af51fa37d146a00a2b2942df4 |
|
BLAKE2b-256 | b9d4faedc2d886bc3b121cd45325549a9d10c1fbb79edea337f57cd4a270d2d6 |