قطع الاتصال التلقائي للمستخدمين في ISPManager5 lite بدون BILLmanager

الممنوحة:

  1. خادم VPS مع ترخيص دائم ispmanager lite 5
  2. 10-20 مستخدمًا لكل خادم
  3. تقويم Google مع تذكيرات منتظمة لأولئك الذين نفدت استضافةهم
  4. من العار أن تدفع مقابل أي شيء آخر، خاصة مع الاشتراك.

الهدف هو التخلص من تقويم Google والتذكيرات اليدوية للعميل بأنه يحتاج إلى الدفع مقابل الاستضافة. حرر نفسك من "دعه يعمل أكثر قليلاً، وسوف يدفع قريباً"، "من غير المناسب إلى حد ما إيقاف تشغيله"، وعهد بهذا إلى آلة بلا روح.

بالطبع قمت بالبحث أولاً في Google ولكن لم أجد أي حلول، الأمر كله يتلخص في حقيقة أنك بحاجة إلى الاشتراك في BILLmanager، لكن النقطة رقم 4 مهمة وخطيرة جدًا بالنسبة لي، لن أحصل عليها تخلص منها. وتبين أن القرار ليس بهذه الصعوبة.

إذن ماذا نفعل؟

قم بإنشاء مجلد users.addon، في الدليل /usr/local/mgr5/etc/sql/، ملفين فارغين:

  1. تاريخ الدفع
  2. uwemail

سيأمر هذا اللوحة بالإنشاء في قاعدة البيانات
/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

نحصل على:

قطع الاتصال التلقائي للمستخدمين في ISPManager5 lite بدون BILLmanager

نكتب في الحقول حتى اليوم الذي يجب أن تعمل فيه الاستضافة، وما هو البريد الإلكتروني للمستخدم، وأين نرسل تذكيرات بأن الاستضافة ستنتهي قريبًا.

نحتاج الآن إلى إنشاء برنامج نصي يذكّر المستخدمين بأن الاستضافة تنتهي عند فترات معينة. قم بإعلام المسؤول بانتهاء الاستضافة. قم بإعلام المستخدم والمسؤول بأن المستخدم معطل.

أنا أحب 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 لاستدعائه مرة واحدة يوميًا. كل شيء جاهز.

الآن ضميري مرتاح، والضفدع راضٍ، ولم أتحمل أي تكاليف إضافية.

كل ما تبقى هو ملء البيانات الخاصة بالمستخدمين في التاريخ الذي تم فيه دفع ثمن الاستضافة، والبريد الإلكتروني للمستخدمين حيث يتم إرسال تذكيرات للمستخدمين.

سعيد إذا كان يساعد شخص ما.

المصدر: www.habr.com

إضافة تعليق