Compare commits
No commits in common. "9fe27528bb60d1e176fba4ddad4f0fa7b5cc5468" and "5f2d2a408a738f121f690cee7e48d36f5b55cdc0" have entirely different histories.
9fe27528bb
...
5f2d2a408a
2 changed files with 1 additions and 37 deletions
23
README.md
23
README.md
|
@ -19,26 +19,3 @@ 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,7 +6,6 @@ import (
|
|||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"git.1e99.eu/1e99/passed/middlewares"
|
||||
|
@ -23,20 +22,8 @@ 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(time.Duration(clearInterval) * time.Second)
|
||||
ticker := time.Tick(20 * time.Second)
|
||||
for {
|
||||
<-ticker
|
||||
|
||||
|
|
Loading…
Reference in a new issue