Desconexión automática de usuarios en ISPManager5 lite sen BILLmanager

Dado:

  1. Servidor VPS con licenza perpetua ispmanager lite 5
  2. 10-20 usuarios por servidor
  3. Google Calendar con recordatorios regulares para aqueles que quedaron sen aloxamento
  4. É unha mágoa pagar por calquera outra cousa, especialmente cunha subscrición.

O obxectivo é desfacerse do calendario de Google e dos recordatorios manuais ao cliente de que debe pagar polo hospedaxe. Libérate de "deixa que traballe un pouco máis, pronto pagará", "dalgunha maneira é inconveniente apagalo" e confía isto a unha máquina sen alma.

Por suposto, primeiro busquei e busquei en Google, pero non atopei ningunha solución, todo se reducía ao feito de que tes que subscribirte a BILLmanager, pero o punto número 4 é moi importante e serio para min, non conseguirei librarse del. E a decisión non resultou tan difícil.

Entón, que facemos?

Cree un cartafol users.addon, no directorio /usr/local/mgr5/etc/sql/, dous ficheiros baleiros:

  1. data_pago
  2. uwemail

Isto ordenará ao panel que cree na base de datos
/usr/local/mgr5/etc/ispmgr.db
na táboa de usuarios hai dous campos correspondentes onde se escribirán os valores do panel de administración.

Cree un ficheiro chamado ispmgr_mod_pay_data.xml no cartafol /usr/local/mgr5/etc/xml co contido

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

Isto dálle ao panel unha regra para que os nosos campos se mostren no formulario de edición do usuario.

Reinicie o panel:

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

Recibimos:

Desconexión automática de usuarios en ISPManager5 lite sen BILLmanager

Nos campos escribimos ata que día debe funcionar o hospedaxe, e que correo electrónico do usuario, onde enviar recordatorios de que o hospedaxe rematará en breve.

Agora necesitamos crear un script que recorde aos usuarios que o hospedaxe remata nalgúns intervalos. Notifica ao administrador que o aloxamento está a rematar. Notifica ao usuario e ao administrador que o usuario está desactivado.

Gústame o php e escribín un script.

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

Gardamos este script en calquera lugar e chamámolo como queiramos, e engadimos unha tarefa cron para chamalo unha vez ao día. Todo está listo.

Agora a miña conciencia está tranquila, o sapo está satisfeito e non teño ningún custo adicional.

Só queda encher os datos dos usuarios en que data se pagou o hosting e o correo electrónico dos usuarios onde enviar recordatorios aos usuarios.

Alégrome se a alguén lle axuda.

Fonte: www.habr.com

Engadir un comentario