Pemutusan otomatis pengguna di ISPManager5 lite tanpa BILLmanager

Diberikan:

  1. Server VPS dengan lisensi abadi ispmanager lite 5
  2. 10-20 pengguna per server
  3. Google Kalender dengan pengingat rutin bagi yang kehabisan hosting
  4. Sayang sekali harus membayar untuk hal lain, apalagi dengan berlangganan.

Tujuannya adalah untuk menghilangkan kalender Google dan pengingat manual kepada klien bahwa ia harus membayar untuk hosting. Bebaskan diri Anda dari “biarkan dia bekerja lebih lama, dia akan segera membayar”, “entah rasanya merepotkan untuk mematikannya”, dan percayakan ini pada mesin yang tidak berjiwa.

Tentu saja, saya pertama kali mencari di Google dan mencari, tetapi tidak menemukan solusi apa pun, semuanya bermuara pada kenyataan bahwa Anda perlu berlangganan BILLmanager, tetapi poin nomor 4 sangat penting dan serius bagi saya, saya tidak akan mendapatkannya singkirkan itu. Dan keputusannya ternyata tidak terlalu sulit.

Jadi apa yang kita lakukan?

Buat folder users.addon, di direktori /usr/local/mgr5/etc/sql/, dua file kosong:

  1. tanggal_bayar
  2. uwemail

Ini akan memerintahkan panel untuk membuat database
/usr/local/mgr5/etc/ispmgr.db
di tabel pengguna ada dua bidang yang sesuai dimana nilai dari panel admin akan ditulis.

Buat file bernama ispmgr_mod_pay_data.xml di folder /usr/local/mgr5/etc/xml beserta isinya

<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
	<metadata name="user.edit">
		<form>
			<page name="main">
				<field name="pay_date">
					<input type="text" name="pay_date"/>
				</field>
				<field name="uwemail">
					<input type="text" name="uwemail"/>
				</field>
			</page>
		</form>
	</metadata>
	<lang name="ru">
		<messages name="user.edit">
			<msg name="pay_date" sqlname="pay_date">Оплачено до</msg>
			<msg name="uwemail" sqlname="uwemail">Пользовательский email</msg>
		</messages>
	</lang>	
	<lang name="en">
		<messages name="user.edit">
			<msg name="pay_date" sqlname="pay_date">Paid before</msg>
			<msg name="uwemail" sqlname="uwemail">User email</msg>
		</messages>
	</lang>
</mgrdata>

Ini memberi panel aturan agar bidang kita ditampilkan di formulir edit pengguna.

Mulai ulang panel:

/usr/local/mgr5/sbin/mgrctl -m ispmgr exit

Kami mendapatkan:

Pemutusan otomatis pengguna di ISPManager5 lite tanpa BILLmanager

Di kolom kami menulis sampai hari apa hosting harus bekerja, dan email pengguna apa, ke mana harus mengirim pengingat bahwa hosting akan segera berakhir.

Sekarang kita perlu membuat skrip yang akan mengingatkan pengguna bahwa hosting berakhir pada interval tertentu. Beritahu admin bahwa hosting telah berakhir. Beri tahu pengguna dan admin bahwa pengguna tersebut dinonaktifkan.

Saya suka php di dalamnya dan menulis skrip.

<?php
$adminemail = "[email protected]"; // email админа
$day_send_message = [30,7,5,3,1]; // за сколько дней и с какой переодичностью будет напоминать пользователю что хостинг заканчивается
$db = new SQLite3('/usr/local/mgr5/etc/ispmgr.db');
$results = $db->query('SELECT * FROM users WHERE active == "on" AND pay_date IS NOT NULL');
while ($user = $results->fetchArray()) {
		$days_left=floor( ( strtotime($user['pay_date']) - time() ) / (60 * 60 * 24));
		if(in_array($days_left, $day_send_message)){
			if($user['uwemail'] != ""){
				mail($user['uwemail'], 'ISPMANAGER заканчивается хостинг через '.$days_left.' днейя', "Текст для пользователя о том что осталось столько то дней");
			}
		}
		if( $days_left == 3 ) {
			mail($adminemail, 'ISPMANAGER USER '.$user['name'], $user['name'] . " Закончится хостинг через ".$days_left." дня");
		}
		if($days_left <= 0){
			mail($adminemail, 'ISPMANAGER USER '.$user['name'].' DISABLED', $user['name'].' Отключен');
			exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
			if( $user['uwemail'] != "" ) {
				mail($user['uwemail'], 'ISPMANAGER хостинг отключен', 'Текст для пользователя что хостинг закончился'); 
			}
		}
		// при желании можно еще написать небольшой IF что бы данные удалялись через некоторое время, но мне это не нужно
}

Kami menyimpan skrip ini di mana saja dan menyebutnya apa pun yang kami inginkan, dan menambahkan tugas cron untuk memanggilnya sekali sehari. Semuanya sudah siap.

Sekarang hati nurani saya bersih, kataknya puas, dan saya tidak mengeluarkan biaya tambahan apa pun.

Tinggal mengisi data pengguna pada tanggal berapa hosting tersebut dibayar, dan email pengguna tempat mengirim pengingat kepada pengguna.

Senang jika itu membantu seseorang.

Sumber: www.habr.com

Tambah komentar