Automatsko isključivanje korisnika u ISPManager5 lite bez BILLmanagera

S obzirom:

  1. VPS server sa trajnom licencom ispmanager lite 5
  2. 10-20 korisnika po serveru
  3. Google kalendar sa redovnim podsjetnicima za one kojima je ponestalo hostinga
  4. Sramota je platiti bilo šta drugo, pogotovo uz pretplatu.

Cilj je riješiti se Google kalendara i ručnih podsjetnika klijentu da treba platiti hosting. Oslobodite se „pustite ga da radi još malo, uskoro će platiti“, „nekako je nezgodno isključiti ga“, i povjerite ovo mašini bez duše.

Naravno, prvo sam guglao i tražio, ali nisam našao rješenja, sve se svelo na to da se morate pretplatiti na BILLmanager, ali tačka broj 4 mi je jako bitna i ozbiljna, neću shvatiti osloboditi se toga. A odluka se pokazala i nije tako teška.

Pa šta da radimo?

Kreirajte folder users.addon, u direktoriju /usr/local/mgr5/etc/sql/, dvije prazne datoteke:

  1. pay_date
  2. uwemail

Ovo će komandovati panelu za kreiranje u bazi podataka
/usr/local/mgr5/etc/ispmgr.db
u tabeli korisnika postoje dva odgovarajuća polja u koja će biti upisane vrednosti ​​sa admin panela.

Kreirajte datoteku pod nazivom ispmgr_mod_pay_data.xml u folderu /usr/local/mgr5/etc/xml sa sadržajem

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

Ovo daje panelu pravilo tako da se naša polja prikazuju u korisničkom obrascu za uređivanje.

Ponovo pokrenite panel:

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

Dobijamo:

Automatsko isključivanje korisnika u ISPManager5 lite bez BILLmanagera

U poljima upisujemo do kog dana hosting treba da radi, i koji email korisnika, kuda poslati podsjetnike da će hosting uskoro prestati.

Sada moramo kreirati skriptu koja će podsjetiti korisnike da se hosting završava u određenim intervalima. Obavijestite administratora da se hosting završava. Obavijestite korisnika i administratora da je korisnik onemogućen.

Sviđa mi se php na njemu i napisao sam skriptu.

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

Ovu skriptu spremamo bilo gdje i zovemo je kako god želimo i dodajemo cron zadatak da je pozivamo jednom dnevno. Sve je spremno.

Sada mi je savjest čista, žaba je zadovoljna, a nisam imao nikakve dodatne troškove.

Ostaje samo da se popune podaci o korisnicima na koji datum je hosting plaćen, te email korisnika na koji se šalju podsjetnici korisnicima.

Drago mi je ako nekome pomogne.

izvor: www.habr.com

Dodajte komentar