Аўтаматычнае адключэнне карыстальнікаў у ISPManager5 lite без BILLmanager

Дадзена:

  1. VPS Сервер з вечнай ліцэнзіяй ispmanager lite 5
  2. 10-20 карыстальнікаў на серверы
  3. Google Calendar з рэгулярнымі напамінкамі ў каго скончыўся хостынг
  4. Душучая жаба плаціць завошта-небудзь яшчэ, тым больш на падпісцы

Мэта, пазбавіцца ад google календара і ручных напамінках кліенту аб тым што трэба аплаціць хостынг. Пазбавіць сябе ад "хай яшчэ крыху папрацуе ён хутка аплаціць" "як то не зручна адключаць", і даручыць гэта вырашаць бяздушнай машыне.

Вядома ж спачатку трошкі пашукаў, але не знайшоў рашэнняў усё зводзілася да таго, што трэба ўзяць падпіску BILLmanager, але пункт №4 у мяне вельмі важны і сур'ёзны, ад яго пазбаўляцца не буду. Ды і рашэнне аказалася не такім ужо і складаным.

Такім чынам, што які робіцца.

Ствараем тэчку users.addon, у дырэкторыі /usr/local/mgr5/etc/sql/, два пустых файла:

  1. pay_date
  2. uwemail

Гэта дасць каманду панэлі стварыць у базе
/usr/local/mgr5/etc/ispmgr.db
у табліцы users два адпаведныя палі куды будуць пісацца значэнні з адмін панэлі.

Ствараем файл файл ispmgr_mod_pay_data.xml у тэчцы /usr/local/mgr5/etc/xmlз змесцівам

<?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>

Гэта дае правіла панэлі, каб нашы палі адлюстроўваліся ў форме рэдагавання карыстальніка.

Перазагружаем панэль:

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

атрымліваем:

Аўтаматычнае адключэнне карыстальнікаў у ISPManager5 lite без BILLmanager

У палі пішам да якога дня павінен хостынг працаваць, і які email карыстача, куды слаць напамінкі аб тым што хутка скончыцца хостынг.

Зараз трэба стварыць скрыпт які будзе нагадваць карыстальнікам аб тым, што хостынг заканчваецца з нейкай перыядычнасцю. Апавяшчаць адміна аб тым, што хостынг заканчваецца. Апавяшчаць карыстальніка і адміна аб тым, што карыстальнік адключаны.

Мне блізкі php на ім і напісаў скрыпт.

<?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 что бы данные удалялись через некоторое время, но мне это не нужно
}

Гэты скрыпт захоўваем куды заўгодна і завём як заўгодна, дадаем у cron задачу для выкліку яго раз у суткі. Усё гатова.

Цяпер сумленне чыстае, жаба задаволена, дадатковых затрат не панёс.

Засталося запоўніць дадзенымі ў карыстальнікаў да якой даты аплачаны хостынг, і email карыстальнікаў куды слаць напамінкі карыстальнікам.

Рады калі каму тое дапаможа.

Крыніца: habr.com

Дадаць каментар