Yellow Leaf
41 subscribers
243 photos
118 links
Всякое около IT-шное.

Связь с автором: @moose_kazan
Download Telegram
Немного на злобу дня

Тут в чате родного жилого массива стали обсуждать то что 281-ФЗ запрещает рекламировать. Не удержался и высказался по этому поводу:

Самый лучший VPN будут раздавать 20-го сентября на избирательных участках. По паспорту. Называется "Бюллетень". Если в нём ручкой проставить правильные настройки и опустить в урну то возможно все необходимые сервисы со временем заработают.


К сожалению все остальные варианты так или иначе со временем перестанут работать...
👍3😁1
WebDAV-сервер на коленке

Понадобился мне WebDAV-сервер и я опять столкнулся с тем что выбор готовых решений довольно ограничен. В итоге нагуглил dufs (название меня позабавило) и он мне понравился. Для себя увидел только один недостаток: отсутствие маппинга пользователей. Т.е. вот под каким uid/gid запустил - так под ним и будет читать/писать. Но в моих сценариях это не критично.

Запустил в контейнере. Если кому вдруг надо то вот мой docker-compose.yml:

services:
dufs:
image: sigoden/dufs
restart: always
ports:
- 5000:5000
environment:
DUFS_CONFIG: "/cfg/config.yaml"
user: "1999:1999"
volumes:
- "./logs:/logs"
- "./cfg:/cfg"
- "/volume1/Films:/data/Films"



И config.yaml:

serve-path: '/data'
bind: 0.0.0.0
port: 5000
path-prefix: /
hidden:
- 'tmp'
- '*.log'
- '*.lock'
- '.*'
auth:
- 'moose:[CENSORED]@/:rw'
allow-all: false
allow-upload: true
allow-delete: true
allow-search: true
allow-symlink: true
allow-archive: false
allow-hash: false
enable-cors: false
render-index: true
render-try-index: true
render-spa: true
log-format: '$remote_addr "$request" $status $http_user_agent'
log-file: /logs/dufs.log
compress: low


Можно ещё добавить SSL, но в моём случае за это отвечает отдельный фронтенд.
👍2🔥1
htop и zswap

Обнаружил что начиная с версии 3.3 htop поддерживает zswap и отображает сжатые данные отдельным цветом (по умолчанию - серым). Интересно видеть как файл подкачки свободен, хотя до сжатия данных там почти на весь файл.
👍1
Простой мониторинг

Есть у меня потребность мониторить доступность всяких личных железок. Буквально проверять доступность по ICMP. В ряде случаев проверять TCP-порт. Долго использовал Zabbix, но для моих задач он казался слишком громоздким.

В итоге нашёл Uptime Kuma. Проект открытый. Написан преимущественно на JS. Можно скачать пакет для популярных дистрибутивов или docker-compose.yml. Я выбрал последнее.

Сам сервис умеет проверять доступность TCP-порта, отправлять HTTP/HTTPS-запросы и проверять ответы, и многое другое. Оповещения о доступности/недоступности так же может отправлять самыми разными способами. Есть даже поддержка нашего национального мессенджера. Я для себя настроил отправку сообщений в VK Messenger. Хосты можно объединять в группы, назначать им тэги.

Вобщем если требуется что-то простое то стоит попробовать.
👍1🔥1
Exclave Proxy client

Захотелось мне странного: аналог ocproxy на телефон. Морально приготовился писать своё решение, но в недрах F-Droid нашёл Exclave Proxy client. Это ровно то что нужно: умеет подключаться к различным серверам, поддерживая множество протоколов.

При этом умеет работать в режиме "Только SOCKS5-прокси", без перенаправления всего трафика устройства в туннель. Порт можно указать в настройках.

Т.е. можно подключаться к офисному серверу через какой-нибудь wireguard, указывать в настройках браузера локальный SOCKS5-прокси и ходить на внутренние ресурсы браузером, а весь остальной трафик будет ходить напрямую. При этом приложения, которые почему-то просят выключить VPN, не будут этого делать, так как он по сути не включен.
👍1
IPv6 и будущее

Прошла новость что Китай к 2030-му году планирует 38% своего трафика гнать через IPv6. Беглый поиск в интернет дал такие результаты: в целом по миру 40-60% трафика идёт через IPv6. При этом в РФ на IPv6 приходится по разным оценкам от 10 до 15%.

