S obzirom:
- VPS server sa trajnom licencom ispmanager lite 5
- 10-20 korisnika po serveru
- Google kalendar sa redovnim podsjetnicima za one kojima je ponestalo hostinga
- Sramota je platiti bilo šta drugo, pogotovo uz pretplatu.
Cilj je riješiti se Google kalendara i ručnih podsjetnika klijentu da treba platiti hosting. Oslobodite se „pustite ga da radi još malo, uskoro će platiti“, „nekako je nezgodno isključiti ga“, i povjerite ovo mašini bez duše.
Naravno, prvo sam guglao i tražio, ali nisam našao rješenja, sve se svelo na to da se morate pretplatiti na BILLmanager, ali tačka broj 4 mi je jako bitna i ozbiljna, neću shvatiti osloboditi se toga. A odluka se pokazala i nije tako teška.
Pa šta da radimo?
Kreirajte folder users.addon, u direktoriju /usr/local/mgr5/etc/sql/, dvije prazne datoteke:
- pay_date
- uwemail
Ovo će komandovati panelu za kreiranje u bazi podataka
/usr/local/mgr5/etc/ispmgr.db
u tabeli korisnika postoje dva odgovarajuća polja u koja će biti upisane vrednosti sa admin panela.
Kreirajte datoteku pod nazivom ispmgr_mod_pay_data.xml u folderu /usr/local/mgr5/etc/xml sa sadržajem
<?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">Оплачено до</msg>
<msg name="uwemail" sqlname="uwemail">Пользовательский email</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>
Ovo daje panelu pravilo tako da se naša polja prikazuju u korisničkom obrascu za uređivanje.
Ponovo pokrenite panel:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
Dobijamo:
U poljima upisujemo do kog dana hosting treba da radi, i koji email korisnika, kuda poslati podsjetnike da će hosting uskoro prestati.
Sada moramo kreirati skriptu koja će podsjetiti korisnike da se hosting završava u određenim intervalima. Obavijestite administratora da se hosting završava. Obavijestite korisnika i administratora da je korisnik onemogućen.
Sviđa mi se php na njemu i napisao sam skriptu.
<?php
$adminemail = "[email protected]"; // email админа
$day_send_message = [30,7,5,3,1]; // за сколько дней и с какой переодичностью будет напоминать пользователю что хостинг заканчивается
$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 заканчивается хостинг через '.$days_left.' днейя', "Текст для пользователя о том что осталось столько то дней");
}
}
if( $days_left == 3 ) {
mail($adminemail, 'ISPMANAGER USER '.$user['name'], $user['name'] . " Закончится хостинг через ".$days_left." дня");
}
if($days_left <= 0){
mail($adminemail, 'ISPMANAGER USER '.$user['name'].' DISABLED', $user['name'].' Отключен');
exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
if( $user['uwemail'] != "" ) {
mail($user['uwemail'], 'ISPMANAGER хостинг отключен', 'Текст для пользователя что хостинг закончился');
}
}
// при желании можно еще написать небольшой IF что бы данные удалялись через некоторое время, но мне это не нужно
}
Ovu skriptu spremamo bilo gdje i zovemo je kako god želimo i dodajemo cron zadatak da je pozivamo jednom dnevno. Sve je spremno.
Sada mi je savjest čista, žaba je zadovoljna, a nisam imao nikakve dodatne troškove.
Ostaje samo da se popune podaci o korisnicima na koji datum je hosting plaćen, te email korisnika na koji se šalju podsjetnici korisnicima.
Drago mi je ako nekome pomogne.
izvor: www.habr.com