From 027d9f573c8c547ea30ab131b9b4f374444de9d4 Mon Sep 17 00:00:00 2001 From: 1e99 <1e99@1e99.eu> Date: Sun, 29 Dec 2024 09:57:15 +0100 Subject: [PATCH] improve README --- README.md | 21 ++++++++++++++++++--- storage/dir.go | 2 -- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6433c3b..8b09f72 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # PassED + [![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/NuGxJKtDKS) [![Demo](https://img.shields.io/website-up-down-green-red/https/passed.1e99.eu.svg)](https://passed.1e99.eu/) [![Made with Go](https://img.shields.io/badge/Made%20with-Go-1f425f.svg)](https://go.dev/) @@ -16,21 +17,26 @@ You want to share it on paper, but everyone can read that too. PassED solves this issue by allowing you to generate single-use URLs with your password. ## How it works + When you generate a URL... + 1. The browser generates an AES key. 2. The password you entered gets encrypted using this key. 3. The encrypted password is uploaded to the server, which responds with an ID to uniquely identify the password. 4. A URL is generated that contains the ID and AES key. When you view a password... + 1. The browser imports the AES key from the URL. 2. The browser asks the server for the password using the ID in the URL. 3. The browser decrypts the password from the server using the AES key from the URL. ## Setup + Setting up PassED can be done with docker compose or from source. As the website relies on the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) it requires a [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts). In other words you must setup a reverse proxy for HTTPS, or access the site via `localhost`. ### Docker compose + ```yaml services: "passed": @@ -46,33 +52,42 @@ services: ``` ### From Source + 1. Clonse the source code + ```bash git clone https://git.1e99.eu/1e99/passed.git --depth 1 ``` + 2. Ensure that you have go installed, if not follow this [guide](https://go.dev/doc/install). 3. Build the project. + ```bash go build -o passed . ``` + 4. Run the binary. + ```bash PASSED_STORE_TYPE=dir ./passed ``` ## Configuration + Configuration is done using environment variables. + - `PASSED_ADDRESS`: The address that PassED should listen on, defaults to `:3000`. - `PASSED_LOG_REQUESTS`: Should requests be logged, defaults to `true`. -- `PASSED_MAX_LENGTH`: Maximum password length in KiB, defaults to `12288`. +- `PASSED_MAX_LENGTH`: Maximum password length in bytes, defaults to `12288` (12 KiB). - `PASSED_STORE_TYPE`: Store type to pick, defaults to `ram`. - `ram`: Passwords are stored in RAM. - `dir`: Passwords are stored in a directory. The directory is specified using `PASSED_STORE_DIR_PATH`, which defaults to `passwords`. PassED will create the directory for you. - `PASSED_STORE_CLEAR_INTERVAL`: Time that should pass between clearing expired passwords in seconds, defaults to `30`. - `PASSED_STATIC_TYPE`: Directory from which static files are served, defaults to `embed`. - - `embed`: Files are served from the files located within the binary. This is recommended. - - `dir`: Files are served from a directory. The directory is specified using `PASSED_STATIC_DIR_PATH`, which defaults to `static`. PassED will not create the directory for you. + - `embed`: Static files are served from the files located within the binary. This is recommended. + - `dir`: Static files are served from a directory. The directory is specified using `PASSED_STATIC_DIR_PATH`, which defaults to `static`. PassED will not create the directory for you. ## Translators + - RoryBD - Nexio diff --git a/storage/dir.go b/storage/dir.go index bf5d561..745bb4c 100644 --- a/storage/dir.go +++ b/storage/dir.go @@ -2,7 +2,6 @@ package storage import ( "encoding/gob" - "log" "os" "path" "time" @@ -51,7 +50,6 @@ func (store *dir) Create(password []byte, expiresAt time.Time) (string, error) { err = gob.NewEncoder(file).Encode(&entry) if err != nil { - log.Printf("%s", err) return "", err }