Added support for file env vars and docker secrets

This commit is contained in:
Cameron Wichman 2023-06-14 03:44:31 -07:00
parent b9e5ddf194
commit 3e2fc5b983
4 changed files with 45 additions and 16 deletions

View file

@ -1,11 +1,10 @@
package util
import (
"bufio"
"encoding/json"
"errors"
"fmt"
"github.com/ngoduykhanh/wireguard-ui/store"
"golang.org/x/mod/sumdb/dirhash"
"io"
"io/fs"
"io/ioutil"
@ -18,6 +17,9 @@ import (
"text/template"
"time"
"github.com/ngoduykhanh/wireguard-ui/store"
"golang.org/x/mod/sumdb/dirhash"
externalip "github.com/glendc/go-external-ip"
"github.com/labstack/gommon/log"
"github.com/ngoduykhanh/wireguard-ui/model"
@ -465,6 +467,32 @@ func LookupEnvOrStrings(key string, defaultVal []string) []string {
return defaultVal
}
func LookupEnvOrSecretString(key string, defaultVal string) string {
blacklist := []string{
"wg-ui",
"init.sh",
}
if val, ok := os.LookupEnv(key); ok {
// checks if key is blacklisted
for i := 0; i < len(blacklist); i++ {
if val == blacklist[i] {
return val
}
}
// returns file contents if file exists
var content string
if file, err := os.Open(val); err == nil {
scanner := bufio.NewScanner(file)
for scanner.Scan() {
content += scanner.Text()
}
return content
}
return val
}
return defaultVal
}
func StringFromEmbedFile(embed fs.FS, filename string) (string, error) {
file, err := embed.Open(filename)
if err != nil {