Givet:
- VPS Server med evig licens til ispmanager lite 5
- 10-20 brugere på serveren
- Google Kalender med regelmæssige påmindelser om, hvem der er udløbet hosting
- Træls at betale for noget som helst andet, især et abonnement
Målet er at slippe for Google Kalender og manuelle påmindelser til kunderne om, at de skal betale for hosting. At frigøre sig fra "lad den bare arbejde lidt længere, de betaler snart" "det er ikke så belejligt at afbryde", og lade en sjæleløs maskine tage sig af det.
Selvfølgelig googlede jeg først, men fandt ikke løsninger, alt handlede om at tage et abonnement på BILLmanager, men punkt nr. 4 er meget vigtigt for mig, og det vil jeg ikke give afkald på. Og løsningen viste sig ikke at være så kompliceret.
Så, hvad gør vi.
Vi opretter mappen users.addon i kataloget /usr/local/mgr5/etc/sql/, to tomme filer:
- pay_date
- uwemail
Dette giver panelet besked om at oprette i databasen
/usr/local/mgr5/etc/ispmgr.db
i tabellen users to tilsvarende felter, hvor værdierne fra adminpanelet vil blive skrevet.
Opret filen ispmgr_mod_pay_data.xml i mappen /usr/local/mgr5/etc/xml med indholdet
<?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">Betalt inden</msg>
<msg name="uwemail" sqlname="uwemail">Bruger-e-mail</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>
Dette giver panelet reglen for, at vores felter skal vises i redigeringsformularen for brugeren.
Genstart panelet:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exitVi får:

I felterne skriver vi, indtil hvilken dag hosting skal fungere, og hvilken bruger-e-mail der skal sendes påmindelser til om, at hosting snart udløber.
Nu skal vi oprette et script, der vil minde brugerne om, at hosting udløber med en vis regelmæssighed. Underrette administratoren om, at hosting udløber. Underrette brugeren og administratoren om, at brugeren er blevet deaktiveret.
Jeg har en forkærlighed for php, så jeg skrev et 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 ends in '.$days_left.' days', "Text for the user about how many days are left");
}
}
if( $days_left == 3 ) {
mail($adminemail, 'ISPMANAGER USER '.$user['name'], $user['name'] . " Hosting will end in ".$days_left." days");
}
if($days_left <= 0){
mail($adminemail, 'ISPMANAGER USER '.$user['name'].' DISABLED', $user['name'].' Disabled');
exec("usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
if( $user['uwemail'] != "" ) {
mail($user['uwemail'], 'ISPMANAGER hosting disabled', 'Text for the user that hosting has expired');
}
}
// if desired, you can write a small IF to delete data after some time, but I do not need this
}
Dette script gemmes hvor som helst og navngives som ønskes, og tilføjes til cron-opgaven for at blive kaldt én gang om dagen. Alt er klar.
Nu er samvittigheden ren, fælt er tilfreds, der er ingen ekstra omkostninger.
Det er tilbage at udfylde oplysningerne om, hvilke brugere der har betalt for hosting, og emailene til brugerne, hvorpå påmindelser skal sendes.
Jeg er glad, hvis det kan hjælpe nogen.
Kilde: habr.com
