This commit is contained in:
Devdatt Bhatt 2026-04-15 12:17:54 +00:00
parent adefce01cb
commit 1f876fb98d
24 changed files with 312 additions and 167 deletions

0
attempts.json Normal file → Executable file
View File

0
backup_private.pem Normal file → Executable file
View File

0
backup_public.pem Normal file → Executable file
View File

View File

@ -1,10 +1,17 @@
<?php include 'header.php'; ?> <?php include 'header.php'; ?>
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
<div class="containerindex"> <div class="containerindex">
<div class="grid"> <div class="grid">
<div class="card wide"> <div class="card wide">
<h3>ShreeBhattJi</h3> <h3>ShreeBhattJi</h3>
<p>If youve ever read the Panchatantra, a few stories begin like this: “Once upon a time, there lived a poor Brahmin in a village. In this story, that Brahmin is me ShreeBhattJi, also known as Devdatt Bhatt, the King of Automation and Remote Control from the land of great beginnings, Bhavnagar. <p>If you ever read the Panchatantra, a few stories begin like this: “Once upon a time, there lived a poor Brahmin in a village. In this story, that Brahmin is me ShreeBhattJi, also known as Devdatt Bhatt, the King of Automation and Remote Control from the land of great beginnings, Bhavnagar.
<p>I am here to help provide a great viewing experience for users, generate strong commissions for LCOs, MSOs, and ISPs, and create substantial revenue for content owners while contributing fair taxes to the government. I have reason to believe that by upgrading a few devices at the transmission point, both streaming operations and customer viewing experiences can be improved exponentially. <p>I am here to help provide a great viewing experience for users, generate strong commissions for LCOs, MSOs, and ISPs, and create substantial revenue for content owners while contributing fair taxes to the government. I have reason to believe that by upgrading a few devices at the transmission point, both streaming operations and customer viewing experiences can be improved exponentially.
<p>We are proud to present Universal Digital Encoder Decoder as all format to all format encoder cum decoder for dedicated hardware , virtual machines and proxmox lxc images . <p>We are proud to present Universal Digital Encoder Decoder as all format to all format encoder cum decoder for dedicated hardware , virtual machines and proxmox lxc images .
<p><a href="https://urmic.org/trusted-partners/" target="_blank"><button class="red-btn">Meet Our Partners</button></a> <p><a href="https://urmic.org/trusted-partners/" target="_blank"><button class="red-btn">Meet Our Partners</button></a>

0
html/certification.html Normal file → Executable file
View File

0
html/chart.js Normal file → Executable file
View File

View File

