Vzhľadom na to:
- Server VPS s trvalou licenciou ispmanager lite 5
- 10-20 používateľov na server
- Kalendár Google s pravidelnými pripomienkami pre tých, ktorým sa minul hosting
- Za čokoľvek iné je škoda platiť, najmä s predplatným.
Cieľom je zbaviť sa Google kalendára a manuálnych pripomienok klientovi, že potrebuje zaplatiť za hosting. Osloboďte sa od „nechaj ho pracovať trochu viac, čoskoro zaplatí“, „vypínať je nejako nepohodlné“ a zverte to bezduchému stroju.
Samozrejme som najprv googlil a hľadal, ale nenašiel som žiadne riešenia, všetko sa to zvrhlo na to, že si treba predplatiť BILLmanager, ale bod č.4 je pre mňa veľmi dôležitý a vážny, nedostanem zbaviť sa toho. A ukázalo sa, že rozhodnutie nebolo také ťažké.
Čo teda urobíme?
Vytvorte priečinok users.addon, v adresári /usr/local/mgr5/etc/sql/ dva prázdne súbory:
- dátum_platby
- uwemail
Toto prikáže panelu vytvoriť v databáze
/usr/local/mgr5/etc/ispmgr.db
v tabuľke používateľov sú dve zodpovedajúce polia, do ktorých sa zapíšu hodnoty z administračného panela.
Vytvorte súbor s názvom ispmgr_mod_pay_data.xml v priečinku /usr/local/mgr5/etc/xml s obsahom
<?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>
To dáva panelu pravidlo, aby sa naše polia zobrazovali v editačnom formulári používateľa.
Reštartujte panel:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
Máme:
Do polí napíšeme do akého dňa má hosting fungovať a aký email používateľa, kam posielať pripomienky, že hosting čoskoro skončí.
Teraz musíme vytvoriť skript, ktorý používateľom pripomenie, že hosting v určitých intervaloch končí. Upozornite správcu, že hosting končí. Upozornite používateľa a správcu, že používateľ je zakázaný.
Páči sa mi na ňom php a napísal som skript.
<?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 что бы данные удалялись через некоторое время, но мне это не нужно
}
Tento skript si uložíme kdekoľvek a nazveme ho, ako chceme, a pridáme úlohu cron, aby sme ho volali raz denne. Všetko je pripravené.
Teraz mám čisté svedomie, ropucha je spokojná a nevznikli mi žiadne ďalšie náklady.
Ostáva už len vyplniť v užívateľoch údaje, ku ktorému dátumu bol hosting zaplatený, a email užívateľov, kam majú užívateľom posielať upomienky.
Som rád, ak to niekomu pomôže.
Zdroj: hab.com