docs(readme): раздельные анимированные каналы для Zapret v1, Zapret v2 и ByeDPI в диаграмме архитектуры
This commit is contained in:
+241
-148
@@ -1,208 +1,301 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 500" width="100%" height="100%">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 620" width="100%" height="100%">
|
||||
<defs>
|
||||
<!-- Background Space Gradients -->
|
||||
<radialGradient id="arch-bg" cx="50%" cy="50%" r="75%">
|
||||
<stop offset="0%" stop-color="#0F172A" stop-opacity="0.95"/>
|
||||
<stop offset="60%" stop-color="#090D16" stop-opacity="0.98"/>
|
||||
<stop offset="100%" stop-color="#030712" stop-opacity="1"/>
|
||||
<!-- Dark Tech Canvas Gradient -->
|
||||
<radialGradient id="arch-bg" cx="50%" cy="50%" r="80%">
|
||||
<stop offset="0%" stop-color="#0F172A" stop-opacity="0.98"/>
|
||||
<stop offset="50%" stop-color="#090D16" stop-opacity="0.99"/>
|
||||
<stop offset="100%" stop-color="#020617" stop-opacity="1"/>
|
||||
</radialGradient>
|
||||
|
||||
<linearGradient id="card-bg-subtle" x1="0%" y1="0%" x2="0%" y2="100%">
|
||||
<stop offset="0%" stop-color="#1E293B" stop-opacity="0.7"/>
|
||||
<stop offset="100%" stop-color="#0B132B" stop-opacity="0.9"/>
|
||||
</linearGradient>
|
||||
|
||||
<!-- Track Gradients -->
|
||||
<linearGradient id="stream-green" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#10B981" stop-opacity="0.1"/>
|
||||
<stop offset="50%" stop-color="#10B981" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#34D399" stop-opacity="0.1"/>
|
||||
</linearGradient>
|
||||
|
||||
<linearGradient id="stream-purple" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#8B5CF6" stop-opacity="0.1"/>
|
||||
<stop offset="50%" stop-color="#8B5CF6" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#C084FC" stop-opacity="0.1"/>
|
||||
</linearGradient>
|
||||
|
||||
<linearGradient id="stream-cyan" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#00F0FF" stop-opacity="0.1"/>
|
||||
<stop offset="50%" stop-color="#00F0FF" stop-opacity="0.9"/>
|
||||
<stop offset="100%" stop-color="#38BDF8" stop-opacity="0.1"/>
|
||||
<linearGradient id="card-glass" x1="0%" y1="0%" x2="0%" y2="100%">
|
||||
<stop offset="0%" stop-color="#1E293B" stop-opacity="0.8"/>
|
||||
<stop offset="100%" stop-color="#0B132B" stop-opacity="0.95"/>
|
||||
</linearGradient>
|
||||
|
||||
<!-- Glowing Filters -->
|
||||
<filter id="glow-p" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="5" result="blur" />
|
||||
<filter id="neon-green" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="4" result="blur" />
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over" />
|
||||
</filter>
|
||||
|
||||
<filter id="neon-amber" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="4" result="blur" />
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over" />
|
||||
</filter>
|
||||
|
||||
<filter id="neon-purple" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="4" result="blur" />
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over" />
|
||||
</filter>
|
||||
|
||||
<filter id="neon-pink" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="4" result="blur" />
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over" />
|
||||
</filter>
|
||||
|
||||
<filter id="neon-cyan" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feGaussianBlur stdDeviation="4" result="blur" />
|
||||
<feComposite in="SourceGraphic" in2="blur" operator="over" />
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<style>
|
||||
/* CSS Animations for Packet Conduits */
|
||||
@keyframes flowTrackDirect {
|
||||
0% { stroke-dashoffset: 160; }
|
||||
100% { stroke-dashoffset: 0; }
|
||||
/* CSS Seamless Keyframe Loops (Period = Sum of Dash + Gap) */
|
||||
@keyframes flowGreen {
|
||||
from { stroke-dashoffset: 168; }
|
||||
to { stroke-dashoffset: 0; }
|
||||
}
|
||||
@keyframes flowTrackZapret {
|
||||
0% { stroke-dashoffset: 160; }
|
||||
100% { stroke-dashoffset: 0; }
|
||||
@keyframes flowAmber {
|
||||
from { stroke-dashoffset: 168; }
|
||||
to { stroke-dashoffset: 0; }
|
||||
}
|
||||
@keyframes flowTrackProxy {
|
||||
0% { stroke-dashoffset: 160; }
|
||||
100% { stroke-dashoffset: 0; }
|
||||
@keyframes flowPurple {
|
||||
from { stroke-dashoffset: 168; }
|
||||
to { stroke-dashoffset: 0; }
|
||||
}
|
||||
@keyframes nodeBlink {
|
||||
0%, 100% { opacity: 0.9; transform: scale(1); }
|
||||
@keyframes flowPink {
|
||||
from { stroke-dashoffset: 168; }
|
||||
to { stroke-dashoffset: 0; }
|
||||
}
|
||||
@keyframes flowCyan {
|
||||
from { stroke-dashoffset: 168; }
|
||||
to { stroke-dashoffset: 0; }
|
||||
}
|
||||
|
||||
@keyframes pulseCardBorder {
|
||||
0%, 100% { stroke-opacity: 0.35; }
|
||||
50% { stroke-opacity: 0.95; }
|
||||
}
|
||||
|
||||
@keyframes blinkLed {
|
||||
0%, 100% { opacity: 1; transform: scale(1); }
|
||||
50% { opacity: 0.3; transform: scale(0.85); }
|
||||
}
|
||||
@keyframes routerPulse {
|
||||
0%, 100% { stroke: rgba(0, 240, 255, 0.4); }
|
||||
50% { stroke: rgba(0, 240, 255, 0.95); }
|
||||
|
||||
@keyframes packetSplitPulse {
|
||||
0%, 100% { opacity: 0.4; transform: translateX(0px); }
|
||||
50% { opacity: 1; transform: translateX(8px); }
|
||||
}
|
||||
|
||||
.wire-in { stroke-dasharray: 8 12; animation: flowTrackDirect 2s linear infinite; }
|
||||
.wire-direct { stroke-dasharray: 12 24; animation: flowTrackDirect 1.8s linear infinite; }
|
||||
.wire-zapret { stroke-dasharray: 12 24; animation: flowTrackZapret 2.2s linear infinite; }
|
||||
.wire-proxy { stroke-dasharray: 12 24; animation: flowTrackProxy 1.5s linear infinite; }
|
||||
.stream-lan { stroke-dasharray: 14 28; animation: flowCyan 2.2s linear infinite; }
|
||||
.stream-direct { stroke-dasharray: 14 28; animation: flowGreen 1.8s linear infinite; }
|
||||
.stream-zapret1 { stroke-dasharray: 14 28; animation: flowAmber 2.0s linear infinite; }
|
||||
.stream-zapret2 { stroke-dasharray: 14 28; animation: flowPurple 1.6s linear infinite; }
|
||||
.stream-byedpi { stroke-dasharray: 14 28; animation: flowPink 2.4s linear infinite; }
|
||||
.stream-proxy { stroke-dasharray: 14 28; animation: flowCyan 1.5s linear infinite; }
|
||||
|
||||
.node-pulse { animation: nodeBlink 2.4s ease-in-out infinite; }
|
||||
.core-border { animation: routerPulse 3.5s ease-in-out infinite; }
|
||||
.card-pulse-green { animation: pulseCardBorder 3.2s ease-in-out infinite; }
|
||||
.card-pulse-amber { animation: pulseCardBorder 2.8s ease-in-out infinite; }
|
||||
.card-pulse-purple { animation: pulseCardBorder 2.4s ease-in-out infinite; }
|
||||
.card-pulse-pink { animation: pulseCardBorder 3.5s ease-in-out infinite; }
|
||||
.card-pulse-cyan { animation: pulseCardBorder 2.0s ease-in-out infinite; }
|
||||
|
||||
.text-title { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 800; font-size: 20px; fill: #FFFFFF; }
|
||||
.text-sub { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 600; font-size: 13px; fill: #94A3B8; }
|
||||
.text-node-h { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 700; font-size: 14px; fill: #F1F5F9; }
|
||||
.text-node-d { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 400; font-size: 11px; fill: #94A3B8; }
|
||||
.text-badge { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 11px; font-weight: 700; }
|
||||
.led-dot { animation: blinkLed 1.8s ease-in-out infinite; }
|
||||
.desync-anim { animation: packetSplitPulse 2s ease-in-out infinite; }
|
||||
|
||||
.title-h1 { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 900; font-size: 21px; fill: #FFFFFF; letter-spacing: 0.5px; }
|
||||
.title-sub { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 500; font-size: 13px; fill: #94A3B8; }
|
||||
.node-title { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 700; font-size: 14px; fill: #F8FAFC; }
|
||||
.node-sub { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 400; font-size: 11px; fill: #94A3B8; }
|
||||
.tag-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 10px; font-weight: 700; }
|
||||
</style>
|
||||
|
||||
<!-- Surface Base -->
|
||||
<rect width="1200" height="500" rx="16" fill="url(#arch-bg)" stroke="#1E293B" stroke-width="1.5"/>
|
||||
<!-- Background Surface -->
|
||||
<rect width="1200" height="620" rx="16" fill="url(#arch-bg)" stroke="#1E293B" stroke-width="1.5"/>
|
||||
|
||||
<!-- Diagram Title Header -->
|
||||
<g transform="translate(50, 45)">
|
||||
<text class="text-title">⚡ TACHYON TRAFFIC ORCHESTRATION PIPELINE</text>
|
||||
<text y="24" class="text-sub">Интеллектуальная многопоточная селективная маршрутизация и десинхронизация пакетов</text>
|
||||
<!-- Top Title Header -->
|
||||
<g transform="translate(45, 40)">
|
||||
<text class="title-h1">⚡ TACHYON NETWORK ORCHESTRATION PIPELINE</text>
|
||||
<text y="22" class="title-sub">Интеллектуальная селективная маршрутизация и многоуровневая десинхронизация пакетов DPI</text>
|
||||
</g>
|
||||
|
||||
<!-- ================================================================= -->
|
||||
<!-- CONNECTING CONDUIT WIRES (Animated Packet Flow) -->
|
||||
<!-- CONNECTING HIGH-SPEED CONDUITS (Animated Laser Streams) -->
|
||||
<!-- ================================================================= -->
|
||||
<g fill="none" stroke-linecap="round">
|
||||
<!-- Input Wire: Clients -> Router Core -->
|
||||
<path d="M 230,260 L 370,260" stroke="#334155" stroke-width="3"/>
|
||||
<path d="M 230,260 L 370,260" stroke="#38BDF8" stroke-width="3" class="wire-in" filter="url(#glow-p)"/>
|
||||
<!-- LAN Inbound: Clients -> Router Core -->
|
||||
<path d="M 225,325 L 350,325" stroke="#1E293B" stroke-width="4"/>
|
||||
<path d="M 225,325 L 350,325" stroke="#00F0FF" stroke-width="3" class="stream-lan" filter="url(#neon-cyan)"/>
|
||||
|
||||
<!-- Path 1: Router -> Direct WAN (Green) -->
|
||||
<path d="M 610,210 C 680,210 700,130 770,130 L 930,130" stroke="#1E293B" stroke-width="3"/>
|
||||
<path d="M 610,210 C 680,210 700,130 770,130 L 930,130" stroke="#10B981" stroke-width="3" class="wire-direct" filter="url(#glow-p)"/>
|
||||
<!-- Path 1: Direct WAN (Green) -->
|
||||
<path d="M 590,260 C 660,260 700,120 780,120 L 890,120" stroke="#1E293B" stroke-width="4"/>
|
||||
<path d="M 590,260 C 660,260 700,120 780,120 L 890,120" stroke="#10B981" stroke-width="3" class="stream-direct" filter="url(#neon-green)"/>
|
||||
|
||||
<!-- Path 2: Router -> Zapret2 DPI Bypass (Purple) -->
|
||||
<path d="M 610,260 L 930,260" stroke="#1E293B" stroke-width="3"/>
|
||||
<path d="M 610,260 L 930,260" stroke="#8B5CF6" stroke-width="3" class="wire-zapret" filter="url(#glow-p)"/>
|
||||
<!-- Path 2: Zapret v1 / nfqws (Amber/Gold) -->
|
||||
<path d="M 590,290 C 660,290 710,215 780,215 L 890,215" stroke="#1E293B" stroke-width="4"/>
|
||||
<path d="M 590,290 C 660,290 710,215 780,215 L 890,215" stroke="#F59E0B" stroke-width="3" class="stream-zapret1" filter="url(#neon-amber)"/>
|
||||
|
||||
<!-- Path 3: Router -> sing-box VLESS / Proxy (Cyan) -->
|
||||
<path d="M 610,310 C 680,310 700,390 770,390 L 930,390" stroke="#1E293B" stroke-width="3"/>
|
||||
<path d="M 610,310 C 680,310 700,390 770,390 L 930,390" stroke="#00F0FF" stroke-width="3" class="wire-proxy" filter="url(#glow-p)"/>
|
||||
<!-- Path 3: Zapret v2 / nfqws2 (Neon Purple) -->
|
||||
<path d="M 590,325 L 890,325" stroke="#1E293B" stroke-width="4"/>
|
||||
<path d="M 590,325 L 890,325" stroke="#A855F7" stroke-width="3" class="stream-zapret2" filter="url(#neon-purple)"/>
|
||||
|
||||
<!-- Path 4: ByeDPI / ciadpi (Pink/Magenta) -->
|
||||
<path d="M 590,360 C 660,360 710,435 780,435 L 890,435" stroke="#1E293B" stroke-width="4"/>
|
||||
<path d="M 590,360 C 660,360 710,435 780,435 L 890,435" stroke="#EC4899" stroke-width="3" class="stream-byedpi" filter="url(#neon-pink)"/>
|
||||
|
||||
<!-- Path 5: sing-box Core / VLESS (Cyan) -->
|
||||
<path d="M 590,390 C 660,390 700,530 780,530 L 890,530" stroke="#1E293B" stroke-width="4"/>
|
||||
<path d="M 590,390 C 660,390 700,530 780,530 L 890,530" stroke="#00F0FF" stroke-width="3" class="stream-proxy" filter="url(#neon-cyan)"/>
|
||||
</g>
|
||||
|
||||
<!-- ================================================================= -->
|
||||
<!-- NODE 1: CLIENT DEVICES (LAN / Wi-Fi) -->
|
||||
<!-- LEFT COLUMN: LAN CLIENTS -->
|
||||
<!-- ================================================================= -->
|
||||
<g transform="translate(50, 155)">
|
||||
<rect width="180" height="210" rx="12" fill="url(#card-bg-subtle)" stroke="#334155" stroke-width="1.5"/>
|
||||
<rect x="15" y="15" width="40" height="40" rx="8" fill="#0369A1" fill-opacity="0.2"/>
|
||||
<text x="24" y="42" font-size="22">📱</text>
|
||||
<text x="65" y="38" class="text-node-h">LAN Clients</text>
|
||||
|
||||
<!-- Client Devices List -->
|
||||
<g transform="translate(15, 70)">
|
||||
<rect width="150" height="34" rx="6" fill="#0B132B" stroke="#1E293B" stroke-width="1"/>
|
||||
<text x="10" y="22" class="text-node-d" fill="#E2E8F0">📺 Smart TV / Consoles</text>
|
||||
<g transform="translate(45, 185)">
|
||||
<rect width="180" height="280" rx="12" fill="url(#card-glass)" stroke="#334155" stroke-width="1.5"/>
|
||||
<g transform="translate(15, 15)">
|
||||
<rect width="36" height="36" rx="8" fill="#0284C7" fill-opacity="0.25"/>
|
||||
<text x="9" y="24" font-size="18">📱</text>
|
||||
<text x="46" y="22" class="node-title">LAN Devices</text>
|
||||
<text x="46" y="34" class="node-sub">Домашняя сеть</text>
|
||||
</g>
|
||||
<g transform="translate(15, 112)">
|
||||
<rect width="150" height="34" rx="6" fill="#0B132B" stroke="#1E293B" stroke-width="1"/>
|
||||
<text x="10" y="22" class="text-node-d" fill="#E2E8F0">💻 PCs & MacBooks</text>
|
||||
|
||||
<!-- Client Items -->
|
||||
<g transform="translate(15, 68)">
|
||||
<rect width="150" height="42" rx="6" fill="#0B132B" stroke="#1E293B" stroke-width="1"/>
|
||||
<text x="10" y="20" class="node-title" font-size="12">📺 Smart TV & Box</text>
|
||||
<text x="10" y="34" class="node-sub" font-size="10">YouTube 4K, Кинотеатры</text>
|
||||
</g>
|
||||
<g transform="translate(15, 154)">
|
||||
<rect width="150" height="34" rx="6" fill="#0B132B" stroke="#1E293B" stroke-width="1"/>
|
||||
<text x="10" y="22" class="text-node-d" fill="#E2E8F0">📱 Phones & Tablets</text>
|
||||
<g transform="translate(15, 118)">
|
||||
<rect width="150" height="42" rx="6" fill="#0B132B" stroke="#1E293B" stroke-width="1"/>
|
||||
<text x="10" y="20" class="node-title" font-size="12">💻 PC & Consoles</text>
|
||||
<text x="10" y="34" class="node-sub" font-size="10">Discord, Steam, Игры</text>
|
||||
</g>
|
||||
<g transform="translate(15, 168)">
|
||||
<rect width="150" height="42" rx="6" fill="#0B132B" stroke="#1E293B" stroke-width="1"/>
|
||||
<text x="10" y="20" class="node-title" font-size="12">📱 Mobile & Tablets</text>
|
||||
<text x="10" y="34" class="node-sub" font-size="10">Соцсети, Мессенджеры</text>
|
||||
</g>
|
||||
<g transform="translate(15, 218)">
|
||||
<rect width="150" height="42" rx="6" fill="#0B132B" stroke="#1E293B" stroke-width="1"/>
|
||||
<text x="10" y="20" class="node-title" font-size="12">🔒 IoT & Guest LAN</text>
|
||||
<text x="10" y="34" class="node-sub" font-size="10">Изолированный доступ</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- ================================================================= -->
|
||||
<!-- NODE 2: TACHYON ROUTER CORE (OpenWrt Engine) -->
|
||||
<!-- CENTER COLUMN: TACHYON ROUTER CORE ENGINE -->
|
||||
<!-- ================================================================= -->
|
||||
<g transform="translate(370, 130)">
|
||||
<rect width="240" height="260" rx="14" fill="#0B132B" stroke="#00F0FF" stroke-width="2" class="core-border"/>
|
||||
<g transform="translate(350, 140)">
|
||||
<rect width="240" height="370" rx="14" fill="#090E1A" stroke="#00F0FF" stroke-width="2" class="card-pulse-cyan"/>
|
||||
|
||||
<g transform="translate(20, 20)">
|
||||
<circle cx="20" cy="20" r="18" fill="#00F0FF" fill-opacity="0.15"/>
|
||||
<text x="10" y="28" font-size="20">⚡</text>
|
||||
<text x="48" y="20" class="text-node-h" fill="#00F0FF">Tachyon Core</text>
|
||||
<text x="48" y="34" class="text-node-d">OpenWrt ucode / nftables</text>
|
||||
<circle cx="18" cy="18" r="16" fill="#00F0FF" fill-opacity="0.15"/>
|
||||
<text x="10" y="24" font-size="18">⚡</text>
|
||||
<text x="44" y="16" class="node-title" fill="#00F0FF">Tachyon Core</text>
|
||||
<text x="44" y="30" class="node-sub">OpenWrt ucode + nftables</text>
|
||||
</g>
|
||||
|
||||
<!-- Sub-Engines Inside Core -->
|
||||
<g transform="translate(20, 75)">
|
||||
<!-- Module A: Smart Policy Splitter -->
|
||||
<rect width="200" height="42" rx="6" fill="#111827" stroke="#1E293B" stroke-width="1"/>
|
||||
<circle cx="15" cy="21" r="4" fill="#10B981" class="node-pulse"/>
|
||||
<text x="28" y="20" class="text-node-h" font-size="12">Domain / IP Matcher</text>
|
||||
<text x="28" y="34" class="text-node-d" font-size="10">GeoIP + Hosts Engine</text>
|
||||
|
||||
<!-- Module B: AI Doctor & Self-Healing -->
|
||||
<g transform="translate(0, 50)">
|
||||
<rect width="200" height="42" rx="6" fill="#111827" stroke="#1E293B" stroke-width="1"/>
|
||||
<circle cx="15" cy="21" r="4" fill="#C084FC" class="node-pulse"/>
|
||||
<text x="28" y="20" class="text-node-h" font-size="12">AI Doctor & Watchdog</text>
|
||||
<text x="28" y="34" class="text-node-d" font-size="10">Auto-Heal & Quick Fix</text>
|
||||
<!-- Sub-Engines in Core -->
|
||||
<g transform="translate(18, 70)">
|
||||
<!-- 1. Classifier Engine -->
|
||||
<g transform="translate(0, 0)">
|
||||
<rect width="204" height="52" rx="8" fill="#0F172A" stroke="#1E293B" stroke-width="1"/>
|
||||
<circle cx="14" cy="26" r="4" fill="#10B981" class="led-dot"/>
|
||||
<text x="26" y="22" class="node-title" font-size="12">Domain & IP Classifier</text>
|
||||
<text x="26" y="38" class="node-sub" font-size="10">GeoIP + Hosts + Lists Cache</text>
|
||||
</g>
|
||||
|
||||
<!-- Module C: Dynamic Packet Routing -->
|
||||
<g transform="translate(0, 100)">
|
||||
<rect width="200" height="42" rx="6" fill="#111827" stroke="#1E293B" stroke-width="1"/>
|
||||
<circle cx="15" cy="21" r="4" fill="#00F0FF" class="node-pulse"/>
|
||||
<text x="28" y="20" class="text-node-h" font-size="12">nftables Flow Dispatcher</text>
|
||||
<text x="28" y="34" class="text-node-d" font-size="10">Zero-Copy Fast Path</text>
|
||||
<!-- 2. AI Doctor & Watchdog -->
|
||||
<g transform="translate(0, 60)">
|
||||
<rect width="204" height="52" rx="8" fill="#0F172A" stroke="#1E293B" stroke-width="1"/>
|
||||
<circle cx="14" cy="26" r="4" fill="#A855F7" class="led-dot"/>
|
||||
<text x="26" y="22" class="node-title" font-size="12">AI Doctor & Self-Healing</text>
|
||||
<text x="26" y="38" class="node-sub" font-size="10">13 Quick Fixes + NTP / MTU</text>
|
||||
</g>
|
||||
|
||||
<!-- 3. DPI Dispatcher -->
|
||||
<g transform="translate(0, 120)">
|
||||
<rect width="204" height="52" rx="8" fill="#0F172A" stroke="#1E293B" stroke-width="1"/>
|
||||
<circle cx="14" cy="26" r="4" fill="#F59E0B" class="led-dot"/>
|
||||
<text x="26" y="22" class="node-title" font-size="12">NFQueue & Desync Router</text>
|
||||
<text x="26" y="38" class="node-sub" font-size="10">Маршрутизация в Zapret/ByeDPI</text>
|
||||
</g>
|
||||
|
||||
<!-- 4. Fast Path nftables -->
|
||||
<g transform="translate(0, 180)">
|
||||
<rect width="204" height="52" rx="8" fill="#0F172A" stroke="#1E293B" stroke-width="1"/>
|
||||
<circle cx="14" cy="26" r="4" fill="#00F0FF" class="led-dot"/>
|
||||
<text x="26" y="22" class="node-title" font-size="12">Zero-Copy Flow Offload</text>
|
||||
<text x="26" y="38" class="node-sub" font-size="10">Аппаратное ускорение пакетов</text>
|
||||
</g>
|
||||
|
||||
<!-- 5. Fallback Internet Guard -->
|
||||
<g transform="translate(0, 240)">
|
||||
<rect width="204" height="42" rx="8" fill="#1E1B4B" stroke="#EC4899" stroke-opacity="0.4" stroke-width="1"/>
|
||||
<circle cx="14" cy="21" r="4" fill="#EC4899" class="led-dot"/>
|
||||
<text x="26" y="20" class="node-title" font-size="11" fill="#F472B6">Native Internet Fallback</text>
|
||||
<text x="26" y="34" class="node-sub" font-size="9">Аварийный возврат WAN</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- ================================================================= -->
|
||||
<!-- NODE 3: THREE DIVERGENT DESTINATION PATHS -->
|
||||
<!-- RIGHT COLUMN: 5 DIVERGENT DESTINATION DESTINATIONS -->
|
||||
<!-- ================================================================= -->
|
||||
|
||||
<!-- PATH 1: DIRECT INTERNET (GREEN) -->
|
||||
<g transform="translate(930, 85)">
|
||||
<rect width="220" height="90" rx="10" fill="url(#card-bg-subtle)" stroke="#10B981" stroke-opacity="0.6" stroke-width="1.5"/>
|
||||
<circle cx="28" cy="28" r="14" fill="#10B981" fill-opacity="0.15"/>
|
||||
<text x="20" y="34" font-size="16">🌐</text>
|
||||
<text x="50" y="28" class="text-node-h" fill="#34D399">Direct WAN</text>
|
||||
<text x="50" y="42" class="text-badge" fill="#10B981">0 ms Overhead</text>
|
||||
<text x="16" y="68" class="text-node-d">Банки, Госуслуги, RuNet</text>
|
||||
<text x="16" y="82" class="text-node-d">Прямой маршрут без задержек</text>
|
||||
|
||||
<!-- DESTINATION 1: DIRECT WAN (GREEN) -->
|
||||
<g transform="translate(890, 75)">
|
||||
<rect width="265" height="90" rx="10" fill="url(#card-glass)" stroke="#10B981" stroke-width="1.5" class="card-pulse-green"/>
|
||||
<g transform="translate(14, 14)">
|
||||
<circle cx="16" cy="16" r="14" fill="#10B981" fill-opacity="0.15"/>
|
||||
<text x="8" y="22" font-size="16">🌐</text>
|
||||
<text x="38" y="16" class="node-title" fill="#34D399">Direct WAN</text>
|
||||
<text x="38" y="28" class="tag-mono" fill="#10B981">0 ms OVERHEAD</text>
|
||||
</g>
|
||||
<text x="16" y="60" class="node-sub" fill="#E2E8F0">Банки, Госуслуги, RuNet</text>
|
||||
<text x="16" y="76" class="node-sub">Прямой транзит трафика без проксирования</text>
|
||||
</g>
|
||||
|
||||
<!-- PATH 2: LOCAL DPI DESYNC (PURPLE) -->
|
||||
<g transform="translate(930, 215)">
|
||||
<rect width="220" height="90" rx="10" fill="url(#card-bg-subtle)" stroke="#8B5CF6" stroke-opacity="0.6" stroke-width="1.5"/>
|
||||
<circle cx="28" cy="28" r="14" fill="#8B5CF6" fill-opacity="0.15"/>
|
||||
<text x="20" y="34" font-size="16">🚀</text>
|
||||
<text x="50" y="28" class="text-node-h" fill="#C084FC">Zapret v2 / ByeDPI</text>
|
||||
<text x="50" y="42" class="text-badge" fill="#8B5CF6">Zero-VPS Desync</text>
|
||||
<text x="16" y="68" class="text-node-d">YouTube 4K, Discord, Web</text>
|
||||
<text x="16" y="82" class="text-node-d">Аппаратная десинхронизация TCP</text>
|
||||
<!-- DESTINATION 2: ZAPRET V1 / nfqws (AMBER) -->
|
||||
<g transform="translate(890, 175)">
|
||||
<rect width="265" height="90" rx="10" fill="url(#card-glass)" stroke="#F59E0B" stroke-width="1.5" class="card-pulse-amber"/>
|
||||
<g transform="translate(14, 14)">
|
||||
<circle cx="16" cy="16" r="14" fill="#F59E0B" fill-opacity="0.15"/>
|
||||
<text x="8" y="22" font-size="16">⚡</text>
|
||||
<text x="38" y="16" class="node-title" fill="#FBBF24">Zapret v1 (nfqws)</text>
|
||||
<text x="38" y="28" class="tag-mono" fill="#F59E0B">FAKE / DISORDER / SPLIT2</text>
|
||||
</g>
|
||||
<text x="16" y="60" class="node-sub" fill="#E2E8F0">Базовый обход DPI без VPS</text>
|
||||
<text x="16" y="76" class="node-sub">Быстрая десинхронизация TCP/UDP пакетов</text>
|
||||
</g>
|
||||
|
||||
<!-- PATH 3: SECURE PROXY (CYAN) -->
|
||||
<g transform="translate(930, 345)">
|
||||
<rect width="220" height="90" rx="10" fill="url(#card-bg-subtle)" stroke="#00F0FF" stroke-opacity="0.6" stroke-width="1.5"/>
|
||||
<circle cx="28" cy="28" r="14" fill="#00F0FF" fill-opacity="0.15"/>
|
||||
<text x="20" y="34" font-size="16">🛡️</text>
|
||||
<text x="50" y="28" class="text-node-h" fill="#00F0FF">sing-box Core</text>
|
||||
<text x="50" y="42" class="text-badge" fill="#38BDF8">VLESS Reality / H2</text>
|
||||
<text x="16" y="68" class="text-node-d">Instagram, Twitter, AI Tools</text>
|
||||
<text x="16" y="82" class="text-node-d">Зашифрованный внешний туннель</text>
|
||||
<!-- DESTINATION 3: ZAPRET V2 / nfqws2 (PURPLE) -->
|
||||
<g transform="translate(890, 275)">
|
||||
<rect width="265" height="95" rx="10" fill="url(#card-glass)" stroke="#A855F7" stroke-width="2" class="card-pulse-purple"/>
|
||||
<g transform="translate(14, 14)">
|
||||
<circle cx="16" cy="16" r="14" fill="#A855F7" fill-opacity="0.2"/>
|
||||
<text x="8" y="22" font-size="16">🚀</text>
|
||||
<text x="38" y="16" class="node-title" fill="#C084FC">Zapret v2 (nfqws2)</text>
|
||||
<text x="38" y="28" class="tag-mono" fill="#A855F7">MULTISPLIT / SEQOVL / WSIZE</text>
|
||||
</g>
|
||||
<text x="16" y="62" class="node-sub" fill="#E2E8F0">YouTube 4K, Discord Voice/Web</text>
|
||||
<text x="16" y="78" class="node-sub">Многовекторный адаптивный обход ТСПУ</text>
|
||||
</g>
|
||||
|
||||
<!-- DESTINATION 4: BYEDPI / ciadpi (PINK) -->
|
||||
<g transform="translate(890, 380)">
|
||||
<rect width="265" height="90" rx="10" fill="url(#card-glass)" stroke="#EC4899" stroke-width="1.5" class="card-pulse-pink"/>
|
||||
<g transform="translate(14, 14)">
|
||||
<circle cx="16" cy="16" r="14" fill="#EC4899" fill-opacity="0.15"/>
|
||||
<text x="8" y="22" font-size="16">🛡️</text>
|
||||
<text x="38" y="16" class="node-title" fill="#F472B6">ByeDPI (ciadpi)</text>
|
||||
<text x="38" y="28" class="tag-mono" fill="#EC4899">SOCKS5 / PAYLOAD SPLIT</text>
|
||||
</g>
|
||||
<text x="16" y="60" class="node-sub" fill="#E2E8F0">Локальный SOCKS десинхронизатор</text>
|
||||
<text x="16" y="76" class="node-sub">Разделение заголовков HTTP/TLS SNI</text>
|
||||
</g>
|
||||
|
||||
<!-- DESTINATION 5: SING-BOX PROXY ENGINE (CYAN) -->
|
||||
<g transform="translate(890, 480)">
|
||||
<rect width="265" height="95" rx="10" fill="url(#card-glass)" stroke="#00F0FF" stroke-width="2" class="card-pulse-cyan"/>
|
||||
<g transform="translate(14, 14)">
|
||||
<circle cx="16" cy="16" r="14" fill="#00F0FF" fill-opacity="0.2"/>
|
||||
<text x="8" y="22" font-size="16">🌌</text>
|
||||
<text x="38" y="16" class="node-title" fill="#00F0FF">sing-box Core</text>
|
||||
<text x="38" y="28" class="tag-mono" fill="#38BDF8">VLESS REALITY / HYSTERIA2 / WG</text>
|
||||
</g>
|
||||
<text x="16" y="62" class="node-sub" fill="#E2E8F0">Instagram, Twitter/X, ChatGPT, AI</text>
|
||||
<text x="16" y="78" class="node-sub">Шифрованный туннель с авто-выбором ноды</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 16 KiB |
Reference in New Issue
Block a user