Dati:
- Server VPS con licenza perpetua ispmanager lite 5
- 10-20 utenti sul server
- Google Calendar con promemoria regolari per chi ha terminato hosting
- È frustrante pagare per qualcos'altro, tanto più con un abbonamento
L'obiettivo è liberarsi di Google Calendar e dei promemoria manuali per i clienti riguardo al pagamento dell'hosting. Liberarsi da "lasciamo che funzioni ancora un po', pagherà presto" e "è scomodo disattivarlo", delegando la questione a una macchina senza anima.
Certo, ho cercato su Google, ma non ho trovato soluzioni; tutto si riduceva al fatto che dovevo prendere un abbonamento a BILLmanager, ma il punto n. 4 è molto importante e serio per me, non lo abbandonerò. Inoltre, la soluzione si è rivelata non così complicata.
Quindi, cosa facciamo.
Creiamo la cartella users.addon, nella directory /usr/local/mgr5/etc/sql/, due file vuoti:
- pay_date
- uwemail
Questo darà il comando al pannello di creare nel database
/usr/local/mgr5/etc/ispmgr.db
due campi corrispondenti nella tabella utenti dove verranno scritti i valori dal pannello amministrativo.
Creiamo il file ispmgr_mod_pay_data.xml nella cartella /usr/local/mgr5/etc/xml con il contenuto
Pagato fino a
Email utente
Paid before
User email
Questo stabilisce una regola per il pannello affinché i nostri campi vengano visualizzati nel modulo di modifica utente.
Riavviamo il pannello:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exitOtteniamo:

Nei campi inseriamo fino a quando deve funzionare l'hosting e quale email dell'utente, a cui inviare i promemoria riguardo alla scadenza dell'hosting.
Ora è necessario creare uno script che ricorderà agli utenti che l'hosting sta per scadere con una certa periodicità. Avviserà l'amministratore che l'hosting sta per scadere. Avviserà l'utente e l'amministratore che l'utente è disattivato.
Mi è familiare PHP e ho scritto uno script.
<?php
$adminemail = "admin@gmail.com"; // email amministratore
$day_send_message = [30,7,5,3,1]; // dopo quanti giorni e con quale frequenza verrà ricordato all'utente che l'hosting sta per scadere
$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 scade tra '.$days_left.' giorni', "Testo per l'utente riguardo a quanti giorni sono rimasti");
}
}
if( $days_left == 3 ) {
mail($adminemail, 'ISPMANAGER UTENTE '.$user['name'], $user['name'] . " L'hosting scade tra ".$days_left." giorno");
}
if($days_left <= 0){
mail($adminemail, 'ISPMANAGER UTENTE '.$user['name'].' DISABILITATO', $user['name'].' Disattivato');
exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
if( $user['uwemail'] != "" ) {
mail($user['uwemail'], 'ISPMANAGER hosting disattivato', 'Testo per l'utente che l'hosting è scaduto');
}
}
// se desiderato, è possibile anche scrivere un piccolo IF affinché i dati vengano rimossi dopo un certo tempo, ma a me non serve
}
Questo script può essere salvato ovunque e chiamato come si vuole; si aggiunge un'attività cron per eseguirlo una volta al giorno. È tutto pronto.
Ora la coscienza è pulita, la pressione è soddisfatta, nessun costo aggiuntivo è stato sostenuto.
Rimane da inserire nei dati degli utenti la data fino alla quale è stato pagato l'hosting e l'email degli utenti a cui inviare i promemoria.
Sono felice se può essere di aiuto a qualcuno.
Fonte: habr.com
