2020-09-16 09:09:31 +08:00
|
|
|
package serverconfigs
|
|
|
|
|
|
2020-09-16 20:29:26 +08:00
|
|
|
import "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
2020-09-16 09:09:31 +08:00
|
|
|
|
2020-09-16 20:29:26 +08:00
|
|
|
type HTTPWebConfig struct {
|
2020-09-23 18:43:50 +08:00
|
|
|
Id int64 `yaml:"id" json:"id"` // ID
|
|
|
|
|
IsOn bool `yaml:"isOn" json:"isOn"` // 是否启用
|
|
|
|
|
Locations []*HTTPLocationConfig `yaml:"locations" json:"locations"` // 路径规则 TODO
|
|
|
|
|
LocationRefs []*HTTPLocationRef `yaml:"locationRefs" json:"locationRefs"` // 路径规则应用
|
|
|
|
|
GzipRef *HTTPGzipRef `yaml:"gzipRef" json:"gzipRef"` // Gzip引用
|
2020-09-16 20:29:26 +08:00
|
|
|
Gzip *HTTPGzipConfig `yaml:"gzip" json:"gzip"` // Gzip配置
|
2020-09-23 18:43:50 +08:00
|
|
|
Charset *HTTPCharsetConfig `yaml:"charset" json:"charset"` // 字符编码
|
2020-09-16 20:29:26 +08:00
|
|
|
Shutdown *HTTPShutdownConfig `yaml:"shutdown" json:"shutdown"` // 临时关闭配置
|
|
|
|
|
Pages []*HTTPPageConfig `yaml:"pages" json:"pages"` // 特殊页面配置
|
|
|
|
|
RedirectToHttps *HTTPRedirectToHTTPSConfig `yaml:"redirectToHttps" json:"redirectToHttps"` // 是否自动跳转到Https
|
|
|
|
|
Root string `yaml:"root" json:"root"` // 资源根目录 TODO
|
|
|
|
|
Indexes []string `yaml:"indexes" json:"indexes"` // 默认首页文件
|
|
|
|
|
MaxRequestBodySize string `yaml:"maxRequestBodySize" json:"maxRequestBodySize"` // 请求body最大尺寸
|
2020-09-20 16:27:59 +08:00
|
|
|
AccessLogRef *HTTPAccessLogRef `yaml:"accessLog" json:"accessLog"` // 访问日志配置
|
|
|
|
|
StatRef *HTTPStatRef `yaml:"statRef" json:"statRef"` // 统计配置
|
2020-09-20 20:12:53 +08:00
|
|
|
CacheRef *HTTPCacheRef `yaml:"cacheRef" json:"cacheRef"` // 缓存配置
|
|
|
|
|
FirewallRef *HTTPFirewallRef `yaml:"firewallRef" json:"firewallRef"` // 防火墙设置
|
2020-09-21 11:37:09 +08:00
|
|
|
WebsocketRef *HTTPWebsocketRef `yaml:"websocketRef" json:"websocketRef"` // Websocket应用配置
|
|
|
|
|
Websocket *HTTPWebsocketConfig `yaml:"websocket" json:"websocket"` // Websocket配置
|
2020-09-23 18:43:50 +08:00
|
|
|
|
|
|
|
|
RequestHeaderPolicyRef *shared.HTTPHeaderPolicyRef `yaml:"requestHeaderPolicyRef" json:"requestHeaderPolicyRef"` // 请求Header
|
|
|
|
|
RequestHeaderPolicy *shared.HTTPHeaderPolicy `yaml:"requestHeaderPolicy" json:"requestHeaderPolicy"` // 请求Header策略
|
|
|
|
|
ResponseHeaderPolicyRef *shared.HTTPHeaderPolicyRef `yaml:"responseHeaderPolicyRef" json:"responseHeaderPolicyRef"` // 响应Header`
|
|
|
|
|
ResponseHeaderPolicy *shared.HTTPHeaderPolicy `yaml:"responseHeaderPolicy" json:"responseHeaderPolicy"` // 响应Header策略
|
2020-09-21 11:37:09 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (this *HTTPWebConfig) Init() error {
|
|
|
|
|
return nil
|
2020-09-16 09:09:31 +08:00
|
|
|
}
|
2020-09-21 19:52:10 +08:00
|
|
|
|
|
|
|
|
func (this *HTTPWebConfig) RemoveLocationRef(locationId int64) {
|
|
|
|
|
this.LocationRefs = this.removeLocationRef(this.LocationRefs, locationId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (this *HTTPWebConfig) removeLocationRef(refs []*HTTPLocationRef, locationId int64) []*HTTPLocationRef {
|
|
|
|
|
result := []*HTTPLocationRef{}
|
|
|
|
|
for _, ref := range refs {
|
|
|
|
|
if ref.LocationId == locationId {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ref.Children = this.removeLocationRef(ref.Children, locationId)
|
|
|
|
|
result = append(result, ref)
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
}
|