Gegeben:
- VPS-Server mit ewiger Lizenz ispmanager lite 5
- 10-20 Benutzer auf dem Server
- Google Kalender mit regelmĂ€Ăigen Erinnerungen fĂŒr diejenigen, die abgelaufen sind Hosting
- Es ist nervig, fĂŒr irgendetwas anderes zu zahlen, insbesondere fĂŒr ein Abonnement
Ziel ist es, den Google Kalender und die manuellen Erinnerungen an den Kunden zu beseitigen, um ihn daran zu erinnern, dass er das Hosting bezahlen muss. Sich von "lass ihn noch ein wenig arbeiten, er wird bald bezahlen" und "es wĂ€re unhöflich, abzuschalten" zu befreien und diese Entscheidungen einer maschinellen Lösung zu ĂŒberlassen.
NatĂŒrlich habe ich zuerst gegoogelt und nach Lösungen gesucht, aber ich fand nichts, alles fĂŒhrte zu dem Punkt, dass ich ein Abonnement fĂŒr BILLmanager nehmen musste, aber Punkt Nr. 4 ist mir sehr wichtig und ernst, ich werde ihn nicht loswerden. Und die Lösung stellte sich als gar nicht so kompliziert heraus.
Also, was machen wir.
Wir erstellen einen Ordner users.addon im Verzeichnis /usr/local/mgr5/etc/sql/, mit zwei leeren Dateien:
- pay_date
- uwemail
Das wird der OberflÀche befehlen, in der Datenbank
/usr/local/mgr5/etc/ispmgr.db
zwei entsprechende Felder in der Tabelle users zu erstellen, in die die Werte von der AdministrationsoberflÀche geschrieben werden.
Wir erstellen die Datei ispmgr_mod_pay_data.xml im Ordner /usr/local/mgr5/etc/xml mit folgendem Inhalt
Bezahlt bis
Benutzer-E-Mail
Paid before
User email
Das gibt der OberflÀche die Regel, damit unsere Felder im Formular zur Benutzerbearbeitung angezeigt werden.
Wir starten die OberflÀche neu:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exitWir erhalten:

In die Felder schreiben wir, bis wann das Hosting arbeiten soll und welche E-Mail des Benutzers, an die Erinnerungen geschickt werden sollen, dass das Hosting bald ablÀuft.
Jetzt muss ein Skript erstellt werden, das die Benutzer periodisch daran erinnert, dass das Hosting bald endet. Den Admin benachrichtigen, dass das Hosting bald endet. Den Benutzer und den Admin benachrichtigen, dass der Benutzer deaktiviert ist.
Ich bin mit PHP vertraut und habe das Skript darauf geschrieben.
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 lĂ€uft in '.$days_left.' Tagen aus', "Text fĂŒr den Benutzer, dass noch so viele Tage bleiben");
}
}
if( $days_left == 3 ) {
mail($adminemail, 'ISPMANAGER BENUTZER '.$user['name'], $user['name'] . " Das Hosting lÀuft in ".$days_left." Tagen ab");
}
if($days_left <= 0) {
mail($adminemail, 'ISPMANAGER BENUTZER '.$user['name'].' DEAKTIVIERT', $user['name'].' wurde deaktiviert');
exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
if( $user['uwemail'] != "" ) {
mail($user['uwemail'], 'ISPMANAGER Hosting deaktiviert', 'Text fĂŒr den Benutzer, dass das Hosting abgelaufen ist');
}
}
// Bei Bedarf kann noch eine kleine IF-Anweisung hinzugefĂŒgt werden, damit die Daten nach einiger Zeit gelöscht werden, aber das brauche ich nicht.
}
Dieses Skript speichern wir irgendwo und nennen es wie immer, fĂŒgen es als Cron-Job hinzu, um es einmal tĂ€glich aufzurufen. Alles bereit.
Jetzt ist das Gewissen rein, der innere Schweinehund besÀnftigt, es entstehen keine zusÀtzlichen Kosten.
Es bleibt nur noch, die Daten der Benutzer auszufĂŒllen, zu welchem Datum das Hosting bezahlt wurde und an welche E-Mail-Adressen die Erinnerungen gesendet werden sollen.
Ich freue mich, wenn es jemandem hilft.
Quelle: habr.com
