Открытие API для работы с услугами от российского лоукост-хостера (часть 1)

  • Tutorial
После продолжительной паузы мы собрались с мыслями и решили подготовить небольшой цикл статей, которые будут полезны как разработчикам, так и обычным нашим клиентам, кому потребуется заказывать больше одной услуги за один раз.



Предпосылки к этой публикации появились достаточно давно. Один из клиентов с большим количеством виртуальных серверов поинтересовался о том, есть ли возможность работать с API нашего биллинга. В то время, честно говоря, мы были не готовы к такому диалогу и не смогли предложить готовое решение.
С начала лета мы получили еще несколько подобных вопросов и поняли, что нельзя оставлять их без ответов. И сегодня я расскажу как работать с API биллинга нашей компании для заказа виртуальных серверов любого количества.


В качестве биллинговой системы мы используем продукт российской компании ИСПсистем — BILLmanager4. Для всех продуктов ИСПсистем есть открытое API и оно описано в большей или меньшей степени на их официальном сайте документации ispdoc.com
Работать с API можно как из командной строки, обращаясь непосредственно к интерпретатору mgrctl, так и через адресную строку браузера (или любое другое приложение, которое будет отправлять запрос на веб-сервер: curl, wget и т.п)
Исходя из документации можно составить запрос к любому из продуктов, НО при работе с биллингом требуется некоторое количество информации, которая доступна только со стороны хостинг-провайдера.

Сам запрос для заказа виртуального сервера, к примеру, KVM Ferrum на один месяц с автоматическим помесячным продлением, шаблоном ОС Centos-6.7-x86_64-minimal без использования лицензии ISPmanager, будет выглядеть так:

https://billing.ihor.ru/billmgr?authinfo=<USER>:<PASS>&addon_1101=20&addon_1103=1&addon_1104=1&addon_1110=1&addon_1791=4&enum_1112=21&enum_1106=25&agree=on&domain=test-for.habr&ostempl= Centos-6.7-x86_64-minimal&period=1210&price=1100&autoprolong=1210&payfrom=neworder&func=vds.order.7&sok=ok


Теперь попробуем расшифровать все это нагромождение переменных и цифр.
Сам запрос можно разделить условно на две части: это URL биллинга и передаваемые параметры запроса биллингу.
Сами параметры можно распределить следующим образом:

Описание параметров


  • Авторизация — authinfo

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

  • Тарифный план — price

Каждому тарифному плану соответствует свой идентфикатор в биллинге, берется из таблицы «Тарифные планы».

  • Параметры тарифного плана – addon_

К параметрами тарифного плана относятся параметры виртуального сервера, его ресурсы. Каждый параметр тарифного плана имеет свой идентификатор и свое значение по умолчанию, которое соответствует размеру диска, количеству ядер процессора и оперативной памяти, а так же IPv6- и IPv4-адресам.

  • Дополнительные услуги – enum_

В дополнительные услуги входят DNS-серверы и использование лицензии ISPmananger.


(параметры по умолчанию для KVM Ferrum)

  • Период заказа — period
  • Автопродление – autoprolong

Идентификатор периода заказа и автопродления для каждой из услуг абсолютно одинаковы.

  • Доменное имя сервера – domain

Доменное имя должно быть уникальным. Иначе появится ошибка
Ошибка: The domain is already in use. Specify a different domain name.
При массовом добавлении виртуальных серверов, рекомендую использовать формат +<порядковый номер>.

  • Шаблон ОС – ostempl

Неполный список шаблонов приведен в этом тексте чуть ниже. Обращаю внимание, что при заказе шаблона ОС без ISPmanager, в установке значения дополнительных услуг следует отключить использование панели управления ISPmanager (для всех тарифных планов этот идентификатор одинаков — 25)

  • Параметры оплаты – payfrom

В примере я привел значение параметра оплаты — neworder, что соответствует отдельному заказу с оплатой для каждого сервера. payfrom=neworder.

  • Оплата заказа – func

