Samodejni odklop uporabnikov v ISPManager5 lite brez BILLmanagerja

Glede na:

  1. VPS strežnik z trajno licenco ispmanager lite 5
  2. 10-20 uporabnikov na strežnik
  3. Google Koledar z rednimi opomniki za tiste, ki jim je zmanjkalo gostovanja
  4. Še kaj drugega je škoda plačevati, sploh z naročnino.

Cilj je, da se znebimo Google koledarja in ročnih opomnikov naročnika, da mora plačati gostovanje. Osvobodite se "naj dela še malo, kmalu bo plačal", "izklopiti ga je nekako neprijetno" in to zaupajte stroju brez duše.

Seveda sem najprej brskal po Googlu in iskal, pa nisem našel nobene rešitve, vse se je skrčilo na to, da se je treba naročiti na BILLmanager, ampak točka št. 4 je zame zelo pomembna in resna, ne bom dobil znebiti se tega. In izkazalo se je, da odločitev ni tako težka.

Torej, kaj naredimo?

Ustvarite mapo users.addon, v imeniku /usr/local/mgr5/etc/sql/ dve prazni datoteki:

  1. plačilni_datum
  2. uwemail

To bo plošči ukazalo ustvariti v bazi podatkov
/usr/local/mgr5/etc/ispmgr.db
v tabeli uporabnikov sta dve ustrezni polji, kamor bodo zapisane vrednosti iz skrbniške plošče.

Ustvarite datoteko z imenom ispmgr_mod_pay_data.xml v mapi /usr/local/mgr5/etc/xml z vsebino

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

To daje plošči pravilo, tako da so naša polja prikazana v obrazcu za urejanje uporabnika.

Ponovno zaženite ploščo:

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

Dobimo:

Samodejni odklop uporabnikov v ISPManager5 lite brez BILLmanagerja

V polja napišemo, do katerega dne naj gostovanje deluje, kateri e-poštni naslov uporabnika, kam poslati opomnike, da bo gostovanja kmalu konec.

Sedaj moramo ustvariti skripto, ki bo uporabnike opozarjala, da se gostovanje v določenih intervalih konča. Obvestite skrbnika, da se gostovanje končuje. Obvestite uporabnika in skrbnika, da je uporabnik onemogočen.

Všeč mi je php in napisal sem skript.

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

Ta skript shranimo kamor koli in ga pokličemo, kakor hočemo, ter dodamo nalogo cron, da ga pokličemo enkrat na dan. Vse je pripravljeno.

Zdaj je moja vest čista, krastača zadovoljna, dodatnih stroškov pa nimam.

Ostane le še, da v uporabnike izpolnite podatke, na kateri datum je bilo gostovanje plačano, ter e-pošto uporabnikov, kam pošiljati opomnike uporabnikom.

Veseli me, če komu pomaga.

Vir: www.habr.com

Dodaj komentar