Обновить autoXRAY.sh
This commit is contained in:
+18
-14
@@ -733,10 +733,14 @@ body{font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-seri
|
|||||||
header{text-align:center;padding:40px 0 36px}
|
header{text-align:center;padding:40px 0 36px}
|
||||||
header h1{font-size:22px;font-weight:700;letter-spacing:-.5px;background:linear-gradient(135deg,#c7d2fe,#a5b4fc);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
|
header h1{font-size:22px;font-weight:700;letter-spacing:-.5px;background:linear-gradient(135deg,#c7d2fe,#a5b4fc);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
|
||||||
header p{color:var(--mt);font-size:13px;margin-top:6px}
|
header p{color:var(--mt);font-size:13px;margin-top:6px}
|
||||||
.card{background:var(--sf);border:1px solid var(--bd);border-radius:16px;padding:20px;margin-bottom:12px;transition:border-color .2s,box-shadow .2s}
|
@keyframes fi{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
|
||||||
|
.card{background:var(--sf);border:1px solid var(--bd);border-radius:16px;padding:20px;margin-bottom:12px;transition:border-color .2s,box-shadow .2s;animation:fi .4s ease calc(var(--di,0)*.1s) both}
|
||||||
.card:hover{border-color:#3f3f46;box-shadow:0 0 0 1px #3f3f4640}
|
.card:hover{border-color:#3f3f46;box-shadow:0 0 0 1px #3f3f4640}
|
||||||
|
.card.open{border-color:#4f4f7a;box-shadow:0 0 0 1px rgba(99,102,241,.2)}
|
||||||
.ct{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
|
.ct{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
|
||||||
.badge{font-size:10.5px;font-weight:600;padding:4px 11px;border-radius:20px;background:rgba(99,102,241,.1);color:#a5b4fc;border:1px solid rgba(99,102,241,.2);letter-spacing:.4px;text-transform:uppercase}
|
.badge{font-size:10.5px;font-weight:600;padding:4px 11px;border-radius:20px;letter-spacing:.4px;text-transform:uppercase}
|
||||||
|
.card[data-i="1"] .badge{background:rgba(99,102,241,.1);color:#a5b4fc;border:1px solid rgba(99,102,241,.2)}
|
||||||
|
.card[data-i="2"] .badge{background:rgba(20,184,166,.1);color:#5eead4;border:1px solid rgba(20,184,166,.2)}
|
||||||
.bts{display:flex;gap:7px}
|
.bts{display:flex;gap:7px}
|
||||||
.ib{width:34px;height:34px;border-radius:9px;border:1px solid var(--bd);background:transparent;color:var(--mt);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}
|
.ib{width:34px;height:34px;border-radius:9px;border:1px solid var(--bd);background:transparent;color:var(--mt);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}
|
||||||
.ib:hover{background:#27272a;color:var(--tx);border-color:#3f3f46}
|
.ib:hover{background:#27272a;color:var(--tx);border-color:#3f3f46}
|
||||||
@@ -746,25 +750,25 @@ header p{color:var(--mt);font-size:13px;margin-top:6px}
|
|||||||
.cfg.show{filter:none;user-select:text;pointer-events:auto}
|
.cfg.show{filter:none;user-select:text;pointer-events:auto}
|
||||||
.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:99;justify-content:center;align-items:center;backdrop-filter:blur(8px)}
|
.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:99;justify-content:center;align-items:center;backdrop-filter:blur(8px)}
|
||||||
.modal.on{display:flex}
|
.modal.on{display:flex}
|
||||||
.mbox{background:var(--sf);border:1px solid var(--bd);border-radius:18px;padding:28px 24px;text-align:center}
|
.mbox{background:var(--sf);border:1px solid var(--bd);border-radius:18px;padding:28px 24px;text-align:center;display:flex;flex-direction:column;align-items:center}
|
||||||
|
.qtitle{color:var(--mt);font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;margin-bottom:14px}
|
||||||
#qrc{background:#fff;padding:12px;border-radius:10px;margin-bottom:16px;display:inline-block}
|
#qrc{background:#fff;padding:12px;border-radius:10px;margin-bottom:16px;display:inline-block}
|
||||||
.mc{background:#ef4444;color:#fff;border:none;padding:8px 26px;border-radius:9px;cursor:pointer;font-weight:600;font-size:13px;transition:opacity .15s}
|
.mc{background:#ef4444;color:#fff;border:none;padding:8px 26px;border-radius:9px;cursor:pointer;font-weight:600;font-size:13px;transition:opacity .15s}
|
||||||
.mc:hover{opacity:.85}
|
.mc:hover{opacity:.85}
|
||||||
footer{text-align:center;padding:40px 0 20px;color:var(--mt);font-size:12px}
|
footer{text-align:center;padding:40px 0 20px;color:var(--mt);font-size:12px}
|
||||||
footer a{color:var(--ac);text-decoration:none}
|
footer a{color:var(--ac);text-decoration:none}
|
||||||
@media(max-width:480px){.card{padding:16px}.cfg{font-size:11px}.badge{font-size:10px}}
|
@media(max-width:480px){.card{padding:16px}.cfg{font-size:11px}.badge{font-size:10px}.ib{width:40px;height:40px}}
|
||||||
</style>
|
</style>
|
||||||
<script>
|
<script>
|
||||||
var EO='<svg viewBox="0 0 24 24"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>';
|
var EO='<svg viewBox="0 0 24 24"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>';
|
||||||
var EX='<svg viewBox="0 0 24 24"><path d="M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24"/><line x1="1" y1="1" x2="23" y2="23"/></svg>';
|
var EX='<svg viewBox="0 0 24 24"><path d="M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24"/><line x1="1" y1="1" x2="23" y2="23"/></svg>';
|
||||||
var CP='<svg viewBox="0 0 24 24"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/></svg>';
|
|
||||||
var CK='<svg viewBox="0 0 24 24" stroke-width="2.5"><polyline points="20 6 9 17 4 12"/></svg>';
|
var CK='<svg viewBox="0 0 24 24" stroke-width="2.5"><polyline points="20 6 9 17 4 12"/></svg>';
|
||||||
var QI='<svg viewBox="0 0 24 24"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><path d="M14 14h3v3m3-3v3m0 3h-6m3 0v-3"/></svg>';
|
function toggleVis(id,b){var e=document.getElementById(id),on=e.classList.toggle('show');b.classList.toggle('ok',on);b.innerHTML=on?EX:EO;b.title=on?'Скрыть':'Показать';var c=b.closest('.card');if(c)c.classList.toggle('open',on);}
|
||||||
function toggleVis(id,b){var e=document.getElementById(id),on=e.classList.toggle('show');b.classList.toggle('ok',on);b.innerHTML=on?EX:EO;b.title=on?'Скрыть':'Показать';}
|
function doCopy(id,b){var e=document.getElementById(id),t=e.dataset.v||e.innerText;navigator.clipboard.writeText(t).then(function(){var o=b.innerHTML;b.innerHTML=CK;b.classList.add('ok');setTimeout(function(){b.innerHTML=o;b.classList.remove('ok');},1500);});}
|
||||||
function doCopy(id,b){navigator.clipboard.writeText(document.getElementById(id).innerText).then(function(){var o=b.innerHTML;b.innerHTML=CK;b.classList.add('ok');setTimeout(function(){b.innerHTML=o;b.classList.remove('ok');},1500);});}
|
function doQR(id,title){var e=document.getElementById(id),t=e.dataset.v||e.innerText;document.getElementById('qrc').innerHTML='';document.getElementById('qtitle').innerText=title||'';new QRCode(document.getElementById('qrc'),{text:t,width:240,height:240,colorDark:'#000',colorLight:'#fff',correctLevel:QRCode.CorrectLevel.L});document.getElementById('modal').classList.add('on');}
|
||||||
function doQR(id){var t=document.getElementById(id).innerText;document.getElementById('qrc').innerHTML='';new QRCode(document.getElementById('qrc'),{text:t,width:240,height:240,colorDark:'#000',colorLight:'#fff',correctLevel:QRCode.CorrectLevel.L});document.getElementById('modal').classList.add('on');}
|
|
||||||
function closeModal(){document.getElementById('modal').classList.remove('on');}
|
function closeModal(){document.getElementById('modal').classList.remove('on');}
|
||||||
window.onclick=function(e){if(e.target.id==='modal')closeModal();};
|
window.onclick=function(e){if(e.target.id==='modal')closeModal();};
|
||||||
|
document.addEventListener('keydown',function(e){if(e.key==='Escape')closeModal();});
|
||||||
</script></head><body>
|
</script></head><body>
|
||||||
<div class="w">
|
<div class="w">
|
||||||
<header><h1>autoXRAY</h1><p>Конфигурации прокси-клиента</p></header>
|
<header><h1>autoXRAY</h1><p>Конфигурации прокси-клиента</p></header>
|
||||||
@@ -776,16 +780,16 @@ for item in "${CONFIGS_ARRAY[@]}"; do
|
|||||||
title="${item%%|*}"
|
title="${item%%|*}"
|
||||||
link="${item#*|}"
|
link="${item#*|}"
|
||||||
cat >> "$WEB_PATH/$path_subpage.html" <<CARDEOF
|
cat >> "$WEB_PATH/$path_subpage.html" <<CARDEOF
|
||||||
<div class="card">
|
<div class="card" data-i="${idx}" style="--di:${idx}">
|
||||||
<div class="ct">
|
<div class="ct">
|
||||||
<span class="badge">$title</span>
|
<span class="badge">$title</span>
|
||||||
<div class="bts">
|
<div class="bts">
|
||||||
<button class="ib" title="Показать" onclick="toggleVis('c${idx}',this)"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg></button>
|
<button class="ib" title="Показать" onclick="toggleVis('c${idx}',this)"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg></button>
|
||||||
<button class="ib" title="Копировать" onclick="doCopy('c${idx}',this)"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/></svg></button>
|
<button class="ib" title="Копировать" onclick="doCopy('c${idx}',this)"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/></svg></button>
|
||||||
<button class="ib" title="QR-код" onclick="doQR('c${idx}')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><path d="M14 14h3v3m3-3v3m0 3h-6m3 0v-3"/></svg></button>
|
<button class="ib" title="QR-код" onclick="doQR('c${idx}','$title')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><path d="M14 14h3v3m3-3v3m0 3h-6m3 0v-3"/></svg></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cfg" id="c${idx}">$link</div>
|
<div class="cfg" id="c${idx}" data-v="$link">$link</div>
|
||||||
</div>
|
</div>
|
||||||
CARDEOF
|
CARDEOF
|
||||||
((idx++))
|
((idx++))
|
||||||
@@ -793,9 +797,9 @@ done
|
|||||||
|
|
||||||
# --- ПОДВАЛ И МОДАЛКА ---
|
# --- ПОДВАЛ И МОДАЛКА ---
|
||||||
cat >> "$WEB_PATH/$path_subpage.html" <<'HTMLEOF'
|
cat >> "$WEB_PATH/$path_subpage.html" <<'HTMLEOF'
|
||||||
<footer><a href="https://github.com/xVRVx/autoXRAY">github.com/xVRVx/autoXRAY</a></footer>
|
<footer><a href="https://gitea.creative-tg1.ru/CREATIVE_tg1/autoXRAY">gitea.creative-tg1.ru/CREATIVE_tg1/autoXRAY</a></footer>
|
||||||
</div>
|
</div>
|
||||||
<div id="modal" class="modal"><div class="mbox"><div id="qrc"></div><button class="mc" onclick="closeModal()">Закрыть</button></div></div>
|
<div id="modal" class="modal"><div class="mbox"><p id="qtitle" class="qtitle"></p><div id="qrc"></div><button class="mc" onclick="closeModal()">Закрыть</button></div></div>
|
||||||
</body></html>
|
</body></html>
|
||||||
HTMLEOF
|
HTMLEOF
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user