การตัดการเชื่อมต่อผู้ใช้ใน ISPManager5 lite โดยอัตโนมัติโดยไม่มี BILLmanager

ได้รับ:

  1. เซิร์ฟเวอร์ VPS พร้อมใบอนุญาตถาวร ispmanager lite 5
  2. ผู้ใช้ 10-20 คนต่อเซิร์ฟเวอร์
  3. Google Calendar พร้อมการแจ้งเตือนเป็นประจำสำหรับผู้ที่พื้นที่โฮสติ้งหมด
  4. เป็นเรื่องน่าเสียดายที่ต้องจ่ายเงินอย่างอื่น โดยเฉพาะอย่างยิ่งเมื่อสมัครสมาชิก

เป้าหมายคือการกำจัด Google ปฏิทินและการแจ้งเตือนแบบแมนนวลให้กับลูกค้าว่าเขาต้องจ่ายสำหรับการโฮสต์ ปลดปล่อยตัวเองจาก "ปล่อยให้เขาทำงานอีกหน่อยเขาจะจ่ายเร็ว ๆ นี้" "มันไม่สะดวกที่จะปิดมัน" และมอบสิ่งนี้ให้กับเครื่องจักรที่ไร้วิญญาณ

แน่นอนฉันค้นหาใน Google ก่อนและค้นหา แต่ไม่พบวิธีแก้ไขใด ๆ ทั้งหมดนี้ขึ้นอยู่กับความจริงที่ว่าคุณต้องสมัครรับข้อมูล BILLmanager แต่จุดที่ 4 สำคัญมากและจริงจังสำหรับฉัน ฉันจะไม่เข้าใจ กำจัดมัน. และการตัดสินใจก็ไม่ใช่เรื่องยากนัก

ดังนั้นสิ่งที่เราจะทำ?

สร้างโฟลเดอร์ users.addon ในไดเร็กทอรี /usr/local/mgr5/etc/sql/ มีไฟล์ว่างสองไฟล์:

  1. pay_date
  2. ส่งอีเมลถึงเรา

ซึ่งจะสั่งให้พาเนลสร้างในฐานข้อมูล
/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 เพื่อเรียกมันวันละครั้ง ทุกอย่างพร้อมแล้ว

ตอนนี้มโนธรรมของฉันชัดเจน คางคกก็พอใจ และฉันไม่มีค่าใช้จ่ายเพิ่มเติมใดๆ

สิ่งที่เหลืออยู่คือการกรอกข้อมูลของผู้ใช้ในวันที่ชำระเงินโฮสติ้งและอีเมลของผู้ใช้ที่จะส่งการแจ้งเตือนไปยังผู้ใช้

ดีใจถ้ามันช่วยใครสักคน

ที่มา: will.com

เพิ่มความคิดเห็น