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

Ја зачувуваме оваа скрипта каде било и ја нарекуваме како што сакаме и додаваме кронска задача за да ја нарекуваме еднаш дневно. Сè е подготвено.

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

Останува само да се пополнат податоците во корисниците на кој датум е платено хостингот и е-поштата на корисниците каде да испраќаат потсетници до корисниците.

Мило ми е ако некому му помага.

Извор: www.habr.com

Додадете коментар