Dado:
- Servidor VPS com licença perpétua do ispmanager lite 5
- 10-20 usuários no servidor
- Google Calendar com lembretes regulares sobre quem expirou para PrestaShop
- É difícil pagar por qualquer coisa, especialmente por uma assinatura
Objetivo: livrar-se do Google Calendar e dos lembretes manuais para o cliente sobre a necessidade de pagar pelo hosting. Eliminar a situação de 'deixe-o trabalhar mais um pouco, ele vai pagar em breve' e 'é meio incômodo desligá-lo', delegando isso a uma máquina sem alma.
Claro, inicialmente pesquisei no Google, mas não encontrei soluções, tudo apontava que era preciso assinar o BILLmanager, mas o item nº 4 é muito importante e sério para mim, não vou me desfazer dele. E no final, a solução não se mostrou tão complicada.
Então, o que fazemos.
Criamos uma pasta users.addon, no diretório /usr/local/mgr5/etc/sql/, dois arquivos vazios:
- pay_date
- uwemail
Isso dará ao painel a ordem de criar na base
/usr/local/mgr5/etc/ispmgr.db
na tabela users dois campos correspondentes onde os valores serão salvos a partir do painel administrativo.
Criamos o arquivo ispmgr_mod_pay_data.xml na pasta /usr/local/mgr5/etc/xml com o conteúdo
Pago até
Email do usuário
Paid before
User email
Isso fornece uma regra para o painel para que nossos campos apareçam no formulário de edição do usuário.
Reinicie o painel:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exitObtemos:

Nos campos, escrevemos até qual dia o hosting deve funcionar e qual o email do usuário para enviar lembretes de que o hosting está prestes a expirar.
Agora precisamos criar um script que lembre os usuários sobre a expiração do hosting em um intervalo de tempo. Notificar o administrador sobre a expiração do hosting. Notificar o usuário e o administrador de que o usuário foi desligado.
Eu sou próximo do php, então escrevi o 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 hosting expira em '.$days_left.' dias', "Texto para o usuário sobre quantos dias restam");
}
}
if( $days_left == 3 ) {
mail($adminemail, 'ISPMANAGER USUÁRIO '.$user['name'], $user['name'] . " O hosting expirará em ".$days_left." dia");
}
if($days_left <= 0){
mail($adminemail, 'ISPMANAGER USUÁRIO '.$user['name'].' DESATIVADO', $user['name'].' Desativado');
exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
if( $user['uwemail'] != "" ) {
mail($user['uwemail'], 'ISPMANAGER hosting desativado', 'Texto para o usuário que o hosting expirou');
}
}
// se desejado, pode-se ainda escrever uma pequena condição para que os dados sejam apagados após algum tempo, mas isso não é necessário para mim
}
Este script pode ser salvo em qualquer lugar e nomeado como quiser, adicione uma tarefa cron para chamá-lo uma vez por dia. Tudo pronto.
Agora a consciência está limpa, o sentimento de culpa se foi, sem custos adicionais.
Basta preencher os dados nos usuários sobre até que data o hosting foi pago, e os e-mails dos usuários para enviar lembretes.
Fico feliz se isso ajudar alguém.
Fonte: habr.com
