Automatikus felhasználói leállítás az ISPManager5 lite alatt BILLmanager nélkül

Adott:

  1. Örök licenszes VPS szerver ISPmanager lite 5-öt használva
  2. 10-20 felhasználó a szerveren
  3. Google Naptár rendszeres emlékeztetőkkel, hogy kinek járt le hosztolást
  4. Szorongok, hogy bármi másra is kellene fizetnem, különösen előfizetésre

A cél az, hogy megszabaduljak a Google Naptártól és a kézi emlékeztetésektől az ügyfeleknek, hogy időben fizessek a hosztolásért. El szeretném kerülni azt az érzést, hogy 'még kicsit dolgozzon, hamarosan fizet', és szeretném átadni ezt a feladatot egy gépnek.

Persze először keresgéltem, de nem találtam megoldásokat, minden a BILLmanager előfizetés megszerzésére korlátozódott, de a 4. pont számomra nagyon fontos, és nem fogom elhagyni. Ráadásul a megoldás nem is volt olyan bonyolult.

Tehát, mit csináljunk.

Hozzunk létre egy users.addon mappát a /usr/local/mgr5/etc/sql/ könyvtárban, két üres fájlal:

  1. pay_date
  2. uwemail

Ez parancsot ad a panelnek, hogy létrehozzon a bázisban
/usr/local/mgr5/etc/ispmgr.db
a users táblában két megfelelő mezőt, ahová az adminisztrációs panelről érkeznek az értékek.

Hozzuk létre az ispmgr_mod_pay_data.xml fájlt a /usr/local/mgr5/etc/xml könyvtárban a következő tartalommal:

Fizetve addig
			Felhasználói email
		
		
	
		
			Paid before
			User email

Ez szabályt ad a panelnek, hogy a mezőink megjelenjenek a felhasználó szerkesztési űrlapjában.

Indítsuk újra a panelt:

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

Kapjuk:

Automatikus felhasználói leállítás az ISPManager5 lite alatt BILLmanager nélkül

A mezőkbe írjuk be, meddig legyen aktív a hosztolás, és melyik felhasználói emailt használjuk az emlékeztetőkhöz arról, hogy hamarosan lejár a hosztolás.

Most szükség van egy szkriptre, amely emlékezteti a felhasználókat arra, hogy a hosztolás lejár egy bizonyos időintervallumban. Értesítse az adminisztrátort arról, hogy a hosztolás hamarosan lejár. Értesítse a felhasználót és az adminisztrátort arról, hogy a felhasználót lekapcsolták.

Közel áll hozzám a PHP, ezen írtam a szkriptet.

<?php
$adminemail = "admin@gmail.com"; // admin email
$day_send_message = [30,7,5,3,1]; // hány nap múlva és milyen gyakorisággal emlékezteti a felhasználót, hogy a hosztolás lejár
$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 a hosztolás lejár '.$days_left.' napon belül', "Szöveg a felhasználónak arról, hogy ennyi nap van hátra");
			}
		}
		if( $days_left == 3 ) {
			mail($adminemail, 'ISPMANAGER FELHASZNÁLÓ '.$user['name'], $user['name'] . " A hosztolás lejár ".$days_left." napon belül");
		}
		if($days_left <= 0){
			mail($adminemail, 'ISPMANAGER FELHASZNÁLÓ '.$user['name'].' LETILTÁS', $user['name'].' Le van tiltva');
			exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
			if( $user['uwemail'] != "" ) {
				mail($user['uwemail'], 'ISPMANAGER a hosztolás letiltva', 'Szöveg a felhasználónak arról, hogy a hosztolás lejárt'); 
			}
		}
		// ha akarod, írhatnál egy kis IF-et is, hogy az adatok egy idő után törlődjenek, de nekem ez nem szükséges
}

Ezt a szkriptet bárhová elmentheted, és bárhogy elnevezheted, hozzáadhatod a cron feladatot, hogy naponta egyszer futtassa. Minden készen áll.

Most már tiszta a lelkiismeret, a béka elégedett, további költségeket nem okozott.

Még ki kell tölteni az adatokat arról, hogy a felhasználóknál melyik dátumra van kifizetve a hosztolás, és a felhasználók email címét, ahová a figyelmeztetéseket küldjük.

Örülök, ha valakinek segít.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster