package origincfg import "github.com/hlandau/degoutils/web/origin/originfuncs" import "gopkg.in/hlandau/easyconfig.v1/cflag" // The trust function to be used. Can be set by configurable 'trustforwarded'. var TrustPolicy = "last" var trustForwardedFlag = cflag.StringVar(nil, &TrustPolicy, "trustforwarded", "last", "What Forwarded headers to trust? (last|forwarded/1|x-real-ip)") // Registered trust functions. var trustFuncs = map[string]originfuncs.LegFunc{} func RegisterTrustFunc(name string, tf originfuncs.LegFunc) { trustFuncs[name] = tf } func init() { // Register trust functions. RegisterTrustFunc("forwarded/1", originfuncs.TrustForwardedN(1)) RegisterTrustFunc("x-real-ip", originfuncs.TrustXRealIP) RegisterTrustFunc("last", originfuncs.TrustLast) } func TrustByConfig(leg *originfuncs.Leg, distance int) bool { v := trustForwardedFlag.Value() f, ok := trustFuncs[v] return ok && f(leg, distance) } // Get trusted legs based on configuration. func TrustedLegs(legs []originfuncs.Leg) []originfuncs.Leg {
// Development mode? In development mode, the application server may behave // differently. Errors may be reported differently, assets may be reloaded // automatically, etc. // // Configurable 'devmode'. var DevMode bool var devModeFlag = cflag.BoolVar(nil, &DevMode, "devmode", false, "Development mode?") // Base directory. Some files may be looked for relative to this directory; templates, assets, etc. // // Configurable 'basedir'. var BaseDir string var baseDirFlag = cflag.StringVar(nil, &BaseDir, "basedir", "", "Base dir (containing assets, tpl directories, etc.)") // Base URL. This is the canonical base URL, which will be used in e.g. e. // mails. It should not have a trailing slash. // // Configurable 'baseurl'. var BaseURL string var baseURLFlag = cflag.StringVar(nil, &BaseURL, "baseurl", "", "Base URL (e.g. https://DOMAIN)") // Base domain. This may be used in circumstances in which an URL is not appropriate, but rather // a domain name is needed. // // Configurable 'basedomain'. var BaseDomain string