mirror of
				https://github.com/kenzok8/openwrt-packages.git
				synced 2025-10-30 07:50:37 +08:00 
			
		
		
		
	
		
			
	
	
		
			144 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
		
		
			
		
	
	
			144 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| ![github-actions[bot]](/assets/img/avatar_default.png)  | 
 | ||
|  | local NXFS = require "nixio.fs" | ||
|  | local SYS  = require "luci.sys" | ||
|  | local HTTP = require "luci.http" | ||
|  | local DISP = require "luci.dispatcher" | ||
|  | local UTIL = require "luci.util" | ||
|  | local uci = require("luci.model.uci").cursor() | ||
|  | local clash = "clash" | ||
|  | local http = luci.http | ||
|  | 
 | ||
|  | font_red = [[<font color="red">]] | ||
|  | font_off = [[</font>]] | ||
|  | bold_on  = [[<strong>]] | ||
|  | bold_off = [[</strong>]] | ||
|  | 
 | ||
|  | 
 | ||
|  | k = Map(clash) | ||
|  | k.reset = false | ||
|  | k.submit = false | ||
|  | s=k:section(TypedSection, "clash", translate("Local Update GeoIP")) | ||
|  | s.anonymous = true | ||
|  | s.addremove=false | ||
|  | o = s:option(FileUpload, "") | ||
|  | o.description = translate("NB: Upload GEOIP Database file Country.mmdb") | ||
|  | .."<br />" | ||
|  | ..translate("https://github.com/Dreamacro/maxmind-geoip/releases") | ||
|  | .."<br />" | ||
|  | ..translate("https://raw.githubusercontent.com/alecthw/mmdb_china_ip_list/release/Country.mmdb") | ||
|  | 
 | ||
|  | o.title = translate("  ") | ||
|  | o.template = "clash/clash_upload" | ||
|  | um = s:option(DummyValue, "", nil) | ||
|  | um.template = "clash/clash_dvalue" | ||
|  | 
 | ||
|  | local dir, fd | ||
|  | dir = "/etc/clash/" | ||
|  | http.setfilehandler( | ||
|  | 	function(meta, chunk, eof) | ||
|  | 		if not fd then | ||
|  | 			if not meta then return end | ||
|  | 
 | ||
|  | 			if	meta and chunk then fd = nixio.open(dir .. meta.file, "w") end | ||
|  | 
 | ||
|  | 			if not fd then | ||
|  | 				um.value = translate("upload file error.") | ||
|  | 				return | ||
|  | 			end | ||
|  | 		end | ||
|  | 		if chunk and fd then | ||
|  | 			fd:write(chunk) | ||
|  | 		end | ||
|  | 		if eof and fd then | ||
|  | 			fd:close() | ||
|  | 			fd = nil | ||
|  | 			um.value = translate("File saved to") .. ' "/etc/clash/"' | ||
|  | 			SYS.call("chmod + x /etc/clash/Country.mmdb") | ||
|  | 			if luci.sys.call("pidof clash >/dev/null") == 0 then | ||
|  | 			SYS.call("/etc/init.d/clash restart >/dev/null 2>&1 &") | ||
|  | 			end | ||
|  | 		end | ||
|  | 	end | ||
|  | ) | ||
|  | 
 | ||
|  | if luci.http.formvalue("upload") then | ||
|  | 	local f = luci.http.formvalue("ulfile") | ||
|  | 	if #f <= 0 then | ||
|  | 		um.value = translate("No specify upload file.") | ||
|  | 	end | ||
|  | end | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | m = Map("clash") | ||
|  | s = m:section(TypedSection, "clash" , translate("Online Update GeoIP")) | ||
|  | m.pageaction = false | ||
|  | s.anonymous = true | ||
|  | s.addremove=false | ||
|  | 
 | ||
|  | o = s:option(Flag, "auto_update_geoip", translate("Auto Update")) | ||
|  | o.description = translate("Auto Update GeoIP Database") | ||
|  | 
 | ||
|  | o = s:option(ListValue, "auto_update_geoip_time", translate("Update time (every day)")) | ||
|  | for t = 0,23 do | ||
|  | o:value(t, t..":00") | ||
|  | end | ||
|  | o.default=0 | ||
|  | o.description = translate("GeoIP Update Time") | ||
|  | 
 | ||
|  | 
 | ||
|  | o = s:option(ListValue, "up_time", translate("Update Every (Week/Month)")) | ||
|  | o.rmempty = false | ||
|  | o.description = translate("Time For Update (Once a week/Month)") | ||
|  | o:value("weekly", translate("Weekly")) | ||
|  | o:value("monthly", translate("Monthly")) | ||
|  | 
 | ||
|  | o = s:option(ListValue, "geoip_update_day", translate("Update Day (Day of Week)")) | ||
|  | o:value("1", translate("Every Monday")) | ||
|  | o:value("2", translate("Every Tuesday")) | ||
|  | o:value("3", translate("Every Wednesday")) | ||
|  | o:value("4", translate("Every Thursday")) | ||
|  | o:value("5", translate("Every Friday")) | ||
|  | o:value("6", translate("Every Saturday")) | ||
|  | o:value("0", translate("Every Sunday")) | ||
|  | update_time = SYS.exec("ls -l --full-time /etc/clash/Country.mmdb|awk '{print $6,$7;}'") | ||
|  | o.description = translate("Update Time")..'- ' ..font_red..bold_on..update_time..bold_off..font_off..' ' | ||
|  | o:depends("up_time", "weekly") | ||
|  | 
 | ||
|  | o = s:option(ListValue, "geo_update_week", translate("Update Day (Day of Month)")) | ||
|  | o:value("1", translate("Every 1st Day")) | ||
|  | o:value("7", translate("Every 7th Day")) | ||
|  | o:value("14", translate("Every 14th Day")) | ||
|  | o:value("21", translate("Every 21st Day")) | ||
|  | o:value("28", translate("Every 28th Day")) | ||
|  | update_time = SYS.exec("ls -l --full-time /etc/clash/Country.mmdb|awk '{print $6,$7;}'") | ||
|  | o.description = translate("Update Time")..'- ' ..font_red..bold_on..update_time..bold_off..font_off..' ' | ||
|  | o:depends("up_time", "monthly") | ||
|  | 
 | ||
|  | o = s:option(ListValue, "geoip_source", translate("GeoIP Source")) | ||
|  | o:value("1", translate("MaxMind")) | ||
|  | o:value("2", translate("Github")) | ||
|  | 
 | ||
|  | o = s:option(Value, "license_key") | ||
|  | o.title = translate("License Key") | ||
|  | o.description = translate("MaxMind License Key")..translate(" https://www.maxmind.com/en/geolite2/signup") | ||
|  | o.rmempty = true | ||
|  | o:depends("geoip_source", "1") | ||
|  | 
 | ||
|  | o=s:option(Button,"update_geoip") | ||
|  | o.inputtitle = translate("Save & Apply") | ||
|  | o.title = luci.util.pcdata(translate("Save & Apply")) | ||
|  | o.inputstyle = "reload" | ||
|  | o.write = function() | ||
|  |   m.uci:commit("clash") | ||
|  | end | ||
|  | 
 | ||
|  | o = s:option(Button,"download") | ||
|  | o.title = translate("Download") | ||
|  | o.template = "clash/geoip" | ||
|  | 
 | ||
|  | 
 | ||
|  | return m, k | ||
|  | 
 |