LINUX.ORG.RU

Подружить jabber.el и vk.com


0

1

Привет. Я пытаюсь настроить вконтактовский xmpp в jabber.el, но пока у меня это не очень получается. Испробовано следующее (сервер везде выставлен в «vkmessenger.com», за исключением пункта 4 в настройках аккаунта указан пароль):

1. :connection-type . starttls. Вываливает в лог сообщение о недействительном сертификате.

2. :connection-type . starttls, список starttls-extra-arguments выставлен в ("--ignore"). Странно, но ситуацию это не меняет.

3. :connection-type . network. В логах ноль упоминаний о vk.com или vkmessenger.com и пустой ростер.

4. :connection-type . network, пароль убран из настроек аккаунта. После ввода пароля в появляется сообщении об удачной аутентификации, но ростер по прежнему остаётся пустым.

Какой мануал мне нужно скурить, чтобы это всё наконец заработало?


Вываливает в лог сообщение о недействительном сертификате.

Я думаю правильнее всего зафиксить вот это

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Похоже, что это зависит от IP

    87.240.182.130 5222/tcp closed xmpp-client
    87.240.182.129 5222/tcp open   xmpp-client
    87.240.182.148 5222/tcp open   xmpp-client

ivano ()

vkmessenger.com

судя по их сайту vk.com, порт 5222

starttls

legacy ssl/tls пробовал?

p.s. сам проверить не могу, акка нет

lazyklimm ★★★★★ ()
Ответ на: комментарий от lazyklimm

судя по их сайту vk.com, порт 5222

Там внизу страницы приписка о vkmessenger.com для клиентов без поддержки DNS-записей. Я просто решил не рисковать, и сразу стучаться напрямик.

legacy ssl/tls пробовал?

Пробовал, не помогает.

Проблема не только в шифровании, я и в плейн тексте пробовал.

ivano ()
Ответ на: комментарий от ivano

есть смутное подозрение, что дело в rDNS

jabber.el реверсит адрес сервера, и получает srvXXX-YY.vkontakte.ru, сертификат же, скорее всего выдан на vk.com.

lazyklimm ★★★★★ ()
Ответ на: комментарий от lazyklimm
Opening STARTTLS connection to `vkmessenger.com:5222'...done
STARTTLS negotiation failed: *** Starting TLS handshake
- Peer's certificate issuer is unknown
- Peer's certificate is NOT trusted
- The hostname in the certificate matches 'vkmessenger.com'.
*** Verifying server certificate failed...
*** Fatal error: Error in the certificate.
- Certificate type: X.509
- Got a certificate list of 1 certificates.
- Certificate[0] info:
 - subject `O=vkmessenger.com,OU=Domain Control Validated,CN=vkmessenger.com', issuer `C=US,ST=Arizona,L=Scottsdale,O=GoDaddy.com\, Inc.,OU=http://certificates.godaddy.com/repository,CN=Go Daddy Secure Certification Authority,serialNumber=07969287', RSA key 2048 bits, signed using RSA-SHA1, activated `2010-07-23 12:12:47 UTC', expires `2013-07-23 12:12:47 UTC', SHA-1 fingerprint `5ebc49f5aca5502386e27a342388c4421048d816'
	Public Key Id:
		b3c97e41d6ea04148346b75063f2db41f52ee568
	Public key's random art:
		+--[ RSA 2048]----+
		|     .+oB....    |
		|      o*.=   .   |
		|     . .o ..  o  |
		|        .oo..=   |
		|        S+..E o  |
		|       . ++. .   |
		|        +o .     |
		|       .  o      |
		|        ..       |
		+-----------------+

*** Handshake has failed

STARTTLS negotiation failed
ivano ()

Кстати, если верить самой вконтактостранице, то залогиниться без шифрования мне всё-таки удаётся.

Последняя активность: только что (Россия, Jabber-клиент)

Таким образом, имеется две ортогональные проблемы:

