This commit is contained in:
2026-02-26 09:54:25 +03:00
parent 1c0c65a5dc
commit 91b6cfc9cf
4 changed files with 382 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
# ██████╗ ███████╗ ██████╗██████╗ █████╗ ██████╗ ███████╗██╗
# ██╔══██╗██╔════╝██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔════╝██║
# ██████╔╝█████╗ ██║ ██████╔╝███████║██████╔╝█████╗ ██║
# ██╔══██╗██╔══╝ ██║ ██╔══██╗██╔══██║██╔══██╗██╔══╝ ██║
# ██║ ██║███████╗╚██████╗██║ ██║██║ ██║██║ ██║███████╗███████╗
# ╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝
# ▄▄▄· ▄▄▄· ▄▄▄ ▄▄▄ . ▄▄▄· ▄▄▄· ▄▄▄▄▄ ▄ .▄
# ▐█ ▀█ ▐█ ▄█ ▐█ ▀█ ▀▄.▀·▐█ ▀█ ▐█ ▀█ •██ ██▪▐█
# ▄█▀▀█ ██▀· ▄█▀▀█ ▐▀▀▪▄▄█▀▀█ ▄█▀▀█ ▐█.▪██▀▐█
# ▐█ ▪▐▌▐█▪·•▐█ ▪▐▌▐█▄▄▌▐█ ▪▐▌▐█ ▪▐▌ ▐█▌·██▌▐▀
# ▀ ▀ .▀ ▀ ▀ ▀▀▀ ▀ ▀ ▀ ▀ ▀▀▀ ▀▀▀ ·
# =====================================================================
# 🔹 **ТРЕТИЙ ЭШЕЛОН** | СЕКРЕТНЫЙ РЕПОЗИТОРИЙ
# =====================================================================
#
# **ОПЕРАТИВНИК:** Spirin Evgeniy
# **КОНТАКТ:** [https://t.me/Y0zhyck](https://t.me/Y0zhyck)
#
# ---
#
# ⚠️ **Данный репозиторий является ЧАСТНЫМ.**
# Доступ предоставляется только действующим оперативникам Третьего эшелона.
# Любое копирование или распространение информации без разрешения строго запрещено.
#
# ---
#
# ## 🎮 3D-интерфейс
# Для входа в систему визуализации данных откройте [`index.html`](index.html) в корне репозитория.
# Требуется современный браузер с поддержкой WebGL.
#
# ![Third Echelon](assets/third-echelon-logo.png)
#
# ---
# *«Сэм Фишер не одобрит, если вы оставите следы.»*

148
home-orgininal.tmpl Normal file
View File

