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

Dado:



  1. Servidor VPS con licencia perpetua ispmanager lite 5
  2. 10-20 usuarios en el servidor
  3. Google Calendar con recordatorios periódicos de quién se ha quedado sin alojamiento
  4. El sapo asfixiante paga cualquier otra cosa, especialmente con una suscripción.


El objetivo es deshacerse del calendario de Google y los recordatorios manuales al cliente de que debe pagar por el alojamiento. Para deshacerse de “déjalo trabajar un poco más, pronto pagará” “como no conviene apagarlo”, y confiárselo a una máquina desalmada.



Por supuesto, al principio lo busqué, pero no encontré ninguna solución, todo se redujo al hecho de que necesita suscribirse a BILLmanager, pero tengo un punto muy importante y serio # 4, no me deshaceré de él. Y la decisión resultó no ser tan difícil.



Asi que que hacemos.



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



  1. fecha de pago
  2. uwemail


Esto le dará al panel el comando para crear dos campos correspondientes en la base de datos

/usr/local/mgr5/etc/ispmgr.db

en la tabla de usuarios donde se escribirán los valores del panel de administración.



Cree un archivo 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 la regla de que nuestros campos se muestran en el formulario de edición del usuario.



Vuelva a cargar el panel:



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


Recibimos:



imagen



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 terminará pronto.



Ahora necesita crear un script que recuerde a los usuarios que el alojamiento termina con cierta frecuencia. Notifique al administrador que el alojamiento está a punto de finalizar. Notifique al usuario y al administrador que el usuario está deshabilitado.



Estoy cerca de php y escribí un script.



<?php
$adminemail = "admin@gmail.com"; // 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 quiera, agregamos una tarea a cron para llamarlo una vez al día. Todo está listo.



Ahora la conciencia está tranquila, el sapo está satisfecho, no ha incurrido en gastos adicionales.



Queda por completar los datos en los usuarios por qué fecha se pagó el hosting, y el correo electrónico de los usuarios dónde enviar recordatorios a los usuarios.



Me alegro si ayuda a alguien.



All Articles