๊ฐ์ํ ๋ :
- ์๊ตฌ ๋ผ์ด์ผ์ค๊ฐ ์๋ VPS ์๋ฒ ispmanager lite 5
- ์๋ฒ๋น ์ฌ์ฉ์ 10~20๋ช
- ํธ์คํ ์ด ๋ถ์กฑํ ์ฌ๋๋ค์ ์ํด ์ ๊ธฐ์ ์ผ๋ก ์๋ฆผ์ ์ ๊ณตํ๋ Google ์บ๋ฆฐ๋
- ํนํ ๊ตฌ๋ ์ ํตํด ๋ค๋ฅธ ๋น์ฉ์ ์ง๋ถํ๋ ๊ฒ์ ๋ถ๋๋ฌ์ด ์ผ์ ๋๋ค.
๋ชฉํ๋ ํธ์คํ
๋น์ฉ์ ์ง๋ถํด์ผ ํ๋ค๋ Google ์บ๋ฆฐ๋์ ๊ณ ๊ฐ์๊ฒ ์๋์ผ๋ก ์๋ฆฌ๋ ์๋ฆผ์ ์ ๊ฑฐํ๋ ๊ฒ์
๋๋ค. "์กฐ๊ธ๋ง ๋ ์ผํ๊ฒ ๋๋๋ฉด ๊ณง ๋์ ๊ฐ์ ๊ฒ์ด๋ค", "๋๋ ๊ฒ ์ ์ง ๋ถํธํ๋ค"๋ ์๊ฐ์์ ๋ฒ์ด๋ ์ํผ ์๋ ๊ธฐ๊ณ์ ๋งก๊ธฐ์ธ์.
๋ฌผ๋ก ์ฒ์์ Google์ ๊ฒ์ํ๊ณ ๊ฒ์ํ์ง๋ง ํด๊ฒฐ์ฑ
์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ๊ฒฐ๊ตญ BILLmanager๋ฅผ ๊ตฌ๋
ํด์ผํ๋ค๋ ์ฌ์ค๋ก ์์ฝ๋์์ง๋ง 4 ๋ฒ ํญ๋ชฉ์ ๋์๊ฒ ๋งค์ฐ ์ค์ํ๊ณ ์ฌ๊ฐํ๋ฏ๋ก ์ดํดํ์ง ๋ชปํ ๊ฒ์
๋๋ค. ๊ทธ๊ฒ์ ์ ๊ฑฐํ์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ๊ฒฐ์ ์ ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์ ๊ฒ์ผ๋ก ํ๋ช
๋์์ต๋๋ค.
๊ทธ๋ผ ์ฐ๋ฆฌ๋ ๋ฌด์์ ํฉ๋๊น?
/usr/local/mgr5/etc/sql/ ๋๋ ํฐ๋ฆฌ์ ๋ ๊ฐ์ ๋น ํ์ผ์ธ users.addon ํด๋๋ฅผ ๋ง๋ญ๋๋ค.
- ๊ธ์ฌ์ผ
- ์ด๋ฉ์ผ
์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฑํ๋๋ก ํจ๋์ ๋ช
๋ นํฉ๋๋ค.
/usr/local/mgr5/etc/ispmgr.db
์ฌ์ฉ์ ํ
์ด๋ธ์๋ ๊ด๋ฆฌ์ ํจ๋์ ๊ฐ์ด ๊ธฐ๋ก๋๋ ๋ ๊ฐ์ ํด๋น ํ๋๊ฐ ์์ต๋๋ค.
๋ด์ฉ์ด ํฌํจ๋ ispmgr_mod_pay_data.xml ํ์ผ์ /usr/local/mgr5/etc/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 ััะพ ะฑั ะดะฐะฝะฝัะต ัะดะฐะปัะปะธัั ัะตัะตะท ะฝะตะบะพัะพัะพะต ะฒัะตะผั, ะฝะพ ะผะฝะต ััะพ ะฝะต ะฝัะถะฝะพ
}
์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ด๋์๋ ์ ์ฅํ๊ณ ์ํ๋ ๋๋ก ํธ์ถํ๊ณ cron ์์ ์ ์ถ๊ฐํ์ฌ ํ๋ฃจ์ ํ ๋ฒ ํธ์ถํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ค๋น๋์์ต๋๋ค.
์ด์ ์์ฌ๋ ๊นจ๋ํด์ง๊ณ , ๋๊บผ๋น๋ ๋ง์กฑํ๊ณ , ์ถ๊ฐ ๋น์ฉ๋ ๋ค์ง ์์์ต๋๋ค.
๋จ์ ๊ฒ์ ํธ์คํ ๋น์ฉ์ ์ง๋ถํ ๋ ์ง์ ์ฌ์ฉ์ ๋ฐ์ดํฐ์ ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ ๋ณด๋ผ ์ฌ์ฉ์์ ์ด๋ฉ์ผ์ ์ ๋ ฅํ๋ ๊ฒ๋ฟ์ ๋๋ค.
๋๊ตฐ๊ฐ์๊ฒ ๋์์ด ๋๋ค๋ฉด ๋คํ์
๋๋ค.
์ถ์ฒ : habr.com