Aŭtomata malkonekto de uzantoj en ISPManager5 lite sen BILLmanager

Donita:

  1. VPS-Servilo kun eterna permesilo ispmanager lite 5
  2. 10-20 uzantoj per servilo
  3. Gugla Kalendaro kun regulaj memorigiloj por tiuj, kiuj elĉerpis gastigadon
  4. Estas domaĝe pagi por io alia, precipe per abono.

La celo estas forigi Google-kalendaron kaj manajn memorigilojn al la kliento, ke li devas pagi por gastigado. Liberigu vin de "lasu lin labori iom pli, li pagos baldaŭ", "estas iel maloportune malŝalti ĝin", kaj konfidu tion al senanima maŝino.

Kompreneble, mi unue guglodis kaj serĉis, sed ne trovis solvojn, ĉio resumiĝis al tio, ke vi bezonas aboni al BILLmanager, sed la punkto n-ro 4 estas tre grava kaj serioza por mi, mi ne ricevos forigi ĝin. Kaj la decido montriĝis ne tiel malfacila.

Kion do ni faru?

Kreu dosierujon users.addon, en la dosierujo /usr/local/mgr5/etc/sql/, du malplenajn dosierojn:

  1. pago_dato
  2. uwemail

Ĉi tio ordonos al la panelo krei en la datumbazo
/usr/local/mgr5/etc/ispmgr.db
en la tabelo de uzantoj estas du respondaj kampoj, kie la valoroj de la administra panelo estos skribitaj.

Kreu dosieron nomitan ispmgr_mod_pay_data.xml en la dosierujo /usr/local/mgr5/etc/xml kun la enhavo

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

Ĉi tio donas al la panelo regulon tiel ke niaj kampoj estas montrataj en la redaktformularo de la uzanto.

Rekomencu la panelon:

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

Ni ricevas:

Aŭtomata malkonekto de uzantoj en ISPManager5 lite sen BILLmanager

En la kampoj ni skribas ĝis kiu tago la gastigado devus funkcii, kaj kian retpoŝton de la uzanto, kie sendi memorigilojn, ke la gastigado baldaŭ finiĝos.

Nun ni devas krei skripton, kiu memorigos uzantojn, ke gastigado finiĝas je iuj intervaloj. Sciigu la administranton, ke gastigado finiĝas. Sciigu la uzanton kaj administranton, ke la uzanto estas malfunkciigita.

Mi ŝatas php sur ĝi kaj skribis skripton.

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

Ni konservas ĉi tiun skripton ie ajn kaj nomas ĝin kiel ajn ni volas, kaj aldonas cron-taskon por nomi ĝin unufoje tage. Ĉio estas preta.

Nun mia konscienco estas trankvila, la bufo estas kontenta, kaj mi ne faris aldonajn kostojn.

Restas nur plenigi la datumojn en la uzantoj en kiu dato la gastigado estis pagita, kaj la retpoŝton de la uzantoj kie sendi memorigilojn al uzantoj.

Mi ĝojas, se ĝi helpas iun.

fonto: www.habr.com

Aldoni komenton