Αυτόματη αποσύνδεση χρηστών στο ISPmanager5 lite χωρίς BILLmanager

Δεδομένος:

  1. Διακομιστής VPS με αέναη άδεια ispmanager lite 5
  2. 10-20 χρήστες ανά διακομιστή
  3. Ημερολόγιο Google με τακτικές υπενθυμίσεις για όσους έχουν ξεμείνει από φιλοξενία
  4. Είναι κρίμα να πληρώνεις για οτιδήποτε άλλο, ειδικά με συνδρομή.

Ο στόχος είναι να απαλλαγείτε από το ημερολόγιο Google και τις μη αυτόματες υπενθυμίσεις στον πελάτη ότι πρέπει να πληρώσει για τη φιλοξενία. Απελευθερωθείτε από το «άσε τον να δουλέψει λίγο παραπάνω, θα πληρώσει σύντομα», «είναι κάπως άβολο να το απενεργοποιήσεις» και εμπιστεύσου το σε μια άψυχη μηχανή.

Φυσικά, πρώτα έψαξα στο Google και έψαξα, αλλά δεν βρήκα λύσεις, όλα συνέβησαν στο γεγονός ότι πρέπει να εγγραφείτε στο BILLmanager, αλλά το σημείο Νο. 4 είναι πολύ σημαντικό και σοβαρό για μένα, δεν θα πάρω παράτα το. Και η απόφαση αποδείχθηκε ότι δεν ήταν τόσο δύσκολη.

Οπότε τι κάνουμε;

Δημιουργήστε έναν φάκελο users.addon, στον κατάλογο /usr/local/mgr5/etc/sql/, δύο κενά αρχεία:

  1. ημερομηνία πληρωμής
  2. uwemail

Αυτό θα δώσει εντολή στον πίνακα να δημιουργήσει στη βάση δεδομένων
/usr/local/mgr5/etc/ispmgr.db
στον πίνακα χρηστών υπάρχουν δύο αντίστοιχα πεδία όπου θα γραφτούν οι τιμές από τον πίνακα διαχείρισης.

Δημιουργήστε ένα αρχείο με το όνομα ispmgr_mod_pay_data.xml στον φάκελο /usr/local/mgr5/etc/xml με τα περιεχόμενα

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

Αυτό δίνει στον πίνακα έναν κανόνα έτσι ώστε τα πεδία μας να εμφανίζονται στη φόρμα επεξεργασίας του χρήστη.

Επανεκκινήστε τον πίνακα:

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

Παίρνουμε:

Αυτόματη αποσύνδεση χρηστών στο ISPmanager5 lite χωρίς BILLmanager

Στα πεδία γράφουμε μέχρι ποια μέρα θα πρέπει να λειτουργεί η φιλοξενία, και τι email του χρήστη, πού να στείλουμε υπενθυμίσεις ότι η φιλοξενία θα τελειώσει σύντομα.

Τώρα πρέπει να δημιουργήσουμε ένα σενάριο που θα υπενθυμίζει στους χρήστες ότι η φιλοξενία τελειώνει σε ορισμένα διαστήματα. Ειδοποιήστε τον διαχειριστή ότι η φιλοξενία τερματίζεται. Ειδοποιήστε τον χρήστη και τον διαχειριστή ότι ο χρήστης είναι απενεργοποιημένος.

Μου αρέσει η php σε αυτό και έγραψα ένα σενάριο.

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

Αποθηκεύουμε αυτό το σενάριο οπουδήποτε και το ονομάζουμε όπως θέλουμε και προσθέτουμε μια εργασία cron για να την καλούμε μία φορά την ημέρα. Όλα είναι έτοιμα.

Τώρα η συνείδησή μου είναι καθαρή, ο φρύνος είναι ικανοποιημένος και δεν έχω επιβαρυνθεί με κανένα επιπλέον κόστος.

Το μόνο που μένει είναι να συμπληρώσετε τα δεδομένα των χρηστών κατά την ημερομηνία πληρωμής της φιλοξενίας και το email των χρηστών πού θα στείλουν υπενθυμίσεις στους χρήστες.

Χαίρομαι αν βοηθάει κάποιον.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο