Заметки любителя экспериментов

Позднее Ctrl + ↑

И снова про зеркало NOD32

Обновил страницу зеркала, сделал ее почти полностью на базе bootstrap. Остались кое-какие нюансы, от которых планирую избавиться чуть позже.Если вкратце, то добавить немного интерактивности. Пока что мешает, в основном, таблица, генерируемая скриптом обновления. С одной стороны, скрипт отдает «чистую» таблицу, которую я могу использовать на сайте. С другой я бы и рад заменить некоторый текст в этой таблице, но... При очередной проверке скрипт заменяет измененные файлы на оригинальные и я получаю тот же самый текст, который хотел заменить. CSS в этом деле мне не помощник, буду искать другие пути.
Заодно, пока редактировал страницу, нашел несколько решений, которых мне не хватало для смены темы оформления блога на bootstrap.

Upd. Замена текста решилась одной строкой:

document.body.innerHTML = document.body.innerHTML.replace('ESET NOD32 сервер обновления', 'Информация о последнем обновлении');

Обновление зеркала NOD32

Итак. Старый скрипт, который работал на сервере не один год по какой-то непонятной причине перестал функционировать. Обновления скачиваются, но установленные антивирусы не могут его нормально обработать. По этой причине было решено подыскать скрипту достойную замену. Интересно, что, в итоге, я получил даже более функциональный и интересный скрипт, чем планировал.
Какие у него есть «плюсы»:

  1. Самообновление. При запуске скрипта он сам пытается найти более новую версию себя и обновиться. Можно отключить или настроить только на уведомление;
  2. Само собой приходят оповещения на почту;
  3. Работает со всеми версиями антивирусов. Тоже можно настроить;
  4. Настраиваются списки серверов обновлений ESET;
  5. Поддержка нескольких языков;
  6. Поиск валидных ключей лицензии в интернете;
  7. Ведение журнала работы с ротацией;
  8. Генерирование либо полноценного html-файла с информацией о текущем состоянии обновлений, либо только таблицы для встраивания ее в другой файл.
  9. Кроссплатформенность.

Из «минусов» я бы назвал создание слишком большого дерева файлов (некоторые из них, на мой взгляд, лишние) и немного некрасивой таблицы. Впрочем, последнее достаточно легко исправляется редактированием соответствующего файла.
Сам скрипт брал отсюда

Решение проблемы с подключением принтера

Итак, дано: два ноутбука, подключенный к одной сети WiFi. Первый — старенький Asus, которому, по идее, давно пора на покой, с установленной Windows XP. На втором ноутбуке установлена Windows 10. К последнему подключен принтер, дан общий доступ. Задача стандартная: сделать общую папку и подключить на первый ноутбук принтер второго.
Первая проблема, с которой пришлось столкнуться — XP не видит второй ноутбук. Адреса заданы в одной подсети, рабочая группа одна, нужные настройки в 10 сделаны (сетевое обнаружение и прочее). Так как времени на тот момент было немного, то приходилось все делать урывками. На втором заходе понял, что виновником такого поведения является установленный Kaspersky Internet Security. При отключении сетевого экрана в нем, ноутбук появляется в сети и можно использовать общие папки на нем. Почитал инструкцию, форумы — все говорят, что необходимо и достаточно установить для этой сети уровень «Локальная» или «Доверенная». Ничерта это не сработало. Почитал про похожие проблемы — техподдержка Касперского просит связываться с ними в таких случаях. Ага, есть у меня время, как же. Пока что просто отключил сетевой экран, оставив другие настройки без изменений.
Затем столкнулся с другой проблемой. В ходе настройки сети завел на обоих компьютерах пользователя с одинаковым именем и паролем. Дал ему доступ на печать, несмотря на то, что там была группа «Все». При попытке подключиться к расшаренному принтеру все время получал запрос на ввод логина и пароля. Даже если ввести заведомо верные, доступ к принтеру получить невозможно. Пробовал разных пользователей — результат один. Снова полез в интернет. На форуме «мелкомягких» наткнулся на решение проблемы, а также на объяснение почему так происходит. Дело в том, что Windows XP использует samba версии 1, которой в Windows 10 уже нет по соображениям безопасности. Минимальная версия самбы, которую можно в ней использовать — 2. Казалось бы все, приплыли...
Решение проблемы заключалось в следующем. На компьютере с Windows XP нужно выполнить следующие действия.

  1. Открываем панель управления и заходим в принтеры.
  2. Выбираем «Установить принтер».
  3. В качестве порта подключения выбираем «Создать новый порт» и в выпадающем списке выбираем пункт «Local Port».
  4. Когда система запросит имя нового порта, вводим полный сетевой путь к принтеру. Например, такой: \\Server\HP LaserJet MFP M132 Pro.
  5. Далее выбираем нужный драйвер и завершаем установку принтера.

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

