19 заметок с тегом

сервер

DLNA в локальной сети

Меня не покидала мысль, что телевизор поддерживает DLNA, несмотря на то, что на официальном сайте это не указано. Зато было указано на нескольких других. Попытка не пытка...
Есть у меня переделанный роутер D-Link DIR-825 с установленной OpenWrt. Внутрь встроен жесткий диск, на котором располагается собственно система и множество других программ. В частности, клиент Transmission. Это очень удобно — с любого устройства можно поставить торрент на закачку. Плюс к этому он все равно работает круглые сутки, пусть скачивает :-)
Прочитав днем про настройку DLNA на OpenWrt, подключился к роутеру и  установил пакет luci-i18n-minidlna-en, который потянул за собой собственно сервер DLNA и другие необходимые пакеты. Настройка была минимальной: задал каталоги где искать видео- и аудиофайлы, куда писать логи и каталог с кэшем. Ну и, конечно, запустил его. Поначалу нагрузка на роутер сильно возросла: сервер «сожрал» почти 60% процессорного времени и почти половину оперативной памяти. Из всех других пакетов, которые я ставил, ни один столько не забирал себе. Понадеявшись на то, что это только на время поиска файлов, отключился, чтобы вечером заняться этим вопросом уже дома.
Мои надежды оправдались — после завершения поиска нагрузка стала почти нулевой. Но меня уже больше интересовало как телевизор отреагирует (и отреагирует ли вообще?) на наличие DLNA сервера в локальной сети. Но сомнения оказались напрасны — все оказалось намного проще. Телевизор не только обнаружил сервер в сети, но и сразу отобразил его в списках доступных источников. Немного напрягло только то, что приходится «продираться» через кучу каталогов, чтобы найти нужное видео, но тут уже ничего не поделаешь, видимо.
В конечном результате я достиг того, чего хотел — теперь нет необходимости копировать скачанный торрент на флэшку, подключать её к телевизору и только тогда начинать смотреть фильм. Сейчас можно просто открыть роутер на телевизоре, выбрать нужный фильм и начать просмотр. С учетом того, что я не поленился подключить ТВ кабелем к роутеру, «лагов» пока что не наблюдается, скорость приличная. Но тут еще буду экспериментировать.
Днем ранее, кстати, также удалось вывести содержимое экрана смартфона на телевизор, включив на первом режим беспроводного дисплея. Смартфон тут же просканировал и нашел телевизор. Оставалось только подтвердить сопряжение устройств на самом ТВ.

11 января   dlna   openwrt   подключение   роутер   сервер   телевизор

Эксперименты с охраной

Опишу предыдущее состояние системы.

  1. Есть не один десяток охранно-пожарных систем (ОПС) типа «Гранит», которые при открытии дверей на объекте шлют смс оператору на центральном пульте. Тот, в свою очередь, либо вызывает ГБР (группа быстрого реагирования), либо «пропускает» событие. В целях резервирования сообщения с «Гранитов» рассылаются не на один номер телефона, а на несколько: охрана и руководство. По моим прикидкам это, минимум, три номера. Скорее всего, их больше. По расходам это выходит более 8 тысяч в месяц. Сумма небольшая, но, если есть возможность, то почему бы ее не уменьшить? «Плюсом» будет то, что получатели смогут отключить оповещения, что в случае с смс почти невозможно. Из текущих «минусов» — постоянные глюки то с телефоном, то с программой синхронизации смс на компьютере. Раз в несколько дней приходится или перезапускать программу, или перезагружать телефон.
  2. Также существует сервер видеонаблюдения, который в постоянном режиме пишет порядка полусотни камер, расположенных на территории завода и не только. Старый сервер, несмотря на свою мощность, потихоньку выходит из строя. БОльшая часть дисков уже была заменена на более специализированные под данную функцию, но периодические выходы из строя начинают утомлять. Особенно это стало заметно, когда человек, занимающийся видеонаблюдением на заводе, уехал на несколько месяцев в отпуск — накопил за несколько лет работы. Он, конечно, оставил вместо себя человека, но он, во-первых, не всегда находится на территории, а во-вторых, делает всё «на отьебись». Что лично меня, например, не устраивает.

