Dado:
- Servidor VPS con licencia perpetua de ispmanager lite 5
- 10-20 usuarios en el servidor
- Google Calendar con recordatorios regulares para quienes se les ha terminado hosting
- Es una carga pagar por algo más, especialmente por una suscripción
El objetivo es deshacerse de Google Calendar y de los recordatorios manuales al cliente sobre el pago del hosting. Liberarme de "déjame que aún trabaje un poco más, pronto pagará" y "es un poco incómodo desconectar", y delegar eso a una máquina insensible.
Por supuesto, primero busqué en Google, pero no encontré soluciones; todo se reducía a que necesitaba una suscripción a BILLmanager. Sin embargo, el punto número 4 es muy importante y serio para mí, no me desharé de él. Y además, la solución resultó no ser tan complicada.
Así que, ¿qué hacemos?
Creamos una carpeta users.addon en el directorio /usr/local/mgr5/etc/sql/, que contenga dos archivos vacíos:
- pay_date
- uwemail
Esto le dará la orden al panel para crear en la base
/usr/local/mgr5/etc/ispmgr.db
en la tabla users dos campos correspondientes donde se escribirán los valores desde el panel de administración.
Creamos el archivo ispmgr_mod_pay_data.xml en la carpeta /usr/local/mgr5/etc/xml con el contenido
Pagado hasta
Email del usuario
Paid before
User email
Esto establece la regla para el panel para que nuestros campos aparezcan en el formulario de edición de usuario.
Reiniciamos el panel:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exitObtenemos:

En los campos escribimos hasta qué día debe funcionar el hosting y qué email del usuario se enviará para recordar que pronto se acabará el hosting.
Ahora necesitamos crear un script que recuerde a los usuarios que el hosting está a punto de finalizar de manera periódica. Notificar al administrador que el hosting se está terminando. Notificar al usuario y al administrador que el usuario ha sido desconectado.
Me siento cómodo con PHP y escribí el script.
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 el hosting termina en '.$days_left.' días', "Texto para el usuario sobre cuántos días quedan");
}
}
if( days_left == 3 ) {
mail($adminemail, 'ISPMANAGER USUARIO '.$user['name'], $user['name'] . " El hosting terminará en ".days_left." días");
}
if(days_left <= 0){
mail($adminemail, 'ISPMANAGER USUARIO '.$user['name'].' DESACTIVADO', $user['name'].' Desactivado');
exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
if( $user['uwemail'] != "" ) {
mail($user['uwemail'], 'ISPMANAGER hosting desactivado', 'Texto para el usuario que el hosting ha finalizado');
}
}
// si se desea, también se puede agregar un IF pequeño para que los datos se eliminen después de cierto tiempo, pero no lo necesito
}
Este script se guarda en cualquier lugar y se llama como se desee, se añade como tarea cron para que se ejecute una vez al día. Todo listo.
Ahora la conciencia está tranquila, la satisfacción está asegurada, no ha habido gastos adicionales.
Solo queda completar con los datos de los usuarios la fecha hasta la cual ha sido pagado el hosting, y el email de los usuarios a quienes se enviarán recordatorios.
Me alegra si a alguien le resulta útil.
Fuente: habr.com