Зеркало NOD32

Старею, наверное, старею. Полдня бился, не мог понять почему при верной конфигурации зеркала, оно не запрашивает пароль на доступ к обновлениям. Плюнул на все, пошел читать Пикабу. Когда он закончился, ушел покурить и тут меня осенило. Такое зачастую бывает, давно уже понял. Если не можешь справиться с какой-то задачей, нужно «забыть» про нее на время, абстрагироваться. Решение придет чуть позже само. Так и в этот раз получилось.
Я же любитель скрывать информацию от посторонних. Это была одна из причин почему я перешел на использование протокола HTTPS. Так как NOD32 не умеет (по крайней мере, 4 и 5 версии) работать через него, то оставил «лазейку» в конфигурации субдомена для него. Страница при этом открывается по HTTPS, а сам антивирус может обновляться через HTTP. Так вот... По привычке все изменения вносил в раздел, предназначенный для страницы, то есть HTTPS, тогда как нужно было это делать в разделе для антивируса. Вернулся в кабинет, скопировал нужные строки в нужный раздел файла конфигурации — и все заработало так, как и задумывалось. Дома еще слегка поправил, чтобы все компьютеры на работе и дома могли обновляться с моего сервера без использования пары логин/пароль. И на этом пока остановился.
Примерно в начале недели, кстати, закончилась лицензия на DrWeb, который устанавливал предыдущий администратор. Что я могу сказать за почти год его использования. Достаточно неудобная вещь это, оказывается. Нет, в тех вопросах, когда нужно установить антивирус на несколько машин, удалить его, запустить проверку и так далее — это безусловно удобно. Открыл страницу администрирования, задал нужное действие и никуда не нужно бегать. Но когда тебе нужно на время отключить антивирус или внести какой-то файл в исключения — тут полный облом. Можно, конечно, покопаться в настройках центра управления и внести исключения для каждой (!!!) станции, но, на мой взгляд это перебор. Нужен более простой вариант. По настройкам центра управления я проходился не один раз и они не показались мне логичными в плане группировки, почти каждый раз приходилось искать где же был нужный параметр. И несколько параноидальный режим работы агентов на компьютерах, которые не отличаются новизной «железа», меня достаточно сильно тяготил. Поэтому я просто ждал, когда же закончится действие лицензии.
Черт с ним, с DrWeb! Пусть он мне одно время и нравился за то, что «кушает» мало ресурсов и обновления у него «весят» мало. Тогда интернет был дорогой (правда в той местности он и до сих пор дорогой) и «деревья были большими». Но, видимо, те времена безвозвратно ушли. Остановимся пока что на NOD32. Итак, установить версию 4 или 5, чтобы иметь возможность задать адрес зеркала обновлений сразу после установки — это не проблема. Проблемы начинаются когда нужно установить версию 6 или выше. Нет, можно, конечно, установить антивирус нужной версии, отключить HIPS, перезагрузиться в безопасный режим, изменить нужный параметр реестра, снова перезагрузиться в нормальный режим, задать адрес зеркала... Слишком много манипуляций, на мой взгляд. Мой преподаватель информатики Раиса Петровна всегда говорила «Программист ДОЛЖЕН быть ленивым!» Видимо, я слишком буквально это понял и запомнил :-) Суть решения состоит в том, что вы запускаете некую программу перед установкой антивируса. Она мониторит нужный параметр и, при его создании или изменении (если антивирус был установлен ранее), меняет значение на нужное. В таком случае мы получаем возможность задать адрес зеркала обновлений без перезагрузок, отключений HIPS и так далее. Вручную все это мной уже обкатывалось на 8 версии антивируса. Я просто открывал редактор реестра, запускал установку антивируса и в нужный момент менял значение параметра. Момент определился методом проб и ошибок — установка драйверов. После завершения установки можно было задавать зеркало самому, без перезагрузки компьютера. Если честно, то я не совсем понимаю почему никто еще не создал подобное решение — оно же лежит на поверхности. Хотя, возможно, я просто плохо искал :-)
В общем, осталось только написать соответствующую программу и запустить ее в тестирование, благо есть куда. И исправлять ошибки по мере их нахождения.

