Desconexão automática de usuários no ISPManager5 lite sem BILLmanager

Dado:

  1. Servidor VPS com licença perpétua ispmanager lite 5
  2. 10 a 20 usuários por servidor
  3. Google Agenda com lembretes regulares para quem ficou sem hospedagem
  4. É uma pena pagar por qualquer outra coisa, principalmente com uma assinatura.

O objetivo é se livrar do calendário do Google e dos lembretes manuais ao cliente de que ele precisa pagar pela hospedagem. Liberte-se de “deixa ele trabalhar um pouco mais, ele vai pagar logo”, “é meio inconveniente desligar” e confie isso a uma máquina sem alma.

Claro, primeiro pesquisei e pesquisei, mas não encontrei nenhuma solução, tudo se resumia ao fato de você precisar se inscrever no BILLmanager, mas o ponto nº 4 é muito importante e sério para mim, não vou entender livrar-se disso. E a decisão acabou não sendo tão difícil.

Então, o que fazemos?

Crie uma pasta users.addon, no diretório /usr/local/mgr5/etc/sql/, dois arquivos vazios:

  1. data de pagamento
  2. vocêwemail

Isso comandará o painel para criar no banco de dados
/usr/local/mgr5/etc/ispmgr.db
na tabela de usuários existem dois campos correspondentes onde serão escritos os valores do painel de administração.

Crie um arquivo chamado ispmgr_mod_pay_data.xml na pasta /usr/local/mgr5/etc/xml com o conteúdo

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

Isso dá ao painel uma regra para que nossos campos sejam exibidos no formulário de edição do usuário.

Reinicie o painel:

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

Nós temos:

Desconexão automática de usuários no ISPManager5 lite sem BILLmanager

Nos campos escrevemos até que dia a hospedagem deverá funcionar, e qual e-mail do usuário, para onde enviar lembretes de que a hospedagem terminará em breve.

Agora precisamos criar um script que lembre aos usuários que a hospedagem termina em alguns intervalos. Notifique o administrador que a hospedagem está terminando. Notifique o usuário e o administrador de que o usuário está desabilitado.

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

Salvamos esse script em qualquer lugar e o chamamos como quisermos, e adicionamos uma tarefa cron para chamá-lo uma vez por dia. Tudo está pronto.

Agora minha consciência está tranquila, o sapo está satisfeito e não incorrei em nenhum custo adicional.

Resta preencher os dados dos usuários em que data a hospedagem foi paga, e o e-mail dos usuários para onde enviar lembretes aos usuários.

Fico feliz se isso ajuda alguém.

Fonte: habr.com

Adicionar um comentário