diff --git a/internal/web/actions/default/servers/create.go b/internal/web/actions/default/servers/create.go
index 26667286..e985cec8 100644
--- a/internal/web/actions/default/servers/create.go
+++ b/internal/web/actions/default/servers/create.go
@@ -467,7 +467,7 @@ func (this *CreateAction) RunPost(params struct {
AccessLogJSON: []byte(`{
"isPrior": false,
"isOn": true,
- "fields": [6, 7],
+ "fields": [1, 2, 6, 7],
"status1": true,
"status2": true,
"status3": true,
diff --git a/internal/web/actions/default/servers/server/settings/headers/createSetPopup.go b/internal/web/actions/default/servers/server/settings/headers/createSetPopup.go
index ef40837b..da36a0f3 100644
--- a/internal/web/actions/default/servers/server/settings/headers/createSetPopup.go
+++ b/internal/web/actions/default/servers/server/settings/headers/createSetPopup.go
@@ -19,8 +19,10 @@ func (this *CreateSetPopupAction) Init() {
func (this *CreateSetPopupAction) RunGet(params struct {
HeaderPolicyId int64
+ Type string
}) {
this.Data["headerPolicyId"] = params.HeaderPolicyId
+ this.Data["type"] = params.Type
this.Show()
}
@@ -30,6 +32,14 @@ func (this *CreateSetPopupAction) RunPost(params struct {
Name string
Value string
+ StatusListJSON []byte
+ MethodsJSON []byte
+ DomainsJSON []byte
+ ShouldAppend bool
+ DisableRedirect bool
+ ShouldReplace bool
+ ReplaceValuesJSON []byte
+
Must *actions.Must
}) {
// 日志
@@ -51,10 +61,57 @@ func (this *CreateSetPopupAction) RunPost(params struct {
return
}
+ // status list
+ var statusList = []int32{}
+ if len(params.StatusListJSON) > 0 {
+ err = json.Unmarshal(params.StatusListJSON, &statusList)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ }
+
+ // methods
+ var methods = []string{}
+ if len(params.MethodsJSON) > 0 {
+ err = json.Unmarshal(params.MethodsJSON, &methods)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ }
+
+ // domains
+ var domains = []string{}
+ if len(params.DomainsJSON) > 0 {
+ err = json.Unmarshal(params.DomainsJSON, &domains)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ }
+
+ // replace values
+ var replaceValues = []*shared.HTTPHeaderReplaceValue{}
+ if len(params.ReplaceValuesJSON) > 0 {
+ err = json.Unmarshal(params.ReplaceValuesJSON, &replaceValues)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ }
+
// 创建Header
createHeaderResp, err := this.RPC().HTTPHeaderRPC().CreateHTTPHeader(this.AdminContext(), &pb.CreateHTTPHeaderRequest{
- Name: params.Name,
- Value: params.Value,
+ Name: params.Name,
+ Value: params.Value,
+ Status: statusList,
+ Methods: methods,
+ Domains: domains,
+ ShouldAppend: params.ShouldAppend,
+ DisableRedirect: params.DisableRedirect,
+ ShouldReplace: params.ShouldReplace,
+ ReplaceValuesJSON: params.ReplaceValuesJSON,
})
if err != nil {
this.ErrorPage(err)
diff --git a/internal/web/actions/default/servers/server/settings/headers/delete.go b/internal/web/actions/default/servers/server/settings/headers/delete.go
index cf530ea4..a3301cc3 100644
--- a/internal/web/actions/default/servers/server/settings/headers/delete.go
+++ b/internal/web/actions/default/servers/server/settings/headers/delete.go
@@ -35,26 +35,6 @@ func (this *DeleteAction) RunPost(params struct {
}
switch params.Type {
- case "addHeader":
- result := []*shared.HTTPHeaderRef{}
- for _, h := range policyConfig.AddHeaderRefs {
- if h.HeaderId != params.HeaderId {
- result = append(result, h)
- }
- }
- resultJSON, err := json.Marshal(result)
- if err != nil {
- this.ErrorPage(err)
- return
- }
- _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyAddingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyAddingHeadersRequest{
- HeaderPolicyId: params.HeaderPolicyId,
- HeadersJSON: resultJSON,
- })
- if err != nil {
- this.ErrorPage(err)
- return
- }
case "setHeader":
result := []*shared.HTTPHeaderRef{}
for _, h := range policyConfig.SetHeaderRefs {
@@ -75,46 +55,6 @@ func (this *DeleteAction) RunPost(params struct {
this.ErrorPage(err)
return
}
- case "replace":
- result := []*shared.HTTPHeaderRef{}
- for _, h := range policyConfig.ReplaceHeaderRefs {
- if h.HeaderId != params.HeaderId {
- result = append(result, h)
- }
- }
- resultJSON, err := json.Marshal(result)
- if err != nil {
- this.ErrorPage(err)
- return
- }
- _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyReplacingHeaders(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyReplacingHeadersRequest{
- HeaderPolicyId: params.HeaderPolicyId,
- HeadersJSON: resultJSON,
- })
- if err != nil {
- this.ErrorPage(err)
- return
- }
- case "addTrailer":
- result := []*shared.HTTPHeaderRef{}
- for _, h := range policyConfig.AddTrailerRefs {
- if h.HeaderId != params.HeaderId {
- result = append(result, h)
- }
- }
- resultJSON, err := json.Marshal(result)
- if err != nil {
- this.ErrorPage(err)
- return
- }
- _, err = this.RPC().HTTPHeaderPolicyRPC().UpdateHTTPHeaderPolicyAddingTrailers(this.AdminContext(), &pb.UpdateHTTPHeaderPolicyAddingTrailersRequest{
- HeaderPolicyId: params.HeaderPolicyId,
- HeadersJSON: resultJSON,
- })
- if err != nil {
- this.ErrorPage(err)
- return
- }
}
this.Success()
diff --git a/internal/web/actions/default/servers/server/settings/headers/updateSetPopup.go b/internal/web/actions/default/servers/server/settings/headers/updateSetPopup.go
index 4d358b13..1d65eb37 100644
--- a/internal/web/actions/default/servers/server/settings/headers/updateSetPopup.go
+++ b/internal/web/actions/default/servers/server/settings/headers/updateSetPopup.go
@@ -20,9 +20,11 @@ func (this *UpdateSetPopupAction) Init() {
func (this *UpdateSetPopupAction) RunGet(params struct {
HeaderPolicyId int64
HeaderId int64
+ Type string
}) {
this.Data["headerPolicyId"] = params.HeaderPolicyId
this.Data["headerId"] = params.HeaderId
+ this.Data["type"] = params.Type
headerResp, err := this.RPC().HTTPHeaderRPC().FindEnabledHTTPHeaderConfig(this.AdminContext(), &pb.FindEnabledHTTPHeaderConfigRequest{HeaderId: params.HeaderId})
if err != nil {
@@ -45,6 +47,14 @@ func (this *UpdateSetPopupAction) RunPost(params struct {
Name string
Value string
+ StatusListJSON []byte
+ MethodsJSON []byte
+ DomainsJSON []byte
+ ShouldAppend bool
+ DisableRedirect bool
+ ShouldReplace bool
+ ReplaceValuesJSON []byte
+
Must *actions.Must
}) {
// 日志
@@ -54,10 +64,57 @@ func (this *UpdateSetPopupAction) RunPost(params struct {
Field("name", params.Name).
Require("请输入Header名称")
+ // status list
+ var statusList = []int32{}
+ if len(params.StatusListJSON) > 0 {
+ err := json.Unmarshal(params.StatusListJSON, &statusList)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ }
+
+ // methods
+ var methods = []string{}
+ if len(params.MethodsJSON) > 0 {
+ err := json.Unmarshal(params.MethodsJSON, &methods)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ }
+
+ // domains
+ var domains = []string{}
+ if len(params.DomainsJSON) > 0 {
+ err := json.Unmarshal(params.DomainsJSON, &domains)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ }
+
+ // replace values
+ var replaceValues = []*shared.HTTPHeaderReplaceValue{}
+ if len(params.ReplaceValuesJSON) > 0 {
+ err := json.Unmarshal(params.ReplaceValuesJSON, &replaceValues)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ }
+
_, err := this.RPC().HTTPHeaderRPC().UpdateHTTPHeader(this.AdminContext(), &pb.UpdateHTTPHeaderRequest{
- HeaderId: params.HeaderId,
- Name: params.Name,
- Value: params.Value,
+ HeaderId: params.HeaderId,
+ Name: params.Name,
+ Value: params.Value,
+ Status: statusList,
+ Methods: methods,
+ Domains: domains,
+ ShouldAppend: params.ShouldAppend,
+ DisableRedirect: params.DisableRedirect,
+ ShouldReplace: params.ShouldReplace,
+ ReplaceValuesJSON: params.ReplaceValuesJSON,
})
if err != nil {
this.ErrorPage(err)
diff --git a/web/public/js/components/server/http-header-policy-box.js b/web/public/js/components/server/http-header-policy-box.js
index d7fed57d..e8e0203f 100644
--- a/web/public/js/components/server/http-header-policy-box.js
+++ b/web/public/js/components/server/http-header-policy-box.js
@@ -1,10 +1,10 @@
Vue.component("http-header-policy-box", {
props: ["v-request-header-policy", "v-request-header-ref", "v-response-header-policy", "v-response-header-ref", "v-params", "v-is-location", "v-is-group", "v-has-group-request-config", "v-has-group-response-config", "v-group-setting-url"],
data: function () {
- let type = "request"
+ let type = "response"
let hash = window.location.hash
- if (hash == "#response") {
- type = "response"
+ if (hash == "#request") {
+ type = "request"
}
// ref
@@ -72,7 +72,7 @@ Vue.component("http-header-policy-box", {
window.location.reload()
},
addSettingHeader: function (policyId) {
- teaweb.popup("/servers/server/settings/headers/createSetPopup?" + this.vParams + "&headerPolicyId=" + policyId, {
+ teaweb.popup("/servers/server/settings/headers/createSetPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&type=" + this.type, {
callback: function () {
teaweb.successRefresh("保存成功")
}
@@ -86,7 +86,7 @@ Vue.component("http-header-policy-box", {
})
},
updateSettingPopup: function (policyId, headerId) {
- teaweb.popup("/servers/server/settings/headers/updateSetPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&headerId=" + headerId, {
+ teaweb.popup("/servers/server/settings/headers/updateSetPopup?" + this.vParams + "&headerPolicyId=" + policyId + "&headerId=" + headerId+ "&type=" + this.type, {
callback: function () {
teaweb.successRefresh("保存成功")
}
@@ -118,8 +118,8 @@ Vue.component("http-header-policy-box", {
},
template: `
@@ -152,7 +152,17 @@ Vue.component("http-header-policy-box", {
- | {{header.name}} |
+
+ {{header.name}}
+
+ {{code}}
+ {{method}}
+ {{domain}}
+ 附加
+ 跳转禁用
+ 替换
+
+ |
{{header.value}} |
修改 删除 |
@@ -201,7 +211,17 @@ Vue.component("http-header-policy-box", {
- | {{header.name}} |
+
+ {{header.name}}
+
+ {{code}}
+ {{method}}
+ {{domain}}
+ 附加
+ 跳转禁用
+ 替换
+
+ |
{{header.value}} |
修改 删除 |
diff --git a/web/public/js/components/server/http-header-replace-values.js b/web/public/js/components/server/http-header-replace-values.js
new file mode 100644
index 00000000..67b908f5
--- /dev/null
+++ b/web/public/js/components/server/http-header-replace-values.js
@@ -0,0 +1,77 @@
+Vue.component("http-header-replace-values", {
+ props: ["v-replace-values"],
+ data: function () {
+ let values = this.vReplaceValues
+ if (values == null) {
+ values = []
+ }
+ return {
+ values: values,
+ isAdding: false,
+ addingValue: {"pattern": "", "replacement": "", "isCaseInsensitive": false, "isRegexp": false}
+ }
+ },
+ methods: {
+ add: function () {
+ this.isAdding = true
+ let that = this
+ setTimeout(function () {
+ that.$refs.pattern.focus()
+ })
+ },
+ remove: function (index) {
+ this.values.$remove(index)
+ },
+ confirm: function () {
+ let that = this
+ if (this.addingValue.pattern.length == 0) {
+ teaweb.warn("替换前内容不能为空", function () {
+ that.$refs.pattern.focus()
+ })
+ return
+ }
+
+ this.values.push(this.addingValue)
+ this.cancel()
+ },
+ cancel: function () {
+ this.isAdding = false
+ this.addingValue = {"pattern": "", "replacement": "", "isCaseInsensitive": false, "isRegexp": false}
+ }
+ },
+ template: `
+
+
+
+
{{value.pattern}} =>
{{value.replacement}}[空]
+
+
+
+
+
+
+
+
`
+})
\ No newline at end of file
diff --git a/web/public/js/components/server/http-methods-box.js b/web/public/js/components/server/http-methods-box.js
new file mode 100644
index 00000000..de9b43b0
--- /dev/null
+++ b/web/public/js/components/server/http-methods-box.js
@@ -0,0 +1,81 @@
+// 请求方法列表
+Vue.component("http-methods-box", {
+ props: ["v-methods"],
+ data: function () {
+ let methods = this.vMethods
+ if (methods == null) {
+ methods = []
+ }
+ return {
+ methods: methods,
+ isAdding: false,
+ addingMethod: ""
+ }
+ },
+ methods: {
+ add: function () {
+ this.isAdding = true
+ let that = this
+ setTimeout(function () {
+ that.$refs.addingMethod.focus()
+ }, 100)
+ },
+ confirm: function () {
+ let that = this
+
+ // 删除其中的空格
+ this.addingMethod = this.addingMethod.replace(/\s/g, "").toUpperCase()
+
+ if (this.addingMethod.length == 0) {
+ teaweb.warn("请输入要添加的请求方法", function () {
+ that.$refs.addingMethod.focus()
+ })
+ return
+ }
+
+ // 是否已经存在
+ if (this.methods.$contains(this.addingMethod)) {
+ teaweb.warn("此请求方法已经存在,无需重复添加", function () {
+ that.$refs.addingMethod.focus()
+ })
+ return
+ }
+
+ this.methods.push(this.addingMethod)
+ this.cancel()
+ },
+ remove: function (index) {
+ this.methods.$remove(index)
+ },
+ cancel: function () {
+ this.isAdding = false
+ this.addingMethod = ""
+ }
+ },
+ template: `
`
+})
\ No newline at end of file
diff --git a/web/public/js/components/server/http-status-box.js b/web/public/js/components/server/http-status-box.js
new file mode 100644
index 00000000..cab927df
--- /dev/null
+++ b/web/public/js/components/server/http-status-box.js
@@ -0,0 +1,89 @@
+// 请求方法列表
+Vue.component("http-status-box", {
+ props: ["v-status-list"],
+ data: function () {
+ let statusList = this.vStatusList
+ if (statusList == null) {
+ statusList = []
+ }
+ return {
+ statusList: statusList,
+ isAdding: false,
+ addingStatus: ""
+ }
+ },
+ methods: {
+ add: function () {
+ this.isAdding = true
+ let that = this
+ setTimeout(function () {
+ that.$refs.addingStatus.focus()
+ }, 100)
+ },
+ confirm: function () {
+ let that = this
+
+ // 删除其中的空格
+ this.addingStatus = this.addingStatus.replace(/\s/g, "").toUpperCase()
+
+ if (this.addingStatus.length == 0) {
+ teaweb.warn("请输入要添加的状态码", function () {
+ that.$refs.addingStatus.focus()
+ })
+ return
+ }
+
+ // 是否已经存在
+ if (this.statusList.$contains(this.addingStatus)) {
+ teaweb.warn("此状态码已经存在,无需重复添加", function () {
+ that.$refs.addingStatus.focus()
+ })
+ return
+ }
+
+ // 格式
+ if (!this.addingStatus.match(/^\d{3}$/)) {
+ teaweb.warn("请输入正确的状态码", function () {
+ that.$refs.addingStatus.focus()
+ })
+ return
+ }
+
+ this.statusList.push(parseInt(this.addingStatus, 10))
+ this.cancel()
+ },
+ remove: function (index) {
+ this.statusList.$remove(index)
+ },
+ cancel: function () {
+ this.isAdding = false
+ this.addingStatus = ""
+ }
+ },
+ template: `
`
+})
\ No newline at end of file
diff --git a/web/views/@default/@layout_popup.css b/web/views/@default/@layout_popup.css
index 1d451efe..1580d8cf 100644
--- a/web/views/@default/@layout_popup.css
+++ b/web/views/@default/@layout_popup.css
@@ -121,7 +121,7 @@ p.margin {
.main table td {
vertical-align: top;
}
-.main table td.color-border {
+table td.color-border {
border-left: 1px #276ac6 solid !important;
}
.main table td.vertical-top {
diff --git a/web/views/@default/@layout_popup.css.map b/web/views/@default/@layout_popup.css.map
index 9944d099..f44d1b9d 100644
--- a/web/views/@default/@layout_popup.css.map
+++ b/web/views/@default/@layout_popup.css.map
@@ -1 +1 @@
-{"version":3,"sources":["@layout_popup.less"],"names":[],"mappings":"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","file":"@layout_popup.css"}
\ No newline at end of file
+{"version":3,"sources":["@layout_popup.less"],"names":[],"mappings":"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","file":"@layout_popup.css"}
\ No newline at end of file
diff --git a/web/views/@default/@layout_popup.less b/web/views/@default/@layout_popup.less
index d9e1a96f..39e23fb5 100644
--- a/web/views/@default/@layout_popup.less
+++ b/web/views/@default/@layout_popup.less
@@ -140,7 +140,7 @@ div.margin, p.margin {
vertical-align: top;
}
-.main table td.color-border {
+table td.color-border {
border-left: 1px #276ac6 solid !important;
}
diff --git a/web/views/@default/servers/server/settings/headers/createSetPopup.html b/web/views/@default/servers/server/settings/headers/createSetPopup.html
index 29acebbe..126dd001 100644
--- a/web/views/@default/servers/server/settings/headers/createSetPopup.html
+++ b/web/views/@default/servers/server/settings/headers/createSetPopup.html
@@ -5,7 +5,7 @@
diff --git a/web/views/@default/servers/server/settings/headers/createSetPopup.js b/web/views/@default/servers/server/settings/headers/createSetPopup.js
new file mode 100644
index 00000000..f341c461
--- /dev/null
+++ b/web/views/@default/servers/server/settings/headers/createSetPopup.js
@@ -0,0 +1,3 @@
+Tea.context(function () {
+ this.shouldReplace = false
+})
\ No newline at end of file
diff --git a/web/views/@default/servers/server/settings/headers/updateSetPopup.html b/web/views/@default/servers/server/settings/headers/updateSetPopup.html
index dd16d4c7..2b9b5350 100644
--- a/web/views/@default/servers/server/settings/headers/updateSetPopup.html
+++ b/web/views/@default/servers/server/settings/headers/updateSetPopup.html
@@ -6,7 +6,7 @@
diff --git a/web/views/@default/servers/server/settings/headers/updateSetPopup.js b/web/views/@default/servers/server/settings/headers/updateSetPopup.js
new file mode 100644
index 00000000..9df37fea
--- /dev/null
+++ b/web/views/@default/servers/server/settings/headers/updateSetPopup.js
@@ -0,0 +1,7 @@
+Tea.context(function () {
+ this.shouldReplace = this.headerConfig.shouldReplace
+ this.statusList = []
+ if (this.headerConfig.status != null && this.headerConfig.status.codes != null) {
+ this.statusList = this.headerConfig.status.codes
+ }
+})
\ No newline at end of file