@ -1,5 +1,12 @@
<?php include 'header.php'; ?> <?php include 'header.php'; ?>
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
<div class="containerindex"> <div class="containerindex">
<div class="grid"> <div class="grid">
<div class="card wide"> <div class="card wide">
@ -15,35 +22,35 @@
<h3>Say Hello to Us</h3> <h3>Say Hello to Us</h3>
<p>C-1819 , <br>Radhesyam Soc,<br>Kalyabid, <br>Bhavnagar - 364001<br>INDIA <p>C-1819 , <br>Radhesyam Soc,<br>Kalyabid, <br>Bhavnagar - 364001<br>INDIA
<p>support@urmic.org <p>support@urmic.org
<br>+91-8000-74-1919 <br>+91-8000-74-1919
</div> </div>
<div class="card wide"> <div class="card wide">
<div class="social-row" aria-label="Social links"> <div class="social-row" aria-label="Social links">
<a class="social-btn" href="https://www.facebook.com/WorldwideDigitalAssociation" target="_blank" rel="noopener" aria-label="Facebook page"> <a class="social-btn" href="https://www.facebook.com/WorldwideDigitalAssociation" target="_blank" rel="noopener" aria-label="Facebook page">
<svg viewBox="0 0 23 23" fill="currentColor" aria-hidden="true"> <svg viewBox="0 0 23 23" fill="currentColor" aria-hidden="true">
<path d="M22 12.07C22 6.47 17.52 2 11.92 2S2 6.47 2 12.07c0 4.99 3.66 9.12 8.44 9.86v-6.98H8.1v-2.88h2.34V9.41c0-2.31 1.37-3.59 3.46-3.59.99 0 2.03.18 2.03.18v2.23h-1.14c-1.12 0-1.47.7-1.47 1.42v1.7h2.5l-.4 2.88h-2.1v6.98C18.34 21.19 22 17.06 22 12.07z"/> <path d="M22 12.07C22 6.47 17.52 2 11.92 2S2 6.47 2 12.07c0 4.99 3.66 9.12 8.44 9.86v-6.98H8.1v-2.88h2.34V9.41c0-2.31 1.37-3.59 3.46-3.59.99 0 2.03.18 2.03.18v2.23h-1.14c-1.12 0-1.47.7-1.47 1.42v1.7h2.5l-.4 2.88h-2.1v6.98C18.34 21.19 22 17.06 22 12.07z" />
</svg> </svg>
</a> </a>
<a class="social-btn" href="https://www.linkedin.com/in/dbhatt-org/" target="_blank" rel="noopener" aria-label="LinkedIn profile"> <a class="social-btn" href="https://www.linkedin.com/in/dbhatt-org/" target="_blank" rel="noopener" aria-label="LinkedIn profile">
<svg viewBox="0 0 23 23" fill="currentColor" aria-hidden="true"> <svg viewBox="0 0 23 23" fill="currentColor" aria-hidden="true">
<path d="M4.98 3.5C4.98 4.88 3.86 6 2.5 6S0 4.88 0 3.5 1.12 1 2.5 1 4.98 2.12 4.98 3.5zM.5 8h4v14h-4V8zm7.5 0h3.84v1.93h.05c.54-1.02 1.86-2.1 3.83-2.1 4.1 0 4.86 2.7 4.86 6.21V22h-4V15.2c0-1.61-.03-3.68-2.24-3.68-2.24 0-2.58 1.75-2.58 3.55V22h-4V8z"/> <path d="M4.98 3.5C4.98 4.88 3.86 6 2.5 6S0 4.88 0 3.5 1.12 1 2.5 1 4.98 2.12 4.98 3.5zM.5 8h4v14h-4V8zm7.5 0h3.84v1.93h.05c.54-1.02 1.86-2.1 3.83-2.1 4.1 0 4.86 2.7 4.86 6.21V22h-4V15.2c0-1.61-.03-3.68-2.24-3.68-2.24 0-2.58 1.75-2.58 3.55V22h-4V8z" />
</svg> </svg>
</a> </a>
<a class="social-btn" href="https://wa.me/918000741919?text=Hello%20from%20website" target="_blank" rel="noopener" aria-label="WhatsApp chat"> <a class="social-btn" href="https://wa.me/918000741919?text=Hello%20from%20website" target="_blank" rel="noopener" aria-label="WhatsApp chat">
<svg viewBox="0 0 23 23" fill="currentColor" aria-hidden="true"> <svg viewBox="0 0 23 23" fill="currentColor" aria-hidden="true">
<path d="M20.52 3.48A11.93 11.93 0 0 0 12 0C5.37 0 .05 5.32.05 11.92c0 2.1.55 4.15 1.6 5.95L0 24l6.4-1.68c1.75 1.02 3.77 1.56 5.6 1.56 6.63 0 11.95-5.32 11.95-11.95 0-3.2-1.25-6.2-3.43-8.45zM12 21.95c-1.55 0-3.06-.4-4.36-1.16l-.31-.18-3.8 1 1-3.5-.2-.34A8.72 8.72 0 0 1 3.1 11.9c0-4.85 3.95-8.8 8.8-8.8 2.35 0 4.56.92 6.22 2.6a8.76 8.76 0 0 1-6.13 15.45zM17.03 14.1c-.29-.15-1.7-.84-1.97-.93-.27-.09-.47-.14-.67.14-.2.28-.77.93-.94 1.12-.17.19-.34.21-.63.07-.29-.15-1.23-.45-2.34-1.44-.87-.78-1.46-1.74-1.63-2.03-.17-.29-.02-.45.13-.6.13-.13.29-.34.44-.51.14-.17.19-.29.29-.48.1-.19.05-.36-.02-.51-.07-.15-.67-1.6-.92-2.19-.24-.58-.49-.5-.67-.51l-.57-.01c-.19 0-.5.07-.76.36-.27.29-1.03 1.01-1.03 2.47s1.05 2.87 1.2 3.07c.15.19 2.07 3.19 5.02 4.47 2.95 1.28 3.12.88 3.68.83.56-.05 1.78-.72 2.03-1.41.25-.69.25-1.28.18-1.41-.07-.13-.27-.19-.56-.34z"/> <path d="M20.52 3.48A11.93 11.93 0 0 0 12 0C5.37 0 .05 5.32.05 11.92c0 2.1.55 4.15 1.6 5.95L0 24l6.4-1.68c1.75 1.02 3.77 1.56 5.6 1.56 6.63 0 11.95-5.32 11.95-11.95 0-3.2-1.25-6.2-3.43-8.45zM12 21.95c-1.55 0-3.06-.4-4.36-1.16l-.31-.18-3.8 1 1-3.5-.2-.34A8.72 8.72 0 0 1 3.1 11.9c0-4.85 3.95-8.8 8.8-8.8 2.35 0 4.56.92 6.22 2.6a8.76 8.76 0 0 1-6.13 15.45zM17.03 14.1c-.29-.15-1.7-.84-1.97-.93-.27-.09-.47-.14-.67.14-.2.28-.77.93-.94 1.12-.17.19-.34.21-.63.07-.29-.15-1.23-.45-2.34-1.44-.87-.78-1.46-1.74-1.63-2.03-.17-.29-.02-.45.13-.6.13-.13.29-.34.44-.51.14-.17.19-.29.29-.48.1-.19.05-.36-.02-.51-.07-.15-.67-1.6-.92-2.19-.24-.58-.49-.5-.67-.51l-.57-.01c-.19 0-.5.07-.76.36-.27.29-1.03 1.01-1.03 2.47s1.05 2.87 1.2 3.07c.15.19 2.07 3.19 5.02 4.47 2.95 1.28 3.12.88 3.68.83.56-.05 1.78-.72 2.03-1.41.25-.69.25-1.28.18-1.41-.07-.13-.27-.19-.56-.34z" />
</svg> </svg>
</a> </a>
<a class="social-btn" href="sms:+918000741919?body=Test%20message" aria-label="Send test SMS"> <a class="social-btn" href="sms:+918000741919?body=Test%20message" aria-label="Send test SMS">
<svg viewBox="0 0 23 23" fill="currentColor" aria-hidden="true"> <svg viewBox="0 0 23 23" fill="currentColor" aria-hidden="true">
<path d="M20 2H4c-1.1 0-2 .9-2 2v14l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z"/> <path d="M20 2H4c-1.1 0-2 .9-2 2v14l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z" />
</svg> </svg>
</a> </a>
<a class="social-btn" href="mailto:hello@urmic.org?subject=Hello&body=Hi%2C%20I%20am%20contacting%20you%20from%20the%20website." aria-label="Send email"> <a class="social-btn" href="mailto:hello@urmic.org?subject=Hello&body=Hi%2C%20I%20am%20contacting%20you%20from%20the%20website." aria-label="Send email">
<svg viewBox="0 0 23 23" fill="currentColor" aria-hidden="true"> <svg viewBox="0 0 23 23" fill="currentColor" aria-hidden="true">
<path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/> <path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z" />
</svg> </svg>
</a> </a>
</div> </div>
</div> </div>
</div> </div>
@ -51,4 +58,4 @@
<br> <br>
<br> <br>
<?php include 'footer.php'; ?> <?php include 'footer.php'; ?>

