Cara membuat web host manager sendiri V6 Auto Suspend Akun Jika Tidak Bayar

Me Nime Id
Please wait 0 seconds...
Scroll Down and click on Go to Link for destination
Congrats! Link is Generated

 Oke! Kita tambahkan fitur Auto Suspend Akun Jika Tidak Bayar ke WHM Custom.

Fitur yang Akan Dibuat:

  • Admin bisa menentukan tanggal jatuh tempo setiap akun.
  • Sistem akan otomatis suspend akun yang belum bayar.
  • Suspend akun = Menonaktifkan website & akses FTP.
  • Admin bisa mengaktifkan kembali akun setelah pembayaran.

1️⃣ Tambahkan Kolom "Jatuh Tempo" di Database

Kita perlu menambahkan tanggal jatuh tempo ke akun hosting.

📌 Tambahkan kolom di tabel accounts (Jika belum ada)

ALTER TABLE accounts ADD COLUMN due_date DATE NOT NULL;

📌 Format tabel accounts setelah update:

CREATE TABLE accounts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    domain VARCHAR(100) UNIQUE,
    status ENUM('active', 'suspended') DEFAULT 'active',
    due_date DATE NOT NULL
);

2️⃣ Buat Script Suspend Akun

📌 File scripts/suspend_account.sh

#!/bin/bash
username=$1
domain=$2

# Disable akun user di Linux
usermod -L $username

# Disable website (Apache)
a2dissite $domain.conf
systemctl reload apache2

echo "Akun $username telah disuspend!"

📌 Penjelasan:

  • usermod -L $username → Mengunci akun user di server.
  • a2dissite $domain.conf → Menonaktifkan website.
  • systemctl reload apache2 → Reload Apache supaya perubahan berlaku.

3️⃣ Buat Script Unsuspend Akun

📌 File scripts/unsuspend_account.sh

#!/bin/bash
username=$1
domain=$2

# Enable akun user di Linux
usermod -U $username

# Enable website (Apache)
a2ensite $domain.conf
systemctl reload apache2

echo "Akun $username telah diaktifkan kembali!"

📌 Penjelasan:

  • usermod -U $username → Membuka kunci akun user.
  • a2ensite $domain.conf → Mengaktifkan kembali website.
  • systemctl reload apache2 → Reload Apache agar website aktif lagi.

4️⃣ Tambahkan Fungsi di PHP

📌 File includes/functions.php

<?php
function suspendAccount($username, $domain) {
    $cmd = "bash ../scripts/suspend_account.sh $username $domain";
    return shell_exec($cmd);
}

function unsuspendAccount($username, $domain) {
    $cmd = "bash ../scripts/unsuspend_account.sh $username $domain";
    return shell_exec($cmd);
}
?>

📌 Fungsi ini akan menjalankan script Bash untuk suspend & unsuspend akun hosting.


5️⃣ Buat Halaman Manajemen Suspend Akun

📌 File admin/akun.php

<?php
include '../includes/config.php';
include '../includes/functions.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['suspend'])) {
        $username = $_POST['username'];
        $domain = $_POST['domain'];
        echo suspendAccount($username, $domain);
        
        $stmt = $conn->prepare("UPDATE accounts SET status='suspended' WHERE username=?");
        $stmt->bind_param("s", $username);
        $stmt->execute();
    }

    if (isset($_POST['unsuspend'])) {
        $username = $_POST['username'];
        $domain = $_POST['domain'];
        echo unsuspendAccount($username, $domain);
        
        $stmt = $conn->prepare("UPDATE accounts SET status='active' WHERE username=?");
        $stmt->bind_param("s", $username);
        $stmt->execute();
    }
}
?>
<h2>Suspensi Akun</h2>
<form method="post">
    <input type="text" name="username" placeholder="Username Akun" required><br>
    <input type="text" name="domain" placeholder="Domain Akun" required><br>
    <button type="submit" name="suspend">Suspend Akun</button>
    <button type="submit" name="unsuspend">Aktifkan Kembali</button>
</form>

📌 Admin bisa suspend atau aktifkan kembali akun langsung dari dashboard!


6️⃣ Otomatis Suspend Akun Jika Melewati Jatuh Tempo

📌 File scripts/auto_suspend.sh

#!/bin/bash
current_date=$(date +"%Y-%m-%d")

# Ambil daftar akun yang jatuh tempo
expired_accounts=$(mysql -N -e "SELECT username, domain FROM accounts WHERE due_date < '$current_date' AND status='active'")

while read -r username domain; do
    if [[ ! -z "$username" ]]; then
        bash /path/to/scripts/suspend_account.sh $username $domain
        mysql -e "UPDATE accounts SET status='suspended' WHERE username='$username'"
        echo "Akun $username telah disuspend otomatis!"
    fi
done <<< "$expired_accounts"

📌 Penjelasan:

  • Mengecek akun yang lewat tanggal jatuh tempo.
  • Jika akun belum bayar, maka otomatis disuspend.

📌 Jadwalkan Auto Suspend di Cron Job
Jalankan perintah:

crontab -e

Tambahkan baris berikut (cek setiap jam 01:00 pagi):

0 1 * * * bash /path/to/scripts/auto_suspend.sh

📌 Setiap hari jam 01:00 pagi, sistem akan cek & suspend akun yang belum bayar!


🔥 Sekarang WHM Custom Sudah Bisa Auto Suspend Akun!

Admin bisa suspend akun manual lewat dashboard.
Sistem otomatis suspend akun yang belum bayar.
Admin bisa aktifkan kembali akun setelah bayar.

Posting Komentar

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.