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

mayo:

  1. Servidor VPS con licencia perpetua ispmanager lite 5
  2. 10-20 usuarios por servidor
  3. Google Calendar con recordatorios periódicos para quienes se han quedado sin hosting
  4. Es una pena pagar por cualquier otra cosa, especialmente con una suscripción.

El objetivo es deshacerse del calendario de Google y de los recordatorios manuales al cliente de que debe pagar por el alojamiento. Libérese de "déjelo trabajar un poco más, pronto pagará", "de alguna manera es un inconveniente apagarlo" y confíelo a una máquina sin alma.

Por supuesto, primero busqué en Google y busqué, pero no encontré ninguna solución, todo se redujo al hecho de que necesitas suscribirte a BILLmanager, pero el punto número 4 es muy importante y serio para mí, no lo entenderé. Deshazte de eso. Y la decisión no fue tan difícil.

¿Asi que que hacemos?

Cree una carpeta usuarios.addon, en el directorio /usr/local/mgr5/etc/sql/, dos archivos vacíos:

  1. fecha de pago
  2. correo electrónico

Esto ordenará al panel que cree en la base de datos.
/usr/local/mgr5/etc/ispmgr.db
en la tabla de usuarios hay dos campos correspondientes donde se escribirán los valores del panel de administración.

Cree un archivo llamado ispmgr_mod_pay_data.xml en la carpeta /usr/local/mgr5/etc/xml con el contenido

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

Esto le da al panel una regla para que nuestros campos se muestren en el formulario de edición del usuario.

Reinicie el panel:

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

Nosotros obtenemos

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

En los campos escribimos hasta qué día debe funcionar el hosting, y qué correo electrónico del usuario, dónde enviar recordatorios de que el hosting finalizará pronto.

Ahora necesitamos crear un script que recuerde a los usuarios que el hosting finaliza en algunos intervalos. Notifique al administrador que el alojamiento está finalizando. Notifique al usuario y al administrador que el usuario está deshabilitado.

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

Guardamos este script en cualquier lugar y lo llamamos como queramos, y agregamos una tarea cron para llamarlo una vez al día. Todo está listo.

Ahora mi conciencia está tranquila, el sapo está satisfecho y no he incurrido en ningún coste adicional.

Ya solo queda rellenar los datos de los usuarios en qué fecha se pagó el hosting, y el correo electrónico de los usuarios donde enviar recordatorios a los usuarios.

Me alegro si ayuda a alguien.

Fuente: habr.com

Añadir un comentario