Déconnexion automatique des utilisateurs dans ISPManager5 lite sans BILLmanager

Donné:



  1. Serveur VPS avec une licence perpétuelle ispmanager lite 5
  2. 10-20 utilisateurs sur le serveur
  3. Google Agenda avec des rappels réguliers en cas de manque d'hébergement
  4. Le crapaud qui s'étouffe paie autre chose, surtout sur 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. Pour se débarrasser de «laissez-le travailler un peu plus, il va bientôt payer» «car il n'est pas commode de l'éteindre», et confiez-le à une machine sans âme.



Bien sûr, au début je l'ai cherché, mais je n'ai pas trouvé de solutions, tout se résumait au fait que vous deviez prendre un abonnement BILLmanager, mais j'ai un point très important et sérieux # 4, je ne m'en débarrasserai pas. Et la décision s'est avérée pas si difficile.



Alors que faisons-nous.



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



  1. pay_date
  2. uwemail


Cela donnera à la commande de panneau de créer dans la base de données

/usr/local/mgr5/etc/ispmgr.db

dans la table des utilisateurs deux champs correspondants où les valeurs du panneau d'administration seront écrites.



Créez un fichier 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 la règle du panneau que nos champs sont affichés dans le formulaire d'édition de l'utilisateur.



Rechargez le panneau:



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


Nous recevons:



image



Dans les champs, nous écrivons jusqu'à quel jour l'hébergement doit fonctionner, et quel e-mail de l'utilisateur, où envoyer des rappels que l'hébergement se terminera bientôt.



Vous devez maintenant créer un script qui rappellera aux utilisateurs que l'hébergement se termine avec une certaine fréquence. Informez l'administrateur que l'hébergement est sur le point de se terminer. Avertissez l'utilisateur et l'administrateur que l'utilisateur est désactivé.



Je suis proche de php et j'ai écrit un script.



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


Nous sauvegardons ce script n'importe où et l'appelons comme vous voulez, ajoutons une tâche au cron pour l'appeler une fois par jour. Tout est prêt.



Maintenant, la conscience est claire, le crapaud est satisfait, il n'a pas engagé de dépenses supplémentaires.



Il reste à renseigner les données des utilisateurs à quelle date l'hébergement a été payé, et le courrier électronique des utilisateurs où envoyer des rappels aux utilisateurs.



Heureux si ça aide quelqu'un.



All Articles