Запуск скрипта в MikroTik по будням

Возникла необходимость запускать скрипт в маршрутизаторе MikroTik только по будням. Мало того, что нет простого способа узнать сегодняшний день недели, так еще есть праздники. Поэтому решил прописать все выходные дни в явном виде. Скрипт запуска получился таким:

# получаем сегодняшнюю дату
:local date [/system clock get date]
# читаем файл holidays.txt и приводим его к массиву
:local hdays [:toarray [/file get [/file find name=holidays.txt] contents]]
# проверяем, есть ли сегодняшняя дата в массиве
:local isWork ([:typeof [:find $hdays $date -1]] = "nil")
:if ($isWork) do={
    # здесь запускаемый код
}

Файл holidays.txt содержит в себе список дат выходных дней, разделенных запятыми. Дата должна быть в формате МММ/ДД/ГГГГ в нижнем регистре. Файл не может превышать 4096 байт.
Файл сгенерировал из производственного календаря с Портала открытых данных. На портале он в виде файла CSV.

Мой файл holidays.txt (21 downloads) .
Скрипт для генерации gen_holidays.py (16 downloads) .

Получение сертификата Let’s Encrypt на nginx в режиме прокси

С некоторого времени использую сертификаты Let’s Encrypt для HTTPS. Когда HTTPS соединения от клиентов обрабатывает сам веб-сервер, где расположены файлы, как получить сертификат не вызывает вопросов. Но если соединения обрабатывает прокси-сервер nginx, то нужно указать папку, которая будет обрабатываться локально. Вот пример конфига, когда HTTP соединения не используются и перенаправляются на HTTPS версию:

server {
  listen 80;
  server_name example.com;
  location /.well-known/ {
    root /var/www/example.com;
  }
  location / {
    return 301 https://$host$request_uri;
  }
}

Если HTTP версия используется, то вместо return 301 нужно оставить proxy_pass.

Время FTP в OpenMediaVault

В OpenMediaVault при листинге файлов по FTP можно столкнуться с проблемой, что время у файлов отображается в UTC. У ProFTPD есть отдельный how to на эту тему. На отображение даты может влиять опция TimesGMT, но она у OpenMediaVault выставлена в off. Значит ProFTPD не может получить системную временную зону, поэтому нужно в дополнительных опциях указать SetEnv TZ {зона}. Как-то так:

Скриншот настройки FTP
Скриншот настройки FTP

После применения настроек время у файлов будет отображаться в нужной зоне.

Кириллица для FTP-Proxy

Ранее я писал про FTP-Proxy. Работает хорошо, но есть у него одна досадная проблема: он толком не работает с кириллицей. Корень проблемы в том, что этот прокси не знает команд из RFC 2389. Поэтому я сделал маленький патчик, который решает эту проблему. Скачать патч поддержки RFC 2389 для ftp-proxy (1532 downloads) .

Новый альбом [F.R.O.S.T.] — Море Забытых

[F.R.O.S.T.] - Море Забытых (2015)У группы [F.R.O.S.T.], в которой я играю, 11 декабря вышел новый альбом «Море Забытых«. Он готовился два года. В прошлом году был выпущен сингл «По слогам» и снят клип на нее. Сейчас снимаем новый клип на песню «Полшага в неизбежность». Новый клип, как и предыдущий, снимает нам Прохор Коробейников. Послушать можно на Яндекс.Музыке, а скачать по ссылкам на официальном сайте. Поддержать деньгами можно также на Яндекс.Музыке.

Auto Provision на телефоне DHP-150S

Auto Provision нужен для автоматической настройки телефона по сети.
Сам Auto Provision нормально объяснен в официальной статье на сайте D-Link: http://dlink.ru/ru/faq/95/1227.html.
Еще полезен этот документ: http://www.fanvil.com/images/user/2014050802.pdf.
Все красиво, особенно возможность рассылать телефонную книгу. Вот только не работает это по инструкции.
Чтобы данная функция заработала нужно в раздел <AUTOUPDATE CONFIG MODULE> добавить строчку:
Auto Pbook  Url    :tftp://192.168.0.1/contact.xml
При чем важен каждый пробел, между Pbook и Url должно быть ровно два (!) пробела и четыре после Url. Ни в одной инструкции этого не сказано. После добавления недостающего пробела все заработало.

FTP Proxy

Случается так, что за одним внешним IP адресом необходимо разместить несколько Web-серверов. Эта задача без проблем решается средствами nginx. Наш фронтэнд получает HTTP запрос, в котором есть поле Host. В нем содержится домен типа www.example.com. На основании этого поля выбирается uplink для проксирования на бэкэнд, который часто просто виртуальная машина с каким-то веб-приложением.
Часть приложений ты обслуживаешь самостоятельно, другую часть кто-то еще. И часто кто-то еще предпочитает использовать FTP для доступа к файлам сайта. Но что делать если за одним IP нужно разместить несколько FTP-серверов? Читать далее «FTP Proxy»

Совместное использование ASP и Python

Нужда заставила использовать Python в классическом ASP. Заставить все это работать не так сложно, информация по регистрации обработчика достаточно. Например я начинал со статьи на 4Guys. Там же есть информация про особенности работы с перечислениями в объекте Request. Но достаточно быстро всплыло две проблемы, решение которых заняло некоторое время.

  1. Обращение к функциям написанным на VBScript.
  2. Отступы Python’а в блоках с HTML.

Читать далее «Совместное использование ASP и Python»

MySQL INET_NTOA и ODBC

Возникла проблема с функцией INET_NTOA при работе через ODBC. Вместо IP-адреса выводились только знаки вопроса. Через консольный клиент все работало нормально. Возможно в последних версиях такой ошибки нет.

Читать далее «MySQL INET_NTOA и ODBC»