Wiki source code of Network Diagram (CLOUD)
Last modified by Iaroslav Platonov on 2026/06/09 11:24
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
4.1 | 1 | {{html clean="false"}} |
| 2 | <style> | ||
| 3 | /* Disable XWiki heading counters */ | ||
| 4 | .doc-content h1::before,.doc-content h2::before, | ||
| 5 | .doc-content h3::before,.doc-content h4::before { content:none !important; display:none !important; } | ||
| 6 | .doc-content { counter-reset:none !important; } | ||
| |
1.2 | 7 | |
| |
4.1 | 8 | /* Reading progress bar */ |
| 9 | #rn-prog { position:fixed;top:0;left:0;height:3px;width:0;background:#005AB4;z-index:9999;pointer-events:none; } | ||
| |
1.2 | 10 | |
| |
4.1 | 11 | /* Layout — no right TOC on this page */ |
| 12 | .doc-content { | ||
| 13 | max-width:860px; | ||
| 14 | border-left:1px solid #E8E8E8; | ||
| 15 | border-right:1px solid #E8E8E8; | ||
| 16 | padding:0 32px 32px 32px; | ||
| 17 | } | ||
| |
1.3 | 18 | |
| |
4.1 | 19 | /* Typography */ |
| 20 | .doc-content p { font-size:.93em;color:#333;line-height:1.75;margin:0 0 12px 0; } | ||
| 21 | .doc-content ul { font-size:.93em;color:#333;line-height:1.75;margin:0 0 16px 0;padding-left:24px; } | ||
| 22 | .doc-content li { margin-bottom:5px; } | ||
| 23 | .doc-content code { background:#f5f5f5;border:1px solid #E8E8E8;border-radius:3px;padding:1px 5px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:.82em;color:#222;line-height:1; } | ||
| |
1.3 | 24 | |
| |
4.1 | 25 | /* Diagram figure */ |
| 26 | .diagram-wrap { | ||
| 27 | margin:8px 0 28px 0; | ||
| 28 | border:1px solid #E8E8E8; | ||
| 29 | border-radius:6px; | ||
| 30 | overflow:hidden; | ||
| 31 | box-shadow:0 2px 8px rgba(0,0,0,.08); | ||
| 32 | } | ||
| 33 | .diagram-wrap img { | ||
| 34 | display:block; | ||
| 35 | width:100%; | ||
| 36 | height:auto; | ||
| 37 | cursor:zoom-in; | ||
| 38 | } | ||
| 39 | .diagram-cap { | ||
| 40 | font-size:.78em;color:#555; | ||
| 41 | background:#f5f5f5; | ||
| 42 | border-top:1px solid #E8E8E8; | ||
| 43 | padding:6px 12px; | ||
| 44 | } | ||
| |
1.3 | 45 | |
| |
4.1 | 46 | /* Section heading */ |
| 47 | .doc-content h2 { | ||
| 48 | font-size:1.1em;font-weight:700;color:#222; | ||
| 49 | margin:28px 0 10px 0; | ||
| 50 | padding-bottom:6px; | ||
| 51 | border-bottom:1px solid #E8E8E8; | ||
| 52 | } | ||
| |
1.4 | 53 | |
| |
4.1 | 54 | /* File list */ |
| 55 | .file-list { list-style:none;padding:0;margin:0 0 16px 0; } | ||
| 56 | .file-list li { | ||
| 57 | display:flex;align-items:flex-start;gap:10px; | ||
| 58 | padding:8px 12px; | ||
| 59 | border-bottom:1px solid #E8E8E8; | ||
| 60 | font-size:.88em;color:#333; | ||
| 61 | } | ||
| 62 | .file-list li:last-child { border-bottom:none; } | ||
| 63 | .file-list li code { | ||
| 64 | font-size:.88em;color:#005AB4;font-weight:600;white-space:nowrap; | ||
| 65 | background:#deeaf7;border:1px solid #b3d4ee;border-radius:3px;padding:1px 6px; | ||
| 66 | flex-shrink:0; | ||
| 67 | } | ||
| 68 | .file-list li span { line-height:1.55;padding-top:1px; } | ||
| 69 | |||
| 70 | /* Info callout */ | ||
| 71 | .note-info { background:#e1f1f9 !important;border:1px solid #b3d4ee !important;border-left:4px solid #005AB4 !important;border-radius:6px;padding:12px 16px;margin:14px 0; } | ||
| 72 | .note-hd { font-weight:700;font-size:.85em;display:flex;align-items:center;gap:5px;margin-bottom:5px;color:#003d80 !important; } | ||
| 73 | .note-body { font-size:.875em;color:#222 !important;line-height:1.65; } | ||
| 74 | |||
| 75 | /* Parent topic */ | ||
| 76 | .parent-topic { font-size:.82em;color:#555;margin:28px 0 0 0;border-top:1px solid #E8E8E8;padding-top:10px; } | ||
| 77 | .parent-topic a { color:#005AB4; } | ||
| 78 | |||
| 79 | /* Lightbox */ | ||
| 80 | #rn-lb { display:none;position:fixed;inset:0;z-index:9998;background:rgba(0,0,0,.85);cursor:zoom-out;align-items:center;justify-content:center; } | ||
| 81 | #rn-lb.open { display:flex; } | ||
| 82 | #rn-lb-wrap { position:relative;cursor:default;max-width:94vw;max-height:92vh; } | ||
| 83 | #rn-lb-wrap img { max-width:100%;max-height:92vh;border-radius:5px;display:block; } | ||
| 84 | #rn-lb-x { position:absolute;top:-13px;right:-13px;background:#005AB4;color:#fff;width:26px;height:26px;border-radius:50%;border:none;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center; } | ||
| 85 | |||
| 86 | /* Back to top */ | ||
| 87 | #rn-top { position:fixed;bottom:60px;right:60px;z-index:9997;width:36px;height:36px;border-radius:50%;background:#005AB4;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(8px);transition:opacity .22s,transform .22s;pointer-events:none;box-shadow:0 2px 8px rgba(0,90,180,.3); } | ||
| 88 | #rn-top.on { opacity:1;transform:translateY(0);pointer-events:auto; } | ||
| 89 | #rn-top:hover { background:#0066cc; } | ||
| 90 | </style> | ||
| 91 | |||
| 92 | <div id="rn-prog"></div> | ||
| 93 | <div id="rn-lb"> | ||
| 94 | <div id="rn-lb-wrap"> | ||
| 95 | <button id="rn-lb-x" onclick="closeLightbox()">✕</button> | ||
| 96 | <img id="rn-lb-img" src="" alt=""/> | ||
| 97 | </div> | ||
| 98 | </div> | ||
| 99 | <button id="rn-top" onclick="window.scrollTo({top:0,behavior:'smooth'})" title="Back to top"> | ||
| 100 | <svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor"><path d="M8 4l5 5H3z"/></svg> | ||
| 101 | </button> | ||
| 102 | |||
| 103 | <div class="doc-content"> | ||
| 104 | |||
| 105 | <!-- NOTE: Do NOT add <h1> — XWiki renders the title natively --> | ||
| 106 | |||
| 107 | <div class="diagram-wrap"> | ||
| 108 | <img | ||
| 109 | src="https://wiki.centosoftware.com/xwiki/bin/download/CENTO%20Manuals/Network%20diagram%20%28CLOUD%29/WebHome/Screenshot%202025-11-11%20at%2015.58.11.png" | ||
| 110 | alt="CENTO Network Diagram — Cloud deployment" | ||
| 111 | onclick="openLightbox(this)"/> | ||
| 112 | <p class="diagram-cap">Network Diagram — CENTO Cloud deployment topology</p> | ||
| 113 | </div> | ||
| 114 | |||
| 115 | <h2>VPN connection via OpenVPN</h2> | ||
| 116 | |||
| 117 | <p>When working via wired communication channels (Internet), it is recommended to establish a secure data exchange channel between the client’s equipment and the CENTO server using a <strong>VPN channel based on the OpenVPN protocol</strong>.</p> | ||
| 118 | |||
| 119 | <p>To implement an OpenVPN channel, the client must have a router that supports the OpenVPN protocol (supported by most modern routers).</p> | ||
| 120 | |||
| 121 | <h2>Connection files</h2> | ||
| 122 | |||
| 123 | <p>The following files are provided to the client for connection:</p> | ||
| 124 | |||
| 125 | <ul class="file-list"> | ||
| 126 | <li><code>ca.crt</code> <span>Public certificate of the certification authority</span></li> | ||
| 127 | <li><code>client.crt</code> <span>Public client encryption certificate</span></li> | ||
| 128 | <li><code>client.key</code> <span>Private key for the client certificate</span></li> | ||
| 129 | <li><code>auth.cfg</code> <span>File containing the username and password</span></li> | ||
| 130 | <li><code>client.ovpn</code> <span>OpenVPN configuration file</span></li> | ||
| 131 | </ul> | ||
| 132 | |||
| 133 | <div class="note-info"> | ||
| 134 | <div class="note-hd"><span>ℹ</span> Security note</div> | ||
| 135 | <div class="note-body">The files <code>client.crt</code>, <code>client.key</code>, and <code>auth.cfg</code> are generated <strong>individually for each client</strong> to ensure connection security.</div> | ||
| 136 | </div> | ||
| 137 | |||
| 138 | <div class="parent-topic">Parent topic: <a href="[[CENTO Manuals>>doc:CENTO Manuals.WebHome]]">CENTO Manuals</a></div> | ||
| 139 | |||
| 140 | </div> | ||
| 141 | |||
| 142 | <script> | ||
| 143 | (function(){ | ||
| 144 | var bar=document.getElementById('rn-prog'); | ||
| 145 | var top=document.getElementById('rn-top'); | ||
| 146 | window.addEventListener('scroll',function(){ | ||
| 147 | var d=document.documentElement; | ||
| 148 | var pct=d.scrollTop/(d.scrollHeight-d.clientHeight); | ||
| 149 | bar.style.width=(pct*100)+'%'; | ||
| 150 | d.scrollTop>200?top.classList.add('on'):top.classList.remove('on'); | ||
| 151 | },{passive:true}); | ||
| 152 | |||
| 153 | var lb=document.getElementById('rn-lb'); | ||
| 154 | var lbI=document.getElementById('rn-lb-img'); | ||
| 155 | window.openLightbox=function(img){lbI.src=img.src;lbI.alt=img.alt;lb.classList.add('open');document.body.style.overflow='hidden';}; | ||
| 156 | window.closeLightbox=function(){lb.classList.remove('open');document.body.style.overflow='';}; | ||
| 157 | lb.addEventListener('click',function(e){if(e.target===lb)closeLightbox();}); | ||
| 158 | document.addEventListener('keydown',function(e){if(e.key==='Escape')closeLightbox();}); | ||
| 159 | })(); | ||
| 160 | </script> | ||
| 161 | {{/html}} | ||
| 162 |