BILLmanager. Теперь при помощи shell-скриптов можно продавать что угодно

в 9:00, , рубрики: bash, billmanager, Блог компании ISPsystem, Программирование

BILLmanager. Теперь при помощи shell-скриптов можно продавать что угодно - 1

На сегодняшний день большинство провайдеров, помимо стандартных услуг хостинга, доменов и SSL, предоставляют и различные “нехостинговые” сервисы. Например, VPN или стриминг. Возникает вопрос: как организовать их подключение для клиента в BILLmanager? Можно давать доступ вручную, но что делать, если заявок на подключение прорва? Автоматизировать процесс, конечно! Недавно в BILLmanager появилось ещё одно решение для автоматизации продаж, и мы хотим об этом рассказать.

В статье речь пойдёт о том, как при помощи shell-скриптов своими силами настроить продажу нестандартных услуг в нашей биллинговой платформе.

Возможно, у опытных пользователей возникнет вопрос: “Но для BILLmanager же есть дополнительные модули, зачем shell-скрипты?” Дело в том, что скрипты проще написать: программист не нужен; знающего BASH системного администратора вполне достаточно.

Итак, подумаем: для каких услуг потребуется написание скриптов. Навскидку приходит несколько вариантов: для продажи ключей активации к тому или иному ПО, для предоставления места на ftp-сервере под хранение резервных копий, для реализации стриминга, торговли черничными маффинами и смузи. Разумеется, список можно продолжить, он ограничен только фантазией.

Рассмотрим пример продажи доступа к ftp-серверу с каким-то ценным содержимым. Пусть это будут регулярно обновляемые векторные карты местности.

Выясним, каковы технические требования. Согласно документации необходимо 4 скрипта: для заказа, приостановки, возобновления и прекращения доступа.

В первый скрипт (open.sh) передаются автоматически сгенерированные имя пользователя и пароль, а также могут передаваться какие-то дополнительные параметры, необходимые для работы скрипта. На выходе должна быть строка начинающаяся с “OK” и содержащая параметр “--id”: уникальный идентификатор созданной услуги. Допускается также возвращать дополнительные параметры; например, ссылку на ftp-сервер, чтобы показать её заказавшему сервис пользователю.

В остальные скрипты (suspend.sh, resume.sh, close.sh) передаётся уникальный идентификатор созданной услуги (--id), а на выходе должна быть строка “OK”.

Итак, приступим. Пусть в нашем случае файловым сервером будет ProFTPD.

Для того чтобы дать клиенту доступ к картам, нужно создать пользователя и назначить ему пароль. Для этого воспользуемся теми параметрами, которые BILLmanager генерирует автоматически: так мы получаем ещё и ID услуги, поскольку юзернейм создаётся уникальным. Достаём значения из строки параметров, затем вызываем useradd, а потом назначаем пароль с помощью passwd. Осталось вернуть “OK”, идентификатор, а также данные для авторизации на сервере, чтобы потом передать эту информацию клиенту.

Результат: open.sh

#!/bin/bash
for i
do
	if [ ${i:0:6}  = "--user" ] 
	then
		username=${i:7}
	elif [ ${i:0:10} = "--password" ]
	then
		password=${i:11}
	fi
done
useradd $username -d /home/ftp_folder -m -s /bin/false
echo $password | passwd --stdin $username > /dev/null
echo "OK --id=$username --username=$username --password=$password"

Услугу подключили. Сделаем механизм приостановки доступа на случай, если закончится баланс на счёте клиента. По полученному ID вызываем usermod и меняем домашний каталог на /dev/null.

Результат: suspend.sh

#!/bin/bash
for i
do
	string=${i}
	if [ ${string:0:4} = "--id" ]
	then
	username=${string:5}
	fi
done
usermod -d /dev/null $username
echo "OK"

Если оплата поступила, надо вернуть возможность получения карт. Снова “зовём” usermod и возвращаем всё как было.

Результат: resume.sh
#!/bin/bash
for i
do
	string=${i}
	if [ ${string:0:4} = "--id" ]
	then
	username=${string:5}
	fi
done
usermod -d /home/ftp_folder $username
echo "OK"

И, наконец, если предоставление услуги по каким-либо причинам более не планируется, то нужно удалить пользователя. Используя всё тот же идентификатор, запускаем userdel.

Результат: close.sh

#!/bin/bash
for i
do
	string=${i}
	if [ ${string:0:4} = "--id" ]
	then
	username=${string:5}
	fi
done
userdel $username
echo "OK"

Всё, написание кода завершено. Реализованные скрипты копируем в отдельную директорию на машину, откуда будут раздаваться карты, и применяем на них “chmod +x”. Кроме этого следует проверить, что ftp-сервер “смотрит” в /etc/passwd. За это отвечает строка AuthOrder в файле etc/proftpd.conf. Чтобы всё работало, в ней должно быть mod_auth_unix.c.

Теперь выполним настройки в BILLmanager. Нужно создать новый тип продукта, а затем тарифный план данного типа. После этого в качестве модуля обработки выбрать Shellscripts и дождаться завершения его установки. Если возникнет запрос на создание дата-центра — создаём его. На следующем этапе указываем IP-адрес ftp-сервера, заполняем данные аутентификации и путь к папке со скриптами. После нажатия на “Далее” вписываем произвольное название обработчика. Затем повторно выбираем тип продукта, указываем наименования, обработчик и цены. Осталось обозначить дополнительные параметры, которые передаются из скрипта open.sh. В типах продуктов выбираем только что созданный тип, щёлкаем “Параметры”, “Создать”. Создаём 2 параметра в соответствии со скриптом open.sh, отмечаем в них флажок “Показывать при открытии”, а также в выпадающем списке “Доступ для изменения” выбираем “Сотрудник”.

Настройки выполнены, и теперь услугу можно подключать клиентам.

Итак, тема shell-скриптов раскрыта. С радостью ответим на ваши вопросы, а также будем благодарны за обратную связь по статье. Успехов в разработке услуг!

P.S. Если у вас не установлен BILLmanager, и хочется его установить – инструкцию по развёртыванию можно найти здесь.

Автор: ISPsystem

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js