Dezactivarea automată a utilizatorilor în ISPManager5 lite fără BILLmanager

Datele problemei:

  1. Server VPS cu licență veșnică ispmanager lite 5
  2. 10-20 utilizatori pe server
  3. Google Calendar cu memento-uri regulate pentru cei care au expirat hosting
  4. Neplăcut să plătești pentru ceva în plus, mai ales pe bază de abonament

Obiectivul este să scapi de Google Calendar și de memento-urile manuale pentru clienți privind plata hostingului. Să te eliberezi de «lasă-l să mai funcționeze puțin, că va plăti curând» sau «e incomod să-l dezactivezi», lăsând o mașină fără sentimente să ia decizia.

Desigur, mai întâi am căutat pe Google, dar nu am găsit soluții — totul se referea la abonamentul BILLmanager, dar punctul nr. 4 este foarte important și serios pentru mine, de care nu mă voi despărți. Și, până la urmă, soluția s-a dovedit a fi nu atât de complicată.

Așadar, ce facem.

Creăm un folder users.addon în directorul /usr/local/mgr5/etc/sql/, două fișiere goale:

  1. pay_date
  2. uwemail

Aceasta va comanda panoului să creeze în baza de date
/usr/local/mgr5/etc/ispmgr.db
în tabela users două câmpuri corespunzătoare unde vor fi scrise valorile din panoul de administrare.

Creăm fișierul ispmgr_mod_pay_data.xml în folderul /usr/local/mgr5/etc/xml cu conținutul

<?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">Plătit până la</msg>
			<msg name="uwemail" sqlname="uwemail">Email utilizator</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>

Aceasta dă un regulativ panoului pentru a afișa câmpurile noastre în formularul de editare a utilizatorului.

Reîncărcăm panoul:

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

Obținem:

Dezactivarea automată a utilizatorilor în ISPManager5 lite fără BILLmanager

În câmpuri scriem până când trebuie să funcționeze hostingul și care este emailul utilizatorului, unde să trimitem memento-uri despre expirarea hostingului.

Acum trebuie să creăm un script care să reamintească utilizatorilor că hostingul expiră la intervale regulate. Să notifice adminul că hostingul se apropie de expirare. Să notifice utilizatorul și adminul că utilizatorul a fost dezactivat.

Îmi place PHP, așa că am scris scriptul.

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 expira găzduirea în '.$days_left.' zile', "Text pentru utilizator despre cât de multe zile au rămas");
			}
		}
		if( $days_left == 3 ) {
			mail($adminemail, 'ISPMANAGER USER '.$user['name'], $user['name'] . " Găzduirea expiră în ".$days_left." zile");
		}
		if($days_left <= 0){
			mail($adminemail, 'ISPMANAGER USER '.$user['name'].' DEZACTIVAT', $user['name'].' A fost dezactivat');
			exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
			if( $user['uwemail'] != "" ) {
				mail($user['uwemail'], 'ISPMANAGER găzduire dezactivată', 'Text pentru utilizator că găzduirea a expirat'); 
			}
		}
		// opțional se poate scrie un mic IF pentru a șterge datele după un timp, însă nu am nevoie de asta
}

Acest script se salvează oriunde și se numește cum doriți, se adaugă în cron o sarcină pentru a-l apela o dată pe zi. Totul este gata.

Acum conștiința este curată, nu mai există griji, nu a fost suportat cost suplimentar.

Rămâne să completăm datele utilizatorilor referitoare la data la care a fost plătită găzduirea și email-urile utilizatorilor pentru unde să trimitem reamintirile.

Sunt bucuros dacă îi ajută pe alții.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster