Miranda NG Official Community Forum

Miranda NG русскоязычный форум => Общие разговоры о Miranda NG => Topic started by: Boris_M on 23 04 2020, 09:21:52

Title: Неправильное время синхронизированных сообщений в истории ICQ
Post by: Boris_M on 23 04 2020, 09:21:52
Подскажите с таким моментом -
При запуске программы (ICQ протокол) приходят офф-лайн сообщения и в журнале (iEView)  и в истории (historypp) они отмечаются локальной датой и временем получения (к примеру запустил сегодня программу, пришли сообщения - 23.04.2020 12:20) в реальности контакт отправил их 22.04.2020 23:30 (и на сервере ICQ в офф клиенте так и есть)
Это где-то настраивается? Реальная (серверная) метка времени офф-лайн сообщений.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: dartraiden on 23 04 2020, 19:19:00
Не настраивается, это баг Миранды. Завёл тикет.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: dartraiden on 23 04 2020, 19:21:30
Если точнее, это не оффлайн-сообщения, а отсутствующие в базе. Оффлайн-сообщений как таковых в протоколе вообще нет.
При запуске Миранда запрашивает у сервера идентификаторы последних сообщений и сравнивает с идентификаторами в базе. Если отличаются, значит, этих сообщений в базе нет, они вгружаются.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 23 04 2020, 19:43:48
При запуске Миранда запрашивает у сервера идентификаторы последних сообщений и сравнивает с идентификаторами в базе. Если отличаются, значит, этих сообщений в базе нет, они вгружаются.
Ну это я так обозвал - типа был в офф-лайн, пришли сообщения - подключился, получил "оффлайн сообщения" :).

И такой вопрос -  "Загрузить историю с сервера".Есть контакты на которых эта функция не срабатывает. На сервере (в офф клиенте) контакт есть, он "живой", сообщения есть 2019-2020 год, в локальной базе пусто, но никакой загрузки истории с сервере не происходит.
(помотрел netlog данного процесса - "Message 6751360659969016463 already exists" :) , то есть я так понял в базе есть история сообщений этих контактов, но в журнале и истории она не отображдается. Как поправить тогда?)

(Да и на web-skype протоколе на некоторых клиентах синхронизации безуспешна..., но это не для этой темы уже.)

ps
а как  посмотреть/редактировать базу отображаемых в журнале/истории сообщений? DbEditorPP.dll не вижу, не поддерживает - только вижу  в MsgExport историю в файлах %nick%.txt
профиль на Dbx_mdbx (а можно конвертнуть для Dbx_sqlite) ?
Вообще в каком формате рекомендовано держать профиль? Dbx_sqlite/Dbx_mdbx ?
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: dartraiden on 24 04 2020, 16:59:35
И такой вопрос -  "Загрузить историю с сервера".Есть контакты на которых эта функция не срабатывает. На сервере (в офф клиенте) контакт есть, он "живой", сообщения есть 2019-2020 год, в локальной базе пусто, но никакой загрузки истории с сервере не происходит.
Эта функция ещё не доделана, она грузит лишь 1000 самых ранних сообщений. Лучше дождаться, пока она научится грузить всё.

а как  посмотреть/редактировать базу отображаемых в журнале/истории сообщений?
Никак. Максимум - удалить сообщение целиком через просмотрщик истории.

Вообще в каком формате рекомендовано держать профиль? Dbx_sqlite/Dbx_mdbx ?
dbx_sqlite экспериментальный и весьма глючный, его нужно переписывать с нуля, по хорошему (но делать этого никто не будет, это был эксперимент одного из разработчиков, который уже очень давно и плотно занят другими делами вне Миранды).

