|
@@ -299,6 +299,8 @@
|
|
<setting-list-item type="textarea" title='{{ i18n "pages.settings.templates.manualBlockedDomains"}}' v-model="manualBlockedDomains"></setting-list-item>
|
|
<setting-list-item type="textarea" title='{{ i18n "pages.settings.templates.manualBlockedDomains"}}' v-model="manualBlockedDomains"></setting-list-item>
|
|
<setting-list-item type="textarea" title='{{ i18n "pages.settings.templates.manualDirectIPs"}}' v-model="manualDirectIPs"></setting-list-item>
|
|
<setting-list-item type="textarea" title='{{ i18n "pages.settings.templates.manualDirectIPs"}}' v-model="manualDirectIPs"></setting-list-item>
|
|
<setting-list-item type="textarea" title='{{ i18n "pages.settings.templates.manualDirectDomains"}}' v-model="manualDirectDomains"></setting-list-item>
|
|
<setting-list-item type="textarea" title='{{ i18n "pages.settings.templates.manualDirectDomains"}}' v-model="manualDirectDomains"></setting-list-item>
|
|
|
|
+ <setting-list-item type="textarea" title='{{ i18n "pages.settings.templates.manualIPv4Domains"}}' v-model="manualIPv4Domains"></setting-list-item>
|
|
|
|
+ <setting-list-item type="textarea" title='{{ i18n "pages.settings.templates.manualWARPDomains"}}' v-model="manualWARPDomains"></setting-list-item>
|
|
</a-collapse-panel>
|
|
</a-collapse-panel>
|
|
</a-collapse>
|
|
</a-collapse>
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
@@ -617,30 +619,30 @@
|
|
computed: {
|
|
computed: {
|
|
templateSettings: {
|
|
templateSettings: {
|
|
get: function () { return this.allSetting.xrayTemplateConfig ? JSON.parse(this.allSetting.xrayTemplateConfig) : null; },
|
|
get: function () { return this.allSetting.xrayTemplateConfig ? JSON.parse(this.allSetting.xrayTemplateConfig) : null; },
|
|
- set: function (newValue) { this.allSetting.xrayTemplateConfig = JSON.stringify(newValue, null, 2) },
|
|
|
|
|
|
+ set: function (newValue) { this.allSetting.xrayTemplateConfig = JSON.stringify(newValue, null, 2); },
|
|
},
|
|
},
|
|
inboundSettings: {
|
|
inboundSettings: {
|
|
get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.inbounds, null, 2) : null; },
|
|
get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.inbounds, null, 2) : null; },
|
|
set: function (newValue) {
|
|
set: function (newValue) {
|
|
newTemplateSettings = this.templateSettings;
|
|
newTemplateSettings = this.templateSettings;
|
|
- newTemplateSettings.inbounds = JSON.parse(newValue)
|
|
|
|
- this.templateSettings = newTemplateSettings
|
|
|
|
|
|
+ newTemplateSettings.inbounds = JSON.parse(newValue);
|
|
|
|
+ this.templateSettings = newTemplateSettings;
|
|
},
|
|
},
|
|
},
|
|
},
|
|
outboundSettings: {
|
|
outboundSettings: {
|
|
get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.outbounds, null, 2) : null; },
|
|
get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.outbounds, null, 2) : null; },
|
|
set: function (newValue) {
|
|
set: function (newValue) {
|
|
newTemplateSettings = this.templateSettings;
|
|
newTemplateSettings = this.templateSettings;
|
|
- newTemplateSettings.outbounds = JSON.parse(newValue)
|
|
|
|
- this.templateSettings = newTemplateSettings
|
|
|
|
|
|
+ newTemplateSettings.outbounds = JSON.parse(newValue);
|
|
|
|
+ this.templateSettings = newTemplateSettings;
|
|
},
|
|
},
|
|
},
|
|
},
|
|
routingRuleSettings: {
|
|
routingRuleSettings: {
|
|
get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.routing.rules, null, 2) : null; },
|
|
get: function () { return this.templateSettings ? JSON.stringify(this.templateSettings.routing.rules, null, 2) : null; },
|
|
set: function (newValue) {
|
|
set: function (newValue) {
|
|
newTemplateSettings = this.templateSettings;
|
|
newTemplateSettings = this.templateSettings;
|
|
- newTemplateSettings.routing.rules = JSON.parse(newValue)
|
|
|
|
- this.templateSettings = newTemplateSettings
|
|
|
|
|
|
+ newTemplateSettings.routing.rules = JSON.parse(newValue);
|
|
|
|
+ this.templateSettings = newTemplateSettings;
|
|
},
|
|
},
|
|
},
|
|
},
|
|
freedomStrategy: {
|
|
freedomStrategy: {
|
|
@@ -715,6 +717,24 @@
|
|
this.syncRulesWithOutbound("direct", this.directSettings);
|
|
this.syncRulesWithOutbound("direct", this.directSettings);
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ ipv4Domains: {
|
|
|
|
+ get: function () {
|
|
|
|
+ return this.templateRuleGetter({ outboundTag: "IPv4", property: "domain" });
|
|
|
|
+ },
|
|
|
|
+ set: function (newValue) {
|
|
|
|
+ this.templateRuleSetter({ outboundTag: "IPv4", property: "domain", data: newValue });
|
|
|
|
+ this.syncRulesWithOutbound("IPv4", this.ipv4Settings);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ warpDomains: {
|
|
|
|
+ get: function () {
|
|
|
|
+ return this.templateRuleGetter({ outboundTag: "WARP", property: "domain" });
|
|
|
|
+ },
|
|
|
|
+ set: function (newValue) {
|
|
|
|
+ this.templateRuleSetter({ outboundTag: "WARP", property: "domain", data: newValue });
|
|
|
|
+ this.syncRulesWithOutbound("WARP", this.warpSettings);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
manualBlockedIPs: {
|
|
manualBlockedIPs: {
|
|
get: function () { return JSON.stringify(this.blockedIPs, null, 2); },
|
|
get: function () { return JSON.stringify(this.blockedIPs, null, 2); },
|
|
set: debounce(function (value) { this.blockedIPs = JSON.parse(value); }, 1000)
|
|
set: debounce(function (value) { this.blockedIPs = JSON.parse(value); }, 1000)
|
|
@@ -731,6 +751,14 @@
|
|
get: function () { return JSON.stringify(this.directDomains, null, 2); },
|
|
get: function () { return JSON.stringify(this.directDomains, null, 2); },
|
|
set: debounce(function (value) { this.directDomains = JSON.parse(value); }, 1000)
|
|
set: debounce(function (value) { this.directDomains = JSON.parse(value); }, 1000)
|
|
},
|
|
},
|
|
|
|
+ manualIPv4Domains: {
|
|
|
|
+ get: function () { return JSON.stringify(this.ipv4Domains, null, 2); },
|
|
|
|
+ set: debounce(function (value) { this.ipv4Domains = JSON.parse(value); }, 1000)
|
|
|
|
+ },
|
|
|
|
+ manualWARPDomains: {
|
|
|
|
+ get: function () { return JSON.stringify(this.warpDomains, null, 2); },
|
|
|
|
+ set: debounce(function (value) { this.warpDomains = JSON.parse(value); }, 1000)
|
|
|
|
+ },
|
|
torrentSettings: {
|
|
torrentSettings: {
|
|
get: function () {
|
|
get: function () {
|
|
return doAllItemsExist(this.settingsData.protocols.bittorrent, this.blockedProtocols);
|
|
return doAllItemsExist(this.settingsData.protocols.bittorrent, this.blockedProtocols);
|
|
@@ -796,40 +824,26 @@
|
|
},
|
|
},
|
|
GoogleIPv4Settings: {
|
|
GoogleIPv4Settings: {
|
|
get: function () {
|
|
get: function () {
|
|
- return doAllItemsExist(this.settingsData.domains.google, this.templateRuleGetter({ outboundTag: "IPv4", property: "domain" }));
|
|
|
|
|
|
+ return doAllItemsExist(this.settingsData.domains.google, this.ipv4Domains);
|
|
},
|
|
},
|
|
set: function (newValue) {
|
|
set: function (newValue) {
|
|
- oldData = this.templateRuleGetter({ outboundTag: "IPv4", property: "domain" });
|
|
|
|
if (newValue) {
|
|
if (newValue) {
|
|
- oldData = [...oldData, ...this.settingsData.domains.google];
|
|
|
|
|
|
+ this.ipv4Domains = [...this.ipv4Domains, ...this.settingsData.domains.google];
|
|
} else {
|
|
} else {
|
|
- oldData = oldData.filter(data => !this.settingsData.domains.google.includes(data))
|
|
|
|
|
|
+ this.ipv4Domains = this.ipv4Domains.filter(data => !this.settingsData.domains.google.includes(data));
|
|
}
|
|
}
|
|
- this.templateRuleSetter({
|
|
|
|
- outboundTag: "IPv4",
|
|
|
|
- property: "domain",
|
|
|
|
- data: oldData
|
|
|
|
- });
|
|
|
|
- this.syncRulesWithOutbound("IPv4", this.ipv4Settings);
|
|
|
|
},
|
|
},
|
|
},
|
|
},
|
|
NetflixIPv4Settings: {
|
|
NetflixIPv4Settings: {
|
|
get: function () {
|
|
get: function () {
|
|
- return doAllItemsExist(this.settingsData.domains.netflix, this.templateRuleGetter({ outboundTag: "IPv4", property: "domain" }));
|
|
|
|
|
|
+ return doAllItemsExist(this.settingsData.domains.netflix, this.ipv4Domains);
|
|
},
|
|
},
|
|
set: function (newValue) {
|
|
set: function (newValue) {
|
|
- oldData = this.templateRuleGetter({ outboundTag: "IPv4", property: "domain" });
|
|
|
|
if (newValue) {
|
|
if (newValue) {
|
|
- oldData = [...oldData, ...this.settingsData.domains.netflix];
|
|
|
|
|
|
+ this.ipv4Domains = [...this.ipv4Domains, ...this.settingsData.domains.netflix];
|
|
} else {
|
|
} else {
|
|
- oldData = oldData.filter(data => !this.settingsData.domains.netflix.includes(data))
|
|
|
|
|
|
+ this.ipv4Domains = this.ipv4Domains.filter(data => !this.settingsData.domains.netflix.includes(data));
|
|
}
|
|
}
|
|
- this.templateRuleSetter({
|
|
|
|
- outboundTag: "IPv4",
|
|
|
|
- property: "domain",
|
|
|
|
- data: oldData
|
|
|
|
- });
|
|
|
|
- this.syncRulesWithOutbound("IPv4", this.ipv4Settings);
|
|
|
|
},
|
|
},
|
|
},
|
|
},
|
|
IRIpSettings: {
|
|
IRIpSettings: {
|
|
@@ -978,78 +992,50 @@
|
|
},
|
|
},
|
|
GoogleWARPSettings: {
|
|
GoogleWARPSettings: {
|
|
get: function () {
|
|
get: function () {
|
|
- return doAllItemsExist(this.settingsData.domains.google, this.templateRuleGetter({ outboundTag: "WARP", property: "domain" }));
|
|
|
|
|
|
+ return doAllItemsExist(this.settingsData.domains.google, this.warpDomains);
|
|
},
|
|
},
|
|
set: function (newValue) {
|
|
set: function (newValue) {
|
|
- oldData = this.templateRuleGetter({ outboundTag: "WARP", property: "domain" });
|
|
|
|
if (newValue) {
|
|
if (newValue) {
|
|
- oldData = [...oldData, ...this.settingsData.domains.google];
|
|
|
|
|
|
+ this.warpDomains = [...this.warpDomains, ...this.settingsData.domains.google];
|
|
} else {
|
|
} else {
|
|
- oldData = oldData.filter(data => !this.settingsData.domains.google.includes(data))
|
|
|
|
|
|
+ this.warpDomains = this.warpDomains.filter(data => !this.settingsData.domains.google.includes(data));
|
|
}
|
|
}
|
|
- this.templateRuleSetter({
|
|
|
|
- outboundTag: "WARP",
|
|
|
|
- property: "domain",
|
|
|
|
- data: oldData
|
|
|
|
- });
|
|
|
|
- this.syncRulesWithOutbound("WARP", this.warpSettings);
|
|
|
|
},
|
|
},
|
|
},
|
|
},
|
|
OpenAIWARPSettings: {
|
|
OpenAIWARPSettings: {
|
|
get: function () {
|
|
get: function () {
|
|
- return doAllItemsExist(this.settingsData.domains.openai, this.templateRuleGetter({ outboundTag: "WARP", property: "domain" }));
|
|
|
|
|
|
+ return doAllItemsExist(this.settingsData.domains.openai, this.warpDomains);
|
|
},
|
|
},
|
|
set: function (newValue) {
|
|
set: function (newValue) {
|
|
- oldData = this.templateRuleGetter({ outboundTag: "WARP", property: "domain" });
|
|
|
|
if (newValue) {
|
|
if (newValue) {
|
|
- oldData = [...oldData, ...this.settingsData.domains.openai];
|
|
|
|
|
|
+ this.warpDomains = [...this.warpDomains, ...this.settingsData.domains.openai];
|
|
} else {
|
|
} else {
|
|
- oldData = oldData.filter(data => !this.settingsData.domains.openai.includes(data))
|
|
|
|
|
|
+ this.warpDomains = this.warpDomains.filter(data => !this.settingsData.domains.openai.includes(data));
|
|
}
|
|
}
|
|
- this.templateRuleSetter({
|
|
|
|
- outboundTag: "WARP",
|
|
|
|
- property: "domain",
|
|
|
|
- data: oldData
|
|
|
|
- });
|
|
|
|
- this.syncRulesWithOutbound("WARP", this.warpSettings);
|
|
|
|
},
|
|
},
|
|
},
|
|
},
|
|
NetflixWARPSettings: {
|
|
NetflixWARPSettings: {
|
|
get: function () {
|
|
get: function () {
|
|
- return doAllItemsExist(this.settingsData.domains.netflix, this.templateRuleGetter({ outboundTag: "WARP", property: "domain" }));
|
|
|
|
|
|
+ return doAllItemsExist(this.settingsData.domains.netflix, this.warpDomains);
|
|
},
|
|
},
|
|
set: function (newValue) {
|
|
set: function (newValue) {
|
|
- oldData = this.templateRuleGetter({ outboundTag: "WARP", property: "domain" });
|
|
|
|
if (newValue) {
|
|
if (newValue) {
|
|
- oldData = [...oldData, ...this.settingsData.domains.netflix];
|
|
|
|
|
|
+ this.warpDomains = [...this.warpDomains, ...this.settingsData.domains.netflix];
|
|
} else {
|
|
} else {
|
|
- oldData = oldData.filter(data => !this.settingsData.domains.netflix.includes(data))
|
|
|
|
|
|
+ this.warpDomains = this.warpDomains.filter(data => !this.settingsData.domains.netflix.includes(data));
|
|
}
|
|
}
|
|
- this.templateRuleSetter({
|
|
|
|
- outboundTag: "WARP",
|
|
|
|
- property: "domain",
|
|
|
|
- data: oldData
|
|
|
|
- });
|
|
|
|
- this.syncRulesWithOutbound("WARP", this.warpSettings);
|
|
|
|
},
|
|
},
|
|
},
|
|
},
|
|
SpotifyWARPSettings: {
|
|
SpotifyWARPSettings: {
|
|
get: function () {
|
|
get: function () {
|
|
- return doAllItemsExist(this.settingsData.domains.spotify, this.templateRuleGetter({ outboundTag: "WARP", property: "domain" }));
|
|
|
|
|
|
+ return doAllItemsExist(this.settingsData.domains.spotify, this.warpDomains);
|
|
},
|
|
},
|
|
set: function (newValue) {
|
|
set: function (newValue) {
|
|
- oldData = this.templateRuleGetter({ outboundTag: "WARP", property: "domain" });
|
|
|
|
if (newValue) {
|
|
if (newValue) {
|
|
- oldData = [...oldData, ...this.settingsData.domains.spotify];
|
|
|
|
|
|
+ this.warpDomains = [...this.warpDomains, ...this.settingsData.domains.spotify];
|
|
} else {
|
|
} else {
|
|
- oldData = oldData.filter(data => !this.settingsData.domains.spotify.includes(data))
|
|
|
|
|
|
+ this.warpDomains = this.warpDomains.filter(data => !this.settingsData.domains.spotify.includes(data));
|
|
}
|
|
}
|
|
- this.templateRuleSetter({
|
|
|
|
- outboundTag: "WARP",
|
|
|
|
- property: "domain",
|
|
|
|
- data: oldData
|
|
|
|
- });
|
|
|
|
- this.syncRulesWithOutbound("WARP", this.warpSettings);
|
|
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|