Так как весь заказ виртуального сервера состоит из 7 шагов, то в API, что не особо очевидно на первый взгляд, следует указывать не только саму функцию vds.order, но и номер последнего шага — 7. Таким образом полное значение этого пункта выглядит так: func=vds.order.7

  • Подтверждение пользовательского соглашения – agree

При заказе любой из услуг мы предлагаем ознакомиться с пользовательским соглашением и принять его (тогда заказ уходит на активацию) или не принять его (тогда заказ отменяется). В API этот пункт так же обязателен: agree=on.


Часть параметров фиксирована и я привел их значения при описании, а значения других можно взять из таблицы, которая целиком приведена на странице сайта со справочной информацией по работе с хостингом.

Чтобы не загромождать текст большими таблицами со всеми тарифными планами, я приведу только ту часть, которая поможет разобраться, как была составлена строка для заказа виртуального сервера с тарифным планом KVM Ferrum. А так же два других младших тарифных плана SSD и OVZ

Тарифные планы


price period / autoprolong
Тариф ID 1 мес. 3 мес. 6 мес. 1 год
KVM Ferrum 1100 1210 1213 1214 1211
SSD Ferrum 1033 1180 1183 1184 1181
OVZ Ferrum 2061 1758 1761 1762 1759


Параметры тарифного плана


addon_ enum_
Тариф / Значение Диск ОЗУ CPU IPv4 IPv6 NS ISPmgr
KVM Ferrum 1101
/ 20
1103
/ 1
1104
/ 1
1110
/ 1
1791
/ 4
1112
/ 21
1106
/ (1/25)
SSD Ferrum 1034
/ 20
1037
/ 1
1043
/ 1
1036
/ 1
1404
/ 4
1045
/ 21
1039
/ (1/25)
OVZ Ferrum 2062
/ 20
2065
/ 1
2071
/ 1
2064
/ 1
2074
/ 4
2073
/ 21
2067
/ (1/25)

Список шаблонов


  • FreeBSD-11-amd64-minimal
  • Centos-6.7-x86_64-minimal
  • Debian-7-x86_64-minimal
  • Debian-8-x86_64-ispconfig
  • Ubuntu-16.04-x86_64-minimal
  • CentOS-7-x86_64-ispmgr5

Если запрос составлен корректно и заявка на активацию новой услуги принята, Вы получите в ответ что-то типа этого:

<script language='JavaScript'>fr_master('startpage=vds', 'top.');</script>


Ниже в качестве бонуса прикладываю несколько скриптов для заказа произвольного количества виртуальных серверов для консоли Linux и Windows.
Если в комментариях будет проявлен интерес к развитию темы работы с API нашего биллинга, мы постараемся описать ее более подробно, с использованием различных языков программирования и программных продуктов для интеграции.

Пример на BASH
#/bin/bash
#
# Данные для авторизации
USER=user
PASS=password

# Заказать 10 виртуальных серверов
for i in {1..10}
do
/usr/bin/curl https://billing.ihor.ru/billmgr?authinfo=$USER:$PASS&addon_1101=20&addon_1103=1&addon_1104=1&addon_1110=1&addon_1791=4&enum_1112=21&enum_1106=25&agree=on&domain=$USER-$i.ru&ostempl= Centos-6.7-x86_64-minimal&period=1210&price=1100&autoprolong=1210&payfrom=neworder&func=vds.order.7&sok=ok"
done


К сожалению, не удалось придумать никакого приличного варианта, кроме как продублировать предыдущий цикл с использованием curl, собранного для работы в Windows. Но если из числа читателей есть искушенные в скриптописательстве/программировании под Windows, то прошу поделиться более рациональными сценариями в комментариях.

Пример на PowerShell, файл curl.exe должен находиться в той же директории, откуда выполняется скрипт

USER=user
PASS=password

