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!

Download files

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

Source Distribution

securedata-2023.1.30.1.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

securedata-2023.1.30.1-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: securedata-2023.1.30.1.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for securedata-2023.1.30.1.tar.gz
Algorithm Hash digest
SHA256 babd9bc53520387e8bb1d6c264a10c30eeeabd97e9ba533a62f6fa72941b40ef
MD5 155827ea956a4a3b0e74d18eb6f2b7c4
BLAKE2b-256 b0930a91c0da437c461117306cd14b59487c2ff04c4d8da807a35063d867ac6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for securedata-2023.1.30.1-py3-none-any.whl
Algorithm Hash digest
SHA256 76c12f7d4c7151f1ff1c9f4e77fc1445255f7a36014d5229d388e8bcd4d09ad1
MD5 776e1a706774c5a053c2cc777b146160
BLAKE2b-256 f71c189cc6db1030d9169dea16244a618e05fcf6f66923fe3af5f5edc6876499

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2023.1.30.1 This release

2 files

2022.11.7.1

2 files

2022.11.6.1

2 files

2022.10.15.1

2 files

2022.10.13.1

2 files

2022.10.6.1

2 files

2022.9.30.1

2 files

2022.9.13.1

2 files

2022.9.9.1

2 files

2022.8.30.1

2 files

2022.8.25.1

2 files

2022.7.26.1

2 files

2022.7.23.2

2 files

2022.7.23.1

2 files

2022.6.22.1

2 files

2022.6.21.3

2 files

2022.6.21.2

2 files

2022.6.21.1

2 files

2022.6.20.2

2 files

2022.6.20.1

2 files

2022.6.16.1

2 files

2022.6.13.1

2 files

2022.6.11.3

2 files

2022.6.11.2

2 files

2022.6.11.1

2 files

2022.5.1.1

2 files

2022.4.9.2

2 files

2022.4.9.1

2 files

2022.3.20.1

2 files

2022.3.11.1

2 files

2022.1.20.2

2 files

2022.1.20.1

2 files

2022.1.9.2

2 files

2022.1.9.1

2 files

2022.1.8.3

2 files

2022.1.8.2

2 files

2022.1.8.1

2 files

2022.1.4.2

2 files

2021.12.30.1

2 files

2021.12.29.3

2 files

2021.12.29.2

2 files

2021.12.29.1

2 files

2021.12.26.11

2 files

2021.12.26.10

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page