Documentation
¶
Index ¶
- Constants
- func CSRFMiddleware(cfg *Config) echo.MiddlewareFunc
- func ContextMiddleware(k string, i interface{}) echo.MiddlewareFunc
- func GzipMiddleware(level int) echo.MiddlewareFunc
- func Handle(h Handler) error
- func LastModifiedMiddleware(t time.Time) echo.MiddlewareFunc
- func LoggerMiddleware(tformat, lformat string, skip []string) echo.MiddlewareFunc
- func NewEcho(core *Core, pre ...echo.MiddlewareFunc) *echo.Echo
- func Run(core *Core, e *echo.Echo)
- func ServerHeaderMiddleware(name string) echo.MiddlewareFunc
- func SessionMiddleware(cfg *Config) echo.MiddlewareFunc
- func SkipperRouteName(routeNames []string) func(c echo.Context) bool
- func StaticMiddleware(docroot string, fs *embed.FS) echo.MiddlewareFunc
- type Config
- func (cfg *Config) GommonLevel() log.Lvl
- func (cfg *Config) IsDebug() bool
- func (cfg *Config) IsTLSConfiguredDB() bool
- func (cfg *Config) IsTLSConfiguredRedis() bool
- func (cfg *Config) LogrusLevel() logrus.Level
- func (cfg *Config) TLSConfigDB() (*tls.Config, error)
- func (cfg *Config) TLSConfigRedis() (*tls.Config, error)
- type Core
- func (c *Core) Init(inits []InitHandler) error
- func (c *Core) InitCopyFs(dir string, fsys fs.FS) InitHandler
- func (c *Core) InitGorm() InitHandler
- func (c *Core) InitRedis() InitHandler
- func (c *Core) InitSessStore() InitHandler
- func (c *Core) InitTmpDir() InitHandler
- func (c *Core) ListenSig(ch chan os.Signal, e *echo.Echo, wg *sync.WaitGroup)
- func (c *Core) Shutdown()
- type CustomValidator
- type Handler
- type InitHandler
- type Route
- func (r *Route) BadRequest(err error) error
- func (r *Route) Bind(i interface{}) error
- func (r *Route) BindVal(i interface{}) error
- func (r *Route) Config() *Config
- func (r *Route) Error(err error) error
- func (r *Route) Gorm() *gorm.DB
- func (r *Route) Redis() *redis.Client
- func (r *Route) SessStore() *redstore.RedisStore
- type ServiceMessage
Constants ¶
View Source
const ( CtxCore = "core" CtxSession = "session" )
Variables ¶
This section is empty.
Functions ¶
func CSRFMiddleware ¶
func CSRFMiddleware(cfg *Config) echo.MiddlewareFunc
func ContextMiddleware ¶
func ContextMiddleware(k string, i interface{}) echo.MiddlewareFunc
func GzipMiddleware ¶
func GzipMiddleware(level int) echo.MiddlewareFunc
func LastModifiedMiddleware ¶
func LoggerMiddleware ¶
func ServerHeaderMiddleware ¶
func ServerHeaderMiddleware(name string) echo.MiddlewareFunc
func SessionMiddleware ¶
func SessionMiddleware(cfg *Config) echo.MiddlewareFunc
func SkipperRouteName ¶
func StaticMiddleware ¶
Types ¶
type Config ¶
type Config struct { App struct { Bind string `json:"bind" env:"APP_BIND" envDefault:":8082" validate:"required"` EchoTimeout int `json:"echo_timeout" env:"APP_ECHO_TIMEOUT" envDefault:"10" validate:"required,gte=0"` GzipCompr int `json:"gzip_compr" env:"APP_GZIP_COMPR" envDefault:"-1" validate:"gzip_compr"` ServerHeader string `json:"server_header" env:"APP_SERVER_HEADER" envDefault:"echocore/1.0"` } `json:"app"` Log struct { Level string `json:"level" env:"LOG_LEVEL" envDefault:"info" validate:"log_level"` TimeFormat string `json:"time_format" env:"LOG_TIME_FORMAT" envDefault:"2006-01-02T15:04:05Z07:00" validate:"required"` LineFormat string `` /* 145-byte string literal not displayed */ SkipRoutes []string `json:"skip_routes" env:"LOG_SKIP_ROUTES"` } `json:"log"` DB struct { Addr string `json:"addr" env:"DB_ADDR" envDefault:"localhost:3306" validate:"hostname_port"` User string `json:"user" env:"DB_USER" envDefault:""` Pass string `json:"pass" env:"DB_PASS" envDefault:""` Name string `json:"name" env:"DB_NAME" envDefault:""` Timezone string `json:"timezone" env:"DB_TIMEZONE" envDefault:"Europe/Berlin" validate:"timezone"` Collation string `json:"collation" env:"DB_COLLATION" envDefault:"utf8mb4_unicode_ci"` Charset string `json:"charset" env:"DB_CHARSET" envDefault:"utf8mb4"` ParseTime bool `json:"parse_time" env:"DB_PARSE_TIME" envDefault:"true"` Multi bool `json:"multi" env:"DB_MULTI_STATEMENT" envDefault:"true"` MaxIdle int `json:"max_idle" env:"DB_MAX_IDLE" envDefault:"10"` MaxOpen int `json:"max_open" env:"DB_MAX_OPEN" envDefault:"50"` MaxLife int `json:"max_life" env:"DB_MAX_LIFE" envDefault:"60"` TLS struct { Crt string `json:"crt" env:"DB_TLS_CRT" envDefault:"" validate:"omitempty,file"` Key string `json:"key" env:"DB_TLS_KEY" envDefault:"" validate:"omitempty,file"` ClientCAs []string `json:"client_cas" env:"DB_TLS_CLIENT_CAS"` RootCAs []string `json:"root_cas" env:"DB_TLS_ROOT_CAS"` SkipVerify bool `json:"skip_verify" env:"DB_TLS_SKIP_VERIFY"` ClientAuth tls.ClientAuthType `json:"client_auth" env:"DB_TLS_CLIENT_AUTH" envDefault:"0" validate:"client_auth"` MinVersion uint16 `json:"min_version" env:"DB_TLS_MIN_VERSION" envDefault:"771" validate:"tls_ver"` } `json:"tls"` } `json:"db"` Redis struct { Addr string `json:"addr" env:"REDIS_ADDR" envDefault:"localhost:6379" validate:"hostname_port"` User string `json:"user" env:"REDIS_USER" envDefault:""` Pass string `json:"pass" env:"REDIS_PASS" envDefault:""` TLS struct { Crt string `json:"crt" env:"REDIS_TLS_CRT" envDefault:"" validate:"omitempty,file"` Key string `json:"key" env:"REDIS_TLS_KEY" envDefault:"" validate:"omitempty,file"` ClientCAs []string `json:"client_cas" env:"REDIS_TLS_CLIENT_CAS"` RootCAs []string `json:"root_cas" env:"REDIS_TLS_ROOT_CAS"` SkipVerify bool `json:"skip_verify" env:"REDIS_TLS_SKIP_VERIFY"` ClientAuth tls.ClientAuthType `json:"client_auth" env:"REDIS_TLS_CLIENT_AUTH" envDefault:"0" validate:"client_auth"` MinVersion uint16 `json:"min_version" env:"REDIS_TLS_MIN_VERSION" envDefault:"771" validate:"tls_ver"` } `json:"tls"` } `json:"redis"` Session struct { Path string `json:"path" env:"SESS_PATH" envDefault:"/" validate:"required,gte=1"` Domain string `json:"domain" env:"SESS_DOMAIN" envDefault:"localhost" validate:"required"` MaxAge int `json:"max_age" env:"SESS_MAX_AGE" envDefault:"0"` Secure bool `json:"secure" env:"SESS_SECURE" envDefault:"false"` HTTPOnly bool `json:"http_only" env:"SESS_HTTP_ONLY" envDefault:"true"` SameSite http.SameSite `json:"same_site" env:"SESS_SAME_SITE" envDefault:"1" validate:"required,gte=1,lte=4"` SessID string `json:"sess_id" env:"SESS_SESS_ID" envDefault:"id" validate:"required,gte=1,lte=64"` Seconds int `json:"seconds" env:"SESS_SESS_SECONDS" envDefault:"600" validate:"required,gte=1"` } `json:"session"` CSRF struct { TokenLength uint8 `json:"token_length" env:"CSRF_TOKEN_LENGTH" envDefault:"32" validate:"gte=12"` TokenLookup string `json:"token_lookup" env:"CSRF_TOKEN_LOOKUP" envDefault:"form:csrf" validate:"required"` ContextKey string `json:"context_key" env:"CSRF_CONTEXT_KEY" envDefault:"csrf" validate:"required"` CookieName string `json:"cookie_name" env:"CSRF_COOKIE_NAME" envDefault:"idc" validate:"required"` } `json:"csrf"` }
func (*Config) GommonLevel ¶
func (*Config) IsTLSConfiguredDB ¶
func (*Config) IsTLSConfiguredRedis ¶
func (*Config) LogrusLevel ¶
type Core ¶
type Core struct { Config *Config Gorm *gorm.DB Redis *redis.Client SessStore *redstore.RedisStore TmpDir string }
func (*Core) Init ¶
func (c *Core) Init(inits []InitHandler) error
func (*Core) InitCopyFs ¶ added in v0.1.2
func (c *Core) InitCopyFs(dir string, fsys fs.FS) InitHandler
func (*Core) InitGorm ¶
func (c *Core) InitGorm() InitHandler
func (*Core) InitRedis ¶
func (c *Core) InitRedis() InitHandler
func (*Core) InitSessStore ¶
func (c *Core) InitSessStore() InitHandler
func (*Core) InitTmpDir ¶ added in v0.1.2
func (c *Core) InitTmpDir() InitHandler
type CustomValidator ¶
func NewValidator ¶
func NewValidator() *CustomValidator
func (*CustomValidator) Validate ¶
func (v *CustomValidator) Validate(i interface{}) error
type InitHandler ¶
type InitHandler func() error
type Route ¶
type Route struct {
Ctx echo.Context
}
func (*Route) BadRequest ¶
func (*Route) SessStore ¶
func (r *Route) SessStore() *redstore.RedisStore
type ServiceMessage ¶
type ServiceMessage struct {
Message string `json:"message"`
}
Click to show internal directories.
Click to hide internal directories.