mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-14 04:10:26 +08:00
创建网站服务时增加缓存、WAF、从上级代理中读取IP等选项
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/dao"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/dao"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/sslconfigs"
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/sslconfigs"
|
||||||
"github.com/iwind/TeaGo/actions"
|
"github.com/iwind/TeaGo/actions"
|
||||||
"github.com/iwind/TeaGo/logs"
|
"github.com/iwind/TeaGo/logs"
|
||||||
@@ -73,6 +74,9 @@ func (this *CreateAction) RunPost(params struct {
|
|||||||
|
|
||||||
AccessLogIsOn bool
|
AccessLogIsOn bool
|
||||||
WebsocketIsOn bool
|
WebsocketIsOn bool
|
||||||
|
CacheIsOn bool
|
||||||
|
WafIsOn bool
|
||||||
|
RemoteAddrIsOn bool
|
||||||
|
|
||||||
WebRoot string
|
WebRoot string
|
||||||
|
|
||||||
@@ -483,6 +487,75 @@ func (this *CreateAction) RunPost(params struct {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cache
|
||||||
|
if params.CacheIsOn {
|
||||||
|
var cacheConfig = &serverconfigs.HTTPCacheConfig{
|
||||||
|
IsPrior: false,
|
||||||
|
IsOn: true,
|
||||||
|
AddStatusHeader: true,
|
||||||
|
PurgeIsOn: false,
|
||||||
|
PurgeKey: "",
|
||||||
|
CacheRefs: nil,
|
||||||
|
}
|
||||||
|
cacheConfigJSON, err := json.Marshal(cacheConfig)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, err = this.RPC().HTTPWebRPC().UpdateHTTPWebCache(this.AdminContext(), &pb.UpdateHTTPWebCacheRequest{
|
||||||
|
WebId: webConfig.Id,
|
||||||
|
CacheJSON: cacheConfigJSON,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// waf
|
||||||
|
if params.WafIsOn {
|
||||||
|
var firewallRef = &firewallconfigs.HTTPFirewallRef{
|
||||||
|
IsPrior: false,
|
||||||
|
IsOn: true,
|
||||||
|
FirewallPolicyId: 0,
|
||||||
|
}
|
||||||
|
firewallRefJSON, err := json.Marshal(firewallRef)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, err = this.RPC().HTTPWebRPC().UpdateHTTPWebFirewall(this.AdminContext(), &pb.UpdateHTTPWebFirewallRequest{
|
||||||
|
WebId: webConfig.Id,
|
||||||
|
FirewallJSON: firewallRefJSON,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// remoteAddr
|
||||||
|
var remoteAddrConfig = &serverconfigs.HTTPRemoteAddrConfig{
|
||||||
|
IsOn: true,
|
||||||
|
Value: "${rawRemoteAddr}",
|
||||||
|
}
|
||||||
|
if params.RemoteAddrIsOn {
|
||||||
|
remoteAddrConfig.Value = "${remoteAddr}"
|
||||||
|
}
|
||||||
|
remoteAddrConfigJSON, err := json.Marshal(remoteAddrConfig)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, err = this.RPC().HTTPWebRPC().UpdateHTTPWebRemoteAddr(this.AdminContext(), &pb.UpdateHTTPWebRemoteAddrRequest{
|
||||||
|
WebId: webConfig.Id,
|
||||||
|
RemoteAddrJSON: remoteAddrConfigJSON,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ Vue.component("http-remote-addr-config-box", {
|
|||||||
config = {
|
config = {
|
||||||
isPrior: false,
|
isPrior: false,
|
||||||
isOn: false,
|
isOn: false,
|
||||||
value: "${remoteAddr}",
|
value: "${rawRemoteAddr}",
|
||||||
isCustomized: false
|
isCustomized: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -20,18 +20,18 @@ Vue.component("http-remote-addr-config-box", {
|
|||||||
config: config,
|
config: config,
|
||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
name: "直接访问",
|
name: "直接获取",
|
||||||
description: "用户可以直接访问边缘节点,即 \"用户 --> 边缘节点\" 模式。",
|
description: "用户直接访问边缘节点,即 \"用户 --> 边缘节点\" 模式,这时候可以直接从连接中读取到真实的IP地址。",
|
||||||
value: "${rawRemoteAddr}"
|
value: "${rawRemoteAddr}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "代理转发",
|
name: "从上级代理中获取",
|
||||||
description: "用户和边缘节点之间有别的代理服务转发,即 \"用户 --> [第三方代理服务] --> 边缘节点\"。",
|
description: "用户和边缘节点之间有别的代理服务转发,即 \"用户 --> [第三方代理服务] --> 边缘节点\",这时候只能从上级代理中获取传递的IP地址。",
|
||||||
value: "${remoteAddr}"
|
value: "${remoteAddr}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "[自定义]",
|
name: "[自定义]",
|
||||||
description: "",
|
description: "通过自定义变量来获取客户端真实的IP地址。",
|
||||||
value: ""
|
value: ""
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -69,7 +69,7 @@ Vue.component("http-remote-addr-config-box", {
|
|||||||
</tbody>
|
</tbody>
|
||||||
<tbody v-show="isOn()">
|
<tbody v-show="isOn()">
|
||||||
<tr>
|
<tr>
|
||||||
<td>用户访问节点方式 *</td>
|
<td>获取IP方式 *</td>
|
||||||
<td>
|
<td>
|
||||||
<select class="ui dropdown auto-width" v-model="optionValue" @change="changeOptionValue">
|
<select class="ui dropdown auto-width" v-model="optionValue" @change="changeOptionValue">
|
||||||
<option v-for="option in options" :value="option.value">{{option.name}}</option>
|
<option v-for="option in options" :value="option.value">{{option.name}}</option>
|
||||||
|
|||||||
@@ -92,6 +92,12 @@
|
|||||||
<checkbox checked="checked" name="accessLogIsOn">访问日志</checkbox>
|
<checkbox checked="checked" name="accessLogIsOn">访问日志</checkbox>
|
||||||
|
|
||||||
<checkbox checked="checked" name="websocketIsOn">Websocket</checkbox>
|
<checkbox checked="checked" name="websocketIsOn">Websocket</checkbox>
|
||||||
|
|
||||||
|
<checkbox checked="checked" name="cacheIsOn">缓存</checkbox>
|
||||||
|
|
||||||
|
<checkbox name="wafIsOn">WAF</checkbox>
|
||||||
|
|
||||||
|
<checkbox name="remoteAddrIsOn">从上级代理中读取IP <tip-icon content="此配置非常重要,请不要轻易选中!如果用户需要通过别的代理服务才能访问到这个网站服务,才需要选中。"></tip-icon> </checkbox>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user