Автоматичното деактивиране на потребители в ISPManager5 lite без BILLmanager

Дадено:

  1. VPS Сървър с вечна лицензия ispmanager lite 5
  2. 10-20 потребители на сървъра
  3. Google Calendar с редовни напомняния на тези, на които им е изтекло хостинг
  4. Удавяща жаба е да плащаш за нещо друго, особено под форма на абонамент

Целта е да се отървем от Google Calendar и ръчните напомняния на клиентите за плащане на хостинга. Да освободим себе си от ‘нека работи още малко, той скоро ще плати’ и ‘малко е неудобно да се изключи’ и да поверим тези решения на бездушната машина.

Разбира се, първо 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 и написах скрипт.

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['name'], $user['name'] . " Хостингът изтича след ".$days_left." дни");
		}
		if($days_left <= 0){
			mail($adminemail, 'ISPMANAGER ПОТРЕБИТЕЛ '.$user['name'].' ОТКЛЮЧЕН', $user['name'].' Отключен');
			exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
			if( $user['uwemail'] != "" ) {
				mail($user['uwemail'], 'ISPMANAGER хостинг отключен', 'Текст за потребителя че хостингът е приключил'); 
			}
		}
		// при желание може да се добави малко IF, за да се изтриват данните след известно време, но на мен това не ми е нужно
}

Този скрипт се запазва навсякъде и се нарича както искате, добавяте го в cron задача за извикване веднъж дневно. Всичко е готово.

Сега съвестта е чиста, жабата е удовлетворена, допълнителни разходи не са понесени.

Остава да попълните данните за потребителите, на коя дата е платен хостингът и e-mail адресите на потребителите, на които да се изпращат напомняния.

Радвам се, ако на някого помогне.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster