From 5b51c8d9b457f106b642ae268e411b21af8c5346 Mon Sep 17 00:00:00 2001 From: StressOzz <131419324+StressOzz@users.noreply.github.com> Date: Sat, 19 Sep 2026 18:22:35 +0500 Subject: [PATCH] Update version to 1.14 and change default UI panel --- ZapretManager_LuCI.sh | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/ZapretManager_LuCI.sh b/ZapretManager_LuCI.sh index 40a24a9..0813f2f 100644 --- a/ZapretManager_LuCI.sh +++ b/ZapretManager_LuCI.sh @@ -1,6 +1,6 @@ #!/bin/sh # Zapret Manager by StressOzz for LuCI installer -# Version: 1.13 +# Version: 1.14 set -e GREEN="\033[1;32m"; CYAN="\033[1;36m"; YELLOW="\033[1;33m"; MAGENTA="\033[1;35m"; BLUE="\033[0;34m"; NC="\033[0m"; DGRAY="\033[38;5;244m" @@ -26,7 +26,7 @@ mkdir -p /usr/lib/zapret-manager cat > '/usr/lib/zapret-manager/backend.sh' << 'ZM_INSTALLER_EOF' CONF="/etc/config/zapret" -ZM_VERSION="1.13" +ZM_VERSION="1.14" ZM_SCRIPT_URL="https://raw.githubusercontent.com/StressOzz/Zapret-Manager/refs/heads/main/ZapretManager_LuCI.sh" GH_RAW="https://raw.githubusercontent.com" GH_MAIN="https://github.com" @@ -2403,8 +2403,8 @@ do_mixomo_install() { fi if [ ! -f "$MIHOMO_DIR/.ui_panel" ]; then - echo "==> Устанавливаем веб-панель Zashboard (по умолчанию)" - do_mixomo_ui_install zashboard || echo "!! Не удалось установить веб-панель — можно поставить позже вручную" + echo "==> Устанавливаем веб-панель MetaCubeXD (по умолчанию)" + do_mixomo_ui_install metacubexd || echo "!! Не удалось установить веб-панель — можно поставить позже вручную" fi echo "==> Готово, Mixomo установлен" @@ -2659,6 +2659,7 @@ MIXOMO_AWG_H3=3 MIXOMO_AWG_H4=4 MIXOMO_AWG_S1=0 MIXOMO_AWG_S2=0 +MIXOMO_AWG_I1="" mixomo_warp_status() { local exists="false" content="" @@ -2757,7 +2758,7 @@ do_mixomo_warp_register() { printf '%s\n' \ "[Interface]" "PrivateKey = $priv" "Address = ${v4}${v6:+, $v6}" "DNS = 9.9.9.9" "MTU = 1280" \ "S1 = $MIXOMO_AWG_S1" "S2 = $MIXOMO_AWG_S2" "Jc = $MIXOMO_AWG_JC" "Jmin = $MIXOMO_AWG_JMIN" "Jmax = $MIXOMO_AWG_JMAX" \ - "H1 = $MIXOMO_AWG_H1" "H2 = $MIXOMO_AWG_H2" "H3 = $MIXOMO_AWG_H3" "H4 = $MIXOMO_AWG_H4" "" \ + "H1 = $MIXOMO_AWG_H1" "H2 = $MIXOMO_AWG_H2" "H3 = $MIXOMO_AWG_H3" "H4 = $MIXOMO_AWG_H4" "I1 = $MIXOMO_AWG_I1" "" \ "[Peer]" "PublicKey = $peer" "AllowedIPs = 0.0.0.0/0, ::/0" "Endpoint = $ep" "PersistentKeepalive = 25" \ > "$MIXOMO_WARP_CONF" echo "==> Готово, файл сохранён в $MIXOMO_WARP_CONF" @@ -2778,7 +2779,7 @@ do_mixomo_warp_integrate() { function lc(s){ return tolower(s) } function yaml_quote(s){ gsub(/\\/,"\\\\",s); gsub(/"/,"\\\"",s); gsub(/\r/,"",s); return "\"" s "\"" } function split_endpoint(s, a,n){ s=trim(s); n=split(s,a,":"); if(n<2){ host=s; port="" } else { port=a[n]; host=a[1]; for(i=2;i> OUT if(mtu!="") print " mtu: " mtu >> OUT if(keep!="") print " persistent-keepalive: " keep >> OUT - if(s1!="" || s2!="" || jc!="" || jmin!="" || jmax!="" || h1!="" || h2!="" || h3!="" || h4!=""){ + if(s1!="" || s2!="" || jc!="" || jmin!="" || jmax!="" || h1!="" || h2!="" || h3!="" || h4!="" || i1!=""){ print " amnezia-wg-option:" >> OUT if(s1!="") print " s1: " s1 >> OUT if(s2!="") print " s2: " s2 >> OUT @@ -2865,6 +2867,7 @@ do_mixomo_warp_integrate() { if(h2!="") print " h2: " h2 >> OUT if(h3!="") print " h3: " h3 >> OUT if(h4!="") print " h4: " h4 >> OUT + if(i1!="") print " i1: " yaml_quote(i1) >> OUT } }' "$MIXOMO_WARP_CONF" 2>"$tmp.err" if [ -s "$tmp.err" ]; then @@ -3636,7 +3639,8 @@ return view.extend({ zm.systemStatus().catch(function() { return {}; }), zm.zapretLatestVersion().catch(function() { return {}; }), zm.systemInfo().catch(function() { return {}; }), - zm.zmUpdateStatus().catch(function() { return {}; }) + zm.zmUpdateStatus().catch(function() { return {}; }), + zm.mixomoStatus().catch(function() { return {}; }) ]); }, @@ -3646,6 +3650,7 @@ return view.extend({ var latestVersion = (all[4] && all[4].version) || ''; var sysInfo = all[5] || {}; var zmUpdate = all[6] || {}; + var mixomoData = all[7] || {}; var wrap = E('div', { 'class': 'zm-wrap' }); var overviewEl = E('div', {}); var cards = E('div', { 'class': 'zm-cards' }); @@ -3653,7 +3658,7 @@ return view.extend({ var DOH_LABELS = { cloudflare: 'Cloudflare', google: 'Google', quad9: 'Quad9', xbox: 'XBOX', geohide_ru: 'GeoHide RU', geohide_eu: 'GeoHide EU', geohide_us: 'GeoHide US' }; - function renderOverview(d, doh, hosts, sys) { + function renderOverview(d, doh, hosts, sys, mixomo) { var hostsEnabled = (hosts.items || []).filter(function(it) { return it.enabled; }).length; var hostsTotal = (hosts.items || []).length; @@ -3662,6 +3667,8 @@ return view.extend({ if (sys.ipv6_enabled) sysFlags.push('IPv6 в Zapret включён'); if (sys.flow_offloading_fix) sysFlags.push('Flow Offloading fix'); + var mixomoRunning = mixomo.mihomo_running === true && mixomo.hev_running === true && mixomo.magitrickle_running === true; + return E('div', { 'class': 'zm-card', 'style': 'margin-bottom:4px' }, [ E('h3', {}, 'Обзор'), E('div', { 'class': 'zm-row' }, [ @@ -3678,6 +3685,10 @@ return view.extend({ E('span', { 'class': 'zm-label' }, 'Zapret2'), zm.badge(d.zapret2_running === true, 'запущен', 'остановлен') ]) : E([]), + mixomo.mihomo === 'installed' ? E('div', { 'class': 'zm-row' }, [ + E('span', { 'class': 'zm-label' }, 'Mixomo'), + zm.badge(mixomoRunning, 'запущен', 'остановлен') + ]) : E([]), E('div', { 'class': 'zm-row' }, [ E('span', { 'class': 'zm-label' }, 'DNS over HTTPS'), doh.installed @@ -3802,14 +3813,15 @@ return view.extend({ zm.status(), zm.dohStatus().catch(function() { return {}; }), zm.hostsStatus().catch(function() { return { items: [] }; }), - zm.systemStatus().catch(function() { return {}; }) + zm.systemStatus().catch(function() { return {}; }), + zm.mixomoStatus().catch(function() { return {}; }) ]).then(function(res) { overviewEl.innerHTML = ''; - overviewEl.appendChild(renderOverview(res[0], res[1], res[2], res[3])); + overviewEl.appendChild(renderOverview(res[0], res[1], res[2], res[3], res[4])); }); } - overviewEl.appendChild(renderOverview(data, dohData, hostsData, sysData)); + overviewEl.appendChild(renderOverview(data, dohData, hostsData, sysData, mixomoData)); renderCards(data); var updateEl = E('div', {}); wrap.appendChild(updateEl); @@ -4670,7 +4682,7 @@ return view.extend({ function renderPanel(d) { panelCard.innerHTML = ''; panelCard.appendChild(E('h3', {}, 'Веб-панель Mihomo')); - panelCard.appendChild(E('p', { 'class': 'zm-hint' }, 'Собственный веб-интерфейс Mihomo (статистика, выбор прокси вручную). По умолчанию ставится Zashboard.')); + panelCard.appendChild(E('p', { 'class': 'zm-hint' }, 'Собственный веб-интерфейс Mihomo (статистика, выбор прокси вручную). По умолчанию ставится MetaCubeXD.')); if (d.mihomo !== 'installed') { panelCard.appendChild(E('p', { 'class': 'zm-hint' }, 'Установите Mixomo, чтобы выбрать панель.')); return;