Пару месяцев назад был куплен новый сервер под видеонаблюдение. По тестам он несколько превосходит текущий, но последний построен на базе i7-3770, новый же — на базе Xeon (не помню сейчас какой именно). Новый установил параллельно существующему, был установлен Linux с графической оболочкой и тестовая версия сервера видеонаблюдения. Не обошлось, конечно, без бубна и небольших танцев, но, в итоге, все заработало как нужно. В таком состоянии он и был оставлен до конца недели на тестирование. Лично мне Linux больше импонирует, как более устойчивая и быстрая система, по сравнению с Windows. Конечно, у меня свои требования — по ним он полностью выигрывает.
Я не зря упомянул в начале «Граниты». Перед новым годом у меня, в порядке не совсем трезвых размышлений возникла мысль несколько сократить расходы на смс, путем установки какого-то компьютера, на который они и будут приходить. То есть, на данном шаге мы сокращаем количество сообщений, которые рассылают «Граниты» до одного за раз. Затем компьютер уже посредством интернета дублирует эти сообщения на другие телефоны в любой мессенджер: Telegram, Whatsapp и т. п. Благо, что практически каждый человек нынче пользуется хотя бы одним из них.
Но, увы, так как я был не совсем трезв, то поутру вся выстроенная мной схема «убежала» из головы, остался только принцип построения. Благо, что я в порыве воодушевления позвонил товарищу, который занимается установкой и обслуживанием этих «Гранитов» и примерно рассказал, что я хочу получить. Через день он мне напомнил об этом, заодно и прояснили некоторые моменты.
Суть заключается в том, что на какой-то компьютер устанавливается Asterisk, который и занимается приемом и пересылкой сообщений в мессенджеры. Тем более, что знакомый попросил меня разобраться с этой системой, чтобы в дальнейшем внедрить ее на своем предприятии.
Если сервер видеонаблюдения на Linux покажет свою «состоятельность», то почему бы на него не возложить и функции обработки сообщений от ОПС?
В то же время у себя дома вернулся к старой схеме, только немного ее изменив. Как писал ранее, перед новым годом был куплен регистратор, к которому была подключена камера более высокого качества. Регистратор может рассылать оповещения только на почту и, к тому же, только в текстовом виде, что меня не устраивало. Сообщений на одно событие могло быть несколько, по какой причине он разделял одно событие на несколько — неизвестно. Пришлось снова запустить motion, установленный на сервере, брать поток с регистратора и тогда я смог получить и картинку события и текст. Считаю огромным «плюсом» motion то, что он позволяет при возникновении какого-либо события (обнаружено движение, завершена запись видеофайла, завершено сохранение скриншота и т. п.) запустить на выполнение любой внешний скрипт, в котором уже можно делать все, что угодно. Как бонус, можно будет провести кабель от регистратора на телевизор и в прямом эфире просматривать что творится в коридоре.

10 января   linux   motion   видеонаблюдение   гранит   завод   опс   охрана   сервер

Небольшой потоп в серверной

Так уж получилось, что шкаф с сервером стоит на лестничной площадке, которой никто не пользуется. Шкаф обычный, деревянный. Внутри всего две полки: на одной, нижней, стоит сам сервер, на второй, повыше, стоит ИБП.
Вчера немного задержался на работе — экспериментировал с астериском. Заходит женщина и сообщает, что с этой лестницы бежит вода. Почти бегом направляюсь туда, открываю дверь — бежит водичка. Потихоньку, но бежит. Поднимаюсь на площадку между пролетами, где собственно шкаф и стоит, и вижу, что выдавило трубу и оттуда неспешно вытекает вода. Площадку уже всю затопило, а потом все пошло вниз. Открыл шкаф, проверил, что там все нормально. Прикинул, что вода сюда не должна добраться, немного успокоился. Пока ждал хоть кого-то из техников, вставил трубу обратно, чтобы хотя бы поменьше бежало. Вода почти перестала бежать. Приехал техник, посмотрел, чуть приподнял трубу, оставил на завтра местным сантехникам. Сказал, что ребята починят утром.
Утром приходят «ребята», спрашивают ключ от лестничного пролета. Знают, что он только у меня есть. Сказал им, что там открыто и они могут работать. Только перед уходом пусть разблокируют автоматическую защелку.
Через час или два решают посмотреть как и что они там починили. Дверь закрыта, пришлось возвращаться за ключами. Открыл дверь, поднялся на площадку, осматриваюсь. Нихера они, короче, не сделали! Даже гребаный чопик между трубой и стеной не вставили, чтобы ее еще раз не выдавило. В общем, как обычно, хочешь сделать хорошо — сделай сам. Пока что подыскиваю какой-нибудь подходящий чопик и подумываю собрать туда какой-нибудь датчик: влажности, температуры, протечки воды. Чтобы в случае, если такое повторится, заранее знать об этом. Впереди все-таки достаточно длинные выходные.

