diff --git a/internal/rpc/rpc_client.go b/internal/rpc/rpc_client.go index 9f58cdb4..35190c29 100644 --- a/internal/rpc/rpc_client.go +++ b/internal/rpc/rpc_client.go @@ -352,6 +352,10 @@ func (this *RPCClient) RegionProvinceRPC() pb.RegionProvinceServiceClient { return pb.NewRegionProvinceServiceClient(this.pickConn()) } +func (this *RPCClient) RegionCityRPC() pb.RegionCityServiceClient { + return pb.NewRegionCityServiceClient(this.pickConn()) +} + func (this *RPCClient) RegionProviderRPC() pb.RegionProviderServiceClient { return pb.NewRegionProviderServiceClient(this.pickConn()) } diff --git a/internal/web/actions/default/ui/cityOptions.go b/internal/web/actions/default/ui/cityOptions.go new file mode 100644 index 00000000..1e8ef7ed --- /dev/null +++ b/internal/web/actions/default/ui/cityOptions.go @@ -0,0 +1,44 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package ui + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/maps" +) + +type CityOptionsAction struct { + actionutils.ParentAction +} + +func (this *CityOptionsAction) RunPost(params struct{}) { + citiesResp, err := this.RPC().RegionCityRPC().FindAllEnabledRegionCities(this.AdminContext(), &pb.FindAllEnabledRegionCitiesRequest{ + IncludeRegionProvince: true, + }) + if err != nil { + this.ErrorPage(err) + return + } + var cityMaps = []maps.Map{} + for _, city := range citiesResp.RegionCities { + if city.Codes == nil { + city.Codes = []string{} + } + + var fullname = city.Name + if city.RegionProvince != nil && len(city.RegionProvince.Name) > 0 && city.RegionProvince.Name != city.Name { + fullname = city.RegionProvince.Name + " " + fullname + } + + cityMaps = append(cityMaps, maps.Map{ + "id": city.Id, + "name": city.Name, + "fullname": fullname, + "codes": city.Codes, + }) + } + this.Data["cities"] = cityMaps + + this.Success() +} diff --git a/internal/web/actions/default/ui/countryOptions.go b/internal/web/actions/default/ui/countryOptions.go new file mode 100644 index 00000000..fe4b96fe --- /dev/null +++ b/internal/web/actions/default/ui/countryOptions.go @@ -0,0 +1,43 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package ui + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/maps" + "strings" +) + +type CountryOptionsAction struct { + actionutils.ParentAction +} + +func (this *CountryOptionsAction) RunPost(params struct{}) { + countriesResp, err := this.RPC().RegionCountryRPC().FindAllEnabledRegionCountries(this.AdminContext(), &pb.FindAllEnabledRegionCountriesRequest{}) + if err != nil { + this.ErrorPage(err) + return + } + var countryMaps = []maps.Map{} + for _, country := range countriesResp.RegionCountries { + if country.Codes == nil { + country.Codes = []string{} + } + + var letter = "" + if len(country.Pinyin) > 0 && len(country.Pinyin) > 0 && len(country.Pinyin[0]) > 0 { + letter = strings.ToUpper(country.Pinyin[0][:1]) + } + + countryMaps = append(countryMaps, maps.Map{ + "id": country.Id, + "name": country.Name, + "fullname": letter + " " + country.Name, + "codes": country.Codes, + }) + } + this.Data["countries"] = countryMaps + + this.Success() +} diff --git a/internal/web/actions/default/ui/download.go b/internal/web/actions/default/ui/download.go index d0ea6b60..98ee2f26 100644 --- a/internal/web/actions/default/ui/download.go +++ b/internal/web/actions/default/ui/download.go @@ -4,7 +4,7 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" ) -// 下载指定的文本内容 +// DownloadAction 下载指定的文本内容 type DownloadAction struct { actionutils.ParentAction } diff --git a/internal/web/actions/default/ui/init.go b/internal/web/actions/default/ui/init.go index 390e9f8b..a9775433 100644 --- a/internal/web/actions/default/ui/init.go +++ b/internal/web/actions/default/ui/init.go @@ -25,6 +25,10 @@ func init() { Post("/hideTip", new(HideTipAction)). Post("/theme", new(ThemeAction)). Post("/validateIPs", new(ValidateIPsAction)). + Post("/providerOptions", new(ProviderOptionsAction)). + Post("/countryOptions", new(CountryOptionsAction)). + Post("/provinceOptions", new(ProvinceOptionsAction)). + Post("/cityOptions", new(CityOptionsAction)). EndAll() // 开发环境下总是动态加载,以便于调试 diff --git a/internal/web/actions/default/ui/providerOptions.go b/internal/web/actions/default/ui/providerOptions.go new file mode 100644 index 00000000..3bd8a78e --- /dev/null +++ b/internal/web/actions/default/ui/providerOptions.go @@ -0,0 +1,36 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package ui + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/maps" +) + +type ProviderOptionsAction struct { + actionutils.ParentAction +} + +func (this *ProviderOptionsAction) RunPost(params struct{}) { + providersResp, err := this.RPC().RegionProviderRPC().FindAllEnabledRegionProviders(this.AdminContext(), &pb.FindAllEnabledRegionProvidersRequest{}) + if err != nil { + this.ErrorPage(err) + return + } + + var providerMaps = []maps.Map{} + for _, provider := range providersResp.RegionProviders { + if provider.Codes == nil { + provider.Codes = []string{} + } + providerMaps = append(providerMaps, maps.Map{ + "id": provider.Id, + "name": provider.Name, + "codes": provider.Codes, + }) + } + this.Data["providers"] = providerMaps + + this.Success() +} diff --git a/internal/web/actions/default/ui/provinceOptions.go b/internal/web/actions/default/ui/provinceOptions.go new file mode 100644 index 00000000..134f4cca --- /dev/null +++ b/internal/web/actions/default/ui/provinceOptions.go @@ -0,0 +1,35 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package ui + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/maps" +) + +type ProvinceOptionsAction struct { + actionutils.ParentAction +} + +func (this *ProvinceOptionsAction) RunPost(params struct{}) { + provincesResp, err := this.RPC().RegionProvinceRPC().FindAllEnabledRegionProvincesWithCountryId(this.AdminContext(), &pb.FindAllEnabledRegionProvincesWithCountryIdRequest{RegionCountryId: ChinaCountryId}) + if err != nil { + this.ErrorPage(err) + return + } + var provinceMaps = []maps.Map{} + for _, province := range provincesResp.RegionProvinces { + if province.Codes == nil { + province.Codes = []string{} + } + provinceMaps = append(provinceMaps, maps.Map{ + "id": province.Id, + "name": province.Name, + "codes": province.Codes, + }) + } + this.Data["provinces"] = provinceMaps + + this.Success() +} diff --git a/web/public/js/components.js b/web/public/js/components.js index d36dabdf..e30d9f22 100644 --- a/web/public/js/components.js +++ b/web/public/js/components.js @@ -4258,10 +4258,10 @@ Vue.component("traffic-map-box",{props:["v-stats","v-is-attack"],mounted:functio
`}),Vue.component("request-variables-describer",{data:function(){return{vars:[]}},methods:{update:function(e){this.vars=[];let i=this;e.replace(/\${.+?}/g,function(e){var t=i.findVar(e);if(null==t)return e;i.vars.push(t)})},findVar:function(t){let i=null;return window.REQUEST_VARIABLES.forEach(function(e){e.code==t&&(i=e)}),i}},template:` {{v.code}} - {{v.name}} -`}),Vue.component("combo-box",{props:["name","title","placeholder","size","v-items","v-value"],data:function(){let e=this.vItems,i=((e=null!=e&&e instanceof Array?e:[]).forEach(function(e){null==e.value&&(e.value=e.id)}),null);if(null!=this.vValue){let t=this;e.forEach(function(e){e.value==t.vValue&&(i=e)})}return{allItems:e,items:e.$copy(),selectedItem:i,keyword:"",visible:!1,hideTimer:null,hoverIndex:0}},methods:{reset:function(){this.selectedItem=null,this.change(),this.hoverIndex=0;let e=this;setTimeout(function(){e.$refs.searchBox&&e.$refs.searchBox.focus()})},changeKeyword:function(){this.hoverIndex=0;let t=this.keyword;0==t.length?this.items=this.allItems.$copy():this.items=this.allItems.$copy().filter(function(e){return teaweb.match(e.name,t)})},selectItem:function(e){this.selectedItem=e,this.change(),this.hoverIndex=0,this.keyword="",this.changeKeyword()},confirm:function(){this.items.length>this.hoverIndex&&this.selectItem(this.items[this.hoverIndex])},show:function(){this.visible=!0},hide:function(){let e=this;this.hideTimer=setTimeout(function(){e.visible=!1},500)},downItem:function(){this.hoverIndex++,this.hoverIndex>this.items.length-1&&(this.hoverIndex=0),this.focusItem()},upItem:function(){this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=0),this.focusItem()},focusItem:function(){if(this.hoverIndex +`}),Vue.component("combo-box",{props:["name","title","placeholder","size","v-items","v-value","data-url","data-key","width"],mounted:function(){var e=this.dataUrl;let i=this.dataKey,s=this;null!=e&&0this.hoverIndex&&this.selectItem(this.items[this.hoverIndex])},show:function(){this.visible=!0},hide:function(){let e=this;this.hideTimer=setTimeout(function(){e.visible=!1},500)},downItem:function(){this.hoverIndex++,this.hoverIndex>this.items.length-1&&(this.hoverIndex=0),this.focusItem()},upItem:function(){this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=0),this.focusItem()},focusItem:function(){if(this.hoverIndex
- +
@@ -4273,9 +4273,12 @@ Vue.component("traffic-map-box",{props:["v-stats","v-is-attack"],mounted:functio -
- `}),Vue.component("time-duration-box",{props:["v-name","v-value","v-count","v-unit"],mounted:function(){this.change()},data:function(){let e=this.vValue;return"number"!=typeof(e=null==e?{count:this.vCount,unit:this.vUnit}:e).count&&(e.count=-1),{duration:e,countString:0<=e.count?e.count.toString():""}},watch:{countString:function(e){var e=e.trim();0==e.length?this.duration.count=-1:(e=parseInt(e),isNaN(e)||(this.duration.count=e),this.change())}},methods:{change:function(){this.$emit("change",this.duration)}},template:`
diff --git a/web/public/js/components.src.js b/web/public/js/components.src.js index 1c3e3198..e1435370 100755 --- a/web/public/js/components.src.js +++ b/web/public/js/components.src.js @@ -12802,19 +12802,49 @@ Vue.component("request-variables-describer", { Vue.component("combo-box", { - props: ["name", "title", "placeholder", "size", "v-items", "v-value"], + // data-url 和 data-key 成对出现 + props: ["name", "title", "placeholder", "size", "v-items", "v-value", "data-url", "data-key", "width"], + mounted: function () { + // 从URL中获取选项数据 + let dataUrl = this.dataUrl + let dataKey = this.dataKey + let that = this + if (dataUrl != null && dataUrl.length > 0 && dataKey != null) { + Tea.action(dataUrl) + .post() + .success(function (resp) { + if (resp.data != null) { + if (typeof (resp.data[dataKey]) == "object") { + let items = that.formatItems(resp.data[dataKey]) + that.allItems = items + that.items = items.$copy() + + if (that.vValue != null) { + items.forEach(function (v) { + if (v.value == that.vValue) { + that.selectedItem = v + } + }) + } + } + } + }) + } + + // 设定菜单宽度 + let inputWidth = this.$refs.searchBox.offsetWidth + if (inputWidth != null && inputWidth > 0) { + this.$refs.menu.style.width = inputWidth + "px" + } else if (this.styleWidth.length > 0) { + this.$refs.menu.style.width = this.styleWidth + } + }, data: function () { let items = this.vItems if (items == null || !(items instanceof Array)) { items = [] } - - // 自动使用ID作为值 - items.forEach(function (v) { - if (v.value == null) { - v.value = v.id - } - }) + items = this.formatItems(items) // 当前选中项 let selectedItem = null @@ -12827,17 +12857,35 @@ Vue.component("combo-box", { }) } + let width = this.width + if (width == null || width.length == 0) { + width = "11em" + } else { + if (/\d+$/.test(width)) { + width += "em" + } + } + return { - allItems: items, - items: items.$copy(), - selectedItem: selectedItem, + allItems: items, // 原始的所有的items + items: items.$copy(), // 候选的items + selectedItem: selectedItem, // 选中的item keyword: "", visible: false, hideTimer: null, - hoverIndex: 0 + hoverIndex: 0, + styleWidth: width } }, methods: { + formatItems: function (items) { + items.forEach(function (v) { + if (v.value == null) { + v.value = v.id + } + }) + return items + }, reset: function () { this.selectedItem = null this.change() @@ -12850,6 +12898,11 @@ Vue.component("combo-box", { } }) }, + clear: function () { + this.selectedItem = null + this.change() + this.hoverIndex = 0 + }, changeKeyword: function () { this.hoverIndex = 0 let keyword = this.keyword @@ -12858,6 +12911,9 @@ Vue.component("combo-box", { return } this.items = this.allItems.$copy().filter(function (v) { + if (v.fullname != null && v.fullname.length > 0 && teaweb.match(v.fullname, keyword)) { + return true + } return teaweb.match(v.name, keyword) }) }, @@ -12938,10 +12994,10 @@ Vue.component("combo-box", { } } }, - template: `
+ template: `
- +
@@ -12953,9 +13009,12 @@ Vue.component("combo-box", {
-
- ` diff --git a/web/public/js/components/common/combo-box.js b/web/public/js/components/common/combo-box.js index 79945cdb..e5fb65be 100644 --- a/web/public/js/components/common/combo-box.js +++ b/web/public/js/components/common/combo-box.js @@ -1,17 +1,47 @@ Vue.component("combo-box", { - props: ["name", "title", "placeholder", "size", "v-items", "v-value"], + // data-url 和 data-key 成对出现 + props: ["name", "title", "placeholder", "size", "v-items", "v-value", "data-url", "data-key", "width"], + mounted: function () { + // 从URL中获取选项数据 + let dataUrl = this.dataUrl + let dataKey = this.dataKey + let that = this + if (dataUrl != null && dataUrl.length > 0 && dataKey != null) { + Tea.action(dataUrl) + .post() + .success(function (resp) { + if (resp.data != null) { + if (typeof (resp.data[dataKey]) == "object") { + let items = that.formatItems(resp.data[dataKey]) + that.allItems = items + that.items = items.$copy() + + if (that.vValue != null) { + items.forEach(function (v) { + if (v.value == that.vValue) { + that.selectedItem = v + } + }) + } + } + } + }) + } + + // 设定菜单宽度 + let inputWidth = this.$refs.searchBox.offsetWidth + if (inputWidth != null && inputWidth > 0) { + this.$refs.menu.style.width = inputWidth + "px" + } else if (this.styleWidth.length > 0) { + this.$refs.menu.style.width = this.styleWidth + } + }, data: function () { let items = this.vItems if (items == null || !(items instanceof Array)) { items = [] } - - // 自动使用ID作为值 - items.forEach(function (v) { - if (v.value == null) { - v.value = v.id - } - }) + items = this.formatItems(items) // 当前选中项 let selectedItem = null @@ -24,17 +54,35 @@ Vue.component("combo-box", { }) } + let width = this.width + if (width == null || width.length == 0) { + width = "11em" + } else { + if (/\d+$/.test(width)) { + width += "em" + } + } + return { - allItems: items, - items: items.$copy(), - selectedItem: selectedItem, + allItems: items, // 原始的所有的items + items: items.$copy(), // 候选的items + selectedItem: selectedItem, // 选中的item keyword: "", visible: false, hideTimer: null, - hoverIndex: 0 + hoverIndex: 0, + styleWidth: width } }, methods: { + formatItems: function (items) { + items.forEach(function (v) { + if (v.value == null) { + v.value = v.id + } + }) + return items + }, reset: function () { this.selectedItem = null this.change() @@ -47,6 +95,11 @@ Vue.component("combo-box", { } }) }, + clear: function () { + this.selectedItem = null + this.change() + this.hoverIndex = 0 + }, changeKeyword: function () { this.hoverIndex = 0 let keyword = this.keyword @@ -55,6 +108,9 @@ Vue.component("combo-box", { return } this.items = this.allItems.$copy().filter(function (v) { + if (v.fullname != null && v.fullname.length > 0 && teaweb.match(v.fullname, keyword)) { + return true + } return teaweb.match(v.name, keyword) }) }, @@ -135,10 +191,10 @@ Vue.component("combo-box", { } } }, - template: `
+ template: `
- +
@@ -150,9 +206,12 @@ Vue.component("combo-box", {
-
- ` diff --git a/web/views/@default/@layout.css b/web/views/@default/@layout.css index 33c5d022..adf4dc2e 100644 --- a/web/views/@default/@layout.css +++ b/web/views/@default/@layout.css @@ -824,4 +824,15 @@ textarea.wide-code { font-family: Menlo, Monaco, "Courier New", monospace !important; line-height: 1.6 !important; } +.combo-box .menu { + max-height: 17em; + overflow-y: auto; + position: absolute; + border: rgba(129, 177, 210, 0.81) 1px solid; + border-top: 0; + z-index: 100; +} +.combo-box .menu::-webkit-scrollbar { + width: 4px; +} /*# sourceMappingURL=@layout.css.map */ \ No newline at end of file diff --git a/web/views/@default/@layout.css.map b/web/views/@default/@layout.css.map index 49564551..d92a1df2 100644 --- a/web/views/@default/@layout.css.map +++ b/web/views/@default/@layout.css.map @@ -1 +1 @@ -{"version":3,"sources":["@left_menu.less","@grids.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file +{"version":3,"sources":["@left_menu.less","@grids.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file diff --git a/web/views/@default/@layout.less b/web/views/@default/@layout.less index dc78271e..0f7c51be 100644 --- a/web/views/@default/@layout.less +++ b/web/views/@default/@layout.less @@ -875,4 +875,18 @@ input.error { textarea.wide-code { font-family: Menlo, Monaco, "Courier New", monospace !important; line-height: 1.6 !important; +} + +// combo-box +.combo-box .menu { + max-height: 17em; + overflow-y: auto; + position: absolute; + border: rgba(129, 177, 210, 0.81) 1px solid; + border-top: 0; + z-index: 100 +} + +.combo-box .menu::-webkit-scrollbar { + width: 4px; } \ No newline at end of file diff --git a/web/views/@default/@layout_popup.css b/web/views/@default/@layout_popup.css index b1ba92f4..babd7894 100644 --- a/web/views/@default/@layout_popup.css +++ b/web/views/@default/@layout_popup.css @@ -88,7 +88,7 @@ p.margin { } /** 扩展UI **/ .field.text { - padding: .5em; + padding: 0.5em; } /** 右侧主操作区 **/ .main { @@ -296,4 +296,15 @@ textarea.wide-code { font-family: Menlo, Monaco, "Courier New", monospace !important; line-height: 1.6 !important; } +.combo-box .menu { + max-height: 17em; + overflow-y: auto; + position: absolute; + border: rgba(129, 177, 210, 0.81) 1px solid; + border-top: 0; + z-index: 100; +} +.combo-box .menu::-webkit-scrollbar { + width: 4px; +} /*# sourceMappingURL=@layout_popup.css.map */ \ No newline at end of file diff --git a/web/views/@default/@layout_popup.css.map b/web/views/@default/@layout_popup.css.map index 0b4f1e8e..7781dae4 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 b03bc70e..f7fae083 100644 --- a/web/views/@default/@layout_popup.less +++ b/web/views/@default/@layout_popup.less @@ -359,4 +359,18 @@ input.error { textarea.wide-code { font-family: Menlo, Monaco, "Courier New", monospace !important; line-height: 1.6 !important; +} + +// combo-box +.combo-box .menu { + max-height: 17em; + overflow-y: auto; + position: absolute; + border: rgba(129, 177, 210, 0.81) 1px solid; + border-top: 0; + z-index: 100 +} + +.combo-box .menu::-webkit-scrollbar { + width: 4px; } \ No newline at end of file diff --git a/web/views/@default/servers/components/waf/createRulePopup.html b/web/views/@default/servers/components/waf/createRulePopup.html index 60d65324..c3af26da 100644 --- a/web/views/@default/servers/components/waf/createRulePopup.html +++ b/web/views/@default/servers/components/waf/createRulePopup.html @@ -107,6 +107,29 @@ + + +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
diff --git a/web/views/@default/servers/components/waf/createRulePopup.js b/web/views/@default/servers/components/waf/createRulePopup.js index dc23a0a1..8f800b40 100644 --- a/web/views/@default/servers/components/waf/createRulePopup.js +++ b/web/views/@default/servers/components/waf/createRulePopup.js @@ -121,4 +121,68 @@ Tea.context(function () { this.regexpTestResult = resp.data.result }) } + + // isp + this.selectISPName = function (isp) { + if (isp == null) { + return + } + + let ispName = isp.name + this.$refs.ispComboBox.clear() + + if (this.rule.value.length == 0) { + this.rule.value = ispName + } else { + this.rule.value += "|" + ispName + } + } + + // country + this.selectGeoCountryName = function (country) { + if (country == null) { + return + } + + let countryName = country.name + this.$refs.countryComboBox.clear() + + if (this.rule.value.length == 0) { + this.rule.value = countryName + } else { + this.rule.value += "|" + countryName + } + } + + // province + this.selectGeoProvinceName = function (province) { + if (province == null) { + return + } + + let provinceName = province.name + this.$refs.provinceComboBox.clear() + + if (this.rule.value.length == 0) { + this.rule.value = provinceName + } else { + this.rule.value += "|" + provinceName + } + } + + // city + this.selectGeoCityName = function (city) { + if (city == null) { + return + } + + let cityName = city.name + this.$refs.cityComboBox.clear() + + if (this.rule.value.length == 0) { + this.rule.value = cityName + } else { + this.rule.value += "|" + cityName + } + } }) \ No newline at end of file