Disconnessione automatica degli utenti in ISPManager5 lite senza BILLmanager

data:

  1. Server VPS con licenza perpetua ispmanager lite 5
  2. 10-20 utenti per server
  3. Google Calendar con promemoria regolari per coloro che hanno esaurito l'hosting
  4. È un peccato pagare per qualsiasi altra cosa, soprattutto con un abbonamento.

L'obiettivo è eliminare il calendario di Google e i promemoria manuali al cliente che deve pagare per l'hosting. Liberati dal "lascialo lavorare un po' di più, pagherà presto", "è in qualche modo scomodo spegnerlo" e affidalo a una macchina senz'anima.

Certo, ho prima cercato e cercato su Google, ma non ho trovato alcuna soluzione, tutto si riduceva al fatto che devi iscriverti a BILLmanager, ma il punto n. 4 per me è molto importante e serio, non lo capirò liberarsene. E la decisione si è rivelata non così difficile.

Quindi cosa facciamo?

Crea una cartella users.addon, nella directory /usr/local/mgr5/etc/sql/, due file vuoti:

  1. data_paga
  2. uwemail

Questo ordinerà al pannello di creare nel database
/usr/local/mgr5/etc/ispmgr.db
nella tabella utenti ci sono due campi corrispondenti dove verranno scritti i valori dal pannello di amministrazione.

Crea un file chiamato ispmgr_mod_pay_data.xml nella cartella /usr/local/mgr5/etc/xml con il contenuto

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

Questo dà al pannello una regola in modo che i nostri campi vengano visualizzati nel modulo di modifica dell'utente.

Riavviare il pannello:

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

Get:

Disconnessione automatica degli utenti in ISPManager5 lite senza BILLmanager

Nei campi scriviamo fino a quale giorno dovrebbe funzionare l'hosting e quale email dell'utente, dove inviare i promemoria che l'hosting finirà presto.

Ora dobbiamo creare uno script che ricordi agli utenti che l'hosting termina ad alcuni intervalli. Avvisa l'amministratore che l'hosting sta per terminare. Avvisa l'utente e l'amministratore che l'utente è disabilitato.

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

Salviamo questo script ovunque e lo chiamiamo come vogliamo e aggiungiamo un'attività cron per chiamarlo una volta al giorno. Tutto è pronto.

Ora ho la coscienza a posto, il rospo è soddisfatto e non ho più dovuto sostenere costi aggiuntivi.

Non resta che inserire i dati degli utenti in quale data è stato pagato l'hosting e l'e-mail degli utenti a cui inviare i promemoria agli utenti.

Sono contento se aiuta qualcuno.

Fonte: habr.com

Aggiungi un commento