沒有 BILLmanager 的 ISPManager5 lite 中自動中斷使用者連線

鑑於:

  1. 具有永久許可證的 VPS 伺服器 ispmanager lite 5
  2. 每台伺服器 10-20 個用戶
  3. Google 日曆會定期提醒那些空間不足的用戶
  4. 支付其他任何費用都是一種恥辱,尤其是訂閱。

目標是擺脫Google日曆和手動提醒客戶需要支付託管費用。 把自己從「讓他多做一點,他很快就會付款」、「關掉有點不方便」中解脫出來,把它託付給一台沒有靈魂的機器。

當然,我首先谷歌搜索,但沒有找到任何解決方案,這一切都歸結為你需要訂閱BILLmanager,但第4點對我來說非常重要和嚴肅,我不會得到擺脫它。 事實證明,這個決定並不是那麼困難。

那我們該怎麼辦?

在/usr/local/mgr5/etc/sql/目錄下建立資料夾users.addon,兩個空檔:

  1. 發薪日期
  2. 信箱

這將命令面板在資料庫中創建
/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

我們得到:

沒有 BILLmanager 的 ISPManager5 lite 中自動中斷使用者連線

在欄位中,我們寫下託管應在哪一天開始工作,以及使用者的電子郵件地址,向何處發送託管即將結束的提醒。

現在我們需要建立一個腳本來提醒使用者託管會在某些時間間隔結束。 通知管理員託管即將結束。 通知使用者和管理員該使用者已停用。

我喜歡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

添加評論