diff --git a/CONTRIBUTED.md b/CONTRIBUTED.md
index 027b19a450..19fa6b2ff0 100644
--- a/CONTRIBUTED.md
+++ b/CONTRIBUTED.md
@@ -34,7 +34,7 @@ NanoPi R1s(h5) support: [jerrykuku/openwrt-nanopi-r1s-h5](https://github.com/jer
NanoPi support: [speedyworldclub/nlede](https://github.com/speedyworldclub/nlede).
luci-theme-opentomato source: [Leo-Jo-My/luci-theme-opentomato](https://github.com/Leo-Jo-My/luci-theme-opentomato).
luci-theme-opentomcat source: [Leo-Jo-My/luci-theme-opentomcat](https://github.com/Leo-Jo-My/luci-theme-opentomcat).
-qntfs-driver source: [lbbboy/qntfs-driver](https://github.com/lbbboy/qntfs-driver).
+luci-theme-atmaterial source: [yangsongli/luci-theme-atmaterial](https://github.com/yangsongli/luci-theme-atmaterial).
luci-theme-Butterfly source: [Leo-Jo-My/luci-theme-Butterfly](https://github.com/Leo-Jo-My/luci-theme-Butterfly).
lua-maxminddb source: [jerrykuku/lua-maxminddb](https://github.com/jerrykuku/lua-maxminddb).
package openwrt-mwol: [Mleaf/openwrt-mwol](https://github.com/Mleaf/openwrt-mwol).
@@ -56,7 +56,8 @@ luci-app-jd-dailybonus source: [jerrykuku/luci-app-jd-dailybonus](https://github
luci-app-oled source: [NateLol/luci-app-oled](https://github.com/NateLol/luci-app-oled).
luci-theme-edge source: [garypang13/luci-theme-edge](https://github.com//garypang13/luci-theme-edge).
luci-app-beardropper source: [NateLol/natelol](https://github.com/NateLol/natelol).
-luci-app-vssr source: [jerrykuku/luci-app-vssr](https://github.com/jerrykuku/luci-app-vssr).
+luci-app-vssr source: [jerrykuku/luci-app-vssr](https://github.com/jerrykuku/luci-app-vssr).
+luci-theme-infinityfreedom source: [xiaoqingfengATGH/luci-theme-infinityfreedom](https://github.com/xiaoqingfengATGH/luci-theme-infinityfreedom).
## License
### Depend on their own License.
diff --git a/package/ctcgfw/jpcre2/Makefile b/package/ctcgfw/jpcre2/Makefile
index 1ed418d42a..83d7079048 100644
--- a/package/ctcgfw/jpcre2/Makefile
+++ b/package/ctcgfw/jpcre2/Makefile
@@ -11,7 +11,7 @@ PKG_VERSION:=10.32.01
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/jpcre2/jpcre2/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=e8c69a6a6f77ed8d5c35dcdfa767b155f5230a83f55d35cab837b6f0a1266ca8
+PKG_HASH:=668cbc6d2c0a065bb6abe8494d5a1bb3549a14cd956a44a2df9095045623ea47
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=BSD 3-Clause
diff --git a/package/ctcgfw/luci-app-vssr/Makefile b/package/ctcgfw/luci-app-vssr/Makefile
index ac33260707..5e21a259fb 100644
--- a/package/ctcgfw/luci-app-vssr/Makefile
+++ b/package/ctcgfw/luci-app-vssr/Makefile
@@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-vssr
-PKG_VERSION:=1.16-1
-PKG_RELEASE:=20200826
+PKG_VERSION:=1.17
+PKG_RELEASE:=20200827
include $(INCLUDE_DIR)/package.mk
diff --git a/package/ctcgfw/luci-app-vssr/luasrc/controller/vssr.lua b/package/ctcgfw/luci-app-vssr/luasrc/controller/vssr.lua
index 0a1198f5bb..b1a26a6d66 100644
--- a/package/ctcgfw/luci-app-vssr/luasrc/controller/vssr.lua
+++ b/package/ctcgfw/luci-app-vssr/luasrc/controller/vssr.lua
@@ -104,20 +104,12 @@ function change_node()
local uci = luci.model.uci.cursor()
local sid = luci.http.formvalue("set")
local server = luci.http.formvalue("server")
- local flow_table = {
- "youtube", "tw_video", "netflix", "disney", "prime", "tvb", "custom"
- }
e.status = false
e.sid = sid
if sid ~= "" and server ~= "" then
uci:set("vssr", '@global[0]', server .. '_server', sid)
if (server ~= "global" and server ~= "udp_relay") then
uci:set("vssr", '@global[0]', 'v2ray_flow', "1")
- for i, v in pairs(flow_table) do
- if (v ~= server) then
- uci:set("vssr", '@global[0]', v .. '_server', 'nil')
- end
- end
end
uci:commit("vssr")
luci.sys.call("/etc/init.d/vssr restart >/www/restartlog.htm 2>&1")
diff --git a/package/ctcgfw/luci-app-vssr/root/usr/share/lua/vssrutil.lua b/package/ctcgfw/luci-app-vssr/root/usr/share/lua/vssrutil.lua
index 6c867c00d4..32ffc90770 100644
--- a/package/ctcgfw/luci-app-vssr/root/usr/share/lua/vssrutil.lua
+++ b/package/ctcgfw/luci-app-vssr/root/usr/share/lua/vssrutil.lua
@@ -13,6 +13,9 @@ function _M.get_flag(remark, host)
local ip = require "luci.ip"
local iso_table = {
+ "US", "US", "US", "US", "US", "HK", "HK", "TW", "TW", "TW", "TW", "TW",
+ "JP", "JP", "JP", "GB", "GB", "DE", "DE", "FR", "IN", "TR", "SG", "SG",
+ "KR", "KR", "KR", "KR", "RU", "IE", "CA", "CA", "AU", "CH", "AU", "AR","RU",
"AC", "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS",
"AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH",
"BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW",
@@ -34,11 +37,14 @@ function _M.get_flag(remark, host)
"SX", "SY", "SZ", "TA", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL",
"TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "UN",
"US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS",
- "XK", "YE", "YT", "ZA", "ZM", "ZW", "US", "HK", "TW", "JP", "GB", "GB",
- "DE", "FR", "IN", "TR", "SG", "KR", "RU", "IE"
+ "XK", "YE", "YT", "ZA", "ZM", "ZW"
}
local emoji_table = {
+ "美国", "US", "洛杉矶","芝加哥","达拉斯", "香港","HK", "台湾", "TW", "TAIWAN","彰化","台北",
+ "日本", "JP", "JAPAN", "英国", "UK", "德国", "DE", "法国", "印度", "土耳其", "新加坡", "SG",
+ "韩国", "首尔", "KR", "KOREA", "俄罗斯", "爱尔兰", "CANADA", "加拿大","SYDNEY", "瑞士", "澳大利亚", "阿根廷","RU",
+
"🇦🇨", "🇦🇩", "🇦🇪", "🇦🇫", "🇦🇬", "🇦🇮",
"🇦🇱", "🇦🇲", "🇦🇴", "🇦🇶", "🇦🇷", "🇦🇸",
"🇦🇹", "🇦🇺", "🇦🇼", "🇦🇽", "🇦🇿", "🇧🇦",
@@ -81,16 +87,13 @@ function _M.get_flag(remark, host)
"🇹🇼", "🇹🇿", "🇺🇦", "🇺🇬", "🇺🇲", "🇺🇳",
"🇺🇸", "🇺🇾", "🇺🇿", "🇻🇦", "🇻🇨", "🇻🇪",
"🇻🇬", "🇻🇮", "🇻🇳", "🇻🇺", "🇼🇫", "🇼🇸",
- "🇽🇰", "🇾🇪", "🇾🇹", "🇿🇦", "🇿🇲", "🇿🇼",
- "美国", "香港", "台湾", "日本", "英国", "UK", "德国",
- "法国", "印度", "土耳其", "新加坡", "韩国", "俄罗斯",
- "爱尔兰"
+ "🇽🇰", "🇾🇪", "🇾🇹", "🇿🇦", "🇿🇲", "🇿🇼"
}
local iso_code = nil
if (remark ~= nil) then
for i, v in pairs(emoji_table) do
- if (string.find(remark, v)) then
+ if (string.find(string.lower(remark), string.lower(v))) then
iso_code = string.lower(iso_table[i])
break
end
diff --git a/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/genconfig_v2ray.lua b/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/genconfig_v2ray.lua
index d815b1233d..f169afa66f 100755
--- a/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/genconfig_v2ray.lua
+++ b/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/genconfig_v2ray.lua
@@ -7,20 +7,105 @@ local local_port = arg[3]
local host = arg[4]
local main_port = arg[5]
+local outbounds_table = {}
+local rules_table = {}
+
local v2ray_flow = ucursor:get_first(name, 'global', 'v2ray_flow', '0')
-local youtube_server = ucursor:get_first(name, 'global', 'youtube_server')
-local tw_video_server = ucursor:get_first(name, 'global', 'tw_video_server')
-local netflix_server = ucursor:get_first(name, 'global', 'netflix_server')
-local disney_server = ucursor:get_first(name, 'global', 'disney_server')
-local prime_server = ucursor:get_first(name, 'global', 'prime_server')
-local tvb_server = ucursor:get_first(name, 'global', 'tvb_server')
-local custom_server = ucursor:get_first(name, 'global', 'custom_server')
local proxy_domain_name = ucursor:get_list(name, "@access_control[0]",
"proxy_domain_name")
+local flow_table = {
+ yotube = {
+ name = "youtube",
+ port = 2081,
+ rules = {
+ type = "field",
+ domain = {
+ "youtube", "ggpht.com", "googlevideo.com", "withyoutube.com",
+ "youtu.be", "youtube-nocookie.com", "youtube.com",
+ "youtubeeducation.com", "youtubegaming.com",
+ "youtubei.googleapis.com", "youtubekids.com",
+ "youtubemobilesupport.com", "yt.be", "ytimg.com"
+ },
+ outboundTag = "youtube"
+ }
+ },
+ tw_video = {
+ name = "tw_video",
+ port = 2082,
+ rules = {
+ type = "field",
+ domain = {
+ "vidol.tv", "hinet.net", "books.com", "litv.tv", "pstatic.net",
+ "app-measurement.com", "kktv.com.tw", "gamer.com.tw", "wetv.vip"
+ },
+ outboundTag = "twvideo"
+ }
+ },
+ netflix = {
+ name = "netflix",
+ port = 2083,
+ rules = {
+ type = "field",
+ domain = {
+ "fast.com", "netflix.ca", "netflix.com", "netflix.net",
+ "netflixinvestor.com", "netflixtechblog.com", "nflxext.com",
+ "nflximg.com", "nflximg.net", "nflxsearch.net", "nflxso.net",
+ "nflxvideo.net"
+ },
+
+ outboundTag = "netflix"
+ }
+ },
+ disney = {
+ name = "disney",
+ port = 2084,
+ rules = {
+ type = "field",
+ domain = {
+ "cdn.registerdisney.go.com", "disneyplus.com",
+ "disney-plus.net", "dssott.com", "bamgrid.com",
+ "execute-api.us-east-1.amazonaws.com"
+ },
+ outboundTag = "disney"
+ }
+ },
+ prime = {
+ name = "prime",
+ port = 2085,
+ rules = {
+ type = "field",
+ domain = {
+ "aiv-cdn.net", "amazonaws.com", "amazonvideo.com", "llnwd.net",
+ "amazonprimevideos.com", "amazonvideo.cc", "prime-video.com",
+ "primevideo.cc", "primevideo.com", "primevideo.info",
+ "primevideo.org", "primevideo.tv"
+ },
+ outboundTag = "prime"
+ }
+ },
+ tvb = {
+ name = "tvb",
+ port = 2086,
+ rules = {
+ type = "field",
+ domain = {"tvsuper.com", "tvb.com"},
+ outboundTag = "tvb"
+ }
+ },
+ custom = {
+ name = "custom",
+ port = 2087,
+ rules = {
+ type = "field",
+ domain = proxy_domain_name,
+ outboundTag = "custom"
+ }
+ }
+}
function gen_outbound(server_node, tags, local_ports)
local bound = {}
- if server_node == "nil" then
+ if server_node == nil or server_node == "nil" then
bound = nil
else
@@ -98,117 +183,17 @@ function gen_outbound(server_node, tags, local_ports)
return bound
end
-local outbounds_table = {}
-
if v2ray_flow == "1" then
table.insert(outbounds_table, gen_outbound(server_section, "global", 2080))
- table.insert(outbounds_table, gen_outbound(youtube_server, "youtube", 2081))
- table.insert(outbounds_table, gen_outbound(tw_video_server, "twvideo", 2082))
- table.insert(outbounds_table, gen_outbound(netflix_server, "netflix", 2083))
- table.insert(outbounds_table, gen_outbound(disney_server, "disney", 2084))
- table.insert(outbounds_table, gen_outbound(prime_server, "prime", 2085))
- table.insert(outbounds_table, gen_outbound(tvb_server, "tvb", 2086))
- table.insert(outbounds_table, gen_outbound(custom_server, "custom", 2087))
+ for i, v in pairs(flow_table) do
+ local server = ucursor:get_first(name, 'global', v.name..'_server')
+ table.insert(outbounds_table, gen_outbound(server, v.name,v.port))
+ table.insert(rules_table, (server ~=nil and server ~= "nil") and v.rules or nil)
+ end
else
- table.insert(outbounds_table,
- gen_outbound(server_section, "main", local_port))
+ table.insert(outbounds_table,gen_outbound(server_section, "main", local_port))
end
--- rules gen
-
-local youtube_rule = {
- type = "field",
- domain = {
- "youtube", "ggpht.com", "googlevideo.com", "withyoutube.com",
- "youtu.be", "youtube-nocookie.com", "youtube.com",
- "youtubeeducation.com", "youtubegaming.com", "youtubei.googleapis.com",
- "youtubekids.com", "youtubemobilesupport.com", "yt.be", "ytimg.com"
- },
- outboundTag = "youtube"
-}
-
-local tw_video_rule = {
- type = "field",
- domain = {
- "vidol.tv", "hinet.net", "books.com", "litv.tv", "pstatic.net",
- "app-measurement.com", "kktv.com.tw", "gamer.com.tw", "wetv.vip"
- },
- outboundTag = "twvideo"
-}
-
-local netflix_rule = {
- type = "field",
- domain = {
- "fast.com", "netflix.ca", "netflix.com", "netflix.net",
- "netflixinvestor.com", "netflixtechblog.com", "nflxext.com",
- "nflximg.com", "nflximg.net", "nflxsearch.net", "nflxso.net",
- "nflxvideo.net"
- },
-
- outboundTag = "netflix"
-}
-
-local disney_rule = {
- type = "field",
- domain = {
- "cdn.registerdisney.go.com", "disneyplus.com", "disney-plus.net",
- "dssott.com", "bamgrid.com", "execute-api.us-east-1.amazonaws.com"
- },
- outboundTag = "disney"
-}
-
-local prime_rule = {
- type = "field",
- domain = {
- "aiv-cdn.net", "amazonaws.com", "amazonvideo.com", "llnwd.net",
- "amazonprimevideos.com", "amazonvideo.cc", "prime-video.com",
- "primevideo.cc", "primevideo.com", "primevideo.info", "primevideo.org",
- "rimevideo.tv"
- },
- outboundTag = "prime"
-}
-
-local tvb_rule = {
- type = "field",
- domain = {"tvsuper.com", "tvb.com"},
- outboundTag = "tvb"
-}
-
-local custom_rule = {
- type = "field",
- domain = proxy_domain_name,
- outboundTag = "custom"
-}
-
-local rules_table = {}
-
-if (youtube_server ~= "nil" and v2ray_flow == "1") then
- table.insert(rules_table, youtube_rule)
-end
-
-if (tw_video_server ~= "nil" and v2ray_flow == "1") then
- table.insert(rules_table, tw_video_rule)
-end
-
-if (netflix_server ~= "nil" and v2ray_flow == "1") then
- table.insert(rules_table, netflix_rule)
-end
-
-if (disney_server ~= "nil" and v2ray_flow == "1") then
- table.insert(rules_table, disney_rule)
-end
-
-if (prime_server ~= "nil" and v2ray_flow == "1") then
- table.insert(rules_table, prime_rule)
-end
-
-if (tvb_server ~= "nil" and v2ray_flow == "1") then
- table.insert(rules_table, tvb_rule)
-end
-
-if (custom_server ~= "nil" and v2ray_flow == "1") then
- table.insert(rules_table, custom_rule)
-end
local v2ray = {
log = {
diff --git a/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/subscribe.lua b/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/subscribe.lua
index 6e089fc7f6..5bcbfcd490 100644
--- a/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/subscribe.lua
+++ b/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/subscribe.lua
@@ -335,6 +335,7 @@ local execute = function()
if result.alias:find("过期时间") or
result.alias:find("剩余流量") or
result.alias:find("QQ群") or
+ result.alias:find("不支持") or
result.alias:find("官网") or not result.server then
log('丢弃无效节点: ' .. result.type ..
' 节点, ' .. result.alias)
diff --git a/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/css/style.css b/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/css/style.css
index d7b1b55387..452b6f3684 100644
--- a/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/css/style.css
+++ b/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/css/style.css
@@ -1,4 +1,4 @@
-/**
+/**
* Material is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI
*
* luci-theme-material
@@ -476,38 +476,57 @@ header > .container > a[class="brand"]:after {
.main > .main-left > .nav > .slide > a[data-title="Status"]:before {
content: "\e026";
+ color: #5e72e4!important;
+
}
.main > .main-left > .nav > .slide > a[data-title="System"]:before {
content: "\e00a";
+color: #fb6340!important;
}
.main > .main-left > .nav > .slide > a[data-title="Network"]:before {
content: "\e00e";
+color: #8965e0!important;
}
.main > .main-left > .nav > .slide > a[data-title="VPN"]:before {
content: "\e029";
+ color: #5F9EA0!important;
}
.main > .main-left > .nav > .slide > a[data-title="Services"]:before {
content: "\e01b";
+ color: #11cdef!important;
+}
+.main > .main-left > .nav > .slide > a[data-title="Docker"]:before {
+ content: "\e02c";
+ color: #00b2ee!important;
}
.main > .main-left > .nav > .slide > a[data-title="NAS"]:before {
content: "\e00b";
+ color: #f3a4b5!important;
}
.main > .main-left > .nav > .slide > a[data-title="Control"]:before {
- content: "\e023";
+ content: "\e021";
+ color: #FFD700!important;
}
+.main > .main-left > .nav > .slide > a[data-title="Statistics"]:before {
+ content: "\e023";
+ color: #1E90FF!important;
+}
+
.main > .main-left > .nav > .slide > a[data-title="Bandwidth Monitor"]:before {
content: "\e00f";
+color: #2dce89!important;
}
.main > .main-left > .nav > li > a[data-title="Logout"] {
padding-left:36px;
line-height:40px;
+ color: #9400D3!important;
}
.main > .main-left > .nav > li > a[data-title="Logout"]:before {
content: "\e005";
diff --git a/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/fonts/advancedtomato.ttf b/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/fonts/advancedtomato.ttf
index 0f59478d51..5850541c47 100644
Binary files a/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/fonts/advancedtomato.ttf and b/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/fonts/advancedtomato.ttf differ
diff --git a/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/fonts/advancedtomato.woff b/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/fonts/advancedtomato.woff
index 4251248199..3215273d3d 100644
Binary files a/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/fonts/advancedtomato.woff and b/package/ctcgfw/luci-theme-atmaterial/htdocs/luci-static/atmaterial/fonts/advancedtomato.woff differ
diff --git a/package/ctcgfw/luci-theme-atmaterial/luasrc/view/themes/atmaterial/footer.htm b/package/ctcgfw/luci-theme-atmaterial/luasrc/view/themes/atmaterial/footer.htm
index d69417e88d..0fb8489ff2 100644
--- a/package/ctcgfw/luci-theme-atmaterial/luasrc/view/themes/atmaterial/footer.htm
+++ b/package/ctcgfw/luci-theme-atmaterial/luasrc/view/themes/atmaterial/footer.htm
@@ -45,7 +45,6 @@
// thanks for Jo-Philipp Wich
var luciLocation = <%= luci.http.write_json(luci.dispatcher.context.path) %>;
-