Насколько я знаю в РФ из крупных провайдеров "из коробки" IPv6-адреса предоставляет только МТС и только на мобильном интернете. Протокол teredo в РФ не работает: соединение устанавливается, но трафик не ходит.

Впервые с IPv6-only сервисами я столкнулся ещё лет десять назад, когда наш сервис не мог доставить письмо пользователю из-за того что его сервер работал только по IPv6. С тех пор время от времени сталкиваюсь с подобным и в последнее время всё чаще.

Это я к чему: если смотреть в будущее то возможен такой сценарий: весь мир переходит на IPv6, а отдельная страна остаётся на IPv4 и оказывается в изоляции, формально имея доступ к глобальному интернету, но не имея доступа к IPv6-only ресурсам. И даже всякие блокировки не нужны.

Очень хочется чтобы этот сценарий не случился.
Некоторые нюансы внедрения IPv6

Иногда кажется что IPv6 внедрить легко: получаем адреса, поднимаем у себя на сервере и добавляем AAAA-записи в DNS. Но это только начало.

В процессе внедрения IPv6 вылезает много всякого интересного. Например задача: рейт-лимиты в API с привязкой к IP-адресу. Для IPv4 тут проблем особых нет (ну кроме боли у тех кто сидит через провайдерский NAT). В случае IPv6 как минимум следует учитывать что:

- Teredo: не просто позволяет получить IPv6-адрес, но и на каждый IPv4-адрес предоставляет подсеть /96, которую разумно считать за один адрес.
- 6to4: так же позволяет получить IPv6-адрес, предоставляет сеть /48 на каждый IPv4. И здесь так же разумно будет при расчёте лимитов считать всю подсеть как один адрес.

Хранение в БД:

- В MySQL функция INET_ATON не поддерживает IPv6, вместо неё можно использовать INET6_ATON, которая поддерживает и IPv4 и IPv6, но возвращает уже не INT, а VARBINARY(16).
- В PostrgreSQL к счастью есть тип inet, созданный как раз для хранения сетевых адресов

Ну и отдельный привет тем кто хранит адреса как строки. У этих людей свой путь)
🤓1
Полезная утилита: zswap-cli

При использовании zswap рано или поздно становится интересно оценить эффективность работы zswap. При использовании debugfs какую-то информацию можно получить командой:

grep -r . /sys/kernel/debug/zswap


Но как минимум не хватает информации о степени сжатия.

Вобщем поиск в интернет привёл меня к zswap-cli. В репозиториях Debian и AltLinux не нашёл, но сборка из исходников не вызвала каких либо проблем. Утилита позволяет настраивать zswap и смотреть статистику. В том числе о степени сжатия, реальном размере не сжатых данных в пуле и т.д.

Ссылка на github: https://github.com/xvitaly/zswap-cli
👍1
Qt Book Reader 0.1.1

Опубликовал небольшое обновление своего пет-проекта. Это баг-фикс релиз. Из изменений могу отметить:

* Поправлены баги с оглавлением для некоторых FB2 и EPUB-файлов
* Небольшие исправления в диалоге настроек
* Корректное отображение версии приложения при сборке из пакетов
* Исправлено несколько утечек памяти
* Добавлена поддержка Qt 6.10+
* По просьбам пользователей с Ubuntu Forum изображения выравниваются по центру
* Небольшие оптимизации

Ссылки:
* github: https://github.com/moose-kazan/qbr
* PPA для LTS-версий Ubuntu: https://launchpad.net/~bulvinkl/+archive/ubuntu/ppa
👍4
Книги для взрослых

Подарили мне сертификат в один книжный магазин. В числе моих приобретений есть книга по React.JS. Я хоть и неизлечимый бэкендщик, но давно хочу попробовать себя в разработке фронтенда.

Сильно повеселила метка "18+" на книге. Что этим хочет сказать цензор? Что разработка фронтенда полна наркомании? Или что фронтенд - удел содомитов? Или что React.JS это не православно и вообще бездуховно?

Теряюсь в догадках...
😁1
451 градус по Фаренгейту

Обнаружил что если зайти из РФ на сайт каталога свободного ПО для Android F-Droid и попробовать открыть страницу приложения Outline или Tinc Mesh VPN то страница не открывается с ошибкой 451.

