Easily manage data storage and logging across repos
Project description
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
logger
each time - Send/receive mail
Structure
- Data is stored in
settings.json
(in~/securedata
by default) - Logs are written to
~/securedata/log
by default
Installation and Setup
python3 -m pip install securedata
Configuration
-
To choose where
settings.json
is stored, usesecuredata config
-
To choose where logs will be stored, edit
settings.json
and setpath -> log
to 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/pi/securedata",
"sync-push": "rclone copy /home/pi/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 shopping
from the terminal- or
securedata.editFile("shopping")
, rather thansecuredata.editFile("/home/pi/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
sync
set 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/pi/path/to/shopping.md",
"sync": true
},
"todo": {
"value": "/home/pi/path/to/todo.md",
"sync": false
}
"sync-pull": "rclone sync Dropbox:SecureData /home/pi/securedata",
"sync-push": "rclone copy /home/pi/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 theemail
object 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/pi/weather
securedata.log("30", logName="LOG_TEMPERATURE", filePath="/home/pi/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!
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
File details
Details for the file securedata-2022.9.13.1.tar.gz
.
File metadata
- Download URL: securedata-2022.9.13.1.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd8ba11dad99cde4c6737efbf63b2516777be1cb2aadeae3eb192565ab37d8cc |
|
MD5 | 0db312b7ff886f4ec5aa5a84db2b3656 |
|
BLAKE2b-256 | 23695c27140e4d602eebbfbf3949e2d5b11f015e990ae15c0178b9daaa73040d |
File details
Details for the file securedata-2022.9.13.1-py3-none-any.whl
.
File metadata
- Download URL: securedata-2022.9.13.1-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6fe5b2c3812914e48abbe05d6a4770f8c846b367a28f7f0cee1b372be607101 |
|
MD5 | 27702311a7c5dbf32774b0c3b43349f5 |
|
BLAKE2b-256 | 673a0a46cb5746bb0354dd4d8a252b8290aef3db0f80f4f596fc8b3f5e7fb2d0 |