for ($i=1; $i -lt 10; $i++) {
.\curl.exe https://billing.ihor.ru/billmgr?authinfo=$USER:$PASS&addon_1101=20&addon_1103=1&addon_1104=1&addon_1110=1&addon_1791=4&enum_1112=21&enum_1106=25&agree=on&domain=$USER-$i.ru&ostempl= Centos-6.7-x86_64-minimal&period=1210&price=1100&autoprolong=1210&payfrom=neworder&func=vds.order.7&sok=ok"
}
Айхор Хостинг
0.00
Лоукост VDS хостинг в России
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 54

    +2
    fr_master('startpage=vds', 'top.');

    И это вы называете API???
      0
      Стоп-стоп =) Все вопросы о том, что и как называется, пожалуйста, отправляйте компании-разработчику.
        0
        адъ какой-то…
        а что, нет альтернативы ISP?
        искренне интересуюсь, потому что не знаю
          0
          На текущий момент альтернативы нет. По крайней мере такой, на мой взгляд, которая перекроет затраты на переход и интеграцию со всей инфраструктурой. Видимо, Вы не читали наши прошлые публикации и комментарии к ним. Упоминалось, что мы планируем и работаем в направлении по созданию собственного ПО.
            0
            Печально.
            Я бы очень хотел открыть реселлинг (есть немалая и благодарная аудитория, которая будет пользоваться), но связываться с ISP — стрёмно.
              –1
              Я бы не стал реселить ihor)) Потом перед клиентами оправдываться придется.
              Качество хостинга к сожалению так себе. Сбежал после 3 месяцев.
                +1
                Да не про него, собственно речь. Куда ни ткнись — везде ISP предлагают.
                  0
                  У ISP сейчас есть проблема с безопасностью в 4 версии панели. Насколько я понимаю, для одной достаточно критичной уязвимости нет официального патча, хотя в 5 версии панели этой уязвимости уже нет. И хостеры с ISP 4 либо пытаются сами что-то сделать с этим, либо просто игнорируют проблему. Так что спорно, нужна ли такая панель.
                    –2
                    Не везде) Мне импонирует netangels.ru — панель своя, хостинг весьма фунционален)
                      0
                      ИСПсистем смогли предложить набор программного обеспечения, благодаря которому можно развернуть хостинг без большого углубления в кодинг, за сравнительно небольшие деньги, и русскоязычную поддержку.
                      0
                      Я тоже помню довольно заметную нестабильность, из-за которой ушел. Но было то года два-три назад. А вы недавно проверяли?
                        +1
                        С полгода назад, остальное https://habrahabr.ru/company/marosnet/blog/305716/#comment_9703324
                          0
                          Т.е. за 2-3 года ничего не изменилось? Эх.
                        0
                        Поддерживаю эту мысль. За несколько месяцев уже столкнулся с проблемами вроде принудительной перезагрузки машины, о которой сообщили пост-фактум. Понимаю, что идеальных нет, но сразу наступить на такие грабли было неприятно. Только пока не знаю, на что переезжать, чтобы не сильно ударить по кошельку.
                          +1
                          Иногда, происходит зависание мастер-ноды, скорее всего Вы попали на одно из таких событий. В случае зависания, задача дежурной службы произвести в перезагрузку сервера в кротчайшие сроки, чтобы снизить время даунтайма клиентских VDS, размещенных на данном сервере. Сразу после восстановления работы производится рассылка по всем клиентам размещенным на данном сервере, чтобы клиенты могли проверить корректность запуска всех служб внутри своих VDS.
                          Естественно, что зависание сервера — это не запланированные тех. работы, о которых мы всегда уведомляем заранее. Тем не менее, мы стараемся уведомлять клиентов и о таких событиях.
                          По статистике, из уже более чем 500 рабочих серверов, в месяц виснут не более 1-2 машин. Причины бывают различные, баги в ПО или глюки железа, по каждому случаю админы проводят расследование во избежание повторения проблемы.
                          Раньше процент зависаний был значительно выше. Сейчас, нам удалось свести это значение почти к естественному минимуму.
                          Мы не стоим на месте и постоянно проводим оптимизацию нашей инфраструктуры для улучшения качества услуг.
                    0
                    Альтернативы то есть, Плеск или цпанель, но это чисто хостинг, с вдс/впс там так себе.
                    Я вот свое решение пишу, на RoR. кластерный контроль хостинга приложений (да, да, docker) + регистрация доменов/прочие услуги хостинга вроде днс или почты, + биллинг.
                +1
                Если не секрет, то почему сбежали от ihor?
                  +2
                  могу предположить, что gibson_dev попал по времени на нашу череду неприятностьей с ддос-атаками на хостинг и метаниями между компаниями, которые предлагают защиту. пока мы не запустили окончательно в работу свое решение. Но об этом я расскажу в отдельной публикации.
                    +1
                    Но при этом ТП отмалчивается и ты как дурак тупо теряешь клиентов.
                    +5
                    Когда сайт не доступен по 12+ часов а ТП тупо говорит что ничего не видели и все хорошо — как то настораживает
                    Да и скорость хостинга так себе, страница могла и секунд по 10 только отрабатываться, при том что там нет тяжелой работы, почти статика и причем часто.
                      0
                      Можете привести номера тикетов по данной проблеме?
                        +1
                        Если вы представитель компании то можете наверное и сами посмотреть, логин почти такой же, они все в архиве — тема одинаковая
                          0
                          Если я правильно идентифицировал Ваш аккаунт (у нас 5 пользователей у которых есть «gibson» в имени логина), то:
                          1. У Вас была услуга хостинга — а в этой статье мы говорим про ресселинг VDS.
                          2. Проблема была на одном из хостинговых серверов и уже давно решена. Все тикеты с проблемами еще прошлогодние.
                            0
                            Мне от того что он сейчас поправлен — никакого прока. То что он не работал (мог и по 12 часов к ряду) — это проблема и мне никто не мог мог объяснить или отреагировать вовремя. В лучшем случае я постфактум получал сообщение что все уже работает ну или типа «у нас все хорошо идите в попу» — это как минимум характеризует уровень поддержки а она у вас одна.
                              0
                              Поддержка тоже меняется. Штат расширяется, ужесточаются регламенты работы. Жалоб на долгий ответ сейчас практически нету.
                              На счет 12 часов недоступности — не нашел такого в Ваших тикетах. Только упоминание о периодической недоступности.
                              Проблема была не явная, по этому потребовалось некоторое время на то, чтобы ее отловить.
                                +1
                                В общем вы мне еще пытаетесь доказать что я не прав, а вы красавцы? Да ради бога, работайте как хотите только не со мной и моими клиентами, свое мнение я составил и озвучил его выше.
                                  0
                                  Ни в коем случае. Я же не отрицаю, что были проблемы. Просто моя задача показать общественности, что мы не стоим на месте и постоянно развиваемся, признаем ошибки и исправляем их.
                                    0
                                    Проблема даунтайма есть у всех крупных и не очень хостеров в России, я про выделенные сервера и VDS, на вскидку — eServer, Миран, АйХор, Селектел и прочие, и при этом они говорят что дата-центр сертифицирован по TIER III или даже IV где даунтайм в год не должен превышать 26 минут (у TIER IV — доступность 99.995%) — то такого не может обеспечить НИКТО в России — и это ФАКТ!
                                      0
                                      Доступность самого ЦОД и доступность отдельно взятой услуги несколько разные вещи.
                                      Доступность ЦОД, по сути, складывается из непрерывного наличия электроэнергии, холода и передачи интернет-трафика (и то, некоторые ДЦ не занимаются сами телекоммуникациями и отдают это на сторонних операторов связи, с которыми клиент дата-центра договаривается самостоятельно).
                                      В случае с gibson_dev, имела место быть программная проблема на отдельно взятом хостинговом сервере, при том, что сам сервер был доступен, как и большинство сайтов на нем. Так что данная проблема не имеет ни какого отношения к уровням TIER самого ДЦ.
                                      Например, за прошедший год с начала ввода в эксплуатацию нашего нового ДЦ, его аптайм по холоду и электричеству составил 100%, при том, что было 2 случая отсутствия электропитания по основному электровводу из города…
                                        0
                                        А я как раз говорю о падении каналов связи и отключении электропитания, именно эти проблемы и случались.
                                        Или доступность ЦОД по каналам связи ограничивается центральным коммутатором ЦОД, а все что падает за ним, вплоть до линка до конечного сервера — это не считается? Или отключение питания стойки с серверами тоже не считается как недоступность ЦОД?
                                          0
                                          Я не очень в курсе проблем с электропитанием у тех коллег, которых Вы перечислили, могу только сказать за себя, за год работы ни одна стойка в нашем ДЦ не была обесточена во время работы.
                                          Также, ни одно сетевое устройство не выходило из строя.
                                          Единственная проблема с доступностью нового ДЦ была связана с обывом оптики, это было в июле прошлого года, тогда мы еще не успели достроить резерв, он был запущен только к концу августа. На считая первого обрыва, в течение этого года было еще 2, по одному на каждом кабеле, обе аварии прошли незаметно для пользователей.
                                          Были еще проблемы общего характера связанные с DDoS-атаками и мы как раз активно занимаемся решением этой проблемой и последние пару месяцев мощные ддосы уже не беспокоили наших клиентов.
                                          Но насколько я знаю, надежность по TIER не учитывает недоступность ресурсов ДЦ из-за сетевых атак. Оценивается только надежность физической инфраструктуры.
                      +2
                      Ежедневно в московский прайм-тайм сервер становился недоступен.
                        0
                        Можете как-то идентифицировать проблему, чтобы я мог посмотреть подробности? Номера тикетов или код услуги.
                          +1
                          Так-то я не пользуюсь уже вашими услугами, как раз из-за ежедневных проблем со связностью, так что уже не актуально.
                          А тикет можете посмотреть — 712472, специалист техподдержки предложил перенести сервер на другую ноду, от проблем со связностью это ясное дело не помогло.
                            0
                            По тикету 712472, проблема была в серии мощных DDoS-атак в начале этого года. С тех пор утекло много воды и стабильность нашей сети стала гораздо выше.
                      –1
                      Технически статья не выдерживает никакой критики. Такое чувство, что автор статьи сам ни разу не читал документацию isp:
                      Если запрос составлен корректно и заявка на активацию новой услуги принята, Вы получите в ответ что-то типа этого:

                      script language='JavaScript'fr_master('startpage=vds', 'top.');/script

                      Почему бы не открыть тот самый док, ссылку на который вы дали и не найти следующее:
                      Формат вывода результатов выполнения функций

                      Все панели управления предоставляют возможность получения результата выполнения своих функций в формате XML, текстовом формате и в формате JSON. Чтобы указать, в каком формате вы желаете получить данные, необходимо указать параметр out=имя_формата.

                      Возможные значения параметра out:

                      xml — данные будут возвращены в формате XML,
                      devel — тоже самое, что XML, но в документе будут присутствовать, данные описывающие интерфейс пользователя (полезно для отладки своих плагинов),
                      text — данные в текстовом формате
                      json — данные в формате JSON. http://ru.wikipedia.org/wiki/JSON

                      Если параметр out отсутствует, то считается, что данные предназначены для браузера и они преобразуются в html.

                      Сама статья это скорей «полет мыслей». Эта документация по использованию api (а точней, частные случаи его использования со всеми необходимыми id-шниками) должна быть на вашем сайте. Здесь, вы к сожалению только учите людей делать так, как НЕ нужно.
                        +1
                        о том, как работать с API продуктами ИСПсистем написано в их документации. В этой статье я дейтвительно описал только частный случаи того, как работать с эти API применительно к нашему хостингу.
                        эта информация представлена на нашем сайте в более лаконичном виде, но с полной информацией по всем тарифным планам. В статье есть на то ссылка.
                        –2
                        Но ведь это просто описание API продуктов ISPsystems, а конкретно — BILLmanager.
                        При чем тут хостинг не совсем понятно, если честно.
                          +1
                          компания называется ИСПсистем, ранее называлась ISPsystem. Хостинг тут при том, что указано КАК заказать виртуальный сервер с конкретным тарифным планом в нашей компании через API BILLmanager.
                            –1
                            Хорошо, а как отличается заказ сервера через API BILLmanager'a в другой компании?
                              +1
                              идентификаторами услуг и параметров, которые я выложил в двух таблицах. В остальном — да. Заказ виртуального сервера будет идентичен и для любого другого BILLmanager.
                          0
                          OFFTOP:
                          Я, наверное, слишком испорченный, но когда слышу ваше название, то сначала хочется записать как iWhore, потом понимаешь, что это iHor и тревога ложная :)
                          Среди Вашей ЦА — ИТшников немало народу знающих английский, вас могут неправильно понять (
                          /OFFTOP.
                            +1
                            Вы еще не сталкивались с жадностью данной конторы и твердолобостью саппорта)
                              0
                              Надо признать, саппорт у них шикарный. Мои письма в поддержку стали просто игнорировать.
                                0
                                Можете написать мне в личку, с какого ящика и на какой писали и когда это примерно было?
                                  0
                                  Все письма, которые попадают в support@Ihor.ru и несут смысловую нагрузку по теме — прочитываются и отвечаются регулярно. Если Вы написали запрос через личный кабинет, то этот запрос будет обработан в обязательном порядке (только если Вы его случайно не закрыли, что нередко бывает с теми, кто жалуется на отсутствие реакции от технической поддержки).
                                  Запрос имеет свой номер. поэтому Вы можете его сообщить и мы обязательно разберемся со странной молчаливостью сотрудников в отношении Вас.
                                    0
                                    По поводу моего письма я уже общался с Van_Loon, проблему обсудили. Хотя поведение поддержки было странное, это надо признать.
                                      0
                                      Еще раз хочу заменить, что поддержка обрабатывает только ящик support.
                                      info обрабатывается секретарями и менеджерами.
                                        0
                                        Теперь это понятно. С другой стороны, возникает вопрос, почему никто из секретарей и менеджеров не переслал письмо на support? И в контактах на сайте support не указан.
                                          0
                                          support указан в разделе Поддержка, а про менеджеров, я Вам писал, видимо перегрелись.
                                          Да и вопрос не стандартный, по этому сразу не поняли кого дернуть а потом забыли, увы не все бизнес-процессы еще отлажены у нас.
                                  0
                                  Опишите по подробней, в чем заключается наша жадность? Приведите конкретный пример, пожалуйста.
                                    0
                                    А про саппорт вам как бы не интересно? =) Хотя да вы же и так все знаете =)
                                      0
                                      Отнюдь, очень интересно, если есть что сказать про саппорт, то пишите, с номерами тикетов, чтобы я мог ознакомиться, В нашей команде уже почти 40 человек и уследить за работой всех сотрудников я не могу. Также, не могу, чисто физически, перечитывать все тикеты, количество которых превышает 7000 в месяц. По этому. если есть какие то жалобы на работу моих людей, всегда готов выслушать и принять меры по исправлению вектора их работы.
                                    0
                                    Ваше утверждение звучит голосовным. Техническая поддержка клиентов осуществляется бесплатно. Если Вы заказываете администрирование или задачи, которые требуется сделать вам выходят за рамки технической поддержки, то действительно придется оплатить по прейскуранту.
                                    Пресловутая твердолобость может быть вызвана некорректной постановкой задачи или ведение переписки в нарочито расхлюстанном стиле с использованием нецензурных выражений.
                                    Вы так же всегда можете использовать альтернативную поддержку в решении ваших задачи в виде друга-админа или какого-либо фрилансера, которые, возможно, сделают что-то бесплатно/дешевле.

                                  Only users with full accounts can post comments. Log in, please.