improve README

This commit is contained in:
1e99 2024-12-29 09:57:15 +01:00
parent 7df811beb4
commit 027d9f573c
2 changed files with 18 additions and 5 deletions

View file

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

View file

@ -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
}