Обновление блога

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

Распознавание лиц в видеонаблюдении

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

Подготовка к зиме

Прошлая зима выдалась холодной, в том смысле, что в квартире было холодно. Разговаривая с соседями, выяснил, что холодно было, как минимум, у всего подъезда. Это было уже после того, как все обнаружили немаленькие переначисления в платежках за коммунальные услуги (от 5 до 15 тысяч рублей). Как говорил Александр Невский «Кто к нам с мечом придет, тот от меча и погибнет». Поэтому было принято решение провести некоторые подготовительные мероприятия со своей стороны, чтобы быть уверенным, что я сделал все, что мог, чтобы дома было тепло.
Для начала промыл батареи отопления в квартире. Снимал по одной, уносил в ванну и там шлангом от душа делал несколько «гидроударов» внутрь батареи — просто резко выкручивал оба крана на полную. Затем переворачивал ее и повторял процедуру, чтобы вычистить не только в нижней, но и в верхней части. Одна из них, которая стояла на кухне, собрала на себя больше всего пыли. Другая, установленная в зале, была самой грязной внутри. Ну и, конечно, заодно помыл их снаружи. Поставил их все на место, закрутил и осталось, с некоторым опасением, ждать наступления отопительного сезона. Опасение здесь заключается в том, что прокладки между трубой и батареей могли повредиться за столько лет и, при включении отопления, у меня просто начнет капать через них.
Следующим шагом будет сборка домашнего термометра, который будет показывать основные параметры внутри квартиры: температура, влажность, давление. И, видимо, придется каждый раз, когда температура упадет ниже нормы, вызывать работников ЖКХ для фиксации нарушения. Заодно, возможно, проверят не дует ли у меня из тех дыр, которые я успел сделать в стене на лоджию.

Свое облако на домашнем сервере

