Pemutusan automatik pengguna dalam ISPManager5 lite tanpa BILLmanager

Diberi:

  1. Pelayan VPS dengan lesen kekal ispmanager lite 5
  2. 10-20 pengguna setiap pelayan
  3. Kalendar Google dengan peringatan tetap untuk mereka yang kehabisan pengehosan
  4. Sungguh memalukan untuk membayar apa-apa lagi, terutamanya dengan langganan.

Matlamatnya adalah untuk menyingkirkan kalendar Google dan peringatan manual kepada pelanggan bahawa dia perlu membayar untuk pengehosan. Bebaskan diri anda daripada "biarkan dia bekerja lebih sedikit, dia akan membayar tidak lama lagi", "entah bagaimana menyusahkan untuk mematikannya", dan amanahkan ini kepada mesin yang tidak berjiwa.

Sudah tentu, saya mula-mula Googled dan mencari, tetapi tidak menemui sebarang penyelesaian, semuanya berpunca daripada fakta bahawa anda perlu melanggan BILLmanager, tetapi titik No. 4 adalah sangat penting dan serius bagi saya, saya tidak akan mendapat hapuskannya. Dan keputusan itu ternyata tidak begitu sukar.

Jadi apa yang kita buat?

Cipta folder users.addon, dalam direktori /usr/local/mgr5/etc/sql/, dua fail kosong:

  1. tarikh_bayar
  2. uwemail

Ini akan mengarahkan panel untuk mencipta dalam pangkalan data
/usr/local/mgr5/etc/ispmgr.db
dalam jadual pengguna terdapat dua medan yang sepadan di mana nilai dari panel pentadbir akan ditulis.

Buat fail bernama ispmgr_mod_pay_data.xml dalam folder /usr/local/mgr5/etc/xml dengan kandungan

<?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 memberikan panel peraturan supaya medan kami dipaparkan dalam borang edit pengguna.

But semula panel:

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

Kami mendapat:

Pemutusan automatik pengguna dalam ISPManager5 lite tanpa BILLmanager

Dalam medan kami menulis sehingga hari apa pengehosan harus berfungsi, dan apakah e-mel pengguna, ke mana untuk menghantar peringatan bahawa pengehosan akan tamat tidak lama lagi.

Sekarang kita perlu mencipta skrip yang akan mengingatkan pengguna bahawa pengehosan tamat pada beberapa selang waktu. Beritahu pentadbir bahawa pengehosan akan tamat. Beritahu pengguna dan pentadbir bahawa pengguna dilumpuhkan.

Saya suka php padanya 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-mana sahaja dan memanggilnya apa sahaja yang kami mahu, dan menambah tugas cron untuk memanggilnya sekali sehari. Semua dah siap.

Sekarang hati nurani saya bersih, katak berpuas hati, dan saya tidak menanggung sebarang kos tambahan.

Yang tinggal hanyalah mengisi data pengguna pada tarikh pengehosan dibayar, dan e-mel pengguna untuk menghantar peringatan kepada pengguna.

Gembira jika ia membantu seseorang.

Sumber: www.habr.com

Tambah komen