No description
Find a file
2024-11-09 22:13:32 +01:00
config logging improvements 2024-11-08 16:11:57 +01:00
routes remove middlewars package 2024-11-09 12:59:42 +01:00
static move data storage out of query into url hash 2024-11-04 22:52:00 +01:00
storage add getEntry to directory storage 2024-11-09 21:50:54 +01:00
build.sh add simple build script 2024-11-09 19:34:45 +01:00
Dockerfile first commit 2024-10-30 00:08:11 +01:00
go.mod first commit 2024-10-30 00:08:11 +01:00
LICENSE.md first commit 2024-10-30 00:08:11 +01:00
main.go remove middlewars package 2024-11-09 12:59:42 +01:00
README.md rework readme 2024-11-09 22:13:32 +01:00

PassED

Discord Demo Made with Go

EMail, but for passwords.

Did you ever run into the issue of needing to share a password with someone securely?

You want to share it using EMail, but there it will surely get logged along the way.

You want to share it using WhatsApp, but there it will show up in the notifications for everyone to read.

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 it requires a secure context. In other words you must setup a reverse proxy for HTTPS, or access the site via localhost.

Docker compose

services:
  "passed":
    image: "git.1e99.eu/1e99/passed:latest"
    volumes:
      - "./passed:/etc/passed"
    environment:
      - "PASSED_ADDRESS=:3000"
      - "PASSED_STORE_TYPE=dir"
      - "PASSED_STORE_DIR_PATH=/etc/passed"
    ports:
      - "3000:3000"

From Source

  1. Clonse the source code
git clone https://git.1e99.eu/1e99/passed.git --depth 1
  1. Ensure that you have go installed, if not follow this guide.
  2. Build the project.
go build -o passed .
  1. Run the binary.
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_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 not create the directory for you.
  • PASSED_STORE_CLEAR_INTERVAL: Time that should pass between clearing expired passwords in seconds, defaults to 30.