Kasutajate automaatne katkestamine ISPManager5 lite'is ilma BILLmanageriga

Arvestades:

  1. VPS-server püsiva litsentsiga ispmanager lite 5
  2. 10-20 kasutajat serveri kohta
  3. Google'i kalender koos regulaarsete meeldetuletustega neile, kellel on hostimine otsa saanud
  4. Kahju on millegi muu eest maksta, eriti abonemendiga.

Eesmärk on vabaneda Google'i kalendrist ja käsitsi meeldetuletustest kliendile, et ta peab hostimise eest maksma. Vabastage end "las ta töötab veel natuke, ta maksab varsti", "seda on kuidagi ebamugav välja lülitada" ja usaldage see hingetule masinale.

Muidugi ma algul googeldasin ja otsisin, aga lahendusi ei leidnud, kõik taandus sellele, et tuleb tellida BILLmanager, aga punkt nr 4 on minu jaoks väga oluline ja tõsine, ma ei saa aru. sellest lahti. Ja otsus ei osutus nii raskeks.

Mida me siis teeme?

Looge kataloogis /usr/local/mgr5/etc/sql/ kaust users.addon kaks tühja faili:

  1. tasu_kuupäev
  2. uwemail

See annab paneelil käsu luua andmebaasis
/usr/local/mgr5/etc/ispmgr.db
kasutajate tabelis on kaks vastavat välja, kuhu kirjutatakse administraatori paneeli väärtused.

Looge kausta /usr/local/mgr5/etc/xml koos sisuga fail nimega ispmgr_mod_pay_data.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>

See annab paneelile reegli, nii et meie väljad kuvatakse kasutaja redigeerimisvormis.

Taaskäivitage paneel:

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

Me saame:

Kasutajate automaatne katkestamine ISPManager5 lite'is ilma BILLmanageriga

Väljadele kirjutame, mis päevani peaks hostimine töötama ja mis kasutaja meilile, kuhu saata meeldetuletus, et hostimine varsti lõppeb.

Nüüd peame looma skripti, mis tuletaks kasutajatele meelde, et hostimine lõpeb teatud ajavahemike järel. Teatage administraatorile, et hostimine on lõppemas. Teavitage kasutajat ja administraatorit, et kasutaja on keelatud.

Mulle meeldib sellel php ja kirjutasin skripti.

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

Salvestame selle skripti kõikjale ja nimetame seda kuidas iganes tahame ning lisame cron-ülesande, et seda kord päevas kutsuda. Kõik on valmis.

Nüüd on mu südametunnistus puhas, kärnkonn rahul ja mingeid lisakulusid pole tekkinud.

Jääb vaid sisestada kasutajate andmed, mis kuupäeval hostimise eest tasuti, ja kasutajate meilisõnumid, kuhu kasutajatele meeldetuletusi saata.

Tore, kui see kedagi aitab.

Allikas: www.habr.com

Lisa kommentaar