Compare commits
1 Commits
testing
...
fb82a41e4e
| Author | SHA1 | Date | |
|---|---|---|---|
| fb82a41e4e |
13
README.md
13
README.md
@@ -1,14 +1,3 @@
|
||||
# ██████╗ ███████╗ ██████╗██████╗ █████╗ ██████╗ ███████╗██╗
|
||||
# ██╔══██╗██╔════╝██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔════╝██║
|
||||
# ██████╔╝█████╗ ██║ ██████╔╝███████║██████╔╝█████╗ ██║
|
||||
# ██╔══██╗██╔══╝ ██║ ██╔══██╗██╔══██║██╔══██╗██╔══╝ ██║
|
||||
# ██║ ██║███████╗╚██████╗██║ ██║██║ ██║██║ ██║███████╗███████╗
|
||||
# ╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝
|
||||
# ▄▄▄· ▄▄▄· ▄▄▄ ▄▄▄ . ▄▄▄· ▄▄▄· ▄▄▄▄▄ ▄ .▄
|
||||
# ▐█ ▀█ ▐█ ▄█ ▐█ ▀█ ▀▄.▀·▐█ ▀█ ▐█ ▀█ •██ ██▪▐█
|
||||
# ▄█▀▀█ ██▀· ▄█▀▀█ ▐▀▀▪▄▄█▀▀█ ▄█▀▀█ ▐█.▪██▀▐█
|
||||
# ▐█ ▪▐▌▐█▪·•▐█ ▪▐▌▐█▄▄▌▐█ ▪▐▌▐█ ▪▐▌ ▐█▌·██▌▐▀
|
||||
# ▀ ▀ .▀ ▀ ▀ ▀▀▀ ▀ ▀ ▀ ▀ ▀▀▀ ▀▀▀ ·
|
||||
# =====================================================================
|
||||
# 🔹 **ТРЕТИЙ ЭШЕЛОН** | СЕКРЕТНЫЙ РЕПОЗИТОРИЙ
|
||||
# =====================================================================
|
||||
@@ -25,7 +14,7 @@
|
||||
# ---
|
||||
#
|
||||
# ## 🎮 3D-интерфейс
|
||||
# Для входа в систему визуализации данных откройте [`index.html`](index.html) в корне репозитория.
|
||||
# Для входа в систему визуализации данных откройте [`index.html`](Изначальный.html) в корне репозитория.
|
||||
# Требуется современный браузер с поддержкой WebGL.
|
||||
#
|
||||
# 
|
||||
|
||||
BIN
assets/4444.png
BIN
assets/4444.png
Binary file not shown.
|
Before Width: | Height: | Size: 379 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 379 KiB |
@@ -1,224 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>▮ ТРЕТИЙ ЭШЕЛОН ▮ ДОСТУП ОПЕРАТИВНИКА</title>
|
||||
<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;
|
||||
}
|
||||
/* Стили для кнопки входа */
|
||||
#login-button {
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
right: 30px;
|
||||
z-index: 30;
|
||||
background: transparent;
|
||||
border: 2px solid #0f0;
|
||||
color: #0f0;
|
||||
padding: 12px 30px;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
font-family: 'Courier New', monospace;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 4px;
|
||||
cursor: pointer;
|
||||
backdrop-filter: blur(3px);
|
||||
background-color: rgba(0, 20, 0, 0.4);
|
||||
box-shadow: 0 0 15px #0f0;
|
||||
transition: 0.3s;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
}
|
||||
#login-button:hover {
|
||||
background-color: #0f0;
|
||||
color: #000;
|
||||
box-shadow: 0 0 30px #0f0;
|
||||
border-color: #fff;
|
||||
}
|
||||
</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">Telegram</a><br>
|
||||
<span style="font-size:12px; opacity:0.7;">▸ ДОСТУП РАЗРЕШЁН ТОЛЬКО СОТРУДНИКАМ 3-ГО ЭШЕЛОНА ◂</span>
|
||||
</div>
|
||||
|
||||
<!-- Кнопка входа (ведёт на страницу логина Gitea, замени ссылку при необходимости) -->
|
||||
<a href="/user/login" id="login-button">⎈ ВОЙТИ ⎈</a>
|
||||
|
||||
<!-- Подключаем 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>
|
||||
390
ilike.html
390
ilike.html
@@ -1,390 +0,0 @@
|
||||
{{template "base/head" .}}
|
||||
|
||||
<style>
|
||||
|
||||
:root{
|
||||
|
||||
--bg:#020304;
|
||||
--green:#4af030;
|
||||
--dark:#0a0f0a;
|
||||
|
||||
}
|
||||
|
||||
|
||||
body{
|
||||
|
||||
background:black!important;
|
||||
color:var(--green);
|
||||
font-family:Courier New,monospace;
|
||||
overflow:hidden;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* GRID */
|
||||
|
||||
body::before{
|
||||
|
||||
content:"";
|
||||
position:fixed;
|
||||
width:100%;
|
||||
height:100%;
|
||||
|
||||
background-image:
|
||||
|
||||
linear-gradient(rgba(0,255,0,0.06) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(0,255,0,0.06) 1px, transparent 1px);
|
||||
|
||||
background-size:40px 40px;
|
||||
|
||||
pointer-events:none;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* CRT */
|
||||
|
||||
body::after{
|
||||
|
||||
content:"";
|
||||
position:fixed;
|
||||
width:100%;
|
||||
height:100%;
|
||||
|
||||
background:
|
||||
|
||||
linear-gradient(
|
||||
rgba(0,255,0,0.03),
|
||||
rgba(0,255,0,0.03)
|
||||
);
|
||||
|
||||
animation:flicker 0.15s infinite;
|
||||
|
||||
pointer-events:none;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@keyframes flicker{
|
||||
|
||||
0%{opacity:0.9}
|
||||
50%{opacity:1}
|
||||
100%{opacity:0.9}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* CENTER */
|
||||
|
||||
.center{
|
||||
|
||||
position:absolute;
|
||||
|
||||
top:50%;
|
||||
left:50%;
|
||||
|
||||
transform:translate(-50%,-50%);
|
||||
|
||||
text-align:center;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* LOGO */
|
||||
|
||||
#logo3d{
|
||||
|
||||
width:260px;
|
||||
height:260px;
|
||||
margin:auto;
|
||||
|
||||
filter:
|
||||
|
||||
drop-shadow(0 0 20px #4af030)
|
||||
drop-shadow(0 0 60px #4af030);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* TEXT */
|
||||
|
||||
.title{
|
||||
|
||||
font-size:38px;
|
||||
|
||||
margin-top:20px;
|
||||
|
||||
text-shadow:0 0 20px #4af030;
|
||||
|
||||
animation:flickerText 3s infinite;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@keyframes flickerText{
|
||||
|
||||
0%,18%,22%,25%,53%,57%,100%{opacity:1}
|
||||
|
||||
20%,24%,55%{opacity:0.4}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* STATUS */
|
||||
|
||||
.status{
|
||||
|
||||
margin-top:20px;
|
||||
|
||||
font-size:18px;
|
||||
|
||||
opacity:0.8;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* SCANNER */
|
||||
|
||||
.scan{
|
||||
|
||||
position:fixed;
|
||||
|
||||
width:100%;
|
||||
height:3px;
|
||||
|
||||
background:#4af030;
|
||||
|
||||
box-shadow:0 0 20px #4af030;
|
||||
|
||||
animation:scan 4s linear infinite;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@keyframes scan{
|
||||
|
||||
0%{top:0}
|
||||
|
||||
100%{top:100%}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="scan"></div>
|
||||
|
||||
|
||||
|
||||
<div class="center">
|
||||
|
||||
|
||||
<div id="logo3d"></div>
|
||||
|
||||
|
||||
<div class="title">
|
||||
|
||||
THIRD ECHELON
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="status" id="status">
|
||||
|
||||
INITIALIZING SYSTEM...
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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";
|
||||
|
||||
|
||||
|
||||
const container =
|
||||
document.getElementById("logo3d");
|
||||
|
||||
|
||||
|
||||
const scene =
|
||||
new THREE.Scene();
|
||||
|
||||
|
||||
|
||||
const camera =
|
||||
new THREE.PerspectiveCamera(
|
||||
45,
|
||||
1,
|
||||
0.1,
|
||||
1000
|
||||
);
|
||||
|
||||
|
||||
camera.position.z=3;
|
||||
|
||||
|
||||
|
||||
const renderer =
|
||||
new THREE.WebGLRenderer({
|
||||
alpha:true,
|
||||
antialias:true
|
||||
});
|
||||
|
||||
|
||||
renderer.setSize(260,260);
|
||||
|
||||
renderer.setClearColor(0x000000,0);
|
||||
|
||||
|
||||
container.appendChild(
|
||||
renderer.domElement
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
/* LOGO TEXTURE */
|
||||
|
||||
const texture =
|
||||
new THREE.TextureLoader().load(
|
||||
|
||||
"https://git.grenu4.ru/y0zhyck/templates-for-gitea/media/branch/main/assets/third-echelon-logo.png"
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
/* LOGO */
|
||||
|
||||
const mesh =
|
||||
new THREE.Mesh(
|
||||
|
||||
new THREE.CircleGeometry(1,64),
|
||||
|
||||
new THREE.MeshBasicMaterial({
|
||||
|
||||
map:texture,
|
||||
transparent:true
|
||||
|
||||
})
|
||||
|
||||
);
|
||||
|
||||
|
||||
scene.add(mesh);
|
||||
|
||||
|
||||
|
||||
|
||||
/* GLOW */
|
||||
|
||||
const glow =
|
||||
new THREE.Mesh(
|
||||
|
||||
new THREE.CircleGeometry(1.2,64),
|
||||
|
||||
new THREE.MeshBasicMaterial({
|
||||
|
||||
color:0x4af030,
|
||||
transparent:true,
|
||||
opacity:0.15
|
||||
|
||||
})
|
||||
|
||||
);
|
||||
|
||||
|
||||
scene.add(glow);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function animate(){
|
||||
|
||||
requestAnimationFrame(animate);
|
||||
|
||||
mesh.rotation.y+=0.01;
|
||||
|
||||
glow.rotation.y-=0.005;
|
||||
|
||||
renderer.render(scene,camera);
|
||||
|
||||
}
|
||||
|
||||
|
||||
animate();
|
||||
|
||||
|
||||
|
||||
|
||||
/* STATUS TEXT */
|
||||
|
||||
const status =
|
||||
document.getElementById("status");
|
||||
|
||||
|
||||
setTimeout(()=>{
|
||||
|
||||
status.innerHTML="CONNECTING TO NSA...";
|
||||
|
||||
},2000);
|
||||
|
||||
|
||||
|
||||
setTimeout(()=>{
|
||||
|
||||
status.innerHTML="AUTHENTICATING OPERATIVE...";
|
||||
|
||||
},4000);
|
||||
|
||||
|
||||
|
||||
setTimeout(()=>{
|
||||
|
||||
status.innerHTML="ACCESS GRANTED";
|
||||
|
||||
status.style.color="#7CFF00";
|
||||
|
||||
},6000);
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
{{template "base/footer" .}}
|
||||
139
logoadd.html
139
logoadd.html
@@ -1,139 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>▮ ТРЕТИЙ ЭШЕЛОН ▮ ДОСТУП ОПЕРАТИВНИКА</title>
|
||||
<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;
|
||||
}
|
||||
#login-button {
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
right: 30px;
|
||||
z-index: 30;
|
||||
background: transparent;
|
||||
border: 2px solid #0f0;
|
||||
color: #0f0;
|
||||
padding: 12px 30px;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
font-family: 'Courier New', monospace;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 4px;
|
||||
cursor: pointer;
|
||||
backdrop-filter: blur(3px);
|
||||
background-color: rgba(0, 20, 0, 0.4);
|
||||
box-shadow: 0 0 15px #0f0;
|
||||
transition: 0.3s;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
}
|
||||
#login-button:hover {
|
||||
background-color: #0f0;
|
||||
color: #000;
|
||||
box-shadow: 0 0 30px #0f0;
|
||||
border-color: #fff;
|
||||
}
|
||||
/* Стили для логотипа (способ 1) */
|
||||
#corner-logo {
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 20px;
|
||||
width: 150px;
|
||||
z-index: 30;
|
||||
opacity: 0.9;
|
||||
filter: drop-shadow(0 0 10px #0f0);
|
||||
pointer-events: none; /* чтобы не мешал кликам по кнопке */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="corner-triangle"></div>
|
||||
<!-- Логотип в углу (способ 1) -->
|
||||
<img src="assets/third-echelon-logo.png" alt="Third Echelon" id="corner-logo">
|
||||
|
||||
<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>
|
||||
|
||||
<!-- Кнопка входа -->
|
||||
<a href="/user/login" id="login-button">⎈ ВОЙТИ ⎈</a>
|
||||
|
||||
<!-- Подключаем Three.js -->
|
||||
<script type="importmap">
|
||||
{
|
||||
"imports": {
|
||||
"three": "https://unpkg.com/three@0.128.0/build/three.module.js"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="module">
|
||||
// Здесь весь твой предыдущий код Three.js (без изменений)
|
||||
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);
|
||||
|
||||
// освещение, группа, звёзды и анимация (как у тебя)
|
||||
// ... (полный код из предыдущего сообщения)
|
||||
// Я не копирую его повторно, чтобы не загромождать ответ, но ты вставишь свой полный скрипт сюда.
|
||||
// Убедись, что группа с колоннами и кольцами остаётся, если не заменяешь её спрайтом.
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
273
soso.html
Normal file
273
soso.html
Normal file
@@ -0,0 +1,273 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Third Echelon Secure Node</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=Share+Tech+Mono&display=swap');
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
background: #000000;
|
||||
color: #00ff9c;
|
||||
overflow: hidden;
|
||||
cursor: none;
|
||||
}
|
||||
|
||||
/* Scanlines + CRT flicker */
|
||||
body::after {
|
||||
content: "";
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: repeating-linear-gradient(
|
||||
to bottom,
|
||||
rgba(0,255,156,0.05) 1px,
|
||||
transparent 3px
|
||||
);
|
||||
pointer-events: none;
|
||||
animation: flicker 0.12s infinite;
|
||||
}
|
||||
@keyframes flicker {
|
||||
0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% {opacity: 0.03;}
|
||||
20%, 22%, 24%, 55% {opacity: 0.07;}
|
||||
}
|
||||
|
||||
/* HUD Grid */
|
||||
.hud-grid {
|
||||
position: fixed;
|
||||
width: 200%;
|
||||
height: 200%;
|
||||
background: linear-gradient(rgba(0,255,156,0.05) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(0,255,156,0.05) 1px, transparent 1px);
|
||||
background-size: 50px 50px;
|
||||
animation: gridMove 12s linear infinite;
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
}
|
||||
@keyframes gridMove {
|
||||
0% {transform: translate(0,0);}
|
||||
100% {transform: translate(-50px,-50px);}
|
||||
}
|
||||
|
||||
/* Scanning line */
|
||||
.scan-line {
|
||||
position: fixed;
|
||||
top: -2px;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
background: rgba(0,255,156,0.2);
|
||||
box-shadow: 0 0 15px #00ff9c, 0 0 30px #00ff9c inset;
|
||||
animation: scan 3s linear infinite;
|
||||
pointer-events: none;
|
||||
z-index: 1;
|
||||
}
|
||||
@keyframes scan {
|
||||
0% {top: -2px;}
|
||||
100% {top: 100%;}
|
||||
}
|
||||
|
||||
/* Blinking HUD indicators */
|
||||
.indicator {
|
||||
position: fixed;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
background: #00ff9c;
|
||||
top: 10%;
|
||||
left: 10%;
|
||||
box-shadow: 0 0 10px #00ff9c, 0 0 20px #00ff9c inset;
|
||||
animation: blink-ind 1.2s infinite;
|
||||
z-index: 2;
|
||||
}
|
||||
@keyframes blink-ind {
|
||||
0%, 50%, 100% {opacity:1;}
|
||||
25%, 75% {opacity:0.2;}
|
||||
}
|
||||
|
||||
/* Terminal container */
|
||||
.container {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 520px;
|
||||
padding: 40px;
|
||||
border: 1px solid #00ff9c;
|
||||
background: rgba(0, 0, 0, 0.95);
|
||||
box-shadow: 0 0 40px #00ff9c, inset 0 0 60px rgba(0,255,156,0.35);
|
||||
z-index: 3;
|
||||
}
|
||||
|
||||
/* Header / Subheader */
|
||||
.header {
|
||||
font-size: 28px;
|
||||
margin-bottom: 5px;
|
||||
text-shadow: 0 0 15px #00ff9c;
|
||||
}
|
||||
.sub {
|
||||
font-size: 14px;
|
||||
color: #00aa66;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
/* Terminal log */
|
||||
.log {
|
||||
font-size: 13px;
|
||||
line-height: 1.4;
|
||||
height: 220px;
|
||||
overflow: hidden;
|
||||
background: rgba(0,0,0,0.2);
|
||||
padding: 10px;
|
||||
border: 1px solid #00ff9c;
|
||||
box-shadow: inset 0 0 15px rgba(0,255,156,0.5);
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.log span {
|
||||
display: inline-block;
|
||||
animation: shake 0.15s infinite;
|
||||
}
|
||||
@keyframes shake {
|
||||
0% { transform: translate(0,0);}
|
||||
25% { transform: translate(-1px,1px);}
|
||||
50% { transform: translate(1px,-1px);}
|
||||
75% { transform: translate(-1px,1px);}
|
||||
100% { transform: translate(0,0);}
|
||||
}
|
||||
|
||||
/* blinking cursor */
|
||||
.cursor {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
background: #00ff9c;
|
||||
animation: blink 1s infinite;
|
||||
}
|
||||
@keyframes blink {
|
||||
0%,50%,100% {opacity:1;}
|
||||
25%,75% {opacity:0;}
|
||||
}
|
||||
|
||||
/* Login button with glow */
|
||||
.login-btn {
|
||||
display: block;
|
||||
text-align: center;
|
||||
margin-top: 25px;
|
||||
padding: 12px;
|
||||
border: 1px solid #00ff9c;
|
||||
color: #00ff9c;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
transition: 0.3s;
|
||||
position: relative;
|
||||
}
|
||||
.login-btn:hover {
|
||||
background: #00ff9c;
|
||||
color: #000;
|
||||
box-shadow: 0 0 35px #00ff9c, 0 0 70px #00ff9c;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
.footer {
|
||||
margin-top: 20px;
|
||||
font-size: 10px;
|
||||
color: #007744;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Scroll terminal effect */
|
||||
.log.scroll {
|
||||
animation: scrollUp 25s linear infinite;
|
||||
}
|
||||
@keyframes scrollUp {
|
||||
0% {transform: translateY(0);}
|
||||
100% {transform: translateY(-50%);}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="hud-grid"></div>
|
||||
<div class="scan-line"></div>
|
||||
<div class="indicator" style="top:10%; left:10%;"></div>
|
||||
<div class="indicator" style="top:20%; left:85%; animation-delay:0.4s;"></div>
|
||||
<div class="indicator" style="top:70%; left:30%; animation-delay:0.7s;"></div>
|
||||
|
||||
<div class="container">
|
||||
<div class="header">THIRD ECHELON NODE</div>
|
||||
<div class="sub">SECURE GIT ACCESS TERMINAL</div>
|
||||
|
||||
<div class="log" id="terminal-log"></div>
|
||||
|
||||
<a class="login-btn" href="https://git.grenu4.ru/user/login?redirect_to=%2f">
|
||||
AUTHORIZE OPERATIVE
|
||||
</a>
|
||||
|
||||
<div class="footer">
|
||||
Third Echelon Secure System • Gitea Interface • Build 3.0.7
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<audio id="beep-sound" src="https://freesound.org/data/previews/250/250629_4486188-lq.mp3"></audio>
|
||||
|
||||
<script>
|
||||
const log = document.getElementById('terminal-log');
|
||||
const beep = document.getElementById('beep-sound');
|
||||
const messages = [
|
||||
'[SYSTEM] BOOT SEQUENCE INITIATED',
|
||||
'[SYSTEM] ENCRYPTION MODULES LOADED',
|
||||
'[SECURITY] SCANNING FOR AUTHORIZED OPERATORS',
|
||||
'[SECURITY] CLEARANCE LEVEL DETECTED: 3',
|
||||
'[TERMINAL] ACCESS POINT ESTABLISHED',
|
||||
'[TERMINAL] LOGIN REQUIRED <span class="cursor"></span>'
|
||||
];
|
||||
|
||||
let i = 0;
|
||||
|
||||
function typeLine(line, callback) {
|
||||
let j = 0;
|
||||
const interval = setInterval(() => {
|
||||
const span = document.createElement('span');
|
||||
span.textContent = line[j];
|
||||
log.appendChild(span);
|
||||
j++;
|
||||
if (beep) beep.currentTime=0, beep.play();
|
||||
if(j >= line.length) {
|
||||
clearInterval(interval);
|
||||
log.appendChild(document.createElement('br'));
|
||||
if(callback) callback();
|
||||
}
|
||||
log.scrollTop = log.scrollHeight;
|
||||
}, 30);
|
||||
}
|
||||
|
||||
function nextLine() {
|
||||
if(i < messages.length) {
|
||||
typeLine(messages[i], () => {
|
||||
i++;
|
||||
nextLine();
|
||||
});
|
||||
} else {
|
||||
const clone = log.innerHTML;
|
||||
log.innerHTML += clone;
|
||||
log.classList.add('scroll');
|
||||
}
|
||||
}
|
||||
|
||||
nextLine();
|
||||
|
||||
// Cursor-follow glow effect
|
||||
document.addEventListener('mousemove', e => {
|
||||
document.querySelectorAll('.login-btn').forEach(btn => {
|
||||
const rect = btn.getBoundingClientRect();
|
||||
const x = e.clientX - rect.left - rect.width/2;
|
||||
const y = e.clientY - rect.top - rect.height/2;
|
||||
btn.style.boxShadow = `0 0 ${20+Math.abs(x/5)}px #00ff9c, 0 0 ${40+Math.abs(y/5)}px #00ff9c`;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,7 +0,0 @@
|
||||
/* Дополнительные стили для страницы, если потребуется */
|
||||
body {
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
/* Всё остальное уже в index.html */
|
||||
@@ -115,18 +115,18 @@
|
||||
<div class="ui stackable middle very relaxed page grid">
|
||||
<div class="eight wide center column">
|
||||
<h1 class="hero ui icon header">
|
||||
{{svg "octicon-flame"}} МИССИЯ: УСТАНОВЛЕН
|
||||
{{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"}} ОПЕРАЦИОННАЯ ПЛАТФОРМА
|
||||
{{svg "octicon-device-desktop"}} СРЕДА РАЗРАБОТКИ:
|
||||
</h1>
|
||||
<p class="large tw-text-balance">
|
||||
Внедрён в UBUNTU 24 LTS.
|
||||
Базовый лагерь: 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>
|
||||
@@ -136,10 +136,10 @@
|
||||
<div class="ui stackable middle very relaxed page grid">
|
||||
<div class="eight wide center column">
|
||||
<h1 class="hero ui icon header">
|
||||
{{svg "octicon-rocket"}} СКРЫТЫЕ ОПЕРАЦИИ
|
||||
{{svg "octicon-rocket"}} СТЕЛС-РАЗРАБОТКА
|
||||
</h1>
|
||||
<p class="large tw-text-balance">
|
||||
Лёгкий и незаметный. Минимальное воздействие, максимальная производительность. Никаких следов.
|
||||
Коммиты без лишнего шума. Пулл-реквесты без конфликтов. Код, который не оставляет следов.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user