14
html/firewall.php Normal file → Executable file
View File

@ -1,4 +1,14 @@
<?php include 'header.php' ?> <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
include 'header.php' ?>
<?php <?php
$jsonFile = __DIR__ . '/firewall.json'; $jsonFile = __DIR__ . '/firewall.json';
@ -44,7 +54,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
); );
if (count($tmp) > 0) { if (count($tmp) > 0) {
foreach ($tmp as $ip) { foreach ($tmp as $ip) {
exec("sudo ufw allow from " . $ip." to any port " . $port . " proto tcp"); exec("sudo ufw allow from " . $ip . " to any port " . $port . " proto tcp");
} }
} else { } else {
exec("sudo ufw allow " . $port); exec("sudo ufw allow " . $port);

View File

@ -1,5 +1,12 @@
<?php <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
exec("sudo chmod 444 /sys/class/dmi/id/product_uuid"); exec("sudo chmod 444 /sys/class/dmi/id/product_uuid");
$version = 1; $version = 1;

241
html/forgot.php Normal file → Executable file
View File

@ -1,4 +1,14 @@
<?php <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
declare(strict_types=1); declare(strict_types=1);
session_start(); session_start();
@ -9,10 +19,12 @@ $clientIp = $_SERVER['REMOTE_ADDR'] ?? '';
$usersFile = '/var/www/users.json'; $usersFile = '/var/www/users.json';
/* ---------- helpers ---------- */ /* ---------- helpers ---------- */
function load_json(string $file): array { function load_json(string $file): array
{
return is_file($file) ? json_decode(file_get_contents($file), true) ?: [] : []; return is_file($file) ? json_decode(file_get_contents($file), true) ?: [] : [];
} }
function save_json(string $file, array $data): void { function save_json(string $file, array $data): void
{
file_put_contents($file, json_encode($data, JSON_PRETTY_PRINT), LOCK_EX); file_put_contents($file, json_encode($data, JSON_PRETTY_PRINT), LOCK_EX);
} }
@ -56,10 +68,11 @@ if ($clientIp === $ALLOWED_IP && $_SERVER['REQUEST_METHOD'] === 'POST') {
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>URMIC powred by Shreebhattji</title> <title>URMIC powred by Shreebhattji</title>
<style> <style>
* { * {
@ -115,11 +128,9 @@ if ($clientIp === $ALLOWED_IP && $_SERVER['REQUEST_METHOD'] === 'POST') {
position: absolute; position: absolute;
width: 2px; width: 2px;
height: 70px; height: 70px;
background: linear-gradient( background: linear-gradient(to bottom,
to bottom, rgba(255, 255, 255, 0.9),
rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0));
rgba(255, 255, 255, 0)
);
opacity: 0.55; opacity: 0.55;
border-radius: 999px; border-radius: 999px;
filter: blur(0.3px); filter: blur(0.3px);
@ -133,6 +144,7 @@ if ($clientIp === $ALLOWED_IP && $_SERVER['REQUEST_METHOD'] === 'POST') {
0% { 0% {
transform: translate3d(0, -120px, 0); transform: translate3d(0, -120px, 0);
} }
100% { 100% {
transform: translate3d(0, 110vh, 0); transform: translate3d(0, 110vh, 0);
} }
@ -146,12 +158,9 @@ if ($clientIp === $ALLOWED_IP && $_SERVER['REQUEST_METHOD'] === 'POST') {
padding: 2.5rem 2rem; padding: 2.5rem 2rem;
border-radius: 1.75rem; border-radius: 1.75rem;
border: 1px solid rgba(148, 163, 184, 0.6); border: 1px solid rgba(148, 163, 184, 0.6);
background: linear-gradient( background: linear-gradient(135deg,
135deg,
rgba(15, 23, 42, 0.9), rgba(15, 23, 42, 0.9),
rgba(15, 23, 42, 0.7) rgba(15, 23, 42, 0.7)) border-box;
)
border-box;
backdrop-filter: blur(16px); backdrop-filter: blur(16px);
box-shadow: box-shadow:
0 20px 60px rgba(15, 23, 42, 0.7), 0 20px 60px rgba(15, 23, 42, 0.7),
@ -171,11 +180,9 @@ if ($clientIp === $ALLOWED_IP && $_SERVER['REQUEST_METHOD'] === 'POST') {
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.12em; letter-spacing: 0.12em;
color: var(--text-main); color: var(--text-main);
background: linear-gradient( background: linear-gradient(90deg,
90deg, rgba(59, 130, 246, 0.6),
rgba(59, 130, 246, 0.6), rgba(34, 197, 94, 0.75));
rgba(34, 197, 94, 0.75)
);
} }
.badge-dot { .badge-dot {
@ -192,12 +199,10 @@ if ($clientIp === $ALLOWED_IP && $_SERVER['REQUEST_METHOD'] === 'POST') {
h1 span.highlight { h1 span.highlight {
font-size: clamp(1.1rem, 2vw, 1.8rem); font-size: clamp(1.1rem, 2vw, 1.8rem);
background-image: linear-gradient( background-image: linear-gradient(120deg,
120deg, #22c55e,
#22c55e, #a855f7,
#a855f7, #f97316);
#f97316
);
background-clip: text; background-clip: text;
-webkit-background-clip: text; -webkit-background-clip: text;
color: transparent; color: transparent;
@ -229,11 +234,9 @@ if ($clientIp === $ALLOWED_IP && $_SERVER['REQUEST_METHOD'] === 'POST') {
border: 1px solid rgba(148, 163, 184, 0.8); border: 1px solid rgba(148, 163, 184, 0.8);
font-size: 0.75rem; font-size: 0.75rem;
color: #e5e7eb; color: #e5e7eb;
background: radial-gradient( background: radial-gradient(circle at top left,
circle at top left, rgba(59, 130, 246, 0.22),
rgba(59, 130, 246, 0.22), rgba(15, 23, 42, 0.7));
rgba(15, 23, 42, 0.7)
);
} }
.footer { .footer {
@ -291,118 +294,116 @@ if ($clientIp === $ALLOWED_IP && $_SERVER['REQUEST_METHOD'] === 'POST') {
</head> </head>
<body> <body>
<div class="rain-container" id="rain"></div> <div class="rain-container" id="rain"></div>
<div class="page-wrap"> <div class="page-wrap">
<main class="card"> <main class="card">
<div class="badge"> <div class="badge">
<span class="badge-dot"></span> <span class="badge-dot"></span>
<span>Password Recovery</span> <span>Password Recovery</span>
</div> </div>
<h1> <h1>
Universal Encoder / Decoder Universal Encoder / Decoder
<span class="highlight">powred by Shreebhattji</span> <span class="highlight">powred by Shreebhattji</span>
</h1> </h1>
<?php if ($clientIp !== $ALLOWED_IP): ?> <?php if ($clientIp !== $ALLOWED_IP): ?>
<p class="subtitle"> <p class="subtitle">
Set you computer ip to <strong>172.16.111.112</strong> then Set you computer ip to <strong>172.16.111.112</strong> then
Connect USB dongle to encoder and visit Connect USB dongle to encoder and visit
<strong>172.16.111.111</strong> for password reset <strong>172.16.111.111</strong> for password reset
</p>
<?php else: ?> </p>
<?php if ($error): ?> <?php else: ?>
<p style="color:#fca5a5"><?= htmlspecialchars($error) ?></p>
<?php endif; ?>
<?php if ($success): ?> <?php if ($error): ?>
<p style="color:#86efac"><?= htmlspecialchars($success) ?></p> <p style="color:#fca5a5"><?= htmlspecialchars($error) ?></p>
<?php endif; ?> <?php endif; ?>
<form method="post" autocomplete="off" style="display:flex;flex-direction:column;gap:0.75rem"> <?php if ($success): ?>
<p style="color:#86efac"><?= htmlspecialchars($success) ?></p>
<?php endif; ?>
<input type="hidden" name="csrf" value="<?= htmlspecialchars($_SESSION['csrf']) ?>"> <form method="post" autocomplete="off" style="display:flex;flex-direction:column;gap:0.75rem">
<input <input type="hidden" name="csrf" value="<?= htmlspecialchars($_SESSION['csrf']) ?>">
type="text"
name="username"
placeholder="New Username"
required
style="padding:0.7rem;border-radius:0.5rem;border:none"
/>
<input <input
type="password" type="text"
name="password" name="username"
placeholder="New Password" placeholder="New Username"
required required
style="padding:0.7rem;border-radius:0.5rem;border:none" style="padding:0.7rem;border-radius:0.5rem;border:none" />
/>
<input <input
type="password" type="password"
name="confirm" name="password"
placeholder="Confirm Password" placeholder="New Password"
required required
style="padding:0.7rem;border-radius:0.5rem;border:none" style="padding:0.7rem;border-radius:0.5rem;border:none" />
/>
<button <input
type="submit" type="password"
style="padding:0.75rem;border-radius:0.6rem;border:none; name="confirm"
placeholder="Confirm Password"
required
style="padding:0.7rem;border-radius:0.5rem;border:none" />
<button
type="submit"
style="padding:0.75rem;border-radius:0.6rem;border:none;
background:#22c55e;color:#000;font-weight:600"> background:#22c55e;color:#000;font-weight:600">
Reset Credentials Reset Credentials
</button> </button>
</form> </form>
<?php endif; ?> <?php endif; ?>
</main> </main>
</div> </div>
<!-- ===== YOUR RAIN SCRIPT (UNCHANGED) ===== --> <!-- ===== YOUR RAIN SCRIPT (UNCHANGED) ===== -->
<script> <script>
(function () { (function() {
const container = document.getElementById("rain"); const container = document.getElementById("rain");
function generateRain() { function generateRain() {
if (!container) return; if (!container) return;
container.innerHTML = ""; container.innerHTML = "";
const width = window.innerWidth; const width = window.innerWidth;
const height = window.innerHeight; const height = window.innerHeight;
let drops = Math.floor(width * 0.16); let drops = Math.floor(width * 0.16);
if (window.innerWidth < 600) drops = Math.floor(width * 0.10); if (window.innerWidth < 600) drops = Math.floor(width * 0.10);
else if (window.innerWidth > 1400) drops = Math.floor(width * 0.18); else if (window.innerWidth > 1400) drops = Math.floor(width * 0.18);
for (let i = 0; i < drops; i++) { for (let i = 0; i < drops; i++) {
const drop = document.createElement("span"); const drop = document.createElement("span");
drop.className = "raindrop"; drop.className = "raindrop";
drop.style.left = Math.random() * 100 + "vw"; drop.style.left = Math.random() * 100 + "vw";
drop.style.top = -120 - Math.random() * height * 0.3 + "px"; drop.style.top = -120 - Math.random() * height * 0.3 + "px";
drop.style.animationDuration = (0.7 + Math.random() * 1.2) + "s"; drop.style.animationDuration = (0.7 + Math.random() * 1.2) + "s";
drop.style.animationDelay = (Math.random() * -3) + "s"; drop.style.animationDelay = (Math.random() * -3) + "s";
drop.style.opacity = (0.35 + Math.random() * 0.55).toFixed(2); drop.style.opacity = (0.35 + Math.random() * 0.55).toFixed(2);
container.appendChild(drop); container.appendChild(drop);
} }
} }
let resizeTimer; let resizeTimer;
window.addEventListener("resize", () => { window.addEventListener("resize", () => {
clearTimeout(resizeTimer); clearTimeout(resizeTimer);
resizeTimer = setTimeout(generateRain, 180); resizeTimer = setTimeout(generateRain, 180);
}); });
window.addEventListener("DOMContentLoaded", generateRain); window.addEventListener("DOMContentLoaded", generateRain);
})(); })();
</script> </script>
</body> </body>
</html>
</html>

View File

@ -1,4 +1,14 @@
<?php <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
require 'require_login.php'; require 'require_login.php';
include 'static.php'; include 'static.php';
?> ?>
@ -409,12 +419,14 @@ include 'static.php';
.form-center { .form-center {
text-align: center; text-align: center;
} }
.social-row { .social-row {
display: flex; display: flex;
gap: 12px; gap: 12px;
align-items: center; align-items: center;
padding: 8px; padding: 8px;
} }
.social-btn { .social-btn {
width: 67px; width: 67px;
height: 67px; height: 67px;
@ -425,9 +437,26 @@ include 'static.php';
text-decoration: none; text-decoration: none;
transition: transform .12s, box-shadow .12s; transition: transform .12s, box-shadow .12s;
} }
.social-btn:hover { transform: translateY(-3px); box-shadow: 0 6px 18px rgba(0,0,0,.08); }
.social-btn svg { width: 22px; height: 22px; display: block; } .social-btn:hover {
.sr-only { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; } transform: translateY(-3px);
box-shadow: 0 6px 18px rgba(0, 0, 0, .08);
}
.social-btn svg {
width: 22px;
height: 22px;
display: block;
}
.sr-only {
position: absolute;
left: -10000px;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}
</style> </style>
</head> </head>

0
html/index.html Normal file → Executable file
View File

View File

@ -1,4 +1,15 @@
<?php include 'header.php'; ?> <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
include 'header.php'; ?>
<div class="containerindex"> <div class="containerindex">
<div class="grid"> <div class="grid">

21
html/input.php Normal file → Executable file
View File

@ -1,4 +1,13 @@
<?php include 'header.php'; ?> <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
include 'header.php'; ?>
<?php <?php
$coreFile = "/var/www/core.json"; $coreFile = "/var/www/core.json";
@ -161,7 +170,7 @@ function all_service_update()
. ' ffmpeg -hide_banner -loglevel info -thread_queue_size 512 -fflags +genpts+discardcorrupt+nobuffer -readrate 1.0' . ' ffmpeg -hide_banner -loglevel info -thread_queue_size 512 -fflags +genpts+discardcorrupt+nobuffer -readrate 1.0'
. ' -i "udp://@' . $new["input_udp"] . '?fifo_size=50000&buffer_size=50000&overrun_nonfatal=1"' . ' -i "udp://@' . $new["input_udp"] . '?fifo_size=50000&buffer_size=50000&overrun_nonfatal=1"'
. ' -vf "scale=' . $new["resolution"] . ',format=yuv420p" ' . ' -vf "scale=' . $new["resolution"] . ',format=yuv420p" '
. ' -c:v ' . $new["video_format"] . ' -pix_fmt yuv420p -flags -ildct-ilme -top 1 -threads 1 -g 25 -bf 2 -qmin 2 -qmax 8 ' . ' -c:v ' . $new["video_format"] . ' -pix_fmt yuv420p -flags -ildct-ilme -top 1 -threads 1 -g 25 -bf 2 -qmin 2 -qmax 5 '
. ' -b:v ' . $new["video_bitrate"] . 'k -minrate ' . max(0, $new["video_bitrate"] - 500) . 'k -maxrate ' . ($new["video_bitrate"] + 500) . 'k -bufsize ' . ($new["video_bitrate"] + 500) . 'k ' . ' -b:v ' . $new["video_bitrate"] . 'k -minrate ' . max(0, $new["video_bitrate"] - 500) . 'k -maxrate ' . ($new["video_bitrate"] + 500) . 'k -bufsize ' . ($new["video_bitrate"] + 500) . 'k '
. ' -c:a ' . $new["audio_format"] . ' -b:a ' . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -af "volume=' . $new["volume"] . 'dB,aresample=async=1000:min_hard_comp=0.100000:first_pts=0" ' . ' -c:a ' . $new["audio_format"] . ' -b:a ' . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -af "volume=' . $new["volume"] . 'dB,aresample=async=1000:min_hard_comp=0.100000:first_pts=0" '
. ' -metadata service_provider="ShreeBhattJI" '; . ' -metadata service_provider="ShreeBhattJI" ';
@ -212,7 +221,7 @@ function all_service_start()
. ' ffmpeg -hide_banner -loglevel info -thread_queue_size 512 -fflags +genpts+discardcorrupt+nobuffer -readrate 1.0' . ' ffmpeg -hide_banner -loglevel info -thread_queue_size 512 -fflags +genpts+discardcorrupt+nobuffer -readrate 1.0'
. ' -i "udp://@' . $new["input_udp"] . '?fifo_size=50000&buffer_size=50000&overrun_nonfatal=1"' . ' -i "udp://@' . $new["input_udp"] . '?fifo_size=50000&buffer_size=50000&overrun_nonfatal=1"'
. ' -vf "scale=' . $new["resolution"] . ',format=yuv420p" ' . ' -vf "scale=' . $new["resolution"] . ',format=yuv420p" '
. ' -c:v ' . $new["video_format"] . ' -pix_fmt yuv420p -flags -ildct-ilme -top 1 -threads 1 -g 25 -bf 2 -qmin 2 -qmax 8 ' . ' -c:v ' . $new["video_format"] . ' -pix_fmt yuv420p -flags -ildct-ilme -top 1 -threads 1 -g 25 -bf 2 -qmin 2 -qmax 5 '
. ' -b:v ' . $new["video_bitrate"] . 'k -minrate ' . max(0, $new["video_bitrate"] - 500) . 'k -maxrate ' . ($new["video_bitrate"] + 500) . 'k -bufsize ' . ($new["video_bitrate"] + 500) . 'k ' . ' -b:v ' . $new["video_bitrate"] . 'k -minrate ' . max(0, $new["video_bitrate"] - 500) . 'k -maxrate ' . ($new["video_bitrate"] + 500) . 'k -bufsize ' . ($new["video_bitrate"] + 500) . 'k '
. ' -c:a ' . $new["audio_format"] . ' -b:a ' . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -af "volume=' . $new["volume"] . 'dB,aresample=async=1000:min_hard_comp=0.100000:first_pts=0" ' . ' -c:a ' . $new["audio_format"] . ' -b:a ' . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -af "volume=' . $new["volume"] . 'dB,aresample=async=1000:min_hard_comp=0.100000:first_pts=0" '
. ' -metadata service_provider="ShreeBhattJI" '; . ' -metadata service_provider="ShreeBhattJI" ';
@ -306,7 +315,7 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
. ' ffmpeg -hide_banner -loglevel info -thread_queue_size 512 -fflags +genpts+discardcorrupt+nobuffer -readrate 1.0' . ' ffmpeg -hide_banner -loglevel info -thread_queue_size 512 -fflags +genpts+discardcorrupt+nobuffer -readrate 1.0'
. ' -i "udp://@' . $new["input_udp"] . '?fifo_size=50000&buffer_size=50000&overrun_nonfatal=1"' . ' -i "udp://@' . $new["input_udp"] . '?fifo_size=50000&buffer_size=50000&overrun_nonfatal=1"'
. ' -vf "scale=' . $new["resolution"] . ',format=yuv420p" ' . ' -vf "scale=' . $new["resolution"] . ',format=yuv420p" '
. ' -c:v ' . $new["video_format"] . ' -pix_fmt yuv420p -flags -ildct-ilme -top 1 -threads 1 -g 25 -bf 2 -qmin 2 -qmax 8 ' . ' -c:v ' . $new["video_format"] . ' -pix_fmt yuv420p -flags -ildct-ilme -top 1 -threads 1 -g 25 -bf 2 -qmin 2 -qmax 5 '
. ' -b:v ' . $new["video_bitrate"] . 'k -minrate ' . max(0, $new["video_bitrate"] - 500) . 'k -maxrate ' . ($new["video_bitrate"] + 500) . 'k -bufsize ' . ($new["video_bitrate"] + 500) . 'k ' . ' -b:v ' . $new["video_bitrate"] . 'k -minrate ' . max(0, $new["video_bitrate"] - 500) . 'k -maxrate ' . ($new["video_bitrate"] + 500) . 'k -bufsize ' . ($new["video_bitrate"] + 500) . 'k '
. ' -c:a ' . $new["audio_format"] . ' -b:a ' . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -af "volume=' . $new["volume"] . 'dB,aresample=async=1000:min_hard_comp=0.100000:first_pts=0" ' . ' -c:a ' . $new["audio_format"] . ' -b:a ' . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -af "volume=' . $new["volume"] . 'dB,aresample=async=1000:min_hard_comp=0.100000:first_pts=0" '
. ' -metadata service_provider="ShreeBhattJI" '; . ' -metadata service_provider="ShreeBhattJI" ';
@ -374,7 +383,7 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
. ' ffmpeg -hide_banner -loglevel info -thread_queue_size 512 -fflags +genpts+discardcorrupt+nobuffer -readrate 1.0' . ' ffmpeg -hide_banner -loglevel info -thread_queue_size 512 -fflags +genpts+discardcorrupt+nobuffer -readrate 1.0'
. ' -i "udp://@' . $new["input_udp"] . '?fifo_size=50000&buffer_size=50000&overrun_nonfatal=1"' . ' -i "udp://@' . $new["input_udp"] . '?fifo_size=50000&buffer_size=50000&overrun_nonfatal=1"'
. ' -vf "scale=' . $new["resolution"] . ',format=yuv420p" ' . ' -vf "scale=' . $new["resolution"] . ',format=yuv420p" '
. ' -c:v ' . $new["video_format"] . ' -pix_fmt yuv420p -flags -ildct-ilme -top 1 -threads 1 -g 25 -bf 2 -qmin 2 -qmax 8 ' . ' -c:v ' . $new["video_format"] . ' -pix_fmt yuv420p -flags -ildct-ilme -top 1 -threads 1 -g 25 -bf 2 -qmin 2 -qmax 5 '
. ' -b:v ' . $new["video_bitrate"] . 'k -minrate ' . max(0, $new["video_bitrate"] - 500) . 'k -maxrate ' . ($new["video_bitrate"] + 500) . 'k -bufsize ' . ($new["video_bitrate"] + 500) . 'k ' . ' -b:v ' . $new["video_bitrate"] . 'k -minrate ' . max(0, $new["video_bitrate"] - 500) . 'k -maxrate ' . ($new["video_bitrate"] + 500) . 'k -bufsize ' . ($new["video_bitrate"] + 500) . 'k '
. ' -c:a ' . $new["audio_format"] . ' -b:a ' . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -af "volume=' . $new["volume"] . 'dB,aresample=async=1000:min_hard_comp=0.100000:first_pts=0" ' . ' -c:a ' . $new["audio_format"] . ' -b:a ' . $new["audio_bitrate"] . 'k -ar 48000 -ac 2 -af "volume=' . $new["volume"] . 'dB,aresample=async=1000:min_hard_comp=0.100000:first_pts=0" '
. ' -metadata service_provider="ShreeBhattJI" '; . ' -metadata service_provider="ShreeBhattJI" ';
@ -490,7 +499,7 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
<h2>Service List</h2> <h2>Service List</h2>
<div style="margin-top:10px;"> <div style="margin-top:10px;">
<button onclick="openAddPopup()">Add Service</button> <button onclick="openAddPopup()">Add Service</button>
<button onclick="submitAction('start_all')">Start All</button> <button onclick="submitAction('start_all')">Start All</button>
<button onclick="submitAction('stop_all')">Stop All</button> <button onclick="submitAction('stop_all')">Stop All</button>
<button onclick="submitAction('update_all')">Update All</button> <button onclick="submitAction('update_all')">Update All</button>

12
html/login.php Normal file → Executable file
View File

@ -1,9 +1,19 @@
<?php <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0'); header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache'); header('Pragma: no-cache');
header('Expires: 0'); header('Expires: 0');
session_start(); session_start();
if (!empty($_SESSION['user'])) { if (!empty($_SESSION['user'])) {
header('Location: /index.php', true, 302); header('Location: /index.php', true, 302);
exit; exit;

10
html/logout.php Normal file → Executable file
View File

@ -1,4 +1,14 @@
<?php <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
session_start(); session_start();
$_SESSION = []; $_SESSION = [];

9
html/password.php Normal file → Executable file
View File

@ -1,5 +1,14 @@
<?php <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
declare(strict_types=1); declare(strict_types=1);
include 'header.php'; include 'header.php';
?> ?>

View File

@ -1,4 +1,15 @@
<?php include 'header.php'; ?> <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
include 'header.php'; ?>
<style> <style>
:root { :root {
--accent: #0b74de; --accent: #0b74de;

9
html/require_login.php Normal file → Executable file
View File

@ -1,5 +1,12 @@
<?php <?php
// auth/require_login.php /*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
declare(strict_types=1); declare(strict_types=1);
session_start(); session_start();

View File

@ -1,5 +1,14 @@
<?php <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
function generateRandomString($length = 16) function generateRandomString($length = 16)
{ {
$bytes = random_bytes(ceil($length / 2)); $bytes = random_bytes(ceil($length / 2));
@ -287,4 +296,3 @@ function netplan_yaml(array $data, int $indent = 0): string
return $out; return $out;
} }

View File

@ -1,4 +1,13 @@
<?php include 'header.php'; ?> <?php
/*
Urmi you happy me happy licence
Copyright (c) 2026 shreebhattji
License text:
https://github.com/shreebhattji/Urmi/blob/main/licence.md
*/
include 'header.php'; ?>
<?php <?php
$domain = ""; $domain = "";
@ -67,7 +76,7 @@ if ($service_rtmp1_multiple == 'enable') {
$text .= "</h5>"; $text .= "</h5>";
} }
if($service_srt_multiple){ if ($service_srt_multiple) {
$text .= "<h5>srt://" . $domain . ":1937?streamid=shree/bhatt/ji</h5><br><br>"; $text .= "<h5>srt://" . $domain . ":1937?streamid=shree/bhatt/ji</h5><br><br>";
} }

0
html/stop_all_encoders.sh Normal file → Executable file
View File

View File

0
users.json Normal file → Executable file
View File