Tự động ngắt kết nối người dùng trong ISPManager5 lite mà không cần BILLmanager

Được:

  1. Máy chủ VPS có giấy phép vĩnh viễn ispmanager lite 5
  2. 10-20 người dùng trên mỗi máy chủ
  3. Lịch Google có nhắc nhở thường xuyên cho những ai đã hết hosting
  4. Thật xấu hổ khi phải trả tiền cho bất kỳ thứ gì khác, đặc biệt là đăng ký.

Mục tiêu là loại bỏ lịch Google và những lời nhắc thủ công cho khách hàng rằng họ cần trả tiền cho việc lưu trữ. Hãy giải phóng bản thân khỏi việc “để anh ấy làm việc thêm một chút, anh ấy sẽ sớm trả tiền”, “tắt nó đi thì bất tiện” và giao phó việc này cho một cỗ máy vô hồn.

Tất nhiên, lần đầu tiên tôi đã tìm kiếm và tìm kiếm trên Google, nhưng không tìm thấy bất kỳ giải pháp nào, tất cả đều tập trung vào việc bạn cần đăng ký BILLmanager, nhưng điểm số 4 rất quan trọng và nghiêm túc đối với tôi, tôi sẽ không nhận được bỏ nó đi. Và quyết định hóa ra không quá khó khăn.

Vậy ta phải làm sao?

Tạo một thư mục user.addon, trong thư mục /usr/local/mgr5/etc/sql/, hai tệp trống:

  1. Ngày trả tiền
  2. uwemail

Điều này sẽ ra lệnh cho bảng điều khiển tạo trong cơ sở dữ liệu
/usr/local/mgr5/etc/ispmgr.db
trong bảng người dùng có hai trường tương ứng nơi các giá trị từ bảng quản trị sẽ được ghi.

Tạo một tệp có tên ispmgr_mod_pay_data.xml trong thư mục /usr/local/mgr5/etc/xml với nội dung

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

Điều này cung cấp cho bảng điều khiển một quy tắc để các trường của chúng tôi được hiển thị trong biểu mẫu chỉnh sửa của người dùng.

Khởi động lại bảng điều khiển:

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

Chúng tôi nhận được:

Tự động ngắt kết nối người dùng trong ISPManager5 lite mà không cần BILLmanager

Trong các trường, chúng tôi viết cho đến ngày nào dịch vụ lưu trữ sẽ hoạt động và email của người dùng là gì, nơi gửi lời nhắc rằng dịch vụ lưu trữ sẽ sớm kết thúc.

Bây giờ bạn cần tạo một tập lệnh sẽ nhắc nhở người dùng rằng việc lưu trữ sẽ kết thúc sau một khoảng thời gian. Thông báo cho quản trị viên rằng việc lưu trữ sắp kết thúc. Thông báo cho người dùng và quản trị viên rằng người dùng đã bị vô hiệu hóa.

Tôi thích php trên đó và đã viết một đoạn 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 что бы данные удалялись через некоторое время, но мне это не нужно
}

Chúng tôi lưu tập lệnh này ở bất cứ đâu và gọi nó là bất cứ điều gì chúng tôi muốn, đồng thời thêm một tác vụ cron để gọi nó mỗi ngày một lần. Tất cả đã sẵn sàng.

Bây giờ lương tâm tôi trong sáng, con cóc hài lòng, tôi không phải chịu thêm bất cứ chi phí nào nữa.

Tất cả những gì còn lại là điền dữ liệu về người dùng vào ngày thanh toán dịch vụ lưu trữ và email của người dùng để gửi lời nhắc cho người dùng.

Vui mừng nếu nó giúp được ai đó.

Nguồn: www.habr.com

Thêm một lời nhận xét