1. Сертификат.

2. Не полученный список контактов.

ivano ()
Ответ на: комментарий от ivano

кстати, если попробовать тыкнуться вручную - у меня зависает соединение

gnutls-cli -V -s vkmessenger.com -p 5222                                                                                                            
Processed 152 CA certificate(s).
Resolving 'vkmessenger.com'...
Connecting to '87.240.182.141:5222'...

- Simple Client Mode:

*** Starting TLS handshake

так что сервак у них тоже какой-то странный

lazyklimm ★★★★★ ()
Ответ на: комментарий от lazyklimm

У меня тоже такое было, но я валил это на свои кривые руки --- emacs как-то умудряется с ними поговорить.

ivano ()
Ответ на: комментарий от lazyklimm

Теперь посреди лога появилось сообщение

Host vkmessenger.com (xmpp-client) has never been contacted before.
Its certificate is valid for vkmessenger.com.
Are you sure you want to trust it? (y/N): *** Fatal error: Error in the certificate.

ivano ()
Ответ на: комментарий от lazyklimm

С --insecure сертификат starttls действительно проходит (наверное я что-то забыл сделать, когда пробовал его в первый раз). Проблема пустого ростера остаётся.

ivano ()
Ответ на: комментарий от krang

Замена сервера на vk.com не помогает --- emacs повисает секунд на 30 и выдаёт сообщение

Couldn't connect to (vk.com . 5222): error during connect: время ожидания соединения истекло
Jabber connection failed

С id, также как и с логином, авторизация проходит нормально, но ростер остаётся пустым.

ivano ()

Я включил отладку для xml ввода-вывода. Оказывается, что вконтактовский лог обрывается после

sending (iq ((type . "set") (id . "emacs-iq-20642.27308.902638")) (bind ((xmlns . "urn:ietf:params:xml:ns:xmpp-bind"))))

receive (iq ((type . "result") (id . "emacs-iq-20642.27308.902638")) (bind ((xmlns . "urn:ietf:params:xml:ns:xmpp-bind")) (resource nil "c2s_245375")))

Похожий лог для GTalk аккаунта после этого отправляет и получает запросы вида

sending (iq ((type . "set") (id . "emacs-iq-20642.27304.134435")) (session ((xmlns . "urn:ietf:params:xml:ns:xmpp-session"))))
...
sending (iq ((type . "get") (id . "emacs-iq-20642.27304.739076")) (query ((xmlns . "jabber:iq:roster"))))

Похоже, что вконтактовский сервер отправляет что-то такое, от чего jabber.el впадает в ступор.

ivano ()
Ответ на: комментарий от krang

Да, включил. Шифровать/не шифровать --- проблема ортогональная.

ivano ()

Вот что об этом думают разработчики:

http://comments.gmane.org/gmane.emacs.jabber.general/1067

It seems like the server developers didn't follow the specification.
Section 7.6 of RFC 6120 (http://xmpp.org/rfcs/rfc6120.html#bind-servergen )
states that the server should return a <jid/> element, but this
server returns a <resource/> element instead...

Are there any error messages in the *fsm-debug* buffer?

Could you try connecting with an explicit resource? That is,
specify your JID as «myusername <at> vk.ru/emacs» or something
similar. That might elicit a compliant response from the server.

Regards,
Magnus

Предложенно решение действительно работает. Всем спасибо за помощь.

ivano ()
Ответ на: комментарий от ivano

It seems like the server developers didn't follow the specification. Section 7.6 of RFC 6120

и почему я не удивлён.

Вот кто их просил пилить кривой велосипед на node.js?

lazyklimm ★★★★★ ()
Ответ на: комментарий от krang

Явно допиши ресурс в аккаунт. Что-нибудь наподобии

("<username>@vk.com/emacs"
 (:network-server  . "vkmessenger.com")
 (:password        . "<password>"))

ivano ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.