mirror of
https://github.com/Macrame-App/Macrame
synced 2025-12-29 07:19:26 +00:00
61 lines
1.2 KiB
Go
61 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()
|
|
saltKey := GenerateKey()
|
|
salt := saltKey[:28]
|
|
iv := GenerateRandomIntegerString(16)
|
|
|
|
log.Println(err, saltKey, 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
|
|
}
|