20 декабря   потоп   работа   ремонт   сделай сам   сервер   утечка

Изучаем Asterisk

Товарищ попросил разобраться с Asterisk, чтобы в будущем использовать в своей сети. Ну а мне что, все равно скучно, а тут вроде есть чем заняться...
Поставил на свой сервер 11-ю версию и начал экспериментировать с параметрами. Многое было непонятно. Первое, с чего решил начать — позвонить на номер, услышать какой-то ответ и положить трубку. Так сказать, аналог «hello, world!» Но сходу разобраться не получалось — какие-то не совсем непонятные конструкции. Что, куда, зачем? Решил все-таки поискать хоть какую-то документацию. Нашел книжку от издательства, которое, на мой взгляд, всегда выпускало очень качественные пособия и начал читать. Нетерпение заставило пропустить первые несколько частей книги — все равно там были какие-то благодарности, объяснения зачем ставить Asterisk и для чего он нужен, выбор подходящего оборудования и прочее. При все этом утверждалось, что работать он может даже на «железе» роутера. В ссылках, кстати, попадалась инструкция как установить его на роутеры Keenetic.
Читаю дальше. Все очень хорошо разжевано, все становится понятно. Через несколько минут сделал свой первый «hello world», практически буквально: звоню, слышу ответ по русски «Привет, мир!» и в логах вижу, что звонок завершается. Но телефон, с которого я звонил, никаких сигналов завершения разговора не подает и трубку не ложит. Плюс сыпятся непонятные ошибки. Погуглив, понял, что такие ошибки относятся только к тем системам, которые находятся за NAT и источник ошибок надо искать в этом направлении. Перепроверил настройки своего роутера — все нужные порты проброшены, все должно работать. Ладно, отложил это пока в сторону.
Следующим шагом стала настройка разговора между двумя внутренними абонентами. Завел две учетных записи в системе с разными номерами, переделал диалплан, поставил программу на компьютер и настроил свой телефон на работу с SIP-звонками. Звонки проходят нормально, а вот разговор не завершается у вызывающего абонента. Пришлось все-таки разбираться, не нравится мне такой расклад. В общем и целом, пришлось указать Asterisk адреса внутренней и внешней сетей, а также сказать, что он работает за NAT, и все заработало. Звонки идут, разговор завершается нормально.
Сегодня продолжу чтение по мере возможности. Система оказалась достаточно легкой в освоении, чем-то похожей на Postfix по конфигурации.

15 декабря   asterisk   linux   изучение   начало   сервер

Синхронизация данных

Синхронизация. Такое простое понятие, но иногда ее очень сложно настроить...
Уже много лет я использую такую программу — EssentialPIM. Это облегченный вариант MS Outlook, но со своими «плюшками». Такими, например, как встроенная база паролей. Она может быть установлена на компьютер, может храниться на переносном USB-накопителе и работает под управлением Windows. Под Linux в Wine она тоже работает (по крайней мере, у меня), но при этом приходится мириться с некоторыми недостатками в интерфейсе и работе с почтой. Есть клиент для Android. Имеет возможность синхронизации с другими серверами или устройствами, но, увы, их «ассортимент» крайне мал. С некоторыми «плясками с бубном» можно сделать импорт/экспорт данных из другой программы. В общем, как и у любой программы, есть свои недостатки. Порой выводящие из себя.
На текущий момент я прихожу к мысли, что пора бы уже отказаться от использования этой программы в пользу других. Но, скорее, не программ, как таковых, а служб. То есть хранить данные на одном сервере, который бы мог предоставить возможность синхронизации с большинством устройств и программ, чтобы они были доступны мне в любой момент, вне зависимости от того, каким устройством или программой я сейчас пользуюсь. Требования примерно следующие.

