Поиск VPS — whois-сервис и взгляд изнутри
Сегодня сервису исполняется один год. Запуск произошел на пару дней позже даты регистрации домена, но сегодняшнюю дату можно считать первым днем рождения.
Whois-сервис
На Поиске VPS появилась новая функция — просмотр whois информации по домену. Сервис поддерживает 529 доменных зон (включая New gTLD), и для части из них происходит парсинг whois и определяется дата регистрации, дата окончания регистрации домена и регистратора и отображаются ДНС сервера. К сожалению, доменных зон много, а рабочих рук мало, поэтому определение этих параметров на данный момент доступно только для самых популярных зон, но в самое ближайшее время количество таких зон будет расширено. Также, в ближайших планах есть написание «Блокнота доменов» и «Блокнота серверов».
Поиск VPS — взгляд изнутри
Когда я вижу какой-нибудь необычный проект, у меня возникает непреодолимое желание узнать, на чем он написан, как выглядит админка, какие сервера он использует и другую информацию, которая скрыта от любопытных глаз.
Чаще всего такое желание остается лишь желанием, так как дальше просмотра html кода страницы продвинуться некуда. Однако сегодня я решил рассказать, на чем работает Поиск VPS и показать скриншоты админки.
Сайт написан на php и работает на движке форума phpbb3. Этот движок был выбран по нескольким причинам: во-первых, я очень много работал с этой системой и могу написать любой код с закрытыми глазами, а во-вторых, использование этого движка сэкономило кучу времени, и мне не пришлось писать модули для регистрации пользователей, восстановления паролей, входа, капчи и т. д. Ну и в конце-концов, на сайте есть хорошо функционирующий форум.
С серверной стороны сайт работает на виртуальном сервере от DigitalOcean и используется ОС Debian. Этот сервис был выбран для того, чтобы перед публикациями статей на хабре легко увеличивать мощность сервера и не упасть от хабраэффекта. Также на сервере установлена панель управления ISPmanager. Обработкой запросов занимаются nginx и apache. В качестве сервера баз данных выступает mysql.
Из библиотек используются jquery и jqueryui. Это сочетание позволило сделать интерфейс очень удобным и функциональным. Например, ползунки и выпадающие списки, всплывающие подсказки и т. д. — это заслуга вышеупомянутых библиотек.
Часть функций сайта работает без перезагрузки страницы на AJAX. Очень удобно, когда пользователь двигает ползунок или делает выбор в выпадающем меню: после изменения параметров поиска страница не перезагружается, и пользователь может быстро выбрать необходимые параметры. С технической стороны на сервер отправляется POST запрос и ожидается ответ в виде JSON массива. Если в ответе пришел не JSON массив — значит, произошла какая-то ошибка на сервере, и нужно показать уведомление об этом. В случае, если пришел JSON массив, то один из ключей этого массива будет “Error”. Каждый раз идет проверка этого значения, и если оно не равно нулю, то пользователю показывается сообщение об ошибке, в противном случае этот массив содержит результат выполнения запроса пользователя (как правило, часть шаблона для обновления информации на странице).
function PostAction(URL, PostArray, SuccessFunction, ErrorFunction)
{
$.ajax({
type: 'POST',
url: URL,
data: PostArray,
success: function(data) {
try
{
Data = eval('(' + data + ')');
if ('Error' in Data)
{
if (Data['Error'] == 0)
{
SuccessFunction();
}
else
{
ErrorFunction(Data['Error']);
}
}
else
{
ErrorFunction('Ошибка связи с сервером');
}
}
catch(error)
{
ErrorFunction('Ошибка связи с сервером');
}
},
error: function(AjaxRequest, Status)
{
switch (Status)
{
case 'timeout':
ErrorFunction('Таймаут связи с сервером');
break;
case 'error':
ErrorFunction('Ошибка связи с сервером');
break;
default:
ErrorFunction('Ошибка связи с сервером');
break;
}
}
});
}
Админка
Если честно, то писать админки к сайтам я очень не люблю. Логика простая: зачем писать админку, когда можно редактировать данные через phpmyadmin. На начальном этапе такое еще может работать, однако когда проект набирает обороты, админка становится очень нужна. Правда, каких-то функций в админке всегда не хватает, так как написать их довольно лениво :-)
Я долго думал, что можно поместить на главной странице админки, но, кроме небольшой статистической информации и пары кнопок, ничего не придумал. Хотя, как показывает практика, на эти данные внимания практически не обращаешь.
На странице “Компании” можно найти список всех хостеров и кнопку для добавления новой компании. У каждого хостера можно быстро добавить тариф на виртуальный сервер, выделенный сервер или скидку, а также отредактировать или удалить компанию. Также у тех хостеров, у которых есть партнерские программы, можно увидеть ссылку для перехода в биллинг.
Для добавления компании много времени не нужно, дата регистрации домена определяется автоматически, скриншот “подтягивается” со специализированного сервиса или его можно загрузить из файла. Из рутинных задач — поиск способов оплаты на сайте хостера и регистрация в биллинге для подключения партнерки.
Также, на странице хостера можно найти все его тарифы на виртуальные и выделенные сервера и быстро отредактировать их.
Страница с тарифами полностью аналогична нижнему блоку тарифов на странице хостера, поэтому скриншот этой страницы прикладывать не буду, а вот о странице для добавления тарифа расскажу поподробнее.
Эта версия страницы тарифов — уже третья по счету, первые две содержали гораздо меньшее количество параметров. На данный момент параметров довольно много, и добавлять тарифы довольно тяжело. Однако, при добавлении тарифов одного хостера очень помагает функция “Дублировать” браузера Google Chrome. У разных тарифов довольно часто совпадают несколько параметров. Например, виртуализация, страна и возможные ОС чаще всего для одной группы тарифов одинаковые. Поэтому самый простой вариант добавления таких тарифов — это заполнение одинаковых для всех тарифов параметров и дублирование вкладок в браузере.
Про раздел со скидками и новостями рассказывать не буду, там все довольно банально, покажу скриншоты:
Следом идет раздел для точек Looging Glass.
Изначально сервис Looking Glass я планировал сделать только для возможности проверки скорости скачивания файлов с виртуальных серверов хостеров и выполнения команд ping, tracert и mtr. Теперь эти точки служат еще и для проверки whois, чтобы обойти ограничение на количество запросов с одного IP адреса.
У любой точки Looking Glass нужно задать адрес, координаты, IP адреса и указать, какие сервисы предоставляет эта точка.
Раздел с доменными зонами — самый длинный из всех. Для составления такого списка был спарсен сайт iana, и для каждого домена был получен адрес его whois сервера.
После этого началось решение сложной задачи: для каждой зоны нужно было сделать парсинг whois. Сложность заключается в том, что whois для каждой зоны свой, поэтому для каждой зоны нужно определять, какая строка за что отвечает. На помощь приходит php функция strtotime, которая превращает почти любую строковую дату в unixtimestamp. Остается только указать, в какой строке написаны дата регистрации и дата окончания регистрации домена.
К сожалению, раздел с аукционами был закрыт через пару месяцев после открытия из-за низкого спроса, поэтому покажу только скриншот.
На этом всё! А вы готовы показать свои админки?
P. S. Спасибо andorro за помощь с подготовкой текста.
P. P. S. Благодарю хостинг-компанию VDSina.ru за поддержку проекта.
Автор: leonid239