На днях установил себе, ради эксперимента, Nextcloud. Это вроде как свое личное облако. Поначалу были проблемы с загрузкой файлов — более одного мегабайта закачивать не мог. После кучи экспериментов оказалось, что вся проблема в модуле security для apache. Поиск в гугле с соответствующим запросом помог решить этот вопрос. Дальнейшее подключение других модулей проблем никаких не вызвало, кроме нескольких.
На первой стадии это был модуль Sensors Logger. Почитал крайне «тощую» документацию, состоящую из нескольких предложений и все равно ничего не понял. Хотя было бы интересно иметь готовый веб-интерфейс для своих датчиков. Далее на очереди был модуль Collabora Online. Вот здесь я застрял надолго. Все таки интересно, когда ты открываешь файл в облаке и можешь его редактировать. Пусть даже и с ограниченной, по сравнению с программами для обычных компьютеров, функциональностью, но все же! На решение проблем с ним я потратил, можно сказать, три дня — пятницу и все выходные. И только сегодня проблема была решена. Заключалась она в моей тяге к защите информации. В данном случае — в настройках CSP, которые запрещали взаимодействие между моими сайтами. После внесения исправлений все заработало. Ну как заработало... На домашнем компьютере под управлением Linux в браузере Firefox нифига не работает, в то время как на том же компьютере, но в браузере Chrome все нормально. Все нормально работает также на рабочем компьютере под Windows с браузерами Firefox, Internet Explorer и Chrome. Решив эту проблему, вернулся к Sensors Logger. Почитал снова документацию и опять нифига не понял. Отключил модуль, оставлю на потом.
Забавно было подключить другие свои сайты к Nextcloud. Например, этот блог, домен с зеркалом обновлений NOD32 и видеонаблюдением. Все работало, пока я не пришел домой. Снова препоной стал Firefox, в Chrome все нормально. Не хотелось бы, но, может быть, стоит вернуться на Chrome? Надо почитать последние исследования по браузерам. Насколько я помню, Chrome полностью отказался от работы в Windows XP. Кстати, сайты, подключенные к Nextcloud, отображаются как его дочерние окна — вот что мне было интересно.
Не полностью тестировал еще синхронизацию контактов и календарей в этом облаке. Но что мне понравилось — после синхронизации контактов, Nextcloud сам создал события в календаре по дням рождений. Это хорошо, избавляет от необходимости вводить их вручную.
Пытался также подключить модуль для управления проектами на Github. Обломался. Снова подвела крайне скудная информация по модулю. Снова буквально пара строк. Или я уже совсем умственно деградировал?
Если получится создать свое облако, где можно хранить несколько сотен гигабайт информации, может быть, настанет пора отказаться от всяких второстепенных программ? На текущий момент сервер собирает почту со всех моих аккаунтов и складывает все в один ящик. Все данные вроде календарей и контактов можно также агрегировать в одно место. Конечно, никуда не девается вопрос об отказоустойчивости системы и, лучше всего, ее распределенности, но это, как ни странно, тоже вполне решаемый вопрос.

Убираем название сервера Apache

Не совсем, конечно, правильный заголовок, но какой уж есть...
Собственно, сегодня я не планировал этим заниматься, просто так вышло. На сервере установлен Apache версии 2.4. При помощи двух параметров (ServerTokens Prod и ServerSignature Off) можно сократить название сервера до банального Apache. Но убрать само название сервера «нельзя». Для того, чтобы это сделать понадобится установить или включить дополнительный модуль mod_security. У меня он установлен не был, но был в репозитории. Раньше, кстати, когда был установлен Apache версии 2.2, его там не было, поэтому приходилось довольствоваться тем, что получилось. Итак, установил модуль, включил его и... поймал ошибку при запуске сервера. Что за ошибка было поначалу не совсем понятно, поскольку ее текст уходил за пределы экрана. Пришлось вывод команды перенаправить в файл, из которого уже стало понятно, что сервер не может найти файлы конфигурации в подкаталоге модуля. Посмотрев в папке, вообще не нашел таковых. Видимо, не очень-то они и нужны. Поэтому просто закомментировал эти строчки и еще раз перезапустил сервер. На этот раз все прошло штатно, он заработал. «Хорошо», подумал я и добавил в файл конфигурации модуля строку

SecServerSignature " "

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

Общая адресная книга