Контакты. Самое важное, наверное, в жизни каждого человека. Они должны быть везде: в мобильном телефоне, почтовых клиентах, мессенджерах. Самый простой вариант для меня пока что — использовать сервер CardDav.
Пароли. Второй по важности пункт. Немного поразмыслив, пришел к выводу, что мне хватит, если они будут работать в браузерах и храниться в телефоне. Посмотреть и вбить куда-то пароль я должен в любом месте, при помощи телефона или браузера.
Почта. Тут все более-менее просто. Вся почта в итоге оказывается на моем сервере, откуда я могу ее достать. Исключение пока что составляет почтовый ящик от компании Google. Почему-то не могу заставить себя настроить сбор почты с него. Пока что нахожусь в неспешных поисках почтового клиента для Android, который удовлетворял бы мои потребности.
Задачи, дела. Тут тоже все просто: телефон и почтовый клиент. Снова самый простой способ — сервер CalDav.
Заметки. Не самый важный, но порой очень нужный пункт. Большое количество сервисов предоставляют такой функционал по умолчанию.
Файлы. Тут синхронизация не нужна как таковая, но некоторые файлы было бы удобно всегда иметь под рукой. Например, в том же телефоне. Или на USB-накопителе.

База для каждого из вышеперечисленных пунктов должна быть одна. Иными словами, если брать те же контакты, то я должен видеть один и тот же список что в телефоне, что в почтовом клиенте. Или в любой другой программе. Допускается и даже приветствуется небольшая фильтрация, когда программа будет скрывать контакты, которые она не может использовать. Как, например, совершенно бесполезен для почтового клиента контакт в списке, у которого не указан адрес электронной почты.
Еще одним требованием является возможность быстрого и удобного редактирования данных. Например, при знакомстве с человеком я внес номер его телефона в свой. Позже, придя домой, могу захотеть внести дополнительные данные в контакт уже не через телефон, а на компьютере. Просто потому что так удобней набирать.
Следующим требованием является стандартность протоколов обмена информацией. С контактами и календарем все понятно — есть стандартные и давно работающие протоколы. С заметками и файлами проблем быть не должно, есть даже выбор. А вот с паролями не все так просто. Поиски продолжаются, пока что работает вариант синхронизации с Nextcloud, но он немного меня не устраивает: клиент для Android находится в состоянии «альфа», расширение для Firefox вроде бы работает, но моя «пятая точка» чует какой-то подвох.

Проблема подключения Xabber к Openfire

Ради интереса установил Xabber на телефон. Это «чистый» jabber-клиент, ничего лишнего. Раз уж у меня аська и агент mail.ru подключены через мой сервер, то почему бы мне не снести ранее установленный IM+ с кучей аккаунтов (больше расход трафика, больше сжирает батареи) и не попробовать вышеупомянутый клиент. Сравнить заодно сколько заряда на него будет уходить и сколько трафика. За последний не особо беспокоюсь — тарифные 5 Гб я еще ни разу полностью не использовал. Почему не сменю тариф на более дешевый с меньшим объемом трафика? Да просто потому, что редко, очень редко, но мне может понадобиться скачать, например, большой файл где-то в ебенях у клиента.
Итак, Xabber установлен, данные учетной записи на сервере введены, но подключаться он не хочет — выдает ошибку по таймауту. Перебор некоторых очевидных для меня вариантов результата не принес, поэтому пришлось идти в гугл и спросить «у ясеня». «Ясень» мне выдал один любопытный результат. Для того, чтобы использовать связку Openfire+Xabber необходимо в настройках безопасности выбрать «Old SSL» и в качестве порта указать 5223. После этих настроек Xabber вполне корректно подключается и работает.
После этого сразу выявился один нюанс: несмотря на то, что у меня два подключенных транспорта на сервере (mrim и icq), в списке контактов в группе «Transports» показывается всего один активный. Но в списке контактов присутствуют также клиенты, подключенные через агента mail.ru. Будем считать это маленьким багом и не будем обращать на это внимание.
Если честно, то я бы еще добавил сюда транспорт для whatsapp и telegram, больше никакие «общалки» я не использую, успешно отбиваясь от предложений установить viber и прочие. Отказался бы и от двух вышеперечисленных, но в одной приходится общаться с игроками своей фракции, а в whatsapp порой пишут клиенты. Неужели никому не надоедает этот «зоопарк» мессенджеров? В свое время, несколькими годами ранее, я по той же причине удалил аккаунты из «одноклассников», «вконтакте» и прочих соцсетях, оставив только одну «лазейку» — facebook. Что, надо сказать, совершенно случайно совпало с выходом в эфир небезывестного фильма.

