refactor: move to traefik paerser for label parsing (#197)

* refactor: move to traefik paerser for label parsing

* fix: sanitize headers before adding to map

* refactor: use splitn in header parser

* refactor: ignore containers that failed to get inspected in docker
This commit is contained in:
Stavros
2025-06-15 19:58:23 +03:00
committed by GitHub
parent ee83c177f4
commit 3397e2aa8e
12 changed files with 95 additions and 83 deletions

View File

@@ -74,14 +74,14 @@ func (docker *Docker) DockerConnected() bool {
return err == nil
}
func (docker *Docker) GetLabels(appId string) (types.TinyauthLabels, error) {
func (docker *Docker) GetLabels(appId string) (types.Labels, error) {
// Check if we have access to the Docker API
isConnected := docker.DockerConnected()
// If we don't have access, return an empty struct
if !isConnected {
log.Debug().Msg("Docker not connected, returning empty labels")
return types.TinyauthLabels{}, nil
return types.Labels{}, nil
}
// Get the containers
@@ -89,7 +89,7 @@ func (docker *Docker) GetLabels(appId string) (types.TinyauthLabels, error) {
// If there is an error, return false
if err != nil {
return types.TinyauthLabels{}, err
return types.Labels{}, err
}
log.Debug().Msg("Got containers")
@@ -99,9 +99,10 @@ func (docker *Docker) GetLabels(appId string) (types.TinyauthLabels, error) {
// Inspect the container
inspect, err := docker.InspectContainer(container.ID)
// If there is an error, return false
// Check if there was an error
if err != nil {
return types.TinyauthLabels{}, err
log.Warn().Str("id", container.ID).Err(err).Msg("Error inspecting container, skipping")
continue
}
// Get the container name (for some reason it is /name)
@@ -112,7 +113,13 @@ func (docker *Docker) GetLabels(appId string) (types.TinyauthLabels, error) {
log.Debug().Str("container", containerName).Msg("Found container")
// Get only the tinyauth labels in a struct
labels := utils.GetTinyauthLabels(inspect.Config.Labels)
labels, err := utils.GetLabels(inspect.Config.Labels)
// Check if there was an error
if err != nil {
log.Error().Err(err).Msg("Error parsing labels")
return types.Labels{}, err
}
log.Debug().Msg("Got labels")
@@ -125,5 +132,5 @@ func (docker *Docker) GetLabels(appId string) (types.TinyauthLabels, error) {
log.Debug().Msg("No matching container found, returning empty labels")
// If no matching container is found, return empty labels
return types.TinyauthLabels{}, nil
return types.Labels{}, nil
}