Skip to main content

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
  • Logs are written to /path/to/securedata/log by default

Installation and Setup

  python3 -m pip install securedata

  securedata config

Configuration

  • To choose where settings.json is stored, use securedata config

  • To choose where logs will be stored, edit settings.json and set path -> 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/{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 shopping from the terminal
    • or securedata.editFile("shopping"), rather than securedata.editFile("/home/{username}/path/to/shopping.md")
  • 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 to true
# 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"
    }
  }
}

mail

  • 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 the email 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/{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)

Source distribution for securedata 2023.1.30.1
File Size Uploaded
securedata-2023.1.30.1.tar.gz 11.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for securedata 2023.1.30.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

2023.1.30.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page