ያለ ቢልአስተዳዳሪ በISPManager5 lite ውስጥ የተጠቃሚዎችን በራስሰር ማቋረጥ

የተሰጠው፡-

  1. VPS አገልጋይ ከዘላለማዊ ፍቃድ ispmanager Lite 5
  2. በአንድ አገልጋይ ከ10-20 ተጠቃሚዎች
  3. ጉግል ካሌንደር ማስተናገጃ ላጡ ሰዎች ከመደበኛ አስታዋሾች ጋር
  4. ለሌላ ማንኛውም ነገር በተለይም በደንበኝነት ምዝገባ መክፈል ያሳፍራል።

ዓላማው ለደንበኛው ማስተናገጃ መክፈል እንዳለበት የጉግል ካላንደርን እና በእጅ ማሳሰቢያዎችን ማስወገድ ነው። "ትንሽ ተጨማሪ እንዲሰራ ይፍቀዱለት፣ በቅርቡ ይከፍላል"፣ "ማጥፋት እንደምንም የማይመች ነው" ከማለት ነጻ ያውጡ እና ይህንን ለነፍስ አልባ ማሽን አደራ ይስጡ።

እርግጥ ነው፣ መጀመሪያ ጎግል አድርጌ ፈለኩ፣ ነገር ግን ምንም አይነት መፍትሄ አላገኘሁም፣ ሁሉም ነገር ወደ BILLmanager መመዝገብ ስለሚያስፈልግዎ ነው፣ ግን ነጥብ ቁጥር 4 ለእኔ በጣም አስፈላጊ እና ከባድ ነው፣ አላገኝም። አስወግደው። እና ውሳኔው ያን ያህል ከባድ አልነበረም።

ታዲያ ምን እናድርግ?

የአቃፊ ተጠቃሚዎች.addon ይፍጠሩ፣ በ /usr/local/mgr5/etc/sql/ directory ውስጥ፣ ሁለት ባዶ ፋይሎች፡-

  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

የሚከተለውን ያገኛሉ:

ያለ ቢልአስተዳዳሪ በ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 что бы данные удалялись через некоторое время, но мне это не нужно
}

ይህንን ስክሪፕት በማንኛውም ቦታ እናስቀምጠው እና የፈለግነውን እንጠራዋለን እና በቀን አንድ ጊዜ ለመደወል የክሮን ተግባር እንጨምራለን ። ሁሉም ዝግጁ ነው።

አሁን ህሊናዬ ንፁህ ነው፣ እንቁራሪቱ ረክቷል፣ እና ምንም ተጨማሪ ወጪ አላወጣሁም።

የሚቀረው በተጠቃሚዎች ውስጥ ማስተናገጃው የተከፈለበት ቀን እና የተጠቃሚዎች አስታዋሾችን የሚልኩበት ኢሜይል ውስጥ ያለውን ውሂብ መሙላት ብቻ ነው።

አንድ ሰው ቢረዳ ደስ ይለኛል.

ምንጭ: hab.com

አስተያየት ያክሉ