在没有BILLmanager的情况下自动断开ISPManager5 lite中的用户

鉴于:



  1. 具有永久许可证的VPS Server ispmanager lite 5
  2. 服务器上有10-20个用户
  3. 具有定期提醒功能的Google日历(已用完主机)
  4. 令人窒息的蟾蜍需要支付其他任何费用,尤其是在订阅时


目标是摆脱Google日历和向客户手动提醒,他需要为托管付费。为了摆脱“让他工作多一点,他会很快付钱”的“因为关闭它并不方便”,并将其委托给一台没有灵魂的机器。



当然,起初我搜索了它,但是没有找到解决方案,这全都归结为您需要订阅BILLmanager的事实,但是我有一个非常重要和认真的观点,第4点,我不会摆脱它。事实证明,决定并不那么困难。



那么我们该怎么办。



在/ usr / local / mgr5 / etc / sql /目录中创建users.addon文件夹,两个空文件:



  1. pay_date
  2. 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 = "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       ,     
}


我们将该脚本保存在任何地方,然后随便调用它,向cron中添加一个任务,每天调用一次。全部都准备好了。



现在良心已经清楚了,蟾蜍满意了,他没有招致额外的花费。



仍然需要在托管日期付款之前在用户中填写数据,以及在哪里向用户发送提醒的用户电子邮件。



很高兴能帮助到某人。



All Articles