vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-09-26 08:35 am
Entry tags:

Про ipv6, ifupdown и systemd-networkd

Тут вчера тестировал отправку почты постфиксом с ноутбука через новый сервер и обнаружил, что ноутбук не получает дефолтного маршрута ipv6. А postfix почему-то упорно ломится по 6-му протоколу, увидев на интерфейсе globally routable ipv6 адрес.

Ну ладно, postfix я отучил от этой привычки, прописав ему inet_protocols=ipv4 (smtp_address_preferable почему-то не помогло).

Но надо же понять, в чем дело. Нагугли что оказывается, еще лет десять назад в ifup была выявлена проблема, что он запрещает на интерфейсе прием routing advertisments. И если прописать в /etc/network/interfaces post-команду, которая вернет это назад, то все начинает работать. (хотя вроде могли бы исправить. Видимо ifupdown пользуются только жуткие консерваторы, которые и ipv6 не любят. А я консерватор непоследовательный - network manager не люблю, в ipv6 люблю, хотя и не умею).

Вот теперь думаю, может быть отказаться от ifupdowm в пользу systemd-networkd? Когда я пас стада контейнеров с разными линуксами я частенько использовал systemd-networkd если не мог сходу справиться с дистрибутиво-специфичным методом настройки сети. Он с одной стороны не настолько overengineered как network manager, а с другой - довольно функционален. И самое главное - он ВЕЗДЕ одинаковый. Во всех современных дистрибутивах. И у него с настройкой на ipv6 все нормально по крайней мере в случае dhcp6. На десктопе я его когда-то сконфигурировал (тоже что-то ifupdown сглючил) и забыл с тех пор.

А способ настройки wifi интерфейсов с отдельным wpa_supplicant там предусмотрен, поэтому переучиваться на интерфейс, отличный от wpa_gui не придется.

Главное added value которое с него вроде бы можно получить - это бесшовный переход с wifi на ethernet и обратно. В ifupdown все же не совсем бесшовно получается.

X-Post to LJ

vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-09-25 08:04 pm
Entry tags:

web xmpp client

Собрался, наконец, доделать последнюю задачу из области сетапа нового сервера - web-based xmpp-клиент. Теперь у меня есть не только webmail, но и web-jabber. (надо сказать что установить на предыдущий сервер element я собирался гораздо дольше).

После отбрасывания из списка того что есть на xmpp.org совершенно галимой проприетарщины, осталось три кандидата

jsxc, xmpp-web и converse.js.

Первый хорош тем, что присутствует в дистрибутиве в виде пакета libjs-jsxc. Поэтому начал я с него. Но к сожалению, документацию в пакет положить забыли, а по документации на сайте как-то тяжело разобраться с тем, что уже сделал мейнтейнер пакета, а что надо сделать пользователю. Ну и вообще он хочет устаревший интерфейс к xmpp-серверу. Работает только через bosh, а через websockets не умеет.

Второй у меня сходу не заработал (возможно, потому что был недоконфигурирован то ли модуль websocket в prosody, то ли прокси в апаче). Показывал черную страничку и никаких сообщений об ошибке.

Вот converse.js удалось достаточно просто настроить. К тому же она, в отличие от xmpp-web не требует отдельного виртуального хоста и инструкция по установке не предполагает что файлы скриптов должны принадлежать пользователю www-data (c моей точки зрения файлы скриптов, которые может писать процесс веб-сервера это нехорошо).

Converse.js умеет много чего, в частности OMEMO. А вот аудио-видео звонков, увы, не умеет.

X-Post to LJ

vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-09-23 08:38 pm
Entry tags:

Про чтение почты в vim - 2

Когда-то давно я тестировал почтовый клиент iris для vim. Оно меня тогда совершенно не впечатлило. Впрочем, прошло два с половиной года. Если столько времени назад чего-то в мире opensource не было, стоит поискать еще раз.

Поискал и нашел himalaya-vim. Это как-то имеет по-моему более вменяемый дизайн - базируется на командно-строчном почтовом клиенте, который запускает в фоне. Это по-моему гораздо логичнее, чем писать всю обработку протоколов и форматов на встроенном скриптовом языке, даже если у него в стандартной библиотеке есть соответствующие модули (а это уже требует недефолтного языка. iris был на питоне).

