Author Topic: Опять меняется протокол ICQ?  (Read 51328 times)

dartraiden (+ 1 Hidden) and 3 Guests are viewing this topic.

Offline IceHat

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Re: Опять меняется протокол ICQ?
« Reply #750 on: 03 12 2019, 16:55:16 »
В начале года после миграции профиля со старой миранды на ng пришлось добавлять в серверный лист несколько сотен неавторизованных контактов, чтобы их история перестала стираться при закрытии мессенджера. За несколько месяцев неспешного прокликивания пункта Add permanently to list для каждого из таких контактов проблему наконец таки-решил.

Примерно неделю назад заметил, что некоторые из тех контактов снова отображаются в списке красным (не добавлены в серверный лист) и удаляются при закрытии миранды. Почему это происходит? Это ICQ на своих серверах что-то накрутила или после очередного обновления miranda-ng произошли какие-то изменения (у меня последняя стабильная 0.95.10.3 #22086)?
 

Online dartraiden

Re: Опять меняется протокол ICQ?
« Reply #751 on: 03 12 2019, 20:46:46 »
Добавьте ещё разок, если проблема будет повторяться, надо смотреть нетлог.
_██_
(°ᴗƪ)
 

Offline IceHat

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Re: Опять меняется протокол ICQ?
« Reply #752 on: 06 12 2019, 21:37:35 »
dartraiden, попробовал. Добавляю контакт, он перестает быть красным. Создаю бекап профиля. Перезапускаю миранду, эти контакты пропали без следа вместе с их историей. Восстанавливаю профиль из бекапа, запускаю миранду, эти контакты - красные.

Похоже на то, что ICQ у себя на сервере удалила этих пользователей. В окне User details у них поля Nick и First name отображаются как [deleted].

В итоге моя проблема снова стоит так же остро, как и в начале года. Мне нельзя терять историю переписки с этими контактами, даже если общение с ними более невозможно, если они правда удалены на серверах ICQ. Но Miranda упорно продолжает удалять их историю локально. Как мне решить эту проблему? Стоит ли ожидать в будущих версиях миранды изменения столь варварского поведения по отношению к истории переписки?

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

Online dartraiden

Re: Опять меняется протокол ICQ?
« Reply #753 on: 06 12 2019, 21:46:30 »
Стоит ли ожидать в будущих версиях миранды изменения столь варварского поведения по отношению к истории переписки?
Без нетлога - нет. Нужно записать нетлог в момент добавления проблемного контакта, а также нетлог в момент подключения к сети, когда прилетает с сервера информация, основываясь на которой контакты выкидываются из ростера.

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

как такая функциональность мессенджера может быть оправдана
Это баг, а не функциональность.

Хотя бы сделайте это принудительное удаление истории переписки контактов вне серверных листов опциональным в настройках
Время, затраченное на создания такого костыля разумнее потратить на обнаружение и искоренение бага.
« Last Edit: 06 12 2019, 21:51:54 by dartraiden »
_██_
(°ᴗƪ)
 

Offline IceHat

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Re: Опять меняется протокол ICQ?
« Reply #754 on: 07 12 2019, 10:31:27 »
дайте для примера номер одного из таких проблемных контактов.
Вот UIN-ы нескольких таких контактов.
Spoiler
312315751
634884862
667709716


Netlog сделаю чуть позже.


Это баг, а не функциональность.
В начале года ghazan называл это обычным строгим поведением программы. Якобы, если контакта нет в серверном листе, то и локальное удаление его вместе с историей в Миранде - намеренное поведение мессенджера. Сейчас же, если моя догадка об удалении контактов в серверных листах со стороны ICQ верна, добавить их туда повторно ICQ не позволяет, что вынуждает Миранду всегда считать такие контакты вне серверных листов, помечать их "к удалению" и собственно удалять при перезапуске. То есть прямое следствие строгости ранее реализованной логики работы программы.


Но если это теперь классифицируется как баг, я с радостью готов помочь в его выявлении и устранении.
 

Online dartraiden

Re: Опять меняется протокол ICQ?
« Reply #755 on: 07 12 2019, 15:26:19 »
По уточнённым данным имеем следующее. [deleted]-контакты это контакты особого рода, которые как бы существуют (т.е. у них есть UIN), но добавить их сервер не позволяет. То, что Миранда позволяет их добавить - это неправильно. При добавлении сервер возвращает ошибку, но ошибка не доводится до пользователя и контакт добавляется локально, создавая ложное ощущение, что всё прошло тип-топ. При следующем подключении, естественно, на сервере контакт не обнаруживается и он выбрасывается.

Для сохранения истории таких контактов следует использовать протокол Dummy, который специально создан для хранения истории несуществующих контактов. Чуть позже я напишу руководство.

Кроме того, будет проведена работа над тем, чтобы при попытке добавить в список контактов что-то недопустимое, пользователь получал вменяемое сообщение об ошибке.

« Last Edit: 07 12 2019, 15:29:42 by dartraiden »
_██_
(°ᴗƪ)
 
The following users thanked this post: IceHat

Offline IceHat

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Re: Опять меняется протокол ICQ?
« Reply #756 on: 07 12 2019, 16:16:00 »
Хорошо, что-то проясняется.

[deleted]-контакты это контакты особого рода, которые как бы существуют (т.е. у них есть UIN), но добавить их сервер не позволяет. То, что Миранда позволяет их добавить - это неправильно.
У меня они такими [deleted] стали совершенно внезапно примерно одну-две недели назад. За последний год все они были добавлены мной по одному в серверный список вручную. И после добавления с ними не было никаких проблем, они не исчезали локально и их история не удалялась до недавнего времени. Получается, система ICQ в какой-то момент пометила их такими, что привело к внезапному их удалению при перезапуске Миранды. Для меня это стало полной неожиданностью, заметил это совершенно случайно и успел восстановить профиль с их историей из недавнего бекапа.

Кроме того, будет проведена работа над тем, чтобы при попытке добавить в список контактов что-то недопустимое, пользователь получал вменяемое сообщение об ошибке.
Понимаете, такая функциональность Миранды, удаляющая локальную историю контактов "по команде" с серверов ICQ, это как хождение по минному полю. Оценивая ситуацию только с позиции, когда пользователь пытается добавить этот [deleted] контакт, очевидным решением будет какое-то предупреждение о недопустимости подобного действия. И это, наверное, логично, ведь переписываться с ним больше нельзя. Но у меня ситуация другая. Проблемные контакты уже были добавлены мной ранее и с ними не было проблем до определенного момента. Сегодня все в порядке, а завтра я запущу мессенджер и обнаружу, что сотня контактов и их история просто пропали. Сейчас у меня таких примерно сотня. А через неделю или месяц сервера ICQ переведут в состояние [deleted] другую партию контактов, и их история снова неожиданно пропадет у меня при перезапуске Миранды? Думаю, что еще найдутся другие пользователи Миранды, которые будут неприятно удивлены внезапной пропаже некоторых контактов и их локальной истории.

Для сохранения истории таких контактов следует использовать протокол Dummy, который специально создан для хранения истории несуществующих контактов. Чуть позже я напишу руководство.
Было бы замечательно получить эту информацию. Спасибо. Боюсь только, это не спасет от пропажи новую партию контактов, которые система ICQ может снова внезапно пометить этим особым статусом [deleted]. Заранее никто не предупреждает. У них там похоже чистка какая-то от неактивных контактов идет или что-то подобное. И черт бы с ними, локальная история бы не пропадала, вот чего очень хочется. :(
 

Online dartraiden

Re: Опять меняется протокол ICQ?
« Reply #757 on: 07 12 2019, 16:18:21 »
Остаётся утешаться тем, что число неактивных контактов у вас конечно. Рано или поздно останутся только "живые", а "мёртвые" будут переведены на Dummy, где их уже никто не тронет.
_██_
(°ᴗƪ)
 

Online dartraiden

Re: Опять меняется протокол ICQ?
« Reply #758 on: 07 12 2019, 17:26:55 »
Получилось как-то так на скорую руку.

Третий вариант проще всего, как по мне. Четвёртый вариант самый идеологически правильный, но самый трудоёмкий. К тому же, если в будущем ещё какие-то контакты преврятся в [deleted], будет непросто использовать этот четвертый вариант вторично. А третий вариант так и будет работать: учётка Dummy уже есть, просто в базе перекинуть на нее очередные несколько контактов.
« Last Edit: 07 12 2019, 17:48:06 by dartraiden »
_██_
(°ᴗƪ)
 
The following users thanked this post: IceHat

Offline IceHat

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Re: Опять меняется протокол ICQ?
« Reply #759 on: 07 12 2019, 17:48:18 »
Спасибо, попробую.

Убедитесь, что все [deleted]-контакты на месте со своей историей (т.е. они не «бледные», если они «бледные» или в группе NotInList, то нужно добавить их в постоянный список (пункт в контекстном меню контакта, либо открыть окно беседы и нажать зелёный «плюсик»).
Что значит не бледные? Иконка их протокола не бледная? У меня проблемные контакты именно с такой бледной иконкой и ником красного цвета. Значит их нужно снова добавлять вручную Add permanently to list, прежде чем приступать к другим пунктам?

При их добавлении иногда происходят странные вещи. Вместо указанной группы, они добавляются в группу General. Иногда даже после такого действия они остаются "бледными" с красным ником и приходится повторно пытаться добавить их. А еще после нескольких таких операций срабатывает антиспам защита ICQ и требует ввести либо капчу на их сайте, либо код из СМС, что также не упрощает задачу. Без повторного прокликивания зеленого плюса для каждого подобного контакта никак не обойтись?
 

Online dartraiden

Re: Опять меняется протокол ICQ?
« Reply #760 on: 07 12 2019, 17:50:54 »
Что значит не бледные? Иконка их протокола не бледная? У меня проблемные контакты именно с такой бледной иконкой и ником красного цвета. Значит их нужно снова добавлять вручную Add permanently to list, прежде чем приступать к другим пунктам?
Именно так. И после их перманентного добавления уже не переподключаться к сети, пока нужные контакты не будут перенесены на Dummy. А то они опять станут "бледными".

Без повторного прокликивания зеленого плюса для каждого подобного контакта никак не обойтись?
Если контакт "бледный", значит, он выкинут в особую группу "Not In List" и будет стёрт при ближайшем запуске, чего явно не хочется.

Вместо указанной группы, они добавляются в группу General
Бывает.
« Last Edit: 07 12 2019, 17:54:58 by dartraiden »
_██_
(°ᴗƪ)
 

Offline IceHat

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Re: Опять меняется протокол ICQ?
« Reply #761 on: 07 12 2019, 18:07:14 »
Если контакт "бледный", значит, он выкинут в особую группу "Not In List" и будет стёрт при ближайшем запуске, чего явно не хочется.
Хм. Можно уточнить, в какой именно момент Миранда помечает контакт "Not In List" и в какой момент удаляет такой контакт? В данный момент мне удается не потерять проблемные контакты и их историю в таком порядке:
1) Перед выходом из Миранды делаю копию профиля Database > Backup Profile.
2) Закрываю Миранду.
3) Заменяю .dat файл текущего профиля созданным перед выходом бекапом.
4) Запускаю Миранду: все проблемные контакты и их история на месте, но все так же отображаются с бледной иконкой и красным ником.

