Sfoglia il codice sorgente

change settings to use refactored function in setting.html

Hamidreza Ghavami 1 anno fa
parent
commit
f3fe866af2
1 ha cambiato i file con 276 aggiunte e 153 eliminazioni
  1. 276 153
      web/html/xui/setting.html

+ 276 - 153
web/html/xui/setting.html

@@ -355,178 +355,301 @@ const app = new Vue({
                     this.checkRequiredOutbounds();
                 }
             },
-        async mounted() {
-            await this.getAllSetting();
-            while (true) {
-                await PromiseUtil.sleep(1000);
-                this.saveBtnDisable = this.oldAllSetting.equals(this.allSetting);
-            }
-        },
-        computed: {
-            templateSettings: {
-                get: function () { return this.allSetting.xrayTemplateConfig ? JSON.parse(this.allSetting.xrayTemplateConfig) : null ; },
-                set: function (newValue) { this.allSetting.xrayTemplateConfig = JSON.stringify(newValue, null, 2) },
+            async mounted() {
+                await this.getAllSetting();
+                while (true) {
+                    await PromiseUtil.sleep(1000);
+                    this.saveBtnDisable = this.oldAllSetting.equals(this.allSetting);
+                }
             },
-            inboundSettings: {
-                get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.inbounds, null, 2) : null; },
-                set: function (newValue) {
-                    newTemplateSettings = this.templateSettings;
-                    newTemplateSettings.inbounds = JSON.parse(newValue)
-                    this.templateSettings = newTemplateSettings
+            computed: {
+                templateSettings: {
+                    get: function () { return this.allSetting.xrayTemplateConfig ? JSON.parse(this.allSetting.xrayTemplateConfig) : null; },
+                    set: function (newValue) { this.allSetting.xrayTemplateConfig = JSON.stringify(newValue, null, 2) },
                 },
-            },
-            outboundSettings: {
-                get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.outbounds, null, 2) : null; },
-                set: function (newValue) {
-                    newTemplateSettings = this.templateSettings;
-                    newTemplateSettings.outbounds = JSON.parse(newValue)
-                    this.templateSettings = newTemplateSettings
+                inboundSettings: {
+                    get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.inbounds, null, 2) : null; },
+                    set: function (newValue) {
+                        newTemplateSettings = this.templateSettings;
+                        newTemplateSettings.inbounds = JSON.parse(newValue)
+                        this.templateSettings = newTemplateSettings
+                    },
                 },
-            },
-            routingRuleSettings: {
-                get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.routing.rules, null, 2) : null; },
-                set: function (newValue) {
-                    newTemplateSettings = this.templateSettings;
-                    newTemplateSettings.routing.rules = JSON.parse(newValue)
-                    this.templateSettings = newTemplateSettings
+                outboundSettings: {
+                    get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.outbounds, null, 2) : null; },
+                    set: function (newValue) {
+                        newTemplateSettings = this.templateSettings;
+                        newTemplateSettings.outbounds = JSON.parse(newValue)
+                        this.templateSettings = newTemplateSettings
+                    },
                 },
-            },
-            torrentSettings: {
-                get: function () {
-                    torrentFilter = false
-                    if(this.templateSettings != null){
-                        this.templateSettings.routing.rules.forEach(routingRule => {
-                            if(routingRule.hasOwnProperty("protocol")){
-                                if (routingRule.protocol[0] === "bittorrent" && routingRule.outboundTag == "blocked"){
-                                    torrentFilter = true
-                                }
-                            }
+                routingRuleSettings: {
+                    get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.routing.rules, null, 2) : null; },
+                    set: function (newValue) {
+                        newTemplateSettings = this.templateSettings;
+                        newTemplateSettings.routing.rules = JSON.parse(newValue)
+                        this.templateSettings = newTemplateSettings
+                    },
+                },
+                torrentSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "blocked",
+                            property: "protocol",
+                            data: this.settingsData.protocols.bittorrent
                         });
-                    }
-                    return torrentFilter
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "blocked",
+                            property: "protocol",
+                            data: this.settingsData.protocols.bittorrent
+                        });
+                    },
                 },
