Как продлить жизнь Skype 4.2.0.13

Меня, как и многих невольных пользователей текущие владельцы Skype поставили перед выбором: либо обновление, либо иди нахрен. Я посмотрел на свой довольно большой список контактов в котором находится много клиентов и скрепя сердцем выбрал первое — update. Внимательно осмотрел инсталяционый скрипт внутри rpm пакета и не найдя там ничего крамольного установил скайп 4.3.0.37. Оказалось, что новая версия не может загрузиться со старым профилем. Просто вываливается сразу после соединения. Я “пошаманил” с базами попробовал в новый профиль записать старые базы, но не помогло. (Обновлено. Решение было найдено). Это подсадило меня на коня. Масло в огонь подлило и то что они сломали интерфейс взаимодействия с внешними скриптами. Мои отлаженные скрипты перестали работать потому, что им передаются пустые параметры. Ну и чтобы окончательно вынудить людей искать альтернативу скайпу они прекратили поддержку звуковой подсистемы ALSA отдав предпочтение исключительно PulseAudio. Сначала сломали API для сторонних приложений, а теперь ещё и это.


Ларчик открывается одной командой perl по отношению к исполняемому файлу. Однако в силу стрёмности некоторых положений Лицензионного соглашения я не рискнул опубликовать их на этом сайте в открытом доступе. Ищите в интернетах.

Важное дополнение: Важное дополнение: Через 30 дней истекает подписанная аутентификационная секция в вашем Skype профиле в файле config.xml и скайп сделает перезапрос сессии но не сможет войти. Для геренации новой аутентификационной сессии нужно однократно запустить скайп 4.3.0.37. Лично я его оставил в каталоге, а от старого взял только бинарный файл и добавил к его имени номер версии. Получилось skype.4.2.0.13. Он нормально работает с файлами версии 4.3.0.37, что лишний раз доказывает желание MS выкручивать руки своим пользователям. Рекомендуется не дожидаться момента автоматического обновления аутентификационной сессии и через 25 дней кратковременно перелогиниться новой версией что перезапишет сессию авторизации без необходимости вводить пароль. И продолжать использовать старый скайп до тех пор пока MS не закроет эту лазейку не просто скотчем и фломастерами, а внесёт изменения в протокол, что не так просто и не так безопасно.

Далее заготовка скрипта для желающих, который выводит список дат по timestamp из конфигурационного файла config.xml

cat ~/.Skype/[skypeusername]/config.xml | awk '{if ($0 ~ / +timestamp=/) print("timestamp:"gensub(/^.*"([0-9\.]+)".*$/,"\\1","g",$4)); else if ($0 ~ /<CleanupTime>/) print("cleanuptime:"gensub(/^.*>([0-9\.]+)<.*$/,"\\1","g",$1)); else if ($0 ~ /<ConnectivityTimeStamp>/) print("connectivity:"gensub(/^.*>([0-9\.]+)<.*$/,"\\1","g",$1)); else if ($0 ~ /<TimeStamp>/) print("timestamp:"gensub(/^.*>([0-9\.]+)<.*$/,"\\1","g",$1)); else if ($0 ~ /<LastTime>/) print("lasttime:"gensub(/^.*>([0-9\.]+)<.*$/,"\\1","g",$1)); }' | while IFS=: read S T; do echo -en "${S}="; date -d "@${T}" "+%Y-%m-%d %H:%M:%S"; done
timestamp=2014-11-16 14:57:58
cleanuptime=2014-06-25 21:52:25
connectivity=2014-11-16 14:41:54
timestamp=2014-11-16 14:41:54
timestamp=2014-11-16 14:41:54
lasttime=2014-11-04 20:54:38

Я так предполагаю, что в секции отражает время обновления пароля в профиле. А значит скрипт можно изменить так:

cat ~/.Skype/[skypeusername]/config.xml | sed -n '/<Account>/,/<\/Account>/p' | awk '{if ($0 ~ /<LastUsed>/) print(gensub(/^.*>([0-9\.]+)<\/.*$/,"\\1","g",$0))}' | xargs -I{} date -d @{} "+%Y-%m-%d %H:%M:%S"

Если к этой дате прибавить 30 дней то получим дату следующего перезапроса авторизационного токена на серверах Skype. (30 дней по 24 часа по 3600 секунд)

cat ~/.Skype/[skypeusername]/config.xml | sed -n '/<Account>/,/<\/Account>/p' | awk '{if ($0 ~ /<LastUsed>/) {timestamp=gensub(/^.*>([0-9\.]+)<\/.*$/,"\\1","g",$0)+(30*24*3600); print timestamp;} }' | xargs -I{} date -d @{} "+%Y-%m-%d %H:%M:%S"

На эту дату нужно запрограммировать какое-то оповещение или принудительно выгрузить скайп версии 4.2.0.13 и загрузить 4.3.0.37 чтобы он получил новый токен, а затем спокойно продолжать работу в старом.