Может быть удастся использовать ваш алгоритм #3 без добавления проблемных контактов через Add permanently to list? В Database Editor++ я вижу у проблемных контактов в секции CList ключ NotOnList (=1). Этот флаг отвечает за локальное состояние "Not In List" контакта, верно? Быть может тогда достаточно будет одновременно с исправлением протокола в DB Editor исправить/удалить и ключ NotOnList? Тогда Миранда не удалит контакт при перезапуске, и можно обойтись без Add permanently to list, или я не прав?
 

Online dartraiden

Re: Опять меняется протокол ICQ?
« Reply #762 on: 07 12 2019, 18:16:36 »
При каждом запуске (наличие сети не обязательно) содержимое NotInList очищается.

При каждом соединении протокола с сетью локальный список сверяется с серверным, отсутствующие на сервере выбрасываются в группу NotInList.

Таким образом, если контакт отсутствует на сервере, но присутствует в базе, при первом запуске (при наличии соединения с сервером) он выбрасывается в NotInList, а при следующем запуске сотрётся, потому что сначала происходит очищение группы, а потом уже все протоколы ломятся в сеть.

Попробуйте. Пока есть резервная копия, то опасаться нечего.
« Last Edit: 07 12 2019, 18:19:00 by dartraiden »
_██_
(°ᴗƪ)
 
