Dane:
- Serwer VPS z wieczną licencją ispmanager lite 5
- 10-20 użytkowników na serwerze
- Google Calendar z regularnymi przypomnieniami dla tych, którym się skończyło hosting
- Wkurza mnie płacenie za cokolwiek więcej, tym bardziej za subskrypcję
Celem jest pozbycie się google calendar oraz ręcznych przypomnień klientowi o tym, że musi opłacić hosting. Uwolnić się od "niech jeszcze trochę popracuje, on wkrótce zapłaci", "trochę niewygodnie odłączać" i zdać to na rozwiązanie bezdusznej maszyny.
Oczywiście najpierw przeszukałem Google, ale nie znalazłem rozwiązań, wszystko sprowadzało się do tego, że trzeba wziąć subskrypcję BILLmanager, ale punkt nr 4 jest dla mnie bardzo ważny i poważny, nie zamierzam się go pozbywać. Okazało się, że rozwiązanie nie jest wcale takie trudne.
Więc, co robimy?
Tworzymy folder users.addon w katalogu /usr/local/mgr5/etc/sql/, dwa puste pliki:
- pay_date
- uwemail
To da poleceniu panelu stworzenie w bazie
/usr/local/mgr5/etc/ispmgr.db
w tabeli users dwóch odpowiadających pól, do których będą wpisywane wartości z panelu administracyjnego.
Tworzymy plik ispmgr_mod_pay_data.xml w folderze /usr/local/mgr5/etc/xml z zawartością
Opłacono do
Email użytkownika
Paid before
User email
To daje regułę panelu, aby nasze pola były wyświetlane w formularzu edycji użytkownika.
Restartujemy panel:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exitOtrzymujemy:

W polach wpisujemy do kiedy hosting ma działać oraz jaki email użytkownika, na który będą wysyłane przypomnienia o zbliżającym się końcu hostingu.
Teraz musimy stworzyć skrypt, który będzie przypominał użytkownikom, że hosting się kończy w określonym czasie. Powiadomić administratora, że hosting się kończy. Powiadomić użytkownika i administratora o tym, że użytkownik został wyłączony.
Znam się na php, więc napisałem skrypt.
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 kończy się hosting za '.$days_left.' dni', "Tekst do użytkownika o tym, że zostało tyle dni");
}
}
if( $days_left == 3 ) {
mail($adminemail, 'ISPMANAGER UŻYTKOWNIK '.$user['name'], $user['name'] . " Hosting skończy się za ".$days_left." dni");
}
if($days_left <= 0){
mail($adminemail, 'ISPMANAGER UŻYTKOWNIK '.$user['name'].' WYŁĄCZONY', $user['name'].' Został wyłączony');
exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
if( $user['uwemail'] != "" ) {
mail($user['uwemail'], 'ISPMANAGER hosting wyłączony', 'Tekst do użytkownika, że hosting się skończył');
}
}
// przy chęci można jeszcze napisać mały IF, aby dane były usuwane po pewnym czasie, ale nie jest mi to potrzebne
}
Ten skrypt można zapisać gdziekolwiek i nazwać dowolnie, dodajemy do zadania cron, aby wywoływał go raz dziennie. Wszystko gotowe.
Teraz sumienie jest czyste, żaba zadowolona, dodatkowych kosztów nie poniesiono.
Pozostało uzupełnić dane użytkowników, na jaką datę opłacony jest hosting i e-mail użytkowników, na który wysyłać przypomnienia.
Cieszę się, jeśli komuś to pomoże.
Źródło: habr.com
