рджрд┐рд▓реЗрдГ
- рд╢рд╛рд╢реНрд╡рдд рдкрд░рд╡рд╛рдиреНрдпрд╛рд╕рд╣ VPS рд╕рд░реНрд╡реНрд╣рд░ ispmanager lite 5
- рдкреНрд░рддрд┐ рд╕рд░реНрд╡реНрд╣рд░ 10-20 рд╡рд╛рдкрд░рдХрд░реНрддреЗ
- рдЬреНрдпрд╛рдВрдЪреЗ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╕рдВрдкрд▓реЗ рдЖрд╣реЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рдирд┐рдпрдорд┐рдд рд╕реНрдорд░рдгрдкрддреНрд░рд╛рдВрд╕рд╣ Google Calendar
- рдЗрддрд░ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЧреЛрд╖реНрдЯреАрд╕рд╛рдареА, рд╡рд┐рд╢реЗрд╖рдд: рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рдирд╕рд╣ рдкреИрд╕реЗ рджреЗрдгреЗ рд▓рд╛рдЬрд┐рд░рд╡рд╛рдгреЗ рдЖрд╣реЗ.
рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧрд╕рд╛рдареА рдкреИрд╕реЗ рджреНрдпрд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓ рдЕрд╢рд╛ Google рдХреЕрд▓реЗрдВрдбрд░ рдЖрдгрд┐ рдореЕрдиреНрдпреБрдЕрд▓ рд╕реНрдорд░рдгрдкрддреНрд░рд╛рдВрдкрд╛рд╕реВрди рдореБрдХреНрдд рд╣реЛрдгреЗ рд╣реЗ рдзреНрдпреЗрдп рдЖрд╣реЗ. тАЬрддреНрдпрд╛рд▓рд╛ рдЕрдЬреВрди рдереЛрдбреЗ рдХрд╛рдо рдХрд░реВ рджреНрдпрд╛, рддреЛ рд▓рд╡рдХрд░рдЪ рдкреИрд╕реЗ рджреЗрдИрд▓тАЭ, тАЬрддреЗ рдмрдВрдж рдХрд░рдгреЗ рдХрд╕реЗ рддрд░реА рдЧреИрд░рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗтАЭ рдпрд╛рдкрд╛рд╕реВрди рд╕реНрд╡рддрдГрд▓рд╛ рдореБрдХреНрдд рдХрд░рд╛ рдЖрдгрд┐ рд╣реЗ рдирд┐рд░реНрд╡рд┐рдХрд╛рд░ рдорд╢реАрдирдХрдбреЗ рд╕реЛрдкрд╡рд╛.
рдЕрд░реНрдерд╛рдд, рдореА рдкреНрд░рдердо рдЧреБрдЧрд▓ рдХреЗрд▓реЗ рдЖрдгрд┐ рд╢реЛрдзрд▓реЗ, рдкрд░рдВрддреБ рдорд▓рд╛ рдХреЛрдгрддреЗрд╣реА рдЙрдкрд╛рдп рд╕рд╛рдкрдбрд▓реЗ рдирд╛рд╣реАрдд, рд╣реЗ рд╕рд░реНрд╡ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрд╡рд░реВрди рдЙрдХрд│рд▓реЗ рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ BILLmanager рдЪреЗ рд╕рджрд╕реНрдпрддреНрд╡ рдШреНрдпрд╛рдпрдЪреЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдореБрджреНрджрд╛ рдХреНрд░рдорд╛рдВрдХ 4 рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА рдЦреВрдк рдорд╣рддреНрд╡рд╛рдЪрд╛ рдЖрдгрд┐ рдЧрдВрднреАрд░ рдЖрд╣реЗ, рдорд▓рд╛ рддреЗ рдорд┐рд│рдгрд╛рд░ рдирд╛рд╣реА. рддреНрдпрд╛рддреВрди рд╕реБрдЯрдХрд╛ рдЖрдгрд┐ рдирд┐рд░реНрдгрдп рдЗрддрдХрд╛ рдХрдареАрдг рдирд╡реНрд╣рддрд╛.
рдордЧ рдЖрдореНрд╣реА рдХрд╛рдп рдХрд░реВ?
/usr/local/mgr5/etc/sql/ рдбрд┐рд░реЗрдХреНрдЯреНрд░реАрдордзреНрдпреЗ user.addon рд╣реЗ рдлреЛрд▓реНрдбрд░ рддрдпрд╛рд░ рдХрд░рд╛, рджреЛрди рд░рд┐рдХрд╛рдореНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕:
- pay_date
- uwemail
рд╣реЗ рдкреЕрдиреЗрд▓рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдЬреНрдЮрд╛ рджреЗрдИрд▓
/usr/local/mgr5/etc/ispmgr.db
рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЯреЗрдмрд▓рдордзреНрдпреЗ рджреЛрди рд╕рдВрдмрдВрдзрд┐рдд рдлреАрд▓реНрдб рдЖрд╣реЗрдд рдЬрд┐рдереЗ рдкреНрд░рд╢рд╛рд╕рдХ рдкреЕрдиреЗрд▓рдордзреАрд▓ рдореВрд▓реНрдпреЗ рд▓рд┐рд╣рд┐рд▓реА рдЬрд╛рддреАрд▓.
рд╕рд╛рдордЧреНрд░реАрд╕рд╣ /usr/local/mgr5/etc/xml рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ ispmgr_mod_pay_data.xml рдирд╛рд╡рд╛рдЪреА рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рд╛.
<?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 рдЖрд╡рдбрд▓рд╛ рдЖрдгрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣рд┐рд▓реА.
<?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 ╤З╤В╨╛ ╨▒╤Л ╨┤╨░╨╜╨╜╤Л╨╡ ╤Г╨┤╨░╨╗╤П╨╗╨╕╤Б╤М ╤З╨╡╤А╨╡╨╖ ╨╜╨╡╨║╨╛╤В╨╛╤А╨╛╨╡ ╨▓╤А╨╡╨╝╤П, ╨╜╨╛ ╨╝╨╜╨╡ ╤Н╤В╨╛ ╨╜╨╡ ╨╜╤Г╨╢╨╜╨╛
}
рдЖрдореНрд╣реА рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдареЗрд╣реА рдЬрддрди рдХрд░рддреЛ рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ рддреЗ рдХреЙрд▓ рдХрд░рддреЛ рдЖрдгрд┐ рджрд┐рд╡рд╕рд╛рддреВрди рдПрдХрджрд╛ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд░реЙрди рдЯрд╛рд╕реНрдХ рдЬреЛрдбрддреЛ. рд╕рд░реНрд╡ рддрдпрд╛рд░ рдЖрд╣реЗ.
рдЖрддрд╛ рдорд╛рдЭреА рд╡рд┐рд╡реЗрдХрдмреБрджреНрдзреА рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ, рдЯреЙрдб рд╕рдорд╛рдзрд╛рдиреА рдЖрд╣реЗ рдЖрдгрд┐ рдорд▓рд╛ рдХреЛрдгрддрд╛рд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЦрд░реНрдЪ рдЖрд▓рд╛ рдирд╛рд╣реА.
рдЬреНрдпрд╛ рддрд╛рд░рдЦреЗрд▓рд╛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧрд╕рд╛рдареА рдкреИрд╕реЗ рджрд┐рд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ рддреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдордзреАрд▓ рдбреЗрдЯрд╛ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рд╕реНрдорд░рдгрдкрддреНрд░реЗ рдХреЛрдареЗ рдкрд╛рдард╡рд╛рдпрдЪреА рд╣реЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдИрдореЗрд▓ рднрд░рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ.
рдПрдЦрд╛рджреНрдпрд╛рд▓рд╛ рдорджрдд рдХреЗрд▓реА рддрд░ рдЖрдирдВрдж рд╣реЛрдИрд▓.
рд╕реНрддреНрд░реЛрдд: www.habr.com