mayo:
- Servidor VPS con licencia perpetua ispmanager lite 5
- 10-20 usuarios por servidor
- Google Calendar con recordatorios periódicos para quienes se han quedado sin hosting
- 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:
- fecha de pago
- 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
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