8 ноября   jabber   openfire   ssl   xabber   подключение   проблема   сервер

Добавляем mail.ru в Openfire

«Переклинило» меня на очередном эксперименте — подключаться к icq и mail.ru через транспорты своего jabber-сервера. Разницы для меня никакой, в то же время нужно заводить только одну учетную запись в клиенте. Плюс к этому вся история переписки будет храниться опять же на моем сервере.
Все оказалось и просто и сложно одновременно. Сложность заключалась в том, чтобы найти компонент для использования транспорта. Ссылка на компонент в популярной статье о подключении транспорта оказалась не рабочей, но нашлась на другом ресурсе. Благо, что человек выложил архив с нужными файлами на своем сайте. Настройка заняла буквально несколько минут.
Для начала распаковал архив в домашний каталог. Изменил конфигурацию под свой сервер:

[main]
name = xmpp.kini24.ru
password = пароль_для_регистрации_компонента_на_сервере
# -- optional --
admins = admin@kini24.ru
# -- defaults --
server = 127.0.0.1
disconame = Mail.ru IM
port = 5275
reconnect = on
probe = on
show_version = on
show_os = on
psyco = off
# -- http proxy for avatars (default is none) --
# http_proxy = http://localhost:3128
# -- PID file (default is none) --
# pidfile = /var/run/mrim.pid

[profile]
type = xml
dir = /var/spool/mrim

[logger]
logfile = /var/log/openfire/mrim.log
loglevel = info
# --- logger defaults ---
# timestamp = %%d/%%m/%%y-%%H:%%M:%%S
# xml_formatting = off

Затем открыл веб-интерфейс Openfire и в разделе Настройки сервера — Внешние устройства — Разрешено подключаться (да, вот такой дурацкий перевод) добавил поддомен и пароль для подключения компонента. Без этого при попытке запуска компонента я получал только кучу сообщений типа

31/10/17-10:30:21 Connecting to XMPP server
31/10/17-10:30:22 Connection to server lost

Затем запустил транспорт:

/usr/bin/python mrim.py -c mrim.conf

Вернулся в Openfire, открыл Сеансы — Компонент сеансов, где и увидел что транспорт подключился к серверу. Затем прошел регистрацию в своем клиенте Miranda NG и попробовал написать своему другу. Полученный от него ответ оказал, что все работает нормально. Перед этим пришлось, правда, ответить на кучу запросов авторизации.
Осталось только добавить запуск транспорта в автозагрузку и настройка полностью завершена.

31 октября   jabber   mail.ru   openfire   настройка   подключение   сервер   транспорт

Персональный менеджер

Есть такая замечательная программа как EssentialPIM. Она представляет собой почти аналог Microsoft Outlook, но с некоторыми особенностями. Например, она имеет portable-вариант, что позволяет ее хранить на флэшке и запускать в любом месте. Вторым «плюсом» я считаю модуль хранения паролей — это та фишка, которой мне зверски не хватало в Outlook, чтобы остаться с ним навсегда. Третьим серьезным «плюсом» можно считать более простой интерфейс. Я всегда ратовал за user-friendly. Много лет я использовал эту программу, был вполне ею доволен. Но, как обычно, всему приходит конец.
«Минусы» программы:

  1. Использование таблиц в заметках почти невозможно. Если вы хотите скопировать какую-то таблицу из интернета и добавить ее в заметки в программе, то будьте готовы к тому, что границы таблицы будут невидимыми. И это не изменить. Хоть убейтесь!
  2. Если вам нужно вставить текст без сохранения форматирования используйте комбинацию Ctrl+G. Это, казалось бы, безобидное отклонение вызовет некоторые неудобства. Например, попробуйте использовать ту же комбинацию для вставки текста в письмо через буфер обмена. Вы будете неприятно удивлены результатом.

