BILLmanager. Тепер за допомогою shell-скриптів можна продавати що завгодно



На сьогоднішній день більшість провайдерів, крім стандартних послуг хостингу, доменів і 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 | пароль --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, і хочеться його встановити – інструкцію по розгортанню можна знайти на тут.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.