Compare commits
2 commits
5f2d2a408a
...
9fe27528bb
Author | SHA1 | Date | |
---|---|---|---|
|
9fe27528bb | ||
|
154a739eff |
2 changed files with 37 additions and 1 deletions
23
README.md
23
README.md
|
@ -19,3 +19,26 @@ When you create a password URL, PassED firstly encrypts the password in your bro
|
|||
When someone views the password, PassED looks at the URL. It knows the password ID, AES Key and IV. It reaches out to the server, asks for a password with the ID from the URL, and then decrypts it with the AES Key and IV.
|
||||
|
||||
This model ensures that a malicous host can not read the passwords.
|
||||
|
||||
## Installation
|
||||
Installation is done with docker compose.
|
||||
```yaml
|
||||
services:
|
||||
"passed":
|
||||
build: "https://git.1e99.eu/1e99/passed.git"
|
||||
volumes:
|
||||
- "./passed:/etc/passed"
|
||||
environment:
|
||||
- "PASSED_STORE_TYPE=dir"
|
||||
- "PASSED_STORE_DIR_PATH=/etc/passed"
|
||||
ports:
|
||||
- "3000:3000"
|
||||
```
|
||||
|
||||
## Configuration
|
||||
Configuration is done with environment variables.
|
||||
- `PASSED_ADDRESS`: Specifies the address that PassED should listen on, defaults to `:3000`
|
||||
- `PASSED_STORE_TYPE`: Specify which store to use to save passwords, defaults to `ram`:
|
||||
- `ram`: Stores all passwords in RAM, they are lost on restart
|
||||
- `dir`: Stores all passwords in a directory. Requires `PASSED_STORE_DIR_PATH` to be set to the directory, defaults to `passwords`. PassED will not create the directory.
|
||||
- `STORE_CLEAR_EXPIRED_INTERVAL`: Specifies the delay in seconds to wait between clearing expired passwords, defaults to `30`.
|
||||
|
|
15
main.go
15
main.go
|
@ -6,6 +6,7 @@ import (
|
|||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"git.1e99.eu/1e99/passed/middlewares"
|
||||
|
@ -22,8 +23,20 @@ func run() error {
|
|||
return err
|
||||
}
|
||||
|
||||
clearIntervalString := os.Getenv("STORE_CLEAR_EXPIRED_INTERVAL")
|
||||
if clearIntervalString == "" {
|
||||
log.Printf("No STORE_CLEAR_EXPIRED_INTERVAL provided, defaulting to 30 seconds.")
|
||||
clearIntervalString = "30"
|
||||
}
|
||||
|
||||
clearInterval, err := strconv.ParseInt(clearIntervalString, 10, 64)
|
||||
if err != nil {
|
||||
log.Printf("STORE_CLEAR_EXPIRED_INTERVAL is not a number.")
|
||||
clearInterval = 30
|
||||
}
|
||||
|
||||
go func() {
|
||||
ticker := time.Tick(20 * time.Second)
|
||||
ticker := time.Tick(time.Duration(clearInterval) * time.Second)
|
||||
for {
|
||||
<-ticker
|
||||
|
||||
|
|
Loading…
Reference in a new issue