Automatické vypínanie používateľov v ISPManager5 lite bez BILLmanager

Dané:

  1. VPS server s doživotnou licenciou ispmanager lite 5
  2. 10-20 používateľov na serveri
  3. Google Kalendár s pravidelnými pripomienkami o tom, komu skončila platba hosting
  4. Hlasno ma ťahá platiť za niečo iné, obzvlášť na predplatnom

Cieľom je zbaviť sa Google Kalendára a ručných pripomienok klientom, že je potrebné zaplatiť hosting. Zbaviť sa myšlienky 'nech ešte trošku pracuje, on čoskoro zaplatí' alebo 'nejako nie je pohodlné odpojiť' a nechať to riešiť bezcitnej mašine.

Samozrejme, najprv som hľadal na Googli, ale nenašiel som žiadne riešenia, všetko sa sústreďovalo na potrebu predplaťiť BILLmanager, ale bod č. 4 je pre mňa veľmi dôležitý a vážny, od toho sa nezbavím. A riešenie sa ukázalo byť nie tak zložité.

Takže, čo robíme.

Vytvoríme priečinok users.addon v adresári /usr/local/mgr5/etc/sql/, dva prázdne súbory:

  1. pay_date
  2. uwemail

To dá príkaz paneli vytvoriť v databáze
/usr/local/mgr5/etc/ispmgr.db
v tabuľke users dve zodpovedajúce polia, do ktorých budú zapisované hodnoty z administrátorskej panely.

Vytvárame súbor ispmgr_mod_pay_data.xml v priečinku /usr/local/mgr5/etc/xml s obsahom

Zaplatené do
			Používateľský email
		
	
	
		
			Paid before
			User email

To dáva panelu pravidlo, aby naše polia boli zobrazené vo forme editácie používateľa.

Reštartujeme panel:

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

Získavame:

Automatické vypínanie používateľov v ISPManager5 lite bez BILLmanager

Do polí napíšeme, do akého dňa má hosting fungovať a aký email používateľa, na ktorý sa budú posielať pripomienky, že čoskoro skončí hosting.

Teraz musíme vytvoriť skript, ktorý bude pripomínať používateľom, že hosting končí s určitou periodicitou. Upozorňovať administrátora, že hosting končí. Upozorňovať používateľa a administrátora, že používateľ bol odpojený.

Php je mi blízky, a tak som napísal skript.

<?php
$adminemail = "admin@gmail.com"; // email administrátora
$day_send_message = [30,7,5,3,1]; // po koľkých dňoch a s akou frekvenciou sa bude používateľovi pripomínať, že hosting končí
$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 končí hosting za '.$days_left.' dní', "Text pre používateľa o tom, že zostáva toľko dní");
			}
		}
		if( $days_left == 3 ) {
			mail($adminemail, 'ISPMANAGER USER '.$user['name'], $user['name'] . " Hosting skončí za ".$days_left." dní");
		}
		if($days_left <= 0){
			mail($adminemail, 'ISPMANAGER USER '.$user['name'].' DEZAKTIVOVANÝ', $user['name'].' Bol deaktivovaný');
			exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
			if( $user['uwemail'] != "" ) {
				mail($user['uwemail'], 'ISPMANAGER hosting deaktivovaný', 'Text pre používateľa, že hosting skončil'); 
			}
		}
		// ak chcete, môžete napísať malý IF, aby sa údaje odstránili po určitom čase, ale ja to nepotrebujem
}

Tento skript si uložte kamkoľvek a nazvite ho ako chcete, pridajte ho do úlohy cron, aby sa spúšťal raz za deň. Všetko je pripravené.

Teraz je svedomie čisté, žaba spokojná, dodatočné náklady nie sú.

Zostáva vyplniť údaje používateľov, do kedy bol hosting zaplatený, a emaily používateľov, kam posielať pripomienky.

Som rád, ak niekomu pomôže.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster