Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
937e8a1
fix loader.go
CodeShellDev Dec 1, 2025
fb378dc
indent
CodeShellDev Dec 1, 2025
41dc958
add aliases and update to v0.0.4 of gotl
CodeShellDev Dec 1, 2025
892563b
separate env from user-conf
CodeShellDev Dec 1, 2025
203d68e
refactoring
CodeShellDev Dec 1, 2025
4ecdacc
debug gotl
CodeShellDev Dec 1, 2025
5a0fd19
formatting
CodeShellDev Dec 1, 2025
966cbd5
debugggginggg
CodeShellDev Dec 1, 2025
dcc7f11
update to gotl dev version
CodeShellDev Dec 1, 2025
9ff28d8
bump gotl
CodeShellDev Dec 1, 2025
f48c698
bump gotl version for debugging
CodeShellDev Dec 1, 2025
df8bf83
bump gotl version
CodeShellDev Dec 1, 2025
b33cdbb
bump gotl version
CodeShellDev Dec 1, 2025
b97466f
bump gotl version
CodeShellDev Dec 1, 2025
97fcd0b
bump gotl for bugfix
CodeShellDev Dec 1, 2025
85cdc8d
fix token config normilization
CodeShellDev Dec 1, 2025
6e69c70
bump gotl version for debugging
CodeShellDev Dec 1, 2025
eecbd14
bump gotl for refactor
CodeShellDev Dec 1, 2025
f633510
bump gotl version for hotfix
CodeShellDev Dec 1, 2025
26b4523
bump gotl version for another hotfix
CodeShellDev Dec 1, 2025
98f5f21
bump gotl for debugging
CodeShellDev Dec 1, 2025
8ab127e
bump gotl version
CodeShellDev Dec 2, 2025
4a71cd0
bump gotl version for debugging
CodeShellDev Dec 2, 2025
634fc88
reduce normilization for debugging
CodeShellDev Dec 2, 2025
11c3061
switch to debugging config
CodeShellDev Dec 2, 2025
cc76502
bump gotl version for bugfix
CodeShellDev Dec 2, 2025
59ab1d3
bump gotl version for hotfix
CodeShellDev Dec 2, 2025
5d500e2
bump gotl version for debugging
CodeShellDev Dec 2, 2025
576cea7
bump gotl version for debugging
CodeShellDev Dec 2, 2025
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
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ module github.com/codeshelldev/secured-signal-api

go 1.25.4

require github.com/codeshelldev/gotl v0.0.2
require github.com/codeshelldev/gotl v0.0.4-21

require go.uber.org/zap v1.27.0 // indirect
require go.uber.org/zap v1.27.1 // indirect

