|
@@ -59,6 +59,7 @@ local excluded_domain = {
|
|
|
local mydnsip = '127.0.0.1'
|
|
|
local mydnsport = '5335'
|
|
|
local ipsetname = 'gfwlist'
|
|
|
+local new_appledns = uci:get_first("shadowsocksr", "global", "apple_dns")
|
|
|
local bc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
|
|
-- base64decoding
|
|
|
local function base64_dec(data)
|
|
@@ -112,6 +113,29 @@ local function generate_gfwlist(type)
|
|
|
os.remove("/tmp/ssr-update.tmp")
|
|
|
end
|
|
|
|
|
|
+-- 更换 Apple dns
|
|
|
+local function generate_apple(type)
|
|
|
+ local domains, domains_map = {}, {}
|
|
|
+ local out = io.open("/tmp/ssr-update." .. type, "w")
|
|
|
+ for line in io.lines("/tmp/ssr-update.tmp") do
|
|
|
+ if not (string.find(line, comment_pattern)) then
|
|
|
+ local start, finish, match = string.find(line, domain_pattern)
|
|
|
+ if start and not domains_map[match] then
|
|
|
+ domains_map[match] = true
|
|
|
+ match = string.gsub(match, "%s", "") --从域名中去除所有空白字符
|
|
|
+ table.insert(domains, match)
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ for _, domain in ipairs(domains) do
|
|
|
+ if new_appledns and new_appledns ~= "" then
|
|
|
+ out:write(string.format("server=/%s/%s\n", domain, new_appledns))
|
|
|
+ end
|
|
|
+ end
|
|
|
+ out:close()
|
|
|
+ os.remove("/tmp/ssr-update.tmp")
|
|
|
+end
|
|
|
+
|
|
|
-- adblock转码至dnsmasq格式
|
|
|
local function generate_adblock(type)
|
|
|
local domains, domains_map = {}, {}
|
|
@@ -159,6 +183,21 @@ local function update(url, file, type, file2)
|
|
|
generate_gfwlist(type)
|
|
|
Num = 2
|
|
|
end
|
|
|
+ if type == "apple_data" then
|
|
|
+ local apple = io.open("/tmp/ssr-update." .. type, "r")
|
|
|
+ local decode = apple:read("*a")
|
|
|
+ if not decode:find("apple") then
|
|
|
+ decode = base64_dec(decode)
|
|
|
+ end
|
|
|
+ apple:close()
|
|
|
+ -- 写回applechina
|
|
|
+ apple = io.open("/tmp/ssr-update.tmp", "w")
|
|
|
+ apple:write(decode)
|
|
|
+ apple:close()
|
|
|
+ if new_appledns and new_appledns ~= "" then
|
|
|
+ generate_apple(type)
|
|
|
+ end
|
|
|
+ end
|
|
|
if type == "ad_data" then
|
|
|
local adblock = io.open("/tmp/ssr-update." .. type, "r")
|
|
|
local decode = adblock:read("*a")
|
|
@@ -217,12 +256,16 @@ if args then
|
|
|
update(uci:get_first("shadowsocksr", "global", "chnroute_url"), "/etc/ssrplus/china_ssr.txt", args, TMP_PATH .. "/china_ssr.txt")
|
|
|
os.exit(0)
|
|
|
end
|
|
|
+ if args == "apple_data" then
|
|
|
+ update(uci:get_first("shadowsocksr", "global", "apple_url"), "/etc/ssrplus/applechina.conf", args, TMP_DNSMASQ_PATH .. "/applechina.conf")
|
|
|
+ os.exit(0)
|
|
|
+ end
|
|
|
if args == "ad_data" then
|
|
|
update(uci:get_first("shadowsocksr", "global", "adblock_url"), "/etc/ssrplus/ad.conf", args, TMP_DNSMASQ_PATH .. "/ad.conf")
|
|
|
os.exit(0)
|
|
|
end
|
|
|
if args == "nfip_data" then
|
|
|
- update(uci:get_first("shadowsocksr", "global", "nfip_url"), "/etc/ssrplus/netflixip.list", args)
|
|
|
+ update(uci:get_first("shadowsocksr", "global", "nfip_url"), "/etc/ssrplus/netflixip.list", args, TMP_DNSMASQ_PATH .. "/netflixip.list")
|
|
|
os.exit(0)
|
|
|
end
|
|
|
else
|
|
@@ -230,10 +273,18 @@ else
|
|
|
update(uci:get_first("shadowsocksr", "global", "gfwlist_url"), "/etc/ssrplus/gfw_list.conf", "gfw_data", TMP_DNSMASQ_PATH .. "/gfw_list.conf")
|
|
|
log("正在更新【国内IP段】数据库")
|
|
|
update(uci:get_first("shadowsocksr", "global", "chnroute_url"), "/etc/ssrplus/china_ssr.txt", "ip_data", TMP_PATH .. "/china_ssr.txt")
|
|
|
+ if uci:get_first("shadowsocksr", "global", "apple_optimization", "0") == "1" then
|
|
|
+ log("正在更新【Apple域名】数据库")
|
|
|
+ update(uci:get_first("shadowsocksr", "global", "apple_url"), "/etc/ssrplus/applechina.conf", "apple_data", TMP_DNSMASQ_PATH .. "/applechina.conf")
|
|
|
+ end
|
|
|
if uci:get_first("shadowsocksr", "global", "adblock", "0") == "1" then
|
|
|
log("正在更新【广告屏蔽】数据库")
|
|
|
update(uci:get_first("shadowsocksr", "global", "adblock_url"), "/etc/ssrplus/ad.conf", "ad_data", TMP_DNSMASQ_PATH .. "/ad.conf")
|
|
|
end
|
|
|
+ if uci:get_first("shadowsocksr", "global", "netflix_enable", "0") == "1" then
|
|
|
+ log("正在更新【Netflix IP段】数据库")
|
|
|
+ update(uci:get_first("shadowsocksr", "global", "nfip_url"), "/etc/ssrplus/netflixip.list", "nfip_data", TMP_DNSMASQ_PATH .. "/netflixip.list")
|
|
|
+ end
|
|
|
-- log("正在更新【Netflix IP段】数据库")
|
|
|
-- update(uci:get_first("shadowsocksr", "global", "nfip_url"), "/etc/ssrplus/netflixip.list", "nfip_data")
|
|
|
end
|