diff --git a/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua b/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua
index 3d693c6..cccafb0 100644
--- a/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua
+++ b/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua
@@ -205,4 +205,12 @@ o.rawhtml = true
o.template = "mosdns/mosdns_flush_cache"
o:depends("enabled_api", "1")
+s:tab("geodata", translate("GeoData Export"))
+
+o = s:taboption("geodata", DynamicList, "geosite_tags", translate("GeoSite Tags"), translate("Enter the GeoSite.dat category to be exported, Allow add multiple tags") .. '
' .. translate("Export directory: /var/mosdns"))
+o:depends("configfile", "/etc/mosdns/config_custom.yaml")
+
+o = s:taboption("geodata", DynamicList, "geoip_tags", translate("GeoIP Tags"), translate("Enter the GeoIP.dat category to be exported, Allow add multiple tags") .. '
' .. translate("Export directory: /var/mosdns"))
+o:depends("configfile", "/etc/mosdns/config_custom.yaml")
+
return m
diff --git a/luci-app-mosdns/po/zh-cn/mosdns.po b/luci-app-mosdns/po/zh-cn/mosdns.po
index e4cb52c..c756ca3 100644
--- a/luci-app-mosdns/po/zh-cn/mosdns.po
+++ b/luci-app-mosdns/po/zh-cn/mosdns.po
@@ -288,3 +288,21 @@ msgstr "PTR 黑名单"
msgid "These domains are blocked from PTR requests"
msgstr "加入的域名将阻止 PTR 请求(每个域名一行,支持域名匹配规则)"
+
+msgid "GeoData Export"
+msgstr "GeoData 导出"
+
+msgid "GeoSite Tags"
+msgstr "GeoSite 标签"
+
+msgid "Enter the GeoSite.dat category to be exported, Allow add multiple tags"
+msgstr "填写需要导出的 GeoSite.dat 类别条目,允许添加多个标签"
+
+msgid "GeoIP Tags"
+msgstr "GeoIP 标签"
+
+msgid "Enter the GeoIP.dat category to be exported, Allow add multiple tags"
+msgstr "输入需要导出的 GeoIP.dat 类别条目,允许添加多个标签"
+
+msgid "Export directory: /var/mosdns"
+msgstr "导出目录:/var/mosdns"
diff --git a/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh b/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh
index 62b6590..d2495a0 100755
--- a/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh
+++ b/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh
@@ -106,11 +106,19 @@ v2dat_dump() {
configfile=$(uci -q get mosdns.config.configfile)
mkdir -p /var/mosdns
rm -f /var/mosdns/geo*.txt
- # default config
if [ "$configfile" = "/etc/mosdns/config.yaml" ]; then
+ # default config
v2dat unpack geoip -o /var/mosdns -f cn $v2dat_dir/geoip.dat
v2dat unpack geosite -o /var/mosdns -f cn -f 'geolocation-!cn' $v2dat_dir/geosite.dat
[ "$adblock" -eq 1 ] && [ "$ad_source" = "geosite.dat" ] && v2dat unpack geosite -o /var/mosdns -f category-ads-all $v2dat_dir/geosite.dat
+ else
+ # custom config
+ v2dat unpack geoip -o /var/mosdns -f cn $v2dat_dir/geoip.dat
+ v2dat unpack geosite -o /var/mosdns -f cn -f 'geolocation-!cn' $v2dat_dir/geosite.dat
+ geoip_tags=$(uci -q get mosdns.config.geoip_tags)
+ geosite_tags=$(uci -q get mosdns.config.geosite_tags)
+ [ -n "$geoip_tags" ] && v2dat unpack geoip -o /var/mosdns $(echo $geoip_tags | sed -r 's/\w+/-f &/g') $v2dat_dir/geoip.dat
+ [ -n "$geosite_tags" ] && v2dat unpack geosite -o /var/mosdns $(echo $geosite_tags | sed -r 's/\w+/-f &/g') $v2dat_dir/geosite.dat
fi
}