3 | <%
4 | local val = self:cfgvalue(section)
5 | if val == translate("Enable") or val == translate("Enabled") or val == translate("Config Normal") or val == translate("Exist") then
6 | %>
7 |
8 | <%
9 | else
10 | %>
11 |
12 | <%
13 | end
14 | write(pcdata(val))
15 | %>
16 |
17 |
18 | <%+cbi/valuefooter%>
19 |
--------------------------------------------------------------------------------
/luci-app-openclash/luasrc/view/openclash/dvalue.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 |
3 |
4 | <%:Note: Please Upload File According To File Type, File Will Be Saved To The Prompt Path%>
5 |
6 |
7 | <%
8 | local val = self:cfgvalue(section) or self.default or ""
9 | write(pcdata(val))
10 | %>
11 |
12 |
13 | <%+cbi/valuefooter%>
14 |
--------------------------------------------------------------------------------
/luci-app-openclash/luasrc/view/openclash/flush_fakeip_cache.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 |
3 |
34 |
35 |
36 |
37 | <%+cbi/valuefooter%>
38 |
--------------------------------------------------------------------------------
/luci-app-openclash/luasrc/view/openclash/input_file_name.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 |
18 |
19 | <%+cbi/valuefooter%>
20 |
--------------------------------------------------------------------------------
/luci-app-openclash/luasrc/view/openclash/input_rename.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 |
22 |
23 | <%+cbi/valuefooter%>
24 |
--------------------------------------------------------------------------------
/luci-app-openclash/luasrc/view/openclash/other_button.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 | <% if self:cfgvalue(section) ~= false then %>
3 |
" style="display: <%= display %>" type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> />
4 | <% else %>
5 | -
6 | <% end %>
7 | <%+cbi/valuefooter%>
8 |
--------------------------------------------------------------------------------
/luci-app-openclash/luasrc/view/openclash/update_config.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 | <%
3 | local fs = require "luci.openclash"
4 | local filename = fs.filename(self:cfgvalue(section)) or "config"
5 | local display = self.display or ""
6 | local idname = math.random(1000)..(string.match(filename, "[%w_]+") or "")
7 | %>
8 |
19 |
20 | <%
21 | if display == "" then
22 | %>
23 |
24 | <%
25 | end
26 | %>
27 | <%+cbi/valuefooter%>
28 |
--------------------------------------------------------------------------------
/luci-app-openclash/po/zh_Hans:
--------------------------------------------------------------------------------
1 | zh-cn
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/Country.mmdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/etc/openclash/Country.mmdb
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/GeoIP.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/etc/openclash/GeoIP.dat
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/GeoSite.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/etc/openclash/GeoSite.dat
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/custom/openclash_custom_chnroute6_pass.list:
--------------------------------------------------------------------------------
1 | #baidu.com
2 | #2400:da00::dbf:0:100
3 | ##解决绕过大陆后谷歌商店无法更新
4 | services.googleapis.cn
5 | googleapis.cn
6 | xn--ngstr-lra8j.com
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/custom/openclash_custom_chnroute_pass.list:
--------------------------------------------------------------------------------
1 | #baidu.com
2 | #114.114.114.114
3 | ##解决绕过大陆后谷歌商店无法更新
4 | services.googleapis.cn
5 | googleapis.cn
6 | xn--ngstr-lra8j.com
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/custom/openclash_custom_domain_dns.list:
--------------------------------------------------------------------------------
1 | #baidu.com
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/custom/openclash_custom_domain_dns_policy.list:
--------------------------------------------------------------------------------
1 | #'www.baidu.com': '114.114.114.114'
2 | #'+.internal.crop.com': '10.0.0.1'
3 | #"_vlmcs._tcp.lan": '127.0.0.1:53'
4 | #"geosite:category-games@cn": [https://doh.pub/dns-query, 114.114.114.114, 223.5.5.5]
5 | #"geosite:google": [tls://8.8.4.4, https://1.0.0.1/dns-query]
6 | #"geosite:cn": [https://doh.pub/dns-query, 114.114.114.114, 223.5.5.5]
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/custom/openclash_custom_firewall_rules.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . /usr/share/openclash/log.sh
3 | . /lib/functions.sh
4 |
5 | # This script is called by /etc/init.d/openclash
6 | # Add your custom firewall rules here, they will be added after the end of the OpenClash iptables rules
7 |
8 | LOG_OUT "Tip: Start Add Custom Firewall Rules..."
9 |
10 | exit 0
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/custom/openclash_custom_hosts.list:
--------------------------------------------------------------------------------
1 | # Static hosts for DNS server and connection establishment (like /etc/hosts)
2 | #
3 | # Wildcard hostnames are supported (e.g. *.clash.dev, *.foo.*.example.com)
4 | # Non-wildcard domain names have a higher priority than wildcard domain names
5 | # e.g. foo.example.com > *.example.com > .example.com
6 | # P.S. +.foo.com equals to .foo.com and foo.com
7 |
8 | # '*.clash.dev': 127.0.0.1
9 | # '.dev': 127.0.0.1
10 | # 'alpha.clash.dev': '::1'
11 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/custom/openclash_custom_localnetwork_ipv4.list:
--------------------------------------------------------------------------------
1 | 0.0.0.0/8
2 | 10.0.0.0/8
3 | 100.64.0.0/10
4 | 127.0.0.0/8
5 | 169.254.0.0/16
6 | 172.16.0.0/12
7 | 192.168.0.0/16
8 | 224.0.0.0/4
9 | 240.0.0.0/4
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/custom/openclash_custom_localnetwork_ipv6.list:
--------------------------------------------------------------------------------
1 | ::/128
2 | ::1/128
3 | ::ffff:0:0/96
4 | ::ffff:0:0:0/96
5 | 64:ff9b::/96
6 | 100::/64
7 | 2001::/32
8 | 2001:20::/28
9 | 2001:db8::/32
10 | 2002::/16
11 | fc00::/7
12 | fe80::/10
13 | ff00::/8
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/custom/openclash_custom_rules_2.list:
--------------------------------------------------------------------------------
1 | rules:
2 | ##- DOMAIN-SUFFIX,google.com,Proxy #匹配域名后缀(交由Proxy代理服务器组)
3 | ##- DOMAIN-KEYWORD,google,Proxy #匹配域名关键字(交由Proxy代理服务器组)
4 | ##- DOMAIN,google.com,Proxy #匹配域名(交由Proxy代理服务器组)
5 | ##- DOMAIN-SUFFIX,ad.com,REJECT #匹配域名后缀(拒绝)
6 | ##- IP-CIDR,127.0.0.0/8,DIRECT #匹配数据目标IP(直连)
7 | ##- SRC-IP-CIDR,192.168.1.201/32,DIRECT #匹配数据发起IP(直连)
8 | ##- DST-PORT,80,DIRECT #匹配数据目标端口(直连)
9 | ##- SRC-PORT,7777,DIRECT #匹配数据源端口(直连)
10 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/ABC:
--------------------------------------------------------------------------------
1 | payload:
2 | # > ABC
3 | - DOMAIN-SUFFIX,edgedatg.com
4 | - DOMAIN-SUFFIX,go.com
5 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Abema_TV:
--------------------------------------------------------------------------------
1 | payload:
2 | # > AbemaTV
3 | # - USER-AGENT,AbemaTV*
4 | - PROCESS-NAME,tv.abema
5 | - DOMAIN-SUFFIX,abema.io
6 | - DOMAIN-SUFFIX,abema.tv
7 | - DOMAIN-SUFFIX,akamaized.net
8 | - DOMAIN-SUFFIX,ameba.jp
9 | - DOMAIN-SUFFIX,hayabusa.io
10 | - DOMAIN-KEYWORD,abematv.akamaized.net
11 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Apple_Music:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Apple Music
3 | # - USER-AGENT,Music*
4 | - PROCESS-NAME,music
5 | - DOMAIN-SUFFIX,applemusic.com
6 | - DOMAIN-SUFFIX,blobstore.apple.com
7 | - DOMAIN-SUFFIX,music.apple.com
8 | - DOMAIN,aod.itunes.apple.com
9 | - DOMAIN,aod-ssl.itunes.apple.com
10 | - DOMAIN,audio.itunes.apple.com
11 | - DOMAIN,audio-ssl.itunes.apple.com
12 | - DOMAIN,mvod.itunes.apple.com
13 | - DOMAIN,streamingaudio.itunes.apple.com
14 |
15 | # iCloud Music Library
16 | - DOMAIN-SUFFIX,blobstore.apple.com
17 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Apple_News:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Apple News and Apple Map TOMTOM Version
3 | # - USER-AGENT,AppleNews*
4 | # - USER-AGENT,com.apple.news*
5 | - DOMAIN,gspe1-ssl.ls.apple.com
6 | # - USER-AGENT,News*
7 | # - DOMAIN,apple.comscoreresearch.com
8 | # - DOMAIN,gateway.icloud.com
9 | # - DOMAIN,news-client.apple.com
10 | # - DOMAIN,news-edge.apple.com
11 | # - DOMAIN,news-events.apple.com
12 | # - DOMAIN-SUFFIX,apple.news
13 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Apple_TV:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Apple TV
3 | - DOMAIN,np-edge.itunes.apple.com
4 | - DOMAIN,play-edge.itunes.apple.com
5 | - DOMAIN-SUFFIX,tv.apple.com
6 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/BBC_iPlayer:
--------------------------------------------------------------------------------
1 | payload:
2 | # > BBC iPlayer
3 | - PROCESS-NAME,bbc.iplayer.android
4 | - DOMAIN-KEYWORD,bbcfmt
5 | - DOMAIN,aod-dash-uk-live.akamaized.net
6 | - DOMAIN,aod-hls-uk-live.akamaized.net
7 | - DOMAIN,vod-dash-uk-live.akamaized.net
8 | - DOMAIN,vod-thumb-uk-live.akamaized.net
9 | - DOMAIN-SUFFIX,bbc.co
10 | - DOMAIN-SUFFIX,bbc.co.uk
11 | - DOMAIN-SUFFIX,bbc.com
12 | - DOMAIN-SUFFIX,bbcfmt.hs.llnwd.net
13 | - DOMAIN-SUFFIX,bbci.co
14 | - DOMAIN-SUFFIX,bbci.co.uk
15 | - DOMAIN-SUFFIX,bidi.net.uk
16 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Bahamut:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Bahamut
3 | # - USER-AGENT,Anime*
4 | - PROCESS-NAME,tw.com.gamer.android.animad
5 | - DOMAIN-SUFFIX,bahamut.com.tw
6 | - DOMAIN-SUFFIX,gamer.com.tw
7 | - DOMAIN,gamer-cds.cdn.hinet.net
8 | - DOMAIN,gamer2-cds.cdn.hinet.net
9 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Bilibili:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Bilibili
3 | # - USER-AGENT,bili*
4 | - DOMAIN-SUFFIX,acg.tv
5 | - DOMAIN-SUFFIX,acgvideo.com
6 | - DOMAIN-SUFFIX,b23.tv
7 | - DOMAIN-SUFFIX,bilibili.com
8 | - DOMAIN-SUFFIX,bilibili.tv
9 | - DOMAIN-SUFFIX,biliapi.net
10 | - DOMAIN-SUFFIX,biliapi.com
11 | - DOMAIN-SUFFIX,bilivideo.com
12 | - DOMAIN-SUFFIX,hdslb.com
13 | - DOMAIN,upos-hz-mirrorakam.akamaized.net
14 | # Hong Kong, Macau, Taiwan
15 | # - USER-AGENT,bili-inter*
16 | - DOMAIN,apiintl.biliapi.net
17 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/DAZN:
--------------------------------------------------------------------------------
1 | payload:
2 | # > DAZN
3 | # - USER-AGENT,DAZN*
4 |
5 | - PROCESS-NAME,com.dazn
6 |
7 | - DOMAIN-KEYWORD,voddazn
8 |
9 | - DOMAIN-SUFFIX,dazn.com
10 | - DOMAIN-SUFFIX,dazn-api.com
11 | - DOMAIN-SUFFIX,dazndn.com
12 | - DOMAIN-SUFFIX,daznedge.net
13 | - DOMAIN-SUFFIX,daznfeeds.com
14 | - DOMAIN-SUFFIX,daznservices.com
15 | - DOMAIN-SUFFIX,indazn.com
16 | - DOMAIN-SUFFIX,indaznlab.com
17 |
18 | - DOMAIN,daznfeeds.com.edgekey.net
19 | - DOMAIN,dca-lm-livedazn.secure.footprint.net
20 | - DOMAIN,h-dazn.online-metrix.net
21 | - DOMAIN,images-daznservices-com.cdn.ampproject.org
22 | - DOMAIN,d151l6v8er5bdm.cloudfront.net
23 |
24 | - IP-CIDR,185.42.236.0/24,no-resolve
25 | - IP-CIDR,185.42.238.0/24,no-resolve
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Discord:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Discord
3 | - DOMAIN-SUFFIX,discord.com
4 | - DOMAIN-SUFFIX,discord.gg
5 | - DOMAIN-SUFFIX,discord.media
6 | - DOMAIN-SUFFIX,discordapp.com
7 | - DOMAIN-SUFFIX,discordapp.net
8 | - DOMAIN-SUFFIX,discordstatus.com
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Discovery_Plus:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Discovery Plus
3 | - PROCESS-NAME,com.discovery.discoveryplus.mobile
4 | - DOMAIN-SUFFIX,content-ause1-ur-discovery1.uplynk.com
5 | - DOMAIN-SUFFIX,disco-api.com
6 | - DOMAIN-SUFFIX,discoveryplus.com
7 | - DOMAIN-SUFFIX,fwmrm.net
8 | - DOMAIN-SUFFIX,getblueshift.com
9 | - DOMAIN-SUFFIX,litix.io
10 | - DOMAIN-SUFFIX,mobile-collector.newrelic.com
11 | - DOMAIN-SUFFIX,uplynk.com
12 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Disney_Plus:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Disney Plus
3 | # - USER-AGENT,Disney*
4 |
5 | - PROCESS-NAME,com.disney.disneyplus
6 |
7 | - DOMAIN-SUFFIX,adobedtm.com
8 | - DOMAIN-SUFFIX,bam.nr-date.net
9 | - DOMAIN-SUFFIX,bamgrid.com
10 | - DOMAIN-SUFFIX,braze.com
11 | - DOMAIN-SUFFIX,cdn.optimizely.com
12 | - DOMAIN-SUFFIX,d9.flashtalking.com
13 | - DOMAIN-SUFFIX,disney.demdex.net
14 | - DOMAIN-SUFFIX,disney.my.sentry.io
15 | - DOMAIN-SUFFIX,disneyplus.bn5x.net
16 | - DOMAIN-SUFFIX,disneyplus.com
17 | - DOMAIN-SUFFIX,disneyplus.com.ssl.sc.omtrdc.net
18 | - DOMAIN-SUFFIX,disney-plus.net
19 | - DOMAIN-SUFFIX,disney-portal.my.onetrust.com
20 | - DOMAIN-SUFFIX,dssott.com
21 | - DOMAIN-SUFFIX,registerdisney.go.com
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/F1_TV:
--------------------------------------------------------------------------------
1 | payload:
2 | # > F1 TV
3 | - DOMAIN,d2n9h2wits23hf.cloudfront.net
4 | - DOMAIN,f1prodlive.akamaized.net
5 | - DOMAIN,mobile-collector.newrelic.com
6 | - DOMAIN-SUFFIX,bitmovin.com
7 | - DOMAIN-SUFFIX,f1esports.com
8 | - DOMAIN-SUFFIX,f1manager.com
9 | - DOMAIN-SUFFIX,f1play.com
10 | - DOMAIN-SUFFIX,formula1.com
11 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Fox+:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Fox+ (HK|TW|SG)
3 | # - USER-AGENT,FOXPlus*
4 | - DOMAIN-SUFFIX,akamaized.net
5 | - DOMAIN-SUFFIX,foxplus.com
6 | - DOMAIN-SUFFIX,theplatform.com
7 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Fox_Now:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Fox Now
3 | # - USER-AGENT,FOX%20NOW*
4 | - DOMAIN-SUFFIX,fox.com
5 | - DOMAIN-SUFFIX,foxdcg.com
6 | - DOMAIN-SUFFIX,uplynk.com
7 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/HBO:
--------------------------------------------------------------------------------
1 | payload:
2 | # > HBO Max
3 | - PROCESS-NAME,com.hbo.hbonow
4 | - DOMAIN-SUFFIX,hbo.com
5 | - DOMAIN-SUFFIX,hbogo.com
6 | - DOMAIN-SUFFIX,hbonow.com
7 | - DOMAIN-SUFFIX,hbomax.com
8 | - DOMAIN-SUFFIX,hbomaxcdn.com
9 |
10 | # > HBO GO
11 | - DOMAIN,44wilhpljf.execute-api.ap-southeast-1.amazonaws.com
12 | - DOMAIN,bcbolthboa-a.akamaihd.net
13 | - DOMAIN,cf-images.ap-southeast-1.prod.boltdns.net
14 | - DOMAIN,dai3fd1oh325y.cloudfront.net
15 | - DOMAIN,hboasia1-i.akamaihd.net
16 | - DOMAIN,hboasia2-i.akamaihd.net
17 | - DOMAIN,hboasia3-i.akamaihd.net
18 | - DOMAIN,hboasia4-i.akamaihd.net
19 | - DOMAIN,hboasia5-i.akamaihd.net
20 | - DOMAIN,players.brightcove.net
21 | - DOMAIN,s3-ap-southeast-1.amazonaws.com
22 | - DOMAIN-SUFFIX,hbogoasia.com
23 | - DOMAIN-SUFFIX,hbogoasia.hk
24 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/HBO_Go:
--------------------------------------------------------------------------------
1 | payload:
2 | # > HBO Max
3 | # - USER-AGENT,HBO%20GO%20PROD*
4 |
5 | # - DOMAIN-KEYWORD,hboasia
6 | - DOMAIN-KEYWORD,hbogoasia
7 |
8 | - DOMAIN-SUFFIX,hboasia.com
9 | - DOMAIN-SUFFIX,hbogo.co.th
10 | - DOMAIN-SUFFIX,hbogo.com
11 | - DOMAIN-SUFFIX,hbogo.eu
12 | - DOMAIN-SUFFIX,hbogoasia.com
13 | - DOMAIN-SUFFIX,hbogoasia.id
14 | - DOMAIN-SUFFIX,hbogoasia.ph
15 |
16 | - DOMAIN,hbolb.onwardsmg.com
17 | - DOMAIN,hbounify-prod.evergent.com
18 | # - DOMAIN,bcbolthboa-a.akamaihd.net
19 | - DOMAIN,dai3fd1oh325y.cloudfront.net
20 | # - DOMAIN,hboasialive.akamaized.net
21 | # - DOMAIN,hbogoprod-vod.akamaized.net
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/HBO_Max:
--------------------------------------------------------------------------------
1 | payload:
2 | # > HBO Max
3 | # - USER-AGENT,HBOMAX*
4 |
5 | - DOMAIN-SUFFIX,hbo.com
6 | - DOMAIN-SUFFIX,hbomax.com
7 | - DOMAIN-SUFFIX,hbomaxcdn.com
8 | - DOMAIN-SUFFIX,hbonow.com
9 | - DOMAIN-SUFFIX,hbomax.com
10 |
11 | - DOMAIN,execute-api.ap-southeast-1.amazonaws.com
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Hulu:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Hulu
3 | - PROCESS-NAME,com.hulu.plus
4 |
5 | - DOMAIN-SUFFIX,hulu.com
6 | - DOMAIN-SUFFIX,hulu.hb.omtrdc.net
7 | - DOMAIN-SUFFIX,hulu.sc.omtrdc.net
8 | - DOMAIN-SUFFIX,huluad.com
9 | - DOMAIN-SUFFIX,huluim.com
10 | - DOMAIN-SUFFIX,hulumail.com
11 | - DOMAIN-SUFFIX,huluqa.com
12 | - DOMAIN-SUFFIX,hulustream.com
13 |
14 | - DOMAIN,cs428.wpc.edgecastcdn.net
15 | - DOMAIN,cws-hulu.conviva.com
16 | - DOMAIN,hulu.com.c.footprint.net
17 | - DOMAIN,hulu.map.fastly.net
18 |
19 | - IP-CIDR,8.28.124.0/23
20 | - IP-CIDR,199.60.116.0/24
21 | - IP-CIDR,199.200.48.0/22
22 | - IP-CIDR,208.91.156.0/22
23 | - IP-CIDR6,2620:100:3000::/40
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Hulu_Japan:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Hulu(フールー)
3 | - PROCESS-NAME,jp.happyon.android
4 | - DOMAIN-SUFFIX,happyon.jp
5 | - DOMAIN-SUFFIX,hulu.jp
6 | - DOMAIN-SUFFIX,prod.hjholdings.tv
7 | - DOMAIN-SUFFIX,streaks.jp
8 | - DOMAIN-SUFFIX,yb.uncn.jp
9 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/IQI:
--------------------------------------------------------------------------------
1 | payload:
2 | # > iQIYI Intl
3 | # - USER-AGENT,iQIYI*
4 | # - USER-AGENT,QIYIVideo*
5 | # - USER-AGENT,QYPlayer*
6 | # - USER-AGENT,QTP*
7 | # - PROCESS-NAME,com.iqiyi.i18n
8 | # - PROCESS-NAME,com.iqiyi.i18n.tv
9 | - DOMAIN-SUFFIX,inter.iqiyi.com
10 | - DOMAIN-SUFFIX,iq.com
11 | # 首页
12 | - DOMAIN-SUFFIX,intl.iqiyi.com
13 | # 历史
14 | - DOMAIN,intl-rcd.iqiyi.com
15 | # 收藏
16 | - DOMAIN,intl-subscription.iqiyi.com
17 | # 播放
18 | - IP-CIDR,104.85.165.17/32,no-resolve
19 | - IP-CIDR,110.238.107.47/32,no-resolve
20 | - IP-CIDR,118.26.32.162/32,no-resolve
21 | - IP-CIDR,159.138.102.146/32,no-resolve
22 | - IP-CIDR,184.51.102.0/24,no-resolve
23 | - IP-CIDR,203.74.95.130/28,no-resolve
24 | - IP-CIDR,203.80.97.203/32,no-resolve
25 | - IP-CIDR,210.71.227.202/32,no-resolve
26 | - IP-CIDR,23.200.145.146/32,no-resolve
27 | - IP-CIDR,23.210.215.186/32,no-resolve
28 | - IP-CIDR,23.211.15.0/24,no-resolve
29 | - IP-CIDR,23.219.172.0/24,no-resolve
30 | - IP-CIDR,23.40.242.10/32,no-resolve
31 | - IP-CIDR,23.59.252.0/24,no-resolve
32 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/IQYI:
--------------------------------------------------------------------------------
1 | payload:
2 | # > IQIYI
3 | # - USER-AGENT,*QIYI*
4 | # - USER-AGENT,iQiYi*
5 | - DOMAIN-SUFFIX,iqiyi.com
6 | - DOMAIN-SUFFIX,iqiyipic.com
7 | - DOMAIN-SUFFIX,iq.com
8 | - DOMAIN-SUFFIX,qy.net
9 | - DOMAIN-SUFFIX,gitv.tv
10 | - DOMAIN-SUFFIX,71.am
11 | - DOMAIN-KEYWORD,qiyi
12 | - DOMAIN,cache.video.iqiyi.com
13 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/JOOX:
--------------------------------------------------------------------------------
1 | payload:
2 | # > JOOX
3 | - PROCESS-NAME,com.tencent.ibg.joox
4 | - PROCESS-NAME,com.tencent.ibg.jooxtv
5 | - DOMAIN-SUFFIX,joox.com
6 | - DOMAIN-KEYWORD,jooxweb-api
7 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Japonx:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Japonx
3 | - DOMAIN-KEYWORD,japonx
4 | - DOMAIN-KEYWORD,japronx
5 | - DOMAIN-SUFFIX,japonx.com
6 | - DOMAIN-SUFFIX,japonx.tv
7 | - DOMAIN-SUFFIX,japonx.net
8 | - DOMAIN-SUFFIX,japonx.vip
9 | - DOMAIN-SUFFIX,japronx.com
10 | - DOMAIN-SUFFIX,japronx.tv
11 | - DOMAIN-SUFFIX,japronx.net
12 | - DOMAIN-SUFFIX,japronx.vip
13 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/KKBOX:
--------------------------------------------------------------------------------
1 | payload:
2 | # > KKBOX
3 | - DOMAIN-SUFFIX,kkbox.com
4 | - DOMAIN-SUFFIX,kkbox.com.tw
5 | - DOMAIN-SUFFIX,kfs.io
6 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/KKTV:
--------------------------------------------------------------------------------
1 | payload:
2 | # > KKTV
3 | - PROCESS-NAME,com.kktv.kktv
4 | - DOMAIN-SUFFIX,kktv.me
5 | - DOMAIN-SUFFIX,kktv.com.tw
6 | - DOMAIN,kktv-theater.kk.stream
7 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/LAN:
--------------------------------------------------------------------------------
1 | payload:
2 | - DOMAIN-SUFFIX,local
3 | - IP-CIDR,127.0.0.0/8
4 | - IP-CIDR,172.16.0.0/12
5 | - IP-CIDR,192.168.0.0/16
6 | - IP-CIDR,10.0.0.0/8
7 | - IP-CIDR,17.0.0.0/8
8 | - IP-CIDR,100.64.0.0/10
9 | - IP-CIDR6,fe80::/10
10 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Letv:
--------------------------------------------------------------------------------
1 | payload:
2 | # > letv
3 | - DOMAIN-SUFFIX,api.mob.app.letv.com
4 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Line_TV:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Line TV
3 | # - USER-AGENT,LINE*
4 | - DOMAIN-SUFFIX,d3c7rimkq79yfu.cloudfront.net
5 | - DOMAIN-SUFFIX,linetv.tw
6 | - DOMAIN-SUFFIX,profile.line-scdn.net
7 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Netease_Music:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Netease Music
3 | - DOMAIN-SUFFIX,163yun.com
4 | - DOMAIN-SUFFIX,api.iplay.163.com
5 | - DOMAIN-SUFFIX,hz.netease.com
6 | - DOMAIN-SUFFIX,mam.netease.com
7 | - DOMAIN-SUFFIX,music.163.com
8 | - IP-CIDR,101.71.154.241/32,no-resolve
9 | - IP-CIDR,103.126.92.132/32,no-resolve
10 | - IP-CIDR,103.126.92.133/32,no-resolve
11 | - IP-CIDR,112.13.119.17/32,no-resolve
12 | - IP-CIDR,112.13.122.1/32,no-resolve
13 | - IP-CIDR,115.236.118.33/32,no-resolve
14 | - IP-CIDR,115.236.121.1/32,no-resolve
15 | - IP-CIDR,118.24.63.156/32,no-resolve
16 | - IP-CIDR,193.112.159.225/32,no-resolve
17 | - IP-CIDR,223.252.199.66/32,no-resolve
18 | - IP-CIDR,223.252.199.67/32,no-resolve
19 | - IP-CIDR,39.105.63.80/32,no-resolve
20 | - IP-CIDR,45.254.48.1/32,no-resolve
21 | - IP-CIDR,47.100.127.239/32,no-resolve
22 | - IP-CIDR,59.111.160.195/32,no-resolve
23 | - IP-CIDR,59.111.160.197/32,no-resolve
24 | - IP-CIDR,59.111.181.35/32,no-resolve
25 | - IP-CIDR,59.111.181.38/32,no-resolve
26 | - IP-CIDR,59.111.181.60/32,no-resolve
27 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Niconico:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Niconico
3 | - DOMAIN-SUFFIX,dmc.nico
4 | - DOMAIN-SUFFIX,nicovideo.jp
5 | - DOMAIN-SUFFIX,nicodic.jp
6 | - DOMAIN-SUFFIX,nicomanga.jp
7 | - DOMAIN-SUFFIX,niconico.com
8 | - DOMAIN-SUFFIX,nicoseiga.jp
9 | - DOMAIN-SUFFIX,nimg.jp
10 | - DOMAIN-SUFFIX,simg.jp
11 | - DOMAIN-SUFFIX,socdm.com
12 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/PBS:
--------------------------------------------------------------------------------
1 | payload:
2 | # > PBS
3 | # - USER-AGENT,PBS*
4 | - DOMAIN-SUFFIX,pbs.org
5 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Pandora:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Pandora
3 | - PROCESS-NAME,com.pandora.android
4 | - DOMAIN-SUFFIX,pandora.com
5 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/PayPal:
--------------------------------------------------------------------------------
1 | payload:
2 | # > PayPal
3 | # - USER-AGENT,PayPal*
4 | - DOMAIN-KEYWORD,paypal
5 | - DOMAIN-SUFFIX,paypal.com
6 | - DOMAIN-SUFFIX,paypalobjects.com
7 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Pornhub:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Pornhub
3 | - DOMAIN-SUFFIX,phncdn.com
4 | - DOMAIN-SUFFIX,phprcdn.com
5 | - DOMAIN-SUFFIX,pornhub.com
6 | - DOMAIN-SUFFIX,pornhubpremium.com
7 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Soundcloud:
--------------------------------------------------------------------------------
1 | payload:
2 | # > SoundCloud
3 | # - USER-AGENT,SoundCloud*
4 |
5 | - DOMAIN-SUFFIX,sndcdn.com
6 | - DOMAIN-SUFFIX,soundcloud.app.goo.gl
7 | - DOMAIN-SUFFIX,soundcloud.com
8 | - DOMAIN-SUFFIX,soundcloudmail.com
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Speedtest:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Fast
3 | - DOMAIN-SUFFIX,fast.com
4 |
5 | # > Speedtest by Ookla
6 | # - USER-AGENT,SpeedTest*
7 | - DOMAIN-KEYWORD,speedtest
8 | - DOMAIN-SUFFIX,ooklaserver.net
9 | - DOMAIN,speed.dler.io
10 |
11 | # > Speed Test by Cloudflare
12 | - DOMAIN-SUFFIX,speed.cloudflare.com
13 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Spotify:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Spotify
3 | # - USER-AGENT,Spotify*
4 |
5 | - PROCESS-NAME,com.spotify.music
6 |
7 | - DOMAIN-SUFFIX,pscdn.co
8 | - DOMAIN-SUFFIX,scdn.co
9 | - DOMAIN-SUFFIX,spoti.fi
10 | - DOMAIN-SUFFIX,spotify.com
11 | - DOMAIN-SUFFIX,spotifycdn.com
12 | - DOMAIN-SUFFIX,spotifycdn.net
13 | - DOMAIN-SUFFIX,spotifycharts.com
14 | - DOMAIN-SUFFIX,spotifycodes.com
15 | - DOMAIN-SUFFIX,spotifyjobs.com
16 | - DOMAIN-SUFFIX,spotifynewsroom.jp
17 | - DOMAIN-SUFFIX,spotilocal.com
18 | - DOMAIN-SUFFIX,tospotify.com
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Steam:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Steam
3 | - DOMAIN-SUFFIX,fanatical.com
4 | - DOMAIN-SUFFIX,humblebundle.com
5 | - DOMAIN-SUFFIX,playartifact.com
6 | - DOMAIN-SUFFIX,s.team
7 | - DOMAIN-SUFFIX,steam-chat.com
8 | - DOMAIN-SUFFIX,steamcommunity.com
9 | - DOMAIN-SUFFIX,steampowered.com
10 | - DOMAIN-SUFFIX,steamgames.com
11 | - DOMAIN-SUFFIX,steamstatic.com
12 | - DOMAIN-SUFFIX,steamusercontent.com
13 | - DOMAIN-SUFFIX,underlords.com
14 | - DOMAIN-SUFFIX,valvesoftware.com
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Telegram:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Telegram
3 | - DOMAIN-SUFFIX,t.me
4 | - DOMAIN-SUFFIX,tx.me
5 | - DOMAIN-SUFFIX,tdesktop.com
6 | - DOMAIN-SUFFIX,telegra.ph
7 | - DOMAIN-SUFFIX,telegram.me
8 | - DOMAIN-SUFFIX,telegram.org
9 | - DOMAIN-SUFFIX,telegram-cdn.org
10 | - DOMAIN-SUFFIX,telesco.pe
11 |
12 | - IP-CIDR,91.105.192.0/23,no-resolve
13 | - IP-CIDR,91.108.56.0/22,no-resolve
14 | - IP-CIDR,91.108.4.0/22,no-resolve
15 | - IP-CIDR,91.108.8.0/22,no-resolve
16 | - IP-CIDR,91.108.12.0/22,no-resolve
17 | - IP-CIDR,91.108.16.0/22,no-resolve
18 | - IP-CIDR,91.108.20.0/22,no-resolve
19 | - IP-CIDR,149.154.160.0/20,no-resolve
20 | - IP-CIDR,185.76.151.0/24,no-resolve
21 | - IP-CIDR6,2001:67c:4e8::/48,no-resolve
22 | - IP-CIDR6,2001:b28:f23d::/48,no-resolve
23 | - IP-CIDR6,2001:b28:f23f::/48,no-resolve
24 | - IP-CIDR6,2a0a:f280::/32,no-resolve
25 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Tencent_Video:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Tencent Video
3 | - DOMAIN-SUFFIX,v.smtcdns.com
4 | - DOMAIN-SUFFIX,vv.video.qq.com
5 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/ViuTV:
--------------------------------------------------------------------------------
1 | payload:
2 | # > ViuTV
3 | - PROCESS-NAME,com.hktve.viutv
4 |
5 | - DOMAIN-SUFFIX,bootstrapcdn.com
6 | - DOMAIN-SUFFIX,cloudfront.net
7 | - DOMAIN-SUFFIX,cognito-identity.us-east-1.amazonaws.com
8 | - DOMAIN-SUFFIX,firebaseio.com
9 | - DOMAIN-SUFFIX,jwpcdn.com
10 | - DOMAIN-SUFFIX,jwplayer.com
11 | - DOMAIN-SUFFIX,mobileanalytics.us-east-1.amazonaws.com
12 | - DOMAIN-SUFFIX,nowe.com
13 | - DOMAIN-SUFFIX,viu.com
14 | - DOMAIN-SUFFIX,viu.tv
15 | - DOMAIN-SUFFIX,viu.now.com
16 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/WeTV:
--------------------------------------------------------------------------------
1 | payload:
2 | # > WeTV
3 | - PROCESS-NAME,com.tencent.qqlivei18n
4 | - DOMAIN-SUFFIX,wetv.vip
5 | - DOMAIN-SUFFIX,wetvinfo.com
6 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/Youku:
--------------------------------------------------------------------------------
1 | payload:
2 | # > Youku
3 | - DOMAIN-SUFFIX,youku.com
4 | - IP-CIDR,106.11.0.0/16,no-resolve
5 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/encoreTVB:
--------------------------------------------------------------------------------
1 | payload:
2 | # > encoreTVB
3 | - PROCESS-NAME,com.tvbusa.encore
4 | - DOMAIN-SUFFIX,encoretvb.com
5 | - DOMAIN,content.jwplatform.com
6 | - DOMAIN,videos-f.jwpsrv.com
7 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/iQiyi:
--------------------------------------------------------------------------------
1 | payload:
2 | # > iQiyi
3 | - PROCESS-NAME,com.qiyi.video
4 | - DOMAIN,intel-cache.m.iqiyi.com
5 | - DOMAIN,intel-cache.video.iqiyi.com
6 | - DOMAIN,intl-rcd.iqiyi.com
7 | - DOMAIN,intl-subscription.iqiyi.com
8 | - DOMAIN-SUFFIX,inter.iqiyi.com
9 | - DOMAIN-SUFFIX,inter.ptqy.gitv.tv
10 | - DOMAIN-SUFFIX,intl.iqiyi.com
11 | - DOMAIN-SUFFIX,iq.com
12 |
13 | - IP-CIDR,23.211.15.99/32,no-resolve
14 | - IP-CIDR,103.5.34.153/32,no-resolve
15 | - IP-CIDR,104.109.129.153/32,no-resolve
16 | - IP-CIDR,110.238.107.47/32,no-resolve
17 | - IP-CIDR,118.26.32.178/32,no-resolve
18 | - IP-CIDR,203.74.95.131/32,no-resolve
19 | - IP-CIDR,203.74.95.139/32,no-resolve
20 | - IP-CIDR,203.211.4.169/32,no-resolve
21 | - IP-CIDR,203.211.4.193/32,no-resolve
22 | - IP-CIDR,210.201.32.8/32,no-resolve
23 | - IP-CIDR,210.201.32.11/32,no-resolve
24 |
25 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/miHoYo:
--------------------------------------------------------------------------------
1 | payload:
2 | # > miHoYo
3 | - DOMAIN-SUFFIX,bh3.com
4 | - DOMAIN-SUFFIX,hoyolab.com
5 | - DOMAIN-SUFFIX,hoyoverse.com
6 | - DOMAIN-SUFFIX,mihayo.com
7 | - DOMAIN-SUFFIX,mihoyo.com
8 | - DOMAIN-SUFFIX,miyoushe.com
9 | - DOMAIN-SUFFIX,yuanshen.com
10 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/etc/openclash/rule_provider/myTV_SUPER:
--------------------------------------------------------------------------------
1 | payload:
2 | # > myTV_SUPER
3 | # - USER-AGENT,mytv*
4 | - DOMAIN-KEYWORD,nowtv100
5 | - DOMAIN-KEYWORD,rthklive
6 | - DOMAIN-SUFFIX,mytvsuper.com
7 | - DOMAIN-SUFFIX,tvb.com
8 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/YAML.rb:
--------------------------------------------------------------------------------
1 | module YAML
2 | class << self
3 | alias_method :load, :unsafe_load if YAML.respond_to? :unsafe_load
4 | end
5 |
6 | def self.LOG(info)
7 | puts Time.new.strftime("%Y-%m-%d %H:%M:%S") + " #{info}"
8 | end
9 | end
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/cfg_unused_servers_del.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . /lib/functions.sh
3 |
4 | cfg_unused_servers_del()
5 | {
6 |
7 | local section="$1"
8 | config_get_bool "enabled" "$section" "enabled" "1"
9 |
10 | if [ "$enabled" = "1" ]; then
11 | return
12 | fi
13 |
14 | #删除未选中节点
15 | uci delete openclash."$section" 2>/dev/null
16 | }
17 |
18 | config_load "openclash"
19 | config_foreach cfg_unused_servers_del "servers"
20 | uci commit openclash
21 |
22 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/log.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | START_LOG="/tmp/openclash_start.log"
4 | LOG_FILE="/tmp/openclash.log"
5 |
6 | LOG_OUT()
7 | {
8 | if [ -n "${1}" ]; then
9 | echo -e "${1}" > $START_LOG
10 | echo -e "$(date "+%Y-%m-%d %H:%M:%S") ${1}" >> $LOG_FILE
11 | fi
12 | }
13 |
14 | LOG_INFO()
15 | {
16 | if [ -n "${1}" ]; then
17 | echo -e "$(date "+%Y-%m-%d %H:%M:%S") ${1}" >> $LOG_FILE
18 | fi
19 | }
20 |
21 | LOG_ALERT()
22 | {
23 | echo -e "$(tail -n 20 $LOG_FILE |grep -E 'level=fatal|level=error|FTL\ \[Config\]' |awk 'END {print}')" > $START_LOG
24 | sleep 3
25 | }
26 |
27 | SLOG_CLEAN()
28 | {
29 | echo "" > $START_LOG
30 | }
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/openclash_curl.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | . /usr/share/openclash/log.sh
3 |
4 | DOWNLOAD_FILE_CURL() {
5 | [ -z "$1" ] || [ -z "$2" ] && return 1
6 | DOWNLOAD_URL=$1
7 | DOWNLOAD_PATH=$2
8 | DOWNLOAD_UA=$3
9 | [ -z "$DOWNLOAD_UA" ] && DOWNLOAD_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
10 | OUTPUT=$(curl -w "%{http_code}" -SsL --connect-timeout 30 -m 60 --speed-time 30 --speed-limit 1 --retry 2 -H "User-Agent: ${DOWNLOAD_UA}" "$DOWNLOAD_URL" -o "$DOWNLOAD_PATH" 2>&1)
11 | EXIR_CODE=${PIPESTATUS[0]}
12 | HTTP_CODE=$(echo "$OUTPUT" | tail -n1)
13 | OUTPUT=$(echo "$OUTPUT" | sed '$d' | sed ':a;N;$!ba; s/\n/ /g')
14 | if [ "$EXIR_CODE" -ne 0 ] || [ "$HTTP_CODE" -ne 200 ]; then
15 | LOG_OUT "【$DOWNLOAD_PATH】Download Failed:【$OUTPUT】"
16 | rm -rf $DOWNLOAD_PATH
17 | SLOG_CLEAN
18 | return 1
19 | else
20 | return 0
21 | fi
22 | }
23 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/openclash_urlencode.lua:
--------------------------------------------------------------------------------
1 | #!/usr/bin/lua
2 |
3 | require "nixio"
4 | require "luci.util"
5 | require "luci.sys"
6 | local HTTP = require "luci.http"
7 | local url = arg[1]
8 |
9 | if not url then os.exit(0) end
10 |
11 | print(HTTP.urlencode(url) or url)
12 |
13 | os.exit(0)
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/dashboard/CNAME:
--------------------------------------------------------------------------------
1 | clash.razord.top
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/dashboard/assets/logo-b453e72f.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/dashboard/assets/logo-b453e72f.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/dashboard/manifest.webmanifest:
--------------------------------------------------------------------------------
1 | {"name":"Clash Dashboard","short_name":"Clash Dashboard","start_url":"/","display":"standalone","background_color":"#ffffff","lang":"en","scope":"./","icons":[{"src":"//cdn.jsdelivr.net/gh/Dreamacro/clash-dashboard/src/assets/Icon.png","sizes":"512x512","type":"image/png"}]}
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/CNAME:
--------------------------------------------------------------------------------
1 | d.metacubex.one
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/apple-touch-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/apple-touch-icon-180x180.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/DocumentTitle-qgMGpI7d.js:
--------------------------------------------------------------------------------
1 | import{d as t,bx as r}from"./index-BfxF6Zjo.js";const o=({children:e})=>t(r,{get children(){return[e," - MetaCubeXD"]}});export{o as D};
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/FiraSans-Regular-BN6hITtY.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/FiraSans-Regular-BN6hITtY.ttf
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/IconReload-bqqdFQ5q.js:
--------------------------------------------------------------------------------
1 | import{N as o}from"./index-BfxF6Zjo.js";/**
2 | * @license @tabler/icons-solidjs v3.31.0 - MIT
3 | *
4 | * This source code is licensed under the MIT license.
5 | * See the LICENSE file in the root directory of this source tree.
6 | */var e=o("outline","reload","IconReload",[["path",{d:"M19.933 13.041a8 8 0 1 1 -9.925 -8.788c3.899 -1 7.935 1.007 9.425 4.747"}],["path",{d:"M20 4v5h-5"}]]);export{e as I};
7 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/Twemoji.Mozilla-BSQKJ6aF.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/Twemoji.Mozilla-BSQKJ6aF.ttf
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-cyrillic-400-normal-9itZEwnn.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-cyrillic-400-normal-9itZEwnn.woff2
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-cyrillic-400-normal-DivIpeVh.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-cyrillic-400-normal-DivIpeVh.woff
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-cyrillic-ext-400-normal-Ct_d_4pr.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-cyrillic-ext-400-normal-Ct_d_4pr.woff
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-cyrillic-ext-400-normal-DVFiJ7cT.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-cyrillic-ext-400-normal-DVFiJ7cT.woff2
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-greek-400-normal-B4JJYYvj.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-greek-400-normal-B4JJYYvj.woff
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-greek-400-normal-xziLJ4od.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-greek-400-normal-xziLJ4od.woff2
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-greek-ext-400-normal-BA5_ngob.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-greek-ext-400-normal-BA5_ngob.woff
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-greek-ext-400-normal-DDGpGFz4.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-greek-ext-400-normal-DDGpGFz4.woff2
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-latin-400-normal-CRr34ncs.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-latin-400-normal-CRr34ncs.woff
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-latin-400-normal-DqUVgETp.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-latin-400-normal-DqUVgETp.woff2
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-latin-ext-400-normal-BsVau5p6.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-latin-ext-400-normal-BsVau5p6.woff2
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-latin-ext-400-normal-Cah6ivqJ.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-latin-ext-400-normal-Cah6ivqJ.woff
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-vietnamese-400-normal-CiKzo2z6.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-vietnamese-400-normal-CiKzo2z6.woff
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-vietnamese-400-normal-D5T8w5kG.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/fira-sans-vietnamese-400-normal-D5T8w5kG.woff2
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/assets/time-M8P-MK1v.js:
--------------------------------------------------------------------------------
1 | import{W as a,b4 as m}from"./index-BfxF6Zjo.js";const s=o=>a(o).locale(m()).fromNow();export{s as f};
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/favicon.ico
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
You need to enable JavaScript to run this app.
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/manifest.webmanifest:
--------------------------------------------------------------------------------
1 | {"name":"MetaCubeXD","short_name":"MetaCubeXD","description":"Mihomo Dashboard, The Official One, XD","start_url":"./","display":"standalone","background_color":"#ffffff","theme_color":"#000000","lang":"en","scope":"./","icons":[{"src":"pwa-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/pwa-512x512.png","sizes":"512x512","type":"image/png"},{"src":"pwa-512x512.png","sizes":"512x512","type":"image/png","purpose":"any maskable"}]}
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/maskable-icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/maskable-icon-512x512.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/pwa-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/pwa-192x192.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/pwa-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/pwa-512x512.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/pwa-64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/pwa-64x64.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/metacubexd/registerSW.js:
--------------------------------------------------------------------------------
1 | if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})}
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/CNAME:
--------------------------------------------------------------------------------
1 | yacd.metacubex.one
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/Twemoji_Mozilla.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/yacd/Twemoji_Mozilla.ttf
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/_headers:
--------------------------------------------------------------------------------
1 | # for netlify hosting
2 | # https://docs.netlify.com/routing/headers/#syntax-for-the-headers-file
3 |
4 | /*
5 | X-Frame-Options: DENY
6 | X-XSS-Protection: 1; mode=block
7 | X-Content-Type-Options: nosniff
8 | Referrer-Policy: same-origin
9 | /*.css
10 | Cache-Control: public, max-age=31536000, immutable
11 | /*.js
12 | Cache-Control: public, max-age=31536000, immutable
13 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/apple-touch-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/yacd/apple-touch-icon-precomposed.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/BaseModal-e9f180d4.css:
--------------------------------------------------------------------------------
1 | ._overlay_ukhe7_1{background-color:#0009}._cnt_ukhe7_5{position:absolute;background-color:var(--bg-modal);color:var(--color-text);line-height:1.4;opacity:.6;transition:all .3s ease;box-shadow:#0000001f 0 4px 4px,#0000003d 0 16px 32px}._afterOpen_ukhe7_15{opacity:1}
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/Config-7eb3f1bb.css:
--------------------------------------------------------------------------------
1 | ._root_1vck5_4,._section_1vck5_5{display:grid;grid-template-columns:repeat(auto-fill,minmax(49%,1fr));max-width:900px;grid-gap:5px;gap:5px}@media screen and (min-width: 30em){._root_1vck5_4,._section_1vck5_5{gap:15px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}._root_1vck5_4,._section_1vck5_5{padding:6px 15px 10px}@media screen and (min-width: 30em){._root_1vck5_4,._section_1vck5_5{padding:10px 40px 15px}}._wrapSwitch_1vck5_30{height:40px;display:flex;align-items:center}._sep_1vck5_36{max-width:900px;padding:0 15px}@media screen and (min-width: 30em){._sep_1vck5_36{padding:0 40px}}._sep_1vck5_36>div{border-top:1px dashed #373737}._label_1vck5_49{padding:15px 0;font-size:small}._fieldset_1hnn2_1{margin:0;padding:0;border:0;display:flex;flex-wrap:wrap;flex-direction:row}._input_1hnn2_10+._cnt_1hnn2_10{border:1px solid transparent;border-radius:4px;cursor:pointer;margin-bottom:5px}._input_1hnn2_10:focus+._cnt_1hnn2_10{border-color:var(--color-focus-blue)}._input_1hnn2_10:checked+._cnt_1hnn2_10{border-color:var(--color-focus-blue)}
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/Input-e46653b4.js:
--------------------------------------------------------------------------------
1 | import{b as s,T as a,R as f}from"./index-1a05af9b.js";const{useState:i,useRef:l,useEffect:p,useCallback:m}=f;function C(t){return s("input",{className:a.input,...t})}function R({value:t,...r}){const[u,n]=i(t),e=l(t);p(()=>{e.current!==t&&n(t),e.current=t},[t]);const c=m(o=>n(o.target.value),[n]);return s("input",{className:a.input,value:u,onChange:c,...r})}export{C as I,R as S};
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/Select-04258549.js:
--------------------------------------------------------------------------------
1 | import{b as c}from"./index-1a05af9b.js";const r="_select_gfkcv_1",a={select:r};function m({options:s,selected:t,onChange:l,...n}){return c("select",{className:a.select,value:t,onChange:l,...n,children:s.map(([e,o])=>c("option",{value:e,children:o},e))})}export{m as S};
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/Select-20369999.css:
--------------------------------------------------------------------------------
1 | ._select_gfkcv_1{height:35px;line-height:1.5;width:100%;font-size:small;padding-left:15px;appearance:none;background-color:var(--color-input-bg);color:var(--color-text);padding-right:20px;border-radius:4px;border:1px solid var(--color-input-border);background-image:url(data:image/svg+xml,%0A%20%20%20%20%3Csvg%20width%3D%228%22%20height%3D%2224%22%20viewBox%3D%220%200%208%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M4%207L7%2011H1L4%207Z%22%20fill%3D%22%23999999%22%20%2F%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M4%2017L1%2013L7%2013L4%2017Z%22%20fill%3D%22%23999999%22%20%2F%3E%0A%20%20%20%20%3C%2Fsvg%3E%0A%20%20);background-position:right 8px center;background-repeat:no-repeat}._select_gfkcv_1:hover,._select_gfkcv_1:focus{outline:none!important}._select_gfkcv_1:hover,._select_gfkcv_1:focus{border-color:#343434;color:var(--color-text-highlight);background-image:var(--select-bg-hover)}._select_gfkcv_1:focus{box-shadow:#4299e199 0 0 0 3px}._select_gfkcv_1 option{background-color:var(--color-background)}
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/TextFitler-3b17a569.js:
--------------------------------------------------------------------------------
1 | import{c as r,b as n,a3 as u,x as l}from"./index-1a05af9b.js";import{R as p}from"./rotate-cw-e799f805.js";import{d as x}from"./debounce-c1ba2006.js";const _="_rotate_1dspl_1",g="_isRotating_1dspl_5",d="_rotating_1dspl_1",c={rotate:_,isRotating:g,rotating:d};function N({isRotating:t}){const e=r(c.rotate,{[c.isRotating]:t});return n("span",{className:e,children:n(p,{width:16})})}const{useCallback:m,useState:R,useMemo:h}=l;function f(t){const[,e]=u(t),[o,i]=R(""),s=h(()=>x(e,300),[e]);return[m(a=>{i(a.target.value),s(a.target.value)},[s]),o]}const T="_input_uqa0o_1",b={input:T};function j(t){const[e,o]=f(t.textAtom);return n("input",{className:b.input,type:"text",value:o,onChange:e,placeholder:t.placeholder})}export{N as R,j as T};
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/TextFitler-cbc3b0fe.css:
--------------------------------------------------------------------------------
1 | ._rotate_1dspl_1{display:inline-flex}._isRotating_1dspl_5{animation:_rotating_1dspl_1 3s infinite linear;animation-fill-mode:forwards}@keyframes _rotating_1dspl_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._input_uqa0o_1{-webkit-appearance:none;background-color:var(--color-input-bg);background-image:none;border-radius:20px;border:1px solid var(--color-input-border);box-sizing:border-box;color:var(--color-text-secondary);display:inline-block;font-size:inherit;outline:none;padding:8px 15px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%;height:36px}._input_uqa0o_1:focus{border:1px solid var(--color-focus-blue)}
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/Twemoji_Mozilla-6d90152e.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/Twemoji_Mozilla-6d90152e.ttf
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/inter-latin-400-normal-0364d368.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/inter-latin-400-normal-0364d368.woff2
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/inter-latin-400-normal-3ea830d4.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/inter-latin-400-normal-3ea830d4.woff
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/inter-latin-800-normal-a51ac27d.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/inter-latin-800-normal-a51ac27d.woff2
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/inter-latin-800-normal-d08d7178.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/inter-latin-800-normal-d08d7178.woff
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/assets/memoize-one.esm-efa1e849.js:
--------------------------------------------------------------------------------
1 | function h(e,r){if(e==null)return{};var t={},u=Object.keys(e),n,a;for(a=0;a
=0)&&(t[n]=e[n]);return t}var o=Number.isNaN||function(r){return typeof r=="number"&&r!==r};function l(e,r){return!!(e===r||o(e)&&o(r))}function g(e,r){if(e.length!==r.length)return!1;for(var t=0;t{const{top:o}=t.current.getBoundingClientRect();i(window.innerHeight-o)},[]);return c(()=>(e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}),[e]),[t,n]}export{d as u};
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/yacd/logo.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/manifest.webmanifest:
--------------------------------------------------------------------------------
1 | {"name":"yacd","short_name":"yacd","start_url":"./","display":"standalone","background_color":"#ffffff","lang":"en","scope":"./","icons":[{"src":"apple-touch-icon-precomposed.png","sizes":"512x512","type":"image/png"}]}
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/registerSW.js:
--------------------------------------------------------------------------------
1 | if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})}
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/yacd.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/yacd/yacd.ico
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/yacd/yacd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/yacd/yacd.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/zashboard/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/zashboard/apple-touch-icon.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/zashboard/assets/NotoColorEmoji-flagsonly-CWWDk9km.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/zashboard/assets/NotoColorEmoji-flagsonly-CWWDk9km.ttf
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/zashboard/assets/metacubex-BlQkOUXT.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/zashboard/assets/metacubex-BlQkOUXT.jpg
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/zashboard/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/zashboard/favicon.ico
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/zashboard/manifest.webmanifest:
--------------------------------------------------------------------------------
1 | {"name":"zashboard","short_name":"zashboard","description":"a dashboard using clash api","start_url":"./","display":"standalone","background_color":"#ffffff","theme_color":"#000000","lang":"en","scope":"./","icons":[{"src":"./pwa-192x192.png","sizes":"192x192","type":"image/png","purpose":"any"},{"src":"./pwa-512x512.png","sizes":"512x512","type":"image/png","purpose":"any"},{"src":"./pwa-maskable-192x192.png","sizes":"192x192","type":"image/png","purpose":"maskable"},{"src":"./pwa-maskable-512x512.png","sizes":"512x512","type":"image/png","purpose":"maskable"}]}
2 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/zashboard/pwa-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/zashboard/pwa-192x192.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/zashboard/pwa-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/zashboard/pwa-512x512.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/zashboard/pwa-maskable-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/zashboard/pwa-maskable-192x192.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/zashboard/pwa-maskable-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/usr/share/openclash/ui/zashboard/pwa-maskable-512x512.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/ui/zashboard/registerSW.js:
--------------------------------------------------------------------------------
1 | if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})}
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/openclash/yml_groups_name_get.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . /usr/share/openclash/ruby.sh
3 |
4 | CFG_FILE=$(uci -q get openclash.config.config_path)
5 | UPDATE_CONFIG_FILE=$(uci -q get openclash.config.config_update_path)
6 |
7 | if [ ! -z "$UPDATE_CONFIG_FILE" ]; then
8 | CFG_FILE="$UPDATE_CONFIG_FILE"
9 | fi
10 |
11 | if [ -z "$CFG_FILE" ]; then
12 | for file_name in /etc/openclash/config/*
13 | do
14 | if [ -f "$file_name" ]; then
15 | CFG_FILE=$file_name
16 | break
17 | fi
18 | done
19 | fi
20 |
21 | if [ -f "$CFG_FILE" ]; then
22 | rm -rf "/tmp/Proxy_Group" 2>/dev/null
23 | ruby_read_hash_arr "$CFG_FILE" "['proxy-groups']" "['name']" >/tmp/Proxy_Group 2>&1
24 |
25 | if [ -f "/tmp/Proxy_Group" ]; then
26 | echo 'DIRECT' >>/tmp/Proxy_Group
27 | echo 'REJECT' >>/tmp/Proxy_Group
28 | echo 'REJECT-DROP' >>/tmp/Proxy_Group
29 | echo 'PASS' >>/tmp/Proxy_Group
30 | echo 'GLOBAL' >>/tmp/Proxy_Group
31 | else
32 | return 1
33 | fi
34 | else
35 | return 1
36 | fi
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/rpcd/acl.d/luci-app-openclash.json:
--------------------------------------------------------------------------------
1 | {
2 | "luci-app-openclash": {
3 | "description": "Grant UCI access for luci-app-openclash",
4 | "read": {
5 | "uci": [ "openclash" ]
6 | },
7 | "write": {
8 | "uci": [ "openclash" ]
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/luci-app-openclash/root/usr/share/ucitrack/luci-app-openclash.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": "openclash",
3 | "init": "openclash"
4 | }
5 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/www/luci-static/resources/openclash/addon/dialog/dialog.css:
--------------------------------------------------------------------------------
1 | .CodeMirror-dialog {
2 | position: absolute;
3 | left: 0; right: 0;
4 | background: inherit;
5 | z-index: 15;
6 | padding: .1em .8em;
7 | overflow: hidden;
8 | color: inherit;
9 | }
10 |
11 | .CodeMirror-dialog-top {
12 | border-bottom: 1px solid #eee;
13 | top: 0;
14 | }
15 |
16 | .CodeMirror-dialog-bottom {
17 | border-top: 1px solid #eee;
18 | bottom: 0;
19 | }
20 |
21 | .CodeMirror-dialog input {
22 | border: none;
23 | outline: none;
24 | background: transparent;
25 | width: 20em;
26 | color: inherit;
27 | font-family: monospace;
28 | }
29 |
30 | .CodeMirror-dialog button {
31 | font-size: 70%;
32 | }
33 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/www/luci-static/resources/openclash/addon/display/fullscreen.css:
--------------------------------------------------------------------------------
1 | .CodeMirror-fullscreen {
2 | position: fixed;
3 | top: 0; left: 0; right: 0; bottom: 0;
4 | height: auto;
5 | z-index: 9;
6 | }
7 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/www/luci-static/resources/openclash/addon/fold/foldgutter.css:
--------------------------------------------------------------------------------
1 | .CodeMirror-foldmarker {
2 | color: blue;
3 | text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px;
4 | font-family: arial;
5 | line-height: .3;
6 | cursor: pointer;
7 | }
8 | .CodeMirror-foldgutter {
9 | width: .7em;
10 | }
11 | .CodeMirror-foldgutter-open,
12 | .CodeMirror-foldgutter-folded {
13 | cursor: pointer;
14 | }
15 | .CodeMirror-foldgutter-open:after {
16 | content: "\25BE";
17 | }
18 | .CodeMirror-foldgutter-folded:after {
19 | content: "\25B8";
20 | }
21 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/www/luci-static/resources/openclash/addon/search/matchesonscrollbar.css:
--------------------------------------------------------------------------------
1 | .CodeMirror-search-match {
2 | background: gold;
3 | border-top: 1px solid orange;
4 | border-bottom: 1px solid orange;
5 | -moz-box-sizing: border-box;
6 | box-sizing: border-box;
7 | opacity: .5;
8 | }
9 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/www/luci-static/resources/openclash/img/arrow-clockwise-light.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/www/luci-static/resources/openclash/img/eye-light.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/www/luci-static/resources/openclash/img/eye-slash-light.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/www/luci-static/resources/openclash/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/root/www/luci-static/resources/openclash/img/logo.png
--------------------------------------------------------------------------------
/luci-app-openclash/root/www/luci-static/resources/openclash/img/megaphone-simple.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/luci-app-openclash/root/www/luci-static/resources/openclash/img/wrench-light.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/luci-app-openclash/tools/po2lmo/Makefile:
--------------------------------------------------------------------------------
1 |
2 | INSTALL = install
3 | PREFIX = /usr/bin
4 |
5 | po2lmo: src/po2lmo.o src/template_lmo.o
6 | $(CC) $(LDFLAGS) -o src/po2lmo src/po2lmo.o src/template_lmo.o
7 |
8 | install:
9 | $(INSTALL) -m 755 src/po2lmo $(PREFIX)
10 |
11 | clean:
12 | $(RM) src/po2lmo src/*.o
13 |
--------------------------------------------------------------------------------
/luci-app-openclash/tools/po2lmo/src/po2lmo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-openclash/tools/po2lmo/src/po2lmo
--------------------------------------------------------------------------------
/luci-app-passwall/luasrc/model/cbi/passwall/client/type/naive.lua:
--------------------------------------------------------------------------------
1 | local m, s = ...
2 |
3 | local api = require "luci.passwall.api"
4 |
5 | if not api.is_finded("naive") then
6 | return
7 | end
8 |
9 | local type_name = "Naiveproxy"
10 |
11 | local option_prefix = "naive_"
12 |
13 | local function _n(name)
14 | return option_prefix .. name
15 | end
16 |
17 | -- [[ Naive ]]
18 |
19 | s.fields["type"]:value(type_name, translate("NaiveProxy"))
20 |
21 | o = s:option(ListValue, _n("protocol"), translate("Protocol"))
22 | o:value("https", translate("HTTPS"))
23 | o:value("quic", translate("QUIC"))
24 |
25 | o = s:option(Value, _n("address"), translate("Address (Support Domain Name)"))
26 |
27 | o = s:option(Value, _n("port"), translate("Port"))
28 | o.datatype = "port"
29 |
30 | o = s:option(Value, _n("username"), translate("Username"))
31 |
32 | o = s:option(Value, _n("password"), translate("Password"))
33 | o.password = true
34 |
35 | api.luci_types(arg[1], m, s, type_name, option_prefix)
36 |
--------------------------------------------------------------------------------
/luci-app-passwall/luasrc/model/cbi/passwall/server/user.lua:
--------------------------------------------------------------------------------
1 | local api = require "luci.passwall.api"
2 | local fs = api.fs
3 | local types_dir = "/usr/lib/lua/luci/model/cbi/passwall/server/type/"
4 |
5 | m = Map("passwall_server", translate("Server Config"))
6 | m.redirect = api.url("server")
7 | api.set_apply_on_parse(m)
8 |
9 | if not arg[1] or not m:get(arg[1]) then
10 | luci.http.redirect(m.redirect)
11 | end
12 |
13 | s = m:section(NamedSection, arg[1], "user", "")
14 | s.addremove = false
15 | s.dynamic = false
16 |
17 | o = s:option(Flag, "enable", translate("Enable"))
18 | o.default = "1"
19 | o.rmempty = false
20 |
21 | o = s:option(Value, "remarks", translate("Remarks"))
22 | o.default = translate("Remarks")
23 | o.rmempty = false
24 |
25 | o = s:option(ListValue, "type", translate("Type"))
26 |
27 | local type_table = {}
28 | for filename in fs.dir(types_dir) do
29 | table.insert(type_table, filename)
30 | end
31 | table.sort(type_table)
32 |
33 | for index, value in ipairs(type_table) do
34 | local p_func = loadfile(types_dir .. value)
35 | setfenv(p_func, getfenv(1))(m, s)
36 | end
37 |
38 | return m
39 |
--------------------------------------------------------------------------------
/luci-app-passwall/luasrc/view/passwall/cbi/hidevalue.htm:
--------------------------------------------------------------------------------
1 | " data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>" style="display: none !important">
2 | " />
3 |
4 |
--------------------------------------------------------------------------------
/luci-app-passwall/luasrc/view/passwall/haproxy/status.htm:
--------------------------------------------------------------------------------
1 | <%
2 | local api = require "luci.passwall.api"
3 | local console_port = api.uci_get_type("@global_haproxy[0]", "console_port", "")
4 | -%>
5 |
6 |
7 |
27 |
--------------------------------------------------------------------------------
/luci-app-passwall/po/zh_Hans:
--------------------------------------------------------------------------------
1 | zh-cn
--------------------------------------------------------------------------------
/luci-app-passwall/root/etc/config/passwall_server:
--------------------------------------------------------------------------------
1 |
2 | config global 'global'
3 | option enable '0'
4 |
5 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/etc/hotplug.d/iface/98-passwall:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | [[ "$ACTION" == "ifup" && $(uci get "passwall.@global[0].enabled") == "1" ]] && [ -f /var/lock/passwall_ready.lock ] && {
4 | default_device=$(ip route | grep default | awk -F 'dev ' '{print $2}' | awk '{print $1}')
5 | [ "$default_device" == "$DEVICE" ] && {
6 | LOCK_FILE_DIR=/var/lock
7 | [ ! -d ${LOCK_FILE_DIR} ] && mkdir -p ${LOCK_FILE_DIR}
8 | LOCK_FILE="${LOCK_FILE_DIR}/passwall_ifup.lock"
9 | if [ -s ${LOCK_FILE} ]; then
10 | SPID=$(cat ${LOCK_FILE})
11 | if [ -e /proc/${SPID}/status ]; then
12 | exit 1
13 | fi
14 | cat /dev/null > ${LOCK_FILE}
15 | fi
16 | echo $$ > ${LOCK_FILE}
17 |
18 | /etc/init.d/passwall restart >/dev/null 2>&1 &
19 | logger -p notice -t network -s "passwall: restart when $INTERFACE ifup"
20 |
21 | rm -rf ${LOCK_FILE}
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/etc/init.d/passwall_server:
--------------------------------------------------------------------------------
1 | #!/bin/sh /etc/rc.common
2 |
3 | START=99
4 |
5 | start() {
6 | lua /usr/lib/lua/luci/passwall/server_app.lua start
7 | }
8 |
9 | stop() {
10 | lua /usr/lib/lua/luci/passwall/server_app.lua stop
11 | }
12 |
13 | restart() {
14 | stop
15 | start
16 | }
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/haproxy_check.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/bin
4 |
5 | listen_address=$1
6 | listen_port=$2
7 | server_address=$3
8 | server_port=$4
9 |
10 | probe_file="/tmp/etc/passwall/haproxy/Probe_URL"
11 | probeUrl="https://www.google.com/generate_204"
12 | if [ -f "$probe_file" ]; then
13 | firstLine=$(head -n 1 "$probe_file" | tr -d ' \t\n')
14 | [ -n "$firstLine" ] && probeUrl="$firstLine"
15 | fi
16 |
17 | extra_params="-x socks5h://${server_address}:${server_port}"
18 | if /usr/bin/curl --help all | grep -q "\-\-retry-all-errors"; then
19 | extra_params="${extra_params} --retry-all-errors"
20 | fi
21 |
22 | status=$(/usr/bin/curl -I -o /dev/null -skL ${extra_params} --connect-timeout 3 --retry 1 --max-time 10 -w "%{http_code}" "${probeUrl}")
23 |
24 | case "$status" in
25 | 200|204)
26 | exit 0
27 | ;;
28 | *)
29 | exit 1
30 | ;;
31 | esac
32 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/helper_smartdns.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | restart() {
4 | local no_log
5 | eval_set_val $@
6 | _LOG_FILE=$LOG_FILE
7 | [ -n "$no_log" ] && LOG_FILE="/dev/null"
8 | rm -rf /tmp/smartdns.cache
9 | /etc/init.d/smartdns reload >/dev/null 2>&1
10 | LOG_FILE=${_LOG_FILE}
11 | }
12 |
13 | del() {
14 | rm -rf /tmp/etc/smartdns/passwall.conf
15 | sed -i "/passwall/d" /etc/smartdns/custom.conf >/dev/null 2>&1
16 | rm -rf /tmp/smartdns.cache
17 | /etc/init.d/smartdns reload >/dev/null 2>&1
18 | }
19 |
20 | arg1=$1
21 | shift
22 | case $arg1 in
23 | del)
24 | del $@
25 | ;;
26 | restart)
27 | restart $@
28 | ;;
29 | *) ;;
30 | esac
31 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/rules/block_host:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-passwall/root/usr/share/passwall/rules/block_host
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/rules/block_ip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-passwall/root/usr/share/passwall/rules/block_ip
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/rules/direct_host:
--------------------------------------------------------------------------------
1 | cn
2 | apple.com
3 | microsoft.com
4 | dyndns.com
5 | douyucdn.cn
6 | douyucdn2.cn
7 | location.services.mozilla.com
8 |
9 | #steam
10 | steamcontent.com
11 | dl.steam.clngaa.com
12 | dl.steam.ksyna.com
13 | st.dl.bscstorage.net
14 | st.dl.eccdnx.com
15 | st.dl.pinyuncloud.com
16 | cdn.mileweb.cs.steampowered.com.8686c.com
17 | cdn-ws.content.steamchina.com
18 | cdn-qc.content.steamchina.com
19 | cdn-ali.content.steamchina.com
20 | epicgames-download1-1251447533.file.myqcloud.com
21 |
22 | #DoT/DoH
23 | dns.alidns.com
24 | doh.pub
25 | dot.pub
26 | doh.360.cn
27 | dot.360.cn
28 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/rules/direct_ip:
--------------------------------------------------------------------------------
1 | 114.114.114.114
2 | 114.114.115.115
3 | 223.5.5.5
4 | 223.6.6.6
5 | 119.29.29.29
6 | 180.76.76.76
7 | 1.12.12.12
8 | 120.53.53.53
9 | 180.184.1.1
10 | 180.184.2.2
11 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/rules/domains_excluded:
--------------------------------------------------------------------------------
1 | courier.push.apple.com
2 | rbsxbxp-mim.vivox.com
3 | rbsxbxp.www.vivox.com
4 | rbsxbxp-ws.vivox.com
5 | rbspsxp.www.vivox.com
6 | rbspsxp-mim.vivox.com
7 | rbspsxp-ws.vivox.com
8 | rbswxp.www.vivox.com
9 | rbswxp-mim.vivox.com
10 | disp-rbspsp-5-1.vivox.com
11 | disp-rbsxbp-5-1.vivox.com
12 | proxy.rbsxbp.vivox.com
13 | proxy.rbspsp.vivox.com
14 | proxy.rbswp.vivox.com
15 | rbswp.vivox.com
16 | rbsxbp.vivox.com
17 | rbspsp.vivox.com
18 | rbspsp.www.vivox.com
19 | rbswp.www.vivox.com
20 | rbsxbp.www.vivox.com
21 | rbsxbxp.vivox.com
22 | rbspsxp.vivox.com
23 | rbswxp.vivox.com
24 | Mijia Cloud
25 | dlg.io.mi.com
26 | marscdn.c2c.wechat.com
27 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/rules/lanlist_ipv4:
--------------------------------------------------------------------------------
1 | 0.0.0.0/8
2 | 10.0.0.0/8
3 | 100.64.0.0/10
4 | 127.0.0.0/8
5 | 169.254.0.0/16
6 | 172.16.0.0/12
7 | 192.0.0.0/24
8 | 192.0.2.0/24
9 | 192.88.99.0/24
10 | 192.168.0.0/16
11 | 198.51.100.0/24
12 | 203.0.113.0/24
13 | 224.0.0.0/4
14 | 233.252.0.0/24
15 | 240.0.0.0/4
16 | 255.255.255.255/32
17 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/rules/lanlist_ipv6:
--------------------------------------------------------------------------------
1 | ::/128
2 | ::1/128
3 | ::ffff:0:0/96
4 | ::ffff:0:0:0/96
5 | 64:ff9b::/96
6 | 64:ff9b:1::/48
7 | 100::/64
8 | 2001::/32
9 | 2001:20::/28
10 | 2001:db8::/32
11 | 2002::/16
12 | 3fff::/20
13 | 5f00::/16
14 | fc00::/7
15 | fe80::/64
16 | ff00::/8
17 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/rules/proxy_host:
--------------------------------------------------------------------------------
1 | engage.cloudflareclient.com
2 | github.com
3 | bing.com
4 | c.mi.com
5 | apple-relay.apple.com
6 |
7 | #google
8 | googleapis.cn
9 | googleapis.com
10 | google.com.tw
11 | google.com.hk
12 | gstatic.com
13 | xn--ngstr-lra8j.com
14 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/passwall/rules/proxy_ip:
--------------------------------------------------------------------------------
1 | 149.154.160.0/20
2 | 91.108.4.0/22
3 | 91.108.56.0/24
4 | 109.239.140.0/24
5 | 67.198.55.0/24
6 | 8.8.4.4
7 | 8.8.8.8
8 | 208.67.222.222
9 | 208.67.220.220
10 | 104.16.249.249
11 | 104.16.248.249
12 | 1.1.1.1
13 | 1.1.1.2
14 | 1.0.0.1
15 | 9.9.9.9
16 | 149.112.112.112
17 | 2001:67c:4e8::/48
18 | 2001:b28:f23c::/48
19 | 2001:b28:f23d::/48
20 | 2001:b28:f23f::/48
21 | 2001:b28:f242::/48
22 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/rpcd/acl.d/luci-app-passwall.json:
--------------------------------------------------------------------------------
1 | {
2 | "luci-app-passwall": {
3 | "description": "Grant UCI access for luci-app-passwall",
4 | "read": {
5 | "uci": [ "passwall", "passwall_server" ]
6 | },
7 | "write": {
8 | "uci": [ "passwall", "passwall_server" ]
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/ucitrack/luci-app-passwall-server.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": "passwall_server",
3 | "init": "passwall_server"
4 | }
5 |
--------------------------------------------------------------------------------
/luci-app-passwall/root/usr/share/ucitrack/luci-app-passwall.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": "passwall",
3 | "init": "passwall"
4 | }
5 |
--------------------------------------------------------------------------------
/luci-app-passwall2/luasrc/model/cbi/passwall2/client/app_update.lua:
--------------------------------------------------------------------------------
1 | local api = require "luci.passwall2.api"
2 | local appname = api.appname
3 |
4 | m = Map(appname)
5 | api.set_apply_on_parse(m)
6 |
7 | -- [[ App Settings ]]--
8 | s = m:section(TypedSection, "global_app", translate("App Update"),
9 | "" ..
10 | translate("Please confirm that your firmware supports FPU.") ..
11 | " ")
12 | s.anonymous = true
13 | s:append(Template(appname .. "/app_update/app_version"))
14 |
15 | local k, v
16 | local com = require "luci.passwall2.com"
17 | for k, v in pairs(com) do
18 | o = s:option(Value, k:gsub("%-","_") .. "_file", translatef("%s App Path", v.name))
19 | o.default = v.default_path or ("/usr/bin/" .. k)
20 | o.rmempty = false
21 | end
22 |
23 | o = s:option(DummyValue, "tips", " ")
24 | o.rawhtml = true
25 | o.cfgvalue = function(t, n)
26 | return string.format('%s ', translate("if you want to run from memory, change the path, /tmp beginning then save the application and update it manually."))
27 | end
28 |
29 | return m
30 |
--------------------------------------------------------------------------------
/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/naive.lua:
--------------------------------------------------------------------------------
1 | local m, s = ...
2 |
3 | local api = require "luci.passwall2.api"
4 |
5 | if not api.is_finded("naive") then
6 | return
7 | end
8 |
9 | local type_name = "Naiveproxy"
10 |
11 | local option_prefix = "naive_"
12 |
13 | local function _n(name)
14 | return option_prefix .. name
15 | end
16 |
17 | -- [[ Naive ]]
18 |
19 | s.fields["type"]:value(type_name, translate("NaiveProxy"))
20 |
21 | o = s:option(ListValue, _n("protocol"), translate("Protocol"))
22 | o:value("https", translate("HTTPS"))
23 | o:value("quic", translate("QUIC"))
24 |
25 | o = s:option(Value, _n("address"), translate("Address (Support Domain Name)"))
26 |
27 | o = s:option(Value, _n("port"), translate("Port"))
28 | o.datatype = "port"
29 |
30 | o = s:option(Value, _n("username"), translate("Username"))
31 |
32 | o = s:option(Value, _n("password"), translate("Password"))
33 | o.password = true
34 |
35 | api.luci_types(arg[1], m, s, type_name, option_prefix)
36 |
--------------------------------------------------------------------------------
/luci-app-passwall2/luasrc/model/cbi/passwall2/server/user.lua:
--------------------------------------------------------------------------------
1 | local api = require "luci.passwall2.api"
2 | local fs = require "nixio.fs"
3 | local types_dir = "/usr/lib/lua/luci/model/cbi/passwall2/server/type/"
4 |
5 | m = Map("passwall2_server", translate("Server Config"))
6 | m.redirect = api.url("server")
7 | api.set_apply_on_parse(m)
8 |
9 | s = m:section(NamedSection, arg[1], "user", "")
10 | s.addremove = false
11 | s.dynamic = false
12 |
13 | o = s:option(Flag, "enable", translate("Enable"))
14 | o.default = "1"
15 | o.rmempty = false
16 |
17 | o = s:option(Value, "remarks", translate("Remarks"))
18 | o.default = translate("Remarks")
19 | o.rmempty = false
20 |
21 | o = s:option(ListValue, "type", translate("Type"))
22 |
23 | local type_table = {}
24 | for filename in fs.dir(types_dir) do
25 | table.insert(type_table, filename)
26 | end
27 | table.sort(type_table)
28 |
29 | for index, value in ipairs(type_table) do
30 | local p_func = loadfile(types_dir .. value)
31 | setfenv(p_func, getfenv(1))(m, s)
32 | end
33 |
34 | return m
35 |
--------------------------------------------------------------------------------
/luci-app-passwall2/luasrc/view/passwall2/cbi/hidevalue.htm:
--------------------------------------------------------------------------------
1 | " data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>" style="display: none !important">
2 | " />
3 |
4 |
--------------------------------------------------------------------------------
/luci-app-passwall2/luasrc/view/passwall2/haproxy/status.htm:
--------------------------------------------------------------------------------
1 | <%
2 | local api = require "luci.passwall2.api"
3 | local console_port = api.uci_get_type("global_haproxy", "console_port", "")
4 | -%>
5 |
6 |
7 |
27 |
--------------------------------------------------------------------------------
/luci-app-passwall2/po/zh_Hans:
--------------------------------------------------------------------------------
1 | zh-cn
--------------------------------------------------------------------------------
/luci-app-passwall2/root/etc/config/passwall2_server:
--------------------------------------------------------------------------------
1 |
2 | config global 'global'
3 | option enable '0'
4 |
5 |
--------------------------------------------------------------------------------
/luci-app-passwall2/root/etc/hotplug.d/iface/98-passwall2:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | [[ "$ACTION" == "ifup" && $(uci get "passwall2.@global[0].enabled") == "1" ]] && [ -f /var/lock/passwall2_ready.lock ] && {
4 | default_device=$(ip route | grep default | awk -F 'dev ' '{print $2}' | awk '{print $1}')
5 | [ "$default_device" == "$DEVICE" ] && {
6 | LOCK_FILE_DIR=/var/lock
7 | [ ! -d ${LOCK_FILE_DIR} ] && mkdir -p ${LOCK_FILE_DIR}
8 | LOCK_FILE="${LOCK_FILE_DIR}/passwall2_ifup.lock"
9 | if [ -s ${LOCK_FILE} ]; then
10 | SPID=$(cat ${LOCK_FILE})
11 | if [ -e /proc/${SPID}/status ]; then
12 | exit 1
13 | fi
14 | cat /dev/null > ${LOCK_FILE}
15 | fi
16 | echo $$ > ${LOCK_FILE}
17 |
18 | /etc/init.d/passwall2 restart >/dev/null 2>&1 &
19 | logger -p notice -t network -s "passwall2: restart when $INTERFACE ifup"
20 |
21 | rm -rf ${LOCK_FILE}
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/luci-app-passwall2/root/etc/init.d/passwall2_server:
--------------------------------------------------------------------------------
1 | #!/bin/sh /etc/rc.common
2 |
3 | START=99
4 |
5 | start() {
6 | lua /usr/lib/lua/luci/passwall2/server_app.lua start
7 | }
8 |
9 | stop() {
10 | lua /usr/lib/lua/luci/passwall2/server_app.lua stop
11 | }
12 |
13 | restart() {
14 | stop
15 | start
16 | }
--------------------------------------------------------------------------------
/luci-app-passwall2/root/usr/share/passwall2/domains_excluded:
--------------------------------------------------------------------------------
1 | courier.push.apple.com
2 | rbsxbxp-mim.vivox.com
3 | rbsxbxp.www.vivox.com
4 | rbsxbxp-ws.vivox.com
5 | rbspsxp.www.vivox.com
6 | rbspsxp-mim.vivox.com
7 | rbspsxp-ws.vivox.com
8 | rbswxp.www.vivox.com
9 | rbswxp-mim.vivox.com
10 | disp-rbspsp-5-1.vivox.com
11 | disp-rbsxbp-5-1.vivox.com
12 | proxy.rbsxbp.vivox.com
13 | proxy.rbspsp.vivox.com
14 | proxy.rbswp.vivox.com
15 | rbswp.vivox.com
16 | rbsxbp.vivox.com
17 | rbspsp.vivox.com
18 | rbspsp.www.vivox.com
19 | rbswp.www.vivox.com
20 | rbsxbp.www.vivox.com
21 | rbsxbxp.vivox.com
22 | rbspsxp.vivox.com
23 | rbswxp.vivox.com
24 | Mijia Cloud
25 | dlg.io.mi.com
26 | marscdn.c2c.wechat.com
27 |
--------------------------------------------------------------------------------
/luci-app-passwall2/root/usr/share/passwall2/haproxy_check.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/bin
4 |
5 | listen_address=$1
6 | listen_port=$2
7 | server_address=$3
8 | server_port=$4
9 |
10 | probe_file="/tmp/etc/passwall2/haproxy/Probe_URL"
11 | probeUrl="https://www.google.com/generate_204"
12 | if [ -f "$probe_file" ]; then
13 | firstLine=$(head -n 1 "$probe_file" | tr -d ' \t\n')
14 | [ -n "$firstLine" ] && probeUrl="$firstLine"
15 | fi
16 |
17 | extra_params="-x socks5h://${server_address}:${server_port}"
18 | if /usr/bin/curl --help all | grep -q "\-\-retry-all-errors"; then
19 | extra_params="${extra_params} --retry-all-errors"
20 | fi
21 |
22 | status=$(/usr/bin/curl -I -o /dev/null -skL ${extra_params} --connect-timeout 3 --retry 1 --max-time 10 -w "%{http_code}" "${probeUrl}")
23 |
24 | case "$status" in
25 | 200|204)
26 | exit 0
27 | ;;
28 | *)
29 | exit 1
30 | ;;
31 | esac
32 |
--------------------------------------------------------------------------------
/luci-app-passwall2/root/usr/share/rpcd/acl.d/luci-app-passwall2.json:
--------------------------------------------------------------------------------
1 | {
2 | "luci-app-passwall2": {
3 | "description": "Grant UCI access for luci-app-passwall2",
4 | "read": {
5 | "uci": [ "passwall2", "passwall2_server" ]
6 | },
7 | "write": {
8 | "uci": [ "passwall2", "passwall2_server" ]
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/luci-app-passwall2/root/usr/share/ucitrack/luci-app-passwall2-server.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": "passwall2_server",
3 | "init": "passwall2_server"
4 | }
5 |
--------------------------------------------------------------------------------
/luci-app-passwall2/root/usr/share/ucitrack/luci-app-passwall2.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": "passwall2",
3 | "init": "passwall2"
4 | }
5 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/luasrc/view/shadowsocksr/certupload.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 |
3 |
4 | <%+cbi/valuefooter%>
5 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/luasrc/view/shadowsocksr/check.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 |
27 |
28 | <%=self.value%>
29 | <%+cbi/valuefooter%>
30 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/luasrc/view/shadowsocksr/checkport.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 |
23 |
24 | <%=self.value%>
25 | <%+cbi/valuefooter%>
26 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/luasrc/view/shadowsocksr/ping.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 | -- ms
3 | <%+cbi/valuefooter%>
4 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/luasrc/view/shadowsocksr/reset.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 |
23 |
24 |
25 | <%+cbi/valuefooter%>
26 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/luasrc/view/shadowsocksr/socket.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 | wait
3 |
4 |
5 |
6 | <%+cbi/valuefooter%>
7 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/luasrc/view/shadowsocksr/status.htm:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 | <%:Collecting data...%>
21 |
22 |
23 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/luasrc/view/shadowsocksr/subscribe.htm:
--------------------------------------------------------------------------------
1 | <%+cbi/valueheader%>
2 |
16 |
17 |
18 | <%+cbi/valuefooter%>
19 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/po/zh-cn:
--------------------------------------------------------------------------------
1 | zh_Hans
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/etc/config/shadowsocksr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-ssr-plus/root/etc/config/shadowsocksr
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/etc/ssrplus/ad.conf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-ssr-plus/root/etc/ssrplus/ad.conf
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/etc/ssrplus/black.list:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kenzok8/small/0776bd9b80cec8e493dca49e5e1f801d587347cf/luci-app-ssr-plus/root/etc/ssrplus/black.list
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/etc/ssrplus/deny.list:
--------------------------------------------------------------------------------
1 | gvod.aiseejapp.atianqi.com
2 | stat.pandora.xiaomi.com
3 | upgrade.mishop.pandora.xiaomi.com
4 | logonext.tv.kuyun.com
5 | config.kuyun.com
6 | mishop.pandora.xiaomi.com
7 | dvb.pandora.xiaomi.com
8 | api.ad.xiaomi.com
9 | de.pandora.xiaomi.com
10 | data.mistat.xiaomi.com
11 | jellyfish.pandora.xiaomi.com
12 | gallery.pandora.xiaomi.com
13 | o2o.api.xiaomi.com
14 | bss.pandora.xiaomi.com
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/etc/ssrplus/mosdns-config.yaml:
--------------------------------------------------------------------------------
1 | log:
2 | level: info
3 | plugins:
4 | - tag: lazy_cache
5 | type: cache
6 | args:
7 | size: 8000
8 | lazy_cache_ttl: 86400
9 |
10 | - tag: forward_google
11 | type: forward
12 | args:
13 | concurrent: 2
14 | upstreams:
15 |
16 | - tag: main_sequence_disable_IPv6
17 | type: sequence
18 | args:
19 | - exec: $lazy_cache
20 | - exec: prefer_ipv4
21 | - exec: $forward_google
22 | - matches:
23 | - qtype 28 65
24 | exec: reject 0
25 |
26 | - tag: main_sequence_with_IPv6
27 | type: sequence
28 | args:
29 | - exec: $lazy_cache
30 | - exec: $forward_google
31 |
32 | - tag: udp_server
33 | type: udp_server
34 | args:
35 | entry: DNS_MODE
36 | listen: 0.0.0.0:DNS_PORT
37 |
38 | - tag: tcp_server
39 | type: tcp_server
40 | args:
41 | entry: DNS_MODE
42 | listen: 0.0.0.0:DNS_PORT
43 |
44 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/etc/ssrplus/netflix.list:
--------------------------------------------------------------------------------
1 | amazonaws.com
2 | aws.amazon.com
3 | awsstatic.com
4 | fast.com
5 | netflix.com
6 | netflix.net
7 | nflxext.com
8 | nflximg.net
9 | nflxso.net
10 | nflxvideo.net
11 | netflixdnstest0.com
12 | netflixdnstest1.com
13 | netflixdnstest2.com
14 | netflixdnstest3.com
15 | netflixdnstest4.com
16 | netflixdnstest5.com
17 | netflixdnstest6.com
18 | netflixdnstest7.com
19 | netflixdnstest8.com
20 | netflixdnstest9.com
21 | hulu.com
22 | huluim.com
23 | hbonow.com
24 | hbogo.com
25 | hbo.com
26 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/etc/ssrplus/netflixip.list:
--------------------------------------------------------------------------------
1 | 8.41.4.0/24
2 | 23.23.189.144/28
3 | 23.246.0.0/18
4 | 34.195.253.0/25
5 | 34.210.42.111/32
6 | 37.77.184.0/21
7 | 38.72.126.0/24
8 | 45.57.0.0/17
9 | 52.24.178.0/24
10 | 52.35.140.0/24
11 | 52.89.124.203/32
12 | 54.148.37.5/32
13 | 54.204.25.0/28
14 | 54.213.167.0/24
15 | 64.120.128.0/17
16 | 66.197.128.0/17
17 | 69.53.224.0/19
18 | 103.87.204.0/22
19 | 108.175.32.0/20
20 | 185.2.220.0/22
21 | 185.9.188.0/22
22 | 192.173.64.0/18
23 | 198.38.96.0/19
24 | 198.45.48.0/20
25 | 203.75.84.0/24
26 | 203.198.13.0/24
27 | 203.198.80.0/24
28 | 207.45.72.0/22
29 | 208.75.76.0/22
30 | 210.0.153.0/24
31 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/etc/ssrplus/white.list:
--------------------------------------------------------------------------------
1 | bilibili.com
2 | bilibili.cn
3 | bilivideo.com
4 | bilivideo.cn
5 | biliapi.com
6 | biliapi.net
7 | apple.com
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/usr/share/rpcd/acl.d/luci-app-ssr-plus.json:
--------------------------------------------------------------------------------
1 | {
2 | "luci-app-ssr-plus": {
3 | "description": "Grant UCI access for luci-app-ssr-plus",
4 | "read": {
5 | "file": {
6 | "/etc/ssrplus/*": [ "read" ]
7 | },
8 | "uci": ["shadowsocksr"]
9 | },
10 | "write": {
11 | "file": {
12 | "/etc/ssrplus/*": [ "write" ]
13 | },
14 | "uci": ["shadowsocksr"]
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/usr/share/shadowsocksr/chinaipset.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | [ -f "$1" ] && china_ip=$1
3 | ipset -! flush china 2>/dev/null
4 | ipset -! -R <<-EOF || exit 1
5 | create china hash:net
6 | $(cat ${china_ip:=/etc/ssrplus/china_ssr.txt} | sed -e "s/^/add china /")
7 | EOF
8 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/usr/share/shadowsocksr/ssrplusupdate.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | /usr/bin/lua /usr/share/shadowsocksr/update.lua
3 | sleep 2s
4 | /usr/share/shadowsocksr/chinaipset.sh /var/etc/ssrplus/china_ssr.txt
5 | sleep 2s
6 | /usr/bin/lua /usr/share/shadowsocksr/subscribe.lua
7 |
--------------------------------------------------------------------------------
/luci-app-ssr-plus/root/usr/share/ucitrack/luci-app-ssr-plus.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": "shadowsocksr",
3 | "init": "shadowsocksr"
4 | }
5 |
--------------------------------------------------------------------------------
/mihomo/.prepare.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | VERSION="$1"
3 | CURDIR="$2"
4 | BIN_PATH="$3"
5 |
6 | if [ -d "$CURDIR/.git" ]; then
7 | config="$CURDIR/.git/config"
8 | else
9 | config="$(sed "s|^gitdir:\s*|$CURDIR/|;s|$|/config|" "$CURDIR/.git")"
10 | fi
11 | [ -n "$(sed -En '/^\[remote /{h;:top;n;/^\[/b;s,(https?://gitcode\.(com|net)),\1,;T top;H;x;s|\n\s*|: |;p;}' "$config")" ] && {
12 | echo -e "#!/bin/sh\necho $VERSION" > "$BIN_PATH"
13 | }
14 | exit 0
15 |
--------------------------------------------------------------------------------
/mosdns/patches/203-add-response-for-bad-request-in-ServeHTTP-handler.patch:
--------------------------------------------------------------------------------
1 | From 0b86b89629f32e7c8b859239aa1a4814f256053c Mon Sep 17 00:00:00 2001
2 | From: sbwml
3 | Date: Thu, 28 Sep 2023 16:42:54 +0800
4 | Subject: [PATCH 3/5] add response for bad request in ServeHTTP handler
5 |
6 | ---
7 | pkg/server/http_handler.go | 1 +
8 | 1 file changed, 1 insertion(+)
9 |
10 | --- a/pkg/server/http_handler.go
11 | +++ b/pkg/server/http_handler.go
12 | @@ -93,6 +93,7 @@ func (h *HttpHandler) ServeHTTP(w http.R
13 | if err != nil {
14 | h.warnErr(req, "invalid request", err)
15 | w.WriteHeader(http.StatusBadRequest)
16 | + w.Write([]byte("Bad Request"))
17 | return
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/naiveproxy/files/naiveproxy.config:
--------------------------------------------------------------------------------
1 |
2 | config naiveproxy 'config'
3 | option enable '0'
4 | option listen_addr ''
5 | option server_addr ''
6 | option extra_argument ''
7 |
--------------------------------------------------------------------------------
/nikki/files/mixin.yaml:
--------------------------------------------------------------------------------
1 | # Mixin File
2 | # You can set any mihomo profile's config at here, it will mixin to the profile.
3 | #
4 | # For example:
5 | #
6 | # global-client-fingerprint: chrome # set fingerprint for TLS transport
7 | # experimental: # experimental config
8 | # quic-go-disable-gso: false # disable quic-go GSO support
9 | # quic-go-disable-ecn: false # disable quic-go ECN support
10 | # dialer-ip4p-convert: false # IP4P support
11 | # proxies: # overwrite proxies
12 | # - name: "PROXY"
13 | # type: ss
14 | # server: proxy.example.com
15 | # port: 443
16 | # cipher: chacha20-ietf-poly1305
17 | # password: "password"
18 | # rules: # overwrite rules
19 | # - DOMAIN,google.com,PROXY
20 | # - DOMAIN-SUFFIX,google.com,PROXY
21 | # - DOMAIN-KEYWORD,google,PROXY
22 | # - DOMAIN-REGEX,^google.*com,PROXY
23 | # - GEOSITE,google,PROXY
24 | # - GEOSITE,cn,DIRECT
25 | # - IP-CIDR,8.8.8.8/32,DIRECT,no-resolve
26 | # - GEOIP,telegram,DIRECT
27 | # - GEOIP,cn,DIRECT
28 | # - Match,PROXY
--------------------------------------------------------------------------------
/nikki/files/nftables/reserved_ip.nft:
--------------------------------------------------------------------------------
1 | #!/usr/sbin/nft -f
2 |
3 | table inet nikki {
4 | set reserved_ip {
5 | type ipv4_addr
6 | flags interval
7 | elements = {
8 | 0.0.0.0/8,
9 | 10.0.0.0/8,
10 | 127.0.0.0/8,
11 | 100.64.0.0/10,
12 | 169.254.0.0/16,
13 | 172.16.0.0/12,
14 | 192.168.0.0/16,
15 | 224.0.0.0/4,
16 | 240.0.0.0/4
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/nikki/files/nftables/reserved_ip6.nft:
--------------------------------------------------------------------------------
1 | #!/usr/sbin/nft -f
2 |
3 | table inet nikki {
4 | set reserved_ip6 {
5 | type ipv6_addr
6 | flags interval
7 | elements = {
8 | ::/128,
9 | ::1/128,
10 | ::ffff:0:0/96,
11 | 100::/64,
12 | 64:ff9b::/96,
13 | 2001::/32,
14 | 2001:10::/28,
15 | 2001:20::/28,
16 | 2001:db8::/32,
17 | 2002::/16,
18 | fc00::/7,
19 | fe80::/10,
20 | ff00::/8
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/nikki/files/nikki.upgrade:
--------------------------------------------------------------------------------
1 | /etc/nikki/profiles/
2 | /etc/nikki/subscriptions/
3 | /etc/nikki/mixin.yaml
4 | /etc/nikki/run/providers/rule/
5 | /etc/nikki/run/providers/proxy/
6 | /etc/nikki/nftables/reserved_ip.nft
7 | /etc/nikki/nftables/reserved_ip6.nft
8 |
--------------------------------------------------------------------------------
/nikki/files/scripts/firewall_include.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | . "$IPKG_INSTROOT/lib/functions.sh"
4 | . "$IPKG_INSTROOT/etc/nikki/scripts/include.sh"
5 |
6 | config_load nikki
7 | config_get enabled "config" "enabled" 0
8 | config_get tcp_mode "proxy" "tcp_mode"
9 | config_get udp_mode "proxy" "udp_mode"
10 | config_get tun_device "mixin" "tun_device"
11 |
12 | if [ "$enabled" == 1 ] && [[ "$tcp_mode" == "tun" || "$udp_mode" == "tun" ]]; then
13 | nft insert rule inet fw4 input iifname "$tun_device" counter accept comment "nikki"
14 | nft insert rule inet fw4 forward oifname "$tun_device" counter accept comment "nikki"
15 | nft insert rule inet fw4 forward iifname "$tun_device" counter accept comment "nikki"
16 | fi
17 |
18 | exit 0
19 |
--------------------------------------------------------------------------------
/nikki/files/uci-defaults/firewall.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | . "$IPKG_INSTROOT/etc/nikki/scripts/include.sh"
4 |
5 | uci -q batch <<-EOF > /dev/null
6 | del firewall.nikki
7 | set firewall.nikki=include
8 | set firewall.nikki.type=script
9 | set firewall.nikki.path=$FIREWALL_INCLUDE_SH
10 | set firewall.nikki.fw4_compatible=1
11 | commit firewall
12 | EOF
13 |
--------------------------------------------------------------------------------
/nikki/files/uci-defaults/init.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | . "$IPKG_INSTROOT/etc/nikki/scripts/include.sh"
4 |
5 | # check nikki.config.init
6 | init=$(uci -q get nikki.config.init); [ -z "$init" ] && return
7 |
8 | # generate random string for api secret and authentication password
9 | random=$(awk 'BEGIN{srand(); print int(rand() * 1000000)}')
10 |
11 | # set nikki.mixin.api_secret
12 | uci set nikki.mixin.api_secret="$random"
13 |
14 | # set nikki.@authentication[0].password
15 | uci set nikki.@authentication[0].password="$random"
16 |
17 | # remove nikki.config.init
18 | uci del nikki.config.init
19 |
20 | # commit
21 | uci commit nikki
22 |
23 | # exit with 0
24 | exit 0
25 |
--------------------------------------------------------------------------------
/pdnsd-alt/files/pdnsd.init:
--------------------------------------------------------------------------------
1 | #!/bin/sh /etc/rc.common
2 |
3 | START=65
4 | NAME=pdnsd
5 | DESC="proxy DNS server"
6 |
7 | DAEMON=/usr/sbin/pdnsd
8 | PID_FILE=/var/run/$NAME.pid
9 | CACHEDIR=/var/pdnsd
10 | CACHE=$CACHEDIR/pdnsd.cache
11 |
12 | USER=nobody
13 | GROUP=nogroup
14 |
15 | start() {
16 | echo -n "Starting $DESC: $NAME"
17 |
18 | gen_cache
19 |
20 | $DAEMON --daemon -p $PID_FILE
21 | echo " ."
22 | }
23 |
24 | stop() {
25 | echo -n "Stopping $DESC: $NAME"
26 | kill `cat $PID_FILE` > /dev/null 2>&1
27 | rm -rf $PID_FILE
28 | echo " ."
29 | }
30 |
31 | restart() {
32 | echo "Restarting $DESC: $NAME... "
33 | stop
34 | sleep 2
35 | start
36 | }
37 |
38 | gen_cache()
39 | {
40 | if ! test -f "$CACHE"; then
41 | mkdir -p `dirname $CACHE`
42 | dd if=/dev/zero of="$CACHE" bs=1 count=4 2> /dev/null
43 | chown -R $USER.$GROUP $CACHEDIR
44 | fi
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/shadowsocksr-libev/patches/0002-Revert-verify_simple-and-auth_simple.patch:
--------------------------------------------------------------------------------
1 | --- a/src/obfs/obfs.c
2 | +++ b/src/obfs/obfs.c
3 | @@ -88,7 +88,7 @@ obfs_class *new_obfs_class(const char *p
4 | plugin->client_decode = tls12_ticket_auth_client_decode;
5 |
6 | return plugin;
7 | - /*} else if (strcmp(plugin_name, "verify_simple") == 0) {
8 | + } else if (strcmp(plugin_name, "verify_simple") == 0) {
9 | obfs_class * plugin = (obfs_class*)malloc(sizeof(obfs_class));
10 | plugin->init_data = init_data;
11 | plugin->new_obfs = verify_simple_new_obfs;
12 | @@ -115,7 +115,7 @@ obfs_class *new_obfs_class(const char *p
13 | plugin->client_udp_pre_encrypt = NULL;
14 | plugin->client_udp_post_decrypt = NULL;
15 |
16 | - return plugin;*/
17 | + return plugin;
18 | } else if (strcmp(plugin_name, "auth_sha1") == 0) {
19 | obfs_class *plugin = (obfs_class *) malloc(sizeof(obfs_class));
20 | plugin->init_data = auth_simple_init_data;
21 |
--------------------------------------------------------------------------------
/shadowsocksr-libev/patches/100-fix-gcc-10.patch:
--------------------------------------------------------------------------------
1 | --- a/src/http.h
2 | +++ b/src/http.h
3 | @@ -29,6 +29,6 @@
4 | #include
5 | #include "protocol.h"
6 |
7 | -const protocol_t *const http_protocol;
8 | +extern const protocol_t *const http_protocol;
9 |
10 | #endif
11 | --- a/src/tls.h
12 | +++ b/src/tls.h
13 | @@ -28,6 +28,6 @@
14 |
15 | #include "protocol.h"
16 |
17 | -const protocol_t *const tls_protocol;
18 | +extern const protocol_t *const tls_protocol;
19 |
20 | #endif
21 |
--------------------------------------------------------------------------------
/shadowsocksr-libev/patches/101-Fix-Werror-sizeof-pointer-memaccess.patch:
--------------------------------------------------------------------------------
1 | --- a/src/local.c
2 | +++ b/src/local.c
3 | @@ -718,7 +718,7 @@ server_recv_cb(EV_P_ ev_io *w, int reven
4 |
5 | ss_free(hostname);
6 | } else {
7 | - strncpy(host, ip, sizeof(ip));
8 | + strncpy(host, ip, INET6_ADDRSTRLEN);
9 | }
10 | }
11 |
12 |
--------------------------------------------------------------------------------
/shadowsocksr-libev/patches/104-pointer-used-after-free.patch:
--------------------------------------------------------------------------------
1 | --- a/server/server.c
2 | +++ b/server/server.c
3 | @@ -1942,12 +1942,12 @@
4 | text = (char*)malloc(strlen(protocol) - 11);
5 | memcpy(text, protocol, strlen(protocol) - 11);
6 | int length = strlen(protocol) - 11;
7 | - free(protocol);
8 | obfs = (char*)malloc(length);
9 | memset(protocol, 0x00, length);
10 | memcpy(protocol, text, length);
11 | LOGI("protocol compatible enable, %s", protocol);
12 | free(text);
13 | + free(protocol);
14 | protocol_compatible = 1;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/shadowsocksr-libev/src/server/README.md:
--------------------------------------------------------------------------------
1 | # server
2 |
3 | `ss-server` and `ss-check` from https://github.com/ywb94/shadowsocks-libev
4 |
--------------------------------------------------------------------------------
/shadowsocksr-libev/src/server/base64.h:
--------------------------------------------------------------------------------
1 | #ifndef __BASE64_H__
2 | #define __BASE64_H__
3 |
4 | enum {BASE64_OK = 0, BASE64_INVALID};
5 |
6 | #define BASE64_ENCODE_OUT_SIZE(s) (((s) + 2) / 3 * 4)
7 | #define BASE64_DECODE_OUT_SIZE(s) (((s)) / 4 * 3)
8 |
9 | int
10 | base64_encode(const unsigned char *in, unsigned int inlen, char *out);
11 |
12 | int
13 | base64_decode(const char *in, unsigned int inlen, unsigned char *out);
14 |
15 |
16 | #endif /* __BASE64_H__ */
17 |
--------------------------------------------------------------------------------
/shadowsocksr-libev/src/server/http_simple.h:
--------------------------------------------------------------------------------
1 | /*
2 | * http_simple.h - Define shadowsocksR server's buffers and callbacks
3 | *
4 | * Copyright (C) 2015 - 2016, Break Wa11
5 | */
6 |
7 | #ifndef _HTTP_SIMPLE_H
8 | #define _HTTP_SIMPLE_H
9 |
10 | obfs * http_simple_new_obfs();
11 | void http_simple_dispose(obfs *self);
12 |
13 | int http_simple_client_encode(obfs *self, char **pencryptdata, int datalength, size_t* capacity);
14 | int http_simple_client_decode(obfs *self, char **pencryptdata, int datalength, size_t* capacity, int *needsendback);
15 |
16 | int http_post_client_encode(obfs *self, char **pencryptdata, int datalength, size_t* capacity);
17 |
18 | int http_simple_server_encode(obfs *self, char **pencryptdata, int datalength, size_t* capacity);
19 | int http_simple_server_decode(obfs *self, char **pencryptdata, int datalength, size_t* capacity, int *needsendback);
20 |
21 | #endif // _HTTP_SIMPLE_H
22 |
--------------------------------------------------------------------------------
/shadowsocksr-libev/src/server/obfsutil.c:
--------------------------------------------------------------------------------
1 | int get_head_size(char *plaindata, int size, int def_size) {
2 | if (plaindata == NULL || size < 2)
3 | return def_size;
4 | int head_type = plaindata[0] & 0x7;
5 | if (head_type == 1)
6 | return 7;
7 | if (head_type == 4)
8 | return 19;
9 | if (head_type == 3)
10 | return 4 + plaindata[1];
11 | return def_size;
12 | }
13 |
14 | static int shift128plus_init_flag = 0;
15 | static uint64_t shift128plus_s[2] = {0x10000000, 0xFFFFFFFF};
16 |
17 | void init_shift128plus(void) {
18 | if (shift128plus_init_flag == 0) {
19 | shift128plus_init_flag = 1;
20 | uint32_t seed = time(NULL);
21 | shift128plus_s[0] = seed | 0x100000000L;
22 | shift128plus_s[1] = ((uint64_t)seed << 32) | 0x1;
23 | }
24 | }
25 |
26 | uint64_t xorshift128plus(void) {
27 | uint64_t x = shift128plus_s[0];
28 | uint64_t const y = shift128plus_s[1];
29 | shift128plus_s[0] = y;
30 | x ^= x << 23; // a
31 | x ^= x >> 17; // b
32 | x ^= y ^ (y >> 26); // c
33 | shift128plus_s[1] = x;
34 | return x + y;
35 | }
36 |
37 |
--------------------------------------------------------------------------------
/shadowsocksr-libev/src/server/tls1.2_ticket.h:
--------------------------------------------------------------------------------
1 | /*
2 | * http_simple.h - Define shadowsocksR server's buffers and callbacks
3 | *
4 | * Copyright (C) 2015 - 2016, Break Wa11
5 | */
6 |
7 | #ifndef _TLS1_2_TICKET_H
8 | #define _TLS1_2_TICKET_H
9 |
10 | void * tls12_ticket_auth_init_data();
11 | obfs * tls12_ticket_auth_new_obfs();
12 | void tls12_ticket_auth_dispose(obfs *self);
13 |
14 | int tls12_ticket_auth_client_encode(obfs *self, char **pencryptdata, int datalength, size_t* capacity);
15 | int tls12_ticket_auth_client_decode(obfs *self, char **pencryptdata, int datalength, size_t* capacity, int *needsendback);
16 |
17 | int tls12_ticket_auth_server_encode(obfs *self, char **pencryptdata, int datalength, size_t* capacity);
18 | int tls12_ticket_auth_server_decode(obfs *self, char **pencryptdata, int datalength, size_t* capacity, int *needsendback);
19 |
20 | #endif // _TLS1_2_TICKET_H
21 |
--------------------------------------------------------------------------------
/shadowsocksr-libev/src/server/verify.h:
--------------------------------------------------------------------------------
1 | /*
2 | * verify.h - Define shadowsocksR server's buffers and callbacks
3 | *
4 | * Copyright (C) 2015 - 2016, Break Wa11
5 | */
6 |
7 | #ifndef _VERIFY_H
8 | #define _VERIFY_H
9 |
10 | obfs * verify_simple_new_obfs();
11 | void verify_simple_dispose(obfs *self);
12 |
13 | int verify_simple_client_pre_encrypt(obfs *self, char **pplaindata, int datalength, size_t* capacity);
14 | int verify_simple_client_post_decrypt(obfs *self, char **pplaindata, int datalength, size_t* capacity);
15 |
16 | int verify_simple_server_pre_encrypt(obfs *self, char **pplaindata, int datalength, size_t* capacity);
17 | int verify_simple_server_post_decrypt(obfs *self, char **pplaindata, int datalength, size_t* capacity);
18 |
19 | #endif // _VERIFY_H
20 |
--------------------------------------------------------------------------------
/ssocks/patches/001-fix.patch:
--------------------------------------------------------------------------------
1 | --- a/CMakeLists.txt 2020-09-07 14:23:49.000000000 +0800
2 | +++ b/CMakeLists.txt 2020-09-07 14:23:24.000000000 +0800
3 | @@ -11,7 +11,12 @@
4 | endif(WIN32)
5 |
6 | add_executable(ssocks src/ssocks.c ${AUX})
7 | +INSTALL(TARGETS ssocks RUNTIME DESTINATION bin)
8 | add_executable(ssocksd src/ssocksd.c ${AUX})
9 | +INSTALL(TARGETS ssocksd RUNTIME DESTINATION bin)
10 | add_executable(nsocks src/nsocks.c ${AUX})
11 | +INSTALL(TARGETS nsocks RUNTIME DESTINATION bin)
12 | add_executable(rcsocks src/rcsocks.c ${AUX})
13 | +INSTALL(TARGETS rcsocks RUNTIME DESTINATION bin)
14 | add_executable(rssocks src/rssocks.c ${AUX})
15 | +INSTALL(TARGETS rssocks RUNTIME DESTINATION bin)
16 |
--------------------------------------------------------------------------------
/ssocks/patches/002-gcc10.patch:
--------------------------------------------------------------------------------
1 | --- a/src/configd-util.h 2020-07-09 05:30:54.000000000 +0800
2 | +++ b/src/configd-util.h 2020-09-08 19:35:11.000000000 +0800
3 | @@ -33,7 +33,7 @@
4 |
5 |
6 |
7 | -struct globalArgsServer_t {
8 | +static struct globalArgsServer_t {
9 | char fileauth[255]; // -a option
10 | char fileconfig[255]; // -f option
11 | char filelog[255]; // -l option
12 |
--------------------------------------------------------------------------------
/tcping/Makefile:
--------------------------------------------------------------------------------
1 | # SPDX-License-Identifier: GPL-3.0-only
2 | #
3 | # Copyright (C) 2021 ImmortalWrt.org
4 |
5 | include $(TOPDIR)/rules.mk
6 |
7 | PKG_NAME:=tcping
8 | PKG_VERSION:=0.3
9 | PKG_RELEASE:=2
10 |
11 | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
12 | PKG_SOURCE_URL:=https://codeload.github.com/Mattraks/tcping/tar.gz/$(PKG_VERSION)?
13 | PKG_HASH:=c703481d1751adf051dd3391c4dccdadc6dfca7484e636222b392e1213312e02
14 |
15 | PKG_LICENSE:=GPL-2.0-only
16 | PKG_LICENSE_FILE:=license.txt
17 |
18 | PKG_BUILD_PARALLEL:=1
19 |
20 | include $(INCLUDE_DIR)/package.mk
21 |
22 | define Package/tcping
23 | SECTION:=net
24 | CATEGORY:=Network
25 | TITLE:=tcping measures the latency of a tcp-connection (IPv4/IPv6 support)
26 | URL:=https://github.com/jlyo/tcping
27 | endef
28 |
29 | define Build/Compile
30 | $(MAKE) -C $(PKG_BUILD_DIR) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS) -Wall" LDFLAGS="$(TARGET_LDFLAGS)"
31 | endef
32 |
33 | define Package/tcping/install
34 | $(INSTALL_DIR) $(1)/usr/sbin
35 | $(INSTALL_BIN) $(PKG_BUILD_DIR)/tcping $(1)/usr/sbin
36 | endef
37 |
38 | $(eval $(call BuildPackage,tcping))
39 |
--------------------------------------------------------------------------------
/trojan/patches/001-force-openssl-version.patch:
--------------------------------------------------------------------------------
1 | --- a/CMakeLists.txt
2 | +++ b/CMakeLists.txt
3 | @@ -43,7 +43,7 @@ if(MSVC)
4 | add_definitions(-DBOOST_DATE_TIME_NO_LIB)
5 | endif()
6 |
7 | -find_package(OpenSSL 1.1.0 REQUIRED)
8 | +find_package(OpenSSL 1.1.1 REQUIRED)
9 | include_directories(${OPENSSL_INCLUDE_DIR})
10 | target_link_libraries(trojan ${OPENSSL_LIBRARIES})
11 | if(OPENSSL_VERSION VERSION_GREATER_EQUAL 1.1.1)
12 |
--------------------------------------------------------------------------------