Author Topic: Неправильное время сообщений в истории(XEP-136)  (Read 17157 times)

0 Members and 2 Guests are viewing this topic.

Offline Davis

ghazan,
2. Можно сделать скрытый параметр протокола - период обновления собственного вкард. По-умолчанию можно его поставить в "отключено". Т.е. по-дефолту вкард обновить один раз при создании параметра(или подключении к серверу). А такие как я корпоративные клиенты смогут поставить его в 12 часов и он будет обновляться каждое утро при логине. Как?
« Last Edit: 29 05 2016, 12:49:35 by Davis »
 

Offline Davis

Вот так:

Spoiler
Code: [Select]
--- Orig/jabber_iqid.cpp 2015-08-28 16:22:40.000000000 +0300
+++ Davis\jabber_iqid.cpp 2016-05-30 16:06:12.656625000 +0300
@@ -193,8 +199,24 @@
  QueryPrivacyLists(m_ThreadInfo);
 
  ptrA szServerName(getStringA("LastLoggedServer"));
- if (szServerName == NULL || mir_strcmp(m_ThreadInfo->conn.server, szServerName))
+
+ MCONTACT hContact = HContactFromJID(m_szJabberJID);
+ time_t tmLast = getDword(hContact, "LastOwnVCardAsk", 0);
+ bool AskNeeded = tmLast == 0;
+ if (tmLast != 0)
+ {
+ time_t tmAskPeriod = getDword(hContact, "OwnVCardAskPeriodHours", 0);
+ if (tmAskPeriod != 0)
+ {
+ AskNeeded = (tmLast + tmAskPeriod * 60 * 60 <= time(NULL));
+ }
+ }
+
+ if (szServerName == NULL || mir_strcmp(m_ThreadInfo->conn.server, szServerName)
+ || AskNeeded) {
  SendGetVcard(m_szJabberJID);
+ setDword(hContact, "LastOwnVCardAsk", time(NULL));
+ }
 
  setString("LastLoggedServer", m_ThreadInfo->conn.server);
  m_pepServices.ResetPublishAll();
[close]

И волки сыты и овцы целы

P.S. Вот я тупилка! Для обновления VCard при коннекте достаточно удалить в базе ключ "LastLoggedServer"!
А это же ж можно сделать ActMan без изменения кода :)
« Last Edit: 03 06 2016, 09:22:53 by Davis »
 

Offline Davis

Эпопея с XEP-0136 не закочилась :)
http://trac.miranda-ng.org/ticket/1261
 

Offline Davis

Исправил пред-предыдущее сообщение :)
 

Offline randem

  • Newbie
  • *
  • Posts: 10
Как вы настроили работу XEP-136 в связке Miranda + Openfire? Имею проблему: Необходимо хранение истории на сервере, чтобы при удалении пользователя история сообщений прилетала назад в клиент ( используется miranda ng 0.95.10). В качестве сервера используется openfire (версия 4.1.5) с Active Directory, который поддерживает XEP-0136, при наличии плагина Monitoring. Плагин стоит (версия 1.6.0), сообщения в вэб интерфейсе плагина показываются, значит xep-0136 походу работает. Но при удалении контакта (или удалении БД) в клиенте (miranda ng), после перезапуска, контакт подтягивается в ростер, но история сообщений не сохраняется. В настройках клиента (miranda ng) галочка "Включить историю на сервере (XEP-0136)" установлена. Может я чего то не понимаю.
 

Offline Davis

Звучит правильно.
Отличие в том, что я остановился на openfire 3.10.3 + допиленный мной Monitoring Service  1.4.3.6

В четверке я помню они одно время вообще выпиливали XEP-136 в пользу MAM(XEP-0313)
 
The following users thanked this post: randem

Offline randem

  • Newbie
  • *
  • Posts: 10
Звучит правильно.
Отличие в том, что я остановился на openfire 3.10.3 + допиленный мной Monitoring Service  1.4.3.6

В четверке я помню они одно время вообще выпиливали XEP-136 в пользу MAM(XEP-0313)

Очень странная работа протокола. Если бы сообщения не сохранялись на сервере, я бы подумал что архивация сообщений не происходит. Но раз в вэб-интерфейсе сообщения видны - значит xep-136 отрабатывает, иначе как miranda оставляет сообщения на сервере. Вопрос в том, почему не прилетает в mirand-у назад. Может логгирование какое включить?
 

Offline Davis

А при чем тут миранда?
Сервер _пересылает_ сообщения, он же их и архивирует плагином. Все. Безо всяких XEP в вашем случае.
Чтобы клиент, а не веб админка, получил архив, тут нужно либо 136 либо 313 с обеих сторон
 
The following users thanked this post: randem

Offline randem

  • Newbie
  • *
  • Posts: 10
Значит из этого следует что либо openfire с плагином Monitoring, либо miranda, не имеют XEP-136 на борту? Хотя у обоих вроде как поддержка XEP-136 заявлена (по данным сайтов (правда около официальных)). Меня поразило что перехват (архивирование) сообщений возможно без xep-ов. Получается "любой сервер во всемирной паутине" может сохранять переписку jabber клиентов?
« Last Edit: 21 12 2018, 14:16:33 by randem »
 

Offline Davis

openfire с плагином Monitoring
Да, полагаю - это
Поэтому я остановился на старом сервере, у него есть 136, а у миранды нет 313, но миранда умеет доменный логин
« Last Edit: 21 12 2018, 14:11:41 by Davis »
 
The following users thanked this post: randem

Offline randem

  • Newbie
  • *
  • Posts: 10
Да, полагаю - это
Поэтому я остановился на старом сервере, у него есть 136, а у миранды нет 313, но миранда умеет доменный логин
Спасибо за описание работы механизма.  :THUMBS UP:
Хотел ещё спросить.  ::)
Как вы реализовывали автоматическое обновление vcard в mirand-е (имею ввиду поля должность, телефон, и прочее)?
« Last Edit: 22 12 2018, 06:25:49 by randem »
 

Offline Davis

randem, дык все в этой теме :)
Чуть выше
 

Offline Davis

randem,
Решил протестировать современное состояние дел.
Поставил Openfire 4.3.2, плагин Monitoring Service 1.7.0. Он на самом деле умеет и XEP-0136 и XEP-0313

Потестировал клиенты на предмет подтягивания истории  с сервера при удалении профиля:
miranda-ng 0.95.10.1 - история подтягивается, по XEP-0136
conversations  2.4.2 - подтягивается по XEP-0313
xabber - вначале вроде подтягивал, теперешняя версия 2.6.2(591) разучилась
 

Offline dartraiden

Логично, в Миранде в плане 0313 ничего не менялось.