Déconnexion automatique des utilisateurs dans ISPManager5 lite sans BILLmanager

donné:

  1. Serveur VPS avec licence perpétuelle ispmanager lite 5
  2. 10 à 20 utilisateurs par serveur
  3. Google Agenda avec des rappels réguliers pour ceux qui n'ont plus d'hébergement
  4. C'est dommage de payer autre chose, surtout avec un abonnement.

L'objectif est de se débarrasser du calendrier Google et des rappels manuels au client qu'il doit payer pour l'hébergement. Libérez-vous du « laissez-le travailler un peu plus, il paiera bientôt », « c'est en quelque sorte gênant de l'éteindre », et confiez cela à une machine sans âme.

Bien sûr, j'ai d'abord cherché et cherché sur Google, mais je n'ai trouvé aucune solution, tout se résumait au fait qu'il fallait s'abonner à BILLmanager, mais le point n°4 est très important et sérieux pour moi, je n'obtiendrai pas débarrasser. Et la décision s'est avérée pas si difficile.

Alors que faisons-nous?

Créez un dossier users.addon, dans le répertoire /usr/local/mgr5/etc/sql/, deux fichiers vides :

  1. date_de-payement
  2. uwemail

Cela commandera au panneau de créer dans la base de données
/usr/local/mgr5/etc/ispmgr.db
dans le tableau des utilisateurs, il y a deux champs correspondants où seront écrites les valeurs du panneau d'administration.

Créez un fichier appelé ispmgr_mod_pay_data.xml dans le dossier /usr/local/mgr5/etc/xml avec le contenu

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

Cela donne au panneau une règle pour que nos champs soient affichés dans le formulaire d'édition de l'utilisateur.

Redémarrez le panneau :

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

Obtenez:

Déconnexion automatique des utilisateurs dans ISPManager5 lite sans BILLmanager

Dans les champs, nous écrivons jusqu'à quel jour l'hébergement doit fonctionner, et quel email de l'utilisateur, où envoyer des rappels que l'hébergement prendra bientôt fin.

Nous devons maintenant créer un script qui rappellera aux utilisateurs que l'hébergement se termine à certains intervalles. Informez l'administrateur que l'hébergement prend fin. Informez l'utilisateur et l'administrateur que l'utilisateur est désactivé.

J'aime php dessus et j'ai écrit un 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 что бы данные удалялись через некоторое время, но мне это не нужно
}

Nous enregistrons ce script n'importe où et l'appelons comme nous voulons, et ajoutons une tâche périodique pour l'appeler une fois par jour. Tout est prêt.

Maintenant, j'ai la conscience tranquille, le crapaud est satisfait et je n'ai engagé aucun frais supplémentaire.

Il ne reste plus qu'à renseigner les données des utilisateurs à quelle date l'hébergement a été payé, et l'email des utilisateurs où envoyer des rappels aux utilisateurs.

Content si ça aide quelqu'un.

Source: habr.com

Ajouter un commentaire