Этот вопрос давно висел в воздухе, но вспомнили про него только недавно. Задача: сделать общую адресную книгу для сети аптек. Сразу скажу, что в качестве почтового клиента там используется TheBat! Это довольно важный вопрос, ниже опишу почему.
Я перебрал несколько самых разных вариантов серверов, которые работают с carddav. Основной упор был на то, чтобы либо поставить его из репозитория системы, либо он должен быть полностью автономным. Например, написанным на PHP. В итоге мне попался Baikal, который работал по второму варианту. Установка и настройка крайне просты, описывать их смысла нет. Но, как оказалось позднее, есть в настройках один нюанс, из-за которого TheBat! не сможет работать с ним, в то время как остальные программы типа Thunderbird или EssentialPIM прекрасно выполняют синхронизацию. Этот параметр называется «WebDAV authentication type» и предоставляет на выбор два варианта: Digest и Basic. Если вы при установке Baikal выберете Digest, то сможете использовать адресную книгу или календарь такими программами как Thunderbird, но не сможете использовать TheBat!. В случае с Basic TheBat! прекрасно работает, но в этом случае не сможет синхронизироваться Thunderbird. Другие почтовые клиенты я не проверял за их отсутствием.
Допустим, вы установили и настроили Baikal, сейчас вам нужно настроить клиента. Приведу настройки для трех программ: Thunderbird, TheBat! и EssentialPIM.

Thunderbird
Для того, чтобы иметь возможность подключения к серверу carddav, сначала нужно установить SOGo Connector. Для этого идем по этому адресу, выбираем вкладку Frontends и скачиваем последнюю версию SOGo Connector. На этот момент это версия 31.0.5, которая прекрасно работает с Mozilla Thunderbird 45.
Открываем пункт меню Инструменты — Адресная книга. Если вы правильно установили расширение для программы, то у нас появится пункт меню Файл — Создать — Remote address book. Выбираем его. В поле Name вводим любое название книги, в поле URL, соответственно, адрес подключения к адресной книге. Выглядеть он будет примерно так:

http://example.com/card.php/addressbooks/kini/default/

где kini — имя пользователя, созданного нами ранее в Baikal.
Выставляем галочки в окне в соответствии со своими предпочтениями и нажимаем «ОК». Теперь щелкаем правой кнопкой мыши на созданную книгу и выбираем пункт Synchronize. В случае. если вы указали все верно, Thunderbird спросит логин и пароль пользователя, затем начнет синхронизацию. В противном случае, он просто промолчит :-) Пока что это единственная встреченная мной программа, которой все равно какой тип аутентификации вы выбрали в настройках Baikal.

TheBat!
Открываем меню Инструменты — Адресная книга. Или просто нажимаем клавишу F8. В открывшемся окне выбираем пункт меню Файл — Создать — Адресная книга. Задаем ей любое название, в поле «Эта адресная книга» выбираем вариант «Связана с сервером Carddav». Теперь у нас появляется возможность ввести данные для подключения. В поле адрес сервера вводим адрес нужной нам книги, который будет выглядеть так же, как и для Thunderbird. В два поля ниже вводим имя пользователя и пароль соответственно. При необходимости настраиваем периодичность синхронизации адресов. Все, нажимаем кнопку «ОК».
Для проверки работоспособности нажимаем правой кнопкой мыши на созданную нами книгу и выбираем пункт «Синхронизировать». Если все нормально, то в строке состояния мы увидим, что идет процесс синхронизации. В противном случае там ничего не будет. Возможно, что TheBat! будет снова и снова запрашивать логин и пароль пользователя. Это значит, что при установке Baikal, вы выбрали тип аутентификации Digest и вам нужно изменить его на Basic. В журнале веб-сервера при этом будет выдаваться сообщение об ошибке 401 «Not auth».

EssentialPIM
Тут тоже все очень просто. Открываем меню Файл — Синхронизация — Добавить синхронизацию — Carddav. В окне вводим адрес нужной книги, логин и пароль пользователя. Проверяем, что стоит галочка на пункте «Контакты» чуть ниже и нажимаем кнопку «Далее». В поле «Имя синхронизации» вводим любое, задаем с какой периодичностью она будет выполняться, ставим галочку «Синхронизировать сейчас» и жмем кнопку «Завершить».

Ранее Ctrl + ↓