С момента установки хостинг-панели ISP CP Omega не трогал настройки mod_fcgid, через который веб-сервер работал с PHP. Уже сменилось несколько серверов, уже даже избавился от хостинг-панели, а софт уехал на VPS’ку, а конфиги так и кочевали с одного места на другое. Однако на VPS’ке не так много памяти, поэтому решил оптимизировать один из самых ресурсоемких компонентов – PHP.
Несколько полезных проектов из сети
XMPP:
Мод давно известного sendxmpp, написанного на Perl:
- https://github.com/moparisthebest/sendxmpp-py – на Python.
- https://github.com/moparisthebest/sendxmpp-rs – на Rust.
Бегло глянул код – что-то сходу не видно привычных опций для написания в конференцию, например. Возможно, как полная замена оно не пойдет, максимум – для отдельных уведомлений. Но есть – и ладно. И, кстати, помнится мне, вроде был sendxmpp2 (не помню, в насколько законченном состоянии), позволявший не только отправлять, а еще и принимать сообщения – и не могу найти сейчас.
- https://github.com/itspriddle/php-jabber – PHP Jabber Library. Форк того, который используется в Jabber Roster Utility – правда, уже несовместимый с ним (пробовал подменить файлы – не заработало).
- https://github.com/WPPlugins/jabberbenachrichtigung – в ту же степь, нашлось попутно: тоже форк той же библиотеки; адаптация под нотификации о комментариях в WordPress’e.
- https://github.com/horazont/xmpp-echo-bot – XMPP Echo-bot. Просто забавный проект, “jabber-клиент”, выполненный на базе bash+sed.
- https://github.com/msantos/xmppipe – а вот это уже интересный современный вариант замены sendxmpp. Тут даже есть возможность постить картинки через HTTP Upload.
- https://github.com/gjedeer/xmpp-youtube-dl-bot – тоже полезный бот для работы с youtube-dl через jabber.
RSS:
- https://kill-the-newsletter.com – сервис email->rss. Обратных хватает – в том числе в дистрибутиве. А тут такое – еще и с “боевой” реализацией. Опробовал – работает. Можно использовать в качестве каких-нибудь временных адресов или для “получения” нежелательных рекламных рассылок. Код проекта на github. Можно скрестить при необходимости с Jabber RSS-ботом и получить такой себе Email2jabber.
- https://github.com/xl7dev/LastRSS – парсер RSS на PHP. Пример использования.
Привел в порядок сертификаты от Letsencrypt
Небольшая заметка на тему. Давненько уже перешел на использование сертификатов от Letsencrypt. В общем-то, сразу после того, как случайно просрочил сертификат от cacert.org, после чего не смог больше залогиниться у них на сайте – сертификат для логина, понятное дело, больше не подходил, а “обычный” логин выдавал ошибку. Пошел искать альтернативу и успешно ее нашел. По какому-то мануалу создал нужные сертификаты, с тех пор так и пользуюсь – правда, с обновлением только вручную. Пробовал найденные команды для автоматического обновления, получал ошибку, в подробности не вник – так и забросил, а раз в 3 месяца при получении письма от LE просто выполнял несколько команд.
Сейчас подошел очередной срок (письмо я, правда, в этот раз почему-то не получил), а так как в последние дни занимаюсь наведением порядка на сервере – решил подробнее разобраться и с этой темой.
RSS для Youtube
Поднял тут себе инстанс RSS Bridge. Неплохая штука, смог отказаться от rss.app (там в бесплатном варианте только 2 ленты – теперь при необходимости можно будет использовать для чего-то более полезного). К сожалению, из полезных бриджей бридж для Facebook не работает и в целом с ним все грустно.
Но речь не об этом сейчас – просто хотел внести в заметки штатную RSS-ленту для youtube-каналов: https://www.youtube.com/feeds/videos.xml?channel_id=КАНАЛ. Например, https://www.youtube.com/feeds/videos.xml?channel_id=UCH6vXjt-BA7QHl0KnfL-7RQ для канала Simon’s Cat.
Чтобы получить ID канала – жмем “еще” в описании, там в разделе “О канале” ищем внизу “Поделиться каналом”, а в появившемся меню нажимаем “Скопировать идентификатор канала”
Баг в WP?
Только что случайно заметил — посъедались “тире” в текстах. Причем, в том числе в старых постах. При этом при правке они есть. Если используется как дефис (т.е., вплотную к “-” есть какие-то слова) — то все ок. Если поставить 2 “минуса” — то движок преобразовывает их в нормальное тире и нормально его отображает. А вот то, как я привык делать — использовать “минус” в любом случае — так больше не работает и тексты стали выглядеть странно 🙁
Надо будет попробовать перетрусить плагины, возможно, где-то что-то перехватывает нормальное отображение.
Тестовый пример на сейчас:
- минус -> –
- 2 минуса -> —
- минус с обрамлением -> “-“
- минус с буквой до -> a-
- минус с буквой после -> -a
Актуализация wiki на linuxoid.in
Как-то подзабросил я свои wiki-проекты в последние годы – что http://jabberworld.info, что http://linuxoid.in.
21 сценарий для XMPP
Познавательный обзор современных расширений для Jabber’а в различных контекстах применения (с оглядкой на MongooseIM): https://medium.com/@MongooseIM/21-xmpp-use-cases-and-the-best-ways-to-achieve-them-254d42653a35
Quicksy – Conversations для блондинок
Нет, не розовый :)).
В общем, нашел клон Conversations для блондинок – Quicksy. Тот же автор. Аккаунт заводится на quicksy.im, JID вида “номер_телефона@quicksy.im”, есть синхронизация с адресной книгой. Пароль придумывать не надо, авторизация по коду из СМС, дальше пароль автоматом прописывается в клиенте (если что – его можно посмотреть и использовать где-то еще). Восстановление аккаунта делается так же – для номера телефона снова присылается СМС, дальше существующий аккаунт подтягивается в клиент. Пока в голову приходили разные тесты – запросил 2 СМСки. 3-ю не присылает, таймаут в 8 часов.
Только что в голову еще один тест пришел – как обстоит дело с использованием одного аккаунта с нескольких телефонов, где только в одном СИМка? Т.е., не сбросится ли пароль для первого телефона при запросе СМС на втором? Можно будет проверить. Update: проверил, да – пароль перестает быть валидным; на каждую СМС к аккаунту привязывается новый пароль и на старых устройствах он не обновляется, так что многодевайсность – только вручную.
В GP клиент, в отличие от Conversations, бесплатен, что тоже играет на руку новичкам. Для людей со своим аккаунтом на другом сервере – при желании можно внести себя в адресную книгу на quicksy.im (сопоставление “номер – JID”, чтобы у контактов автоматом подтягивался JID) – правда, за скромную разовую плату в 5 евро. И да, использование сервера quicksy.im вроде как бесплатно (в отличие от conversations.im) – как минимум, я не нашел никаких упоминаний об оплате.
Шифрование с OMEMO в Jabber-конференциях
Сегодня наконец-то нашел условия, при которых возможно шифрование в конференции – как минимум, в Conversations и, как я понимаю, в ConverseJS (видел там такую фичу). Помог README на странице Conversations’а: “OMEMO is only available in 1:1 chats and private (members-only, non-anonymous) group chats”. Вот, собственно, 2 опции в скобках и надо было проверить в настройках конференции – “Только для зарегистрированных” и “JID виден всем” – без этого даже значка шифрования не было. В Conversations, похоже, на момент теста баг с отображением опций конференции – показываются только две и в разных конференциях разные, так что преобразовать произвольную конференцию в шифрованную через него не выйдет (но можно с помощью другого клиента). Зато среди вариантов чатов есть “Создать закрытую конференцию”, которая сходу сконфигурирована так, как надо.
При старте переписки Conversations выдает список JID’ов с OMEMO-отпечатками и галочками для включения/выключения нужных участников. Интересно, кстати, что будет, если включить журналирование? Update: протестировал. В чатлогах есть только нешифрованные сообщения, на все шифрованные только добавляется запись “I sent you an OMEMO encrypted message…”. Проверил еще и message archive – шифрованные сообщения нельзя подгрузить с сервера – т.е., все хранение переписки лишь на усмотрение клиентов.
Из минусов – у конференции установлена опция “Сделать комнату постоянной” – т.е., сервер постепенно будет заполняться пустыми временными конференциями.
Snikket, Jabber и все остальные
Забрел как-то случайно (хотя нет, не случайно – интересен был короткий симпатичный домен для Jabber-сервера, плюс у меня уже есть один *.in) на xmpp.in, в ответ увидел веб-интерфейс для логина в некоем Snikket. Так как с XMPP ассоциация только одна, а про Snikket слышал первый раз в жизни – полез гуглить.