vaulterm/server/utils/config.go

51 lines
988 B
Go

package utils
import (
"fmt"
"os"
"path/filepath"
"rul.sh/vaulterm/server/lib"
)
func GetDataPath(resolveFile string) string {
// Resolve the app directory
execPath, err := os.Executable()
if err != nil {
return ""
}
appDir := filepath.Dir(execPath)
if resolveFile == "" {
return appDir
}
return filepath.Join(appDir, resolveFile)
}
func CheckAndCreateEnvFile() error {
// Skip if ENCRYPTION_KEY is set
if os.Getenv("ENCRYPTION_KEY") != "" {
return nil
}
// Check if .env file exists
envFile := GetDataPath(".env")
if _, err := os.Stat(envFile); !os.IsNotExist(err) {
return nil
}
// File doesn't exist, so create it
randomKey, err := lib.GenerateRandomKey()
if err != nil {
return err
}
// Write the random key to the .env file
envContent := fmt.Sprintf("ENCRYPTION_KEY=%s\n", randomKey)
err = os.WriteFile(envFile, []byte(envContent), 0644)
if err != nil {
return err
}
fmt.Println(".env file created with ENCRYPTION_KEY.")
return nil
}