Про остальное даже не хочется вспоминать и писать. Если есть желание, то почитайте форум программы. Согласен, баги есть у каждой программы. Согласен, что, если разработчик программы — это один человек, а не команда, то решение проблем может затянуться. Но должен сказать, что за много лет использования программы, проблем было решено не так уж и много. В оправдание можно написать, что:
а) написание портативной версии программы, работающей через firebird, требует определенного мастерства;
б) в своем роде программа все-таки является уникальной. Я перебрал много аналогов, но всегда оставался ими недоволен.
А теперь о том, что меня заставило написать этот пост. Сразу оговорюсь, что программу я использую далеко не один год и даже приобрел пожизненную лицензию.

  1. Я хочу полной мобильности и совместимости. Это значит, что я хочу в любой точке планеты получить доступ к своим данным, которые будут доступны только мне. На любом устройстве: компьютере, телефоне, SmartTV, RaspberryPi, ESP8266... Утрирую, конечно, чисто для примера. И защита этих данных стоит далеко не на последнем месте.
  2. Храниться данные должны в одном месте, но с автоматическим резервированием, которое не требует моего участия и ожидания, пока программа сделает копию базы. В Windows бэкап базы на флэшке сейчас занимает более 10 минут, тогда как в Linux — 2 минуты максимум.
  3. Совместимость приводит к тому, что требуется много сервисов, каждый из которых контролирует свой фронт работ. Например, если брать EPIM, то я не могу сделать в ней синхронизацию с каким-нибудь сервером LDAP или CardDAV, который я, например, могу использовать в качестве базы контактов почтового сервиса. Нет, с CardDAV я могу сделать синхронизацию, но сейчас это больше похоже на покупку оборудования компании D-Link — никогда не знаешь, что тебе попадется — или проработает много лет, или будет постоянно глючить. В общем, лотерея.
  4. Забудьте о том, чтобы хранить документы в их «первозданном» виде, который совместим с пакетом MS Office или, хотя бы, LibreOffice. Даже если у вас получится, то скопировать его «наружу» у вас не выйдет. Просто обломайтесь! Хрен вам! Но можете хранить их в качестве вложений в заметку. Тогда да, все будет хорошо. Но... Читайте следующий пункт.
  5. Если вы решите просмотреть файл, прикрепленный к заметке, или, не дай бог, вложенный в письмо, то вас снова ждет сюрприз — он, скорее всего, не откроется. Потому что будет удален ДО того как успеет запуститься программа, ассоциированная с этим типом файла. Единственным выходом здесь является повторная попытка открыть файл, не закрывая уже запущенного приложения.
  6. Исходя из предыдущих пунктов, в список сервисов добавляется еще «облако», которое будет позволять хранить и редактировать документы офисного формата: документы, таблицы, просто текстовые файлы. Например, тот же Nextcloud с подключенным модулем OnlyOffice. Должен сказать, очень неплохая замена стандартному пакету MS Office.

По сути, написать можно многое чего я хотел бы видеть в этой программе. В первую очередь, ей не хватает гибкости в настройках и синхронизации. Да, компания развернула свое облако, которое позволяет проводить синхронизацию с программой. Но платно, разумеется. И была бы цена адекватной...
В тоже время разработчики достаточно консервативны в плане добавления дополнительных функций. В начале использования программы мне было бы очень удобно, например, иметь в списке возможностей также RSS-ридер. Просто потому, что некоторые производители оборудования, с которым я тогда работал, публиковали новости на самом сайте и в формате rss. Но не будешь же каждый день заходить на сайт, чтобы проверить нет ли там чего нового? Работы и без того хватает.
По итогу размышлений, я пришел к выводу, что для удовлетворения всех моих пожеланий мне придется разворачивать свой сервер, подключая нужные службы по мере необходимости. Немного «спасает» меня тот факт, что на одной из предыдущих работ мне пришлось столкнуться с linux и разобраться с ним, чтобы иметь возможность корректно настраивать сервер. Вследствие этого пришлось полностью перейти на него дома. И, в конечном счете, дома появился свой сервер, на котором крутится этот сайт, почта, сервер jabber, Nextcloud, сервер baikal и еще много чего. Остается только одно маленькое «но» — объединить все эти службы :-) Половина работы, в принципе, проделана, остаются нюансы.

OnlyOffice и Nextcloud

Ура! Свершилось! Удалось-таки подружить OnlyOffice и Nextcloud.
Все предыдущие эксперименты с ними заканчивались неудачно. OnlyOffice ни в какую не хотел запускаться. Самой большой проблемой было то, что они располагались на одном сервере, в отличие от настоятельной рекомендации разработчиков располагать Nextcloud и OnlyOffice на разных компьютерах. Переворошил кучу сайтов, попробовал самые разные конфигурации — ни в какую. Не хотел, паршивец, запускаться и все тут.
Сегодня наткнулся в хелпцентре разработчиков на одну статью, в которой было описание как настроить проксирование данных с HTTPS на HTTP на одном сервере. Слегка изменил конфигурацию домена и — вуаля! Имеем полноценный редактор документов в режиме онлайн.

