Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions database_darwin.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//go:build darwin

package utils

import (
"fmt"
"net/url"
"os"
"text/template"

"gopkg.in/ini.v1"
)

func CreatePostgresDatabaseURL() (string, error) {
// First check for environment variable (useful for development)
if envURL := os.Getenv("OPENUEM_DATABASE_URL"); envURL != "" {
return envURL, nil
}

var err error

// Open ini file
cfg, err := ini.Load(GetConfigFile())
if err != nil {
return "", err
}

user, err := cfg.Section("DB").GetKey("PostgresUser")
if err != nil {
return "", fmt.Errorf("could not read PostgresUser from INI")
}
username := url.PathEscape(user.String())

host, err := cfg.Section("DB").GetKey("PostgresHost")
if err != nil {
return "", fmt.Errorf("could not read PostgresHost from INI")
}
hostname := url.PathEscape(host.String())

port, err := cfg.Section("DB").GetKey("PostgresPort")
if err != nil {
return "", fmt.Errorf("could not read PostgresPort from INI")
}
dbPort := url.PathEscape(port.String())

database, err := cfg.Section("DB").GetKey("PostgresDatabase")
if err != nil {
return "", fmt.Errorf("could not read PostgresDatabase from INI")
}
databaseName := url.PathEscape(database.String())

pass, err := cfg.Section("DB").GetKey("PostgresPassword")
if err != nil {
return "", fmt.Errorf("could not read PostgresPassword from INI")
}
password := template.URLQueryEscaper(pass.String())

return fmt.Sprintf("postgres://%s:%s@%s:%s/%s", username, password, hostname, dbPort, databaseName), nil
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module github.com/open-uem/utils
module github.com/EigerCode/utils

go 1.26.0

Expand Down
31 changes: 31 additions & 0 deletions jwt_darwin.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
//go:build darwin

package utils

import (
"fmt"
"os"

"gopkg.in/ini.v1"
)

func GetJWTKey() (string, error) {
// First check for environment variable (useful for development)
if envKey := os.Getenv("OPENUEM_JWT_KEY"); envKey != "" {
return envKey, nil
}

// Open ini file
configFile := GetConfigFile()
cfg, err := ini.Load(configFile)
if err != nil {
return "", err
}

key, err := cfg.Section("JWT").GetKey("Key")
if err != nil {
return "", fmt.Errorf("could not read JWT Key from INI")
}

return key.String(), nil
}
59 changes: 59 additions & 0 deletions logger_darwin.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
package utils

import (
"log"
"os"
"path/filepath"
"strings"
)

type OpenUEMLogger struct {
Expand All @@ -13,3 +16,59 @@ type OpenUEMLogger struct {
func (l *OpenUEMLogger) Close() {
l.LogFile.Close()
}

func NewLogger(logFilename string) *OpenUEMLogger {
var err error

logger := OpenUEMLogger{}

// Get user home directory for logs on macOS
homeDir, err := os.UserHomeDir()
if err != nil {
log.Fatalf("[FATAL]: could not get user home directory, reason: %v", err)
}

wd := filepath.Join(homeDir, ".openuem", "logs")

if _, err := os.Stat(wd); os.IsNotExist(err) {
if err := os.MkdirAll(wd, 0755); err != nil {
log.Fatalf("[FATAL]: could not create log directory, reason: %v", err)
}
}

logPath := filepath.Join(wd, logFilename)
logger.LogFile, err = os.Create(logPath)
if err != nil {
log.Fatalf("could not create log file: %v", err)
}

logPrefix := strings.TrimSuffix(filepath.Base(logFilename), filepath.Ext(logFilename))
log.SetOutput(logger.LogFile)
log.SetPrefix(logPrefix + ": ")
log.SetFlags(log.Ldate | log.Ltime)

return &logger
}

func NewAuthLogger() *log.Logger {
homeDir, err := os.UserHomeDir()
if err != nil {
log.Fatalf("[FATAL]: could not get user home directory, reason: %v", err)
}

wd := filepath.Join(homeDir, ".openuem", "logs")

if _, err := os.Stat(wd); os.IsNotExist(err) {
if err := os.MkdirAll(wd, 0755); err != nil {
log.Fatalf("[FATAL]: could not create log directory, reason: %v", err)
}
}

logPath := filepath.Join(wd, "auth.log")
logFile, err := os.OpenFile(logPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatalf("could not open auth log file: %v", err)
}

return log.New(logFile, "auth: ", log.Ldate|log.Ltime)
}