Дато:
- ВПС сервер са трајном лиценцом испманагер лите 5
- 10-20 корисника по серверу
- Гугл календар са редовним подсетницима за оне којима понестаје новца хостинг
- Срамота је платити било шта друго, поготово уз претплату.
Циљ је да се отарасимо Гоогле календара и ручних подсетника клијенту да треба да плати хостинг. Ослободите се „пустите га да ради још мало, ускоро ће платити“, „некако је незгодно искључити га“, и повери ово машини без душе.
Наравно, прво сам гуглао и тражио, али нисам нашао никаква решења, све се свело на то да треба да се претплатите на БИЛЛманагер, али тачка број 4 је веома важна и озбиљна за мене, нећу добити отарасим. И испоставило се да одлука није била тако тешка.
Па шта да радимо?
Направите фасциклу усерс.аддон, у директоријуму /уср/лоцал/мгр5/етц/скл/, две празне датотеке:
- паи_дате
- увемаил
Ово ће командовати панелу да се креира у бази података
/уср/лоцал/мгр5/етц/испмгр.дб
у табели корисника постоје два одговарајућа поља у која ће бити уписане вредности са админ панела.
Направите датотеку под називом испмгр_мод_паи_дата.кмл у фасцикли /уср/лоцал/мгр5/етц/кмл са садржајем
<?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>
Ово даје панелу правило тако да се наша поља приказују у корисничком обрасцу за уређивање.
Поново покрените панел:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exitДобијамо:

У пољима уписујемо до ког дана хостинг треба да ради, и који мејл корисника, где да пошаље подсетнике да ће хостинг ускоро престати.
Сада треба да направимо скрипту која ће подсећати кориснике да се хостинг завршава у одређеним интервалима. Обавестите администратора да се хостинг завршава. Обавестите корисника и администратора да је корисник онемогућен.
Свиђа ми се пхп на њему и написао сам скрипту.
<?php
$adminemail = "admin@gmail.com"; // 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 что бы данные удалялись через некоторое время, но мне это не нужно
}
Чувамо ову скрипту било где и зовемо је како год желимо и додајемо црон задатак да је позивамо једном дневно. Све је спремно.
Сада ми је савест чиста, жаба је задовољна, а нисам имао никакве додатне трошкове.
Остаје само да се попуне подаци у корисницима ког датума је хостинг плаћен, и мејл корисника где да се шаљу подсетници корисницима.
Драго ми је ако некоме помогне.
Извор: ввв.хабр.цом