В итоге конфигурация домена для OnlyOffice приобрела такой вид:
<VirtualHost *:443>
    ServerName office.kini24.ru:443
    ServerAdmin admin@kini24.ru

    # SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/office.kini24.ru/fullchain.pem
    SSLCertificateChainFile /etc/letsencrypt/live/office.kini24.ru/chain.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/office.kini24.ru/privkey.pem
    SSLProtocol             all -SSLv2 -SSLv3
    SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
    SSLHonorCipherOrder on

    #Proxysettings
    # Encoded slashes need to be allowed 
    AllowEncodedSlashes On

    # keep the host
    ProxyPreserveHost On
    ProxyRequests Off

    SetEnvIf Host "^(.*)$" THE_HOST=$1
    RequestHeader setifempty X-Forwarded-Proto https
    RequestHeader setifempty X-Forwarded-Host %{THE_HOST}e
    ProxyAddHeaders Off

    ProxyPassMatch (.*)(\/websocket)$ "ws://127.0.0.1/$1$2"
    ProxyPass / http://127.0.0.1:9980/
    ProxyPassReverse / http://127.0.0.1:9980/
</VirtualHost>

SSLCipherSuite можно, конечно, сократить, но это уже мелочи. Все, что ниже настроек SSL, является обязательным для корректной работы редактора. Сам OnlyOffice установлен в виде докера:

# docker run -i -t -d -p 0.0.0.0:9980:80 -p 9443:443 -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice -v /app/onlyoffice/DocumentServer/data:/var/www/vhosts/onlyoffice/Data onlyoffice/documentserver

Почта и вирусы в архивах

Часто вирусные файлы приходят в виде тех же vbs скриптов, упакованных в архив. Я не буду говорить про другие форматы, их не так уж и много, но каждый из них может доставить кучу неприятностей. Особенно если это будет шифровальщик.
Так уж сложилось, что несмотря на все ухищрения, используя стандартные методы, нельзя заставить ClamAV проверять архивы на наличие файлов определенного типа. Он может только попытаться определить заражен ли тот или иной файл в архиве, но со скриптами у него явные проблемы. Скрипт по сути представляет собой обычный текстовый файл, поэтому найти в нем код вируса достаточно проблематично.
Часть этого вопроса удалось решить, заставив postfix отбрасывать письма, в которые вложены файлы из «черного» списка. Но он не может работать с архивами, увы. Это был первый, так сказать этап, который успешно показал себя.
Вторым этапом стал поиск файлов в архивах при помощи ClamAV. Оказывается, можно все-таки заставить его проверять архивы на наличие нужных файлов. Неслучайно копаясь в интернете, наткнулся на эту вот замечательную статью. Использовав информацию из нее, подкинул созданный файл в папку с антивирусными базами ClamAV и перегрузил его. Никаких исправлений в файлы конфигураций вносить не пришлось, он сразу его подхватил. Далее я отправил письмо, полученное утром, и содержащее vbs-скрипт в архиве .7z через этот сервер. Хотел было поймать процесс обработки письма, но не успел. Впрочем, через минуту мне на почту упало сообщение от антивируса, что письмо обработано, найден архив с «вредным» файлом и что письмо было заблокировано. Это было все, чего я добивался.

Virus name: rules_block_7z_vbs.UNOFFICIAL
Sender: *****@*****.ru
Recipient(s): *****@*****.ru

Quarantined to: /var/tmp/virus.yHPWqV

Сам файл с нужными определениями состоит из строк вида

rules_block_exe:CL_TYPE_MAIL:*:\.[Ee][Xx][Ee]$:*:*:*:*:*:*

Здесь самыми интересными для нас являются три поля: имя правила, тип правила и расширение файла. Имя и тип задаются первыми двумя параметрами, разделенными двоеточием. Затем идет имя файла с расширением в виде regexp-строки. Оставшиеся параметры оставляем без изменений. Расширение файла указывается в обоих регистрах.

Ранее Ctrl + ↓