Documentation ¶
Index ¶
- Constants
- Variables
- func AsURL(s string) string
- func CompactHeadersMiddleware(next http.Handler, keys []string) http.Handler
- func EnvAltSvc(fallback string) string
- func EnvCert(fallback string) string
- func EnvHTTPPort(fallback string) string
- func EnvHost(fallback string) string
- func EnvKey(fallback string) string
- func EnvPort(fallback string) string
- func EnvUDPPort(fallback string) string
- func EnvUI(fallback string) string
- func ExtractURLPort(u *url.URL) string
- func Formatter(writer io.Writer, params handlers.LogFormatterParams)
- func GinLoggerMiddleware(next http.Handler) http.Handler
- func Graft(base, alt string) string
- func HostNotFoundHandler() http.Handler
- func Hyperlink(name, url string) string
- func InterceptMiddleware(next http.Handler) http.Handler
- func Isatty() bool
- func Jupyter(next http.Handler) http.Handler
- func LoggingMiddleware(next http.Handler) http.Handler
- func LookupEnv(key string) *string
- func LookupEnvPort(key string) *string
- func LookupHostTXT(domain, server string) ([]string, error)
- func MaybeHyperlink(l string) string
- func ParseBasicAuth(auth string) (username, password string, ok bool)
- func ParseDomainCandidates(p string) []string
- func ReverseProxy(addr string) http.Handler
- func ReverseProxyLogger() *log.Logger
- func ToIdna(s string) string
- func UnwrapInnermost(err error) error
- func WellKnownHealthMiddleware(next http.Handler) http.Handler
- type AugmentedHandler
- type Body
- type GinLogger
- type Interceptor
- type LogFormatter
- type LogFormatterParams
- type LogWriter
- type NotFoundData
Constants ¶
const NOT_FOUND_TEMPLATE = `Not found: {{.Host}}`
const WellKnownHealthPath = "/.well-known/health"
Variables ¶
var AllowAllCorsMiddleware = func(next http.Handler) http.Handler { return cors.AllowAll().Handler(next) }
var GzipMiddleware = handlers.CompressHandler
Functions ¶
func AsURL ¶ added in v0.2.4
AsURL expands :port and hostname to http://localhost:port & http://hostname respectively
func CompactHeadersMiddleware ¶ added in v0.0.5
func EnvHTTPPort ¶ added in v0.2.7
func EnvUDPPort ¶ added in v0.0.6
func ExtractURLPort ¶
ExtractURLPort returns the :port part from URL.Host (host[:port])
An empty string is returned if no port is found
func Formatter ¶ added in v0.0.7
func Formatter(writer io.Writer, params handlers.LogFormatterParams)
func HostNotFoundHandler ¶ added in v0.0.7
func Hyperlink ¶
Print Hyperlink via OSC 8 ansi sequence. The syntax is: 'OSC 8 ; params ; url ST text OSC 8 ; ; ST' for more info see https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
func InterceptMiddleware ¶ added in v0.1.4
InterceptMiddleware prints request & response info to stdout
func Jupyter ¶ added in v0.0.7
VSCode web edition makes cors request to /hub/api endpoint in order to determine if the backend api is a JupyterHub or JupyterLab/JupyterServer
If the Access-Control-Allow-Origin header is absent, the request will not make through. Here we add this header to make VSCode web happy
Tested on: - github.dev - vscode.dev - insider.vscode.dev
Needs to have Jupyter extension installed ¶
- /login is used to check if server has authentication enabled - /hub/api is used to check if server is JupyterHub
with authentication disabled, the /login endpoint won't respond with cors header so we need to manually add it to make vscode-web happy
jupyter server doesn't have the /hub/api endpoint, so the same hack needs to be applied
func LookupEnvPort ¶ added in v0.0.7
func LookupHostTXT ¶ added in v0.1.8
func MaybeHyperlink ¶
MaybeHyperlink turns input into ANSI hyperlink when stdin is a tty
func ParseBasicAuth ¶ added in v0.1.6
func ParseDomainCandidates ¶ added in v0.0.8
ParseDomainCandidates splits a path string like /a/b/cd/😏 into a list of subdomains: [a, b, cd, 😏]
when result is empty, a random subdomain will be assigned by the server
func ReverseProxy ¶ added in v0.0.7
ReverseProxy
- upstream: http://user:pass@example.com behavior: use upstream credential by default
- upstream: http://example.com behavior: passthrough client credential if any
- upstream: http://-@example.com behavior: don't pass any credential to upstream
func ReverseProxyLogger ¶ added in v0.2.11
func ToIdna ¶
ToIdna converts a string to its idna form at best effort Should only be used on the hostname part without port
func UnwrapInnermost ¶ added in v0.2.6
Types ¶
type AugmentedHandler ¶ added in v0.0.7
type GinLogger ¶ added in v0.1.0
type GinLogger struct {
// contains filtered or unexported fields
}
type Interceptor ¶ added in v0.1.4
type Interceptor struct { http.ResponseWriter StatusCode int }
func (*Interceptor) Flush ¶ added in v0.1.7
func (w *Interceptor) Flush()
func (*Interceptor) Hijack ¶ added in v0.1.6
func (w *Interceptor) Hijack() (net.Conn, *bufio.ReadWriter, error)
func (*Interceptor) WriteHeader ¶ added in v0.1.4
func (w *Interceptor) WriteHeader(statusCode int)
type LogFormatter ¶ added in v0.1.0
type LogFormatter func(params LogFormatterParams) string
type LogFormatterParams ¶ added in v0.1.0
type LogFormatterParams struct { Request *http.Request TimeStamp time.Time StatusCode int Latency time.Duration ClientIP string Host string Method string Proto string Path string ErrorMessage string BodySize int Keys map[string]interface{} }
func (*LogFormatterParams) IsOutputColor ¶ added in v0.1.0
func (p *LogFormatterParams) IsOutputColor() bool
func (*LogFormatterParams) MethodColor ¶ added in v0.1.0
func (p *LogFormatterParams) MethodColor() string
func (*LogFormatterParams) ResetColor ¶ added in v0.1.0
func (p *LogFormatterParams) ResetColor() string
func (*LogFormatterParams) StatusCodeColor ¶ added in v0.1.0
func (p *LogFormatterParams) StatusCodeColor() string
type LogWriter ¶ added in v0.1.0
type LogWriter struct {
// contains filtered or unexported fields
}
type NotFoundData ¶ added in v0.0.7
type NotFoundData struct {
Host string
}