Системный администратор в Черногории и по всему миру

Администрирование серверов, разработка плагинов к хостинг-панелям

Категория: Разработка

Телеграм боты

Сделал два новых телеграм бота:

  1. https://t.me/cyprusquakebot (@cyprusquakebot) уведомления о землетрясениях на Кипре
  2. https://t.me/crnagorabot (@crnagorabot) уведомления о землетрясениях в Черногории

Telegram bot

Разработал телеграм бот осуществляющий Health check проверки сайтов. Поддерживается проверка сайтов по http\https протоколам или проверка доступности портов по TCP.
Проверка осуществляется с 10 точек: Hetzner (DE), Linode (US), 1and1 (US) , Reg.ru (RU),   DEDIC-CENTER (RU), Kazakhtelecom (KZ), vps.ua (UA) и других.

Сайт бота: https://sitecheck.solutions/ найти в телеграме: @sitecheck_bot

Зарелизил панель управления почтовыми редиректами

Зарелизил панель управления почтовыми редиректами.

Панель позволяет управлять почтовыми перенаправлениями в cpanel или ispmanager перенаправляя почту приходящую в один ящик, на внешние адреса.

Основной функционал:
Управление почтовыми редиректами в панелях Cpanel и ISPManager;
Управление пользователями с ограничением на число создаваемых почтовых ящиков/переадресаций;
Возможность персональных доменов для конкретных пользователец;
Учет статистики создаваемых ящиковscreen2
screen1

Портирование антиддос плагина на ispmanager 5

Начал портирование плагина BanIp для ISPmanager 5 Lite.
Помимо портирования идет добавление функционала по jabber уведомлению о событиях.

ispmanager 5 блокировка ip

После окончания портирования плагин будет доступен в соответствующем разделе https://montenegro-it.com/category/plugins

Деанонимизация днс серверов

Для одного из заказчиков сделал скрипт деанонимизации днс-серверов. Подробнее на гитхабе.

Системные требования:
PHP 5+
Bind 9

Скрипт на github

Программисты

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

Смотрю таблицу, на полмиллона строк, все параметры в text, даже бедное поле ip, индексами и не пахнет. Почему, почему почти все php программисты при чтении книг по php, пропускали пару параграфов про mysql, а книжки по mysql  вообще игнорировали.

type_sql

Защищаем от хотлинкига

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

Конфиг nginx в общем случае будет выглядеть так:
location ^~ /downloads/ {
secure_link $arg_hash,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr salt";
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
alias /var/www/sites/data/www/test/files/;
}

где $arg_hash - $_GET['hash'] переменная hash кодирующая ссылку, а $arg_expires - $_GET['expires'] содержащее время "протухания" ссылки, а salt - "соль" которой добавляем уникальность (как вариант, можно добавлять в secure_link_md5 user_agent или любые другие переменные). Я использую alias, так как физически имя папки в url отличается от фактической в файловой системе.

Генерация ссылки на php происходит следующим образом:

$salt="salt";
$time = time() + 10800;
$file="/downloads/file.rar"
$hash=md5($time."/".$file.$_SERVER['REMOTE_ADDR']." ".$salt,TRUE);
$hash = strtr( base64_encode($hash), array( '+' => '-', '/' => '_', '=' => '' ));
$link="http://test.com".$file."?hash=".$hash."&expires=".$time;

Тэги: , ,