BILLmanagersiz ISPManager5 lite-da foydalanuvchilarni avtomatik ravishda uzish

May:

  1. Doimiy litsenziyaga ega VPS server ispmanager lite 5
  2. Har bir serverga 10-20 foydalanuvchi
  3. Google Taqvimida pul tugab qolganlar uchun muntazam eslatmalar mavjud xosting
  4. Boshqa narsa uchun to'lash uyat, ayniqsa obuna bilan.

Maqsad - mijozga xosting uchun to'lashi kerak bo'lgan Google taqvimi va qo'lda eslatmalardan xalos bo'lish. "U bir oz ko'proq ishlasin, u tez orada to'laydi", "uni o'chirish qandaydir noqulay" dan ozod bo'ling va buni ruhsiz mashinaga ishonib topshiring.

Albatta, men avval Google'da qidirdim va qidirdim, lekin hech qanday yechim topa olmadim, barchasi BILLmanager-ga obuna bo'lishingiz kerakligi bilan bog'liq edi, lekin 4-band men uchun juda muhim va jiddiy, men olmayman undan qutulish. Va qaror unchalik qiyin emas edi.

Xo'sh, nima qilamiz?

/usr/local/mgr5/etc/sql/ katalogida users.addon papkasini yarating, ikkita bo'sh fayl:

  1. to'lov_sanasi
  2. uwemail

Bu ma'lumotlar bazasida yaratish uchun panelga buyruq beradi
/usr/local/mgr5/etc/ispmgr.db
foydalanuvchilar jadvalida administrator panelidagi qiymatlar yoziladigan ikkita mos maydon mavjud.

Tarkib bilan /usr/local/mgr5/etc/xml jildida ispmgr_mod_pay_data.xml nomli fayl yarating.

<?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>

Bu panelga qoida beradi, shunda bizning maydonlarimiz foydalanuvchi tahrirlash shaklida ko'rsatiladi.

Panelni qayta ishga tushiring:

/usr/local/mgr5/sbin/mgrctl -m ispmgr exit

Biz quyidagilarni olamiz:

BILLmanagersiz ISPManager5 lite-da foydalanuvchilarni avtomatik ravishda uzish

Maydonlarda biz hosting qaysi kungacha ishlashini va foydalanuvchining qaysi elektron pochta manzilini, hosting tez orada tugashi haqida eslatmalarni qaerga yuborishni yozamiz.

Endi biz foydalanuvchilarga xosting ma'lum vaqt oralig'ida tugashini eslatuvchi skript yaratishimiz kerak. Xosting tugashi haqida administratorga xabar bering. Foydalanuvchi va administratorga foydalanuvchi o'chirilganligi haqida xabar bering.

Menga php yoqadi va skript yozdim.

<?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 что бы данные удалялись через некоторое время, но мне это не нужно
}

Biz ushbu skriptni istalgan joyda saqlaymiz va uni xohlagancha chaqiramiz va kuniga bir marta chaqirish uchun cron vazifasini qo'shamiz. Hammasi tayyor.

Endi vijdonim toza, qurbaqa qanoatlantirdi, qo‘shimcha xarajat qilganim yo‘q.

Xosting qaysi sanada toʻlanganligi haqida foydalanuvchi maʼlumotlarini va foydalanuvchilarga eslatmalarni joʻnatish kerak boʻlgan foydalanuvchilarning elektron pochtasini toʻldirishgina qoladi.

Kimgadir yordam bersa xursand bo'laman.

Manba: www.habr.com

DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling 🔥 DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster