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

Като се има предвид:

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

Целта е да се отървем от Google календара и ръчните напомняния на клиента, че трябва да плати за хостинг. Освободете се от „оставете го да работи още малко, скоро ще плати“, „някак си е неудобно да го изключвате“ и поверете това на бездушна машина.

Разбира се, първо потърсих в Google и потърсих, но не намерих никакви решения, всичко се сведе до това, че трябва да се абонирате за BILLmanager, но точка № 4 е много важна и сериозна за мен, няма да получа отървете се от него. И решението се оказа не толкова трудно.

И така, какво правим?

Създайте папка users.addon, в директорията /usr/local/mgr5/etc/sql/, два празни файла:

  1. дата на плащане
  2. uwemail

Това ще заповяда на панела да създаде в базата данни
/usr/local/mgr5/etc/ispmgr.db
в таблицата потребители има две съответни полета, където ще се записват стойностите от админ панела.

Създайте файл с име 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

В полетата пишем до кой ден трябва да работи хостингът и какъв имейл на потребителя, къде да изпращаме напомняния, че хостингът скоро ще приключи.

Сега трябва да създадем скрипт, който ще напомня на потребителите, че хостингът приключва на определени интервали. Уведомете администратора, че хостингът приключва. Уведомете потребителя и администратора, че потребителят е деактивиран.

Харесвам 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 задача, за да го извикваме веднъж на ден. Всичко е готово.

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

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

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

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

Добавяне на нов коментар