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.