Automatische Trennung von Benutzern in ISPManager5 lite ohne BILLmanager

Mai:

  1. VPS-Server mit unbefristeter Lizenz ispmanager lite 5
  2. 10–20 Benutzer pro Server
  3. Google Kalender mit regelmäßigen Erinnerungen für diejenigen, denen das Hosting ausgegangen ist
  4. Es ist eine Schande, für etwas anderes zu bezahlen, insbesondere bei einem Abonnement.

Ziel ist es, den Google-Kalender und die manuellen Erinnerungen an den Kunden, dass er für das Hosting bezahlen muss, loszuwerden. Befreien Sie sich von „Lass ihn noch ein bisschen arbeiten, er wird bald zahlen“, „es ist irgendwie unpraktisch, es auszuschalten“ und vertrauen Sie dies einer seelenlosen Maschine an.

Natürlich habe ich zuerst gegoogelt und gesucht, aber keine Lösungen gefunden, es lief alles darauf hinaus, dass man den BILLmanager abonnieren muss, aber Punkt Nr. 4 ist für mich sehr wichtig und ernst, das verstehe ich nicht Loswerden. Und die Entscheidung war gar nicht so schwer.

Also, was machen wir?

Erstellen Sie einen Ordner „users.addon“ im Verzeichnis /usr/local/mgr5/etc/sql/ mit zwei leeren Dateien:

  1. Zahltag
  2. uwemail

Dadurch wird das Panel angewiesen, in der Datenbank zu erstellen
/usr/local/mgr5/etc/ispmgr.db
In der Benutzertabelle gibt es zwei entsprechende Felder, in die die Werte aus dem Admin-Panel geschrieben werden.

Erstellen Sie eine Datei mit dem Namen ispmgr_mod_pay_data.xml im Ordner /usr/local/mgr5/etc/xml mit dem Inhalt

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

Dadurch erhält das Panel eine Regel, sodass unsere Felder im Bearbeitungsformular des Benutzers angezeigt werden.

Starten Sie das Panel neu:

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

Wir bekommen:

Automatische Trennung von Benutzern in ISPManager5 lite ohne BILLmanager

In die Felder schreiben wir, bis zu welchem ​​Tag das Hosting funktionieren soll, welche E-Mail-Adresse der Benutzer hat und wohin er Erinnerungen senden soll, dass das Hosting bald endet.

Jetzt müssen wir ein Skript erstellen, das Benutzer daran erinnert, dass das Hosting in bestimmten Abständen endet. Benachrichtigen Sie den Administrator, dass das Hosting endet. Benachrichtigen Sie den Benutzer und den Administrator, dass der Benutzer deaktiviert ist.

Ich mag PHP darauf und habe ein Skript geschrieben.

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

Wir speichern dieses Skript irgendwo und nennen es, wie wir wollen, und fügen eine Cron-Task hinzu, um es einmal am Tag aufzurufen. Alles ist fertig.

Jetzt ist mein Gewissen beruhigt, die Kröte ist zufrieden und mir sind keine zusätzlichen Kosten entstanden.

Es müssen nur noch die Daten der Benutzer eingegeben werden, an welchem ​​Datum das Hosting bezahlt wurde, und die E-Mail-Adresse der Benutzer, an die Erinnerungen an Benutzer gesendet werden sollen.

Freut mich, wenn es jemandem hilft.

Source: habr.com

Kommentar hinzufügen