-                set: function (newValue) {
-                    newTemplateSettings = JSON.parse(this.allSetting.xrayTemplateConfig);
-                    if (newValue){
-                        newTemplateSettings.routing.rules.push(JSON.parse("{\"outboundTag\": \"blocked\",\"protocol\": [\"bittorrent\"],\"type\": \"field\"}"))
-                    }
-                    else {
-                        newTemplateSettings.routing.rules = [];
-                        this.templateSettings.routing.rules.forEach(routingRule => {
-                            if (routingRule.hasOwnProperty('protocol')){
-                                if (routingRule.protocol[0] === "bittorrent" && routingRule.outboundTag == "blocked"){
-                                    return;
-                                }
-                            }
-                            newTemplateSettings.routing.rules.push(routingRule);
+                privateIpSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "blocked",
+                            property: "ip",
+                            data: this.settingsData.ips.local
                         });
-                    }
-                    this.templateSettings = newTemplateSettings
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "blocked",
+                            property: "ip",
+                            data: this.settingsData.ips.local
+                        });
+                    },
                 },
-            },
-            privateIpSettings: {
-                get: function () {
-                    localIpFilter = false
-                    if(this.templateSettings != null){
-                        this.templateSettings.routing.rules.forEach(routingRule => {
-                            if(routingRule.hasOwnProperty("ip")){
-                                if (routingRule.ip[0] === "geoip:private" && routingRule.outboundTag == "blocked"){
-                                    localIpFilter = true
-                                }
-                            }
+                AdsSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "blocked",
+                            property: "domain",
+                            data: this.settingsData.domains.ads
                         });
-                    }
-                    return localIpFilter
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "blocked",
+                            property: "domain",
+                            data: this.settingsData.domains.ads
+                        });
+                    },
                 },
-                set: function (newValue) {
-                    newTemplateSettings = JSON.parse(this.allSetting.xrayTemplateConfig);
-                    if (newValue){
-                        newTemplateSettings.routing.rules.push(JSON.parse("{\"outboundTag\": \"blocked\",\"ip\": [\"geoip:private\"],\"type\": \"field\"}"))
-                    }
-                    else {
-                        newTemplateSettings.routing.rules = [];
-                        this.templateSettings.routing.rules.forEach(routingRule => {
-                            if (routingRule.hasOwnProperty('ip')){
-                                if (routingRule.ip[0] === "geoip:private" && routingRule.outboundTag == "blocked"){
-                                    return;
-                                }
-                            }
-                            newTemplateSettings.routing.rules.push(routingRule);
+                PornSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "blocked",
+                            property: "domain",
+                            data: this.settingsData.domains.porn
                         });
-                    }
-                    this.templateSettings = newTemplateSettings
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "blocked",
+                            property: "domain",
+                            data: this.settingsData.domains.porn
+                        });
+                    },
                 },
-            },
-			IRIpSettings: {
-                get: function () {
-                    localIpFilter = false
-                    if(this.templateSettings != null){
-                        this.templateSettings.routing.rules.forEach(routingRule => {
-                            if(routingRule.hasOwnProperty("ip")){
-                                if (routingRule.ip[0] === "geoip:ir" && routingRule.outboundTag == "blocked"){
-                                    localIpFilter = true
-                                }
-                            }
+                GoogleIPv4Settings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "IPv4",
+                            property: "domain",
+                            data: this.settingsData.domains.google
                         });
-                    }
-                    return localIpFilter
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "IPv4",
+                            property: "domain",
+                            data: this.settingsData.domains.google
+                        });
+                    },
                 },
-                set: function (newValue) {
-                    newTemplateSettings = JSON.parse(this.allSetting.xrayTemplateConfig);
-                    if (newValue){
-                        newTemplateSettings.routing.rules.push(JSON.parse("{\"outboundTag\": \"blocked\",\"ip\": [\"geoip:ir\"],\"type\": \"field\"}"))
-                    }
-                    else {
-                        newTemplateSettings.routing.rules = [];
-                        this.templateSettings.routing.rules.forEach(routingRule => {
-                            if (routingRule.hasOwnProperty('ip')){
-                                if (routingRule.ip[0] === "geoip:ir" && routingRule.outboundTag == "blocked"){
-                                    return;
-                                }
-                            }
-                            newTemplateSettings.routing.rules.push(routingRule);
+                NetflixIPv4Settings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "IPv4",
+                            property: "domain",
+                            data: this.settingsData.domains.netflix
                         });
-                    }
-                    this.templateSettings = newTemplateSettings
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "IPv4",
+                            property: "domain",
+                            data: this.settingsData.domains.netflix
+                        });
+                    },
                 },