Поэтому, dbx_mdbx и обязательно прочитать предупреждение на странице плагина в вики.
Кроме того, импорт из sqlite в mdbx невозможен из-за кривости dbx_sqlite.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: dartraiden on 24 04 2020, 17:03:25
При запуске программы (ICQ протокол) приходят офф-лайн сообщения и в журнале (iEView)  и в истории (historypp) они отмечаются локальной датой и временем получения (к примеру запустил сегодня программу, пришли сообщения - 23.04.2020 12:20) в реальности контакт отправил их 22.04.2020 23:30 (и на сервере ICQ в офф клиенте так и есть)
Это должно быть исправлено в девелоперском билде 22863 и новее, проверяйте.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 24 04 2020, 18:13:46
Это должно быть исправлено в девелоперском билде 22863
:DRINK: Сейчас все верно помечается! Спасибо!
Эта функция ещё не доделана, она грузит лишь 1000 самых ранних сообщений.
Тут что-то другое - сделал новый профиль под sql (для теста) внес учетку эту же и на этом же контакте "Загрузить историю с сервера" - все ок, все 308 сообщений загрузились.В текущем же профиле mdbx и очищал журнал и удалял этот контакт из списка, вносил заново - "Загрузить историю с сервера"- ничего. Но как и писал по netlog  в это время видим "Message 6751360659969016463 (и т.д 308 строк - как раз сколько сообщений на сервере ) already exists" то есть как будто есть эти сообщения в базе локальной уже, а в истории и в журнале их не видать. :(
Отсюда и возник вопрос о редактировании базы сообщений и о формате sql (его то я могу править)
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: dartraiden on 24 04 2020, 18:17:37
Quote
профиль под sql
А, ну там вообще внутри полный хаос, как я сказал, нужно всё с нуля переписывать. Не надо трогать sqlite. В его отношении никто не гарантирует, что там что-то будет корректно работать. Его не даром нет и не будет в стабильной версии - он банально не готов.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 24 04 2020, 18:28:23
А, ну там вообще внутри полный хаос,
как раз под sql загрузка сообщений с сервера для этого контакта без проблем все 308 сообщений. (я же для теста под ним сделал учетку чтобы проверить эту ситуацию с невидимыми сообщениями)

А вот под моим рабочим профилем mdbx- проблемы.В общем открыл базу mdbx и hex`ом перебил несколько записей из лога "Message 6751360659969016463 (и т.д 308 строк - как раз сколько сообщений на сервере ) already exists" на рандом (так и есть все эти 308 записей содержаться в базе, но ни в журнале ни в истории не показываются). После на данном контакте вызвал "Загрузить историю с сервера" и ожидаемо появились в журнале и в истории ровно те сообщения id кторых я покалечил hex ом в базе :) Остальные по логу - "already exists".Соотвественно вопрос - как исправить? Как удалить эти призрачные id в базе?
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: dartraiden on 24 04 2020, 18:36:04
Попробуйте сжать базу (предварительно сделав резервную копию): главное меню → База → Сжать. Зачастую это исправляет всякие глюки.

Ещё можно экспортировать историю с помощью плагина Msg_Export в JSON, полностью очистить историю у контакта и втянуть JSON обратно (ПКМ по контакту → Импорт).
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 24 04 2020, 18:53:35
Ещё можно экспортировать историю
Я так и сделал - экспортировал историю из sql профиля из HistoryPP а к себе под mdbx импортировал туже историю (сжатие базы не помогало, пробовал).Спасибо за ответы и участие в проблеме!(если решится ещё недоделка с ссылками  по файлам (https://forum.miranda-ng.org/index.php?topic=5613.msg26790#msg26790)  в журнале хотя бы будет уже более менее удобно :) )
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 16 05 2020, 09:02:02
При запуске программы (ICQ протокол) приходят "офф-лайн " сообщения и в журнале (iEView)  и в истории (historypp) они отмечаются локальной датой и временем получения (к примеру запустил сегодня программу, пришли сообщения - 23.04.2020 12:20) в реальности контакт отправил их 22.04.2020 23:30 (и на сервере ICQ в офф клиенте так и есть)
Это должно быть исправлено в девелоперском билде 22863 и новее, проверяйте.
всё было хорошо, а в build #23017 снова неверное время полученых сообщений,  :(

Но такой момент:  если это сообщение удалить из истории, а затем выполнить "Загрузить историю с сервера" то оно уже прийдет и с меткой "правильного" времени - как и на сервере.
Другими словами сообщения полученные с сервера при старте Miranda  получают неверную метку времени. При выполнении функции  "Загрузить историю с сервера" - верную.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: dartraiden on 16 05 2020, 12:16:42
Да, получение последних сообщения с серверной датой вызвало ещё более серьезные проблемы, поэтому откатили как было.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 16 05 2020, 12:57:42
получение последних сообщения с серверной датой вызвало ещё более серьезные проблемы
Если не сложно, какие ньюансы возникают, если сообщение отмечается с серверным временем, а не временем локального получения? Может есть какая переменная типа "время создания/время получения на сервере" которую можно вывести в журале?
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: ghazan on 17 05 2020, 14:45:14
Если не сложно, какие ньюансы возникают, если сообщение отмечается с серверным временем, а не временем локального получения?
При работе с серверным временем есть такое понятие, как "машина времени". Если на локальной машине время каким-то образом сбито, хотя бы на 10 минут, то совершенно рабочим сценарием является следующий:
- вы пишете кому-то, он отвечает (при этом всегда используется локальное время компьютера);
- вас вышибает из сети секунд на 30, тот продолжает писать;
- вы заходите в сеть и получаете пачку сообщений, которые встают в лог перед последними на расстоянии 10 минут (или потом они будут мешаться внизу лога те же 10 минут)
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 17 05 2020, 15:06:55
Если на локальной машине время каким-то образом сбито, хотя бы на 10 минут,
Мягко говоря сценарий не очень "рабочий" и итог (в случае описываемых "сбоев") вполне правильный и логичней, чем написаное вчера контактом/-ми письмо получить отмеченное текщим локальным временем. Если уж Вы считаете, что это правильно, в угоду гипотетического рассинхрона локального времени, разрывов сети, может быть возможно добавить проверку - мол если входящее сообщение при подключении старше N минут чем локальное время - штампуем его серверным временем получения, младше - локальным (и опцию добавить при какой разнице в минутах помечать письмо истинным серверным временем.) Такое возможно?
Кстати в Web Skype протоколе  приходят сообщения с честным серверным временем (там другой принцип формрования лога?).
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: ghazan on 17 05 2020, 15:49:19
Кстати в Web Skype протоколе  приходят сообщения с честным серверным временем
в Скайпе при установке соединения сервер сообщает свое локальное время, так что есть возможность синхронизации. А тут придется в Миранду тащить NTP-клиент.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: dartraiden on 17 05 2020, 16:20:18
Quote
Мягко говоря сценарий не очень "рабочий"
Рассинхронизация времени? Очень даже частая проблема.
Пришлось в своё время в асечном FAQ-e описывать ситуацию с прилично сбитым временем или часовым поясом на машине, иначе сервер даже влогиниться не давал. Как раз таки это было на основе реальных жалоб.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 31 05 2020, 07:58:07
ghazan, Спасибо большое за правки, после фикса 17.05 (https://github.com/miranda-ng/miranda-ng/issues/2352) сообщения приходят с корректной датой, но вчера и сегодня получил сообщения с файлами - сообщения с верной датой, а файлы с текущей датой и временем их получения Мирандой.. Можно и для файлов исправить?
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: ghazan on 01 06 2020, 09:44:40
Можно и для файлов исправить?
можно

PS: ушло в ночник, можно пробовать
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 01 06 2020, 12:20:30
PS: ушло в ночник, можно пробовать
Что-то видимо глобально изменилось... (https://forum.miranda-ng.org/index.php?topic=5619.msg26987#msg26987)и сейчас вообще не приходят сообщения которые пришли на сервер пока я был в оффлайн..На сервере они есть, в Miranda не приходят..

Miranda NG Version: 0.95.12 alpha build #23048 (8e31deecd8) x64
ICQ.dll v.0.95.11.11 [1 Jun 2020 13:10:42]

ps
для теста проверил ситуацию ещё одним сторонним клиентом - RnQ  Mikanoshi от 28.05.2020 - всё ок, приходят сообщения... Значит что-то в Miranda изменилось?
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: ghazan on 01 06 2020, 12:24:35
Boris_M,
нет, в ICQ ничего глобально не менялось 100%
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 01 06 2020, 12:44:34
нет, в ICQ ничего глобально не менялось 100%
Это уже понял, при тесте другого альтернативаного клиента, и после пары перезапусков Miranda сообщения с сервера все-таки пришли.Но
Quote
При вызове "Загрузить историю с сервера" получаю множественные сообщения "xxxx запросил(а) авторизацию"
Хотя контакт никаких запросов и сообщений не отправлял.
При подтверждении "Разрешить" контакту так же ничего не приходит и при повторном вызове "Загрузить историю с сервера" снова получаю множественные такие же сообщения.
Все так же, откатывал версии ICQ.dll, Miranda64.exe - ситуация не меняется
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: ghazan on 01 06 2020, 13:09:19
про авторизацию знаю, но пока не было возможности расследовать это
загрузка этих событий в миранду сделана как раз для того, чтобы с помощью StopSpam их можно было прибить :)
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 01 06 2020, 14:34:39
про авторизацию знаю
ага,
Miranda NG Version: 0.95.12 alpha build #23049 (f515f0b694) x64
ICQ.dll v.0.95.11.11 [1 Jun 2020 17:02:56] - ICQ-WIM protocol
Спасибо больщое!
Сообщение об авторизации пропало, сообщения отсутствующие в базе стали забираться с сервера, но полученые фалы не забираются (история файлов не приходит).
Можно и для файлов исправить?
-
И ещё момент - если произошел диконнект и я не в сети (miranda не закрывалась) потом снова подсоединяюсь "в сети" проверки на неполученные сообщения за этот период нет (то есть не приходят сообщения оправление мне в этот промежуток времени), но если перезагрузить miranda все пропущенные сообщения загружаются
Title: Odp: Неправильное время синхронезированных сообщений в истории ICQ
Post by: ghazan on 02 06 2020, 09:15:34
полученые фалы не забираются (история файлов не приходит). Можно и для файлов исправить?
файлы забираются только в случае оперативной дочитки истории (пропущенные сообщения с момента предыдущего запуска), при чтении полной истории файлы не восстанавливаются
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 02 06 2020, 11:00:29
файлы забираются только в случае оперативной дочитки истории (пропущенные сообщения с момента предыдущего запуска), при чтении полной истории файлы не восстанавливаются
Раньше все забиралось, по крайнем мере, когда сделали первые исправления
исправлено в девелоперском билде 22863 и новее

Я из истоии удалял сообщения с неправильным временем, потом выполнял "Загрузить историю с сервера" и сообщения (с файлами в том числе) приходили с реальным серверным временем.
Буквально перед последними правками, кода обнаружил что файлы приходят с неверным временем, так же приходили. (Речь о сообщениях и файлах в пределах  1-2 дня давности).
Сейчас удаляю записи из истории вера полученых файлов и сообщений - и при повторной загрузке записи о полученых файлах не приходят.

при чтении полной истории файлы не восстанавливаются
А как тогда у меня оказались более 500 mb файлов (сообщения разных годов) в профиле на диске? Они пришли когда я загружал историю с сервера при начале использования Mirandа, именно с них и стал поднимать тут  https://forum.miranda-ng.org/index.php?topic=5613.30 (https://forum.miranda-ng.org/index.php?topic=5613.30) вопросы.


Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: ghazan on 02 06 2020, 12:28:07
Раньше все забиралось, по крайнем мере, когда сделали первые исправления
Оно и сейчас всё забирается.

сообщения (с файлами в том числе) приходили с реальным серверным временем. Буквально перед последними правками, кода обнаружил что файлы приходят с неверным временем, так же приходили. (Речь о сообщениях и файлах в пределах  1-2 дня давности).
Сейчас все сообщения, и файловые, и обычные, получают одно и то же время.

Сейчас удаляю записи из истории вера полученых файлов и сообщений - и при повторной загрузке записи о полученых файлах не приходят. А как тогда у меня оказались более 500 mb файлов (сообщения разных годов) в профиле на диске?
Известно, как: в свое время файлы загружались из этих сообщений всегда, потом аська начала блочить за попытки скачать по 300 файлов сразу, и при закачке истории с нуля они больше не запрашиваются
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 02 06 2020, 12:39:15
Сейчас все сообщения, и файловые, и обычные, получают одно и то же время.
Это я понял, когда Вы сделали правки 01.06.2020 (Спасибо!)
Тут же решил проверить - удалил 3 (три) сообщения с файлами от 31.05.2020 с "неверным временем" и тут же выполнил "Загрузить историю с сервера" (в предидущих версиях, как писал выше, они сразу же появлялись в итсториии уже с верным серверным временем). Сейчас - ничего. Не всю историю с "0", а  3 последних уведомления с файлами 1-2 дневной давности.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: ghazan on 02 06 2020, 12:54:30
Сейчас - ничего.
Это правда. При невозможности скачивания файла само сообщение игнорируется, потому что из-за дебильной особенности icq тот линк, который указан в сообщении для скачивания, больше напрямую не работает.
Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: Boris_M on 02 06 2020, 17:10:09
потому что из-за дебильной особенности icq тот линк, который указан в сообщении для скачивания, больше напрямую не работает.
Это понятно, но можно же сделать транслирование в icq.dll
картинки
https://files.icq.net/get/06F5z000M3l8GuXWFht3Sw5ed685fb1ah
получаем инфо
https://files.icq.com/getinfo?file_id=06F5z000M3l8GuXWFht3Sw5ed685fb1ah
получаем файл (там и превьюшки есть)
https://ub.icq.net/files/get/06F5z000IDwScE7LC2nPAOCntPAOCx1Q9oCeGglUiahj2JX9xfCWXpD37FtEEZrOC8J0GKtaDw2stFjD6UtXr1ZhWPMSiMiZxU0BtbMwEziTdfrKmq4BBaXbnTgItVqxwAC4hWFEiXl4BytILucYmoL2z8CfnPAOC/icq_aut.jpg

другие форматы
https://files.icq.net/get/x8vl6TQox1NROfYjvdz6MT5ed686151ah
получаем инфо
https://files.icq.com/getinfo?file_id=x8vl6TQox1NROfYjvdz6MT5ed686151ah
получаем файл
https://ub.icq.net/files/get/x8vl6RfQPAR0N187OsMskbFsMsHW0puIaaNH7Gi1EJOIpUkZcSAOFbfGVdcCRGEhhWMs3zPCCGZJwx6IuVuqR1GoS00G9IZxFIDgxE11xKlwbSGfiazSs3IBbSLS4zRiQ83GsIJlwDNSvx33YiJdrMqI5POsMs/icq_aut.jpg.7z



Title: Re: Неправильное время синхронезированных сообщений в истории ICQ
Post by: ghazan on 02 06 2020, 18:35:09
Boris_M,
там придется выбирать, либо делать операцию асинхронно, как сейчас, тогда сбивается порядок сообщений в истории, либо делать операцию синхронно, тогда аська банит за попытку скачать 200 описаний подряд :-)