Awtomatikong pagdiskonekta ng mga user sa ISPManager5 lite nang walang BILLmanager

Ibinigay:

  1. VPS Server na may walang hanggang lisensya ispmanager lite 5
  2. 10-20 user bawat server
  3. Google Calendar na may mga regular na paalala para sa mga naubusan ng hosting
  4. Nakakahiyang magbayad para sa anumang bagay, lalo na sa isang subscription.

Ang layunin ay alisin ang Google calendar at mga manu-manong paalala sa kliyente na kailangan niyang magbayad para sa pagho-host. Palayain ang iyong sarili mula sa "hayaan siyang magtrabaho ng kaunti pa, magbabayad siya sa lalong madaling panahon", "sa anumang paraan ay hindi maginhawa upang patayin ito", at ipagkatiwala ito sa isang walang kaluluwang makina.

Siyempre, nag-Google muna ako at naghanap, ngunit wala akong nakitang mga solusyon, ang lahat ay bumagsak sa katotohanan na kailangan mong mag-subscribe sa BILLmanager, ngunit ang punto No. 4 ay napakahalaga at seryoso para sa akin, hindi ko makuha tanggalin ito. At ang desisyon ay naging hindi napakahirap.

Kaya ano ang gagawin natin?

Gumawa ng folder users.addon, sa /usr/local/mgr5/etc/sql/ directory, dalawang walang laman na file:

  1. pay_date
  2. uwemail

Ito ay mag-uutos sa panel na lumikha sa database
/usr/local/mgr5/etc/ispmgr.db
sa talahanayan ng mga gumagamit mayroong dalawang kaukulang mga patlang kung saan isusulat ang mga halaga mula sa admin panel.

Gumawa ng file na tinatawag na ispmgr_mod_pay_data.xml sa /usr/local/mgr5/etc/xml na folder na may mga nilalaman

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

Nagbibigay ito sa panel ng panuntunan upang ang aming mga field ay maipakita sa form ng pag-edit ng user.

I-reboot ang panel:

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

Nakukuha namin ang:

Awtomatikong pagdiskonekta ng mga user sa ISPManager5 lite nang walang BILLmanager

Sa mga field na sinusulat namin hanggang anong araw dapat gumana ang hosting, at anong email ng user, kung saan magpapadala ng mga paalala na malapit nang matapos ang hosting.

Ngayon ay kailangan nating gumawa ng script na magpapaalala sa mga user na nagtatapos ang pagho-host sa ilang mga pagitan. Ipaalam sa admin na magtatapos na ang pagho-host. Ipaalam sa user at admin na hindi pinagana ang user.

Gusto ko ang php dito at nagsulat ng script.

<?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 Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠ΄Π°Π»ΡΠ»ΠΈΡΡŒ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, Π½ΠΎ ΠΌΠ½Π΅ это Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ
}

Ise-save namin ang script na ito kahit saan at tinatawag itong kahit anong gusto namin, at magdagdag ng cron task para tawagan ito isang beses sa isang araw. Handa na ang lahat.

Ngayon ang aking budhi ay malinis, ang palaka ay nasisiyahan, at wala akong natamo na anumang karagdagang gastos.

Ang natitira na lang ay punan ang data sa mga user kung kailan binayaran ang hosting, at ang email ng mga user kung saan magpapadala ng mga paalala sa mga user.

Masaya kung nakakatulong ito sa isang tao.

Pinagmulan: www.habr.com

Magdagdag ng komento