Macrame/be/app/helper/env-helper.go
2025-04-11 18:59:30 +02:00

60 lines
1.2 KiB
Go

package helper
import (
"log"
"net"
"os"
"strconv"
"github.com/joho/godotenv"
)
func EnvGet(key string) string {
envFile := "../.env"
fileExists := func() bool {
_, err := os.Stat(envFile)
return err == nil
}
if !fileExists() {
createEnvFile(envFile)
}
err := godotenv.Load(envFile)
if err != nil {
return ""
}
return os.Getenv("VITE_" + key)
}
func createEnvFile(filename string) {
log.Println("Creating .env file...")
file, err := os.Create(filename)
if err != nil {
log.Println(err)
}
defer file.Close()
// You can add some default values to the .env file here if needed
// For example:
port, err := findOpenPort()
salt := GenerateRandomString(28)
iv := GenerateRandomIntegerString(16)
log.Println(err, salt, iv)
_, err = file.WriteString("VITE_MCRM__PORT=" + string(port) + "\nVITE_MCRM__SALT=" + salt + "\nVITE_MCRM__IV=" + iv)
if err != nil {
log.Fatal(err)
}
}
func findOpenPort() (string, error) {
addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
if err != nil {
return "", err
}
l, err := net.ListenTCP("tcp", addr)
if err != nil {
return "", err
}
defer l.Close()
return strconv.Itoa(l.Addr().(*net.TCPAddr).Port), nil
}