Open qwerttvv opened 1 day ago
看见了这么一段
-- gfwlist转码至dnsmasq格式
local function generate_gfwlist(type)
local domains = {}
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) or string.find(line, ip_pattern) or check_excluded_domain(line)) then
local start, finish, match = string.find(line, domain_pattern)
if (start) then
domains[match] = true
end
end
end
for k, v in pairs(domains) do
out:write(string.format("server=/%s/%s#%s\n", k, mydnsip, mydnsport))
out:write(string.format("ipset=/%s/%s\n", k, ipsetname))
end
out:close()
os.remove("/tmp/ssr-update.tmp")
end
这样会改变原list的内容列表的顺序吧?我给改了一下……
因为现在有些列表会优化list内容的顺序,使dnsmasq遍历匹配效率更高
所以不如大师你一并改了好了,改成下边这样,就可以按原始顺序生成内容了
并且以下代码和原始代码比较,增加的开销微乎其微,现在的列表基本都在4000到6000条的模样,可以说0性能开销增加吧
-- gfwlist转码至dnsmasq格式
local function generate_gfwlist(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) or string.find(line, ip_pattern) or check_excluded_domain(line)) then
local start, finish, match = string.find(line, domain_pattern)
if start and not domains_map[match] then
domains_map[match] = true
table.insert(domains, match)
end
end
end
for _, domain in ipairs(domains) do
out:write(string.format("server=/%s/%s#%s\n", domain, mydnsip, mydnsport))
out:write(string.format("ipset=/%s/%s\n", domain, ipsetname))
end
out:close()
os.remove("/tmp/ssr-update.tmp")
end
不知道gfw列表在别的地方还有没有相关处理,一并改改吧……
后来发现你去web页面手动更新gfw列表会报错 can't create '/dnsmasq-ssrplus.d/gfw_list.conf': No such file or directory
经多次并各种方式测试(包括使用smartdns、dnsmasq方式),没有发现你说的问题,一切正常更新,包括:web页面手动更新、ssh登录命令执行:/update.sh 更新。
这样会改变原list的内容列表的顺序吧?我给改了一下……
因为现在有些列表会优化list内容的顺序,使dnsmasq遍历匹配效率更高
所以不如大师你一并改了好了,改成下边这样,就可以按原始顺序生成内容了
并且以下代码和原始代码比较,增加的开销微乎其微,现在的列表基本都在4000到6000条的模样,可以说0性能开销增加吧
这个修改感觉不错,准备合并到仓库。
这个按钮功能失效了,只能把更新的文件更新到etc对应目录,没办法把更新后的文件替换到tmp的目录去给dnsmasq用,并且系统日志会报错can't create '/dnsmasq-ssrplus.d/gfw_list.conf': No such file or directory
临时解决办法是更新list后重启软件
你这改的还是不对吧,点更新现在根目录多了个文件夹
上次把因为新dnsmasq配置改变引起的无法启动的问题修了,见 https://github.com/fw876/helloworld/commit/8c362ba2cdb11aa26acbe93789ce76ad76705f85 感谢
后来发现你去web页面手动更新gfw列表会报错 can't create '/dnsmasq-ssrplus.d/gfw_list.conf': No such file or directory
所以就是这个更新还得修修 https://github.com/fw876/helloworld/commit/8c362ba2cdb11aa26acbe93789ce76ad76705f85
@zxlhhyccc
当前如果你想手动更新列表,那么你更新完了如果列表有变化,你就手动重启一下ssrp,或者去换个节点再保存并应用,这样就可以了