mirror of
				https://github.com/steveiliop56/tinyauth.git
				synced 2025-11-03 23:55:44 +00:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			v3.6.2-bet
			...
			feat/app-l
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					e22d181de7 | ||
| 
						 | 
					c9b609b69c | ||
| 
						 | 
					4e6372ea97 | 
@@ -7,7 +7,7 @@ export const Layout = () => {
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <div
 | 
			
		||||
      className="relative flex flex-col justify-center items-center min-h-svh"
 | 
			
		||||
      className="relative flex flex-col justify-center items-center min-h-dvh"
 | 
			
		||||
      style={{
 | 
			
		||||
        backgroundImage: `url(${backgroundImage})`,
 | 
			
		||||
        backgroundSize: "cover",
 | 
			
		||||
 
 | 
			
		||||
@@ -74,7 +74,7 @@ func (docker *Docker) DockerConnected() bool {
 | 
			
		||||
	return err == nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (docker *Docker) GetLabels(appId string) (types.Labels, error) {
 | 
			
		||||
func (docker *Docker) GetLabels(id string, domain string) (types.Labels, error) {
 | 
			
		||||
	// Check if we have access to the Docker API
 | 
			
		||||
	isConnected := docker.DockerConnected()
 | 
			
		||||
 | 
			
		||||
@@ -85,15 +85,16 @@ func (docker *Docker) GetLabels(appId string) (types.Labels, error) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Get the containers
 | 
			
		||||
	log.Debug().Msg("Getting containers")
 | 
			
		||||
 | 
			
		||||
	containers, err := docker.GetContainers()
 | 
			
		||||
 | 
			
		||||
	// If there is an error, return false
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error().Err(err).Msg("Error getting containers")
 | 
			
		||||
		return types.Labels{}, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log.Debug().Msg("Got containers")
 | 
			
		||||
 | 
			
		||||
	// Loop through the containers
 | 
			
		||||
	for _, container := range containers {
 | 
			
		||||
		// Inspect the container
 | 
			
		||||
@@ -105,28 +106,22 @@ func (docker *Docker) GetLabels(appId string) (types.Labels, error) {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Get the container name (for some reason it is /name)
 | 
			
		||||
		containerName := strings.TrimPrefix(inspect.Name, "/")
 | 
			
		||||
		// Get the labels
 | 
			
		||||
		log.Debug().Str("id", inspect.ID).Msg("Getting labels for container")
 | 
			
		||||
 | 
			
		||||
		// There is a container with the same name as the app ID
 | 
			
		||||
		if containerName == appId {
 | 
			
		||||
			log.Debug().Str("container", containerName).Msg("Found container")
 | 
			
		||||
 | 
			
		||||
			// Get only the tinyauth labels in a struct
 | 
			
		||||
		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.Warn().Str("id", container.ID).Err(err).Msg("Error getting container labels, skipping")
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
			log.Debug().Msg("Got labels")
 | 
			
		||||
 | 
			
		||||
			// Return labels
 | 
			
		||||
		// Check if the labels match the id or the domain
 | 
			
		||||
		if strings.TrimPrefix(inspect.Name, "/") == id || labels.Domain == domain {
 | 
			
		||||
			log.Debug().Str("id", inspect.ID).Msg("Found matching container")
 | 
			
		||||
			return labels, nil
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log.Debug().Msg("No matching container found, returning empty labels")
 | 
			
		||||
 
 | 
			
		||||
@@ -69,11 +69,14 @@ func (h *Handlers) AuthHandler(c *gin.Context) {
 | 
			
		||||
	proto := c.Request.Header.Get("X-Forwarded-Proto")
 | 
			
		||||
	host := c.Request.Header.Get("X-Forwarded-Host")
 | 
			
		||||
 | 
			
		||||
	// Get the app id
 | 
			
		||||
	appId := strings.Split(host, ".")[0]
 | 
			
		||||
	// Remove the port from the host if it exists
 | 
			
		||||
	hostPortless := strings.Split(host, ":")[0] // *lol*
 | 
			
		||||
 | 
			
		||||
	// Get the id
 | 
			
		||||
	id := strings.Split(hostPortless, ".")[0]
 | 
			
		||||
 | 
			
		||||
	// Get the container labels
 | 
			
		||||
	labels, err := h.Docker.GetLabels(appId)
 | 
			
		||||
	labels, err := h.Docker.GetLabels(id, hostPortless)
 | 
			
		||||
 | 
			
		||||
	log.Debug().Interface("labels", labels).Msg("Got labels")
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -104,5 +104,6 @@ type Labels struct {
 | 
			
		||||
	Users   string
 | 
			
		||||
	Allowed string
 | 
			
		||||
	Headers []string
 | 
			
		||||
	Domain  string
 | 
			
		||||
	OAuth   OAuthLabels
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -201,7 +201,7 @@ func GetLabels(labels map[string]string) (types.Labels, error) {
 | 
			
		||||
	var labelsParsed types.Labels
 | 
			
		||||
 | 
			
		||||
	// Decode the labels into the labels struct
 | 
			
		||||
	err := parser.Decode(labels, &labelsParsed, "tinyauth", "tinyauth.users", "tinyauth.allowed", "tinyauth.headers", "tinyauth.oauth")
 | 
			
		||||
	err := parser.Decode(labels, &labelsParsed, "tinyauth", "tinyauth.users", "tinyauth.allowed", "tinyauth.headers", "tinyauth.domain", "tinyauth.oauth")
 | 
			
		||||
 | 
			
		||||
	// Check if there was an error
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user