Сам по себе почтовый клиент, на который это опирается himalaya, тоже штука довольно интересная. Написан на Rust, поддержиивает спеециальный микроязычок разметки для описания мультипарт-MIME сообщений. Но как-то он мне не глянулся.

Я подумал, а может поискать командно-строчный почтовый клиент поприличние и самому вокруг него вимовский плагин накрутить?

Правда, от современной почты требуется как минимум поддердка smtp и imap, а также аттачментов (у himalaya все это есть).

Первый попавшийся в дистрибутиве клиент оказался s-nail. Вроде он все что надо умеет. И даже такая замечательная фишка как поддержка .netrc там есть, чтобы пароли не хранить по куче конфигурационных файлов. Единственное что мне в нем не понравилось, так это то, что он не умеет сообщать о приходе новой почты, ежели запущен и ждет команды от пользователя. Традиционный mailx, который без аттачментов сетевых протоколов и юникода, по-моему это умел. Но тут вообще у автора отношение к imap какое-то странное. Он, судя по документации даже выпилить его хотел, но пользователи очень попросили так не делать.

Зато автор в курсе что такое line-buffered stdio. И это оченьу упростит управление его программой из другой программы. например vim. В общем, возможно, правильный подход - написатьт плагин вокрут s-nail, потом для этого плагина написать свой mailx, с поддержкой IDLE и прочих imap-вкусностей (например на базе c-client от alpine).

Кстати, на сайте у автора есть еще его собственные реализации грейлистинга и dkim для postfix. Посмотреть на них что ли. Все равно собирался dkim у себя поднимать.

vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-09-23 01:37 pm

Сколько режимов есть в vim

До недавнего времени я думал, что четыре. Оказывается, их семь

  • Normal - это когда, нажимая клавиши с буквами ты перемещаешься по тексту или меняешь его.
  • Visual - это когда ты выделяешь фрагмент для последующей операции (там есть три подрежима)
  • Insert - это когда набираемые буковки непосредственно попадают в текст (есть подрежим Replace)
  • Сommand - это когда то что ты набираешь, оказывается в командной строке внизу экрана и потом может быть выполнено в качестве команды.

Оказывается, еще выделяются

  • Select mode - это когда перемещание выделяет текст, а набор текста - заменяет текущее выделение.
  • Operator-pending mode - это когда ты набрал какую-то комнаду, меняющую текст, и vim теперь ждет команды перемещннения как указания что именно менять.
  • Terminal mode - в терминальном буфере все не так, как в нормальных.

Каждому из этих режимов соответствует своя верссяи команды map для назначения клавиатурных комбинаций. Правда для vmap работает не только в режиме Visual, но и в режиме Select, если мы хотим назначить команду, которая бы работала только в первом, нужно использовать xmap. Еще есть команда lmap, которая работает во всех местах где вводимые буквы являются текстом - в режиме вставки, в командной строке и в строке поиска.

vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-09-23 10:42 am
Entry tags:

Маленькие открытия

Изучаю как в vim-е работать c Language Server Protocol с помощью плагина ale

Попутно выяснил, что, оказыватеся, кроме общего для всего редактора quickfix list, по которому перемещеются с помощью команд :cn, :cp, :cc, :cfirst, :cbefore и :cafter есть аналогичный location list, локальный для окна. И у него те же команды, но с префиксом не c, а l. А заполняют его командами lgrep, lmake и lfile.

А еще есть команда :cq N вызывающая выход из редактора без сохранения с кодом завершения N. Говорят, очень полезна для прерывания гитовых коммитов. Кто git commit из командной строки зовет. Хотя лучшие вимоводы в моем лице рекомендут fugitive.

А еще оказывается, если в командной строке vim набрать vim это будет почти то же самое. что grep, только с другим синтаксисом и с учетом некоторых переменных заданных с помощью :set. То есть полное имя команды - vimgrep.

А еще оказывается, что quickfix листы образуют стэк. Можно сделать новый посиск, новую компиляцию, а потом вернуться к результатом предыдущего с помощью команды :colder (кстати :lolder сокращается почему-то до :lol)

vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-09-23 09:34 am

Сектоведческое

Солипсизм - это такая маргинальная секта, религия. священной книгой которой является рассказ Федора Кнорре "Соленый пёс".

vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-09-22 11:38 am

Кошка Машка

Тут моя мама завела себе котенка. Зовут Машка или Муська или Манька.

мяу