-            },
-			IRdomainSettings: {
-                get: function () {
-                    localdomainFilter = false
-                    if(this.templateSettings != null){
-                        this.templateSettings.routing.rules.forEach(routingRule => {
-                            if(routingRule.hasOwnProperty("domain")){
-                                if ((routingRule.domain[0] === "regexp:.+.ir$" || routingRule.domain[0] === "ext:iran.dat:ir" || routingRule.domain[0] === "ext:iran.dat:other") && routingRule.outboundTag == "blocked") {
-                                    localdomainFilter = true
-                                }
-                            }
+                IRIpSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "blocked",
+                            property: "ip",
+                            data: this.settingsData.ips.ir
                         });
-                    }
-                    return localdomainFilter
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "blocked",
+                            property: "ip",
+                            data: this.settingsData.ips.ir
+                        });
+                    },
                 },
-                set: function (newValue) {
-                    newTemplateSettings = JSON.parse(this.allSetting.xrayTemplateConfig);
-                    if (newValue){
-                        newTemplateSettings.routing.rules.push(JSON.parse("{\"outboundTag\": \"blocked\",\"domain\": [\"regexp:.+.ir$\", \"ext:iran.dat:ir\", \"ext:iran.dat:other\"],\"type\": \"field\"}"))
-                    }
-                    else {
-                        newTemplateSettings.routing.rules = [];
-                        this.templateSettings.routing.rules.forEach(routingRule => {
-                            if (routingRule.hasOwnProperty('domain')){
-                                if ((routingRule.domain[0] === "regexp:.+.ir$" || routingRule.domain[0] === "ext:iran.dat:ir" || routingRule.domain[0] === "ext:iran.dat:other") && routingRule.outboundTag == "blocked"){
-                                    return;
-                                }
-                            }
-                            newTemplateSettings.routing.rules.push(routingRule);
+                IRDomainSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "blocked",
+                            property: "domain",
+                            data: this.settingsData.domains.ir
                         });
-                    }
-                    this.templateSettings = newTemplateSettings
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "blocked",
+                            property: "domain",
+                            data: this.settingsData.domains.ir
+                        });
+                    },
                 },
-            },
-			
-        }
-    });
+                ChinaIpSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "blocked",
+                            property: "ip",
+                            data: this.settingsData.ips.cn
+                        });
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "blocked",
+                            property: "ip",
+                            data: this.settingsData.ips.cn
+                        });
+                    },
+                },
+                ChinaDomainSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "blocked",
+                            property: "domain",
+                            data: this.settingsData.domains.cn
+                        });
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "blocked",
+                            property: "domain",
+                            data: this.settingsData.domains.cn
+                        });
+                    },
+                },
+                GoogleWARPSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "WARP",
+                            property: "domain",
+                            data: this.settingsData.domains.google
+                        });
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "WARP",
+                            property: "domain",
+                            data: this.settingsData.domains.google
+                        });
+                    },
+                },
+                OpenAIWARPSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "WARP",
+                            property: "domain",
+                            data: this.settingsData.domains.openai
+                        });
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "WARP",
+                            property: "domain",
+                            data: this.settingsData.domains.openai
+                        });
+                    },
+                },
+                NetflixWARPSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "WARP",
+                            property: "domain",
+                            data: this.settingsData.domains.netflix
+                        });
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "WARP",
+                            property: "domain",
+                            data: this.settingsData.domains.netflix
+                        });
+                    },
+                },
+                SpotifyWARPSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "WARP",
+                            property: "domain",
+                            data: this.settingsData.domains.spotify
+                        });
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "WARP",
+                            property: "domain",
+                            data: this.settingsData.domains.spotify
+                        });
+                    },
+                },
+                IRWARPSettings: {
+                    get: function () {
+                        return this.templateRuleGetter({
+                            outboundTag: "WARP",
+                            property: "domain",
+                            data: this.settingsData.domains.ir
+                        });
+                    },
+                    set: function (newValue) {
+                        this.templateRuleSetter({
+                            newValue,
+                            outboundTag: "WARP",
+                            property: "domain",
+                            data: this.settingsData.domains.ir
+                        });
+                    },
+                },
+            }
+        });
 
-</script>
+    </script>
 </body>
-</html>
+
+</html>