@@ -0,0 +1,148 @@
{{template "base/head" .}}
<style>
:root {
--bg-color: #0f1217;
--text-color: #b0ffb0;
--accent-color: #4af030;
--secondary-color: #2a3a2a;
--glow: 0 0 10px rgba(74, 240, 48, 0.5);
}
body {
background-color: var(--bg-color) !important;
color: var(--text-color) !important;
font-family: 'Courier New', monospace;
animation: fadeIn 1.5s ease-in-out; /* плавное появление всей страницы */
}
.home {
background: transparent !important;
}
.logo {
filter: drop-shadow(0 0 20px #4af030);
border-radius: 50%;
background: #0a0e12;
padding: 10px;
animation: glowPulse 3s infinite ease-in-out; /* пульсация свечения */
}
.hero h1, .hero h2 {
font-family: 'Courier New', monospace;
text-transform: uppercase;
letter-spacing: 2px;
color: var(--accent-color) !important;
text-shadow: var(--glow);
}
.hero h1 {
font-size: 3rem;
animation: textFlicker 4s infinite; /* мерцание неона */
}
.page-grid {
border: 1px solid var(--secondary-color);
box-shadow: inset 0 0 50px rgba(0,255,0,0.1);
padding: 2rem;
margin: 1rem 0;
background: rgba(0,10,0,0.3);
backdrop-filter: blur(2px);
animation: slideUp 1s ease-out; /* появление снизу */
}
.column h1 {
color: var(--accent-color) !important;
font-size: 1.8rem;
border-bottom: 1px dashed var(--secondary-color);
padding-bottom: 0.5rem;
}
.column p {
color: #aaa;
line-height: 1.8;
animation: fadeIn 2s ease-in; /* текст проявляется чуть позже */
}
.column a {
color: var(--accent-color) !important;
text-decoration: none;
border-bottom: 1px dotted var(--accent-color);
transition: text-shadow 0.3s;
}
.column a:hover {
text-shadow: var(--glow);
}
.footer-cursor {
text-align: center;
margin-top: 2rem;
color: var(--accent-color);
animation: blink 1s step-end infinite;
}
/* Ключевые кадры */
@keyframes fadeIn {
0% { opacity: 0; }
100% { opacity: 1; }
}
@keyframes glowPulse {
0% { filter: drop-shadow(0 0 15px #4af030); transform: scale(1); }
50% { filter: drop-shadow(0 0 30px #4af030); transform: scale(1.02); }
100% { filter: drop-shadow(0 0 15px #4af030); transform: scale(1); }
}
@keyframes textFlicker {
0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% { opacity: 1; text-shadow: 0 0 5px #4af030, 0 0 15px #4af030; }
20%, 24%, 55% { opacity: 0.7; text-shadow: none; }
}
@keyframes slideUp {
0% { opacity: 0; transform: translateY(30px); }
100% { opacity: 1; transform: translateY(0); }
}
@keyframes blink {
0%,100% { opacity: 1; }
50% { opacity: 0; }
}
</style>
<div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}" class="page-content home">
<div class="tw-mb-8 tw-px-8">
<div class="center">
<img class="logo" width="220" height="220" src="{{AssetUrlPrefix}}/img/logo.png" alt="{{ctx.Locale.Tr "logo"}}">
<div class="hero">
<h1 class="ui icon header title tw-text-balance">
{{if .IsSigned}}АГЕНТ {{.SignedUser.Name}} В СЕТИ{{else}}ТРЕТИЙ ЭШЕЛОН / GIT{{end}}
</h1>
<h2 class="tw-text-balance">
{{if .IsSigned}}Журналы миссий{{else}}Частный репозиторий{{end}}
</h2>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
{{svg "octicon-flame"}} МИССИЯ: УСТАНОВЛЕН
</h1>
<p class="large tw-text-balance">
Развернут в режиме скрытности.
</p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
{{svg "octicon-device-desktop"}} ОПЕРАЦИОННАЯ ПЛАТФОРМА
</h1>
<p class="large tw-text-balance">
Внедрён в UBUNTU 24 LTS.
</p>
<p class="large tw-text-balance" style="margin-top: 1rem;">
<span style="opacity:0.7;">Оперативник</span> <strong style="color:var(--accent-color);"><a href="https://t.me/Y0zhyck">Yozhyck</a></strong>
</p>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
{{svg "octicon-rocket"}} СКРЫТЫЕ ОПЕРАЦИИ
</h1>
<p class="large tw-text-balance">
Лёгкий и незаметный. Минимальное воздействие, максимальная производительность. Никаких следов.
</p>
</div>
</div>
<div class="footer-cursor">_</div>
</div>
{{template "base/footer" .}}

193
index.html Normal file
View File

@@ -0,0 +1,193 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>▮ ТРЕТИЙ ЭШЕЛОН ▮ ДОСТУП ОПЕРАТИВНИКА</title>
<link rel="stylesheet" href="style/style.css">
<style>
body { margin: 0; overflow: hidden; font-family: 'Courier New', monospace; }
#info {
position: absolute;
bottom: 30px;
left: 30px;
color: #0f0;
background: rgba(0,0,0,0.7);
padding: 15px 25px;
border-left: 4px solid #0f0;
z-index: 10;
text-shadow: 0 0 5px #0f0;
pointer-events: none;
border-radius: 0 8px 8px 0;
backdrop-filter: blur(3px);
}
#info a {
color: #0f0;
text-decoration: none;
border-bottom: 1px dashed #0f0;
}
#status {
position: absolute;
top: 30px;
right: 30px;
color: #0f0;
background: rgba(0,0,0,0.5);
padding: 8px 15px;
border: 1px solid #0f0;
z-index: 10;
font-size: 14px;
letter-spacing: 2px;
backdrop-filter: blur(3px);
}
.corner-triangle {
position: absolute;
top: 0;
left: 0;
width: 0;
height: 0;
border-top: 60px solid #0f0;
border-right: 60px solid transparent;
z-index: 20;
opacity: 0.6;
}
</style>
</head>
<body>
<div class="corner-triangle"></div>
<div id="status">🔒 СЕКРЕТНО // ТОЛЬКО ДЛЯ ОПЕРАТИВНИКОВ</div>
<div id="info">
⚡ ОПЕРАТИВНИК: <strong>Spirin Evgeniy</strong><br>
📡 СВЯЗЬ: <a href="https://t.me/Y0zhyck" target="_blank">https://t.me/Y0zhyck</a><br>
<span style="font-size:12px; opacity:0.7;">▸ ДОСТУП РАЗРЕШЁН ТОЛЬКО СОТРУДНИКАМ 3-ГО ЭШЕЛОНА ◂</span>
</div>
<!-- Подключаем Three.js с CDN -->
<script type="importmap">
{
"imports": {
"three": "https://unpkg.com/three@0.128.0/build/three.module.js"
}
}
</script>
<script type="module">
import * as THREE from 'three';
import { OrbitControls } from 'https://unpkg.com/three@0.128.0/examples/jsm/controls/OrbitControls.js';
// Инициализация сцены, камеры, рендерера
const scene = new THREE.Scene();
scene.background = new THREE.Color(0x050510); // тёмно-синий почти чёрный
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(0, 2, 8);
const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: false });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = false; // для лёгкости
renderer.setPixelRatio(window.devicePixelRatio);
document.body.appendChild(renderer.domElement);
// Освещение
const ambientLight = new THREE.AmbientLight(0x404060);
scene.add(ambientLight);
const dirLight = new THREE.DirectionalLight(0xffffff, 1);
dirLight.position.set(1, 2, 1);
scene.add(dirLight);
const pointLight = new THREE.PointLight(0x00ff00, 0.5, 10);
pointLight.position.set(0, 1, 3);
scene.add(pointLight);
// Создаём логотип "3-й эшелон" из геометрий
const group = new THREE.Group();
// Центральный элемент: буква "III" из цилиндров
const material = new THREE.MeshStandardMaterial({ color: 0x00ff00, emissive: 0x003300 });
const createPillar = (x, y, z, height = 2) => {
const geometry = new THREE.CylinderGeometry(0.3, 0.3, height, 16);
const pillar = new THREE.Mesh(geometry, material);
pillar.position.set(x, y + height/2, z);
return pillar;
};
group.add(createPillar(-1.5, 0, 0, 2.2)); // левая
group.add(createPillar(0, 0, 0, 2.5)); // центральная
group.add(createPillar(1.5, 0, 0, 2.2)); // правая
// Нижняя перекладина
const baseGeo = new THREE.BoxGeometry(4.2, 0.2, 0.6);
const baseMat = new THREE.MeshStandardMaterial({ color: 0x00aa00, emissive: 0x002200 });
const base = new THREE.Mesh(baseGeo, baseMat);
base.position.set(0, 0.1, 0);
group.add(base);
// Верхняя перекладина
const topBar = new THREE.Mesh(baseGeo, baseMat);
topBar.position.set(0, 2.4, 0);
group.add(topBar);
// Добавляем вращающиеся кольца вокруг
const ringMaterial = new THREE.MeshStandardMaterial({ color: 0x00ff00, emissive: 0x002200, wireframe: true });
const ringGeo = new THREE.TorusGeometry(2.0, 0.05, 16, 64);
const ring = new THREE.Mesh(ringGeo, ringMaterial);
ring.rotation.x = Math.PI / 2;
ring.rotation.z = Date.now() * 0.001;
group.add(ring);
const ring2 = new THREE.Mesh(new THREE.TorusGeometry(2.3, 0.03, 16, 64), ringMaterial);
ring2.rotation.x = Math.PI / 2;
ring2.rotation.y = 0.3;
group.add(ring2);
scene.add(group);
// Добавляем звёзды/частицы для атмосферы
const starsGeo = new THREE.BufferGeometry();
const starsCount = 800;
const positions = new Float32Array(starsCount * 3);
for (let i = 0; i < starsCount * 3; i += 3) {
positions[i] = (Math.random() - 0.5) * 40;
positions[i+1] = (Math.random() - 0.5) * 20;
positions[i+2] = (Math.random() - 0.5) * 40 - 10; // распределение вглубь
}
starsGeo.setAttribute('position', new THREE.BufferAttribute(positions, 3));
const starsMat = new THREE.PointsMaterial({ color: 0x226622, size: 0.08 });
const stars = new THREE.Points(starsGeo, starsMat);
scene.add(stars);
// Анимация
let clock = new THREE.Clock();
function animate() {
requestAnimationFrame(animate);
const delta = clock.getDelta();
const time = performance.now() * 0.001;
// Вращаем группу медленно
group.rotation.y += 0.002;
group.rotation.x = Math.sin(time * 0.2) * 0.1;
// Вращаем кольца независимо
ring.rotation.z += 0.005;
ring2.rotation.y += 0.003;
// Мерцание звёзд (меняем размер)
stars.material.size = 0.08 + Math.sin(time * 5) * 0.02;
renderer.render(scene, camera);
}
animate();
// Адаптация под ресайз окна
window.addEventListener('resize', onWindowResize, false);
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
</script>
</body>
</html>

7
style/style.css Normal file
View File

@@ -0,0 +1,7 @@
/* Дополнительные стили для страницы, если потребуется */
body {
margin: 0;
overflow: hidden;
font-family: 'Courier New', monospace;
}
/* Всё остальное уже в index.html */