Automatyske ûntsluting fan brûkers yn ISPManager5 lite sûnder BILLmanager

Jûn:

  1. VPS-tsjinner mei ivige lisinsje ispmanager lite 5
  2. 10-20 brûkers per tsjinner
  3. Google Kalinder mei regelmjittige herinneringen foar dyjingen dy't op binne hosting
  4. It is spitich om foar wat oars te beteljen, benammen mei in abonnemint.

It doel is om Google-kalinder en manuele herinneringen te ferwiderjen oan 'e klant dat hy moat betelje foar hosting. Befrij dysels fan "lit him wurkje in bytsje mear, hy sil betelje gau", "it is ien of oare manier ûngemaklik te skeakeljen it út", en fertrou dit oan in sielleaze masine.

Fansels haw ik earst Googlen en socht, mar gjin oplossings fûn, it kaam allegear del op it feit dat jo ynskriuwe moatte op BILLmanager, mar punt nr. 4 is foar my tige wichtich en serieus, dat krij ik net kwyt it. En it beslút die bliken net sa dreech te wêzen.

Dus wat dogge wy?

Meitsje in map users.addon, yn 'e map /usr/local/mgr5/etc/sql/, twa lege bestannen:

  1. pay_date
  2. uwemail

Dit sil it paniel befelje om te meitsjen yn 'e databank
/usr/local/mgr5/etc/ispmgr.db
yn 'e brûkerstabel binne d'r twa oerienkommende fjilden wêr't de wearden fan it adminpaniel sille wurde skreaun.

Meitsje in triem mei de namme ispmgr_mod_pay_data.xml yn 'e map /usr/local/mgr5/etc/xml mei de ynhâld

<?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>

Dit jout it paniel in regel sadat ús fjilden werjûn wurde yn it bewurkingsformulier fan de brûker.

Reboot it paniel:

/usr/local/mgr5/sbin/mgrctl -m ispmgr exit

Wy krije:

Automatyske ûntsluting fan brûkers yn ISPManager5 lite sûnder BILLmanager

Yn 'e fjilden skriuwe wy oant hokker dei de hosting wurkje moat, en hokker e-post fan' e brûker, wêr't jo herinneringen stjoere moatte dat de hosting gau einiget.

No moatte wy in skript meitsje dat brûkers sil herinnerje dat hosting op guon yntervallen einiget. Notify de admin dat hosting einiget. Notify de brûker en admin dat de brûker is útskeakele.

Ik hâld fan php derop en skreau in skript.

<?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 что бы данные удалялись через некоторое время, но мне это не нужно
}

Wy bewarje dit skript oeral en neame it wat wy wolle, en foegje in cron-taak ta om it ien kear deis te neamen. Alles is klear.

No is myn gewisse klear, de pod is tefreden, en ik ha gjin ekstra kosten makke.

Alles wat oerbliuwt is om de gegevens yn te foljen yn 'e brûkers op hokker datum de hosting waard betelle, en de e-post fan' e brûkers wêr't herinneringen oan brûkers te stjoeren.

Bliid as it immen helpt.

Boarne: www.habr.com