require (
github.com/fsnotify/fsnotify v1.9.0 // indirect
Expand Down
14 changes: 10 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
github.com/codeshelldev/gotl v0.0.2 h1:PQbipYHut3DNvwcrdkQmIGo2p6X6a889Glmba/KIeFQ=
github.com/codeshelldev/gotl v0.0.2/go.mod h1:OzawxKcFw9QEgbeR5H2UXryhYeeLo8xSLme1r8viE+U=
github.com/codeshelldev/gotl v0.0.4-18 h1:Uv7803qOcaVI7zVyBmadX2SCObHvbO9LBcBUNWa0Ejg=
github.com/codeshelldev/gotl v0.0.4-18/go.mod h1:Mfb+Lb+DV3DUXdA1sixJb2pLawaJGGFFeC29gUZQLcg=
github.com/codeshelldev/gotl v0.0.4-19 h1:dshnBkR7F8BvzVD2aakk8yFKWB7aZZbAA4TjOLrzyaA=
github.com/codeshelldev/gotl v0.0.4-19/go.mod h1:Mfb+Lb+DV3DUXdA1sixJb2pLawaJGGFFeC29gUZQLcg=
github.com/codeshelldev/gotl v0.0.4-20 h1:B7tTiiDiCpr/WnkK8O6jj2Q+GIzykNgX4qsvTLWyRzQ=
github.com/codeshelldev/gotl v0.0.4-20/go.mod h1:Mfb+Lb+DV3DUXdA1sixJb2pLawaJGGFFeC29gUZQLcg=
github.com/codeshelldev/gotl v0.0.4-21 h1:umeAIi56fmAyWw5fz5eXnrje6pAS1nqlDlKrXGhdp9k=
github.com/codeshelldev/gotl v0.0.4-21/go.mod h1:Mfb+Lb+DV3DUXdA1sixJb2pLawaJGGFFeC29gUZQLcg=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
Expand Down Expand Up @@ -34,8 +40,8 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=
go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
Expand Down
57 changes: 37 additions & 20 deletions internals/config/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,20 @@ import (
)

var ENV *structure.ENV = &structure.ENV{
CONFIG_PATH: os.Getenv("CONFIG_PATH"),
DEFAULTS_PATH: os.Getenv("DEFAULTS_PATH"),
TOKENS_DIR: os.Getenv("TOKENS_DIR"),
FAVICON_PATH: os.Getenv("FAVICON_PATH"),
CONFIGS: map[string]*structure.CONFIG{},
INSECURE: false,
CONFIG_PATH: os.Getenv("CONFIG_PATH"),
DEFAULTS_PATH: os.Getenv("DEFAULTS_PATH"),
TOKENS_DIR: os.Getenv("TOKENS_DIR"),
FAVICON_PATH: os.Getenv("FAVICON_PATH"),
INSECURE: false,

CONFIGS: map[string]*structure.CONFIG{},
}

var DEFAULT *structure.CONFIG

var defaultsConf *configutils.Config
var userConf *configutils.Config
var envConf *configutils.Config
var tokenConf *configutils.Config

var mainConf *configutils.Config
Expand All @@ -42,32 +44,39 @@ func Load() {

LoadTokens()

userConf.LoadEnv(normalizeEnv)
NormalizeConfig("", defaultsConf)
//NormalizeConfig("config", userConf)

NormalizeConfig(defaultsConf)
NormalizeConfig(userConf)

NormalizeTokens()
envConf.LoadEnv(normalizeEnv)

//NormalizeConfig("env", envConf)

userConf.MergeLayers(envConf.Layer)

mainConf.MergeLayers(defaultsConf.Layer, userConf.Layer)

mainConf.TemplateConfig()

InitTokens()
//NormalizeTokens()

InitEnv()
InitConfig()

InitTokens()

log.Info("Finished Loading Configuration")
}

func Log() {
log.Dev("Loaded Config:", mainConf.Layer.All())
log.Dev("Loaded Token Configs:", tokenConf.Layer.All())
// TODO: Change back to `log.Dev()` as soon as config parsing is working again.
log.Info("Loaded Config:", mainConf.Layer.All())
log.Info("Loaded Token Configs:", tokenConf.Layer.All())
log.Info("Parsed Configs: ", ENV)
}

func Clear() {
defaultsConf = configutils.New()
userConf = configutils.New()
envConf = configutils.New()
tokenConf = configutils.New()
mainConf = configutils.New()
}
Expand All @@ -85,11 +94,11 @@ func LowercaseKeys(config *configutils.Config) {
config.Load(data, "")
}

func NormalizeConfig(config *configutils.Config) {
Normalize(config, "", &structure.CONFIG{})
func NormalizeConfig(id string, config *configutils.Config) {
Normalize(id, config, "", &structure.CONFIG{})
}

func Normalize(config *configutils.Config, path string, structure any) {
func Normalize(id string, config *configutils.Config, path string, structure any) {
data := config.Layer.Get(path)
old, ok := data.(map[string]any)

Expand All @@ -103,7 +112,7 @@ func Normalize(config *configutils.Config, path string, structure any) {
tmpConf.Load(old, "")

// Apply transforms to the new config
tmpConf.ApplyTransformFuncs(structure, "", transformFuncs)
tmpConf.ApplyTransformFuncs(id, structure, "", transformFuncs)

// Lowercase actual config
LowercaseKeys(config)
Expand All @@ -126,7 +135,7 @@ func InitReload() {
tokenConf.OnReload(reload)
}

func InitEnv() {
func InitConfig() {
var config structure.CONFIG

mainConf.Layer.Unmarshal("", &config)
Expand Down Expand Up @@ -161,3 +170,11 @@ func LoadConfig() {
log.Error("Could not Load Config ", ENV.CONFIG_PATH, ": ", err.Error())
}
}

func normalizeEnv(key string, value string) (string, any) {
key = strings.ToLower(key)
key = strings.ReplaceAll(key, "__", ".")
key = strings.ReplaceAll(key, "_", "")

return key, stringutils.ToType(value)
}
5 changes: 5 additions & 0 deletions internals/config/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package config

import (
"strings"

"github.com/codeshelldev/gotl/pkg/logger"
)

var transformFuncs = map[string]func(string, any) (string, any) {
Expand All @@ -12,13 +14,16 @@ var transformFuncs = map[string]func(string, any) (string, any) {
}

func keepTransform(key string, value any) (string, any) {
logger.Info(key)
return key, value
}

func lowercaseTransform(key string, value any) (string, any) {
logger.Info(key)
return strings.ToLower(key), value
}

func uppercaseTransform(key string, value any) (string, any) {
logger.Info(key)
return strings.ToUpper(key), value
}
10 changes: 5 additions & 5 deletions internals/config/structure/structure.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,17 @@ type ENV struct {
type CONFIG struct {
SERVICE SERVICE `koanf:"service"`
API API `koanf:"api"`
SETTINGS SETTINGS `koanf:"settings" aliases:"overrides"`
SETTINGS SETTINGS `koanf:"settings" token>aliases:"overrides"`
}

type SERVICE struct {
PORT string `koanf:"port"`
LOG_LEVEL string `koanf:"loglevel"`
PORT string `koanf:"port" env>aliases:".port"`
LOG_LEVEL string `koanf:"loglevel" env>aliases:".loglevel"`
}

type API struct {
URL string `koanf:"url"`
TOKENS []string `koanf:"tokens" aliases:"token"`
URL string `koanf:"url" env>aliases:".apiurl"`
TOKENS []string `koanf:"tokens" env>aliases:".apitokens,.apitoken" aliases:"token"`
}

type SETTINGS struct {
Expand Down
6 changes: 3 additions & 3 deletions internals/config/tokens.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func NormalizeTokens() {
tmpConf := configutils.New()
tmpConf.Load(config.Raw(), "")

Normalize(tmpConf, "overrides", &structure.SETTINGS{})
Normalize("token", tmpConf, "", &structure.SETTINGS{})

data = append(data, tmpConf.Layer.Raw())
}
Expand All @@ -38,7 +38,7 @@ func NormalizeTokens() {
}

func InitTokens() {
apiTokens := mainConf.Layer.Strings("api.tokens")
apiTokens := DEFAULT.API.TOKENS

var tokenConfigs []structure.CONFIG

Expand All @@ -61,7 +61,7 @@ func InitTokens() {

// Set Blocked Endpoints on Config to User Layer Value
// => effectively ignoring Default Layer
mainConf.Layer.Set("settings.access.endpoints", userConf.Layer.Strings("settings.access.endpoints"))
DEFAULT.SETTINGS.ACCESS.ENDPOINTS = userConf.Layer.Strings("settings.access.endpoints")
}

if len(apiTokens) > 0 {
Expand Down