Dano:
- VPS Strežnik z večno licenco ispmanager lite 5
- 10-20 uporabnikov na strežniku
- Google Koledar z rednimi opomniki za tiste, ki so potekli gostovanje
- Zaviranjem preplačnik plačevati še kaj drugega, še posebej na naročnino
Cilj je znebiti se Google Koledarja in ročnih opomnikov za stranko, da mora plačati gostovanje. Osvoboditi se tistega "naj še malo dela, kmalu bo plačal" "neprijetno je izklopiti" in to zaupati brezdušnemu stroju.
Seveda sem najprej poiskal rešitve na Googlu, a nisem našel, vse je vodilo do tega, da moraš vzeti naročnino BILLmanager, vendar je točka št. 4 zame zelo pomembna in resna, zato se je ne bom znebil. In rešitev se je izkazala za precej preprosto.
Torej, kaj naredimo.
Ustvarimo mapo users.addon v direktoriju /usr/local/mgr5/etc/sql/, dva prazna datoteka:
- pay_date
- uwemail
To bo ukaz, da panel ustvari v bazi
/usr/local/mgr5/etc/ispmgr.db
v tabeli users dve ustrezni polji, kamor se bodo zapisovale vrednosti iz administrativnega panela.
Ustvarimo datoteko ispmgr_mod_pay_data.xml v mapi /usr/local/mgr5/etc/xml s vsebino
Plačano do
Uporabniški email
Paid before
User email
To daje pravilo panelu, da se naša polja prikažejo v obrazcu za urejanje uporabnika.
Ponovno zaženemo panel:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exitDobimo:

V polja vpišemo do katerega dne naj gostovanje deluje, in kateri email uporabnika, kamor pošiljati opomnike, da se bo gostovanje kmalu izteklo.
Zdaj je treba ustvariti skript, ki bo obveščal uporabnike o tem, da se gostovanje izteka ob določenem časovnem intervalu. Obveščati administratorja, da se gostovanje izteka. Obveščati uporabnika in administratorja, da je uporabnik onemogočen.
Blizu mi je php, zato sem napisal skript.
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 the hosting has ended');
}
}
// optionally, you can add a small IF to delete data after some time, but I do not need this
}
This script can be saved anywhere and named as you wish; add it to the cron job to call it once a day. All set.
Now the conscience is clear, the concern is satisfied, no additional costs incurred.
All that's left is to fill in the users' data, indicating by which date hosting has been paid, and the users' email addresses where to send reminders.
Glad to know it helps someone.
Izvor: habr.com