При желании можно найти и другие подобные страницы в этом каталоге. Но в мобильном приложении F-Droid такой цензуры нет и всё можно вполне успешно скачать и установить.

В 21-м веке книги не жгут. Пожароопасно и не экологично. Поэтому теперь просто блокируют доступ к ним.
🔥1😁1👀1
Интересная идея

Понадобилось мне тут для себя написать небольшую утилиту. Надо было запустить демона с правами суперпользователя и время от времени посылать ему команды от простого пользователя.

Сначала стал думать над разделением инструмента на два бинарника: собственно демон и клиент, и организовывать взаимодействие между ними через D-Bus. Но моя лень очень настаивала что я не хочу разбираться с D-Bus и вообще делать его зависимостью.

В итоге переспав с задачей я пришёл к очень хорошему на мой взгляд решению: прикрутить веб-интерфейс к демону и слать команды через него. Не надо тянуть D-Bus, не надо писать отдельный UI. Сначала я подумал "чего ж никто раньше так не делал?", а потом вспомнил CUPS, который управляется через веб-интерфейс.

Вобщем на мой взгляд хорошая идея. Запомню и буду использовать.
👍2🔥1
Ещё один облом с ReactOS

Попробовал использовать ReactOS для сборки кода на Go. Формально Go поддерживает кросс-компиляцию, но только чистый Go. А при использовании CGO возникают проблемы. Решения есть, но самое простое это не использовать кросс-компиляцию и сразу собирать на целевой платформе.

Попробовал вместо Windows использовать ReactOS для сборки и споткнулся на том что go.exe не запускается из-за отсутствия функции WerSetFlags в kernel32.dll. Что не удивительно, так как эта функция появилась в Windows Vista, а ReactOS всё-таки пока нацелена на совместимость с XP/2003.

Но я не отчаиваюсь и надеюсь что смогу найти практическое применение для ReactOS.
😭1👀1
Простой почтовый сервер

Уже год использую бесплатную версию Axigen Mail Server. Бесплатная лицензия даётся на год и её можно так же бесплатно продлевать каждый год. Из ограничений бесплатной версии:

* До десяти доменов (но можно добавлять алиасы)
* До десяти аккаунтов (алиасы - без ограничений)
* Ограничена интеграция с внешними сервисами (LDAP, Outlook)

Запустил на NAS в докере. Для фильтрации спама добавил spamassassin, которого в купе со встроенным в Axigen грейлистингом вполне хватает. Есть ещё и мобильное приложение. По итогам почти года использования могу сказать что для персонального использования очень хорошо. Рекомендую.
❤‍🔥2
Снова отпуск

Приехал в Пермь. Ближайшие две недели буду тут. Ехал из Казани через Елабугу, Можгу, Агрыз, Воткинск, Очёр и Нытву. Интересно было посмотреть как работает связь вдоль дороги. Тест довольно простой: в дороге слушаем музыку через стриминговый сервис.

В Татарстане всё было идеально. В Удмуртии до Воткинска тоже. А после Воткинска связь кончилась. Совсем. И сразу у всех операторов. И дальше время от времени появлялась, но до самого Краснокамска ехал практически в тишине. В Краснокамске связь снова появилась и в Перми работает нормально.

Ну и не могу обойти стороной вопрос топлива: чем дальше от Казани - тем хуже. Но в целом ДТ и 92-й найти проблемы нет. 95-й пришлось поискать. Под Очёром заправился по 92.29р/л. И в целом в Пермском крае цена где-то на этом уровне. Понял что 75р/л в Казани это очень хорошая цена)
💯1
Linux и WiFi Captive Portal

Есть RFC 8910 описывающий механизм Captive Portal. Идея довольно простая: при получении адреса по DHCP в ответе прилетает дополнительный параметр с типом 114 (DHCP Option 114), содержащий URL страницы авторизации. Пользователь должен открыть этот URL в браузере и авторизоваться (способ авторизации в спецификации не описан, так что всё ограничивается полётом фантазии владельца точки доступа и локальным законодательством).

И вот в Linux до сих пор это дело не работает как надо. Казалось бы чего проще: в том же Network Manager при виде 114-й опции пихни этот URL куда-нибудь в D-Bus, а на другом конце поставь обработчик, который при получении URL запустит x-www-browser, передав ему этот URL. Но похоже что не просто.

