mirror of
https://github.com/kenzok8/small-package
synced 2025-01-08 13:27:36 +08:00
update 2022-06-18 23:39:24
This commit is contained in:
parent
c2f6fb0d7d
commit
7945dc7f60
@ -5,12 +5,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=brook
|
||||
PKG_VERSION:=20220515
|
||||
PKG_VERSION:=20220707
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/txthinking/brook/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=e054d0c3d0090b2015e9ff5e94a15b452a3e4e1de4588542972cc6c06965537b
|
||||
PKG_HASH:=377d6be82a8e122cc2e1c87ea10d2f404be6e4cf85304f329b01654e8f551753
|
||||
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
PKG_LICENSE:=GPL-3.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-openclash
|
||||
PKG_VERSION:=0.45.30
|
||||
PKG_VERSION:=0.45.33
|
||||
PKG_RELEASE:=beta
|
||||
PKG_MAINTAINER:=vernesong <https://github.com/vernesong/OpenClash>
|
||||
|
||||
|
@ -321,6 +321,17 @@ end
|
||||
o:value("DIRECT")
|
||||
o:value("REJECT")
|
||||
|
||||
o = s:option(ListValue, "Crypto", translate("Crypto"))
|
||||
o:depends("rule_name", "lhie1")
|
||||
o.rmempty = true
|
||||
for groupname in string.gmatch(groupnames, "([^'##\n']+)##") do
|
||||
if groupname ~= nil and groupname ~= "" then
|
||||
o:value(groupname)
|
||||
end
|
||||
end
|
||||
o:value("DIRECT")
|
||||
o:value("REJECT")
|
||||
|
||||
o = s:option(ListValue, "PayPal", translate("PayPal"))
|
||||
o:depends("rule_name", "lhie1")
|
||||
o.rmempty = true
|
||||
|
@ -40,6 +40,9 @@ local encrypt_methods_ss = {
|
||||
"xchacha20",
|
||||
"chacha20-ietf-poly1305",
|
||||
"xchacha20-ietf-poly1305",
|
||||
"2022-blake3-aes-128-gcm",
|
||||
"2022-blake3-aes-256-gcm",
|
||||
"2022-blake3-chacha20-poly1305"
|
||||
}
|
||||
|
||||
local encrypt_methods_ssr = {
|
||||
@ -52,7 +55,7 @@ local encrypt_methods_ssr = {
|
||||
"aes-192-ctr",
|
||||
"aes-256-ctr",
|
||||
"chacha20-ietf",
|
||||
"xchacha20",
|
||||
"xchacha20"
|
||||
}
|
||||
|
||||
local securitys = {
|
||||
@ -68,7 +71,13 @@ local protocols = {
|
||||
"auth_aes128_md5",
|
||||
"auth_aes128_sha1",
|
||||
"auth_chain_a",
|
||||
"auth_chain_b",
|
||||
"auth_chain_b"
|
||||
}
|
||||
|
||||
local hysteria_protocols = {
|
||||
"udp",
|
||||
"wechat-video",
|
||||
"faketcp"
|
||||
}
|
||||
|
||||
local obfs = {
|
||||
@ -77,7 +86,7 @@ local obfs = {
|
||||
"http_post",
|
||||
"random_head",
|
||||
"tls1.2_ticket_auth",
|
||||
"tls1.2_ticket_fastauth",
|
||||
"tls1.2_ticket_fastauth"
|
||||
}
|
||||
|
||||
m = Map(openclash, translate("Edit Server"))
|
||||
@ -118,6 +127,7 @@ o:value("ss", translate("Shadowsocks"))
|
||||
o:value("ssr", translate("ShadowsocksR"))
|
||||
o:value("vmess", translate("Vmess"))
|
||||
o:value("vless", translate("Vless ")..translate("(Only Meta Core)"))
|
||||
o:value("hysteria", translate("Hysteria ")..translate("(Only Meta Core)"))
|
||||
o:value("trojan", translate("trojan"))
|
||||
o:value("snell", translate("Snell"))
|
||||
o:value("socks5", translate("Socks5"))
|
||||
@ -147,8 +157,33 @@ o:depends("type", "ss")
|
||||
o:depends("type", "ssr")
|
||||
o:depends("type", "trojan")
|
||||
|
||||
o = s:option(Value, "psk", translate("Psk"))
|
||||
o = s:option(ListValue, "hysteria_protocol", translate("Protocol"))
|
||||
for _, v in ipairs(hysteria_protocols) do o:value(v) end
|
||||
o.rmempty = false
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
o = s:option(Value, "up_mbps", translate("up_mbps"))
|
||||
o.rmempty = true
|
||||
o.datatype = "uinteger"
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
o = s:option(Value, "down_mbps", translate("down_mbps"))
|
||||
o.rmempty = true
|
||||
o.datatype = "uinteger"
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
o = s:option(Value, "hysteria_up", translate("Up"))
|
||||
o.rmempty = true
|
||||
o.description = translate("Mutual Exclusion With up_mbps")
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
o = s:option(Value, "hysteria_down", translate("Down"))
|
||||
o.rmempty = true
|
||||
o.description = translate("Mutual Exclusion With down_mbps")
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
o = s:option(Value, "psk", translate("Psk"))
|
||||
o.rmempty = true
|
||||
o:depends("type", "snell")
|
||||
|
||||
o = s:option(ListValue, "snell_version", translate("Version"))
|
||||
@ -158,6 +193,7 @@ o:depends("type", "snell")
|
||||
|
||||
o = s:option(ListValue, "cipher", translate("Encrypt Method"))
|
||||
for _, v in ipairs(encrypt_methods_ss) do o:value(v) end
|
||||
o.description = translate("Only Meta Core Support SS2022")
|
||||
o.rmempty = true
|
||||
o:depends("type", "ss")
|
||||
|
||||
@ -321,7 +357,7 @@ o:depends("obfs_vmess", "websocket")
|
||||
-- [[ skip-cert-verify ]]--
|
||||
o = s:option(ListValue, "skip_cert_verify", translate("skip-cert-verify"))
|
||||
o.rmempty = true
|
||||
o.default = "false"
|
||||
o.default = "true"
|
||||
o:value("true")
|
||||
o:value("false")
|
||||
o:depends("obfs", "websocket")
|
||||
@ -332,6 +368,7 @@ o:depends("type", "socks5")
|
||||
o:depends("type", "http")
|
||||
o:depends("type", "trojan")
|
||||
o:depends("type", "vless")
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ TLS ]]--
|
||||
o = s:option(ListValue, "tls", translate("tls"))
|
||||
@ -383,6 +420,14 @@ o.placeholder = translate("example.com")
|
||||
o.rmempty = true
|
||||
o:depends("type", "trojan")
|
||||
o:depends("type", "http")
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ headers ]]--
|
||||
o = s:option(DynamicList, "http_headers", translate("headers"))
|
||||
o.description = translate("Only Meta Core")
|
||||
o.rmempty = true
|
||||
o.placeholder = translate("User-Agent: okhttp/3.11.0 Dalvik/2.1.0 ...... ")
|
||||
o:depends("type", "http")
|
||||
|
||||
-- 验证用户名
|
||||
o = s:option(Value, "auth_name", translate("Auth Username"))
|
||||
@ -403,6 +448,12 @@ o:value("h2")
|
||||
o:value("http/1.1")
|
||||
o:depends("type", "trojan")
|
||||
|
||||
-- [[ alpn ]]--
|
||||
o = s:option(Value, "hysteria_alpn", translate("alpn"))
|
||||
o.rmempty = true
|
||||
o.default = "h3"
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ grpc ]]--
|
||||
o = s:option(Value, "grpc_service_name", translate("grpc-service-name"))
|
||||
o.rmempty = true
|
||||
@ -424,6 +475,58 @@ o.rmempty = true
|
||||
o.placeholder = translate("Host: v2ray.com")
|
||||
o:depends("obfs_trojan", "ws")
|
||||
|
||||
-- [[ hysteria_obfs ]]--
|
||||
o = s:option(Value, "hysteria_obfs", translate("obfs"))
|
||||
o.rmempty = false
|
||||
o.placeholder = translate("yourpassword")
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ hysteria_auth ]]--
|
||||
o = s:option(Value, "hysteria_auth", translate("auth"))
|
||||
o.rmempty = true
|
||||
o.placeholder = translate("[BASE64]")
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ hysteria_auth_str ]]--
|
||||
o = s:option(Value, "hysteria_auth_str", translate("auth_str"))
|
||||
o.rmempty = true
|
||||
o.placeholder = translate("yubiyubi")
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ hysteria_ca ]]--
|
||||
o = s:option(Value, "hysteria_ca", translate("ca"))
|
||||
o.rmempty = true
|
||||
o.placeholder = translate("./my.ca")
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ hysteria_ca_str ]]--
|
||||
o = s:option(Value, "hysteria_ca_str", translate("ca_str"))
|
||||
o.rmempty = true
|
||||
o.placeholder = translate("xyz")
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ recv_window_conn ]]--
|
||||
o = s:option(Value, "recv_window_conn", translate("recv_window_conn"))
|
||||
o.rmempty = true
|
||||
o.placeholder = translate("QUIC stream receive window")
|
||||
o.datatype = "uinteger"
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ recv_window ]]--
|
||||
o = s:option(Value, "recv_window", translate("recv_window"))
|
||||
o.rmempty = true
|
||||
o.placeholder = translate("QUIC connection receive window")
|
||||
o.datatype = "uinteger"
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ disable_mtu_discovery ]]--
|
||||
o = s:option(ListValue, "disable_mtu_discovery", translate("disable_mtu_discovery"))
|
||||
o.rmempty = true
|
||||
o:value("true")
|
||||
o:value("false")
|
||||
o.default = "false"
|
||||
o:depends("type", "hysteria")
|
||||
|
||||
-- [[ interface-name ]]--
|
||||
o = s:option(Value, "interface_name", translate("interface-name"))
|
||||
o.rmempty = true
|
||||
|
@ -592,6 +592,7 @@ o.description = translate("In The Fake-IP Mode, Only Pure IP Requests Are Suppor
|
||||
|
||||
o = s:taboption("lan_ac", DynamicList, "lan_ac_black_ports", translate("Lan Bypassed Port List"))
|
||||
o.datatype = "port"
|
||||
o:value("5000", translate("5000(NAS)"))
|
||||
o.description = translate("The Traffic From The Local Specified Port Will Not Pass The Core, Try To Set When The Bypass Gateway Forwarding Fails")
|
||||
|
||||
o = s:taboption("lan_ac", Value, "local_network_pass", translate("Local IPv4 Network Bypassed List"))
|
||||
@ -1279,7 +1280,7 @@ o.cfgvalue = function(...)
|
||||
end
|
||||
|
||||
---- enable flag
|
||||
o = s:option(Flag, "node_resolve", translate("Node Resolve"), font_red..bold_on..translate("(Only Meta Core)")..bold_off..font_off)
|
||||
o = s:option(Flag, "node_resolve", translate("Node Domain Resolve"), font_red..bold_on..translate("(Only Meta Core)")..bold_off..font_off)
|
||||
o.rmempty = false
|
||||
o.default = o.disbled
|
||||
o.cfgvalue = function(...)
|
||||
|
@ -878,6 +878,7 @@
|
||||
newimg.src = imgNewSrc;
|
||||
newimg.onload = function() {
|
||||
imgobj.src = imgNewSrc;
|
||||
imgobj.onload = function() {};
|
||||
};
|
||||
newimg.onerror = function() {
|
||||
imgobj.onload = function() {};
|
||||
|
@ -2893,6 +2893,9 @@ msgstr "注意: 连接异常时请按照此页步骤先进行检查"
|
||||
msgid "Click to the page"
|
||||
msgstr "点击前往"
|
||||
|
||||
msgid "Only Meta Core"
|
||||
msgstr "仅 Meta 内核"
|
||||
|
||||
msgid "(Only Meta Core)"
|
||||
msgstr "(仅 Meta 内核)"
|
||||
|
||||
@ -2962,8 +2965,8 @@ msgstr "指定策略组"
|
||||
msgid "Warning: Only Meta Core Support Specific Group, Skip Setting"
|
||||
msgstr "警告:仅 Meta 内核支持指定 DNS 的策略组,跳过设置"
|
||||
|
||||
msgid "Node Resolve"
|
||||
msgstr "节点解析"
|
||||
msgid "Node Domain Resolve"
|
||||
msgstr "节点域名解析"
|
||||
|
||||
msgid "Warning: Only Meta Core Support proxy-server-nameserver, Skip Setting"
|
||||
msgstr "警告:仅 Meta 内核支持设置解析节点域名的 DNS,跳过设置"
|
||||
@ -2984,4 +2987,13 @@ msgid "Local IPv6 Network Bypassed List"
|
||||
msgstr "本地 IPv6 绕过地址"
|
||||
|
||||
msgid "The Traffic of The Destination For The Specified Address Will Not Pass The Core"
|
||||
msgstr "目的地为指定地址的流量不会通过核心"
|
||||
msgstr "目的地为指定地址的流量不会通过核心"
|
||||
|
||||
msgid "Mutual Exclusion With down_mbps"
|
||||
msgstr "与 down_mbps 二选一进行设置"
|
||||
|
||||
msgid "Mutual Exclusion With up_mbps"
|
||||
msgstr "与 up_mbps 二选一进行设置"
|
||||
|
||||
msgid "Only Meta Core Support SS2022"
|
||||
msgstr "仅 Meta 内核支持 SS2022"
|
@ -133,7 +133,7 @@ revert_dns() {
|
||||
|
||||
[ "$1" -eq 1 ] && {
|
||||
uci -q del dhcp.@dnsmasq[-1].server
|
||||
[ -n "$10" ] && {
|
||||
[ -n "${10}" ] && {
|
||||
config_load "openclash"
|
||||
config_list_foreach "config" "dnsmasq_server" set_dnsmasq_server
|
||||
}
|
||||
|
@ -42,6 +42,7 @@ rules:
|
||||
- RULE-SET,Soundcloud,Global TV
|
||||
- RULE-SET,ViuTV,Global TV
|
||||
- RULE-SET,Telegram,Telegram
|
||||
- RULE-SET,Crypto,Crypto
|
||||
- RULE-SET,Douyin,Douyin
|
||||
- RULE-SET,Steam,Steam
|
||||
- RULE-SET,Speedtest,Speedtest
|
||||
@ -102,6 +103,7 @@ script:
|
||||
"Soundcloud": "Global TV",
|
||||
"ViuTV": "Global TV",
|
||||
"Telegram": "Telegram",
|
||||
"Crypto": "Crypto",
|
||||
"Douyin": "Douyin",
|
||||
"Steam": "Steam",
|
||||
"Speedtest": "Speedtest",
|
||||
@ -404,6 +406,12 @@ rule-providers:
|
||||
url: https://dler.cloud/Rules/Clash/Provider/Telegram.yaml
|
||||
path: "./Rules/Telegram"
|
||||
interval: 86400
|
||||
Crypto:
|
||||
type: http
|
||||
behavior: classical
|
||||
url: https://dler.cloud/Rules/Clash/Provider/Crypto.yaml
|
||||
path: "./Rules/Crypto"
|
||||
interval: 86400
|
||||
Douyin:
|
||||
type: http
|
||||
behavior: classical
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -8,8 +8,8 @@
|
||||
<meta name="description" content="Clash web port" />
|
||||
<!--meta name="external-controller" content="http://secret@example.com:9090"-->
|
||||
<title>Clash</title>
|
||||
<script type="module" crossorigin src="./assets/index.44e2a61b.js"></script>
|
||||
<link rel="modulepreload" href="./assets/vendor.91f359a7.js">
|
||||
<script type="module" crossorigin src="./assets/index.ccf895d1.js"></script>
|
||||
<link rel="modulepreload" href="./assets/vendor.46bd3f27.js">
|
||||
<link rel="stylesheet" href="./assets/index.e71ce3d7.css">
|
||||
<link rel="manifest" href="./manifest.webmanifest"><script>if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})}</script></head>
|
||||
<body>
|
||||
|
@ -1 +1 @@
|
||||
if(!self.define){let e,s={};const n=(n,i)=>(n=new URL(n+".js",i).href,s[n]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()})).then((()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e})));self.define=(i,t)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let o={};const l=e=>n(e,r),d={module:{uri:r},exports:o,require:l};s[r]=Promise.all(i.map((e=>d[e]||l(e)))).then((e=>(t(...e),o)))}}define(["./workbox-4ee7f24a"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"assets/index.44e2a61b.js",revision:null},{url:"assets/index.e71ce3d7.css",revision:null},{url:"assets/vendor.91f359a7.js",revision:null},{url:"index.html",revision:"1c8ba5d53f770fbbaecd74a82639363d"},{url:"manifest.webmanifest",revision:"d3dd1da0aa7614180924343e65244285"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
|
||||
if(!self.define){let e,s={};const n=(n,i)=>(n=new URL(n+".js",i).href,s[n]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()})).then((()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e})));self.define=(i,t)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let o={};const l=e=>n(e,r),d={module:{uri:r},exports:o,require:l};s[r]=Promise.all(i.map((e=>d[e]||l(e)))).then((e=>(t(...e),o)))}}define(["./workbox-4ee7f24a"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"assets/index.ccf895d1.js",revision:null},{url:"assets/index.e71ce3d7.css",revision:null},{url:"assets/vendor.46bd3f27.js",revision:null},{url:"index.html",revision:"c1e679f859800a2d888e2de265652e62"},{url:"manifest.webmanifest",revision:"d3dd1da0aa7614180924343e65244285"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
var A=Object.defineProperty,B=Object.defineProperties;var j=Object.getOwnPropertyDescriptors;var p=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;var _=(t,e,s)=>e in t?A(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,o=(t,e)=>{for(var s in e||(e={}))k.call(e,s)&&_(t,s,e[s]);if(p)for(var s of p(e))N.call(e,s)&&_(t,s,e[s]);return t},b=(t,e)=>B(t,j(e));var c=(t,e)=>{var s={};for(var n in t)k.call(t,n)&&e.indexOf(n)<0&&(s[n]=t[n]);if(t!=null&&p)for(var n of p(t))e.indexOf(n)<0&&N.call(t,n)&&(s[n]=t[n]);return s};import{r,j as H}from"./vendor.3cf270b6.js";const L="_spining_4i8sg_1",R="_spining_keyframes_4i8sg_1";var V={spining:L,spining_keyframes:R};const{useState:q}=H;function K({children:t}){return r.exports.createElement("span",{className:V.spining},t)}const P={right:10,bottom:10},Q=s=>{var n=s,{children:t}=n,e=c(n,["children"]);return r.exports.createElement("button",b(o({type:"button"},e),{className:"rtf--ab"}),t)},w=s=>{var n=s,{children:t}=n,e=c(n,["children"]);return r.exports.createElement("button",o({type:"button",className:"rtf--mb"},e),t)},z={bottom:24,right:24},S=D=>{var g=D,{event:t="hover",style:e=z,alwaysShowTitle:s=!1,children:n,icon:$,mainButtonStyles:h,onClick:d,text:f}=g,v=c(g,["event","style","alwaysShowTitle","children","icon","mainButtonStyles","onClick","text"]);const[i,m]=q(!1),u=s||!i,x=()=>m(!0),E=()=>m(!1),C=()=>t==="hover"&&x(),I=()=>t==="hover"&&E(),y=a=>d?d(a):(a.persist(),t==="click"?i?E():x():null),F=(a,l)=>{a.persist(),m(!1),setTimeout(()=>{l(a)},1)},M=()=>r.exports.Children.map(n,(a,l)=>r.exports.isValidElement(a)?r.exports.createElement("li",{className:`rtf--ab__c ${"top"in e?"top":""}`},r.exports.cloneElement(a,b(o({"data-testid":`action-button-${l}`,"aria-label":a.props.text||`Menu button ${l+1}`,"aria-hidden":u,tabIndex:i?0:-1},a.props),{onClick:O=>{a.props.onClick&&F(O,a.props.onClick)}})),a.props.text&&r.exports.createElement("span",{className:`${"right"in e?"right":""} ${s?"always-show":""}`,"aria-hidden":u},a.props.text)):null);return r.exports.createElement("ul",o({onMouseEnter:C,onMouseLeave:I,className:`rtf ${i?"open":"closed"}`,"data-testid":"fab",style:e},v),r.exports.createElement("li",{className:"rtf--mb__c"},r.exports.createElement(w,{onClick:y,style:h,"data-testid":"main-button",role:"button","aria-label":"Floating menu",tabIndex:0},$),f&&r.exports.createElement("span",{className:`${"right"in e?"right":""} ${s?"always-show":""}`,"aria-hidden":u},f),r.exports.createElement("ul",null,M())))};export{Q as A,S as F,K as I,P as p};
|
@ -0,0 +1 @@
|
||||
var E=Object.defineProperty,O=Object.defineProperties;var A=Object.getOwnPropertyDescriptors;var c=Object.getOwnPropertySymbols;var w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable;var Y=(t,a,r)=>a in t?E(t,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[a]=r,o=(t,a)=>{for(var r in a||(a={}))w.call(a,r)&&Y(t,r,a[r]);if(c)for(var r of c(a))k.call(a,r)&&Y(t,r,a[r]);return t},i=(t,a)=>O(t,A(a));var f=(t,a)=>{var r={};for(var n in t)w.call(t,n)&&a.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&c)for(var n of c(t))a.indexOf(n)<0&&k.call(t,n)&&(r[n]=t[n]);return r};import{j as e,b as y,r as d,h as B}from"./index.5901d226.js";const H="_spining_4i8sg_1",L="_spining_keyframes_4i8sg_1";var R={spining:H,spining_keyframes:L};const{useState:V}=B;function P({children:t}){return e("span",{className:R.spining,children:t})}const Q={right:10,bottom:10},S=r=>{var n=r,{children:t}=n,a=f(n,["children"]);return e("button",i(o({type:"button"},a),{className:"rtf--ab",children:t}))},q=r=>{var n=r,{children:t}=n,a=f(n,["children"]);return e("button",i(o({type:"button",className:"rtf--mb"},a),{children:t}))},D={bottom:24,right:24},U=G=>{var _=G,{event:t="hover",style:a=D,alwaysShowTitle:r=!1,children:n,icon:v,mainButtonStyles:z,onClick:m,text:h}=_,N=f(_,["event","style","alwaysShowTitle","children","icon","mainButtonStyles","onClick","text"]);const[l,b]=V(!1),x=r||!l,g=()=>b(!0),u=()=>b(!1),$=()=>t==="hover"&&g(),j=()=>t==="hover"&&u(),C=s=>m?m(s):(s.persist(),t==="click"?l?u():g():null),I=(s,p)=>{s.persist(),b(!1),setTimeout(()=>{p(s)},1)},F=()=>d.exports.Children.map(n,(s,p)=>d.exports.isValidElement(s)?y("li",{className:`rtf--ab__c ${"top"in a?"top":""}`,children:[d.exports.cloneElement(s,i(o({"data-testid":`action-button-${p}`,"aria-label":s.props.text||`Menu button ${p+1}`,"aria-hidden":x,tabIndex:l?0:-1},s.props),{onClick:M=>{s.props.onClick&&I(M,s.props.onClick)}})),s.props.text&&e("span",{className:`${"right"in a?"right":""} ${r?"always-show":""}`,"aria-hidden":x,children:s.props.text})]}):null);return e("ul",i(o({onMouseEnter:$,onMouseLeave:j,className:`rtf ${l?"open":"closed"}`,"data-testid":"fab",style:a},N),{children:y("li",{className:"rtf--mb__c",children:[e(q,{onClick:C,style:z,"data-testid":"main-button",role:"button","aria-label":"Floating menu",tabIndex:0,children:v}),h&&e("span",{className:`${"right"in a?"right":""} ${r?"always-show":""}`,"aria-hidden":x,children:h}),e("ul",{children:F()})]})}))};export{S as A,U as F,P as I,Q as p};
|
@ -0,0 +1 @@
|
||||
var R=Object.defineProperty,w=Object.defineProperties;var C=Object.getOwnPropertyDescriptors;var S=Object.getOwnPropertySymbols;var N=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var T=(e,t,o)=>t in e?R(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,p=(e,t)=>{for(var o in t||(t={}))N.call(t,o)&&T(e,o,t[o]);if(S)for(var o of S(t))W.call(t,o)&&T(e,o,t[o]);return e},m=(e,t)=>w(e,C(t));import{r as _,b as l,j as a,P as f,d as P,G as k,H as j,w as z,J as I,u as O,C as F,S as M,K as $,L as H,g as A,N as B,h as D,c as E}from"./index.5901d226.js";import{a as K,F as q}from"./index.esm.390d1b7a.js";import{r as G,s as J,f as V}from"./logs.36f1d416.js";import{d as Y}from"./debounce.d080d5e1.js";import{u as Q}from"./useRemainingViewPortHeight.d051faee.js";import{F as U,p as X}from"./Fab.93225453.js";import{P as Z,a as ee}from"./play.56145bca.js";function te(e,t){if(e==null)return{};var o=oe(e,t),n,r;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)n=s[r],!(t.indexOf(n)>=0)&&(!Object.prototype.propertyIsEnumerable.call(e,n)||(o[n]=e[n]))}return o}function oe(e,t){if(e==null)return{};var o={},n=Object.keys(e),r,s;for(s=0;s<n.length;s++)r=n[s],!(t.indexOf(r)>=0)&&(o[r]=e[r]);return o}var x=_.exports.forwardRef(function(e,t){var o=e.color,n=o===void 0?"currentColor":o,r=e.size,s=r===void 0?24:r,g=te(e,["color","size"]);return l("svg",m(p({ref:t,xmlns:"http://www.w3.org/2000/svg",width:s,height:s,viewBox:"0 0 24 24",fill:"none",stroke:n,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},g),{children:[a("circle",{cx:"11",cy:"11",r:"8"}),a("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}))});x.propTypes={color:f.string,size:f.oneOfType([f.string,f.number])};x.displayName="Search";var re=x;const ae="_RuleSearch_1gcst_1",ne="_RuleSearchContainer_1gcst_5",se="_inputWrapper_1gcst_10",ce="_input_1gcst_10",ie="_iconWrapper_1gcst_35";var d={RuleSearch:ae,RuleSearchContainer:ne,inputWrapper:se,input:ce,iconWrapper:ie};function le({dispatch:e,searchText:t,updateSearchText:o}){const[n,r]=_.exports.useState(t),s=_.exports.useCallback(i=>{e(o(i))},[e,o]),g=_.exports.useMemo(()=>Y(s,300),[s]),h=i=>{r(i.target.value),g(i.target.value)};return a("div",{className:d.RuleSearch,children:l("div",{className:d.RuleSearchContainer,children:[a("div",{className:d.inputWrapper,children:a("input",{type:"text",value:n,onChange:h,className:d.input})}),a("div",{className:d.iconWrapper,children:a(re,{size:20})})]})})}const ge=e=>({searchText:k(e),updateSearchText:j});var pe=P(ge)(le);const de="_logMeta_1dg5t_1",he="_logType_1dg5t_8",ue="_logTime_1dg5t_18",me="_logText_1dg5t_24",fe="_logsWrapper_1dg5t_37",_e="_logPlaceholder_1dg5t_51",ve="_logPlaceholderIcon_1dg5t_64";var c={logMeta:de,logType:he,logTime:ue,logText:me,logsWrapper:fe,logPlaceholder:_e,logPlaceholderIcon:ve};const{useCallback:b,memo:xe,useEffect:ye}=D,v=30,Se={debug:"#28792c",info:"var(--bg-log-info-tag)",warning:"#b99105",error:"#c11c1c"};function Te({time:e,even:t,payload:o,type:n}){const r=E({even:t},"log");return a("div",{className:r,children:l("div",{className:c.logMeta,children:[a("div",{className:c.logTime,children:e}),a("div",{className:c.logType,style:{backgroundColor:Se[n]},children:n}),a("div",{className:c.logText,children:o})]})})}function be(e,t){return t[e].id}const Pe=xe(({index:e,style:t,data:o})=>{const n=o[e];return a("div",{style:t,children:a(Te,p({},n))})},K);function Le({dispatch:e,logLevel:t,apiConfig:o,logs:n,logStreamingPaused:r}){const s=z(),g=b(()=>{r?G(m(p({},o),{logLevel:t})):J(),s.app.updateAppConfig("logStreamingPaused",!r)},[o,t,r,s.app]),h=b(L=>e(I(L)),[e]);ye(()=>{V(m(p({},o),{logLevel:t}),h)},[o,t,h]);const[i,y]=Q(),{t:u}=O();return l("div",{children:[a(F,{title:u("Logs")}),a(pe,{}),a("div",{ref:i,style:{paddingBottom:v},children:n.length===0?l("div",{className:c.logPlaceholder,style:{height:y-v},children:[a("div",{className:c.logPlaceholderIcon,children:a(M,{width:200,height:200})}),a("div",{children:u("no_logs")})]}):l("div",{className:c.logsWrapper,children:[a(q,{height:y-v,width:"100%",itemCount:n.length,itemSize:80,itemData:n,itemKey:be,children:Pe}),a(U,{icon:r?a(Z,{size:16}):a(ee,{size:16}),mainButtonStyles:r?{background:"#e74c3c"}:{},style:X,text:u(r?"Resume Refresh":"Pause Refresh"),onClick:g})]})})]})}const Re=e=>({logs:$(e),logLevel:H(e),apiConfig:A(e),logStreamingPaused:B(e)});var Oe=P(Re)(Le);export{Oe as default};
|
@ -1 +0,0 @@
|
||||
var T=Object.defineProperty,C=Object.defineProperties;var y=Object.getOwnPropertyDescriptors;var E=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;var v=(e,t,a)=>t in e?T(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,u=(e,t)=>{for(var a in t||(t={}))L.call(t,a)&&v(e,a,t[a]);if(E)for(var a of E(t))N.call(t,a)&&v(e,a,t[a]);return e},h=(e,t)=>C(e,y(t));import{r as o,R as l,K as P,k as W,P as b,D as I,j as k,g as w}from"./vendor.3cf270b6.js";import{a as z,F as D}from"./index.esm.5b55aaed.js";import{r as F,s as M,f as A}from"./logs.8963bea3.js";import{c as S,w as $,x as H,k as B,y as K,C as j,S as q,z as V,A as Y,g as G,D as J}from"./index.d6596dd6.js";import{d as O}from"./debounce.76599460.js";import{u as Q}from"./useRemainingViewPortHeight.91bbcf1d.js";import{F as U,p as X}from"./Fab.78b2c04b.js";const Z="_RuleSearch_1gcst_1",ee="_RuleSearchContainer_1gcst_5",te="_inputWrapper_1gcst_10",ae="_input_1gcst_10",oe="_iconWrapper_1gcst_35";var i={RuleSearch:Z,RuleSearchContainer:ee,inputWrapper:te,input:ae,iconWrapper:oe};function re({dispatch:e,searchText:t,updateSearchText:a}){const[r,s]=o.exports.useState(t),p=o.exports.useCallback(c=>{e(a(c))},[e,a]),d=o.exports.useMemo(()=>O(p,300),[p]),g=c=>{s(c.target.value),d(c.target.value)};return l.createElement("div",{className:i.RuleSearch},l.createElement("div",{className:i.RuleSearchContainer},l.createElement("div",{className:i.inputWrapper},l.createElement("input",{type:"text",value:r,onChange:g,className:i.input})),l.createElement("div",{className:i.iconWrapper},l.createElement(P,{size:20}))))}const se=e=>({searchText:$(e),updateSearchText:H});var ne=S(se)(re);const ce="_logMeta_1dg5t_1",le="_logType_1dg5t_8",pe="_logTime_1dg5t_18",ie="_logText_1dg5t_24",ge="_logsWrapper_1dg5t_37",me="_logPlaceholder_1dg5t_51",ue="_logPlaceholderIcon_1dg5t_64";var n={logMeta:ce,logType:le,logTime:pe,logText:ie,logsWrapper:ge,logPlaceholder:me,logPlaceholderIcon:ue};const{useCallback:f,memo:de,useEffect:he}=k,x=30,xe={debug:"#28792c",info:"var(--bg-log-info-tag)",warning:"#b99105",error:"#c11c1c"};function _e({time:e,even:t,payload:a,type:r}){const s=w({even:t},"log");return o.exports.createElement("div",{className:s},o.exports.createElement("div",{className:n.logMeta},o.exports.createElement("div",{className:n.logTime},e),o.exports.createElement("div",{className:n.logType,style:{backgroundColor:xe[r]}},r),o.exports.createElement("div",{className:n.logText},a)))}function Ee(e,t){return t[e].id}const ve=de(({index:e,style:t,data:a})=>{const r=a[e];return o.exports.createElement("div",{style:t},o.exports.createElement(_e,u({},r)))},z);function fe({dispatch:e,logLevel:t,apiConfig:a,logs:r,logStreamingPaused:s}){const p=B(),d=f(()=>{s?F(h(u({},a),{logLevel:t})):M(),p.app.updateAppConfig("logStreamingPaused",!s)},[a,t,s,p.app]),g=f(R=>e(K(R)),[e]);he(()=>{A(h(u({},a),{logLevel:t}),g)},[a,t,g]);const[c,_]=Q(),{t:m}=W();return o.exports.createElement("div",null,o.exports.createElement(j,{title:m("Logs")}),o.exports.createElement(ne,null),o.exports.createElement("div",{ref:c,style:{paddingBottom:x}},r.length===0?o.exports.createElement("div",{className:n.logPlaceholder,style:{height:_-x}},o.exports.createElement("div",{className:n.logPlaceholderIcon},o.exports.createElement(q,{width:200,height:200})),o.exports.createElement("div",null,m("no_logs"))):o.exports.createElement("div",{className:n.logsWrapper},o.exports.createElement(D,{height:_-x,width:"100%",itemCount:r.length,itemSize:80,itemData:r,itemKey:Ee},ve),o.exports.createElement(U,{icon:s?o.exports.createElement(b,{size:16}):o.exports.createElement(I,{size:16}),mainButtonStyles:s?{background:"#e74c3c"}:{},style:X,text:m(s?"Resume Refresh":"Pause Refresh"),onClick:d}))))}const Se=e=>({logs:V(e),logLevel:Y(e),apiConfig:G(e),logStreamingPaused:J(e)});var be=S(Se)(fe);export{be as default};
|
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
._FlexCenter_1380a_1{display:flex;justify-content:center;align-items:center}._header_1y9js_1{display:flex;align-items:center}._header_1y9js_1:focus{outline:none}._header_1y9js_1 ._arrow_1y9js_8{display:inline-flex;-webkit-transform:rotate(0deg);transform:rotate(0);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}._header_1y9js_1 ._arrow_1y9js_8._isOpen_1y9js_13{-webkit-transform:rotate(180deg);transform:rotate(180deg)}._header_1y9js_1 ._arrow_1y9js_8:focus{outline:var(--color-focus-blue) solid 1px}._btn_1y9js_20{margin-left:5px}._qty_1y9js_25{font-family:var(--font-normal);font-size:.75em;margin-left:3px;padding:2px 7px;display:inline-flex;justify-content:center;align-items:center;background-color:var(--bg-near-transparent);border-radius:30px}._header_5pmv2_1{margin-bottom:12px}._groupHead_5pmv2_5{display:flex;flex-wrap:wrap;align-items:center}._action_5pmv2_11{margin:0 5px}._proxy_8ev0l_1{margin:3px;padding:5px;position:relative;border-radius:8px;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;outline:none;border:1px solid transparent;max-width:200px;background-color:var(--color-bg-proxy)}._proxy_8ev0l_1:focus{border:1px solid var(--color-focus-blue)}@media screen and (min-width: 30em){._proxy_8ev0l_1{min-width:200px;border-radius:10px;padding:10px}}._proxy_8ev0l_1._now_8ev0l_25{background-color:var(--color-focus-blue);color:#ddd}._proxy_8ev0l_1._error_8ev0l_29{opacity:.5}._proxy_8ev0l_1._selectable_8ev0l_32{transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;cursor:pointer}._proxy_8ev0l_1._selectable_8ev0l_32:hover{border-color:hsl(0deg,0%,var(--card-hover-border-lightness))}._proxyType_8ev0l_40{font-family:var(--font-mono);font-size:.6em;margin-right:3px}@media screen and (min-width: 30em){._proxyType_8ev0l_40{font-size:.85em}}._row_8ev0l_51{display:flex;align-items:center;justify-content:space-between}._proxyName_8ev0l_57{width:100%;margin-bottom:5px;font-size:.85em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._proxySmall_8ev0l_66{--size: 13px;width:var(--size);height:var(--size);border-radius:50%;position:relative}._proxySmall_8ev0l_66._now_8ev0l_25{--size: 15px}._proxySmall_8ev0l_66._now_8ev0l_25:before{--size-dot: 7px;content:"";position:absolute;width:var(--size-dot);height:var(--size-dot);background-color:#fff;border:1px solid var(--color-proxy-dot-selected-ind-bo);border-radius:4px;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}._proxySmall_8ev0l_66._selectable_8ev0l_32{transition:-webkit-transform .1s ease-in-out;transition:transform .1s ease-in-out;transition:transform .1s ease-in-out,-webkit-transform .1s ease-in-out;cursor:pointer}._proxySmall_8ev0l_66._selectable_8ev0l_32:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}._proxyLatency_hz69v_1{border-radius:20px;color:#eee;font-size:.6em}@media screen and (min-width: 30em){._proxyLatency_hz69v_1{font-size:.85em}}._list_1oy7w_1{display:flex;flex-wrap:wrap;margin:8px 0 8px -3px}._listSummaryView_1oy7w_8{margin:14px 0;display:grid;grid-template-columns:repeat(auto-fill,13px);grid-gap:10px;place-items:center;max-width:900px}._updatedAt_1rx92_1{margin-bottom:12px}._updatedAt_1rx92_1 small{color:#777}._main_1rx92_8{padding:10px 15px}@media screen and (min-width: 30em){._main_1rx92_8{padding:10px 40px}}._head_1rx92_17{display:flex;align-items:center;flex-wrap:wrap}._action_1rx92_23{margin:0 5px;display:grid;grid-template-columns:auto auto;gap:10px;place-items:center}._refresh_1rx92_31{display:flex;justify-content:center;align-items:center;cursor:pointer}._labeledInput_cmki0_1{max-width:85vw;width:400px;display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:13px 0}hr{height:1px;background-color:var(--color-separator);border:none;outline:none;margin:1rem 0px}._overlay_uuk3b_1{background-color:#0009}._cnt_uuk3b_5{position:absolute;background-color:var(--bg-modal);color:var(--color-text);line-height:1.4;opacity:.6;transition:all .3s ease;-webkit-transform:translate(-50%,-50%) scale(1.2);transform:translate(-50%,-50%) scale(1.2);box-shadow:#0000001f 0 4px 4px,#0000003d 0 16px 32px}._afterOpen_uuk3b_16{opacity:1;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}._topBar_jgy4z_1{position:-webkit-sticky;position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;z-index:1;background-color:var(--color-background2);-webkit-backdrop-filter:blur(36px);backdrop-filter:blur(36px)}._topBarRight_jgy4z_13{display:flex;align-items:center;flex-wrap:wrap;flex:1;justify-content:flex-end;margin-right:20px}._textFilterContainer_jgy4z_22{max-width:350px;min-width:150px;flex:1;margin-right:8px}._group_jgy4z_29{padding:10px 15px}@media screen and (min-width: 30em){._group_jgy4z_29{padding:10px 40px}}
|
@ -1 +0,0 @@
|
||||
._FlexCenter_1380a_1{display:flex;justify-content:center;align-items:center}._header_1y9js_1{display:flex;align-items:center}._header_1y9js_1:focus{outline:none}._header_1y9js_1 ._arrow_1y9js_8{display:inline-flex;-webkit-transform:rotate(0deg);transform:rotate(0);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}._header_1y9js_1 ._arrow_1y9js_8._isOpen_1y9js_13{-webkit-transform:rotate(180deg);transform:rotate(180deg)}._header_1y9js_1 ._arrow_1y9js_8:focus{outline:var(--color-focus-blue) solid 1px}._btn_1y9js_20{margin-left:5px}._qty_1y9js_25{font-family:var(--font-normal);font-size:.75em;margin-left:3px;padding:2px 7px;display:inline-flex;justify-content:center;align-items:center;background-color:var(--bg-near-transparent);border-radius:30px}._header_1g0y5_1{margin-bottom:12px}._zapWrapper_1g0y5_5{width:20px;height:20px;display:flex;align-items:center;justify-content:center}._proxy_sq0tg_1{margin:3px;padding:5px;position:relative;border-radius:8px;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;outline:none;border:1px solid transparent;max-width:280px;background-color:var(--color-bg-proxy)}._proxy_sq0tg_1:focus{border:1px solid var(--color-focus-blue)}@media screen and (min-width: 30em){._proxy_sq0tg_1{min-width:200px;border-radius:10px;padding:10px}}._proxy_sq0tg_1._now_sq0tg_25{background-color:var(--color-focus-blue);color:#ddd}._proxy_sq0tg_1._error_sq0tg_29{opacity:.5}._proxy_sq0tg_1._selectable_sq0tg_32{transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;cursor:pointer}._proxy_sq0tg_1._selectable_sq0tg_32:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px)}._proxyType_sq0tg_40{font-family:var(--font-mono);font-size:.6em;margin-right:3px}@media screen and (min-width: 30em){._proxyType_sq0tg_40{font-size:.85em}}._row_sq0tg_51{display:flex;align-items:center;justify-content:space-between}._proxyName_sq0tg_57{width:100%;margin-bottom:5px;font-size:.85em}@media screen and (min-width: 30em){._proxyName_sq0tg_57{font-size:1em}}._proxySmall_sq0tg_68{width:13px;height:13px;border-radius:50%;border:1px solid var(--color-background)}._proxySmall_sq0tg_68._now_sq0tg_25{border-color:var(--color-text-secondary)}._proxySmall_sq0tg_68._selectable_sq0tg_32{transition:-webkit-transform .1s ease-in-out;transition:transform .1s ease-in-out;transition:transform .1s ease-in-out,-webkit-transform .1s ease-in-out;cursor:pointer}._proxySmall_sq0tg_68._selectable_sq0tg_32:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}._proxyLatency_15kyb_1{border-radius:20px;color:#eee;font-size:.6em}@media screen and (min-width: 30em){._proxyLatency_15kyb_1{font-size:1em}}._list_10y5m_1{display:flex;flex-wrap:wrap;margin:8px 0 8px -3px}._listSummaryView_10y5m_8{margin:8px 0;display:grid;grid-template-columns:repeat(auto-fill,13px);grid-gap:10px}._updatedAt_1ql33_1{margin-bottom:12px}._updatedAt_1ql33_1 small{color:#777}._body_1ql33_8{padding:10px 15px}@media screen and (min-width: 30em){._body_1ql33_8{padding:10px 40px}}._actionFooter_1ql33_17{display:flex}._actionFooter_1ql33_17 button{margin:0 5px}._actionFooter_1ql33_17 button:first-child{margin-left:0}._refresh_1ql33_27{display:flex;justify-content:center;align-items:center;cursor:pointer}._labeledInput_cmki0_1{max-width:85vw;width:400px;display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:13px 0}hr{height:1px;background-color:var(--color-separator);border:none;outline:none;margin:1rem 0px}._overlay_uuk3b_1{background-color:#0009}._cnt_uuk3b_5{position:absolute;background-color:var(--bg-modal);color:var(--color-text);line-height:1.4;opacity:.6;transition:all .3s ease;-webkit-transform:translate(-50%,-50%) scale(1.2);transform:translate(-50%,-50%) scale(1.2);box-shadow:#0000001f 0 4px 4px,#0000003d 0 16px 32px}._afterOpen_uuk3b_16{opacity:1;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}._topBar_jgy4z_1{position:-webkit-sticky;position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;z-index:1;background-color:var(--color-background2);-webkit-backdrop-filter:blur(36px);backdrop-filter:blur(36px)}._topBarRight_jgy4z_13{display:flex;align-items:center;flex-wrap:wrap;flex:1;justify-content:flex-end;margin-right:20px}._textFilterContainer_jgy4z_22{max-width:350px;min-width:150px;flex:1;margin-right:8px}._group_jgy4z_29{padding:10px 15px}@media screen and (min-width: 30em){._group_jgy4z_29{padding:10px 40px}}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
._RuleProviderItem_ly9yn_1{display:grid;grid-template-columns:40px 1fr 46px;height:100%}._left_ly9yn_7{display:inline-flex;align-items:center;color:var(--color-text-secondary);opacity:.4}._middle_ly9yn_14{display:grid;grid-template-rows:1fr auto auto;align-items:center}._gray_ly9yn_20{color:#777}._refreshButtonWrapper_ly9yn_24{display:grid;place-items:center;opacity:0;transition:opacity .2s}._RuleProviderItem_ly9yn_1:hover ._refreshButtonWrapper_ly9yn_24{opacity:1}._rule_1ymqx_1{display:flex;align-items:center;padding:6px 15px}@media screen and (min-width: 30em){._rule_1ymqx_1{padding:10px 40px}}._left_1ymqx_12{width:40px;padding-right:15px;color:var(--color-text-secondary);opacity:.4}._a_1ymqx_19{display:flex;align-items:center;font-size:12px;opacity:.8}._b_1ymqx_26{padding:10px 0;font-family:Roboto Mono,Menlo,monospace;font-size:16px}@media screen and (min-width: 30em){._b_1ymqx_26{font-size:19px}}._type_1ymqx_37{width:110px}._header_1j1w3_1{display:grid;grid-template-columns:1fr minmax(auto,330px);align-items:center;padding-right:15px}@media screen and (min-width: 30em){._header_1j1w3_1{padding-right:40px}}._RuleProviderItemWrapper_1j1w3_17{padding:6px 15px}@media screen and (min-width: 30em){._RuleProviderItemWrapper_1j1w3_17{padding:10px 40px}}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
._RuleProviderItem_12aid_1{display:grid;grid-template-columns:40px 1fr 46px;height:100%}._left_12aid_7{display:inline-flex;align-items:center;color:var(--color-text-secondary);opacity:.4}._middle_12aid_14{display:grid;gap:6px;grid-template-rows:1fr auto auto;align-items:center}._gray_12aid_21{color:#777}._action_12aid_25{display:grid;gap:4px;grid-template-columns:auto 1fr;align-items:center}._refreshBtn_12aid_32{padding:5px}._rule_1ymqx_1{display:flex;align-items:center;padding:6px 15px}@media screen and (min-width: 30em){._rule_1ymqx_1{padding:10px 40px}}._left_1ymqx_12{width:40px;padding-right:15px;color:var(--color-text-secondary);opacity:.4}._a_1ymqx_19{display:flex;align-items:center;font-size:12px;opacity:.8}._b_1ymqx_26{padding:10px 0;font-family:Roboto Mono,Menlo,monospace;font-size:16px}@media screen and (min-width: 30em){._b_1ymqx_26{font-size:19px}}._type_1ymqx_37{width:110px}._header_1j1w3_1{display:grid;grid-template-columns:1fr minmax(auto,330px);align-items:center;padding-right:15px}@media screen and (min-width: 30em){._header_1j1w3_1{padding-right:40px}}._RuleProviderItemWrapper_1j1w3_17{padding:6px 15px}@media screen and (min-width: 30em){._RuleProviderItemWrapper_1j1w3_17{padding:10px 40px}}
|
@ -1 +0,0 @@
|
||||
import{r as t}from"./vendor.3cf270b6.js";const l="_select_1mr76_1";var o={select:l};function n({options:r,selected:s,onChange:c}){return t.exports.createElement("select",{className:o.select,value:s,onChange:c},r.map(([e,a])=>t.exports.createElement("option",{key:e,value:e},a)))}export{n as S};
|
@ -1 +1 @@
|
||||
._select_1mr76_1{height:40px;line-height:1.5;width:100%;padding-left:8px;-webkit-appearance:none;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_1mr76_1:hover,._select_1mr76_1:focus{border-color:#343434;outline:none!important;color:var(--color-text-highlight);background-image:var(--select-bg-hover)}._select_1mr76_1:focus{box-shadow:#4299e199 0 0 0 3px}._select_1mr76_1 option{background-color:var(--color-background)}
|
||||
._select_13zm8_1{height:40px;line-height:1.5;width:100%;padding-left:8px;-webkit-appearance:none;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_13zm8_1:hover,._select_13zm8_1:focus{border-color:#343434;outline:none!important;color:var(--color-text-highlight);background-image:var(--select-bg-hover)}._select_13zm8_1:focus{box-shadow:#4299e199 0 0 0 3px}._select_13zm8_1 option{background-color:var(--color-background)}
|
@ -0,0 +1 @@
|
||||
import{j as s}from"./index.5901d226.js";const n="_select_13zm8_1";var o={select:n};function i({options:t,selected:c,onChange:l}){return s("select",{className:o.select,value:c,onChange:l,children:t.map(([e,r])=>s("option",{value:e,children:r},e))})}export{i as S};
|
@ -1 +0,0 @@
|
||||
import{g as i,r as n,O as l,N as u,j as p}from"./vendor.3cf270b6.js";import{d as x}from"./debounce.76599460.js";const _="_rotate_1dspl_1",g="_isRotating_1dspl_5",m="_rotating_1dspl_1";var r={rotate:_,isRotating:g,rotating:m};function N({isRotating:t}){const e=i(r.rotate,{[r.isRotating]:t});return n.exports.createElement("span",{className:e},n.exports.createElement(l,{width:16}))}const{useCallback:d,useState:R,useMemo:f}=p;function h(t){const[,e]=u(t),[a,c]=R(""),o=f(()=>x(e,300),[e]);return[d(s=>{c(s.target.value),o(s.target.value)},[o]),a]}const T="_input_16a1f_1";var v={input:T};function w(t){const[e,a]=h(t.textAtom);return n.exports.createElement("input",{className:v.input,type:"text",value:a,onChange:e,placeholder:t.placeholder})}export{N as R,w as T};
|
@ -0,0 +1 @@
|
||||
var v=Object.defineProperty,h=Object.defineProperties;var x=Object.getOwnPropertyDescriptors;var u=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var p=(t,e,o)=>e in t?v(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,g=(t,e)=>{for(var o in e||(e={}))_.call(e,o)&&p(t,o,e[o]);if(u)for(var o of u(e))b.call(e,o)&&p(t,o,e[o]);return t},f=(t,e)=>h(t,x(e));import{r as y,b as m,j as i,P as c,c as R,V as w,h as j}from"./index.5901d226.js";import{d as O}from"./debounce.d080d5e1.js";function T(t,e){if(t==null)return{};var o=k(t,e),r,n;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n<a.length;n++)r=a[n],!(e.indexOf(r)>=0)&&(!Object.prototype.propertyIsEnumerable.call(t,r)||(o[r]=t[r]))}return o}function k(t,e){if(t==null)return{};var o={},r=Object.keys(t),n,a;for(a=0;a<r.length;a++)n=r[a],!(e.indexOf(n)>=0)&&(o[n]=t[n]);return o}var l=y.exports.forwardRef(function(t,e){var o=t.color,r=o===void 0?"currentColor":o,n=t.size,a=n===void 0?24:n,s=T(t,["color","size"]);return m("svg",f(g({ref:e,xmlns:"http://www.w3.org/2000/svg",width:a,height:a,viewBox:"0 0 24 24",fill:"none",stroke:r,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},s),{children:[i("polyline",{points:"23 4 23 10 17 10"}),i("path",{d:"M20.49 15a9 9 0 1 1-2.12-9.36L23 10"})]}))});l.propTypes={color:c.string,size:c.oneOfType([c.string,c.number])};l.displayName="RotateCw";var C=l;const z="_rotate_1dspl_1",P="_isRotating_1dspl_5",L="_rotating_1dspl_1";var d={rotate:z,isRotating:P,rotating:L};function E(t){const e=t.size||16,o=R(d.rotate,{[d.isRotating]:t.isRotating});return i("span",{className:o,children:i(C,{size:e})})}const{useCallback:$,useState:I,useMemo:N}=j;function W(t){const[,e]=w(t),[o,r]=I(""),n=N(()=>O(e,300),[e]);return[$(s=>{r(s.target.value),n(s.target.value)},[n]),o]}const M="_input_16a1f_1";var S={input:M};function F(t){const[e,o]=W(t.textAtom);return i("input",{className:S.input,type:"text",value:o,onChange:e,placeholder:t.placeholder})}export{E as R,F as T,C as a};
|
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
var u=Object.defineProperty,y=Object.defineProperties;var g=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var w=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var p=(r,e,o)=>e in r?u(r,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[e]=o,f=(r,e)=>{for(var o in e||(e={}))w.call(e,o)&&p(r,o,e[o]);if(l)for(var o of l(e))b.call(e,o)&&p(r,o,e[o]);return r},v=(r,e)=>y(r,g(e));import{r as d,j as c,P as s}from"./index.5901d226.js";function j(r,e){if(r==null)return{};var o=O(r,e),n,t;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);for(t=0;t<i.length;t++)n=i[t],!(e.indexOf(n)>=0)&&(!Object.prototype.propertyIsEnumerable.call(r,n)||(o[n]=r[n]))}return o}function O(r,e){if(r==null)return{};var o={},n=Object.keys(r),t,i;for(i=0;i<n.length;i++)t=n[i],!(e.indexOf(t)>=0)&&(o[t]=r[t]);return o}var a=d.exports.forwardRef(function(r,e){var o=r.color,n=o===void 0?"currentColor":o,t=r.size,i=t===void 0?24:t,h=j(r,["color","size"]);return c("svg",v(f({ref:e,xmlns:"http://www.w3.org/2000/svg",width:i,height:i,viewBox:"0 0 24 24",fill:"none",stroke:n,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},h),{children:c("polyline",{points:"6 9 12 15 18 9"})}))});a.propTypes={color:s.string,size:s.oneOfType([s.string,s.number])};a.displayName="ChevronDown";var x=a;export{x as C};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +1,2 @@
|
||||
var $=Object.defineProperty,k=Object.defineProperties;var y=Object.getOwnPropertyDescriptors;var h=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var S=(e,t,n)=>t in e?$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v=(e,t)=>{for(var n in t||(t={}))E.call(t,n)&&S(e,n,t[n]);if(h)for(var n of h(t))O.call(t,n)&&S(e,n,t[n]);return e},b=(e,t)=>k(e,y(t));import{r as R,t as x,v as u}from"./index.d6596dd6.js";const L="/logs",A=new TextDecoder("utf-8"),F=()=>Math.floor((1+Math.random())*65536).toString(16);let p=!1,i=!1,f="",s,g;function m(e,t){let n;try{n=JSON.parse(e)}catch{console.log("JSON.parse error",JSON.parse(e))}const r=new Date,l=H(r);n.time=l,n.id=+r-0+F(),n.even=p=!p,t(n)}function H(e){const t=e.getFullYear()%100,n=u(e.getMonth()+1,2),r=u(e.getDate(),2),l=u(e.getHours(),2),o=u(e.getMinutes(),2),c=u(e.getSeconds(),2);return`${t}-${n}-${r} ${l}:${o}:${c}`}function M(e,t){return e.read().then(({done:n,value:r})=>{f+=A.decode(r,{stream:!n});const o=f.split(`
|
||||
`),c=o[o.length-1];for(let d=0;d<o.length-1;d++)m(o[d],t);if(n){m(c,t),f="",console.log("GET /logs streaming done"),i=!1;return}else f=c;return M(e,t)})}function w(e){const t=Object.keys(e);return t.sort(),t.map(n=>e[n]).join("|")}let D,a;function J(e,t){if(e.logLevel==="uninit"||i||s&&s.readyState===1)return;g=t;const n=R(e,L);s=new WebSocket(n),s.addEventListener("error",()=>{N(e,t)}),s.addEventListener("message",function(r){m(r.data,t)})}function Y(){s.close(),a&&a.abort()}function j(e){!g||!s||(s.close(),i=!1,J(e,g))}function N(e,t){if(a&&w(e)!==D)a.abort();else if(i)return;i=!0,D=w(e),a=new AbortController;const n=a.signal,{url:r,init:l}=x(e);fetch(r+L+"?level="+e.logLevel,b(v({},l),{signal:n})).then(o=>{const c=o.body.getReader();M(c,t)},o=>{i=!1,!n.aborted&&console.log("GET /logs error:",o.message)})}export{J as f,j as r,Y as s};
|
||||
var $=Object.defineProperty,k=Object.defineProperties;var y=Object.getOwnPropertyDescriptors;var h=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable;var S=(e,t,n)=>t in e?$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,b=(e,t)=>{for(var n in t||(t={}))E.call(t,n)&&S(e,n,t[n]);if(h)for(var n of h(t))A.call(t,n)&&S(e,n,t[n]);return e},v=(e,t)=>k(e,y(t));import{A as O,D as R,E as u}from"./index.5901d226.js";const L="/logs",x=new TextDecoder("utf-8"),F=()=>Math.floor((1+Math.random())*65536).toString(16);let p=!1,i=!1,f="",s,g;function m(e,t){let n;try{n=JSON.parse(e)}catch{console.log("JSON.parse error",JSON.parse(e))}const r=new Date,l=H(r);n.time=l,n.id=+r-0+F(),n.even=p=!p,t(n)}function H(e){const t=e.getFullYear()%100,n=u(e.getMonth()+1,2),r=u(e.getDate(),2),l=u(e.getHours(),2),o=u(e.getMinutes(),2),c=u(e.getSeconds(),2);return`${t}-${n}-${r} ${l}:${o}:${c}`}function M(e,t){return e.read().then(({done:n,value:r})=>{f+=x.decode(r,{stream:!n});const o=f.split(`
|
||||
`),c=o[o.length-1];for(let d=0;d<o.length-1;d++)m(o[d],t);if(n){m(c,t),f="",console.log("GET /logs streaming done"),i=!1;return}else f=c;return M(e,t)})}function D(e){const t=Object.keys(e);return t.sort(),t.map(n=>e[n]).join("|")}let w,a;function J(e,t){if(e.logLevel==="uninit"||i||s&&s.readyState===1)return;g=t;const n=O(e,L);s=new WebSocket(n),s.addEventListener("error",()=>{N(e,t)}),s.addEventListener("message",function(r){m(r.data,t)})}function Y(){s.close(),a&&a.abort()}function j(e){!g||!s||(s.close(),i=!1,J(e,g))}function N(e,t){if(a&&D(e)!==w)a.abort();else if(i)return;i=!0,w=D(e),a=new AbortController;const n=a.signal,{url:r,init:l}=R(e);fetch(r+L+"?level="+e.logLevel,v(b({},l),{signal:n})).then(o=>{const c=o.body.getReader();M(c,t)},o=>{i=!1,!n.aborted&&console.log("GET /logs error:",o.message)})}export{J as f,j as r,Y as s};
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
var h=Object.defineProperty,d=Object.defineProperties;var w=Object.getOwnPropertyDescriptors;var y=Object.getOwnPropertySymbols;var b=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var v=(e,t,r)=>t in e?h(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,p=(e,t)=>{for(var r in t||(t={}))b.call(t,r)&&v(e,r,t[r]);if(y)for(var r of y(t))O.call(t,r)&&v(e,r,t[r]);return e},f=(e,t)=>d(e,w(t));import{r as g,b as j,j as a,P as s}from"./index.5901d226.js";function P(e,t){if(e==null)return{};var r=k(e,t),i,o;if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o<n.length;o++)i=n[o],!(t.indexOf(i)>=0)&&(!Object.prototype.propertyIsEnumerable.call(e,i)||(r[i]=e[i]))}return r}function k(e,t){if(e==null)return{};var r={},i=Object.keys(e),o,n;for(n=0;n<i.length;n++)o=i[n],!(t.indexOf(o)>=0)&&(r[o]=e[o]);return r}var c=g.exports.forwardRef(function(e,t){var r=e.color,i=r===void 0?"currentColor":r,o=e.size,n=o===void 0?24:o,l=P(e,["color","size"]);return j("svg",f(p({ref:t,xmlns:"http://www.w3.org/2000/svg",width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:i,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},l),{children:[a("rect",{x:"6",y:"4",width:"4",height:"16"}),a("rect",{x:"14",y:"4",width:"4",height:"16"})]}))});c.propTypes={color:s.string,size:s.oneOfType([s.string,s.number])};c.displayName="Pause";var L=c;function x(e,t){if(e==null)return{};var r=m(e,t),i,o;if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o<n.length;o++)i=n[o],!(t.indexOf(i)>=0)&&(!Object.prototype.propertyIsEnumerable.call(e,i)||(r[i]=e[i]))}return r}function m(e,t){if(e==null)return{};var r={},i=Object.keys(e),o,n;for(n=0;n<i.length;n++)o=i[n],!(t.indexOf(o)>=0)&&(r[o]=e[o]);return r}var u=g.exports.forwardRef(function(e,t){var r=e.color,i=r===void 0?"currentColor":r,o=e.size,n=o===void 0?24:o,l=x(e,["color","size"]);return a("svg",f(p({ref:t,xmlns:"http://www.w3.org/2000/svg",width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:i,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},l),{children:a("polygon",{points:"5 3 19 12 5 21 5 3"})}))});u.propTypes={color:s.string,size:s.oneOfType([s.string,s.number])};u.displayName="Play";var W=u;export{W as P,L as a};
|
@ -1 +0,0 @@
|
||||
import{j as r}from"./vendor.3cf270b6.js";const{useState:s,useRef:u,useCallback:a,useLayoutEffect:c}=r;function d(){const t=u(null),[n,i]=s(200),e=a(()=>{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};
|
@ -0,0 +1 @@
|
||||
import{h as r}from"./index.5901d226.js";const{useState:s,useRef:u,useCallback:a,useLayoutEffect:c}=r;function d(){const t=u(null),[n,i]=s(200),e=a(()=>{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};
|
File diff suppressed because one or more lines are too long
@ -11,12 +11,9 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="application-name" content="yacd" />
|
||||
<meta name="description" content="Yet Another Clash Dashboard" />
|
||||
<meta name="theme-color" content="#202020" media="(prefers-color-scheme: dark)" />
|
||||
<meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)" />
|
||||
<title>yacd</title>
|
||||
<script type="module" crossorigin src="./assets/index.d6596dd6.js"></script>
|
||||
<link rel="modulepreload" href="./assets/vendor.3cf270b6.js">
|
||||
<link rel="stylesheet" href="./assets/index.d2d36d4e.css">
|
||||
<script type="module" crossorigin src="./assets/index.5901d226.js"></script>
|
||||
<link rel="stylesheet" href="./assets/index.0e7e7dfd.css">
|
||||
<link rel="manifest" href="./manifest.webmanifest"></head>
|
||||
<body>
|
||||
<div id="app" data-base-url="http://127.0.0.1:9090"></div>
|
||||
|
File diff suppressed because one or more lines are too long
@ -426,23 +426,12 @@ Thread.new{
|
||||
if Value.key?('routing-mark') then
|
||||
Value.delete('routing-mark');
|
||||
end;
|
||||
}.join;
|
||||
rescue Exception => e
|
||||
puts '${LOGTIME} Error: Set General Failed,【' + e.message + '】';
|
||||
end;
|
||||
|
||||
#auth
|
||||
begin
|
||||
Thread.new{
|
||||
if File::exist?('/tmp/yaml_openclash_auth') then
|
||||
Value_1 = YAML.load_file('/tmp/yaml_openclash_auth');
|
||||
Value['authentication']=Value_1
|
||||
elsif Value.key?('authentication') then
|
||||
Value.delete('authentication');
|
||||
if Value.key?('auto-redir') then
|
||||
Value.delete('auto-redir');
|
||||
end;
|
||||
}.join;
|
||||
rescue Exception => e
|
||||
puts '${LOGTIME} Error: Set authentication Failed,【' + e.message + '】';
|
||||
puts '${LOGTIME} Error: Set General Failed,【' + e.message + '】';
|
||||
end;
|
||||
|
||||
#custom dns
|
||||
@ -465,6 +454,49 @@ Thread.new{
|
||||
}.join;
|
||||
end;
|
||||
|
||||
# dns check
|
||||
begin
|
||||
Thread.new{
|
||||
if not Value['dns'].key?('nameserver') or Value['dns']['nameserver'].to_a.empty? then
|
||||
puts '${LOGTIME} Detected That The nameserver DNS Option Has No Server Set, Starting To Complete...';
|
||||
Value_1={'nameserver'=>['114.114.114.114','119.29.29.29','223.5.5.5','https://doh.pub/dns-query','https://223.5.5.5/dns-query']};
|
||||
Value_2={'fallback'=>['https://dns.cloudflare.com/dns-query','https://public.dns.iij.jp/dns-query','https://jp.tiar.app/dns-query','https://jp.tiarap.org/dns-query']};
|
||||
Value['dns'].merge!(Value_1);
|
||||
Value['dns'].merge!(Value_2);
|
||||
end;
|
||||
}.join;
|
||||
end;
|
||||
|
||||
#default-nameserver
|
||||
begin
|
||||
Thread.new{
|
||||
if ${20} == 1 then
|
||||
reg = /(^https:\/\/|^tls:\/\/|^quic:\/\/)?((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?/;
|
||||
reg6 = /(^https:\/\/|^tls:\/\/|^quic:\/\/)?(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))|\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?/i;
|
||||
else
|
||||
reg = /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/;
|
||||
reg6 = /^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))|\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/i;
|
||||
end;
|
||||
if Value['dns'].has_key?('fallback') then
|
||||
Value_1=Value['dns']['nameserver'] | Value['dns']['fallback'];
|
||||
else
|
||||
Value_1=Value['dns']['nameserver'];
|
||||
end;
|
||||
Value_1.each{|x|
|
||||
if x =~ reg or x =~ reg6 then
|
||||
if Value['dns'].has_key?('default-nameserver') then
|
||||
Value['dns']['default-nameserver']=Value['dns']['default-nameserver'].to_a.insert(-1,x).uniq;
|
||||
else
|
||||
Value_2={'default-nameserver'=>[x]};
|
||||
Value['dns'].merge!(Value_2);
|
||||
end;
|
||||
end;
|
||||
};
|
||||
}.join;
|
||||
rescue Exception => e
|
||||
puts '${LOGTIME} Error: Set default-nameserver Failed,【' + e.message + '】';
|
||||
end;
|
||||
|
||||
#proxy server dns
|
||||
begin
|
||||
Thread.new{
|
||||
@ -478,53 +510,40 @@ Thread.new{
|
||||
}.join;
|
||||
end;
|
||||
|
||||
#fallback-filter
|
||||
begin
|
||||
Thread.new{
|
||||
if '$tolerance' != '0' then
|
||||
Value['proxy-groups'].each{
|
||||
|x|
|
||||
if x['type'] == 'url-test' then
|
||||
x['tolerance']='${tolerance}';
|
||||
end
|
||||
};
|
||||
if '$custom_fallback_filter' == '1' then
|
||||
if not Value['dns'].key?('fallback') then
|
||||
puts '${LOGTIME} Error: Fallback-Filter Need fallback of DNS Been Setted, Ignore...';
|
||||
elsif not YAML.load_file('/etc/openclash/custom/openclash_custom_fallback_filter.yaml') then
|
||||
puts '${LOGTIME} Error: Unable To Parse Custom Fallback-Filter File, Ignore...';
|
||||
else
|
||||
Value['dns']['fallback-filter'] = YAML.load_file('/etc/openclash/custom/openclash_custom_fallback_filter.yaml')['fallback-filter'];
|
||||
end;
|
||||
end;
|
||||
}.join;
|
||||
rescue Exception => e
|
||||
puts '${LOGTIME} Error: Set Url-Test Group Tolerance Failed,【' + e.message + '】';
|
||||
end;
|
||||
|
||||
#custom hosts
|
||||
#nameserver-policy
|
||||
begin
|
||||
Thread.new{
|
||||
if File::exist?('/etc/openclash/custom/openclash_custom_hosts.list') then
|
||||
begin
|
||||
Value_3 = YAML.load_file('/etc/openclash/custom/openclash_custom_hosts.list');
|
||||
if Value_3 != false then
|
||||
Value['dns']['use-hosts']=true;
|
||||
if Value.has_key?('hosts') and not Value['hosts'].to_a.empty? then
|
||||
Value['hosts'].merge!(Value_3);
|
||||
if '$dns_advanced_setting' == '1' then
|
||||
if File::exist?('/etc/openclash/custom/openclash_custom_domain_dns_policy.list') then
|
||||
Value_6 = YAML.load_file('/etc/openclash/custom/openclash_custom_domain_dns_policy.list');
|
||||
if Value_6 != false and not Value_6.nil? then
|
||||
if Value['dns'].has_key?('nameserver-policy') and not Value['dns']['nameserver-policy'].to_a.empty? then
|
||||
Value['dns']['nameserver-policy'].merge!(Value_6);
|
||||
else
|
||||
Value['hosts']=Value_3;
|
||||
Value['dns']['nameserver-policy']=Value_6;
|
||||
end;
|
||||
Value['hosts'].uniq;
|
||||
end;
|
||||
rescue
|
||||
Value_3 = IO.readlines('/etc/openclash/custom/openclash_custom_hosts.list');
|
||||
if not Value_3.empty? then
|
||||
Value_3 = Value_3.map!{|x| x.gsub(/#.*$/,'').strip} - ['', nil];
|
||||
Value['dns']['use-hosts']=true;
|
||||
if Value.has_key?('hosts') and not Value['hosts'].to_a.empty? then
|
||||
Value_3.each{|x| Value['hosts'].merge!(x)};
|
||||
else
|
||||
Value_3.each{|x| Value['hosts'].merge!(x)};
|
||||
end;
|
||||
Value['hosts'].uniq;
|
||||
Value['dns']['nameserver-policy'].uniq;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
}.join;
|
||||
rescue Exception => e
|
||||
puts '${LOGTIME} Error: Set Hosts Rules Failed,【' + e.message + '】';
|
||||
puts '${LOGTIME} Error: Set Nameserver-Policy Failed,【' + e.message + '】';
|
||||
end;
|
||||
|
||||
#fake-ip-filter
|
||||
@ -575,31 +594,73 @@ rescue Exception => e
|
||||
puts '${LOGTIME} Error: Set Fake-IP-Filter Failed,【' + e.message + '】';
|
||||
end;
|
||||
|
||||
#nameserver-policy
|
||||
#custom hosts
|
||||
begin
|
||||
Thread.new{
|
||||
if '$dns_advanced_setting' == '1' then
|
||||
if File::exist?('/etc/openclash/custom/openclash_custom_domain_dns_policy.list') then
|
||||
Value_6 = YAML.load_file('/etc/openclash/custom/openclash_custom_domain_dns_policy.list');
|
||||
if Value_6 != false then
|
||||
if Value['dns'].has_key?('nameserver-policy') and not Value['dns']['nameserver-policy'].to_a.empty? then
|
||||
Value['dns']['nameserver-policy'].merge!(Value_6);
|
||||
Value['dns']['nameserver-policy'].uniq;
|
||||
if File::exist?('/etc/openclash/custom/openclash_custom_hosts.list') then
|
||||
begin
|
||||
Value_3 = YAML.load_file('/etc/openclash/custom/openclash_custom_hosts.list');
|
||||
if Value_3 != false and not Value_3.nil? then
|
||||
Value['dns']['use-hosts']=true;
|
||||
if Value.has_key?('hosts') and not Value['hosts'].to_a.empty? then
|
||||
Value['hosts'].merge!(Value_3);
|
||||
else
|
||||
Value['dns']['nameserver-policy']=Value_6;
|
||||
Value['hosts']=Value_3;
|
||||
end;
|
||||
Value['hosts'].uniq;
|
||||
end;
|
||||
rescue
|
||||
Value_3 = IO.readlines('/etc/openclash/custom/openclash_custom_hosts.list');
|
||||
if not Value_3.empty? then
|
||||
Value_3 = Value_3.map!{|x| x.gsub(/#.*$/,'').strip} - ['', nil];
|
||||
Value['dns']['use-hosts']=true;
|
||||
if Value.has_key?('hosts') and not Value['hosts'].to_a.empty? then
|
||||
Value_3.each{|x| Value['hosts'].merge!(x)};
|
||||
else
|
||||
Value_3.each{|x| Value['hosts'].merge!(x)};
|
||||
end;
|
||||
Value['hosts'].uniq;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
}.join;
|
||||
rescue Exception => e
|
||||
puts '${LOGTIME} Error: Set Nameserver-Policy Failed,【' + e.message + '】';
|
||||
puts '${LOGTIME} Error: Set Hosts Rules Failed,【' + e.message + '】';
|
||||
end;
|
||||
|
||||
begin
|
||||
Thread.new{
|
||||
if '$tolerance' != '0' then
|
||||
Value['proxy-groups'].each{
|
||||
|x|
|
||||
if x['type'] == 'url-test' then
|
||||
x['tolerance']='${tolerance}';
|
||||
end
|
||||
};
|
||||
end;
|
||||
}.join;
|
||||
rescue Exception => e
|
||||
puts '${LOGTIME} Error: Set Url-Test Group Tolerance Failed,【' + e.message + '】';
|
||||
end;
|
||||
|
||||
#auth
|
||||
begin
|
||||
Thread.new{
|
||||
if File::exist?('/tmp/yaml_openclash_auth') then
|
||||
Value_1 = YAML.load_file('/tmp/yaml_openclash_auth');
|
||||
Value['authentication']=Value_1
|
||||
elsif Value.key?('authentication') then
|
||||
Value.delete('authentication');
|
||||
end;
|
||||
}.join;
|
||||
rescue Exception => e
|
||||
puts '${LOGTIME} Error: Set authentication Failed,【' + e.message + '】';
|
||||
end;
|
||||
|
||||
#Vmess-ws formalt check, not support proxy-provider
|
||||
begin
|
||||
Thread.new{
|
||||
if Value.key?('proxies') then
|
||||
if Value.key?('proxies') and not Value['proxies'].nil? then
|
||||
Value['proxies'].each{
|
||||
|x|
|
||||
if x['type'] != 'vmess' then
|
||||
@ -639,64 +700,6 @@ Thread.new{
|
||||
}.join;
|
||||
rescue Exception => e
|
||||
puts '${LOGTIME} Error: Edit Vmess Compatible Failed,【' + e.message + '】';
|
||||
end;
|
||||
|
||||
# dns check
|
||||
begin
|
||||
Thread.new{
|
||||
if not Value['dns'].key?('nameserver') or Value['dns']['nameserver'].to_a.empty? then
|
||||
puts '${LOGTIME} Detected That The nameserver DNS Option Has No Server Set, Starting To Complete...';
|
||||
Value_1={'nameserver'=>['114.114.114.114','119.29.29.29','223.5.5.5']};
|
||||
Value_2={'fallback'=>['https://dns.cloudflare.com/dns-query','https://public.dns.iij.jp/dns-query','https://jp.tiar.app/dns-query','https://jp.tiarap.org/dns-query']};
|
||||
Value['dns'].merge!(Value_1);
|
||||
Value['dns'].merge!(Value_2);
|
||||
end;
|
||||
}.join;
|
||||
end;
|
||||
|
||||
#fallback-filter
|
||||
begin
|
||||
Thread.new{
|
||||
if '$custom_fallback_filter' == '1' then
|
||||
if not Value['dns'].key?('fallback') then
|
||||
puts '${LOGTIME} Error: Fallback-Filter Need fallback of DNS Been Setted, Ignore...';
|
||||
elsif not YAML.load_file('/etc/openclash/custom/openclash_custom_fallback_filter.yaml') then
|
||||
puts '${LOGTIME} Error: Unable To Parse Custom Fallback-Filter File, Ignore...';
|
||||
else
|
||||
Value['dns']['fallback-filter'] = YAML.load_file('/etc/openclash/custom/openclash_custom_fallback_filter.yaml')['fallback-filter'];
|
||||
end;
|
||||
end;
|
||||
}.join;
|
||||
end;
|
||||
|
||||
#default-nameserver
|
||||
begin
|
||||
Thread.new{
|
||||
if ${20} == 1 then
|
||||
reg = /(^https:\/\/|^tls:\/\/|^quic:\/\/)?((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?/;
|
||||
reg6 = /(^https:\/\/|^tls:\/\/|^quic:\/\/)?(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))|\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?/i;
|
||||
else
|
||||
reg = /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/;
|
||||
reg6 = /^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))|\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/i;
|
||||
end;
|
||||
if Value['dns'].has_key?('fallback') then
|
||||
Value_1=Value['dns']['nameserver'] | Value['dns']['fallback'];
|
||||
else
|
||||
Value_1=Value['dns']['nameserver'];
|
||||
end;
|
||||
Value_1.each{|x|
|
||||
if x =~ reg or x =~ reg6 then
|
||||
if Value['dns'].has_key?('default-nameserver') then
|
||||
Value['dns']['default-nameserver']=Value['dns']['default-nameserver'].to_a.insert(-1,x).uniq;
|
||||
else
|
||||
Value_2={'default-nameserver'=>[x]};
|
||||
Value['dns'].merge!(Value_2);
|
||||
end;
|
||||
end;
|
||||
};
|
||||
}.join;
|
||||
rescue Exception => e
|
||||
puts '${LOGTIME} Error: Set default-nameserver Failed,【' + e.message + '】';
|
||||
ensure
|
||||
File.open('$5','w') {|f| YAML.dump(Value, f)};
|
||||
end" 2>/dev/null >> $LOG_FILE
|
||||
|
@ -727,6 +727,138 @@ do
|
||||
end
|
||||
}.join
|
||||
end;
|
||||
|
||||
if '$server_type' == 'hysteria' then
|
||||
Thread.new{
|
||||
#hysteria_protocol
|
||||
if Value['proxies'][$count].key?('protocol') then
|
||||
hysteria_protocol = '${uci_set}hysteria_protocol=' + Value['proxies'][$count]['protocol'].to_s
|
||||
system(hysteria_protocol)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#up_mbps
|
||||
if Value['proxies'][$count].key?('up_mbps') then
|
||||
up_mbps = '${uci_set}up_mbps=' + Value['proxies'][$count]['up_mbps'].to_s
|
||||
system(up_mbps)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#down_mbps
|
||||
if Value['proxies'][$count].key?('down_mbps') then
|
||||
down_mbps = '${uci_set}down_mbps=' + Value['proxies'][$count]['down_mbps'].to_s
|
||||
system(down_mbps)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#hysteria_up
|
||||
if Value['proxies'][$count].key?('up') then
|
||||
hysteria_up = '${uci_set}hysteria_up=' + Value['proxies'][$count]['up'].to_s
|
||||
system(hysteria_up)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#hysteria_down
|
||||
if Value['proxies'][$count].key?('down') then
|
||||
hysteria_down = '${uci_set}hysteria_down=' + Value['proxies'][$count]['down'].to_s
|
||||
system(hysteria_down)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#skip-cert-verify
|
||||
if Value['proxies'][$count].key?('skip-cert-verify') then
|
||||
skip_cert_verify = '${uci_set}skip_cert_verify=' + Value['proxies'][$count]['skip-cert-verify'].to_s
|
||||
system(skip_cert_verify)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#sni
|
||||
if Value['proxies'][$count].key?('sni') then
|
||||
sni = '${uci_set}sni=\"' + Value['proxies'][$count]['sni'].to_s + '\"'
|
||||
system(sni)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#alpn
|
||||
if Value['proxies'][$count].key?('alpn') then
|
||||
alpn = '${uci_set}hysteria_alpn=\"' + Value['proxies'][$count]['alpn'].to_s + '\"'
|
||||
system(alpn)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#recv_window_conn
|
||||
if Value['proxies'][$count].key?('recv_window_conn') then
|
||||
recv_window_conn = '${uci_set}recv_window_conn=' + Value['proxies'][$count]['recv_window_conn'].to_s
|
||||
system(recv_window_conn)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#recv_window
|
||||
if Value['proxies'][$count].key?('recv_window') then
|
||||
recv_window = '${uci_set}recv_window=' + Value['proxies'][$count]['recv_window'].to_s
|
||||
system(recv_window)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#hysteria_obfs
|
||||
if Value['proxies'][$count].key?('obfs') then
|
||||
hysteria_obfs = '${uci_set}hysteria_obfs=' + Value['proxies'][$count]['obfs'].to_s
|
||||
system(hysteria_obfs)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#hysteria_auth
|
||||
if Value['proxies'][$count].key?('auth') then
|
||||
hysteria_auth = '${uci_set}hysteria_auth=' + Value['proxies'][$count]['auth'].to_s
|
||||
system(hysteria_auth)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#hysteria_auth_str
|
||||
if Value['proxies'][$count].key?('auth_str') then
|
||||
hysteria_auth_str = '${uci_set}hysteria_auth_str=' + Value['proxies'][$count]['auth_str'].to_s
|
||||
system(hysteria_auth_str)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#hysteria_ca
|
||||
if Value['proxies'][$count].key?('ca') then
|
||||
hysteria_ca = '${uci_set}hysteria_ca=' + Value['proxies'][$count]['ca'].to_s
|
||||
system(hysteria_ca)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#hysteria_ca_str
|
||||
if Value['proxies'][$count].key?('ca_str') then
|
||||
hysteria_ca_str = '${uci_set}hysteria_ca_str=' + Value['proxies'][$count]['ca_str'].to_s
|
||||
system(hysteria_ca_str)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#disable_mtu_discovery
|
||||
if Value['proxies'][$count].key?('disable_mtu_discovery') then
|
||||
disable_mtu_discovery = '${uci_set}disable_mtu_discovery=' + Value['proxies'][$count]['disable_mtu_discovery'].to_s
|
||||
system(disable_mtu_discovery)
|
||||
end
|
||||
}.join
|
||||
|
||||
end;
|
||||
|
||||
if '$server_type' == 'vless' then
|
||||
Thread.new{
|
||||
#uuid
|
||||
@ -804,6 +936,7 @@ do
|
||||
end
|
||||
}.join
|
||||
end;
|
||||
|
||||
if '$server_type' == 'snell' then
|
||||
Thread.new{
|
||||
if Value['proxies'][$count].key?('obfs-opts') then
|
||||
@ -864,6 +997,18 @@ do
|
||||
system(skip_cert_verify)
|
||||
end
|
||||
}.join
|
||||
|
||||
Thread.new{
|
||||
#http-headers:
|
||||
if Value['proxies'][$count].key?('headers') then
|
||||
system '${uci_del}http_headers >/dev/null 2>&1'
|
||||
Value['proxies'][$count]['headers'].keys.each{
|
||||
|v|
|
||||
http_headers = '${uci_add}http_headers=\"' + v.to_s + ': '+ Value['proxies'][$count]['headers'][v].to_s + '\"'
|
||||
system(http_headers)
|
||||
}
|
||||
end
|
||||
}.join
|
||||
else
|
||||
Thread.new{
|
||||
if Value['proxies'][$count].key?('password') then
|
||||
@ -871,7 +1016,7 @@ do
|
||||
system(password)
|
||||
end
|
||||
}.join
|
||||
end;
|
||||
end;
|
||||
if '$server_type' == 'http' or '$server_type' == 'trojan' then
|
||||
Thread.new{
|
||||
if Value['proxies'][$count].key?('sni') then
|
||||
|
@ -236,6 +236,21 @@ yml_servers_set()
|
||||
config_get "routing_mark" "$section" "routing_mark" ""
|
||||
config_get "obfs_vless" "$section" "obfs_vless" ""
|
||||
config_get "vless_flow" "$section" "vless_flow" ""
|
||||
config_get "http_headers" "$section" "http_headers" ""
|
||||
config_get "hysteria_protocol" "$section" "hysteria_protocol" ""
|
||||
config_get "up_mbps" "$section" "up_mbps" ""
|
||||
config_get "down_mbps" "$section" "down_mbps" ""
|
||||
config_get "hysteria_up" "$section" "hysteria_up" ""
|
||||
config_get "hysteria_down" "$section" "hysteria_down" ""
|
||||
config_get "hysteria_alpn" "$section" "hysteria_alpn" ""
|
||||
config_get "hysteria_obfs" "$section" "hysteria_obfs" ""
|
||||
config_get "hysteria_auth" "$section" "hysteria_auth" ""
|
||||
config_get "hysteria_auth_str" "$section" "hysteria_auth_str" ""
|
||||
config_get "hysteria_ca" "$section" "hysteria_ca" ""
|
||||
config_get "hysteria_ca_str" "$section" "hysteria_ca_str" ""
|
||||
config_get "recv_window_conn" "$section" "recv_window_conn" ""
|
||||
config_get "recv_window" "$section" "recv_window" ""
|
||||
config_get "disable_mtu_discovery" "$section" "disable_mtu_discovery" ""
|
||||
|
||||
if [ "$enabled" = "0" ]; then
|
||||
return
|
||||
@ -538,7 +553,93 @@ EOF
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
#hysteria
|
||||
if [ "$type" = "hysteria" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
- name: "$name"
|
||||
type: $type
|
||||
server: "$server"
|
||||
port: $port
|
||||
protocol: $hysteria_protocol
|
||||
EOF
|
||||
if [ -n "$up_mbps" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
up_mbps: "$up_mbps"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$down_mbps" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
down_mbps: "$down_mbps"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$hysteria_up" ] && [ -z "$up_mbps" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
up: "$hysteria_up"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$hysteria_down" ] && [ -z "$down_mbps" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
down: "$hysteria_down"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$skip_cert_verify" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
skip-cert-verify: $skip_cert_verify
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$sni" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
sni: "$sni"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$hysteria_alpn" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
alpn: "$hysteria_alpn"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$hysteria_obfs" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
obfs: "$hysteria_obfs"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$hysteria_auth" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
auth: "$hysteria_auth"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$hysteria_auth_str" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
auth_str: "$hysteria_auth_str"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$hysteria_ca" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
ca: "$hysteria_ca"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$hysteria_ca_str" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
ca_str: "$hysteria_ca_str"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$recv_window_conn" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
recv_window_conn: "$recv_window_conn"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$recv_window" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
recv_window: "$recv_window"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$disable_mtu_discovery" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
disable_mtu_discovery: $disable_mtu_discovery
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
|
||||
#vless
|
||||
if [ "$type" = "vless" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
@ -673,6 +774,12 @@ cat >> "$SERVER_FILE" <<-EOF
|
||||
sni: "$sni"
|
||||
EOF
|
||||
fi
|
||||
if [ -n "$ws_opts_headers" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
headers:
|
||||
EOF
|
||||
config_list_foreach "$section" "http_headers" set_ws_headers
|
||||
fi
|
||||
fi
|
||||
|
||||
#trojan
|
||||
@ -1283,6 +1390,20 @@ cat >> "$SERVER_FILE" <<-EOF
|
||||
EOF
|
||||
fi
|
||||
cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
- name: Crypto
|
||||
type: select
|
||||
proxies:
|
||||
- Proxy
|
||||
- DIRECT
|
||||
EOF
|
||||
cat /tmp/Proxy_Server >> $SERVER_FILE 2>/dev/null
|
||||
if [ -f "/tmp/Proxy_Provider" ]; then
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
use:
|
||||
EOF
|
||||
fi
|
||||
cat /tmp/Proxy_Provider >> $SERVER_FILE 2>/dev/null
|
||||
cat >> "$SERVER_FILE" <<-EOF
|
||||
- name: PayPal
|
||||
type: select
|
||||
@ -1328,6 +1449,7 @@ ${uci_set}Steam="Steam"
|
||||
${uci_set}AdBlock="AdBlock"
|
||||
${uci_set}Speedtest="Speedtest"
|
||||
${uci_set}Telegram="Telegram"
|
||||
${uci_set}Crypto="Crypto"
|
||||
${uci_set}PayPal="PayPal"
|
||||
${uci_set}Domestic="Domestic"
|
||||
${uci_set}Others="Others"
|
||||
@ -1356,6 +1478,7 @@ ${uci_set}Others="Others"
|
||||
${UCI_DEL_LIST}="Spotify" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Spotify" >/dev/null 2>&1
|
||||
${UCI_DEL_LIST}="Steam" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Steam" >/dev/null 2>&1
|
||||
${UCI_DEL_LIST}="Telegram" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Telegram" >/dev/null 2>&1
|
||||
${UCI_DEL_LIST}="Crypto" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Crypto" >/dev/null 2>&1
|
||||
${UCI_DEL_LIST}="PayPal" >/dev/null 2>&1 && ${UCI_ADD_LIST}="PayPal" >/dev/null 2>&1
|
||||
${UCI_DEL_LIST}="Speedtest" >/dev/null 2>&1 && ${UCI_ADD_LIST}="Speedtest" >/dev/null 2>&1
|
||||
}
|
||||
|
@ -549,7 +549,7 @@ yml_other_set()
|
||||
if defined? Value_2 then
|
||||
Value_2.each{|x|
|
||||
if ${10} != 1 then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|^IN-TYPE,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
puts '${LOGTIME} Warning: Skip the Custom Rule that Core not Support【' + x + '】'
|
||||
next
|
||||
end;
|
||||
@ -583,7 +583,7 @@ yml_other_set()
|
||||
end;
|
||||
Value_4.each{|x|
|
||||
if ${10} != 1 then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|^IN-TYPE,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
puts '${LOGTIME} Warning: Skip the Custom Rule that Core not Support【' + x + '】'
|
||||
next
|
||||
end;
|
||||
@ -602,7 +602,7 @@ yml_other_set()
|
||||
if not Value_1['rules'].to_a.empty? and Value_1['rules'].class.to_s == 'Array' then
|
||||
Value_1.each{|x|
|
||||
if ${10} != 1 then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|^IN-TYPE,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
puts '${LOGTIME} Warning: Skip the Custom Rule that Core not Support【' + x + '】'
|
||||
Value_1.delete(x);
|
||||
end;
|
||||
@ -614,7 +614,7 @@ yml_other_set()
|
||||
elsif Value_1.class.to_s == 'Array' then
|
||||
Value_1.each{|x|
|
||||
if ${10} != 1 then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|^IN-TYPE,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
puts '${LOGTIME} Warning: Skip the Custom Rule that Core not Support【' + x + '】'
|
||||
Value_1.delete(x);
|
||||
end;
|
||||
@ -633,7 +633,7 @@ yml_other_set()
|
||||
if not Value_2['rules'].to_a.empty? and Value_2['rules'].class.to_s == 'Array' then
|
||||
Value_2.each{|x|
|
||||
if ${10} != 1 then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|^IN-TYPE,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
puts '${LOGTIME} Warning: Skip the Custom Rule that Core not Support【' + x + '】'
|
||||
Value_2.delete(x);
|
||||
end;
|
||||
@ -645,7 +645,7 @@ yml_other_set()
|
||||
elsif Value_2.class.to_s == 'Array' then
|
||||
Value_2.each{|x|
|
||||
if ${10} != 1 then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|^IN-TYPE,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
puts '${LOGTIME} Warning: Skip the Custom Rule that Core not Support【' + x + '】'
|
||||
Value_2.delete(x);
|
||||
end;
|
||||
@ -675,7 +675,7 @@ yml_other_set()
|
||||
end
|
||||
Value_3.each{|x|
|
||||
if ${10} != 1 then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
if x =~ /(^GEOSITE,|^AND,|^OR,|^NOT,|^IP-SUFFIX,|^SRC-IP-SUFFIX,|^IN-TYPE,|PORT,[0-9]+\/+|PORT,[0-9]+-+)/ or x.split(',')[-1] == 'tcp' or x.split(',')[-1] == 'udp' then
|
||||
puts '${LOGTIME} Warning: Skip the Custom Rule that Core not Support【' + x + '】'
|
||||
next
|
||||
end;
|
||||
@ -794,6 +794,7 @@ yml_other_rules_get()
|
||||
config_get "Netease_Music" "$section" "Netease_Music" ""
|
||||
config_get "Speedtest" "$section" "Speedtest" ""
|
||||
config_get "Telegram" "$section" "Telegram" ""
|
||||
config_get "Crypto" "$section" "Crypto" "$Proxy"
|
||||
config_get "Microsoft" "$section" "Microsoft" ""
|
||||
config_get "PayPal" "$section" "PayPal" ""
|
||||
config_get "Domestic" "$section" "Domestic" ""
|
||||
@ -854,6 +855,7 @@ if [ "$1" != "0" ]; then
|
||||
|| [ -z "$(grep -F "$AdBlock" /tmp/Proxy_Group)" ]\
|
||||
|| [ -z "$(grep -F "$Speedtest" /tmp/Proxy_Group)" ]\
|
||||
|| [ -z "$(grep -F "$Telegram" /tmp/Proxy_Group)" ]\
|
||||
|| [ -z "$(grep -F "$Crypto" /tmp/Proxy_Group)" ]\
|
||||
|| [ -z "$(grep -F "$Douyin" /tmp/Proxy_Group)" ]\
|
||||
|| [ -z "$(grep -F "$Microsoft" /tmp/Proxy_Group)" ]\
|
||||
|| [ -z "$(grep -F "$PayPal" /tmp/Proxy_Group)" ]\
|
||||
@ -912,6 +914,7 @@ if [ "$1" != "0" ]; then
|
||||
.gsub(/,AdBlock$/, ',$AdBlock#d')
|
||||
.gsub(/,Speedtest$/, ',$Speedtest#d')
|
||||
.gsub(/,Telegram$/, ',$Telegram#d')
|
||||
.gsub(/,Crypto$/, ',$Crypto#d')
|
||||
.gsub(/,Microsoft$/, ',$Microsoft#d')
|
||||
.to_s.gsub(/,PayPal$/, ',$PayPal#d')
|
||||
.gsub(/,Domestic$/, ',$Domestic#d')
|
||||
@ -940,6 +943,7 @@ if [ "$1" != "0" ]; then
|
||||
.gsub!(/: \"AdBlock\"/,': \"$AdBlock#d\"')
|
||||
.gsub!(/: \"Speedtest\"/,': \"$Speedtest#d\"')
|
||||
.gsub!(/: \"Telegram\"/,': \"$Telegram#d\"')
|
||||
.gsub!(/: \"Crypto\"/,': \"$Crypto#d\"')
|
||||
.gsub!(/: \"Microsoft\"/,': \"$Microsoft#d\"')
|
||||
.gsub!(/: \"PayPal\"/,': \"$PayPal#d\"')
|
||||
.gsub!(/: \"Domestic\"/,': \"$Domestic#d\"')
|
||||
|
@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="186" height="20" role="img" aria-label="Current Version: v0.45.30-beta"><title>Current Version: v0.45.30-beta</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="186" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="97" height="20" fill="#555"/><rect x="97" width="89" height="20" fill="#007ec6"/><rect width="186" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="495" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="870">Current Version</text><text x="495" y="140" transform="scale(.1)" fill="#fff" textLength="870">Current Version</text><text aria-hidden="true" x="1405" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="790">v0.45.30-beta</text><text x="1405" y="140" transform="scale(.1)" fill="#fff" textLength="790">v0.45.30-beta</text></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="186" height="20" role="img" aria-label="Current Version: v0.45.33-beta"><title>Current Version: v0.45.33-beta</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="186" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="97" height="20" fill="#555"/><rect x="97" width="89" height="20" fill="#007ec6"/><rect width="186" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="495" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="870">Current Version</text><text x="495" y="140" transform="scale(.1)" fill="#fff" textLength="870">Current Version</text><text aria-hidden="true" x="1405" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="790">v0.45.33-beta</text><text x="1405" y="140" transform="scale(.1)" fill="#fff" textLength="790">v0.45.33-beta</text></g></svg>
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@ -10,9 +10,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/SagerNet/v2ray-core.git
|
||||
PKG_SOURCE_DATE:=2022-06-14
|
||||
PKG_SOURCE_VERSION:=eb9f1a689e37c9577825165d50d562c2e7747f2a
|
||||
PKG_MIRROR_HASH:=9cc7b4a5b2830ac72510c519f59e83e902347965fcfa57ed7cad0b43dfd80cab
|
||||
PKG_SOURCE_DATE:=2022-06-16
|
||||
PKG_SOURCE_VERSION:=13c46a76b8fcae7b2e85a769eff153789056010e
|
||||
PKG_MIRROR_HASH:=555027a6982103af6b3028d8fb99be6433ffde5781fd39907f57e244d82080b4
|
||||
PKG_VERSION:=$(BASE_VERSION)-$(PKG_SOURCE_DATE)-$(call version_abbrev,$(PKG_SOURCE_VERSION))
|
||||
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
|
@ -40,7 +40,7 @@ go get github.com/Dreamacro/clash/transport/simple-obfs
|
||||
+github.com/sagernet/clash v1.10.7-0.20220610080510-ac56b2a05ded/go.mod h1:qrmVDeYq4Gr8SiGuxVoA4cc4xhq7TNgnLa76AANNYRA=
|
||||
github.com/sagernet/gvisor v0.0.0-20220402114650-763d12dc953e h1:Y4avBAtZ59OWvLl6zP9sF62jtMEVRPIH78IQctq9aXQ=
|
||||
github.com/sagernet/gvisor v0.0.0-20220402114650-763d12dc953e/go.mod h1:tWwEcFvJavs154OdjFCw78axNrsDlz4Zh8jvPqwcpGI=
|
||||
github.com/sagernet/sing v0.0.0-20220614091938-64835a637bdc h1:AdNTzzSw6SCZI71GB+Am7cr+oUDUrBUaOi17FxDtNMw=
|
||||
github.com/sagernet/sing v0.0.0-20220616051325-90beb46c6d22 h1:9qQB2pN/p6jI8vrCEy/KOvjuvEgoaz6QNIX7BgPhwSw=
|
||||
@@ -394,6 +396,8 @@ github.com/shurcooL/sanitized_anchor_nam
|
||||
github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4=
|
||||
github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw=
|
||||
|
Loading…
Reference in New Issue
Block a user