Closed OmlineEditor closed 1 year ago
Это надо брать доку на сервер и смотреть, что означает это "Communication with remote domains is not enabled", запрос к серверу 100% правильный
Где может быть ошибка? почему при одинаковых программах и одинаковых настройках не получается нормально отправить файл, притом что до этого все работало
Это надо брать доку на сервер и смотреть, что означает это "Communication with remote domains is not enabled"
stanza_router.lua
function core_route_stanza(origin, stanza)
local to_host = jid_host(stanza.attr.to);
local from_host = jid_host(stanza.attr.from);
-- Auto-detect origin if not specified
origin = origin or hosts[from_host];
if not origin then return false; end
if hosts[to_host] then
-- old stanza routing code removed
core_post_stanza(origin, stanza);
else
local host_session = hosts[from_host];
if not host_session then
log("error", "No hosts[from_host] (please report): %s", stanza);
else
local xmlns = stanza.attr.xmlns;
stanza.attr.xmlns = nil;
local routed = host_session.events.fire_event("route/remote", {
origin = origin, stanza = stanza, from_host = from_host, to_host = to_host });
stanza.attr.xmlns = xmlns; -- reset
if not routed then
log("debug", "Could not route stanza to remote");
if stanza.attr.type == "error" or (stanza.name == "iq" and stanza.attr.type == "result") then return; end
core_route_stanza(host_session, st.error_reply(stanza, "cancel", "not-allowed",
"Communication with remote domains is not enabled"));
end
end
end
end
Хорошо, а как это поможет решить проблему? Напомню еще раз. До обновления все работало в обе стороны и файлы перемещались, потом после обновления в одну из стороно файлы не перемещаются. Ничего кроме обновления программы не менялось. Вы по прежнему считаете что это не глюк программы и тикет должен быть закрыт?
До этого все работало в старой версии.
В какой? Если есть возможность откатиться (предыдущие версии измененных файлов лежат в /Plugin Updates/Backups), то проверьте на предыдущей версии. Если проблема останется, то что-то изменилось на сервере (вероятно, в базе для конкретной учётки). Если проблема исчезнет, то это наш косяк.
Я могу это проверить толко после всех майских праздников, нужно найти бэкап и откатиться. Как все проверю я напишу
Проверка завершилась. Итог такой проблема есть. Из бэкапа достала версию 0.95.13.1 build 23808 и там все работает как нужно без проблем. В новой версии 0.96.2 build 25337 - не работает. Ничего не менялось, только обновилась программа. Прошу открыть тикет и решить проблему. Со своей стороны чем смогу тем помогу.
upd. Из настроек замети ла что пропал пункт: Разрешить передачу файлов только внутри протока Может это из-за этого пункта?
@OmlineEditor давай тогда сделаем два лога, один на старой версии, один на новой, где есть ошибка, и сравним
давай тогда сделаем два лога, один на старой версии, один на новой, где есть ошибка, и сравним
Первый лог с ошибкой в самом первом сообщении, а вот в файле второй вариант при передачи файла когда все идет как нужно miranda_send_ok.txt
При тосовании и замене разных версий случилась проблема: Я не могу получать сообщения, миранда мне пишет что нельзя расшифровать сообщения: << Undecryptable incomming OMEMO message >>
Это теперь со всеми утсройствами, другие люди мне не могут писать, я не вижу что они написали мне. Другие люди пишут мне с других приложений Blabber например и с Миранды пишут, результат один и тот же. Вот лог что дает миранда: miranda_msg_bug.txt
В ошибках вижу только:
Jabber OMEMO: error -1005 at session_cipher_decrypt_signal_message
Как починить чат и вернуть OMEMO?
UPD: Начала закрывать сесии с другими устроствами через меню, и вообще все сообщения пропали и я не вижу ничего что пишут мне, и другие люди не видят что написала я. Вот лог с пустыми сообщениями: miranda_msg_bug_2.txt
Круго написано: empty message, returning
а вот в файле второй вариант при передачи файла когда все идет как нужно
Так выключи HTTP Upload - и будет счастье. Это делается в Services - Discovery, rclick на Http Upload, отожми Use for uploads.
С омемой лучше поубивать все сессии через другой клиент, а также выключить его поддержку в Миранде и поубивать через редактор базы все ключи, связанные с омемо из учётки. Чтобы гарантированно зачистить все хвосты.
Поддержка омемо всё ещё очень экспериментальная и у меня оно чаще не работает, чем работает. Когда-то я пытался это тестировать и закончилось точно так же: от меня сообщения не уходили, пока я не вычистил всё это из базы и не зарёкся больше не трогать омемо.
Первый лог с ошибкой в самом первом сообщении
На вашем сервере сломан https://xmpp.org/extensions/xep-0363.html Сервер заявляет его поддержку, но он не работает. Начиная с 0.96.2, Миранда, видя наличие HTTP File Upload, автоматически начинает использовать его вместо того, чтобы по-старинке кидать файлы напрямую. На старой версии поддержка XEP-0363 по умолчанию выключена.
https://wiki.miranda-ng.org/index.php?title=Plugin:Jabber/ru#/media/File:XEP-0363_enable.png
XEP-0363 на сервере нет и небыло. вся передача идет внутри протокола. В этом и ошибка что миранда не понимает что не нужно использовать HTTP File Upload, а нужно внутри протокола передавать данные
XEP-0363 на сервере нет
Тогда нужно разбираться, почему сервер прислал сведения об upload.oracle Не враги же это подбросили в нетлог, а от сервера пришло Разбираться с этим нужно на сервере
Тогда нужно разбираться, почему сервер прислал сведения об upload.oracle
Сервер этого не может присылать, миранда это похоже закэшировала и это сидит в ее базе данных. upload.oracle - это наш рабочий сервер который был давным давно и сейчас его нет, в настройках сервера нет информации об этом сервере, но она была давным давно (Админ проверил подтвердил что там сейчас нет таких строк).
Как можно в ручном режиме удалить или поменять информацию в миранде чтобы она не использовала HTTP File Upload?
Как вариант, удалить всё, связанное с кэшем из профиля Миранды. Также, выполнить редактором базы поиск по базе.
HTTP File Upload включается и отключается в настройках дискавери, как описано в вики.
После реализации https://github.com/miranda-ng/miranda-ng/issues/3538 эта настройка переедет в настройки протокола.
Сервер этого не может присылать
Как же не может, если в нетворк логе это есть. На самом деле, как показало расследование, есть скрытая настройка, которая блокирует использование HTTP Upload. Надо зайти в dbeditor и добавить в Settings -> JABBER_1 настройку UseHttpUpload BYTE = 0
Как же не может, если в нетворк логе это есть.
Эта настройка сидит почему-то в базе данных миранды, если экспортировать все настройки и поискать по "upload.oracle" то там есть такие строки:
[JABBER_1]
HttpUpload=uupload.oracle
и вот:
[UserOnline]
LastEvent=d0
OldStatus=w40071
CONTACT: upload.oracle *(JABBER_1)*<jid>*{upload.oracle}*
[CList]
NotOnList=b1
[JABBER_2]
IsTransport=b1
Nick=uupload.oracle
jid=uupload.oracle
Иными словами на сервере этого реально нет но в мираде почему-то осталось.
Надо зайти в dbeditor и добавить в Settings -> JABBER_1 настройку UseHttpUpload BYTE = 0
Заработало, стали передаваться файлы, починили! Можно добавить эту настройку в саму миранду? Например такую: "Запретить использовать Http Upload и передавать файлы только внутри протокола" - Да/нет
https://github.com/miranda-ng/miranda-ng/issues/3513#issuecomment-1575642051
После реализации https://github.com/miranda-ng/miranda-ng/issues/3538 эта настройка переедет в настройки протокола.
Это она и будет.
Перенести не вышло, приделали костыль.
Если у юзера хоть раз включался HTTP File Upload (автоматически или руками через дискавери), то в настройках протокола у него появится опция "Enable HTTP Upload (XEP-0363)", которая под капотом меняет как раз тот самый ключ UseHttpUpload в базе.
В целом, можно лишь посоветовать администраторам серверов не отключать единожды включённый HTTP File Upload и не менять адрес ноды, отвечающей за него. Иначе, у клиентов возникают такие вот чудеса, а XEP-0363 не предусматривает никакого нормального способа сладить с этим.
Может сделать костыль так: ключ UseHttpUpload в базе данных есть всегда и он равен 0 и есть опция в настройках миранды что передача идет внутри протокола, а если на сервере включается HTTP Upload (XEP-0363) тогда в базе можно менять UseHttpUpload на 1.
Если на сервере выключить HTTP Upload (XEP-0363) тогда или в ручном режиме или в атоматическом можно будет поменять UseHttpUpload на 0.
Всегда иметь в настройках миранды опцию HTTP File Upload вариант?
ключ UseHttpUpload в базе данных есть всегда и он равен 0
По факту так и есть: физически ключа в базе нет, но он автоматически читается с дефолтным значением 0. Если хоть раз шевельнуть настройкой в Service Discovery, в базу прописывается собственно HttpUpload, и тогда настройка начинает показываться в интерфейсе. Бинго
Есть два аккаунта: test@oracle Anastasia@oracle
файлы можно передать из аккаунта test@oracle в Anastasia@oracle, но нельзя наоборот передать файл.
Версии Миранды везде одинаковые 0.96.2 Настройки проверила везде одинаковые. Фаервол ничего не блокирует, по логам чисто. Сервер один и тот же, но в одну сторону идет передача в другую нет. До этого все работало в старой версии.
Где может быть ошибка?
В логах есть следующее:
[16:55:57 2444] bytesParsed = 9030
[16:56:05 272C] (0000000006DA9DF0:756) Data sent
<iq type="get" to="upload.oracle" id="mir0dc043eb4c546dd2_11"><request xmlns="urn:xmpp:http:upload"><filename>clp-20230427-1656040.jpg</filename><size>7332</size><content-type>image/jpeg</content-type></request></iq>
[16:56:05 2444] (0000000006DA9DF0:756) Data received
<iq to='anastasia@oracle/Home' id='mir0dc043eb4c546dd2_11' type='error' from='upload.oracle'><error type='cancel'><not-allowed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/><text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Communication with remote domains is not enabled</text></error></iq>
[16:56:05 2444] recvResult = 284
[16:56:05 2444] HTTP upload aborted