Add Clash Dashboard
This commit is contained in:
parent
5702267e22
commit
88468907db
22
README.md
22
README.md
|
@ -73,6 +73,7 @@ https_proxy=http://127.0.0.1:7890
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 停止程序
|
### 停止程序
|
||||||
|
|
||||||
- 进入项目目录
|
- 进入项目目录
|
||||||
|
@ -99,6 +100,27 @@ $ unset https_proxy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Clash Dashboard
|
||||||
|
|
||||||
|
- 访问 Clash Dashboard
|
||||||
|
|
||||||
|
通过浏览器访问 `start.sh` 执行成功后输出的地址,例如:http://192.168.0.1:9090/ui
|
||||||
|
|
||||||
|
- 登录管理界面
|
||||||
|
|
||||||
|
在`API Base URL`一栏中输入:http://IP:9090 ,在`Secret(optional)`一栏中输入启动成功后输出的Secret。
|
||||||
|
|
||||||
|
点击Add并选择刚刚输入的管理界面地址,之后便可在浏览器上进行一些配置。
|
||||||
|
|
||||||
|
- 更多教程
|
||||||
|
|
||||||
|
此 Clash Dashboard 使用的是[yacd](https://github.com/haishanh/yacd)项目,详细使用方法请移步到yacd上查询。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 使用须知
|
# 使用须知
|
||||||
|
|
||||||
- 此项目不提供任何订阅信息,请自行准备Clash订阅地址。
|
- 此项目不提供任何订阅信息,请自行准备Clash订阅地址。
|
||||||
|
|
1
dashboard/public/CNAME
Normal file
1
dashboard/public/CNAME
Normal file
|
@ -0,0 +1 @@
|
||||||
|
yacd.haishan.me
|
12
dashboard/public/_headers
Normal file
12
dashboard/public/_headers
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# for netlify hosting
|
||||||
|
# https://docs.netlify.com/routing/headers/#syntax-for-the-headers-file
|
||||||
|
|
||||||
|
/*
|
||||||
|
X-Frame-Options: DENY
|
||||||
|
X-XSS-Protection: 1; mode=block
|
||||||
|
X-Content-Type-Options: nosniff
|
||||||
|
Referrer-Policy: same-origin
|
||||||
|
/*.css
|
||||||
|
Cache-Control: public, max-age=31536000, immutable
|
||||||
|
/*.js
|
||||||
|
Cache-Control: public, max-age=31536000, immutable
|
BIN
dashboard/public/apple-touch-icon-precomposed.png
Normal file
BIN
dashboard/public/apple-touch-icon-precomposed.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.7 KiB |
9
dashboard/public/assets/Chart.min.44f6c6c6.js
Normal file
9
dashboard/public/assets/Chart.min.44f6c6c6.js
Normal file
File diff suppressed because one or more lines are too long
1
dashboard/public/assets/Config.029b666f.js
Normal file
1
dashboard/public/assets/Config.029b666f.js
Normal file
File diff suppressed because one or more lines are too long
1
dashboard/public/assets/Config.af7c0f33.css
Normal file
1
dashboard/public/assets/Config.af7c0f33.css
Normal file
|
@ -0,0 +1 @@
|
||||||
|
._root_1tdl3_1,._section_1tdl3_2{display:grid;grid-template-columns:repeat(auto-fill,minmax(345px,1fr));max-width:900px;gap:5px}@media screen and (min-width: 30em){._root_1tdl3_1,._section_1tdl3_2{gap:15px}}._root_1tdl3_1,._section_1tdl3_2{padding:6px 15px 10px}@media screen and (min-width: 30em){._root_1tdl3_1,._section_1tdl3_2{padding:10px 40px 15px}}._wrapSwitch_1tdl3_26{height:40px;display:flex;align-items:center}._sep_1tdl3_32{max-width:900px;padding:0 15px}@media screen and (min-width: 30em){._sep_1tdl3_32{padding:0 40px}}._sep_1tdl3_32>div{border-top:1px dashed #373737}._label_1tdl3_45{padding:11px 0}._fieldset_1ghjp_1{margin:0;padding:0;border:0;display:flex;flex-wrap:wrap}._input_1ghjp_9+._cnt_1ghjp_9{border:1px solid transparent;border-radius:8px;cursor:pointer;margin-right:5px;margin-bottom:5px}._input_1ghjp_9:focus+._cnt_1ghjp_9,._input_1ghjp_9:checked+._cnt_1ghjp_9{border-color:#387cec}
|
1
dashboard/public/assets/Connections.52bc9670.js
Normal file
1
dashboard/public/assets/Connections.52bc9670.js
Normal file
File diff suppressed because one or more lines are too long
1
dashboard/public/assets/Connections.9de0e2a6.css
Normal file
1
dashboard/public/assets/Connections.9de0e2a6.css
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.react-tabs{-webkit-tap-highlight-color:transparent}.react-tabs__tab-list{margin:0 0 10px;padding:0 30px}.react-tabs__tab{display:inline-flex;align-items:center;border:1px solid transparent;border-radius:5px;bottom:-1px;position:relative;list-style:none;padding:6px 10px;cursor:pointer;font-size:1.2em;opacity:.5}.react-tabs__tab--selected{opacity:1}.react-tabs__tab--disabled{color:GrayText;cursor:default}.react-tabs__tab:focus{border-color:#0188fe;outline:none}.react-tabs__tab:focus:after{content:"";position:absolute}.react-tabs__tab-panel{display:none}.react-tabs__tab-panel--selected{display:block}._placeHolder_12xws_1{height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-background);opacity:.1}._connQty_12xws_10{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}._inputWrapper_12xws_22{margin:0 30px;width:100%;max-width:350px;justify-self:flex-end}._input_12xws_22{-webkit-appearance:none;background-color:var(--color-input-bg);background-image:none;border-radius:18px;border:1px solid var(--color-input-border);box-sizing:border-box;color:#c1c1c1;display:inline-block;font-size:inherit;height:36px;outline:none;padding:0 15px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}._tr_198pq_1{display:grid;grid-template-columns:repeat(11,minmax(-webkit-max-content,auto));grid-template-columns:repeat(11,minmax(max-content,auto))}._th_198pq_7{padding:8px 10px;height:50px;background:var(--color-background);position:-webkit-sticky;position:sticky;top:0;font-size:.8em;text-align:center;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:space-between}._th_198pq_7:hover{color:var(--color-text-highlight)}._td_198pq_24{padding:8px 13px;font-size:.9em;font-family:var(--font-normal)}._td_198pq_24._odd_198pq_30{background:var(--color-row-odd)}._du_198pq_35{text-align:right}._sortIconContainer_198pq_39{display:inline-flex;margin-left:10px;width:16px;height:16px}._rotate180_198pq_46{transform:rotate(180deg)}._overlay_148w6_1{background-color:#0009}._cnt_148w6_5{background-color:var(--bg-modal);color:var(--color-text);max-width:300px;line-height:1.4;transform:translate(-50%,-50%) scale(1.2);opacity:.6;transition:all .3s ease}._afterOpen_148w6_15{opacity:1;transform:translate(-50%,-50%) scale(1)}._btngrp_148w6_20{display:flex;align-items:center;justify-content:center;margin-top:30px}
|
1
dashboard/public/assets/Fab.200e0680.css
Normal file
1
dashboard/public/assets/Fab.200e0680.css
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.rtf{box-sizing:border-box;margin:25px;position:fixed;white-space:nowrap;z-index:9998;padding-left:0;list-style:none}.rtf.open .rtf--mb{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.rtf.open .rtf--mb>ul{list-style:none;margin:0;padding:0}.rtf.open .rtf--ab__c:hover>span,.rtf.open .rtf--ab__c>span.always-show{transition:ease-in-out opacity .2s;opacity:.9}.rtf.open .rtf--ab__c:nth-child(1){transform:translateY(-60px) scale(1);transition-delay:.03s}.rtf.open .rtf--ab__c:nth-child(1).top{transform:translateY(60px) scale(1)}.rtf.open .rtf--ab__c:nth-child(2){transform:translateY(-120px) scale(1);transition-delay:.09s}.rtf.open .rtf--ab__c:nth-child(2).top{transform:translateY(120px) scale(1)}.rtf.open .rtf--ab__c:nth-child(3){transform:translateY(-180px) scale(1);transition-delay:.12s}.rtf.open .rtf--ab__c:nth-child(3).top{transform:translateY(180px) scale(1)}.rtf.open .rtf--ab__c:nth-child(4){transform:translateY(-240px) scale(1);transition-delay:.15s}.rtf.open .rtf--ab__c:nth-child(4).top{transform:translateY(240px) scale(1)}.rtf.open .rtf--ab__c:nth-child(5){transform:translateY(-300px) scale(1);transition-delay:.18s}.rtf.open .rtf--ab__c:nth-child(5).top{transform:translateY(300px) scale(1)}.rtf.open .rtf--ab__c:nth-child(6){transform:translateY(-360px) scale(1);transition-delay:.21s}.rtf.open .rtf--ab__c:nth-child(6).top{transform:translateY(360px) scale(1)}.rtf--mb__c{padding:25px;margin:-25px}.rtf--mb__c *:last-child{margin-bottom:0}.rtf--mb__c:hover>span,.rtf--mb__c>span.always-show{transition:ease-in-out opacity .2s;opacity:.9}.rtf--mb__c>span{opacity:0;transition:ease-in-out opacity .2s;position:absolute;top:50%;transform:translateY(-50%);margin-right:6px;margin-left:4px;background:rgba(0,0,0,.75);padding:2px 4px;border-radius:2px;color:#fff;font-size:13px;box-shadow:0 0 4px #00000024,0 4px 8px #00000047}.rtf--mb__c>span.right{right:100%}.rtf--mb{width:48px;height:48px;background:var(--btn-bg);z-index:9999;display:inline-flex;justify-content:center;align-items:center;position:relative;border:none;border-radius:50%;box-shadow:0 0 4px #00000024,0 4px 8px #00000047;cursor:pointer;outline:none;padding:0;-webkit-user-drag:none;font-weight:bold;color:#f1f1f1;font-size:18px}.rtf--mb>*{transition:ease-in-out transform .2s}.rtf--ab__c{display:block;position:absolute;top:0;right:1px;padding:10px 0;margin:-10px 0;transition:ease-in-out transform .2s}.rtf--ab__c>span{opacity:0;transition:ease-in-out opacity .2s;position:absolute;top:50%;transform:translateY(-50%);margin-right:6px;background:rgba(0,0,0,.75);padding:2px 4px;border-radius:2px;color:#fff;font-size:13px;box-shadow:0 0 4px #00000024,0 4px 8px #00000047}.rtf--ab__c>span.right{right:100%}.rtf--ab__c:nth-child(1){transform:translateY(-60px) scale(0);transition-delay:.21s}.rtf--ab__c:nth-child(1).top{transform:translateY(60px) scale(0)}.rtf--ab__c:nth-child(2){transform:translateY(-120px) scale(0);transition-delay:.18s}.rtf--ab__c:nth-child(2).top{transform:translateY(120px) scale(0)}.rtf--ab__c:nth-child(3){transform:translateY(-180px) scale(0);transition-delay:.15s}.rtf--ab__c:nth-child(3).top{transform:translateY(180px) scale(0)}.rtf--ab__c:nth-child(4){transform:translateY(-240px) scale(0);transition-delay:.12s}.rtf--ab__c:nth-child(4).top{transform:translateY(240px) scale(0)}.rtf--ab__c:nth-child(5){transform:translateY(-300px) scale(0);transition-delay:.09s}.rtf--ab__c:nth-child(5).top{transform:translateY(300px) scale(0)}.rtf--ab__c:nth-child(6){transform:translateY(-360px) scale(0);transition-delay:.03s}.rtf--ab__c:nth-child(6).top{transform:translateY(360px) scale(0)}.rtf--ab{height:40px;width:40px;margin-right:4px;background-color:#aaa;display:inline-flex;justify-content:center;align-items:center;position:relative;border:none;border-radius:50%;box-shadow:0 0 4px #00000024,0 4px 8px #00000047;cursor:pointer;outline:none;padding:0;-webkit-user-drag:none;font-weight:bold;color:#f1f1f1;font-size:16px;z-index:10000}.rtf--ab:hover{background:#387cec;border:1px solid #387cec;color:#fff}.rtf--ab:focus{border-color:var(--color-focus-blue)}._spining_4i8sg_1{position:relative;border-radius:50%;background:linear-gradient(60deg,#e66465,#9198e5);width:48px;height:48px;display:flex;justify-content:center;align-items:center}._spining_4i8sg_1:before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:_spining_keyframes_4i8sg_1 1s linear infinite}@keyframes _spining_keyframes_4i8sg_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
|
1
dashboard/public/assets/Fab.4dc9cb99.js
Normal file
1
dashboard/public/assets/Fab.4dc9cb99.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
var j=Object.defineProperty,A=Object.defineProperties;var B=Object.getOwnPropertyDescriptors;var p=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable;var N=(e,t,s)=>t in e?j(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,o=(e,t)=>{for(var s in t||(t={}))_.call(t,s)&&N(e,s,t[s]);if(p)for(var s of p(t))k.call(t,s)&&N(e,s,t[s]);return e},d=(e,t)=>A(e,B(t));var c=(e,t)=>{var s={};for(var n in e)_.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(e!=null&&p)for(var n of p(e))t.indexOf(n)<0&&k.call(e,n)&&(s[n]=e[n]);return s};import{r,j as H}from"./vendor.38e754a4.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:e}){return r.exports.createElement("span",{className:V.spining},e)}const P={right:10,bottom:10},Q=s=>{var n=s,{children:e}=n,t=c(n,["children"]);return r.exports.createElement("button",d(o({type:"button"},t),{className:"rtf--ab"}),e)},w=s=>{var n=s,{children:e}=n,t=c(n,["children"]);return r.exports.createElement("button",o({type:"button",className:"rtf--mb"},t),e)},z={bottom:24,right:24},S=D=>{var g=D,{event:e="hover",style:t=z,alwaysShowTitle:s=!1,children:n,icon:$,mainButtonStyles:h,onClick:b,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=()=>e==="hover"&&x(),I=()=>e==="hover"&&E(),y=a=>b?b(a):(a.persist(),e==="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 t?"top":""}`},r.exports.cloneElement(a,d(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 t?"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:t},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 t?"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};
|
1
dashboard/public/assets/Logs.01e28256.js
Normal file
1
dashboard/public/assets/Logs.01e28256.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
var b=Object.defineProperty,T=Object.defineProperties;var C=Object.getOwnPropertyDescriptors;var E=Object.getOwnPropertySymbols;var P=Object.prototype.hasOwnProperty,y=Object.prototype.propertyIsEnumerable;var v=(e,t,a)=>t in e?b(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,u=(e,t)=>{for(var a in t||(t={}))P.call(t,a)&&v(e,a,t[a]);if(E)for(var a of E(t))y.call(t,a)&&v(e,a,t[a]);return e},x=(e,t)=>T(e,C(t));import{r as o,R as l,K as L,k as N,P as W,D as I,j,g as k}from"./vendor.38e754a4.js";import{a as w,F as z}from"./index.esm.edbe839b.js";import{r as F,s as D,f as M}from"./logs.4dcb9935.js";import{c as f,w as A,x as H,k as $,y as B,C as K,S as V,z as q,A as Y,g as G,D as J}from"./index.ee5bc09a.js";import{d as O}from"./debounce.76599460.js";import{u as Q}from"./useRemainingViewPortHeight.7baef998.js";import{F as U,p as X}from"./Fab.4dc9cb99.js";const Z="_RuleSearch_1gcst_1",ee="_RuleSearchContainer_1gcst_5",te="_inputWrapper_1gcst_10",ae="_input_1gcst_10",oe="_iconWrapper_1gcst_35";var p={RuleSearch:Z,RuleSearchContainer:ee,inputWrapper:te,input:ae,iconWrapper:oe};function se({dispatch:e,searchText:t,updateSearchText:a}){const[s,r]=o.exports.useState(t),i=o.exports.useCallback(c=>{e(a(c))},[e,a]),d=o.exports.useMemo(()=>O(i,300),[i]),g=c=>{r(c.target.value),d(c.target.value)};return l.createElement("div",{className:p.RuleSearch},l.createElement("div",{className:p.RuleSearchContainer},l.createElement("div",{className:p.inputWrapper},l.createElement("input",{type:"text",value:s,onChange:g,className:p.input})),l.createElement("div",{className:p.iconWrapper},l.createElement(L,{size:20}))))}const re=e=>({searchText:A(e),updateSearchText:H});var ne=f(re)(se);const ce="_logMeta_1dg5t_1",le="_logType_1dg5t_8",ie="_logTime_1dg5t_18",pe="_logText_1dg5t_24",ge="_logsWrapper_1dg5t_37",me="_logPlaceholder_1dg5t_51",ue="_logPlaceholderIcon_1dg5t_64";var n={logMeta:ce,logType:le,logTime:ie,logText:pe,logsWrapper:ge,logPlaceholder:me,logPlaceholderIcon:ue};const{useCallback:S,memo:de,useEffect:xe}=j,h=30,he={debug:"#28792c",info:"var(--bg-log-info-tag)",warning:"#b99105",error:"#c11c1c"};function _e({time:e,even:t,payload:a,type:s}){const r=k({even:t},"log");return o.exports.createElement("div",{className:r},o.exports.createElement("div",{className:n.logMeta},o.exports.createElement("div",{className:n.logTime},e),o.exports.createElement("div",{className:n.logType,style:{backgroundColor:he[s]}},s),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 s=a[e];return o.exports.createElement("div",{style:t},o.exports.createElement(_e,u({},s)))},w);function fe({dispatch:e,logLevel:t,apiConfig:a,logs:s,logStreamingPaused:r}){const i=$(),d=S(()=>{r?F(x(u({},a),{logLevel:t})):D(),i.app.updateAppConfig("logStreamingPaused",!r)},[a,t,r,i.app]),g=S(R=>e(B(R)),[e]);xe(()=>{M(x(u({},a),{logLevel:t}),g)},[a,t,g]);const[c,_]=Q(),{t:m}=N();return o.exports.createElement("div",null,o.exports.createElement(K,{title:m("Logs")}),o.exports.createElement(ne,null),o.exports.createElement("div",{ref:c,style:{paddingBottom:h}},s.length===0?o.exports.createElement("div",{className:n.logPlaceholder,style:{height:_-h}},o.exports.createElement("div",{className:n.logPlaceholderIcon},o.exports.createElement(V,{width:200,height:200})),o.exports.createElement("div",null,m("no_logs"))):o.exports.createElement("div",{className:n.logsWrapper},o.exports.createElement(z,{height:_-h,width:"100%",itemCount:s.length,itemSize:80,itemData:s,itemKey:Ee},ve),o.exports.createElement(U,{icon:r?o.exports.createElement(W,{size:16}):o.exports.createElement(I,{size:16}),mainButtonStyles:r?{background:"#e74c3c"}:{},style:X,text:m(r?"Resume Refresh":"Pause Refresh"),onClick:d}))))}const Se=e=>({logs:q(e),logLevel:Y(e),apiConfig:G(e),logStreamingPaused:J(e)});var We=f(Se)(fe);export{We as default};
|
1
dashboard/public/assets/Logs.8b54b7be.css
Normal file
1
dashboard/public/assets/Logs.8b54b7be.css
Normal file
|
@ -0,0 +1 @@
|
||||||
|
._RuleSearch_1gcst_1{padding:0 40px 5px}._RuleSearchContainer_1gcst_5{position:relative;height:40px}._inputWrapper_1gcst_10{position:absolute;top:50%;transform:translateY(-50%);left:0;width:100%}._input_1gcst_10{-webkit-appearance:none;background-color:var(--color-input-bg);background-image:none;border-radius:20px;border:1px solid var(--color-input-border);box-sizing:border-box;color:#c1c1c1;display:inline-block;font-size:inherit;height:40px;outline:none;padding:0 15px 0 35px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}._iconWrapper_1gcst_35{position:absolute;top:50%;transform:translateY(-50%);left:10px}._logMeta_1dg5t_1{display:flex;align-items:center;flex-wrap:wrap;font-size:.9em}._logType_1dg5t_8{color:#eee;flex-shrink:0;text-align:center;width:66px;border-radius:100px;padding:3px 5px;margin:0 8px}._logTime_1dg5t_18{flex-shrink:0;color:#999;font-size:14px}._logText_1dg5t_24{flex-shrink:0;display:flex;font-family:"Roboto Mono",Menlo,monospace;align-items:center;padding:8px 0;width:100%;white-space:pre;overflow:auto}._logsWrapper_1dg5t_37{margin:0;padding:0;color:var(--color-text)}._logsWrapper_1dg5t_37 .log{padding:10px 40px;background:var(--color-background)}._logsWrapper_1dg5t_37 .log.even{background:var(--color-background)}._logPlaceholder_1dg5t_51{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#2d2d30}._logPlaceholder_1dg5t_51 div:nth-child(2){color:var(--color-text-secondary);font-size:1.4em;opacity:.6}._logPlaceholderIcon_1dg5t_64{opacity:.3}
|
1
dashboard/public/assets/Proxies.71af777a.js
Normal file
1
dashboard/public/assets/Proxies.71af777a.js
Normal file
File diff suppressed because one or more lines are too long
1
dashboard/public/assets/Proxies.831754de.css
Normal file
1
dashboard/public/assets/Proxies.831754de.css
Normal file
|
@ -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;transform:rotate(0);transition:transform .3s}._header_1y9js_1 ._arrow_1y9js_8._isOpen_1y9js_13{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:transform .2s ease-in-out;cursor:pointer}._proxy_sq0tg_1._selectable_sq0tg_32:hover{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:transform .1s ease-in-out;cursor:pointer}._proxySmall_sq0tg_68._selectable_sq0tg_32:hover{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 0}._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;transform:translate(-50%,-50%) scale(1.2);box-shadow:#0000001f 0 4px 4px,#0000003d 0 16px 32px}._afterOpen_uuk3b_16{opacity: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
dashboard/public/assets/Rules.a609ca62.css
Normal file
1
dashboard/public/assets/Rules.a609ca62.css
Normal file
|
@ -0,0 +1 @@
|
||||||
|
._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}}
|
1
dashboard/public/assets/Rules.b2ac0faa.js
Normal file
1
dashboard/public/assets/Rules.b2ac0faa.js
Normal file
File diff suppressed because one or more lines are too long
1
dashboard/public/assets/Select.29a5a6ae.js
Normal file
1
dashboard/public/assets/Select.29a5a6ae.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
import{r as t}from"./vendor.38e754a4.js";const o="_select_1mr76_1";var l={select:o};function m({options:r,selected:s,onChange:c}){return t.exports.createElement("select",{className:l.select,value:s,onChange:c},r.map(([e,a])=>t.exports.createElement("option",{key:e,value:e},a)))}export{m as S};
|
1
dashboard/public/assets/Select.9a98fc65.css
Normal file
1
dashboard/public/assets/Select.9a98fc65.css
Normal file
|
@ -0,0 +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)}
|
1
dashboard/public/assets/TextFitler.00e03ee5.css
Normal file
1
dashboard/public/assets/TextFitler.00e03ee5.css
Normal file
|
@ -0,0 +1 @@
|
||||||
|
._rotate_1dspl_1{display:inline-flex}._isRotating_1dspl_5{animation:_rotating_1dspl_1 3s infinite linear;animation-fill-mode:forwards}@keyframes _rotating_1dspl_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._input_16a1f_1{-webkit-appearance:none;background-color:var(--color-input-bg);background-image:none;border-radius:20px;border:1px solid var(--color-input-border);box-sizing:border-box;color:#c1c1c1;display:inline-block;font-size:inherit;outline:none;padding:8px 15px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}._input_16a1f_1:focus{border:1px solid var(--color-focus-blue)}
|
1
dashboard/public/assets/TextFitler.cc7f7fa3.js
Normal file
1
dashboard/public/assets/TextFitler.cc7f7fa3.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
import{g as i,r as n,O as l,N as u,j as p}from"./vendor.38e754a4.js";import{d as x}from"./debounce.76599460.js";const _="_rotate_1dspl_1",g="_isRotating_1dspl_5",d="_rotating_1dspl_1";var r={rotate:_,isRotating:g,rotating:d};function E({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:m,useState:R,useMemo:f}=p;function h(t){const[,e]=u(t),[a,c]=R(""),o=f(()=>x(e,300),[e]);return[m(s=>{c(s.target.value),o(s.target.value)},[o]),a]}const v="_input_16a1f_1";var T={input:v};function N(t){const[e,a]=h(t.textAtom);return n.exports.createElement("input",{className:T.input,type:"text",value:a,onChange:e,placeholder:t.placeholder})}export{E as R,N as T};
|
1
dashboard/public/assets/debounce.76599460.js
Normal file
1
dashboard/public/assets/debounce.76599460.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
function p(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}var M=typeof global=="object"&&global&&global.Object===Object&&global,R=M,w=typeof self=="object"&&self&&self.Object===Object&&self,B=R||w||Function("return this")(),$=B,F=function(){return $.Date.now()},S=F,G=/\s/;function U(e){for(var n=e.length;n--&&G.test(e.charAt(n)););return n}var _=/^\s+/;function D(e){return e&&e.slice(0,U(e)+1).replace(_,"")}var H=$.Symbol,y=H,E=Object.prototype,X=E.hasOwnProperty,q=E.toString,g=y?y.toStringTag:void 0;function z(e){var n=X.call(e,g),i=e[g];try{e[g]=void 0;var o=!0}catch{}var f=q.call(e);return o&&(n?e[g]=i:delete e[g]),f}var J=Object.prototype,K=J.toString;function Q(e){return K.call(e)}var V="[object Null]",Y="[object Undefined]",k=y?y.toStringTag:void 0;function Z(e){return e==null?e===void 0?Y:V:k&&k in Object(e)?z(e):Q(e)}function ee(e){return e!=null&&typeof e=="object"}var ne="[object Symbol]";function te(e){return typeof e=="symbol"||ee(e)&&Z(e)==ne}var W=0/0,re=/^[-+]0x[0-9a-f]+$/i,ie=/^0b[01]+$/i,oe=/^0o[0-7]+$/i,ae=parseInt;function L(e){if(typeof e=="number")return e;if(te(e))return W;if(p(e)){var n=typeof e.valueOf=="function"?e.valueOf():e;e=p(n)?n+"":n}if(typeof e!="string")return e===0?e:+e;e=D(e);var i=ie.test(e);return i||oe.test(e)?ae(e.slice(2),i?2:8):re.test(e)?W:+e}var fe="Expected a function",ce=Math.max,ue=Math.min;function se(e,n,i){var o,f,s,u,r,c,d=0,O=!1,l=!1,T=!0;if(typeof e!="function")throw new TypeError(fe);n=L(n)||0,p(i)&&(O=!!i.leading,l="maxWait"in i,s=l?ce(L(i.maxWait)||0,n):s,T="trailing"in i?!!i.trailing:T);function j(t){var a=o,b=f;return o=f=void 0,d=t,u=e.apply(b,a),u}function N(t){return d=t,r=setTimeout(m,n),O?j(t):u}function P(t){var a=t-c,b=t-d,I=n-a;return l?ue(I,s-b):I}function h(t){var a=t-c,b=t-d;return c===void 0||a>=n||a<0||l&&b>=s}function m(){var t=S();if(h(t))return x(t);r=setTimeout(m,P(t))}function x(t){return r=void 0,T&&o?j(t):(o=f=void 0,u)}function A(){r!==void 0&&clearTimeout(r),d=0,o=c=f=r=void 0}function C(){return r===void 0?u:x(S())}function v(){var t=S(),a=h(t);if(o=arguments,f=this,c=t,a){if(r===void 0)return N(c);if(l)return clearTimeout(r),r=setTimeout(m,n),j(c)}return r===void 0&&(r=setTimeout(m,n)),u}return v.cancel=A,v.flush=C,v}export{se as d};
|
1
dashboard/public/assets/en.f1dd5536.js
Normal file
1
dashboard/public/assets/en.f1dd5536.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
const e={Overview:"Overview",Proxies:"Proxies",Rules:"Rules",Conns:"Conns",Config:"Config",Logs:"Logs",Upload:"Upload",Download:"Download","Upload Total":"Upload Total","Download Total":"Download Total","Active Connections":"Active Connections","Pause Refresh":"Pause Refresh","Resume Refresh":"Resume Refresh",Up:"Up",Down:"Down","Test Latency":"Test Latency",settings:"settings",sort_in_grp:"Sorting in group",hide_unavail_proxies:"Hide unavailable proxies",auto_close_conns:"Automatically close old connections",order_natural:"Original order in config file",order_latency_asc:"By latency from small to big",order_latency_desc:"By latency from big to small",order_name_asc:"By name alphabetically (A-Z)",order_name_desc:"By name alphabetically (Z-A)",Connections:"Connections",Active:"Active",Closed:"Closed",theme:"theme",about:"about",no_logs:"No logs yet, hang tight...",chart_style:"Chart Style",latency_test_url:"Latency Test URL",lang:"Language",update_all_rule_provider:"Update all rule providers",update_all_proxy_provider:"Update all proxy providers"};export{e as data};
|
1
dashboard/public/assets/index.9233837d.js
Normal file
1
dashboard/public/assets/index.9233837d.js
Normal file
File diff suppressed because one or more lines are too long
1
dashboard/public/assets/index.a628dc5e.css
Normal file
1
dashboard/public/assets/index.a628dc5e.css
Normal file
File diff suppressed because one or more lines are too long
2
dashboard/public/assets/index.ee5bc09a.js
Normal file
2
dashboard/public/assets/index.ee5bc09a.js
Normal file
File diff suppressed because one or more lines are too long
1
dashboard/public/assets/index.esm.edbe839b.js
Normal file
1
dashboard/public/assets/index.esm.edbe839b.js
Normal file
File diff suppressed because one or more lines are too long
27
dashboard/public/assets/index.fe1062b5.js
Normal file
27
dashboard/public/assets/index.fe1062b5.js
Normal file
File diff suppressed because one or more lines are too long
2
dashboard/public/assets/logs.4dcb9935.js
Normal file
2
dashboard/public/assets/logs.4dcb9935.js
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
var x=Object.defineProperty,C=Object.defineProperties;var E=Object.getOwnPropertyDescriptors;var h=Object.getOwnPropertySymbols;var j=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable;var v=(e,t,n)=>t in e?x(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,p=(e,t)=>{for(var n in t||(t={}))j.call(t,n)&&v(e,n,t[n]);if(h)for(var n of h(t))A.call(t,n)&&v(e,n,t[n]);return e},w=(e,t)=>C(e,E(t));import{r as F,t as H,v as a}from"./index.ee5bc09a.js";var D;(function(e){e[e.Connecting=0]="Connecting",e[e.Open=1]="Open",e[e.Closing=2]="Closing",e[e.Closed=3]="Closed"})(D||(D={}));const L="/logs",J=new TextDecoder("utf-8"),N=()=>Math.floor((1+Math.random())*65536).toString(16);let M=!1,i=!1,f="",s,d;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=T(r);n.time=l,n.id=+r-0+N(),n.even=M=!M,t(n)}function T(e){const t=e.getFullYear()%100,n=a(e.getMonth()+1,2),r=a(e.getDate(),2),l=a(e.getHours(),2),o=a(e.getMinutes(),2),c=a(e.getSeconds(),2);return`${t}-${n}-${r} ${l}:${o}:${c}`}function O(e,t){return e.read().then(({done:n,value:r})=>{f+=J.decode(r,{stream:!n});const o=f.split(`
|
||||||
|
`),c=o[o.length-1];for(let g=0;g<o.length-1;g++)m(o[g],t);if(n){m(c,t),f="",console.log("GET /logs streaming done"),i=!1;return}else f=c;return O(e,t)})}function $(e){const t=Object.keys(e);return t.sort(),t.map(n=>e[n]).join("|")}let b,u;function Y(e,t){if(e.logLevel==="uninit"||i||s&&s.readyState===1)return;d=t;const n=F(e,L);s=new WebSocket(n),s.addEventListener("error",()=>{G(e,t)}),s.addEventListener("message",function(r){m(r.data,t)})}function q(){s.close(),u&&u.abort()}function z(e){!d||!s||(s.close(),i=!1,Y(e,d))}function G(e,t){if(u&&$(e)!==b)u.abort();else if(i)return;i=!0,b=$(e),u=new AbortController;const n=u.signal,{url:r,init:l}=H(e);fetch(r+L+"?level="+e.logLevel,w(p({},l),{signal:n})).then(o=>{const c=o.body.getReader();O(c,t)},o=>{i=!1,!n.aborted&&console.log("GET /logs error:",o.message)})}export{Y as f,z as r,q as s};
|
Binary file not shown.
BIN
dashboard/public/assets/open-sans-latin-400-normal.d7410996.woff
Normal file
BIN
dashboard/public/assets/open-sans-latin-400-normal.d7410996.woff
Normal file
Binary file not shown.
Binary file not shown.
BIN
dashboard/public/assets/open-sans-latin-700-normal.b1fda8d8.woff
Normal file
BIN
dashboard/public/assets/open-sans-latin-700-normal.b1fda8d8.woff
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
import{j as r}from"./vendor.38e754a4.js";const{useState:s,useRef:a,useCallback:u,useLayoutEffect:c}=r;function g(){const t=a(null),[n,i]=s(200),e=u(()=>{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{g as u};
|
86
dashboard/public/assets/vendor.38e754a4.js
Normal file
86
dashboard/public/assets/vendor.38e754a4.js
Normal file
File diff suppressed because one or more lines are too long
1
dashboard/public/assets/zh.247ad8fa.js
Normal file
1
dashboard/public/assets/zh.247ad8fa.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
const u={Overview:"\u6982\u89C8",Proxies:"\u4EE3\u7406",Rules:"\u89C4\u5219",Conns:"\u8FDE\u63A5",Config:"\u914D\u7F6E",Logs:"\u65E5\u5FD7",Upload:"\u4E0A\u4F20",Download:"\u4E0B\u8F7D","Upload Total":"\u4E0A\u4F20\u603B\u91CF","Download Total":"\u4E0B\u8F7D\u603B\u91CF","Active Connections":"\u6D3B\u52A8\u8FDE\u63A5","Pause Refresh":"\u6682\u505C\u5237\u65B0","Resume Refresh":"\u7EE7\u7EED\u5237\u65B0",Up:"\u4E0A\u4F20",Down:"\u4E0B\u8F7D","Test Latency":"\u5EF6\u8FDF\u6D4B\u901F",settings:"\u8BBE\u7F6E",sort_in_grp:"\u4EE3\u7406\u7EC4\u6761\u76EE\u6392\u5E8F",hide_unavail_proxies:"\u9690\u85CF\u4E0D\u53EF\u7528\u4EE3\u7406",auto_close_conns:"\u5207\u6362\u4EE3\u7406\u65F6\u81EA\u52A8\u65AD\u5F00\u65E7\u8FDE\u63A5",order_natural:"\u539F config \u6587\u4EF6\u4E2D\u7684\u6392\u5E8F",order_latency_asc:"\u6309\u5EF6\u8FDF\u4ECE\u5C0F\u5230\u5927",order_latency_desc:"\u6309\u5EF6\u8FDF\u4ECE\u5927\u5230\u5C0F",order_name_asc:"\u6309\u540D\u79F0\u5B57\u6BCD\u6392\u5E8F (A-Z)",order_name_desc:"\u6309\u540D\u79F0\u5B57\u6BCD\u6392\u5E8F (Z-A)",Connections:"\u8FDE\u63A5",Active:"\u6D3B\u52A8",Closed:"\u5DF2\u65AD\u5F00",theme:"\u4E3B\u9898",about:"\u5173\u4E8E",no_logs:"\u6682\u65E0\u65E5\u5FD7...",chart_style:"\u6D41\u91CF\u56FE\u6837\u5F0F",latency_test_url:"\u5EF6\u8FDF\u6D4B\u901F URL",lang:"\u8BED\u8A00",update_all_rule_provider:"\u66F4\u65B0\u6240\u6709 rule provider",update_all_proxy_provider:"\u66F4\u65B0\u6240\u6709 proxy providers"};export{u as data};
|
25
dashboard/public/index.html
Normal file
25
dashboard/public/index.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="shortcut icon" href="yacd.ico" />
|
||||||
|
<link rel="icon" type="image/png" sizes="64x64" href="yacd-64.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="128x128" href="yacd-128.png" />
|
||||||
|
<link rel="apple-touch-icon-precomposed" href="apple-touch-icon-precomposed.png" />
|
||||||
|
<meta name="apple-mobile-web-app-title" content="yacd">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<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.ee5bc09a.js"></script>
|
||||||
|
<link rel="modulepreload" href="./assets/vendor.38e754a4.js">
|
||||||
|
<link rel="stylesheet" href="./assets/index.a628dc5e.css">
|
||||||
|
<link rel="manifest" href="./manifest.webmanifest"></head>
|
||||||
|
<body>
|
||||||
|
<div id="app" data-base-url="http://127.0.0.1:9090"></div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
1
dashboard/public/manifest.webmanifest
Normal file
1
dashboard/public/manifest.webmanifest
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"name":"yacd","short_name":"yacd","start_url":"./","display":"standalone","background_color":"#ffffff","lang":"en","scope":"./"}
|
1
dashboard/public/registerSW.js
Normal file
1
dashboard/public/registerSW.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})}
|
2
dashboard/public/sw.js
Normal file
2
dashboard/public/sw.js
Normal file
File diff suppressed because one or more lines are too long
BIN
dashboard/public/yacd-128.png
Normal file
BIN
dashboard/public/yacd-128.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.5 KiB |
BIN
dashboard/public/yacd-64.png
Normal file
BIN
dashboard/public/yacd-64.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
BIN
dashboard/public/yacd.ico
Normal file
BIN
dashboard/public/yacd.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.3 KiB |
13
start.sh
13
start.sh
|
@ -70,6 +70,13 @@ cat $Temp_Dir/templete_config.yaml > $Temp_Dir/config.yaml
|
||||||
cat $Temp_Dir/proxy.txt >> $Temp_Dir/config.yaml
|
cat $Temp_Dir/proxy.txt >> $Temp_Dir/config.yaml
|
||||||
\cp $Temp_Dir/config.yaml $Conf_Dir/
|
\cp $Temp_Dir/config.yaml $Conf_Dir/
|
||||||
|
|
||||||
|
# Configure Clash Dashboard
|
||||||
|
Work_Dir=$(cd $(dirname $0); pwd)
|
||||||
|
Dashboard_Dir="${Work_Dir}/dashboard/public"
|
||||||
|
sed -ri "s@^# external-ui:.*@external-ui: ${Dashboard_Dir}@g" $Conf_Dir/config.yaml
|
||||||
|
# Get RESTful API Secret
|
||||||
|
Secret=`grep '^secret: ' $Conf_Dir/config.yaml | grep -Po "(?<=secret: ').*(?=')"`
|
||||||
|
|
||||||
# 启动Clash服务
|
# 启动Clash服务
|
||||||
Text5="服务启动成功!"
|
Text5="服务启动成功!"
|
||||||
Text6="服务启动失败!"
|
Text6="服务启动失败!"
|
||||||
|
@ -86,6 +93,12 @@ else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Output Dashboard access address and Secret
|
||||||
|
echo ''
|
||||||
|
echo -e "Clash Dashboard 访问地址:http://IP:9090/ui"
|
||||||
|
echo -e "Secret:${Secret}"
|
||||||
|
echo ''
|
||||||
|
|
||||||
# 添加环境变量(root权限)
|
# 添加环境变量(root权限)
|
||||||
echo -e "export http_proxy=http://127.0.0.1:7890\nexport https_proxy=http://127.0.0.1:7890\nexport no_proxy=127.0.0.1,localhost" > /etc/profile.d/clash.sh
|
echo -e "export http_proxy=http://127.0.0.1:7890\nexport https_proxy=http://127.0.0.1:7890\nexport no_proxy=127.0.0.1,localhost" > /etc/profile.d/clash.sh
|
||||||
echo -e "系统代理http_proxy/https_proxy/no_proxy设置成功,请在当前窗口执行以下命令加载环境变量:\n\nsource /etc/profile.d/clash.sh\n"
|
echo -e "系统代理http_proxy/https_proxy/no_proxy设置成功,请在当前窗口执行以下命令加载环境变量:\n\nsource /etc/profile.d/clash.sh\n"
|
||||||
|
|
|
@ -17,7 +17,7 @@ mode: rule
|
||||||
# 5 个级别:silent / info / warning / error / debug。级别越高日志输出量越大,越倾向于调试,若需要请自行开启。
|
# 5 个级别:silent / info / warning / error / debug。级别越高日志输出量越大,越倾向于调试,若需要请自行开启。
|
||||||
log-level: silent
|
log-level: silent
|
||||||
# Clash 的 RESTful API
|
# Clash 的 RESTful API
|
||||||
external-controller: '127.0.0.1:9090'
|
external-controller: '0.0.0.0:9090'
|
||||||
|
|
||||||
# RESTful API 的口令
|
# RESTful API 的口令
|
||||||
secret: 'b&ZlKTte5OnEt2Sn'
|
secret: 'b&ZlKTte5OnEt2Sn'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user