BILLmanagerを使用しないISPManager5liteのユーザーの自動切断

与えられた:



  1. 永久ライセンスを持つVPSサーバーispmanagerlite 5
  2. サーバー上の10〜20人のユーザー
  3. ホスティングを使い果たした定期的なリマインダー付きのGoogleカレンダー
  4. 窒息するヒキガエルは、特にサブスクリプションで、他の何かのために支払います


目標は、クライアントがホスティングに支払う必要があるというGoogleカレンダーと手動のリマインダーを取り除くことです。「もう少し働かせれば、すぐにお金を払う」「電源を切るのは不便なので」を取り除き、魂のない機械に任せます。



もちろん、最初は検索しましたが、解決策は見つかりませんでした。すべて、BILLmanagerサブスクリプションを取得する必要があるという事実に帰着しましたが、アイテム番号4は非常に重要で深刻であり、削除しません。そして、決定はそれほど難しくないことが判明しました。



どうしようか。



/ usr / local / mgr5 / etc / sql /ディレクトリにusers.addonフォルダーを作成し、2つの空のファイルを作成します。



  1. pay_date
  2. uwemail


これ により、adminパネルからの値が書き込まれるusersテーブルの

/usr/local/mgr5/etc/ispmgr.dbデータベース

に2つの対応するフィールドを作成するためのpanelコマンドが提供されます。



/ 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にタスクを追加して1日1回呼び出します。すべての準備が整いました。



これで良識が明確になり、ヒキガエルは満足し、追加の費用は発生していません。



ホスティングが支払われた日付までにユーザーのデータを入力し、ユーザーにリマインダーを送信する場所をユーザーに電子メールで送信する必要があります。



それが誰かを助けるならうれしい。



All Articles