SecureData
A library that allows for easy reading/writing of settings across repositories, as well as mail and logging.
Author
Features
- Get/Set data within a JSON file in the location of your choice
- Sync with cloud providers using custom commands
- Log to a file/directory of your choice without having to configure
loggereach time - Send/receive mail
Structure
- Data is stored in
settings.json - Logs are written to
/path/to/securedata/logby default
Installation and Setup
python3 -m pip install securedata
securedata config
Configuration
-
To choose where
settings.jsonis stored, usesecuredata config -
To choose where logs will be stored, edit
settings.jsonand setpath -> logto the full path to the log folder. (in other words,{"path": "log": "/path/to/folder"})
cloud syncing
- Set
settings.json -> path -> securedata -> {sync-pull/sync-push}, like this example:
# example only; these commands will be unique to your cloud syncing setup
# if set, pull commands will be used before loading `settings.json` if `sync` is True; pull and push commands will be used before and after `setItem` if `sync` is True
{
"path": {
"securedata": {
"sync-pull": "rclone sync Dropbox:SecureData /home/{username}/securedata",
"sync-push": "rclone copy /home/{username}/securedata Dropbox:SecureData"
}
}
}
setItem("test", "123") # will not sync, because `sync` is not true
setItem("test", "123", sync=True) # will sync if the properties above are set
getItem("test") # will not pull from cloud before returning, because `sync` is not true
getItem("test", sync=True) # will pull from cloud before returning
editFile
- see example below to enable something like
securedata edit shoppingfrom the terminal- or
securedata.editFile("shopping"), rather thansecuredata.editFile("/home/{username}/path/to/shopping.md")
- or
- if sync-push and set-pull are set, pull commands will be used before loading the file; push commands will be used after saving
- each shortcut should have a
value(full path to the file)- to enable syncing, each shortcut should also have
syncset totrue
- to enable syncing, each shortcut should also have
# example only; these commands will be unique to your cloud syncing setup
{
"path": {
"edit": {
"shopping": {
"value": "/home/{username}/path/to/shopping.md",
"sync": true
},
"todo": {
"value": "/home/{username}/path/to/todo.md",
"sync": false
}
"sync-pull": "rclone sync Dropbox:SecureData /home/{username}/securedata",
"sync-push": "rclone copy /home/{username}/securedata Dropbox:SecureData"
}
}
}
- It is NEVER a good idea to store your password in plaintext; for this reason, I strongly recommend a "throwaway" account that is only used for sending emails
- Gmail (as of May 2022) and most other mainstream email providers won't work with this; for support, search for sending mail from your email provider with
smtplib. - In
settings.json, add theemailobject to make your settings file look like this example:
{
"email": {
"from": "throwaway@example.com",
"from_pw": "example",
"from_name": "Raspberry Pi",
"to": "destination@protonmail.com",
"smtp_server": "example.com",
"imap_server": "example.com",
"port": 123
}
}
Examples
setItem
from securedata import securedata
securedata.setItem("employee", "Tyler", "salary", 7.25)
results in this structure in settings.json:
{
"employee": {
"Tyler": {
"salary": 7.25
}
}
}
getItem
from securedata import securedata
print(securedata.getItem("employee", "Tyler", "salary")) # given example settings.json above
> python3 test.py
> 7.25
editFile
from securedata import securedata
# if setItem("path", "edit", "shopping", "/path/to/shopping.md") has been called, this will edit the file
# assigned to that shortcut.
# opens file in Vim, saves upon exit
securedata.editFile("shopping")
# or you can edit a file directly...
securedata.editFile("/path/to/shopping.md")
# set path -> edit -> sync-pull and path -> edit -> sync-push to specify commands that should be run for cloud integration.
mail
from securedata import mail
mail.send('Test Subject', 'Test Body')
log
from securedata import securedata
# writes to a file named LOG_DAILY YYYY-MM-DD in the default log folder (or securedata.getItem('path', 'log')) inside a YYYY-MM-DD folder
securedata.log("Dear Diary...")
securedata.log("This function hit a breakpoint", level="debug")
securedata.log("Looks like the server is on fire", level="critical")
securedata.log("This is fine", level="info")
# writes to a file named LOG_TEMPERATURE
securedata.log("30", logName="LOG_TEMPERATURE")
# writes to a file named LOG_TEMPERATURE in /home/{username}/weather
securedata.log("30", logName="LOG_TEMPERATURE", filePath="/home/{username}/weather")
# format
# 2021-12-29 19:29:27,896 — INFO — 30
Dependencies
- Python >= 3.6
- smtplib
Disclaimers
- Although I've done quite a bit of testing, I can't guarantee everything that works on my machine will work on yours. Always back up your data to multiple places to avoid data loss.
- If you find any issues, please contact me... or get your hands dirty and raise a PR!
Metadata
Release files for securedata 2023.1.30.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| securedata-2023.1.30.1.tar.gz | 11.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| securedata-2023.1.30.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.4 kB
Release files / securedata-2023.1.30.1.tar.gz
| Download URL | securedata-2023.1.30.1.tar.gz |
|---|---|
| Size | 11.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
babd9bc53520387e8bb1d6c264a10c30eeeabd97e9ba533a62f6fa72941b40ef
|
|
BLAKE2b-256 checksum How to use checksums |
b0930a91c0da437c461117306cd14b59487c2ff04c4d8da807a35063d867ac6f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.10.6
|
Release files / securedata-2023.1.30.1-py3-none-any.whl
| Download URL | securedata-2023.1.30.1-py3-none-any.whl |
|---|---|
| Size | 10.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
76c12f7d4c7151f1ff1c9f4e77fc1445255f7a36014d5229d388e8bcd4d09ad1
|
|
BLAKE2b-256 checksum How to use checksums |
f71c189cc6db1030d9169dea16244a618e05fcf6f66923fe3af5f5edc6876499
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.10.6
|