[Серверное администрирование, Хостинг] Автоматичное отключение пользователей в ISPManager5 lite без BILLmanager
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Дано:
- VPS Сервер с вечной лицензией ispmanager lite 5
- 10-20 пользователей на сервере
- Google Calendar с регулярными напоминаниями у кого закончился хостинг
- Душащая жаба платить за что либо еще, тем более на подписке
Цель, избавиться от google календаря и ручных напоминаниях клиенту о том что нужно оплатить хостинг. Избавить себя от «пусть еще немного поработает он скоро оплатит» «как то не удобно отключать», и поручить это решать бездушной машине.
Конечно же сначала погуглил поискал, но не нашел решений все сводилось к тому что нужно взять подписку BILLmanager, но пункт №4 у меня очень важный и серьезный, от него избавляться не буду. Да и решение оказалось не таким уж и сложным.
Итак, что делаем.
Cоздаём папку users.addon, в директории /usr/local/mgr5/etc/sql/, два пустых файла:
- pay_date
- uwemail
Это даст команду панели создать в базе
/usr/local/mgr5/etc/ispmgr.db
в таблице users два соответствующих поля куда будут писаться значения с админ панели.
Создаем файл файл 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
Получаем:
В поля пишем до какого дня должен хостинг работать, и какой email пользователя, куда слать напоминания о том что скоро закончиться хостинг.
Теперь нужно создать скрипт который будет напоминать пользователям о том что хостинг заканчивается с некой периодичностью. Уведомлять админа о том что хостинг заканчивается. Уведомлять пользователя и админа о том что пользователь отключен.
Мне близок php на нем и написал скрипт.
<?php
$adminemail = "admin@gmail.com"; // 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 пользователей куда слать напоминания пользователям.
Рад если кому то поможет.
===========
Источник:
habr.com
===========
Похожие новости:
- [Информационная безопасность, Серверное администрирование, DevOps, Kubernetes] Изучаем (отсутствующую) безопасность типичных установок Docker и Kubernetes (перевод)
- [Системное администрирование, Серверное администрирование, DevOps, Kubernetes] New Relic меняет бизнесь модель — открывает код агентов и инструментария (перевод)
- [Программирование, Серверное администрирование] Запуск Camunda BPM в Kubernetes (перевод)
- [Системное администрирование, Серверное администрирование, Администрирование баз данных] Зачем нужно держать клетки в зоопарке закрытыми (перевод)
- [Системное администрирование, Серверное администрирование, DevOps, Kubernetes] Требования к разработке приложения в Kubernetes
- [Системное администрирование, IT-инфраструктура, Серверное администрирование, DevOps] С чего начать DevOps?
- [Виртуализация, Облачные вычисления, Серверное администрирование] Очередной взгляд на облака. Что такое частное облако?
- [Хостинг, Системное администрирование, Развитие стартапа, Интервью, IT-компании] Интервью из мира хостинга: Антон Сверщевский из VDSina
- [DevOps, Серверное администрирование, Системное администрирование] Как мы в Dropbox перешли с Nginx на Envoy (перевод)
- [Серверное администрирование, Системное администрирование] SRE: Анализ производительности. Способ настройки с использованием простого вебсервера на Go (перевод)
Теги для поиска: #_servernoe_administrirovanie (Серверное администрирование), #_hosting (Хостинг), #_ispmanager_lite, #_without_billmanager, #_disable_user_without_billmanager, #_servernoe_administrirovanie (
Серверное администрирование
), #_hosting (
Хостинг
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:22
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Дано:
Цель, избавиться от google календаря и ручных напоминаниях клиенту о том что нужно оплатить хостинг. Избавить себя от «пусть еще немного поработает он скоро оплатит» «как то не удобно отключать», и поручить это решать бездушной машине. Конечно же сначала погуглил поискал, но не нашел решений все сводилось к тому что нужно взять подписку BILLmanager, но пункт №4 у меня очень важный и серьезный, от него избавляться не буду. Да и решение оказалось не таким уж и сложным. Итак, что делаем. Cоздаём папку users.addon, в директории /usr/local/mgr5/etc/sql/, два пустых файла:
Это даст команду панели создать в базе /usr/local/mgr5/etc/ispmgr.db в таблице users два соответствующих поля куда будут писаться значения с админ панели. Создаем файл файл 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
Получаем: В поля пишем до какого дня должен хостинг работать, и какой email пользователя, куда слать напоминания о том что скоро закончиться хостинг. Теперь нужно создать скрипт который будет напоминать пользователям о том что хостинг заканчивается с некой периодичностью. Уведомлять админа о том что хостинг заканчивается. Уведомлять пользователя и админа о том что пользователь отключен. Мне близок php на нем и написал скрипт. <?php
$adminemail = "admin@gmail.com"; // 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 пользователей куда слать напоминания пользователям. Рад если кому то поможет. =========== Источник: habr.com =========== Похожие новости:
Серверное администрирование ), #_hosting ( Хостинг ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:22
Часовой пояс: UTC + 5