Кошечка из выводка. родившегося в соседней деревне.

История почти детективная. Взять эту кошечку мама хотела еще в августе. Но в день отъезда кошка-мама взяла и спрятала своих котят, почуяла что-то. Через три недели мы приехали проводить в саду всякие осенние работы и кошечку таки отловили.

Но, говорят после этого остальных котят кошка куда-то увела и спрятала.

vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-09-22 07:24 am

Доменное

Продлил домен spacians.net до 2030 года. Благо у сестры, которая постоянно разъезжает по работе по всяким иным странам есть и американская карточка (с американским биллинг-адресом), и американская симкарта. Понадобилось и то и другое.

vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-09-19 08:46 am

Про файрволлы

Вот задумался над тем что применить на новой vds-ке для управления файрволлом.

Раньше у меня был iptables-persistent, но сколько можно, iptables уже лет пять как deprecated.

В Debian умолчательным способом считается юнит nftables, который просто загружает вручную напсанный конфиг. Есть еще nftables-persistent, который работает так же как iptables-persistent т.е. сохраняет конфигурацию, а потом ее загружает, но средствами nftables.

Есть ufw, который использует bsd-шный синтаксис, а есть firewalld, который имеет крайне развесистую схему конфигурации. Насколько я понял firewalld, это попытка сделать из linux андроид, т.е. передать контроль над ситуацией от пользователя/сисадмина авторам приложений. Впрочем как я почитал ченджлоги systemd 258, идея сделать из линукса андроид потихоньку овладевает массами.

Мне, естественно, концепция firewalld не понравилась. Тем более что в имеющемся наборе конфигов как-то путаница между приложениями и протоколами. Например для imap, imaps, и managesieve - разные конфиги. Хотя сервис один и тот же.

Вот теперь думаю, nftables или nftables-persistent. Первый заставит выучить новый синтаксис (вообще-то давно пора), со вторым можно по-моему договориться, используя синатксис iptables (через iptables-nft).

X-Post to LJ

vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-09-17 09:11 pm

Переезд равен половине пожара

Начал понемногу переносить содержимое wagner.pp.ru на новый сервер. Процесс идет медленно, поскольку за время существования сервера у меня там столько барахла скопилось, что прям разгребательство авгиенвых конюшен получается.

Тем более, что я сначала себе заказал виртуалку с Debian 13, а потом стал понемногу туда переносить конфиги и данные с бэкапа виртуалки, работавшей под debian 12, причепм многие из конфигов и скриптов там не редактировались со времен Debian 10, если не 9.

Конфигурацию dovecot пришлось полностью с нуля переписывать. Там синтаксис поменяли во многих местах по мелочи, но несовместимо. Теперь, правда, конфиг начинается с указания версии языка конфигурации. Так что можно будет долго не трогать.

В спамассасине auto_whitelist заменили на auto_welcomelist.

Обнаружил, что у меня скрипт для менеджмента почтовых юзеров и паролей в базе sqlite до сих пор написан на втором питоне. Быстренько поправил и довел до 10 баллов в pylint. В принципе там 2to3 бы справился, но мне было проще руками поправить, чем разбираться с использвоанием 2to3 - скрипт там близок к тривиальному.

Вот вебовский вариант смены паролей надо будет переделать. Я все защищенные области в http пересадил на ту же sqlite-вскую базу, которую использует dovecot.

Матрицу решил выкинуть. Равно как и openid-провайдера. Черт те сколько лет никуда по openid не логинился. А матрица оказалась абсолютно бессмысленной в качестве канала посылки сообщений от роботов на смартфон - пока клиент не откроешь, он не видит что что-то приходило. Чтобы видел, нужно к мобильному клиенту какой-то сервис нотификации прикрутить - либо Google Play, либо ntfy, либо jabber. Так уж проще jabber и использовать без нахлобучек в виде матрицы. Благо веб-клиентов к нему теперь море - он через вебсокеты работать научился, и вебклиенты есть даже в дистрибутиве. И dovecot sasl prosody умеет из коробки. В отличие от матрицы с ее стремлением перелезть на oauth. Но, увы, старых конфигов prosody у меня в бэкапах не сохранилось. Отротировались уже. Придется тоже с нуля делать. Посмотрим, научились ли за последние 5 лет jabber-клиенты аудио-видео звонкам. В начале ковида оно работало как-то плохо.