На Arch Linux Wiki есть целый раздел с костылями для Captive Portal. Я уже подумываю для себя написать свой ещё один. ИМХО вот такие мелочи как раз и стоят на пути Linux к десктопам.
😭1
Белкарт Pay с российским номером телефона

Имея на руках карту Белкарт было интересно попробовать Белкарт Pay. Однако оказалось что это не так просто. Для добавления карты приложению нужен интернет, причём экспериментально установлено что именно с IP-адресом РБ. Т.е. если беларус уедет в другую страну и попробует добавить карточку в Белкарт Pay его ждёт небольшое разочарование.

Следующим шагом необходимо подтвердить добавление карты введя код из СМС. И если белорусский IP я ещё смог обеспечить, то вот на этом шаге у меня возникли проблемы: в банке указан мой российский номер телефона и именно на него должно отправиться СМС. Но оно не приходит.

В итоге списался с поддержкой Белкарт. Ответили буквально в течении десяти минут:

При добавлении карточки в Белкарт Pay номер телефона для досылки кода подтверждения должен быть оператора-резидента РБ. То есть в системе банка должен быть указан телефон белорусского мобильного оператора.


Почему нельзя при добавлении карты это сообщить - вопрос открытый. А ещё на обратной стороне белкарт есть логотип карты МИР. Насколько я понимаю белкарт буквально клон системы мир. Теперь мой пытливый ум хочет попробовать добавить карту мир в Мир Pay с не российского IP-адреса и сравнить ощущения.
Про сертификат минцифры

В последнее время многие российские ресурсы столкнулся с отзывом SSL-сертификатов от западных УЦ и стали переходить на сертификат от российского минцифры. Некоторые мои коллеги уже столкнулись с тем нужное им API теперь использует этот сертификат и встал вопрос что с этим делать.

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

curl --cacert ca/russian_trusted_root_ca_pem.crt https://alfabank.ru


Для PHP будет как-то так:

$ch = curl_init();
curl_setopt_array(
$ch,
[
CURLOPT_URL => "https://alfabank.ru/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_VERBOSE => false,
CURLOPT_CAINFO => './ca/russian_trusted_root_ca_pem.crt',
]
);

$result = curl_exec($ch);


Тут явно указывается какой сертификат использовать для проверкии подлинности. Из минусов: если вдруг на стороне API начнут использовать сертификат от другого УЦ то код перестанет работать. Но думаю что в данной ситуации просто надо быть готовым к такому развитию событий.
😢1
Внешний вид XTerm

Какой бы эмулятор терминала не выбрал пользователь полностью избежать встреч с XTerm всё равно не получается. Рано или поздно какое-то ПО запустит что-то в окне XTerm. И вот вид этого окна меня всегда огорчал.

Наконец-то нашёл время и исправил это. Добавил в ~/.Xresources строки:

XTerm*faceName: Monospace
XTerm*faceSize: 10
XTerm*background: #1e1e1e
XTerm*foreground: #c0c0c0
XTerm*color0: #000000
XTerm*color1: #990000
XTerm*color2: #00a600
XTerm*color3: #999900
XTerm*color4: #0000b2
XTerm*color5: #b200b2
XTerm*color6: #00a6b2
XTerm*color7: #bfbfbf
XTerm*color8: #666666
XTerm*color9: #ff0000
XTerm*color10: #00ff00
XTerm*color11: #ffff00
XTerm*color12: #0000ff
XTerm*color13: #ff00ff
XTerm*color14: #00ffff
XTerm*color15: #ffffff


И дальше выполнил:

xrdb -merge ~/.Xresources


Стало гораздо симпатичнее.
🔥2
XTerm: было/стало

Каюсь, не догадался в предыдущем посте приложить скриншот XTerm с настройками по умолчанию. Исправляюсь.

Чтобы сделать скриншот понадобилось откатить настройки. Не сразу разобрался как это сделать. Теперь знаю что так:

xrdb -remove ~/.Xresources


С настройками по умолчанию в XTerm очень мелкий шрифт (на 2K экране с 198ppi), Сам шрифт тоже без сглаживания. Ну и черные буквы на белом фоне (субъективно) быстро утомляют глаза.

Если использовать TrueType-шрифт, подобрать его размер, и переопределить цвета на более приятные, глаза (опять же субъективно) устают гораздо меньше.
❤1