Documentation
¶
Index ¶
- Variables
- func AddSalt(rnd []byte, salt string) string
- func AutoCert(ac *autocert.Manager, tlsconf *tls.Config, handler http.Handler) http.Handler
- func ExecFunc(f any, args ...any) ([]any, error)
- func ForMethod(x any) string
- func ForType(x any, showUnexported bool, maxDepth int) string
- func GenerateRandom(length int) ([]byte, error)
- func GenerateRandomID(rnd []byte) error
- func GenerateRandomString(length int) (string, error)
- func PagePath(root, p string, index []string) (os.FileInfo, string, error)
- type Cookie
- type Cookier
- type Dot
- func (T *Dot) Close() error
- func (T *Dot) Context() context.Context
- func (T *Dot) Cookie() Cookier
- func (T *Dot) Defer(call any, args ...any) error
- func (T *Dot) Global() Globaler
- func (T *Dot) Header() http.Header
- func (T *Dot) Request() *http.Request
- func (T *Dot) RequestLimitSize(l int64) *http.Request
- func (T *Dot) Response() Responser
- func (T *Dot) RootDir(upath string) string
- func (T *Dot) SaveStatic(path string) (wr io.WriteCloser, err error)
- func (T *Dot) Session() Sessioner
- func (T *Dot) Swap() *vmap.Map
- func (T *Dot) WithContext(ctx context.Context)
- type DotContexter
- type Doter
- type DynamicTemplateFunc
- type DynamicTemplater
- type ExecCall
- type ExitCall
- type Forward
- type ForwardRewriter
- type Globaler
- type HandleFunc
- type PluginHTTP
- type PluginHTTPClient
- type PluginRPC
- type PluginRPCClient
- type PluginType
- type Pluginer
- type Responser
- type Route
- type Router
- type ServerHandlerDynamic
- type ServerHandlerStatic
- type Session
- type Sessioner
- type Sessions
- func (T *Sessions) CheckDeadAll() []any
- func (T *Sessions) DelSession(id string)
- func (T *Sessions) GetSession(id string) (Sessioner, bool)
- func (T *Sessions) InstantDeadAll()
- func (T *Sessions) Len() int
- func (T *Sessions) NewSession(id string) Sessioner
- func (T *Sessions) Session(rw http.ResponseWriter, req *http.Request) Sessioner
- func (T *Sessions) SessionID(req *http.Request) (id string, err error)
- func (T *Sessions) SetSession(id string, s Sessioner) Sessioner
- type Site
- type SiteMan
- type SitePool
Constants ¶
This section is empty.
Variables ¶
var ( SiteContextKey = &contextKey{"web-site"} RouterContextKey = &contextKey{"web-router"} ListenerContextKey = &contextKey{"web-listener"} ConnContextKey = &contextKey{"web-conn"} PluginContextKey = &contextKey{"web-plugin"} )
上下文中使用的key
Functions ¶
func AutoCert ¶
AutoCert 自动从 Let's Encrypt 申请证书
ac *autocert.Manager 申请证书管理 tlsconf *tls.Config tls配置 handler http.Handler http处理
Types ¶
type Cookie ¶
type Cookie struct {
R *http.Request // 请求
W http.ResponseWriter // 响应
}
func (*Cookie) Add ¶
func (c *Cookie) Add(name, value, path, domain string, maxAge int, secure, only bool, sameSite http.SameSite)
Add 增加,写入一条Cookie,可以写入多条Cookie保存至浏览器
name string 名称 value string 值 path string 路径 domain string 域 maxAge int 过期时间,以毫秒为单位 secure bool 源,如果通过 SSL 连接 (HTTPS) 传输 Cookie,则为 true;否则为 false。默认值为 false。 only bool 验证,如果 Cookie 具有 HttpOnly 属性且不能通过客户端脚本(JS)访问,则为 true;否则为 false。默认为 false。 sameSite http.SameSite 是否严格模式
type Dot ¶
type Dot struct {
R *http.Request // 请求
W http.ResponseWriter // 响应
Site *Site // 网站配置
// contains filtered or unexported fields
}
Dot 模板点
func (*Dot) Defer ¶
Defer 在用户会话时间过期后,将被调用。
call any 函数 args ... any 参数或更多个函数是函数的参数 error 错误 例: .Defer(fmt.Println, "1", "2") .Defer(fmt.Printf, "%s", "汉字")
func (*Dot) SaveStatic ¶
func (T *Dot) SaveStatic(path string) (wr io.WriteCloser, err error)
SaveStatic 保存为静态文件
path string 保存路径
type DotContexter ¶
type Doter ¶
type Doter interface {
RootDir(path string) string // 网站的根目录
Request() *http.Request // 用户的请求信息
RequestLimitSize(l int64) *http.Request // 请求限制大小
Header() http.Header // 标头
Response() Responser // 数据写入响应
Session() Sessioner // 用户的会话缓存
Global() Globaler // 全站缓存
Cookie() Cookier // 用户的Cookie
Swap() *vmap.Map // 信息交换
Defer(call any, args ...any) error // 退回调用
SaveStatic(path string) (wr io.WriteCloser, err error) // 保存为静态文件
DotContexter // 上下文
}
Doter 可以在模本中使用的方法
type DynamicTemplateFunc ¶
type DynamicTemplateFunc func(*ServerHandlerDynamic) DynamicTemplater
type DynamicTemplater ¶
type Forward ¶
type Forward struct {
Path []string // 多种路径匹配
ExcludePath []string // 排除多种路径匹配
RePath string // 重写路径
}
Forward 原始配置结构
func (*Forward) Compile ¶
func (T *Forward) Compile() (*ForwardRewriter, error)
Compile 预编译正则,建议在程序初始化或配置加载时调用一次
type ForwardRewriter ¶
type ForwardRewriter struct {
// contains filtered or unexported fields
}
ForwardRewriter 编译后的执行对象
type HandleFunc ¶
type HandleFunc []func(Doter)
func (HandleFunc) ServeHTTP ¶
func (T HandleFunc) ServeHTTP(w http.ResponseWriter, r *http.Request)
type PluginHTTP ¶
type PluginHTTP interface {
Type() PluginType // 类型
ServeHTTP(w http.ResponseWriter, r *http.Request) // 服务HTTP
RoundTrip(r *http.Request) (resp *http.Response, err error) // 代理
CancelRequest(req *http.Request) // 取消HTTP请求
CloseIdleConnections() // 关闭空闲连接
RegisterProtocol(scheme string, rt http.RoundTripper) // 注册新协议
}
PluginHTTP http插件接口
type PluginHTTPClient ¶
type PluginHTTPClient struct {
Tr *http.Transport // 客户端
Addr string // 地址
Scheme string // 协议(用于默认填充)
Host string // 请求Host(用于默认填充)
Dialer *net.Dialer
}
PluginHTTPClient 插件HTTP客户端
func (*PluginHTTPClient) Connection ¶
func (T *PluginHTTPClient) Connection() (PluginHTTP, error)
Connection 快速连接HTTP
PluginHTTP 插件HTTP error 错误
type PluginRPC ¶
type PluginRPC interface {
Type() PluginType // 类型
Register(value any) // 注册struct类型
Call(name string, arg any) (any, error) // 调用
Discard() error // 废弃连接
Close() error // 关闭
}
PluginRPC rpc插件接口
type PluginRPCClient ¶
type PluginRPCClient struct {
ConnPool *vconnpool.ConnPool // 连接池
Addr string // 地址
Path string // 路径
}
PluginRPCClient 插件RPC客户端
func (*PluginRPCClient) Connection ¶
func (T *PluginRPCClient) Connection() (PluginRPC, error)
Connection 快速连接RPC
PluginRPC 插件RPC error 错误
type Responser ¶
type Responser interface {
Write([]byte) (int, error) // 写入字节
WriteString(string) (int, error) // 写入字符串
ReadFrom(io.Reader) (int64, error) // 读取并写入
Redirect(string, int) // 转向
WriteHeader(int) // 状态码
Header() http.Header // 标头
Error(string, int) // 错误
Flush() // 刷新缓冲
Push(target string, opts *http.PushOptions) error // HTTP/2推送
Hijack() (net.Conn, *bufio.ReadWriter, error) // 劫持,能双向互相发送信息
}
type Route ¶
type Route struct {
HandlerError http.HandlerFunc // 错误访问处理
// contains filtered or unexported fields
}
func (*Route) HandleFunc ¶
HandleFunc 绑定处理函数,匹配的网址支持正则,这说明你要严格的检查。
url string 网址,支持正则匹配 handler func(w ResponseWriter, r *Request) 处理函数
func (*Route) HandleFuncDot ¶
func (*Route) ServeHTTP ¶
func (T *Route) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP 服务HTTP
w ResponseWriter 响应 r *Request 请求
func (*Route) SetSiteMan ¶
SetSiteMan 设置站点管理,将会携带在请求上下文中 siteMan *SiteMan 站点
type ServerHandlerDynamic ¶
type ServerHandlerDynamic struct {
// 必须的
RootPath string // 根目录
PagePath string // 主模板文件路径
// 可选的
Site *Site // 网站配置
Module func(name string) (DynamicTemplater, error) // 支持更动态文件类型
SaveStatic func(filePath string, r io.Reader, l int) (int, error) // 静态结果。仅在 .ServeHTTP 方法中使用
ReadFile func(filePath string, u *url.URL) (io.Reader, time.Time, error) // 读取文件。仅在 .ServeHTTP 方法中使用
// contains filtered or unexported fields
}
ServerHandlerDynamic 处理动态页面文件
func (*ServerHandlerDynamic) Execute ¶
func (T *ServerHandlerDynamic) Execute(bufw io.Writer, dock any) (err error)
Execute 执行模板
bufw *bytes.Buffer 模板返回数据 dock any 与模板对接接口 error 错误
func (*ServerHandlerDynamic) Parse ¶
func (T *ServerHandlerDynamic) Parse(r io.Reader) (err error)
Parse 解析模板
r io.Reader 模板内容 error 错误
func (*ServerHandlerDynamic) ParseFile ¶
func (T *ServerHandlerDynamic) ParseFile(path string) error
ParseFile 解析模板
path string 模板文件路径,如果为空,默认使用RootPath,PagePath字段 error 错误
func (*ServerHandlerDynamic) ServeHTTP ¶
func (T *ServerHandlerDynamic) ServeHTTP(rw http.ResponseWriter, req *http.Request)
ServeHTTP 服务HTTP
rw http.ResponseWriter 响应 req *http.Request 请求
type ServerHandlerStatic ¶
type ServerHandlerStatic struct {
RootPath, PagePath string // 根目录, 页路径
PageExpired int64 // 页面过期时间(秒为单位)
// contains filtered or unexported fields
}
ServerHandlerStatic 处理静态页面文件
func (*ServerHandlerStatic) ServeHTTP ¶
func (T *ServerHandlerStatic) ServeHTTP(rw http.ResponseWriter, req *http.Request)
ServeHTTP 服务HTTP
rw http.ResponseWriter 响应 req *http.Request 请求
type Session ¶
Session 会话用于用户保存数据
type Sessioner ¶
type Sessioner interface {
Token() string // 编号
Set(key, val any) // 设置
Has(key any) bool // 判断
Get(key any) any // 读取
GetHas(key any) (val any, ok bool) // 读取判断
Del(key any) // 删除
SetExpired(key any, d time.Duration) // 过期
SetExpiredCall(key any, d time.Duration, f func(any)) // 过期调用
Reset() // 重置
Defer(call any, args ...any) error // 退出调用
Free() // 释放调用
}
Sessioner 用户独立的内存存储接口
type Sessions ¶
type Sessions struct {
Expired time.Duration // 保存session时间长
Name string // 标识名称。用于Cookie
Size int // 会话ID长度。用于Cookie
Salt string // 加盐,由于计算机随机数是伪随机数。(可默认为空)。用于Cookie
ActivationID bool // 为true,保持会话ID。意思就是会话ID过期了,可以激活再次使用。用于Cookie
// contains filtered or unexported fields
}
Sessions 用于管理不同用户的会话。
func (*Sessions) InstantDeadAll ¶
func (T *Sessions) InstantDeadAll()
type Site ¶
type Site struct {
RootDir func(path string) string // 网站的根目录z
Extend vmap.Map // 接口类型,可以自己存在任何类型
// contains filtered or unexported fields
}
Site 站点数据存储
type SiteMan ¶
type SiteMan struct {
// contains filtered or unexported fields
}
type SitePool ¶
type SitePool struct {
// contains filtered or unexported fields
}
SitePool 网站池
func NewSitePool ¶
func NewSitePool() *SitePool
func (*SitePool) NewSite ¶
NewSite 创建一个站点,如果存在返回已经存在的。Sessions 使用默认的设置,你需要修改它。
name string 站点name *Site 站点
func (*SitePool) SetRecoverSession ¶
SetRecoverSession 设置回收无效的会话间隔。默认为1秒
d time.Duration 回收时间隔,不可以等于或小于0,否则CPU爆增(警告)