zitadel/internal/api/http/origin.go
Livio Amstutz 389eb4a27a
feat: run on a single port (#3163)
* start v2

* start

* run

* some cleanup

* remove v2 pkg again

* simplify

* webauthn

* remove unused config

* fix login path in Dockerfile

* fix asset_generator.go

* health handler

* fix grpc web

* refactor

* merge

* build new main.go

* run new main.go

* update logging pkg

* fix error msg

* update logging

* cleanup

* cleanup

* go mod tidy

* change localDevMode

* fix customEndpoints

* update logging

* comments

* change local flag to external configs

* fix location generated go code

* fix

Co-authored-by: fforootd <florian@caos.ch>
2022-02-14 17:22:30 +01:00

41 lines
958 B
Go

package http
import (
"fmt"
"net/url"
)
func GetOriginFromURLString(s string) (string, error) {
parsed, err := url.Parse(s)
if err != nil {
return "", err
}
return fmt.Sprintf("%s://%s", parsed.Scheme, parsed.Host), nil
}
func IsOriginAllowed(allowList []string, origin string) bool {
for _, allowed := range allowList {
if allowed == origin {
return true
}
}
return false
}
//IsOrigin checks if provided string is an origin (scheme://hostname[:port]) without path, query or fragment
func IsOrigin(rawOrigin string) bool {
parsedUrl, err := url.Parse(rawOrigin)
if err != nil {
return false
}
return parsedUrl.Scheme != "" && parsedUrl.Host != "" && parsedUrl.Path == "" && len(parsedUrl.Query()) == 0 && parsedUrl.Fragment == ""
}
func BuildHTTP(hostname string, externalPort uint16, secure bool) string {
schema := "https"
if !secure {
schema = "http"
}
return fmt.Sprintf("%s://%s:%d", schema, hostname, externalPort)
}