Skip to main content

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, 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`; push commands will be used after `setItem`

{
  "path": {
    "securedata": {
      "sync-pull": "rclone sync Dropbox:SecureData /home/pi/securedata",
      "sync-push": "rclone copy /home/pi/securedata Dropbox:SecureData"
    }
  }
}

editFile

  • see example below to enable something like securedata edit shopping from the terminal
    • or securedata.editFile("shopping"), rather than securedata.editFile("/home/pi/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/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"
    }
  }
}

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/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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

securedata-2022.6.21.3.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

securedata-2022.6.21.3-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file securedata-2022.6.21.3.tar.gz.

File metadata

  • Download URL: securedata-2022.6.21.3.tar.gz
  • Upload date:
  • Size: 8.5 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

Hashes for securedata-2022.6.21.3.tar.gz
Algorithm Hash digest
SHA256 2fe57a053aa90d99e732d91157d358cbe03df513898c19e951ef849574603089
MD5 f93cec6cdb6bf49add91e2c95797128b
BLAKE2b-256 5ee513b707b041cf626b2b6b71a8d92751bc966f38da71c458ca3a31a1a4feb2

See more details on using hashes here.

File details

Details for the file securedata-2022.6.21.3-py3-none-any.whl.

File metadata

  • Download URL: securedata-2022.6.21.3-py3-none-any.whl
  • Upload date:
  • Size: 9.6 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

Hashes for securedata-2022.6.21.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5c00110466f1cf5d4903c562e38e1e24be92471fff1e93b69289b95cad6b2f97
MD5 3e2e9630034198e704e4f5fa6ff424e3
BLAKE2b-256 ac7a69728b97434f5c97091f56cc1b2ba845947ad73fa68ed1d6512ca4a4ceab

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page