diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 1b2c2298..c8eb33dd 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -55,11 +55,13 @@ jobs:
unzip Xray-linux-arm64-v8a.zip
rm -f Xray-linux-arm64-v8a.zip
fi
- rm -f geoip.dat geosite.dat geoip_IR.dat geosite_IR.dat
+ rm -f geoip.dat geosite.dat geoip_IR.dat geosite_IR.dat geoip_VN.dat geosite_VN.dat
wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
wget -O geoip_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat
wget -O geosite_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat
+ wget -O geoip_VN.dat https://github.com/vuong2023/vn-v2ray-rules/releases/latest/download/geoip.dat
+ wget -O geosite_VN.dat https://github.com/vuong2023/vn-v2ray-rules/releases/latest/download/geosite.dat
mv xray xray-linux-${{ matrix.platform }}
cd ../..
diff --git a/web/html/xui/xray.html b/web/html/xui/xray.html
index 605f01b1..4a2ae38b 100644
--- a/web/html/xui/xray.html
+++ b/web/html/xui/xray.html
@@ -174,6 +174,8 @@
+
+
@@ -190,6 +192,8 @@
+
+
@@ -533,6 +537,7 @@
cn: ["geoip:cn"],
ir: ["ext:geoip_IR.dat:ir"],
ru: ["geoip:ru"],
+ vn: ["ext:geoip_VN.dat:vn"],
},
domains: {
ads: [
@@ -556,7 +561,12 @@
"regexp:.*\\.ir$",
"regexp:.*\\.xn--mgba3a4f16a$", // .ایران
"ext:geosite_IR.dat:ir" // have rules to bypass all .ir domains.
- ]
+ ],
+ vn: [
+ "regexp:.*\\.vn$",
+ "ext:geosite_VN.dat:vn",
+ "ext:geosite_VN.dat:ads"
+ ]
},
familyProtectDNS: {
"servers": [
@@ -1278,6 +1288,30 @@
}
}
},
+ VNIpSettings: {
+ get: function () {
+ return doAllItemsExist(this.settingsData.ips.vn, this.blockedIPs);
+ },
+ set: function (newValue) {
+ if (newValue) {
+ this.blockedIPs = [...this.blockedIPs, ...this.settingsData.ips.vn];
+ } else {
+ this.blockedIPs = this.blockedIPs.filter(data => !this.settingsData.ips.vn.includes(data));
+ }
+ }
+ },
+ VNDomainSettings: {
+ get: function () {
+ return doAllItemsExist(this.settingsData.domains.vn, this.blockedDomains);
+ },
+ set: function (newValue) {
+ if (newValue) {
+ this.blockedDomains = [...this.blockedDomains, ...this.settingsData.domains.vn];
+ } else {
+ this.blockedDomains = this.blockedDomains.filter(data => !this.settingsData.domains.vn.includes(data));
+ }
+ }
+ },
IRIpDirectSettings: {
get: function () {
return doAllItemsExist(this.settingsData.ips.ir, this.directIPs);
@@ -1350,6 +1384,30 @@
}
}
},
+ VNIpDirectSettings: {
+ get: function () {
+ return doAllItemsExist(this.settingsData.ips.vn, this.directIPs);
+ },
+ set: function (newValue) {
+ if (newValue) {
+ this.directIPs = [...this.directIPs, ...this.settingsData.ips.vn];
+ } else {
+ this.directIPs = this.directIPs.filter(data => !this.settingsData.ips.vn.includes(data));
+ }
+ }
+ },
+ VNDomainDirectSettings: {
+ get: function () {
+ return doAllItemsExist(this.settingsData.domains.vn, this.directDomains);
+ },
+ set: function (newValue) {
+ if (newValue) {
+ this.directDomains = [...this.directDomains, ...this.settingsData.domains.vn];
+ } else {
+ this.directDomains = this.directDomains.filter(data => !this.settingsData.domains.vn.includes(data));
+ }
+ }
+ },
GoogleWARPSettings: {
get: function () {
return doAllItemsExist(this.settingsData.domains.google, this.warpDomains);
diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml
index 38e908a1..122357d8 100644
--- a/web/translation/translate.vi_VN.toml
+++ b/web/translation/translate.vi_VN.toml
@@ -343,6 +343,10 @@
"RussiaIpDesc" = "Thay đổi mẫu cấu hình để tránh kết nối đến dải IP của Nga."
"RussiaDomain" = "Vô hiệu hóa kết nối đến tên miền của Nga"
"RussiaDomainDesc" = "Thay đổi mẫu cấu hình để tránh kết nối đến các tên miền của Nga."
+"VNIp" = "Vô hiệu hóa kết nối đến dải IP của Việt Nam"
+"VNIpDesc" = "Thay đổi mẫu cấu hình để tránh kết nối đến dải IP của Việt Nam."
+"VNDomain" = "Vô hiệu hóa kết nối đến tên miền của Việt Nam"
+"VNDomainDesc" = "Thay đổi mẫu cấu hình để tránh kết nối đến các tên miền của Việt Nam."
"DirectIRIp" = "Kết nối trực tiếp đến dải IP của Iran"
"DirectIRIpDesc" = "Thay đổi mẫu cấu hình cho kết nối trực tiếp đến dải IP của Iran."
"DirectIRDomain" = "Kết nối trực tiếp đến tên miền của Iran"
@@ -355,6 +359,10 @@
"DirectRussiaIpDesc" = "Thay đổi mẫu cấu hình cho kết nối trực tiếp đến dải IP của Nga."
"DirectRussiaDomain" = "Kết nối trực tiếp đến tên miền của Nga"
"DirectRussiaDomainDesc" = "Thay đổi mẫu cấu hình cho kết nối trực tiếp đến các tên miền của Nga."
+"DirectVNIp" = "Kết nối trực tiếp đến dải IP của Việt Nam"
+"DirectVNIpDesc" = "Thay đổi mẫu cấu hình cho kết nối trực tiếp đến dải IP của Việt Nam"
+"DirectVNDomain" = "Kết nối trực tiếp đến tên miền của Việt Nam"
+"DirectVNDomainDesc" = "Thay đổi mẫu cấu hình cho kết nối trực tiếp đến các tên miền của Việt Nam."
"GoogleIPv4" = "Sử dụng IPv4 cho Google"
"GoogleIPv4Desc" = "Thêm định tuyến cho Google để kết nối qua IPv4."
"NetflixIPv4" = "Sử dụng IPv4 cho Netflix"
diff --git a/x-ui.sh b/x-ui.sh
index 51c79cc1..fd411311 100644
--- a/x-ui.sh
+++ b/x-ui.sh
@@ -519,11 +519,13 @@ update_geo() {
systemctl stop x-ui
cd ${binFolder}
- rm -f geoip.dat geosite.dat geoip_IR.dat geosite_IR.dat
+ rm -f geoip.dat geosite.dat geoip_IR.dat geosite_IR.dat geoip_VN.dat geosite_VN.dat
wget -N https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
wget -N https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
wget -O geoip_IR.dat -N https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat
wget -O geosite_IR.dat -N https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat
+ wget -O geoip_VN.dat https://github.com/vuong2023/vn-v2ray-rules/releases/latest/download/geoip.dat
+ wget -O geosite_VN.dat https://github.com/vuong2023/vn-v2ray-rules/releases/latest/download/geosite.dat
systemctl start x-ui
echo -e "${green}Geosite.dat + Geoip.dat + geoip_IR.dat + geosite_IR.dat have been updated successfully in bin folder '${binfolder}'!${plain}"
before_show_menu