Ibinigay:
- VPS Server na may walang hanggang lisensya ispmanager lite 5
- 10-20 user bawat server
- Google Calendar na may mga regular na paalala para sa mga naubusan ng hosting
- Nakakahiyang magbayad para sa anumang bagay, lalo na sa isang subscription.
Ang layunin ay alisin ang Google calendar at mga manu-manong paalala sa kliyente na kailangan niyang magbayad para sa pagho-host. Palayain ang iyong sarili mula sa "hayaan siyang magtrabaho ng kaunti pa, magbabayad siya sa lalong madaling panahon", "sa anumang paraan ay hindi maginhawa upang patayin ito", at ipagkatiwala ito sa isang walang kaluluwang makina.
Siyempre, nag-Google muna ako at naghanap, ngunit wala akong nakitang mga solusyon, ang lahat ay bumagsak sa katotohanan na kailangan mong mag-subscribe sa BILLmanager, ngunit ang punto No. 4 ay napakahalaga at seryoso para sa akin, hindi ko makuha tanggalin ito. At ang desisyon ay naging hindi napakahirap.
Kaya ano ang gagawin natin?
Gumawa ng folder users.addon, sa /usr/local/mgr5/etc/sql/ directory, dalawang walang laman na file:
- pay_date
- uwemail
Ito ay mag-uutos sa panel na lumikha sa database
/usr/local/mgr5/etc/ispmgr.db
sa talahanayan ng mga gumagamit mayroong dalawang kaukulang mga patlang kung saan isusulat ang mga halaga mula sa admin panel.
Gumawa ng file na tinatawag na ispmgr_mod_pay_data.xml sa /usr/local/mgr5/etc/xml na folder na may mga nilalaman
<?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>
Nagbibigay ito sa panel ng panuntunan upang ang aming mga field ay maipakita sa form ng pag-edit ng user.
I-reboot ang panel:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
Nakukuha namin ang:
Sa mga field na sinusulat namin hanggang anong araw dapat gumana ang hosting, at anong email ng user, kung saan magpapadala ng mga paalala na malapit nang matapos ang hosting.
Ngayon ay kailangan nating gumawa ng script na magpapaalala sa mga user na nagtatapos ang pagho-host sa ilang mga pagitan. Ipaalam sa admin na magtatapos na ang pagho-host. Ipaalam sa user at admin na hindi pinagana ang user.
Gusto ko ang php dito at nagsulat ng script.
<?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 ΡΡΠΎ Π±Ρ Π΄Π°Π½Π½ΡΠ΅ ΡΠ΄Π°Π»ΡΠ»ΠΈΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π½ΠΎ ΠΌΠ½Π΅ ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ
}
Ise-save namin ang script na ito kahit saan at tinatawag itong kahit anong gusto namin, at magdagdag ng cron task para tawagan ito isang beses sa isang araw. Handa na ang lahat.
Ngayon ang aking budhi ay malinis, ang palaka ay nasisiyahan, at wala akong natamo na anumang karagdagang gastos.
Ang natitira na lang ay punan ang data sa mga user kung kailan binayaran ang hosting, at ang email ng mga user kung saan magpapadala ng mga paalala sa mga user.
Masaya kung nakakatulong ito sa isang tao.
Pinagmulan: www.habr.com