Emana:
- VPS zerbitzaria betiko lizentzia duen ispmanager lite 5
- 10-20 erabiltzaile zerbitzari bakoitzeko
- Google Calendar-ek agortzen ari direnentzako ohiko abisuak eskaintzen ditu hostinga
- Pena da beste edozer ordaintzea, batez ere harpidetzarekin.
Helburua da Google-ren egutegia eta eskuzko abisuak kentzea bezeroari hostinga ordaindu behar duela. Askatu "utzi apur bat gehiago lan egiten, laster ordainduko du", "nolabait deserosoa da itzaltzea" eta utzi hau arimarik gabeko makina bati.
Noski, lehenengo Googlen egin nuen eta bilatu nuen, baina ez nuen irtenbiderik aurkitu, BILLmanager-era harpidetu behar zarela laburbildu zen guztia, baina 4. puntua oso garrantzitsua eta serioa da niretzat, ez dut lortuko kendu. Eta erabakia ez zen hain zaila izan.
Orduan, zer egiten dugu?
Sortu karpeta bat users.addon, /usr/local/mgr5/etc/sql/ direktorioan, bi fitxategi huts:
- ordainketa_data
- uwemail
Honek panelari datu-basean sortzeko aginduko dio
/usr/local/mgr5/etc/ispmgr.db
Erabiltzaileen taulan dagozkien bi eremu daude non administrazio paneleko balioak idatziko diren.
Sortu ispmgr_mod_pay_data.xml izeneko fitxategia /usr/local/mgr5/etc/xml karpetan edukiarekin
<?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>
Honek panelari arau bat ematen dio, gure eremuak erabiltzailearen edizio formularioan bistaratzeko.
Berrabiarazi panela:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exitLortzen dugu:

Eremuetan ostalaritzak zein egun arte funtzionatu behar duen idazten dugu, eta erabiltzailearen zein e-posta, non bidali abisuak ostalaritza laster amaituko den.
Orain erabiltzaileei ostalaritza tarte batzuetan amaitzen dela gogoraraziko dien script bat sortu behar dugu. Jakinarazi administratzaileari hostinga amaitzen ari dela. Jakinarazi erabiltzaileari eta administratzaileari erabiltzailea desgaituta dagoela.
PHP gustatzen zait eta script bat idatzi dut.
<?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 что бы данные удалялись через некоторое время, но мне это не нужно
}
Script hau edonon gordetzen dugu eta nahi dugun moduan deitzen diogu eta cron zeregin bat gehitzen diogu egunean behin deitzeko. Dena prest dago.
Orain nire kontzientzia garbi dago, apoa ase, eta ez dut kostu gehigarririk egin.
Ostalaritza zein datatan ordaindu den erabiltzaileen datuak eta erabiltzaileei abisuak bidaltzeko erabiltzaileen posta elektronikoa betetzea besterik ez da geratzen.
Pozik norbaiti laguntzen badio.
Iturria: www.habr.com
