Сегодня сервису исполняется один год. Запуск произошел на пару дней позже даты регистрации домена, но сегодняшнюю дату можно считать первым днем рождения.
На Поиске VPS появилась новая функция — просмотр whois информации по домену. Сервис поддерживает 529 доменных зон (включая New gTLD), и для части из них происходит парсинг whois и определяется дата регистрации, дата окончания регистрации домена и регистратора и отображаются ДНС сервера. К сожалению, доменных зон много, а рабочих рук мало, поэтому определение этих параметров на данный момент доступно только для самых популярных зон, но в самое ближайшее время количество таких зон будет расширено. Также, в ближайших планах есть написание «Блокнота доменов» и «Блокнота серверов».
![](https://habrastorage.org/r/w1560/files/5fa/a96/8ab/5faa968ab22941b9b61c6041d7756024.png)
Когда я вижу какой-нибудь необычный проект, у меня возникает непреодолимое желание узнать, на чем он написан, как выглядит админка, какие сервера он использует и другую информацию, которая скрыта от любопытных глаз.
Чаще всего такое желание остается лишь желанием, так как дальше просмотра html кода страницы продвинуться некуда. Однако сегодня я решил рассказать, на чем работает Поиск VPS и показать скриншоты админки.
Сайт написан на php и работает на движке форума phpbb3. Этот движок был выбран по нескольким причинам: во-первых, я очень много работал с этой системой и могу написать любой код с закрытыми глазами, а во-вторых, использование этого движка сэкономило кучу времени, и мне не пришлось писать модули для регистрации пользователей, восстановления паролей, входа, капчи и т. д. Ну и в конце-концов, на сайте есть хорошо функционирующий форум.
С серверной стороны сайт работает на виртуальном сервере от DigitalOcean и используется ОС Debian. Этот сервис был выбран для того, чтобы перед публикациями статей на хабре легко увеличивать мощность сервера и не упасть от хабраэффекта. Также на сервере установлена панель управления ISPmanager. Обработкой запросов занимаются nginx и apache. В качестве сервера баз данных выступает mysql.
Из библиотек используются jquery и jqueryui. Это сочетание позволило сделать интерфейс очень удобным и функциональным. Например, ползунки и выпадающие списки, всплывающие подсказки и т. д. — это заслуга вышеупомянутых библиотек.
![](https://habrastorage.org/r/w1560/files/d32/529/a67/d32529a67558492098d584f75fa26118.png)
Часть функций сайта работает без перезагрузки страницы на AJAX. Очень удобно, когда пользователь двигает ползунок или делает выбор в выпадающем меню: после изменения параметров поиска страница не перезагружается, и пользователь может быстро выбрать необходимые параметры. С технической стороны на сервер отправляется POST запрос и ожидается ответ в виде JSON массива. Если в ответе пришел не JSON массив — значит, произошла какая-то ошибка на сервере, и нужно показать уведомление об этом. В случае, если пришел JSON массив, то один из ключей этого массива будет “Error”. Каждый раз идет проверка этого значения, и если оно не равно нулю, то пользователю показывается сообщение об ошибке, в противном случае этот массив содержит результат выполнения запроса пользователя (как правило, часть шаблона для обновления информации на странице).
Если честно, то писать админки к сайтам я очень не люблю. Логика простая: зачем писать админку, когда можно редактировать данные через phpmyadmin. На начальном этапе такое еще может работать, однако когда проект набирает обороты, админка становится очень нужна. Правда, каких-то функций в админке всегда не хватает, так как написать их довольно лениво :-)
Я долго думал, что можно поместить на главной странице админки, но, кроме небольшой статистической информации и пары кнопок, ничего не придумал. Хотя, как показывает практика, на эти данные внимания практически не обращаешь.
![](https://habrastorage.org/r/w1560/files/e89/11a/0e1/e8911a0e191e48d4b3401de315d19871.png)
На странице “Компании” можно найти список всех хостеров и кнопку для добавления новой компании. У каждого хостера можно быстро добавить тариф на виртуальный сервер, выделенный сервер или скидку, а также отредактировать или удалить компанию. Также у тех хостеров, у которых есть партнерские программы, можно увидеть ссылку для перехода в биллинг.
![](https://habrastorage.org/r/w1560/files/b8d/c34/b73/b8dc34b7377f40c5900f6fb7235d6894.png)
Для добавления компании много времени не нужно, дата регистрации домена определяется автоматически, скриншот “подтягивается” со специализированного сервиса или его можно загрузить из файла. Из рутинных задач — поиск способов оплаты на сайте хостера и регистрация в биллинге для подключения партнерки.
![](https://habrastorage.org/r/w1560/files/339/5c1/b96/3395c1b9674d4aa59d193aace724786b.png)
Также, на странице хостера можно найти все его тарифы на виртуальные и выделенные сервера и быстро отредактировать их.
Страница с тарифами полностью аналогична нижнему блоку тарифов на странице хостера, поэтому скриншот этой страницы прикладывать не буду, а вот о странице для добавления тарифа расскажу поподробнее.
![](https://habrastorage.org/r/w1560/files/05c/3f4/f6f/05c3f4f6fcc642559ad9b782323c5706.png)
Эта версия страницы тарифов — уже третья по счету, первые две содержали гораздо меньшее количество параметров. На данный момент параметров довольно много, и добавлять тарифы довольно тяжело. Однако, при добавлении тарифов одного хостера очень помагает функция “Дублировать” браузера Google Chrome. У разных тарифов довольно часто совпадают несколько параметров. Например, виртуализация, страна и возможные ОС чаще всего для одной группы тарифов одинаковые. Поэтому самый простой вариант добавления таких тарифов — это заполнение одинаковых для всех тарифов параметров и дублирование вкладок в браузере.
Про раздел со скидками и новостями рассказывать не буду, там все довольно банально, покажу скриншоты:
![](https://habrastorage.org/r/w1560/files/d75/5cc/10f/d755cc10ff484ac5bf7092cd9c3d4bad.png)
![](https://habrastorage.org/r/w1560/files/704/37d/038/70437d03814a4526be65b545e1e254ba.png)
Следом идет раздел для точек Looging Glass.
![](https://habrastorage.org/r/w1560/files/ced/d06/ff3/cedd06ff3392475994825579dd5c578d.png)
Изначально сервис Looking Glass я планировал сделать только для возможности проверки скорости скачивания файлов с виртуальных серверов хостеров и выполнения команд ping, tracert и mtr. Теперь эти точки служат еще и для проверки whois, чтобы обойти ограничение на количество запросов с одного IP адреса.
![](https://habrastorage.org/r/w1560/files/2d4/006/c8e/2d4006c8eb454cdaab9a7cf3213a0f8c.png)
У любой точки Looking Glass нужно задать адрес, координаты, IP адреса и указать, какие сервисы предоставляет эта точка.
Раздел с доменными зонами — самый длинный из всех. Для составления такого списка был спарсен сайт iana, и для каждого домена был получен адрес его whois сервера.
![](https://habrastorage.org/r/w1560/files/9d1/45d/56c/9d145d56c154497aad39510f9ec7c3c4.png)
После этого началось решение сложной задачи: для каждой зоны нужно было сделать парсинг whois. Сложность заключается в том, что whois для каждой зоны свой, поэтому для каждой зоны нужно определять, какая строка за что отвечает. На помощь приходит php функция strtotime, которая превращает почти любую строковую дату в unixtimestamp. Остается только указать, в какой строке написаны дата регистрации и дата окончания регистрации домена.
![](https://habrastorage.org/r/w1560/files/8a2/fda/285/8a2fda285e954bc08cdc017fb9550844.png)
К сожалению, раздел с аукционами был закрыт через пару месяцев после открытия из-за низкого спроса, поэтому покажу только скриншот.
![](https://habrastorage.org/r/w1560/files/9e4/88f/5f3/9e488f5f3e1b4c07aa93a26b6197b0ac.png)
На этом всё! А вы готовы показать свои админки?
![](https://habrastorage.org/r/w1560/files/237/02e/b38/23702eb38d7e4185b5485a4d94dcbace.png)
P. S. Спасибо andorro за помощь с подготовкой текста.
P. P. S. Благодарю хостинг-компанию VDSina.ru за поддержку проекта.
Whois-сервис
На Поиске VPS появилась новая функция — просмотр whois информации по домену. Сервис поддерживает 529 доменных зон (включая New gTLD), и для части из них происходит парсинг whois и определяется дата регистрации, дата окончания регистрации домена и регистратора и отображаются ДНС сервера. К сожалению, доменных зон много, а рабочих рук мало, поэтому определение этих параметров на данный момент доступно только для самых популярных зон, но в самое ближайшее время количество таких зон будет расширено. Также, в ближайших планах есть написание «Блокнота доменов» и «Блокнота серверов».
![](https://habrastorage.org/files/5fa/a96/8ab/5faa968ab22941b9b61c6041d7756024.png)
Поиск VPS — взгляд изнутри
Когда я вижу какой-нибудь необычный проект, у меня возникает непреодолимое желание узнать, на чем он написан, как выглядит админка, какие сервера он использует и другую информацию, которая скрыта от любопытных глаз.
Чаще всего такое желание остается лишь желанием, так как дальше просмотра html кода страницы продвинуться некуда. Однако сегодня я решил рассказать, на чем работает Поиск VPS и показать скриншоты админки.
Сайт написан на php и работает на движке форума phpbb3. Этот движок был выбран по нескольким причинам: во-первых, я очень много работал с этой системой и могу написать любой код с закрытыми глазами, а во-вторых, использование этого движка сэкономило кучу времени, и мне не пришлось писать модули для регистрации пользователей, восстановления паролей, входа, капчи и т. д. Ну и в конце-концов, на сайте есть хорошо функционирующий форум.
С серверной стороны сайт работает на виртуальном сервере от DigitalOcean и используется ОС Debian. Этот сервис был выбран для того, чтобы перед публикациями статей на хабре легко увеличивать мощность сервера и не упасть от хабраэффекта. Также на сервере установлена панель управления ISPmanager. Обработкой запросов занимаются nginx и apache. В качестве сервера баз данных выступает mysql.
Из библиотек используются jquery и jqueryui. Это сочетание позволило сделать интерфейс очень удобным и функциональным. Например, ползунки и выпадающие списки, всплывающие подсказки и т. д. — это заслуга вышеупомянутых библиотек.
![](https://habrastorage.org/files/d32/529/a67/d32529a67558492098d584f75fa26118.png)
Часть функций сайта работает без перезагрузки страницы на 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. На начальном этапе такое еще может работать, однако когда проект набирает обороты, админка становится очень нужна. Правда, каких-то функций в админке всегда не хватает, так как написать их довольно лениво :-)
Я долго думал, что можно поместить на главной странице админки, но, кроме небольшой статистической информации и пары кнопок, ничего не придумал. Хотя, как показывает практика, на эти данные внимания практически не обращаешь.
![](https://habrastorage.org/files/e89/11a/0e1/e8911a0e191e48d4b3401de315d19871.png)
На странице “Компании” можно найти список всех хостеров и кнопку для добавления новой компании. У каждого хостера можно быстро добавить тариф на виртуальный сервер, выделенный сервер или скидку, а также отредактировать или удалить компанию. Также у тех хостеров, у которых есть партнерские программы, можно увидеть ссылку для перехода в биллинг.
![](https://habrastorage.org/files/b8d/c34/b73/b8dc34b7377f40c5900f6fb7235d6894.png)
Для добавления компании много времени не нужно, дата регистрации домена определяется автоматически, скриншот “подтягивается” со специализированного сервиса или его можно загрузить из файла. Из рутинных задач — поиск способов оплаты на сайте хостера и регистрация в биллинге для подключения партнерки.
![](https://habrastorage.org/files/339/5c1/b96/3395c1b9674d4aa59d193aace724786b.png)
Также, на странице хостера можно найти все его тарифы на виртуальные и выделенные сервера и быстро отредактировать их.
Страница с тарифами полностью аналогична нижнему блоку тарифов на странице хостера, поэтому скриншот этой страницы прикладывать не буду, а вот о странице для добавления тарифа расскажу поподробнее.
![](https://habrastorage.org/files/05c/3f4/f6f/05c3f4f6fcc642559ad9b782323c5706.png)
Эта версия страницы тарифов — уже третья по счету, первые две содержали гораздо меньшее количество параметров. На данный момент параметров довольно много, и добавлять тарифы довольно тяжело. Однако, при добавлении тарифов одного хостера очень помагает функция “Дублировать” браузера Google Chrome. У разных тарифов довольно часто совпадают несколько параметров. Например, виртуализация, страна и возможные ОС чаще всего для одной группы тарифов одинаковые. Поэтому самый простой вариант добавления таких тарифов — это заполнение одинаковых для всех тарифов параметров и дублирование вкладок в браузере.
Про раздел со скидками и новостями рассказывать не буду, там все довольно банально, покажу скриншоты:
![](https://habrastorage.org/files/d75/5cc/10f/d755cc10ff484ac5bf7092cd9c3d4bad.png)
![](https://habrastorage.org/files/704/37d/038/70437d03814a4526be65b545e1e254ba.png)
Следом идет раздел для точек Looging Glass.
![](https://habrastorage.org/files/ced/d06/ff3/cedd06ff3392475994825579dd5c578d.png)
Изначально сервис Looking Glass я планировал сделать только для возможности проверки скорости скачивания файлов с виртуальных серверов хостеров и выполнения команд ping, tracert и mtr. Теперь эти точки служат еще и для проверки whois, чтобы обойти ограничение на количество запросов с одного IP адреса.
![](https://habrastorage.org/files/2d4/006/c8e/2d4006c8eb454cdaab9a7cf3213a0f8c.png)
У любой точки Looking Glass нужно задать адрес, координаты, IP адреса и указать, какие сервисы предоставляет эта точка.
Раздел с доменными зонами — самый длинный из всех. Для составления такого списка был спарсен сайт iana, и для каждого домена был получен адрес его whois сервера.
![](https://habrastorage.org/files/9d1/45d/56c/9d145d56c154497aad39510f9ec7c3c4.png)
После этого началось решение сложной задачи: для каждой зоны нужно было сделать парсинг whois. Сложность заключается в том, что whois для каждой зоны свой, поэтому для каждой зоны нужно определять, какая строка за что отвечает. На помощь приходит php функция strtotime, которая превращает почти любую строковую дату в unixtimestamp. Остается только указать, в какой строке написаны дата регистрации и дата окончания регистрации домена.
![](https://habrastorage.org/files/8a2/fda/285/8a2fda285e954bc08cdc017fb9550844.png)
К сожалению, раздел с аукционами был закрыт через пару месяцев после открытия из-за низкого спроса, поэтому покажу только скриншот.
![](https://habrastorage.org/files/9e4/88f/5f3/9e488f5f3e1b4c07aa93a26b6197b0ac.png)
На этом всё! А вы готовы показать свои админки?
![](https://habrastorage.org/files/237/02e/b38/23702eb38d7e4185b5485a4d94dcbace.png)
P. S. Спасибо andorro за помощь с подготовкой текста.
P. P. S. Благодарю хостинг-компанию VDSina.ru за поддержку проекта.