vitus_wagner: My photo 2005 (Default)
Удиввительно, насколько народ разучился разрабатывать кроссплатформные приложения.
Все эти современные инструменты continuous integration и прочие средства контейнеризации совершенно не рассчитаны на то, что нужно работать с несколькими десятками РАЗНЫХ операционных систем (даже разных дистрибутивов Linux), разных архитектур и так далее.

Ну и читать люди тоже разучились. Спрашиваешь БОЛЕЕ НИЗКОУРОВНЕВОЕ средство, чем reprepro, предлагают заметно более высокоуровенвый aptly.

В общем идея понятна, если хочешь менеджить pool репозиторий так как тебе удобно - берешь выдачу apt-ftparchive pacvkages и самостоятельно раскидывааель по архитектурам и дистрибутивам.
vitus_wagner: My photo 2005 (Default)
Вот такую странную картину я тут наблюдаю:

Debian testing, gcc 8.2.0. Имеется вот такой C-шный код:
static void log (int elevel,  const char *fmt, va_list args)
{
 bool write_to_file, write_to_stderr, write_somewhere_else;
 va_list error_args, std_args;
.... здесь вычисляем куда надо писать
if (write_to_file && write_to_stderr) 
  va_copy(std_args,args);

.... некоторое количество кода, заведомо не меняющего флагов write_to
if (write_to_file) {
   vfprintf(f,fmt, args);
}
if (write_to_stderr) {
   if (write_to_file) {
      vfprintf(stderr, fmt, std_args);
   } else {
      vfprintf(stderr,fmt,args);
   }
   ffush(stderr);
}


В 64-битной системе компилятор кушает этот код без вопросов. В 32-битной ругается

error: ‘std_args’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
vfprintf(stderr, fmt, std_args);

Нет, я понимаю, что макросы для va_* могут быть реализованы по разному в зависимости от архитектуры процессора, но не до такой же степени...
vitus_wagner: My photo 2005 (Default)
$ aptitude why libssh-gcrypt-4
i   vlc-plugin-base Depends libavformat57 (>= 7:3.2.11)
i A libavformat57   Depends libssh-gcrypt-4 (>= 0.4.2) 
vitus_wagner: My photo 2005 (Default)
Народ, а что нынче принято использовать для анализа логов веб-сервера?
Хочется узнать - по каким ссылкам приходят на конкретную страницу (вернее, конкретный видеоролик), из каких мест приходят и т.д.

apt-cache search web log analyzer


показывает старые добрые analog и webalizer, а также какие-то непонятные мне awffull (привлекательный тем, что он развитие хорошо знакомого webalizer) и goaccess, который вообще крут тем что он имеет не-вебовский интерфейс.

Может быть я еще что-то пропустил?

(понятно, что раз эта задача у меня за 15 лет встала впервые, меня интересует решение, которое можно освоить за 15 минут, и соответственно, софт котрый ставится из дистрибутива, а не нужно старательно собирать, доставляя толпу модулей с cpan или pypi)
vitus_wagner: My photo 2005 (Default)
По совету [livejournal.com profile] sergio остановился для синхронизации тех данных, которые не умеют синхронизироваться сами (баз keepass, всякой персональной информации, хранящейся в зашифрованных текстовых файлах) на syncthing.

Штука это довольно забавная. Управляется через встроенный вебинтерфейс, который автоматически взлетает на localhost:8384. В дебиановский пакет входят юнит-файлы для systemd, а скриптов для альтернативных инит-систем нет. Пришлось для ноутбука, где системд нет, самому писать.

Подниматься оно желает по экземпляру на пользователя. (собственно юнит-файлы так прописаны). Как организовать многпользователькую систему, не занимая на каждого юзера аж по два порта - один для собственно синхронизации, второй для веб-интерфейса, непонятно.

По умолчанию заниматеся поисками peer-ов само, идентифицируя и авторизуя их по фингерпринтам сертификатов. Но можно настроить явно указанный IP для пира. Поэтому схему "звезда" с центральным сервером на VDS у хостинг-провайдера реализовать можно. Только настраивать сервер у провайдера приходится посредством проброса порта по ssh, поскольку в links веб-интерфейс syncthing не живет.

К андроидному syncthing обязательно нужно добавить вот этот ShoppingList - ибо крайне удобно. На десктопе пишешь список покупок в обычном текстовом файле, а потом ходишь по магазину с телефоном и галочки расставляешь.
vitus_wagner: My photo 2005 (Default)
Несколько лет назад я уполз с mutt-а на графический почтовый клиент claws-mail.

Оно такое все из себя gui-шное, умеет поддерживать работу сразу с несколькими аккаунтами, имеет плагины для кучи полезных вещей, включая скажем, vcalendar или managesieve

Плагины для RSS я ставил но как-то они не пошли. А вот разделять адресную книгу и календарь между всеми машинами, где я запускаю этот клиент, а также с телефоном, мне хочется.

Поэтому я поставил на имеющемся у меня сервере radicale, а на всех рабочих машинках настроил vdirsyncer, чтобы иметь доступ к тому что телефон синхронизирует с помощью DAVDroid.
Везде в описаниях vdirsyncer предлагается для локальных хранилищ использвоать type="filesystem".
Claws же почему-то предполагает что все контакты или все события календаря лежат в одном файле.
Но для этого у vdirsyncer-а есть type="singlefile"

С адресной книгой на самом деле все очень просто. Claws-mail позволяет добавить в качестве дополнительной (read-only) адресной книги файл с vcard-ами. Это core функциональность

Соответственно, берем carddav сервер, и синхронизируемся с ним с локальным хранилищем типа singlefile. Поскольку оно все равно readonly, то никаких проблем нет.

Если очень хочется иметь интерфейс для редактирования контактов, ставим khard, и прописываем его базу контактов (по одному файлу на vcard) в конфиг vdirsyncer-а как еще одно локальное хранилище с типом filesystem и синхронизируемся не только с сервером, но и с ним.

Впрочем, надо выкроить пару часов и дописать свой скриптик который редактирует контакты с type="singlefile". Поскольку khard не умеет работать с фотографиями и с текстами с encoding=quoted-printable.

C календарем интереснее. Во-первых, стандарты тем хороши, что их много, и можно выбирать. Поэтому vcalendar плагин к claws поддерживает стандарт webcal, но не поддерживает caldav.

Казалось бы все плохо, но, если указать url со схемой file, указывающую на синхронизированный vdirsyncer-ом календарь с типом singlefile, claws его прекрасно читает. Правда, не пишет.
Что уже гораздо хуже, чем с контактами, потому что основной способ создания событий в рабочем календаре - это импорт аттачмента типа vcalendar из письма. И то, что не получается распространить по машинам созданное таким образом событие - неудобно.

Правда, claws позволяет экспортировать календарь в ics файл, но события из него надо еще как-то смерджить с синхронизируемым календарем. Оно ж не проверит что оно эти события уже экспортировало.

Возможно, дешевле разбирать экспортируемый файл на отдельные события по UID-ам и потом синхронизировать как type="filesystem".
vitus_wagner: My photo 2005 (Default)
https://www.eff.org/deeplinks/2018/06/announcing-starttls-everywhere-securing-hop-hop-email-delivery

EFF анонсировала инициативу starttls everywhere. В смысле "давайте зашифруем весь SMTP-траффик".

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


  • команда starttls поддерживается OK
  • список шифрсьютов современный OK
  • сертификат соответствует доменному имени тут у вас фигня какая-то
  • сертификат выписан известным нам authority фигня какая-то

А получаю "security of your mailbox is not so great" и все.
Блин, теперь, похоже все-таки придется на постфикс поставить сертификат от lets encrypt. А то начнут тут всякие проверять сертификаты у SMTP, у меня почта ходить перестанет. Хотя с моей точки зрения мой CA безопаснее lets'encrypt и starttls я там держу в основном ради своего почтового пароля. Интересно, а можно в postfix прикрутить разные сертификаты на 25 и 465 порты? Ну или хотя бы на 25 и 587?

P.S. А ssllabs говорит, что у меня категорически не хватает CAA записей в DNS.
vitus_wagner: My photo 2005 (Default)
Тут в комментах высказались на тему хранения ряда сенситивных файлов на дропбоксе.
Поигравшись со специализированными вариантами DAV - CardDav и Caldav я понял, что эта идея не совсем бессмыслена.

Автоматическая куска файловой системы по идее позволяет решить те задачи, которые остались после того как я разобрался с контактами и календарями. (у меня есть поистине чудесное описание того, как синхронизировать адресную книгу и календарь claws mail с carddav и caldav с помощью vdirsyncer-а, но поля этого поста слишком малы, чтобы его здесь записать).

Но вот что-то подходящего решения я пока не вижу.

Что требуется:


Имеется

  1. n компьютеров с Debian и m телефонов с Android. Большую часть времени они - с серыми IP-адресами.
  2. k файлов, приложения для работы с которыми есть для всех ОС из предыдущего пункта. Файлы слишком бинарные чтобы имело смысл использовать распределенную VCS.
  3. один сервер, доступность которого достаточна для того чтобы через него синхронизироваться, а на нем apache с mod_proxy и mod_dav, rsyncd и т.д. и т.п.
  4. один юзер который в непредсказуемой последовательности пользуется n+m устройствами из первого пункта, но может соблюдать некоторую дисциплину с тем чтобы не открывать файл на одном устройстве, когда на другом открыт тот же файл и в него внесены несохраненные изменения.


Задача:


  1. обеспечить, чтобы когда юзер на некотором устройстве, имеющем доступ к интернету, открывает файл, у него была самая свежая версия.
  2. обеспечить, чтобы если юзер вносит изменения в файл, эти изменения попали на сервер как только так сразу
  3. сделать так, чтобы если изменения не попали на сервер из-за проблем с connectivity, юзер об этом знал и имел ручку, чтобы пнуть синхронизацию когда по его мнению эти проблемы будут решены.


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

Рассмотренные варианты:


  • lsyncd - все хорошо с серверной частью. Не требует на сервере ничего, кроме rsync, который там и так есть. Но, насколько я понял, не умеет следить за изменениями на сервере и тащить их обратно. Версии для Android вроде бы нет, в доступных термуксовских репозитриях - нет.
  • syncthing - есть в дистрибутиве, есть на f-droid е есть в termux-овских репозиториях.
    Но какая-то она немножко слишком децентрализованная. За эту децентрализацию придется платить. Причем скорее всего траффиком. А его (в случае сотовых сетей) жалко.


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

Вчера вот я написал скрипт который по webdav заливает на сервер фотографии и дергает методом POST веб-форму, которая запускает генерацию тамбнейлов и html-ных индексов. Термукс все таки великая вещь.
vitus_wagner: My photo 2005 (Default)
Наконец плюс-минус решил проблему синхронизации записной книжки, настроив на сервере radicale. Понятно, что на используемом мной сейчас древнем телефоне, DAVDroid не живет, как и Termux и многое другое. Но это проблема временная. Аванс уже пришел, и на той неделе, я, пожалуй, выкрою денег на телефон посовременнее. НУ и на этом
CardDavSync-Free как-то работает.

Вопрос в другом - на компьютерах я использую vdirsyncer. Он умеет хранить контакты в двух видах - в виде кучи файлов по одному контакту в файле (storage=filesystem) и в виде одного большого файла со списком контактов.

Вот я и задумался над тем, надо ли поддерживать оба (благо два локальных хранилища оно умеет синхронизировать) или не стоит. Хранение в виде директории с файликом на контакт хорошо тем, что в дистрибутиве есть khard который позволяет довольно удобно это дело менеджить - редактировать, добавлять, удалять записи. Но, к сожалению, как это ни странно для изделия, автор которого имеет адрес в домене .de, не поддерживает записи с ENCODING=QUOTED-PRINTABLE. (а у меня таких было ползаписной книжки. Пришлось быстренько наколеночный скрипт писать чтобы это пофиксить).

У меня есть свой скриптик, который как раз все способы кодирвоания понмает, и работает с single file но он умеет только искать. (и подставлять в mutt. khard, впрочем тоже умеет c mutt работать).

С другой стороны, почтовый клиент claws-mail умеет искать в single файле. но не умеет в директории.

С третей khard как-то хреново работает с контактами, содержащими фотографию.

Вот и думаю, стоит ли держать оба хранилища или оставить только синглфайловое, а свой скриптик дописать/переписать, чтобы редактировать умел?

Собственно, вся эта фигня с синхронизацией затеяна ради того, что заводить контакт часто приходится, когда под рукой кроме телефона ничего нет. И надо чтобы этот контакт тут же засинхронизировался на нормальные компы. А наоборот, чистить адресную книгу от лишних контактов и вообще ее всячески менеджить удобнее, естественно, на десктопе.
vitus_wagner: My photo 2005 (Default)
Стал ставить в контейнер новую (в смысле неотрелизенную) убунту. Ломается.
Поставил debootstrap из backports - все равно ломается. Со странной диагностикой
mkstemps: no such file or directory

Поставил bionic beaver-а и сделал ему dist-upgrade, зайдя через lxc-attach. - на том же самом месте. Но тут-то у меня живая рабочая система, можно покопаться. Докопался. Оказывается /bin/tempfile из пакета debianutils в качестве временной директории использует /tmp/user/`id -u`. И этот tempfile используется в postinst-скрипте пакета base-passwd

А при таких странных ситуациях, как debootstrap и lxc-attach, естетсвенно полноценнной сессии у юзера с uid 0 нету, и директорию /tmp/user/0 никто не создал. Стоило ее создать, dist-upgrade прошел. Что забавно, когда я создал нормального юзера и зашел в контейнер по ssh, оно почему-то стало создавать временные файлы ноормально. Откуда lxc-attach взял это странное значение переменных TMP и TMPDIR? Из хост-системы пробросил?

Кстати, интересно что последние три релиза убунты сохраняют при переводе на русский то свойство, что зверь и прилагательное к нему - на одну букву -

artful aardwark - творческий трубкозуб
bionic beaver - бионический бобер
cosmic cuttlefish - космическая каракатица

Upd Повозился еще, и выяснил что дебутсрап каракатицы не проходит, если в chroot-е недоступна файловая система /proc. Потому что оно тянет пакет rsyslog, а тот создает свои директории посредством systemd-tmpfiles (если таковую найдет, а он ее находит). Вот куда писать багрепорт - на дебиановсий debootstrap (что он туда /proc не монтирует) или на убунтовский rsyslog (что без смонтированной /proc пакет не конфигурируется)?
vitus_wagner: My photo 2005 (Default)
Ненавижу локале-специфичную сортировку. Теперь для того, чтобы объединить в кучку несколько файлов, так чтобы файл 04.something.txt оказался перед 041.otherthing.txt нужно писать

cat `LC_COLLATE=C ls *.txt` 

вместо
 cat *.txt

Arm64

May. 19th, 2018 08:01 pm
vitus_wagner: My photo 2005 (Default)
root@rpi3:~# uname -a
Linux rpi3 4.14.0-3-arm64 #1 SMP Debian 4.14.12-2 (2018-01-06) aarch64 GNU/Linux
root@rpi3:~# dpkg --print-architecture
arm64
root@rpi3:~# grep processor /proc/cpuinfo
processor	: 0
processor	: 1
processor	: 2
processor	: 3
root@rpi3:~# free
              total        used        free      shared  buff/cache   available
Mem:         940664       94216      517728        3564      328720      769532
Swap:             0           0           0
root@rpi3:~# cat /etc/debian_version 
buster/sid


Вот такая штуковина у меня (вернее у Postgres Professional) теперь есть.

Первый 64-битный ARM с 64-битным linux-ом, который я держал в руках. Debian buster.
Есть, кстати Wifi, который надо бы настроить, чтобы не напрягать Степу коммутированием еще одног эзернета на мой стол. Будет в билдфарме второй 64-битный не интел.

Инструкции по настройке в Debian Wiki, а сама машинка куплена на pleer.ru в комплекте с корпусом и SD-картой (блок питания там же, но отдельной позицией в заказе).

upd Собираем постгрес (REL_10_STABLE) 3.5 минуты на configure, 20 минут на make и 1.75 на make contrib. Естественно с -j4.
vitus_wagner: My photo 2005 (Default)
https://www.theinquirer.net/inquirer/news/3024623/google-ditches-ubuntu-for-debian-from-internal-engineering-environment

Пишут, что Google собирается переходить с Ubuntu на Debian, причем не просто переходить, а активно лезть в разработку. Мало нам было секты свидетелей Поттеринга, теперь еще Great Evil придет, с его привычкой превращать в дерьмо все, чего коснется.
vitus_wagner: My photo 2005 (Default)
Вот!

Конечно, строил в основном Вартан. Теперь бы еще в Федору спонсоров найти.
vitus_wagner: My photo 2005 (Default)
Извел, наконец, неработоспособную ikiwiki на wiki.wagner.pp.ru. Теперь там осталась только статическая первая страница, которая послает в разные места, куда конвертирован тот же контент.

Вики по Ясмине и Галактической федерации. теперь будут лежать в fossil-е, что позволит мне из деревни или еще какого места с хреновой коннективити работать с локальными копиями.

Теперь, бы, правда, надо эти две вики отдизайнить. В галактическую можно тупо скопировать дизайн со spacians.net. (да и вообще перекинуть этот репозиторий на этот домен).

А вот для Ясмины нужно какой-нибудь красивый CSS нарисовать.

Ежели кому нужен скрипт для конвертирования ikiwiki в fossil wiki, могу выложить. Он у меня, правда, плагинов поддерживает раз-два и обчелся. Только линки на википедию и картинки.
vitus_wagner: My photo 2005 (Default)
И все-таки при апгрейде дебиана на сервере у меня кое-что сломалось. А именно - ikiwiki. При попытке редактирования через web-интерфейс говорит

cannot decode string with wide characters.

Где-то случилось двойное преобразование из байтов в юникод.

Вот теперь думаю что делать дальше - либо ставить какой-нибудь moinmoin, либо завести еще парочку fossil-проектов (их у меня там уже десяток), и импортировать в них соответственно вики по Ясмине и по галактической федерации. Благо на спейсианском вики технология уже опробована (не сказать, чтоб отработана).

Видимо, так и надо поступить. Тогда можно будет с этими wiki offline работать.
vitus_wagner: My photo 2005 (Default)
Тут, посколькуо в Debian stable пришла openssl 1.1, из которой ГОСТ-ы из дистрибутива выкинули, [personal profile] beldmit сподвиг меня собрать gost-engine в отдельный пакет

Поэтому теперь на github в организации gost-engine завелись два новых репозитория debpkg и rpm где содержится все необходимое чтобы собрать deb- или rpm- пакеты с gost-engine для систем, где в комплекте идет openssl 1.1.0

Пробовалость пока только под Debian stretch и Fedora 26. Ну и всякие мелочи типа аккуратного заполнения файла copyright еще предстоят.
vitus_wagner: My photo 2005 (Default)
После апгрейда debian-а почему-то вдруг всякие разные програмы вплоть до fossil стали при попытке открыть из них URL запускать ублюдство от гугля (плевать что в данном случае опенсурсное - все равно ублюдское и с проксями работать не умеет по-человечески), вместо нормального файрфокса. Хотя у меня вроде альтернатива x-www-browser была выставлена правильно.

Расследование показало, что большая часть современных программ, когда им надо открыть URL-ку запускают не Debian-specific x-www-browser, а "универсальный" и "стандартный" xdg-open. Который настройку альтернатив игнорирует и пользуется своей базой настроек.

Как выяснилось, искать нужную настройку нужно не в xdg-settings, а в xdg-mime.
Если у этой программы спросить а кто у нас умолчательный обработчик mime-типа
x-scheme-handler/http, то тут-то и выяснится, откуда берется chromium. И в этом месте как раз и можно поменять то что вызывается по xdg-open. Кстати, обработчики для http и https нужно менять отдельно. А то http-урл-ки будут открываться правильно, а https в том, что в голову freedesktop.org взбрело.

Заодно с помощью xdg-mime можно оторвать привычку файлменеджеров открывать постскрипт гимпом, а не evince.

Насколько я понимаю, работа через командно-строчную утилиту xdg-mime - универсальна и десктопно-независима (хотя xdg-open делает попытки выбирать браузер в зависимости от десктопа).

Кроме того xdg-mime имеет полезную функцию query filetype. Она позволяет узнать, какому именно типу mime нужно поменять дефлотный обработчик, если у вас типичным не тем открывается конкретный файл. К сожалению, на url-ку это не срабатывает.

P.S. А вообще в современных линуксах сильно не хватает профайла all users. Поскольку изменения, связанные с эволюцией софта приходится вносить куда чаще, чем заводятся новые пользователи, и вносить именно пользовательскую конфигурацию. Все же локальное "all users" данной машины и /usr/share, находящееся под управлением пакетного менеджера, это сильно разные вещи. Надо покопаться, может быть xdg умеет что-то из /usr/local читать.
vitus_wagner: My photo 2005 (Default)
Выяснилось, что stretch я похвалить немного поторопился.

Как оказалось он молча, без вопросов апгрейдит keepass 0.43 на keepass 2.0.3.

Засада в том, что keepass <2 и keepass 2.x это программы у которых нет ничего общего, кроме названия и назначения.

Например, несовместим формат файлов. То есть keepass 2.x умеет один раз симпортировать базу от 1.x но записать обратно - уже никак.

А я держу keepass в качестве менеджера паролей ровно потому что он позволяет копировать базу как файл между разными устройствами с разными операционными системами. Поэтому ситуация когда на одном устройстве один формат, на другом другой - меня категорически не устраивает.

Поставил пока пакеты из jessie на hold. И думаю - стоит переходить на keepass 2.x
или не стоит?

Что-то мне все андроидные клиенты, совместимые с keepass2 вызывают подозрение:

У keepass2android интерфейс переписан с java на mono. Это для андроид-то!
KeePassMob содержит в себе код работы с сетью (dropbox), что по-моему для пассворд-менеджера под андроид категорически недопустимо. Поскольку уж если в этой дырявой системе есть способ защититься от доступа в сеть, то именно пассворд-менеджер обязан это сделать.

Поэтому я думаю о том, что может быть стоит еще какой password-manager поискать.

Требования:

1. Наличие клиентов для linux и android
2. Приемлемая usability для android, у которого жутко неудобная работа с clipboard
3. Приемлемая юзабилити под X11.
4. Возможность копирования базы паролей с устройства на устройство как файла по ЛЮБОМУ
протоколу передачи файлов scp, obex, smb.
5. Наличие в базе хотя бы пары дополнительных колонок кроме имя и пароль.
В качестве бонусов:
5. Команд-лайн интерфейс под linux.
6. Возможность хранения базы паролей в version control.
vitus_wagner: My photo 2005 (Default)
Тут уже несколько дней назад сделал на ноутбуке dist-upgrade на stretch.

Это был самый беспроблемный dist-upgrade со времен пожалуй что, hamm ( а раньше я просто Debian-ом не пользовался).

То есть даже не пришлось перезапускать apt-get dist-upgrade несколько раз. Все с одного раза отконфигурировалось.

Правда, все хитрое и сложное у меня версии не изменило - ядро из бэкпортов, либреофис из бэкпортов и т.д.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

April 2019

S M T W T F S
  1 2 3 456
789 10 11 12 13
14 15 16 17181920
21222324252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 19th, 2019 01:10 pm
Powered by Dreamwidth Studios