Automatische ontkoppeling van gebruikers in ISPManager5 lite zonder BILLmanager

gegeven:

  1. VPS Server met eeuwigdurende licentie ispmanager lite 5
  2. 10-20 gebruikers per server
  3. Google Agenda met regelmatige herinneringen voor degenen die geen hosting meer hebben
  4. Het is zonde om voor iets anders te betalen, vooral met een abonnement.

Het doel is om af te komen van de Google-agenda en handmatige herinneringen aan de klant dat hij moet betalen voor hosting. Bevrijd jezelf van ‘laat hem wat meer werken, hij betaalt snel’, ‘het is op de een of andere manier lastig om het uit te zetten’, en vertrouw dit toe aan een zielloze machine.

Natuurlijk heb ik eerst gegoogled en gezocht, maar ik heb geen oplossingen gevonden, het kwam allemaal neer op het feit dat je je moet abonneren op BILLmanager, maar punt nr. 4 is erg belangrijk en serieus voor mij, ik zal het niet begrijpen ervan af. En de beslissing bleek niet zo moeilijk te zijn.

Dus wat doen we?

Maak een map users.addon, in de map /usr/local/mgr5/etc/sql/, twee lege bestanden:

  1. betalingsdatum
  2. uwmail

Hierdoor krijgt het paneel de opdracht om een ​​bestand in de database aan te maken
/usr/local/mgr5/etc/ispmgr.db
in de gebruikerstabel zijn er twee overeenkomstige velden waarin de waarden uit het beheerderspaneel worden geschreven.

Maak een bestand met de naam ispmgr_mod_pay_data.xml in de map /usr/local/mgr5/etc/xml met de inhoud

<?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 geeft het paneel een regel zodat onze velden worden weergegeven in het bewerkingsformulier van de gebruiker.

Start het paneel opnieuw op:

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

We krijgen:

Automatische ontkoppeling van gebruikers in ISPManager5 lite zonder BILLmanager

In de velden schrijven we tot welke dag de hosting zou moeten werken, en welk e-mailadres van de gebruiker, waar we herinneringen moeten sturen dat de hosting binnenkort eindigt.

Nu moeten we een script maken dat gebruikers eraan herinnert dat de hosting met bepaalde tussenpozen eindigt. Informeer de beheerder dat de hosting eindigt. Informeer de gebruiker en beheerder dat de gebruiker is uitgeschakeld.

Ik hou van php erop en schreef een script.

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

We slaan dit script overal op en noemen het hoe we maar willen, en voegen een cron-taak toe om het één keer per dag aan te roepen. Alles is klaar.

Nu is mijn geweten zuiver, is de pad tevreden en heb ik geen extra kosten gemaakt.

Het enige dat overblijft is het invullen van de gegevens van de gebruikers op welke datum de hosting is betaald, en de e-mail van de gebruikers waar ze herinneringen naar gebruikers moeten sturen.

Fijn als het iemand helpt.

Bron: www.habr.com

Voeg een reactie