BILLmanager қолданбай ISPManager5 lite жүйесінде пайдаланушыларды автоматты түрде ажырату

Берілгендер:

  1. Ispmanager lite 5 мәңгілік лицензиясы бар VPS сервері
  2. Әр серверге 10-20 пайдаланушы
  3. Хостингі таусылғандар үшін тұрақты еске салғыштары бар Google Calendar
  4. Басқа кез келген нәрсені төлеу ұят, әсіресе жазылыммен.

Мақсат - Google күнтізбесінен және клиентке хостинг үшін ақы төлеу керектігі туралы қолмен ескертулерден құтылу. «Ол көп жұмыс істесін, ол жақын арада төлейді», «оны өшіру ыңғайсыз» деген сөздерден босатып, мұны жансыз машинаға сеніп тапсырыңыз.

Әрине, мен алдымен Google-да іздедім, бірақ ешқандай шешім таппадым, бәрі BILLmanager-ке жазылу керек екеніне байланысты болды, бірақ мен үшін №4 тармақ өте маңызды және маңызды, мен алмаймын. одан құтылу. Ал шешім онша қиын емес болып шықты.

Сонымен не істейміз?

/usr/local/mgr5/etc/sql/ каталогында users.addon қалтасын жасаңыз, екі бос файл:

  1. төлеу_күні
  2. uwemail

Бұл дерекқорда жасау үшін панельге бұйрық береді
/usr/local/mgr5/etc/ispmgr.db
пайдаланушылар кестесінде әкімші панеліндегі мәндер жазылатын екі сәйкес өріс бар.

/usr/local/mgr5/etc/xml қалтасында мазмұны бар ispmgr_mod_pay_data.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

Біз:

BILLmanager қолданбай ISPManager5 lite жүйесінде пайдаланушыларды автоматты түрде ажырату

Өрістерде біз хостинг қай күнге дейін жұмыс істейтінін және пайдаланушының қандай электрондық поштасын, хостинг жақын арада аяқталатыны туралы еске салғыштарды қайда жіберу керектігін жазамыз.

Енді пайдаланушыларға хостингтің белгілі бір уақыт аралығында аяқталатынын еске салатын сценарий жасау керек. Әкімшіге хостинг аяқталатынын хабарлаңыз. Пайдаланушы мен әкімшіге пайдаланушының өшірілгені туралы хабарлаңыз.

Маған 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 тапсырмасын қосамыз. Бәрі дайын.

Енді ар-ұжданым таза, бақаның көңілі толады, қосымша шығын көрген жоқпын.

Хостинг қай күні төленгенін пайдаланушылардағы деректерді және пайдаланушыларға еске салғыштарды жіберуге болатын пайдаланушылардың электрондық поштасын толтыру ғана қалады.

Біреуге көмектессе қуанамын.

Ақпарат көзі: www.habr.com

пікір қалдыру