Skip to content

Commit 9d0984b

Browse files
committed
Added a go routine that checks if a secret has expired and then deletes it.
1 parent 7d953f1 commit 9d0984b

File tree

3 files changed

+24
-3
lines changed

3 files changed

+24
-3
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
## TODO:
77
* Add some server config
88
* Security review?
9-
* Add a go routine that checks if a secret has expire and then deletes it.
109

1110
## Create a new secret
1211

main.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,30 @@ func init() {
4242
pr.MustRegister(metrics.SecretsDeleted)
4343
}
4444

45+
func secretCleaner() {
46+
for {
47+
for k, v := range secretStore {
48+
s, err := Decrypt(v, k)
49+
if err != nil {
50+
continue
51+
}
52+
53+
isNotExpired := s.Expires.UTC().After(time.Now().UTC())
54+
if !isNotExpired {
55+
log.Debug().Msg("Found expired secret, deleting...")
56+
secretStore.Delete(k)
57+
}
58+
59+
}
60+
time.Sleep(5 * time.Second)
61+
}
62+
}
63+
4564
func main() {
4665

66+
// Start loop that checks for expired secrets and deletes them
67+
go secretCleaner()
68+
4769
r := mux.NewRouter()
4870
// Start of static stuff
4971
fs := http.FileServer(http.Dir("./static"))

types/secrets.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func (s Secret) encrypt(encryptionKey string) ([]byte, error) {
7272

7373
return encryptedSecret, nil
7474
}
75-
func decrypt(ciphertext []byte, encryptionKey string) (*Secret, error) {
75+
func Decrypt(ciphertext []byte, encryptionKey string) (*Secret, error) {
7676
key := deriveKey(encryptionKey)
7777

7878
c, err := aes.NewCipher(key)
@@ -131,7 +131,7 @@ func (ss SecretStore) Add(entry Entry) (id string, err error) {
131131
func (ss SecretStore) Get(id string) (content string, gotData bool) {
132132
value, gotData := ss[id]
133133
if gotData {
134-
s, err := decrypt(value, id)
134+
s, err := Decrypt(value, id)
135135
if err != nil {
136136
log.Fatal(err)
137137
}

0 commit comments

Comments
 (0)