The following users thanked this post: IceHat

Online dartraiden

Re: Опять меняется протокол ICQ?
« Reply #763 on: 09 12 2019, 18:46:34 »
Пощупали этот вопрос.

Проблема вообще не в Миранде. Миранда корректно добавляет [deleted] на сервер. И сервер добавляет этот контакт себе в серверный клист. А затем... стирает его. [Тут в дискуссии разработчиков были непечатные выражения в адрес mail.ru]

Post Merge: 09 12 2019, 18:52:50
Пока в качестве костыля сделали исключение для [deleted]. Такие контакты не будут стираться. Это изменение придёт в версию в разработке уже ночью, так что в ближайшем обновлении можно тестировать. Если заработает, то портируем в стаблю.
« Last Edit: 09 12 2019, 18:52:50 by dartraiden »
_██_
(°ᴗƪ)
 
The following users thanked this post: IceHat

Offline IceHat

  • Newbie
  • *
  • Posts: 10
  • Karma: 0
Re: Опять меняется протокол ICQ?
« Reply #764 on: 10 12 2019, 11:19:36 »
Пока в качестве костыля сделали исключение для [deleted]. Такие контакты не будут стираться.
Спасибо. :THUMBS UP: Хотя бы так, чтобы не опасаться потерять историю переписки, пока буду переводить сотню-другую проблемных контактов на протокол Dummy.