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.
|
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.
|
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"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.1e99.eu/1e99/passed/middlewares"
|
"git.1e99.eu/1e99/passed/middlewares"
|
||||||
|
@ -23,20 +22,8 @@ func run() error {
|
||||||
return err
|
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() {
|
go func() {
|
||||||
ticker := time.Tick(time.Duration(clearInterval) * time.Second)
|
ticker := time.Tick(20 * time.Second)
|
||||||
for {
|
for {
|
||||||
<-ticker
|
<-ticker
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue