Documentation ¶
Index ¶
- Constants
- Variables
- func ApplyJPath(data interface{}, jpath string) (interface{}, error)
- func DefaultFavicon() []byte
- func Dir(useLocal bool, name string) http.FileSystem
- func EvalInline(input string, data map[string]interface{}, funcs FuncMap, names ...string) (string, error)
- func FS(useLocal bool) http.FileSystem
- func FSByte(useLocal bool, name string) ([]byte, error)
- func FSMustByte(useLocal bool, name string) []byte
- func FSMustString(useLocal bool, name string) string
- func FSString(useLocal bool, name string) (string, error)
- func IsDirectoryErr(err error) bool
- func IsDirectoryError(err error) bool
- func IsHardStop(err error) bool
- func IsSameMount(first Mount, second Mount) bool
- func MinNonZero(data stats.Float64Data) (float64, error)
- func MultiReadCloser(readers ...io.Reader) *multiReadCloser
- func PrettifyHTML(in string, req *http.Request) (string, error)
- func RegisterActionStep(typeName string, performable Performable)
- func RegisterLogFormat(name string, format string)
- func RegisterPostprocessor(name string, ppfunc PostprocessorFunc)
- func RegisterProtocol(scheme string, protocol Protocol)
- func RegisterRenderer(name string, renderer Renderer)
- func TrimEmptyLines(in string, req *http.Request) (string, error)
- type Action
- type AddHandlerFunc
- type Authenticator
- type AuthenticatorConfig
- type AuthenticatorConfigs
- type BasicAuthenticator
- func (self *BasicAuthenticator) AddPasswdFile(filename string) error
- func (self *BasicAuthenticator) Authenticate(w http.ResponseWriter, req *http.Request) bool
- func (self *BasicAuthenticator) Callback(w http.ResponseWriter, req *http.Request)
- func (self *BasicAuthenticator) IsCallback(_ *url.URL) bool
- func (self *BasicAuthenticator) Name() string
- type Binding
- type BindingErrorAction
- type CSRF
- type Cookie
- type CookieSameSite
- type CsrfMethod
- type Engine
- type FileMount
- func (self *FileMount) GetMountPoint() string
- func (self *FileMount) GetTarget() string
- func (self *FileMount) Open(name string) (http.File, error)
- func (self *FileMount) OpenWithType(name string, req *http.Request, requestBody io.Reader) (*MountResponse, error)
- func (self *FileMount) String() string
- func (self *FileMount) WillRespondTo(name string, req *http.Request, requestBody io.Reader) bool
- type Fragment
- type FragmentSet
- func (self FragmentSet) DebugOutput() []byte
- func (self FragmentSet) Get(name string) (*Fragment, bool)
- func (self FragmentSet) HasLayout() bool
- func (self FragmentSet) Header(server *Server) TemplateHeader
- func (self *FragmentSet) Parse(name string, source io.Reader) error
- func (self *FragmentSet) Set(name string, header *TemplateHeader, data []byte) error
- type FuncMap
- type HttpProtocol
- type JaegerConfig
- type KV
- type LogConfig
- type MarkdownRenderer
- type Middleware
- type Mount
- type MountConfig
- type MountResponse
- func (self *MountResponse) Close() error
- func (self *MountResponse) GetFile() http.File
- func (self *MountResponse) GetPayload() interface{}
- func (self *MountResponse) IsDir() bool
- func (self *MountResponse) ModTime() time.Time
- func (self *MountResponse) Mode() os.FileMode
- func (self *MountResponse) Name() string
- func (self *MountResponse) Read(p []byte) (int, error)
- func (self *MountResponse) Readdir(count int) ([]os.FileInfo, error)
- func (self *MountResponse) Seek(offset int64, whence int) (int64, error)
- func (self *MountResponse) Size() int64
- func (self *MountResponse) Stat() (os.FileInfo, error)
- func (self *MountResponse) Sys() interface{}
- type OauthAuthenticator
- type PaginatorConfig
- type Performable
- type PostprocessorFunc
- type PrewriteFunc
- type ProcessStep
- type Protocol
- type ProtocolConfig
- type ProtocolRequest
- type ProtocolResponse
- type ProxyMount
- func (self *ProxyMount) GetMountPoint() string
- func (self *ProxyMount) GetTarget() string
- func (self *ProxyMount) Open(name string) (http.File, error)
- func (self *ProxyMount) OpenWithType(name string, req *http.Request, requestBody io.Reader) (res *MountResponse, err error)
- func (self *ProxyMount) String() string
- func (self *ProxyMount) WillRespondTo(name string, req *http.Request, requestBody io.Reader) bool
- type RateLimitConfig
- type Redirect
- type RedirectTo
- type RedisProtocol
- type RenderOptions
- type Renderer
- type RequestAuthenticator
- type RequestInfo
- type RequestTlsCertInfo
- type RequestTlsCertName
- type RequestTlsCertSan
- type RequestTlsInfo
- type RequestUrlInfo
- type RespondStep
- type ResultsPage
- type Routable
- type SassRenderer
- type ServeFunc
- type Serveable
- type Server
- func (self *Server) Connect(route string, handler http.HandlerFunc)
- func (self *Server) Delete(route string, handler http.HandlerFunc)
- func (self *Server) Get(route string, handler http.HandlerFunc)
- func (self *Server) GetTemplateData(req *http.Request, header *TemplateHeader) (FuncMap, map[string]interface{}, error)
- func (self *Server) GetTemplateFunctions(data map[string]interface{}, header *TemplateHeader) FuncMap
- func (self *Server) Handle(route string, handler http.Handler)
- func (self *Server) HandleFunc(route string, handler http.HandlerFunc)
- func (self *Server) Head(route string, handler http.HandlerFunc)
- func (self *Server) Initialize() error
- func (self *Server) IsInRootPath(path string) bool
- func (self *Server) ListenAndServe(address string) error
- func (self *Server) LoadConfig(filename string) error
- func (self *Server) LoadLayout(name string) (io.Reader, error)
- func (self *Server) Options(route string, handler http.HandlerFunc)
- func (self *Server) P(req *http.Request, param string, fallback ...interface{}) typeutil.Variant
- func (self *Server) Patch(route string, handler http.HandlerFunc)
- func (self *Server) Post(route string, handler http.HandlerFunc)
- func (self *Server) Put(route string, handler http.HandlerFunc)
- func (self *Server) RenderPath(w io.Writer, path string) error
- func (self *Server) RunStartCommand(scmds []*StartCommand, waitForCommand bool) (bool, error)
- func (self *Server) Serve(workers ...ServeFunc) error
- func (self *Server) ServeHTTP(w http.ResponseWriter, req *http.Request)
- func (self *Server) SetFileSystem(fs http.FileSystem)
- func (self *Server) SetMounts(mounts []Mount)
- func (self *Server) ShouldReturnSource(req *http.Request) bool
- func (self *Server) ToTemplateName(requestPath string) string
- func (self *Server) Trace(route string, handler http.HandlerFunc)
- type ShellAuthenticator
- type ShellStep
- type StartCommand
- type StaticAuthenticator
- type StepConfig
- type SwitchCase
- type Template
- func (self *Template) AddPostProcessors(postprocessors ...string) error
- func (self *Template) Engine() Engine
- func (self *Template) Funcs(funcs FuncMap)
- func (self *Template) ParseFragments(fragments FragmentSet) error
- func (self *Template) ParseFrom(r io.Reader) error
- func (self *Template) ParseString(input string) error
- func (self *Template) Render(w io.Writer, data interface{}, subtemplate string) error
- func (self *Template) SetDelimiters(open string, close string)
- func (self *Template) SetEngine(engine Engine)
- func (self *Template) SetHeaderOffset(offset int)
- func (self *Template) SetPrewriteFunc(fn func())
- type TemplateHeader
- type TemplateRenderer
- type TlsConfig
- type TraceMapping
Constants ¶
const ( ActionSummarize BindingErrorAction = `summarize` ActionPrint = `print` ActionContinue = `continue` ActionBreak = `break` ActionIgnore = `ignore` )
const ( SameSiteDefault CookieSameSite = `` SameSiteLax = `lax` SameSiteStrict = `strict` SameSiteNone = `none` )
const ApplicationName = `diecast`
const ApplicationSummary = `a standalone site templating engine that consumes REST services and renders static HTML output in realtime`
const ContentTemplateName = `content`
const ContextCsrfToken = `csrf-token`
const ContextErrorKey = `response-error-message`
const ContextRequestKey = `diecast-request-id`
const ContextResponseKey = `diecast-response`
const ContextStatusKey = `response-status-code`
const CsrfTokenLength = 32
const DebuggingQuerystringParam = `__viewsource`
const DefaultAddress = `127.0.0.1:28419`
const DefaultColorPalette = `munin`
const DefaultConfigFile = `diecast.yml`
const DefaultCsrfInjectFieldFormat = `<input type="hidden" name="%s" value="%s">`
const DefaultCsrfInjectFormFieldSelector = `form[method="post"], form[method="POST"], form[method="Post"]` // if you need more case permutations than this, you may override this default
const DefaultErrorsPath = `/_errors`
const DefaultHeaderJoiner = `,`
const DefaultLayoutsPath = `/_layouts`
const DefaultQueryJoiner = `,`
const DefaultRoutePrefix = `/`
const JaegerSpanKey = `jaeger-span`
const LayoutTemplateName = `layout`
Variables ¶
var AllowInsecureLoopbackBindings bool = true
var ApplicationVersion = build.Version
var Base32Alphabet = base32.NewEncoding(`abcdefghijklmnopqrstuvwxyz234567`)
var BindingClient = &http.Client{ Timeout: 60 * time.Second, }
var ConvertRoundToPlaces = 12
var DefaultActionStepTimeout = 10 * time.Second
var DefaultAutoindexFilename = `/autoindex.html`
var DefaultAutolayoutPatterns = []string{
`*.html`,
`*.md`,
}
var DefaultBindingTimeout = 60 * time.Second
var DefaultCsrfCookieName = `csrf_token`
var DefaultCsrfFormFieldName = `csrf_token`
var DefaultCsrfHeaderName = `X-CSRF-Token`
var DefaultCsrfInjectMediaTypes = []string{
`text/html`,
}
var DefaultFilterEnvVars = []string{
`_*`,
`*KEY*`,
`*PASSWORD*`,
`*PID*`,
`*HOST*`,
`*URL*`,
`*SECRET*`,
`*TOKEN*`,
`AWS_ACCESS_KEY_ID`,
`AWS_SECRET_ACCESS_KEY`,
`PROMPT_COMMAND`,
`PWD`,
}
var DefaultIndexFile = `index.html`
var DefaultLocale = language.AmericanEnglish
var DefaultLogFormat = `common`
var DefaultOauth2SessionCookieName = `DCO2SESSION`
var DefaultParamJoiner = `;`
var DefaultProtocol = `http`
var DefaultProxyMountTimeout = time.Duration(10) * time.Second
var DefaultRendererMappings = map[string]string{
`md`: `markdown`,
`scss`: `sass`,
}
var DefaultShellSessionCookieName = `DCSESSION`
var DefaultTemplatePatterns = []string{`*.html`, `*.md`, `*.scss`}
var DefaultTryExtensions = []string{`html`, `md`}
var DefaultVerifyFile = `/` + DefaultIndexFile
var DiecastUserAgentString = `diecast/` + ApplicationVersion
var DirectoryErr = errors.New(`is a directory`)
var ErrSkipEval = errors.New(`skip evaluation`)
var HeaderSeparator = []byte{'-', '-', '-'}
var HighlightTheme = `monokai`
var ITotallyUnderstandRunningArbitraryCommandsAsRootIsRealRealBad = false
var MaxBufferedBodySize int64 = 16535
var MountHaltErr = errors.New(`mount halted`)
var SassIndentString = ` `
Functions ¶
func ApplyJPath ¶ added in v1.19.0
func DefaultFavicon ¶ added in v1.19.0
func DefaultFavicon() []byte
func Dir ¶
func Dir(useLocal bool, name string) http.FileSystem
Dir returns a http.Filesystem for the embedded assets on a given prefix dir. If useLocal is true, the filesystem's contents are instead used.
func EvalInline ¶
func FS ¶
func FS(useLocal bool) http.FileSystem
FS returns a http.Filesystem for the embedded assets. If useLocal is true, the filesystem's contents are instead used.
func FSByte ¶
FSByte returns the named file from the embedded assets. If useLocal is true, the filesystem's contents are instead used.
func FSMustByte ¶
FSMustByte is the same as FSByte, but panics if name is not present.
func FSMustString ¶
FSMustString is the string version of FSMustByte.
func IsDirectoryErr ¶ added in v1.19.0
func IsDirectoryError ¶
func IsHardStop ¶
func IsSameMount ¶ added in v1.19.0
func MinNonZero ¶
func MinNonZero(data stats.Float64Data) (float64, error)
func MultiReadCloser ¶ added in v1.19.0
func RegisterActionStep ¶ added in v1.19.0
func RegisterActionStep(typeName string, performable Performable)
Register a performable step type to the given type name.
func RegisterLogFormat ¶ added in v1.19.0
Registers a new named format for log output
func RegisterPostprocessor ¶
func RegisterPostprocessor(name string, ppfunc PostprocessorFunc)
func RegisterProtocol ¶ added in v1.19.0
Register a new protocol handler that will handle URLs with the given scheme.
func RegisterRenderer ¶ added in v1.19.0
Types ¶
type Action ¶ added in v1.19.0
type Action struct { Name string `yaml:"name,omitempty" json:"name,omitempty"` // The name of this action Path string `yaml:"path" json:"path"` // The URL path this action is accessible from Method interface{} `yaml:"method" json:"method"` // The HTTP method(s) this action will respond to Steps []*StepConfig `yaml:"steps" json:"steps"` // The list of steps that are applied, in order, to the request body in order to generate a response }
func (*Action) ServeHTTP ¶ added in v1.19.0
func (self *Action) ServeHTTP(w http.ResponseWriter, req *http.Request)
Performs the action in response to an HTTP request, evaluating all action steps. Steps are responsible for generating and manipulating output. The output of the last step will be returned, or an error will be returned if not nil.
type AddHandlerFunc ¶ added in v1.19.0
type AddHandlerFunc func(verb string, route string, handler http.HandlerFunc) (string, string, http.HandlerFunc)
type Authenticator ¶
type AuthenticatorConfig ¶
type AuthenticatorConfig struct { Name string `yaml:"name,omitempty" json:"name,omitempty"` // The name of the Authenticator Type string `yaml:"type" json:"type"` // The type of Authenticator to create Paths []string `yaml:"paths" json:"paths"` // Which paths this Authenticator should apply to (defaults to all paths) Except []string `yaml:"except" json:"except"` // Specific paths this Authenticator should not cover (defaults to none) CallbackPath string `yaml:"callback" json:"callback"` // A secondary path this authenticator should redirect to (for multi-step Authenticators) Options map[string]interface{} `yaml:"options" json:"options"` // Type-specific options // contains filtered or unexported fields }
type AuthenticatorConfigs ¶
type AuthenticatorConfigs []AuthenticatorConfig
func (AuthenticatorConfigs) Authenticator ¶
func (self AuthenticatorConfigs) Authenticator(req *http.Request) (Authenticator, error)
type BasicAuthenticator ¶
type BasicAuthenticator struct {
// contains filtered or unexported fields
}
func NewBasicAuthenticator ¶
func NewBasicAuthenticator(config *AuthenticatorConfig) (*BasicAuthenticator, error)
func (*BasicAuthenticator) AddPasswdFile ¶
func (self *BasicAuthenticator) AddPasswdFile(filename string) error
func (*BasicAuthenticator) Authenticate ¶
func (self *BasicAuthenticator) Authenticate(w http.ResponseWriter, req *http.Request) bool
func (*BasicAuthenticator) Callback ¶ added in v1.19.0
func (self *BasicAuthenticator) Callback(w http.ResponseWriter, req *http.Request)
func (*BasicAuthenticator) IsCallback ¶ added in v1.19.0
func (self *BasicAuthenticator) IsCallback(_ *url.URL) bool
func (*BasicAuthenticator) Name ¶ added in v1.19.0
func (self *BasicAuthenticator) Name() string
type Binding ¶
type Binding struct { BodyParams map[string]interface{} `yaml:"body,omitempty" json:"body,omitempty"` // If the request receives an open-ended body, this will allow structured data to be passed in. DisableCache bool `yaml:"disable_cache,omitempty" json:"disable_cache,omitempty"` // Reserved for future use. Fallback interface{} `yaml:"fallback,omitempty" json:"fallback,omitempty"` // The value to place in $.bindings if the request fails. Formatter string `yaml:"formatter,omitempty" json:"formatter,omitempty"` // How to serialize BodyParams into a string before the request is made. Headers map[string]string `yaml:"headers,omitempty" json:"headers,omitempty"` // Additional headers to include in the request. IfStatus map[string]BindingErrorAction `yaml:"if_status,omitempty" json:"if_status,omitempty"` // Actions to take in response to specific numeric response status codes. Insecure bool `yaml:"insecure,omitempty" json:"insecure,omitempty"` // If the protocol supports an insecure request mode (e.g.: HTTPS), permit it in this case. Method string `yaml:"method,omitempty" json:"method,omitempty"` // The protocol-specific method to perform the request with. Name string `yaml:"name,omitempty" json:"name,omitempty"` // The name of the key in the $.bindings template variable. NoTemplate bool `yaml:"no_template,omitempty" json:"no_template,omitempty"` // Disable templating of variables in this binding. NotIfExpr string `yaml:"not_if,omitempty" json:"not_if,omitempty"` // Do not evaluate the binding if this expression yields a truthy value. OnError BindingErrorAction `yaml:"on_error,omitempty" json:"on_error,omitempty"` // Actions to take if the request fails. OnlyIfExpr string `yaml:"only_if,omitempty" json:"only_if,omitempty"` // Only evaluate the binding if this expression yields a truthy value. Optional bool `yaml:"optional,omitempty" json:"optional,omitempty"` // Whether the request failing will cause a page-wide error or be ignored. Paginate *PaginatorConfig `yaml:"paginate,omitempty" json:"paginate,omitempty"` // A specialized repeater configuration that automatically performs pagination on an upstream request, aggregating the results before returning them. ParamJoiner string `yaml:"param_joiner,omitempty" json:"param_joiner,omitempty"` // If a parameter is provided as an array, but must be a string in the request, how shall the array elements be joined. Params map[string]interface{} `yaml:"params,omitempty" json:"params,omitempty"` // A set of additional parameters to include in the request (e.g.: HTTP query string parameters) Parser string `yaml:"parser,omitempty" json:"parser,omitempty"` // How to parse the response content from the request. ProtocolOptions map[string]interface{} `yaml:"protocol,omitempty" json:"protocol,omitempty"` // An open-ended set of options that are available for protocol implementations to use. RawBody string `yaml:"rawbody,omitempty" json:"rawbody,omitempty"` // If the request receives an open-ended body, this will allow raw data to be passed in as-is. Repeat string `yaml:"repeat,omitempty" json:"repeat,omitempty"` // A templated value that yields an array. The binding request will be performed once for each array element, wherein the Resource value is passed into a template that includes the $index and $item variables, which represent the repeat array item's position and value, respectively. Resource string `yaml:"resource,omitempty" json:"resource,omitempty"` // The URL that specifies the protocol and resource to retrieve. SkipInheritHeaders bool `yaml:"skip_inherit_headers,omitempty" json:"skip_inherit_headers,omitempty"` // Do not passthrough the headers that were sent to the template from the client's browser, even if Passthrough mode is enabled. Timeout interface{} `yaml:"timeout,omitempty" json:"timeout,omitempty"` // A duration specifying the timeout for the request. Transform string `yaml:"transform,omitempty" json:"transform,omitempty"` // Specifies a JSONPath expression that can be used to transform the response data received from the binding into the data that is provided to the template. TlsCertificate string `yaml:"tlscrt,omitempty" json:"tlscrt,omitempty"` // Provide the path to a TLS client certificate to present if the server requests one. TlsKey string `yaml:"tlskey,omitempty" json:"tlskey,omitempty"` // Provide the path to a TLS client certificate key to present if the server requests one. OnlyPaths []string `yaml:"only,omitempty" json:"only,omitempty"` // A list of request paths and glob patterns, ANY of which the binding will evaluate on. ExceptPaths []string `yaml:"except,omitempty" json:"except,omitempty"` // A list of request paths and glob patterns, ANY of which the binding will NOT evaluate on. Restrict interface{} `yaml:"restrict,omitempty" json:"restrict,omitempty"` // DEPRECATED: use OnlyPaths/ExceptPaths instead. // contains filtered or unexported fields }
type BindingErrorAction ¶
type BindingErrorAction string
type CSRF ¶ added in v1.19.0
type CSRF struct { Enable bool `yaml:"enable" json:"enable"` // Whether to enable stateless CSRF protection Except []string `yaml:"except" json:"except"` // A list of paths and path globs that should not be covered by CSRF protection Cookie *Cookie `yaml:"cookie" json:"cookie"` // Specify default fields for the CSRF cookie that is set HeaderName string `yaml:"header" json:"header"` // The name of the HTTP header that CSRF tokens may be present in (default: X-CSRF-Token) FormFieldName string `yaml:"field" json:"field"` // The name of the HTML form fieldthat CSRF tokens may be present in (default: csrf_token) InjectFormFields bool `yaml:"injectFormFields" json:"injectFormFields"` // If true, a postprocessor will be added that injects a hidden <input> field into all <form> elements returned from Diecast InjectFormFieldSelector string `yaml:"injectFormFieldSelector" json:"injectFormFieldSelector"` // A CSS selector used to locate <form> tags that need the CSRF <input> field injected. InjectFormFieldTemplate string `yaml:"injectFormFieldTemplate" json:"injectFormFieldTemplate"` // Specify the format string that will be used to replace </form> tags with the injected field. InjectableMediaTypes []string `yaml:"injectableMediaTypes" json:"injectableMediaTypes"` // Specify a list of Media Types (e.g.: MIME or Content-Types) that will have injection attempted on them (if enabled) // contains filtered or unexported fields }
func (*CSRF) GetCookieName ¶ added in v1.19.0
func (*CSRF) GetFormFieldName ¶ added in v1.19.0
func (*CSRF) GetHeaderName ¶ added in v1.19.0
type Cookie ¶ added in v1.19.0
type Cookie struct { Name string `yaml:"name,omitempty" json:"name,omitempty"` Value interface{} `yaml:"-" json:"value,omitempty"` Path string `yaml:"path,omitempty" json:"path,omitempty"` Domain string `yaml:"domain,omitempty" json:"domain,omitempty"` MaxAge *int `yaml:"maxAge,omitempty" json:"maxAge,omitempty"` Secure *bool `yaml:"secure,omitempty" json:"secure,omitempty"` HttpOnly *bool `yaml:"httpOnly,omitempty" json:"httpOnly,omitempty"` SameSite CookieSameSite `yaml:"sameSite,omitempty" json:"sameSite,omitempty"` }
type CookieSameSite ¶ added in v1.19.0
type CookieSameSite string
func MakeCookieSameSite ¶ added in v1.19.0
func MakeCookieSameSite(sameSite http.SameSite) CookieSameSite
func (CookieSameSite) SameSite ¶ added in v1.19.0
func (self CookieSameSite) SameSite() http.SameSite
type CsrfMethod ¶ added in v1.19.0
type CsrfMethod string
const ( DoubleSubmitCookie CsrfMethod = `cookie` HMAC = `hmac` )
type FileMount ¶
type FileMount struct { MountPoint string `json:"mount"` Path string `json:"source"` Passthrough bool `json:"passthrough"` ResponseHeaders map[string][]string `json:"response_headers,omitempty"` ResponseCode int `json:"response_code"` FileSystem http.FileSystem `json:"-"` }
A FileMount exposes the contents of a given filesystem directory.
func (*FileMount) GetMountPoint ¶
func (*FileMount) OpenWithType ¶
type Fragment ¶ added in v1.19.0
type Fragment struct { Name string Header *TemplateHeader Data []byte }
type FragmentSet ¶ added in v1.19.0
type FragmentSet []*Fragment
func (FragmentSet) DebugOutput ¶ added in v1.19.0
func (self FragmentSet) DebugOutput() []byte
func (FragmentSet) Get ¶ added in v1.19.0
func (self FragmentSet) Get(name string) (*Fragment, bool)
func (FragmentSet) HasLayout ¶ added in v1.19.0
func (self FragmentSet) HasLayout() bool
func (FragmentSet) Header ¶ added in v1.19.0
func (self FragmentSet) Header(server *Server) TemplateHeader
func (*FragmentSet) Parse ¶ added in v1.19.0
func (self *FragmentSet) Parse(name string, source io.Reader) error
func (*FragmentSet) Set ¶ added in v1.19.0
func (self *FragmentSet) Set(name string, header *TemplateHeader, data []byte) error
type FuncMap ¶
type FuncMap map[string]interface{}
func GetFunctions ¶ added in v1.19.0
func GetStandardFunctions ¶
type HttpProtocol ¶ added in v1.19.0
type HttpProtocol struct { }
The HTTP binding protocol is used to interact with web servers and RESTful APIs. It is specified with URLs that use the http:// or https:// schemes.
func (*HttpProtocol) Retrieve ¶ added in v1.19.0
func (self *HttpProtocol) Retrieve(rr *ProtocolRequest) (*ProtocolResponse, error)
type JaegerConfig ¶ added in v1.19.0
type JaegerConfig struct { Enable bool `yaml:"enable" json:"enable"` // Explicitly enable or disable Jaeger tracing ServiceName string `yaml:"service" json:"service"` // Set the service name that traces will fall under. Agent string `yaml:"agent" json:"agent"` // Specify the host:port of a local UDP agent to send traces to. Collector string `yaml:"collector" json:"collector"` // Specify the collector address to sent traces to. Overrides "agent" if set. Username string `yaml:"username" json:"username"` // Provides a username to authenticate with the collector. Password string `yaml:"password" json:"password"` // Provides a password to authenticate with the collector. QueueSize int `yaml:"queueSize" json:"queueSize"` // Specify the size of the queue for outgoing reports. FlushInterval string `yaml:"flushInterval" json:"flushInterval"` // Duration specifying how frequently queued reports should be flushed. Tags map[string]interface{} `yaml:"tags" json:"tags"` // A set of key-value pairs that are included in every trace. SamplingType string `yaml:"sampling" json:"sampling"` // Specifies the type of sampling to use: const, probabilistic, rateLimiting, or remote. SamplingParam float64 `yaml:"samplingParam" json:"samplingParam"` // A type-specific parameter used to configure that type of sampling; const: 0 or 1, probabilistic: 0.0-1.0, rateLimiting: max number of spans per seconds, remote: same as probabilistic. SamplingServerURL string `yaml:"samplingUrl" json:"samplingUrl"` // The sampling server URL for the "remote" sampling type. SamplingRefreshInterval string `yaml:"samplingRefreshInterval" json:"samplingRefreshInterval"` // How frequently to poll the remote sampling server. SamplingMaxOperations int `yaml:"samplingMaxOps" json:"samplingMaxOps"` // A maximum number of operations for certain sampling modes. OperationsMappings []*TraceMapping `yaml:"operations" json:"operations"` // Maps regular expressions used to match specific routes to the operation name that will be emitted in traces. Without a matching expression, traces will be named by the calling HTTP method and Request URI. The string being tested by these regular expressions is the one that would be emitted otherwise; so "GET /path/to/file" }
type LogConfig ¶ added in v1.19.0
type LogConfig struct { Format string `yaml:"format" json:"format"` // configure the output format for logging requests Destination string `yaml:"destination" json:"destination"` // specify where logs should be written to Truncate bool `yaml:"truncate" json:"truncate"` // if true, the output log file will be truncated on startup Colorize bool `yaml:"colorize" json:"colorize"` // if false, log output will not be colorized }
type MarkdownRenderer ¶ added in v1.19.0
type MarkdownRenderer struct {
// contains filtered or unexported fields
}
func (*MarkdownRenderer) Render ¶ added in v1.19.0
func (self *MarkdownRenderer) Render(w http.ResponseWriter, req *http.Request, options RenderOptions) error
func (*MarkdownRenderer) SetPrewriteFunc ¶ added in v1.19.0
func (self *MarkdownRenderer) SetPrewriteFunc(fn PrewriteFunc)
func (*MarkdownRenderer) SetServer ¶ added in v1.19.0
func (self *MarkdownRenderer) SetServer(server *Server)
func (*MarkdownRenderer) ShouldPrerender ¶ added in v1.19.0
func (self *MarkdownRenderer) ShouldPrerender() bool
type Middleware ¶ added in v1.19.0
type Middleware func(w http.ResponseWriter, req *http.Request) bool
A function that receives the current request, ResponseWriter, and returns whether to call the next middleware in the stack (true) or to stop processing the request immediately (false).
type Mount ¶
type Mount interface { Open(string) (http.File, error) OpenWithType(string, *http.Request, io.Reader) (*MountResponse, error) WillRespondTo(string, *http.Request, io.Reader) bool GetMountPoint() string GetTarget() string }
func NewMountFromSpec ¶
type MountConfig ¶
type MountConfig struct { Mount string `yaml:"mount" json:"mount"` // The URL path that this mount will respond to To string `yaml:"to" json:"to"` // The upstream URL or local filesystem path that will serve this path Options map[string]interface{} `yaml:"options" json:"options"` // Mount-specific options }
type MountResponse ¶
type MountResponse struct { ContentType string StatusCode int Metadata map[string][]string RedirectTo string RedirectCode int // contains filtered or unexported fields }
func NewMountResponse ¶
func NewMountResponse(name string, size int64, payload interface{}) *MountResponse
func (*MountResponse) Close ¶
func (self *MountResponse) Close() error
func (*MountResponse) GetFile ¶
func (self *MountResponse) GetFile() http.File
func (*MountResponse) GetPayload ¶
func (self *MountResponse) GetPayload() interface{}
func (*MountResponse) IsDir ¶
func (self *MountResponse) IsDir() bool
func (*MountResponse) ModTime ¶
func (self *MountResponse) ModTime() time.Time
func (*MountResponse) Mode ¶
func (self *MountResponse) Mode() os.FileMode
func (*MountResponse) Name ¶
func (self *MountResponse) Name() string
func (*MountResponse) Readdir ¶
func (self *MountResponse) Readdir(count int) ([]os.FileInfo, error)
func (*MountResponse) Seek ¶
func (self *MountResponse) Seek(offset int64, whence int) (int64, error)
func (*MountResponse) Size ¶
func (self *MountResponse) Size() int64
func (*MountResponse) Sys ¶
func (self *MountResponse) Sys() interface{}
type OauthAuthenticator ¶ added in v1.19.0
type OauthAuthenticator struct {
// contains filtered or unexported fields
}
func NewOauthAuthenticator ¶ added in v1.19.0
func NewOauthAuthenticator(config *AuthenticatorConfig) (*OauthAuthenticator, error)
func (*OauthAuthenticator) Authenticate ¶ added in v1.19.0
func (self *OauthAuthenticator) Authenticate(w http.ResponseWriter, req *http.Request) bool
func (*OauthAuthenticator) Callback ¶ added in v1.19.0
func (self *OauthAuthenticator) Callback(w http.ResponseWriter, req *http.Request)
OAuth2: Leg 2: receive callback from consent page, validate session, and set session cookie
func (*OauthAuthenticator) IsCallback ¶ added in v1.19.0
func (self *OauthAuthenticator) IsCallback(u *url.URL) bool
func (*OauthAuthenticator) Name ¶ added in v1.19.0
func (self *OauthAuthenticator) Name() string
type PaginatorConfig ¶ added in v1.19.0
type PaginatorConfig struct { Total string `yaml:"total" json:"total"` Count string `yaml:"count" json:"count"` Done string `yaml:"done" json:"done"` Maximum int64 `yaml:"max" json:"max"` Data string `yaml:"data" json:"data"` QueryStrings map[string]string `yaml:"params" json:"params"` Headers map[string]string `yaml:"headers" json:"headers"` }
type Performable ¶ added in v1.19.0
type Performable interface {
Perform(config *StepConfig, w http.ResponseWriter, req *http.Request, prev *StepConfig) (interface{}, error)
}
type PrewriteFunc ¶ added in v1.19.0
type ProcessStep ¶ added in v1.19.0
type ProcessStep struct{}
[type=process] Process the output of the previous step by performing a sequence of discrete
operations on the data.
-------------------------------------------------------------------------------------------------
func (*ProcessStep) Perform ¶ added in v1.19.0
func (self *ProcessStep) Perform(config *StepConfig, w http.ResponseWriter, req *http.Request, prev *StepConfig) (interface{}, error)
type Protocol ¶ added in v1.19.0
type Protocol interface {
Retrieve(*ProtocolRequest) (*ProtocolResponse, error)
}
type ProtocolConfig ¶ added in v1.19.0
type ProtocolConfig map[string]interface{}
type ProtocolRequest ¶ added in v1.19.0
type ProtocolRequest struct { Verb string URL *url.URL Binding *Binding Request *http.Request Header *TemplateHeader TemplateData map[string]interface{} TemplateFuncs FuncMap DefaultTimeout time.Duration AdditionalHeaders map[string]interface{} }
func (*ProtocolRequest) Conf ¶ added in v1.19.0
func (self *ProtocolRequest) Conf(proto string, key string, fallbacks ...interface{}) typeutil.Variant
type ProtocolResponse ¶ added in v1.19.0
type ProtocolResponse struct { MimeType string StatusCode int Raw interface{} // contains filtered or unexported fields }
func (*ProtocolResponse) Close ¶ added in v1.19.0
func (self *ProtocolResponse) Close() error
func (*ProtocolResponse) PeekLen ¶ added in v1.19.0
func (self *ProtocolResponse) PeekLen() (int64, error)
type ProxyMount ¶
type ProxyMount struct { MountPoint string `json:"-"` URL string `json:"-"` Method string `json:"method,omitempty"` Headers map[string]interface{} `json:"headers,omitempty"` ResponseHeaders map[string]interface{} `json:"response_headers,omitempty"` ResponseCode int `json:"response_code"` RedirectOnSuccess string `json:"redirect_on_success"` Params map[string]interface{} `json:"params,omitempty"` Timeout interface{} `json:"timeout,omitempty"` PassthroughRequests bool `json:"passthrough_requests"` PassthroughHeaders bool `json:"passthrough_headers"` PassthroughQueryStrings bool `json:"passthrough_query_strings"` PassthroughBody bool `json:"passthrough_body"` PassthroughErrors bool `json:"passthrough_errors"` PassthroughRedirects bool `json:"passthrough_redirects"` PassthroughUserAgent bool `json:"passthrough_user_agent"` StripPathPrefix string `json:"strip_path_prefix"` AppendPathPrefix string `json:"append_path_prefix"` Insecure bool `json:"insecure"` BodyBufferSize int64 `json:"body_buffer_size"` CloseConnection *bool `json:"close_connection"` Client *http.Client // contains filtered or unexported fields }
func (*ProxyMount) GetMountPoint ¶
func (self *ProxyMount) GetMountPoint() string
func (*ProxyMount) GetTarget ¶ added in v1.19.0
func (self *ProxyMount) GetTarget() string
func (*ProxyMount) OpenWithType ¶
func (self *ProxyMount) OpenWithType(name string, req *http.Request, requestBody io.Reader) (res *MountResponse, err error)
func (*ProxyMount) String ¶
func (self *ProxyMount) String() string
func (*ProxyMount) WillRespondTo ¶
type RateLimitConfig ¶ added in v1.19.0
type RateLimitConfig struct { Enable bool `yaml:"enable" json:"enable"` Limit string `yaml:"limit" json:"limit"` // Specify a rate limit string (e.g.: "1r/s", "200r/m") PerClient bool `yaml:"per_client" json:"per_client"` // Specify that the limit should be applied per-client instead of globally. Penalty string `yaml:"penalty" json:"penalty"` // An amount of time to sleep instead of returning an HTTP 429 error on rate limited requests }
type RedirectTo ¶
type RedirectTo string
func (RedirectTo) Error ¶
func (self RedirectTo) Error() string
type RedisProtocol ¶ added in v1.19.0
type RedisProtocol struct { }
The Redis binding protocol is used to retrieve or modify items in a Redis server. It is specified with URLs that use the redis://[host[:port]]/db/key scheme.
Protocol Options ¶
redis.default_host (localhost:6379) Specifies the hostname:port to use if a resource URI does not specify one.
redis.max_idle (10) The maximum number of idle connections to maintain in a connection pool.
redis.idle_timeout (120s) The maximum idle time of a connection before it is closed.
redis.max_lifetime (10m) The maximum amount of time a connection can remain open before being recycled.
func (*RedisProtocol) Retrieve ¶ added in v1.19.0
func (self *RedisProtocol) Retrieve(rr *ProtocolRequest) (*ProtocolResponse, error)
type RenderOptions ¶ added in v1.19.0
type RenderOptions struct { Header *TemplateHeader HeaderOffset int FunctionSet FuncMap Input io.ReadCloser Fragments FragmentSet Data map[string]interface{} MimeType string RequestedPath string Timeout time.Duration }
type Renderer ¶ added in v1.19.0
type Renderer interface { SetPrewriteFunc(PrewriteFunc) SetServer(*Server) Render(w http.ResponseWriter, req *http.Request, options RenderOptions) error ShouldPrerender() bool }
type RequestAuthenticator ¶ added in v1.19.0
type RequestAuthenticator struct {
// contains filtered or unexported fields
}
func NewRequestAuthenticator ¶ added in v1.19.0
func NewRequestAuthenticator(config *AuthenticatorConfig) (*RequestAuthenticator, error)
func (*RequestAuthenticator) Authenticate ¶ added in v1.19.0
func (self *RequestAuthenticator) Authenticate(w http.ResponseWriter, req *http.Request) bool
func (*RequestAuthenticator) Callback ¶ added in v1.19.0
func (self *RequestAuthenticator) Callback(w http.ResponseWriter, req *http.Request)
func (*RequestAuthenticator) IsCallback ¶ added in v1.19.0
func (self *RequestAuthenticator) IsCallback(_ *url.URL) bool
func (*RequestAuthenticator) Name ¶ added in v1.19.0
func (self *RequestAuthenticator) Name() string
type RequestInfo ¶ added in v1.19.0
type RequestInfo struct { ID string `json:"id"` Timestamp int64 `json:"timestamp"` Method string `json:"method"` Protocol string `json:"protocol"` ContentLength int64 `json:"length"` TransferEncoding []string `json:"encoding"` Headers map[string]interface{} `json:"headers"` Cookies map[string]Cookie `json:"cookies"` RemoteIP string `json:"remote_ip"` RemotePort int `json:"remote_port"` RemoteAddr string `json:"remote_address"` Host string `json:"host"` URL RequestUrlInfo `json:"url"` TLS *RequestTlsInfo `json:"tls"` CSRFToken string `json:"csrftoken,omitempty"` }
func (*RequestInfo) Cookie ¶ added in v1.19.0
func (self *RequestInfo) Cookie(key string) *Cookie
type RequestTlsCertInfo ¶ added in v1.19.0
type RequestTlsCertInfo struct { Issuer RequestTlsCertName `json:"issuer"` Subject RequestTlsCertName `json:"subject"` NotBefore time.Time `json:"not_before"` NotAfter time.Time `json:"not_after"` SecondsLeft int `json:"seconds_left"` OcspServer []string `json:"ocsp_server"` IssuingCertUrl []string `json:"issuing_cert_url"` Version int `json:"version"` SerialNumber string `json:"serialnumber"` SubjectAlternativeName *RequestTlsCertSan `json:"san"` }
type RequestTlsCertName ¶ added in v1.19.0
type RequestTlsCertName struct { SerialNumber string `json:"serialnumber"` CommonName string `json:"common"` Country string `json:"country"` Organization string `json:"organization"` OrganizationalUnit string `json:"orgunit"` Locality string `json:"locality"` State string `json:"state"` StreetAddress string `json:"street"` PostalCode string `json:"postalcode"` }
type RequestTlsCertSan ¶ added in v1.19.0
type RequestTlsInfo ¶ added in v1.19.0
type RequestTlsInfo struct { Version string `json:"version"` HandshakeComplete bool `json:"handshake_complete"` DidResume bool `json:"did_resume"` CipherSuite string `json:"cipher_suite"` NegotiatedProtocol string `json:"negotiated_protocol"` NegotiatedProtocolIsMutual bool `json:"negotiated_protocol_is_mutual"` ServerName string `json:"server_name"` TlsUnique []byte `json:"tls_unique"` Client RequestTlsCertInfo `json:"client"` ClientChain []RequestTlsCertInfo `json:"client_chain"` }
type RequestUrlInfo ¶ added in v1.19.0
type RequestUrlInfo struct { Unmodified string `json:"unmodified"` String string `json:"string"` Scheme string `json:"scheme"` Host string `json:"host"` Port int `json:"port"` Path string `json:"path"` Fragment string `json:"fragment"` Query map[string]interface{} `json:"query"` Params []KV `json:"params"` }
func (RequestUrlInfo) ParamsSlice ¶ added in v1.19.0
func (self RequestUrlInfo) ParamsSlice() []interface{}
type RespondStep ¶ added in v1.19.0
type RespondStep struct{}
[type=respond] Configure the HTTP response headers and status. -------------------------------------------------------------------------------------------------
func (*RespondStep) Perform ¶ added in v1.19.0
func (self *RespondStep) Perform(config *StepConfig, w http.ResponseWriter, req *http.Request, prev *StepConfig) (interface{}, error)
type ResultsPage ¶ added in v1.19.0
type Routable ¶ added in v1.19.0
type Routable interface { P(req *http.Request, param string, fallback ...interface{}) typeutil.Variant Get(route string, handler http.HandlerFunc) Head(route string, handler http.HandlerFunc) Post(route string, handler http.HandlerFunc) Put(route string, handler http.HandlerFunc) Delete(route string, handler http.HandlerFunc) Patch(route string, handler http.HandlerFunc) Options(route string, handler http.HandlerFunc) Connect(route string, handler http.HandlerFunc) Trace(route string, handler http.HandlerFunc) HandleFunc(route string, handler http.HandlerFunc) Handle(route string, handler http.Handler) }
type SassRenderer ¶ added in v1.19.0
type SassRenderer struct {
// contains filtered or unexported fields
}
func (*SassRenderer) Render ¶ added in v1.19.0
func (self *SassRenderer) Render(w http.ResponseWriter, req *http.Request, options RenderOptions) error
func (*SassRenderer) SetPrewriteFunc ¶ added in v1.19.0
func (self *SassRenderer) SetPrewriteFunc(fn PrewriteFunc)
func (*SassRenderer) SetServer ¶ added in v1.19.0
func (self *SassRenderer) SetServer(server *Server)
func (*SassRenderer) ShouldPrerender ¶ added in v1.19.0
func (self *SassRenderer) ShouldPrerender() bool
type Server ¶
type Server struct { Actions []*Action `yaml:"actions" json:"actions"` // Configure routes and actions to execute when those routes are requested. AdditionalFunctions template.FuncMap `yaml:"-" json:"-"` // Allow for the programmatic addition of extra functions for use in templates. Address string `yaml:"address" json:"address"` // The host:port address the server is listening on Authenticators AuthenticatorConfigs `yaml:"authenticators" json:"authenticators"` // A set of authenticator configurations used to protect some or all routes. Autoindex bool `yaml:"autoindex" json:"autoindex"` // Specify that requests that terminate at a filesystem directory should automatically generate an index listing of that directory. AutoindexTemplate string `yaml:"autoindexTemplate" json:"autoindexTemplate"` // If Autoindex is enabled, this allows the template used to generate the index page to be customized. AutolayoutPatterns []string `yaml:"autolayoutPatterns" json:"autolayoutPatterns"` // Which types of files will automatically have layouts applied. BaseHeader *TemplateHeader `yaml:"header" json:"header"` // A default header that all templates will inherit from. BinPath string `yaml:"-" json:"-"` // Exposes the location of the diecast binary BindingPrefix string `yaml:"bindingPrefix" json:"bindingPrefix"` // Specify a string to prefix all binding resource values that start with "/" Bindings []Binding `yaml:"bindings" json:"bindings"` // Top-level bindings that apply to every rendered template DefaultPageObject map[string]interface{} `yaml:"-" json:"-"` // DisableCommands bool `yaml:"disable_commands" json:"disable_commands"` // Disable the execution of PrestartCommands and StartCommand . DisableTimings bool `yaml:"disableTimings" json:"disableTimings"` // Disable emitting per-request Server-Timing headers to aid in tracing bottlenecks and performance issues. EnableDebugging bool `yaml:"debug" json:"debug"` // Enables additional options for debugging applications. Caution: can expose secrets and other sensitive data. DebugDumpRequests map[string]string `yaml:"debugDumpRequests" json:"debugDumpRequests"` // An object keyed on path globs whose values are a directory where matching requests are dumped in their entirety as text files. EnableLayouts bool `yaml:"enableLayouts" json:"enableLayouts"` // Specifies whether layouts are enabled Environment string `yaml:"environment" json:"environment"` // Specify the environment for loading environment-specific configuration files in the form "diecast.env.yml" ErrorsPath string `yaml:"errors" json:"errors"` // The path to the errors template directory ExposeEnvVars []string `yaml:"exposeEnvVars" json:"exposeEnvVars"` // a list of glob patterns matching environment variable names that should always be exposed FaviconPath string `yaml:"favicon" json:"favicon"` // TODO: favicon autogenerator: Specifies the relative path to the file containing the /favicon.ico file. This path can point to a Windows Icon (.ico), GIF, PNG, JPEG, or Bitmap (.bmp). If necessary, the file will be converted and stored in memory to the ICO format. FilterEnvVars []string `yaml:"filterEnvVars" json:"filterEnvVars"` // a list of glob patterns matching environment variable names that should not be exposed GlobalHeaders map[string]interface{} `yaml:"globalHeaders,omitempty" json:"globalHeaders,omitempty"` // A set of HTTP headers that should be added to EVERY response Diecast returns, regardless of whether it originates from a template, mount, or other configuration. IndexFile string `yaml:"indexFile" json:"indexFile"` // The name of the template file to use when a directory is requested. LayoutPath string `yaml:"layouts" json:"layouts"` // The path to the layouts template directory Locale string `yaml:"locale" json:"locale"` // Specify the default locale for pages being served. MountConfigs []MountConfig `yaml:"mounts" json:"mounts"` // A list of mount configurations read from the diecast.yml config file. Mounts []Mount `yaml:"-" json:"-"` // The set of all registered mounts. OnAddHandler AddHandlerFunc `yaml:"-" json:"-"` // A function that can be used to intercept handlers being added to the server. OverridePageObject map[string]interface{} `yaml:"-" json:"-"` // PrestartCommands []*StartCommand `yaml:"prestart" json:"prestart"` // A command that will be executed before the server is started. Protocols map[string]ProtocolConfig `yaml:"protocols" json:"protocols"` // Setup global configuration details for Binding Protocols RendererMappings map[string]string `yaml:"rendererMapping" json:"rendererMapping"` // Map file extensions to preferred renderers for a given file type. RootPath string `yaml:"root" json:"root"` // The filesystem location where templates and files are served from RoutePrefix string `yaml:"routePrefix" json:"routePrefix"` // If specified, all requests must be prefixed with this string. StartCommands []*StartCommand `yaml:"start" json:"start"` // A command that will be executed after the server is confirmed running. TLS *TlsConfig `yaml:"tls" json:"tls"` // where SSL/TLS configuration is stored TemplatePatterns []string `yaml:"patterns" json:"patterns"` // A set of glob patterns specifying which files will be rendered as templates. Translations map[string]interface{} `yaml:"translations,omitempty" json:"translations,omitempty"` // Stores translations for use with the i18n and l10n functions. Keys values represent the TrustedRootPEMs []string `yaml:"trustedRootPEMs" json:"trustedRootPEMs"` // List of filenames containing PEM-encoded X.509 TLS certificates that represent trusted authorities. Use to validate certificates signed by an internal, non-public authority. TryExtensions []string `yaml:"tryExtensions" json:"tryExtensions"` // Try these file extensions when looking for default (i.e.: "index") files. If IndexFile has an extension, it will be stripped first. TryLocalFirst bool `yaml:"localFirst" json:"localFirst"` // Whether to attempt to locate a local file matching the requested path before attempting to find a template. VerifyFile string `yaml:"verifyFile" json:"verifyFile"` // A file that must exist and be readable before starting the server. PreserveConnections bool `yaml:"preserveConnections" json:"preserveConnections"` // Don't add the "Connection: close" header to every response. CSRF *CSRF `yaml:"csrf" json:"csrf"` // configures CSRF protection BeforeHandlers []Middleware `yaml:"-" json:"-"` // contains a stack of Middleware functions that are run before handling the request AfterHandlers []http.HandlerFunc `yaml:"-" json:"-"` // contains a stack of HandlerFuncs that are run after handling the request. These functions cannot stop the request, as it's already been written to the client. Protocol string `yaml:"protocol" json:"protocol"` // Specify which HTTP protocol to use ("http", "http2", "quic", "http3") RateLimit *RateLimitConfig `yaml:"ratelimit" json:"ratelimit"` // Specify a rate limiting configuration. BindingTimeout interface{} `yaml:"bindingTimeout" json:"bindingTimeout"` // Sets the default timeout for bindings that don't explicitly set one. JaegerConfig *JaegerConfig `yaml:"jaeger" json:"jaeger"` // Configures distributed tracing using Jaeger. // contains filtered or unexported fields }
func (*Server) Connect ¶ added in v1.19.0
func (self *Server) Connect(route string, handler http.HandlerFunc)
Add a handler for an HTTP CONNECT endpoint.
func (*Server) Delete ¶ added in v1.19.0
func (self *Server) Delete(route string, handler http.HandlerFunc)
Add a handler for an HTTP DELETE endpoint.
func (*Server) Get ¶ added in v1.19.0
func (self *Server) Get(route string, handler http.HandlerFunc)
Add a handler for an HTTP GET endpoint.
func (*Server) GetTemplateData ¶
func (*Server) GetTemplateFunctions ¶
func (self *Server) GetTemplateFunctions(data map[string]interface{}, header *TemplateHeader) FuncMap
Retrieves the set of standard template functions, as well as functions for working with data in the current request.
func (*Server) HandleFunc ¶ added in v1.19.0
func (self *Server) HandleFunc(route string, handler http.HandlerFunc)
Add a handler for an endpoint (any HTTP method.)
func (*Server) Head ¶ added in v1.19.0
func (self *Server) Head(route string, handler http.HandlerFunc)
Add a handler for an HTTP HEAD endpoint.
func (*Server) Initialize ¶
func (*Server) IsInRootPath ¶ added in v1.19.0
func (*Server) ListenAndServe ¶
func (*Server) LoadConfig ¶
func (*Server) Options ¶ added in v1.19.0
func (self *Server) Options(route string, handler http.HandlerFunc)
Add a handler for an HTTP OPTIONS endpoint.
func (*Server) P ¶ added in v1.19.0
Return the value of a URL parameter within a given request handler.
func (*Server) Patch ¶ added in v1.19.0
func (self *Server) Patch(route string, handler http.HandlerFunc)
Add a handler for an HTTP PATCH endpoint.
func (*Server) Post ¶ added in v1.19.0
func (self *Server) Post(route string, handler http.HandlerFunc)
Add a handler for an HTTP POST endpoint.
func (*Server) Put ¶ added in v1.19.0
func (self *Server) Put(route string, handler http.HandlerFunc)
Add a handler for an HTTP PUT endpoint.
func (*Server) RenderPath ¶ added in v1.19.0
Perform an end-to-end render of a single path, writing the output to the given writer, then exit.
func (*Server) RunStartCommand ¶
func (self *Server) RunStartCommand(scmds []*StartCommand, waitForCommand bool) (bool, error)
func (*Server) Serve ¶
Start a long-running webserver. If provided, the functions provided will be run in parallel after the server has started. If any of them return a non-nil error, the server will stop and this method will return that error.
func (*Server) SetFileSystem ¶
func (self *Server) SetFileSystem(fs http.FileSystem)
func (*Server) ToTemplateName ¶
type ShellAuthenticator ¶ added in v1.19.0
type ShellAuthenticator struct {
// contains filtered or unexported fields
}
func NewShellAuthenticator ¶ added in v1.19.0
func NewShellAuthenticator(config *AuthenticatorConfig) (*ShellAuthenticator, error)
func (*ShellAuthenticator) Authenticate ¶ added in v1.19.0
func (self *ShellAuthenticator) Authenticate(w http.ResponseWriter, req *http.Request) bool
func (*ShellAuthenticator) Callback ¶ added in v1.19.0
func (self *ShellAuthenticator) Callback(w http.ResponseWriter, req *http.Request)
func (*ShellAuthenticator) IsCallback ¶ added in v1.19.0
func (self *ShellAuthenticator) IsCallback(_ *url.URL) bool
func (*ShellAuthenticator) Name ¶ added in v1.19.0
func (self *ShellAuthenticator) Name() string
type ShellStep ¶ added in v1.19.0
type ShellStep struct{}
[type=shell] Return the output of a command as a response. Valid Configurations
Command string passed to the user's $SHELL:
data: 'some shell command'
Command array executed via exec*() system calls:
data: ['command', '--arg', 'x=1', '--help']
Command options specified as an object:
data: command: # interpreted the same as above (string or array) inherit: true|false # whether the current shell environment should be inherited by the command env: X: abc Y: zyx
-------------------------------------------------------------------------------------------------
func (*ShellStep) Perform ¶ added in v1.19.0
func (self *ShellStep) Perform(config *StepConfig, w http.ResponseWriter, req *http.Request, prev *StepConfig) (interface{}, error)
type StartCommand ¶
type StartCommand struct { Command string `yaml:"command" json:"command"` // The shell command line to execute on start Directory string `yaml:"directory" json:"directory"` // The working directory the command should be run from Environment map[string]interface{} `yaml:"env" json:"env"` // A map of environment variables to expose to the command WaitBefore string `yaml:"delay" json:"delay"` // How long to delay before running the command Wait string `yaml:"timeout" json:"timeout"` // How long to wait before killing the command ExitOnCompletion bool `yaml:"exitOnCompletion" json:"exitOnCompletion"` // Whether Diecast should exit upon command completion // contains filtered or unexported fields }
type StaticAuthenticator ¶ added in v1.19.0
type StaticAuthenticator struct {
// contains filtered or unexported fields
}
func NewStaticAuthenticator ¶ added in v1.19.0
func NewStaticAuthenticator(config *AuthenticatorConfig, allow bool) (*StaticAuthenticator, error)
func (*StaticAuthenticator) Authenticate ¶ added in v1.19.0
func (self *StaticAuthenticator) Authenticate(w http.ResponseWriter, req *http.Request) bool
func (*StaticAuthenticator) Callback ¶ added in v1.19.0
func (self *StaticAuthenticator) Callback(w http.ResponseWriter, req *http.Request)
func (*StaticAuthenticator) IsCallback ¶ added in v1.19.0
func (self *StaticAuthenticator) IsCallback(_ *url.URL) bool
func (*StaticAuthenticator) Name ¶ added in v1.19.0
func (self *StaticAuthenticator) Name() string
type StepConfig ¶ added in v1.19.0
type StepConfig struct { Type string `yaml:"type" json:"type"` // The type of step Data interface{} `yaml:"data" json:"data"` // The data being passed into this step from the previous one Timeout string `yaml:"timeout,omitempty" json:"timeout,omitempty"` // Timeout for this step Parser string `yaml:"parser" json:"parser"` // The format the data being passed in is expected to be in Output interface{} `yaml:"-" json:"-"` Error error `yaml:"-" json:"-"` // contains filtered or unexported fields }
func (*StepConfig) Close ¶ added in v1.19.0
func (self *StepConfig) Close() error
func (*StepConfig) Perform ¶ added in v1.19.0
func (self *StepConfig) Perform(_ *StepConfig, w http.ResponseWriter, req *http.Request, prev *StepConfig) (interface{}, error)
func (*StepConfig) String ¶ added in v1.19.0
func (self *StepConfig) String() string
type SwitchCase ¶ added in v1.9.9
type SwitchCase struct { CheckType string `yaml:"type,omitempty" json:"type,omitempty"` // The type of test to perform (one of: "expression", "querystring:<name>", "header:<name>") Condition string `yaml:"condition,omitempty" json:"condition,omitempty"` // A type-specific condition value (e.g.: an expression or querystring value) UsePath string `yaml:"use,omitempty" json:"use,omitempty"` // The template to load if the condition matches }
type Template ¶
type Template struct {
// contains filtered or unexported fields
}
func NewTemplate ¶
func (*Template) AddPostProcessors ¶
func (*Template) ParseFragments ¶ added in v1.19.0
func (self *Template) ParseFragments(fragments FragmentSet) error
func (*Template) ParseString ¶ added in v1.19.0
func (*Template) SetDelimiters ¶ added in v1.19.0
func (*Template) SetHeaderOffset ¶
func (*Template) SetPrewriteFunc ¶ added in v1.19.0
func (self *Template) SetPrewriteFunc(fn func())
type TemplateHeader ¶
type TemplateHeader struct { Page map[string]interface{} `yaml:"page,omitempty" json:"page,omitempty"` // An object that is accessible to this template (and all inheriting templates) under the `$.page` variable. Bindings []Binding `yaml:"bindings,omitempty" json:"bindings,omitempty"` // An array of remote URLs to to be retrieved (in order) and added to the `$.bindings` object. Defaults map[string]string `yaml:"defaults,omitempty" json:"defaults,omitempty"` // An object containing default query string values that can be accessed via the `qs` function. DefaultHeaders map[string]string `yaml:"default_headers,omitempty" json:"default_headers,omitempty"` // An object containing default HTTP request header values that can be accessed via the `$.request.headers` variable. Redirect *Redirect `yaml:"redirect,omitempty" json:"redirect,omitempty"` // Specifies an HTTP redirect should be performed when this page is accessed. Switch []*SwitchCase `yaml:"switch,omitempty" json:"switch,omitempty"` // Specify which template file to load in lieu of this one depending on which condition evaluates true first. Layout string `yaml:"layout,omitempty" json:"layout,omitempty"` // The name of the layout (in the _layouts folder) to apply to this template. Includes map[string]string `yaml:"includes,omitempty" json:"includes,omitempty"` // An object specifying a custom name and path to other templates to include when evaluating this one. Headers map[string]interface{} `yaml:"headers,omitempty" json:"headers,omitempty"` // A map of HTTP Headers to include in the request UrlParams []KV `yaml:"url_params,omitempty" json:"url_params,omitempty"` // A map of query string parameters to include in the request FlagDefs map[string]interface{} `yaml:"flags,omitempty" json:"flags,omitempty"` // An object containing names and expressions to add to a `$.flags` variable. Postprocessors []string `yaml:"postprocessors,omitempty" json:"postprocessors,omitempty"` // An array of built-in postprocessors to apply to the output before being returned to the user. Renderer string `yaml:"renderer,omitempty" json:"renderer,omitempty"` // The built-in renderer to use when generating the page. Translations map[string]interface{} `yaml:"translations,omitempty" json:"translations,omitempty"` // Stores translations for use with the i18n and l10n functions. Keys values represent the Locale string `yaml:"locale" json:"locale"` // Stores the locale used for this page. If Locale is set on multiple levels of rendering, the last evaluated value is used. QueryJoiner string `yaml:"query_joiner,omitempty" json:"query_joiner,omitempty"` // Override the string used to join multiple values of the same query string parameter. HeaderJoiner string `yaml:"header_joiner,omitempty" json:"header_joiner,omitempty"` // Override the string used to join multiple values of the same HTTP header. StatusCode int `yaml:"code,omitempty" json:"code,omitempty"` // Override the HTTP response status code of this page // contains filtered or unexported fields }
func SplitTemplateHeaderContent ¶
func SplitTemplateHeaderContent(reader io.Reader) (*TemplateHeader, []byte, error)
func (*TemplateHeader) Merge ¶
func (self *TemplateHeader) Merge(other *TemplateHeader) (*TemplateHeader, error)
type TemplateRenderer ¶ added in v1.19.0
type TemplateRenderer struct {
// contains filtered or unexported fields
}
func (*TemplateRenderer) Render ¶ added in v1.19.0
func (self *TemplateRenderer) Render(w http.ResponseWriter, req *http.Request, options RenderOptions) error
func (*TemplateRenderer) SetPrewriteFunc ¶ added in v1.19.0
func (self *TemplateRenderer) SetPrewriteFunc(fn PrewriteFunc)
func (*TemplateRenderer) SetServer ¶ added in v1.19.0
func (self *TemplateRenderer) SetServer(server *Server)
func (*TemplateRenderer) ShouldPrerender ¶ added in v1.19.0
func (self *TemplateRenderer) ShouldPrerender() bool
type TlsConfig ¶ added in v1.19.0
type TlsConfig struct { Enable bool `yaml:"enable" json:"enable"` // Whether to enable SSL/TLS on the server. CertFile string `yaml:"cert" json:"cert"` // path to a PEM-encoded (.crt) file containing the server's TLS public key. KeyFile string `yaml:"key" json:"key"` // path to a PEM-encoded (.key) file containing the server's TLS private key. ClientCertMode string `yaml:"clients" json:"clients"` // If set, TLS Client certificates will be requested/accepted. If set, may be one of: "request", "any", "verify", "require" ClientCAFile string `yaml:"clientCA" json:"clientCA"` // Path to a PEM-encoded file containing the CA that client certificates are issued and verify against. }
type TraceMapping ¶ added in v1.19.0
Source Files ¶
- actions.go
- actions_steps_process.go
- actions_steps_respond.go
- actions_steps_shell.go
- authenticator.go
- authenticator_basic.go
- authenticator_oauth.go
- authenticator_request.go
- authenticator_shell.go
- authenticator_static.go
- binding.go
- docs.go
- favicon.go
- fragment.go
- functions.go
- functions_defs_codecs.go
- functions_defs_collections.go
- functions_defs_color.go
- functions_defs_compare.go
- functions_defs_convert.go
- functions_defs_crypto_rand.go
- functions_defs_html.go
- functions_defs_introspection.go
- functions_defs_lang.go
- functions_defs_math.go
- functions_defs_path.go
- functions_defs_string.go
- functions_defs_time.go
- functions_defs_types.go
- functions_docs_request.go
- functions_docs_vars.go
- header.go
- mount.go
- mount_file.go
- mount_proxy.go
- mount_response.go
- postprocessors.go
- protocol.go
- protocol_http.go
- protocol_redis.go
- renderers.go
- renderers_markdown.go
- renderers_sass.go
- renderers_template.go
- server.go
- server_csrf.go
- server_handlers.go
- server_middlewares.go
- server_request_handler.go
- server_types.go
- static.go
- template.go
- timing.go
- util.go
- version.go