// ParseAnnotations parses the annotations contained in the ingress // rule used to rewrite the defined paths func ParseAnnotations(cfg defaults.Backend, ing *extensions.Ingress) (*Redirect, error) { if ing.GetAnnotations() == nil { return &Redirect{}, errors.New("no annotations present") } sslRe, err := parser.GetBoolAnnotation(sslRedirect, ing) if err != nil { sslRe = cfg.SSLRedirect } rt, _ := parser.GetStringAnnotation(rewriteTo, ing) abu, _ := parser.GetBoolAnnotation(addBaseURL, ing) return &Redirect{ Target: rt, AddBaseURL: abu, SSLRedirect: sslRe, }, nil }
// ParseAnnotations parses the annotations contained in the ingress // rule used to indicate if is required to configure func ParseAnnotations(cfg defaults.Backend, ing *extensions.Ingress) (bool, error) { if ing.GetAnnotations() == nil { return false, parser.ErrMissingAnnotations } if len(ing.Spec.TLS) == 0 { return false, fmt.Errorf("ingres rule %v/%v does not contains a TLS section", ing.Name, ing.Namespace) } return parser.GetBoolAnnotation(passthrough, ing) }
// ParseAnnotations parses the annotations contained in the ingress // rule used to use an external URL as source for authentication func ParseAnnotations(ing *extensions.Ingress) (External, error) { if ing.GetAnnotations() == nil { return External{}, parser.ErrMissingAnnotations } str, err := parser.GetStringAnnotation(authURL, ing) if err != nil { return External{}, err } if str == "" { return External{}, fmt.Errorf("an empty string is not a valid URL") } ur, err := url.Parse(str) if err != nil { return External{}, err } if ur.Scheme == "" { return External{}, fmt.Errorf("url scheme is empty") } if ur.Host == "" { return External{}, fmt.Errorf("url host is empty") } if strings.Contains(ur.Host, "..") { return External{}, fmt.Errorf("invalid url host") } m, _ := parser.GetStringAnnotation(authMethod, ing) if len(m) != 0 && !validMethod(m) { return External{}, fmt.Errorf("invalid HTTP method") } sb, _ := parser.GetBoolAnnotation(authBody, ing) return External{ URL: str, Method: m, SendBody: sb, }, nil }
// ParseAnnotations parses the annotations contained in the ingress // rule used to indicate if the upstream servers should use SSL func ParseAnnotations(ing *extensions.Ingress) (bool, error) { return parser.GetBoolAnnotation(secureUpstream, ing) }
// ParseAnnotations parses the annotations contained in the ingress // rule used to indicate if the location/s should allows CORS func ParseAnnotations(ing *extensions.Ingress) (bool, error) { return parser.GetBoolAnnotation(cors, ing) }