Closed GoogleCodeExporter closed 8 years ago
pyvk-t # uname -a
Linux myVPS 2.6.18-prep028stab062.3 #3 SMP Fri Jun 12 04:26:45 MSD 2009 i686
Intel(R)
Xeon(R) CPU E5405 @ 2.00GHz GenuineIntel GNU/Linux
pyvk-t # python -V
Python 2.6.2
джаббер - openfire
Original comment by jahrave@gmail.com
on 19 Nov 2009 at 12:29
Тут посмотри патч: http://dumpz.org/14379/
А именно pyvkt/comstream.py и pyvkt/component.py
Original comment by xdersd
on 19 Nov 2009 at 2:25
Так как версия не та, поперефигачил вручную
эти два файла, но не помогло.
Original comment by jahrave@gmail.com
on 19 Nov 2009 at 3:59
Больше лога давай. С сервера лог тоже
интересен.
Original comment by mro...@gmail.com
on 19 Nov 2009 at 4:53
Дак это всё, что есть. Или можно как-то verbose
добавить?
В логах опенфая пусто, но не уверен, что оно
в принципе подобное логирует. Гугл
навскидку ничего в тему не подсказал.
Original comment by jahrave@gmail.com
on 19 Nov 2009 at 6:37
Обновись до 182 и запусти с параметром -m debug
Original comment by mro...@gmail.com
on 19 Nov 2009 at 7:13
* 2009-11-19 22:19:00,254 [DEB] getPacket[MainThread]: received <stream:error
xmlns:stream="http://etherx.jabber.org/streams"><not-authorized
xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error>
Original comment by jahrave@gmail.com
on 19 Nov 2009 at 7:19
на всякий случай полностью:
pyvk-t # ./main.py -m debug
/usr/lib/python2.6/site-packages/twisted/internet/_sslverify.py:4:
DeprecationWarning: the md5 module is deprecated; use hashlib instead
import itertools, md5
/opt/pyvk-t/pyvkt/component.py:40: DeprecationWarning: the sha module is
deprecated;
use the hashlib module instead
import sys,os,platform,threading,signal,cPickle,sha,time,ConfigParser
{'debug': {'dump_path': None}, 'storage': {'datadir': u'./data', 'cache':
u'./cache',
'cookies': u'./cookies'}, 'workarounds': {'fix_namespaces': False}, 'features':
{'status': '', 'sync_status': False, 'avatars': False}, 'general': {'jid':
u'pyvk-t.localhost', 'admin': None, 'service_name': u'pyvk-t', 'server':
u'localhost', 'secret': u'###', 'port': ###}}
* 2009-11-19 22:19:00,254 [DEB] getPacket[MainThread]: received <stream:error
xmlns:stream="http://etherx.jabber.org/streams"><not-authorized
xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error>
* 2009-11-19 22:19:00,257 [CRI] <module>[MainThread]: can't connect
Original comment by jahrave@gmail.com
on 19 Nov 2009 at 7:23
Локально запустил сервер Prosody. Так такая же
ошибка.
Копаю.
Original comment by mro...@gmail.com
on 19 Nov 2009 at 7:29
[deleted comment]
Обновись до 183, тщательно проверь конфиги
транспорта и сервера.
Если не подключится, то логи с дебагом сюда.
Original comment by mro...@gmail.com
on 20 Nov 2009 at 3:21
./main.py -m debug
/usr/lib/python2.6/site-packages/twisted/internet/_sslverify.py:4:
DeprecationWarning: the md5 module is deprecated; use hashlib instead
import itertools, md5
/opt/pyvk-t/pyvkt/component.py:40: DeprecationWarning: the sha module is
deprecated;
use the hashlib module instead
import sys,os,platform,threading,signal,cPickle,sha,time,ConfigParser
{'debug': {'dump_path': None}, 'storage': {'datadir': u'./data', 'cache':
u'./cache',
'cookies': u'./cookies'}, 'workarounds': {'fix_namespaces': False}, 'features':
{'status': '', 'sync_status': False, 'avatars': False}, 'general': {'jid':
u'###',
'admin': None, 'service_name': u'pyvk-t', 'server': u'###', 'secret': u'###',
'port':
###}}
* 2009-11-20 19:02:29,959 [DEB] connect[MainThread]: Received server auth answer:
<?xml version='1.0' encoding='UTF-8'?><stream:stream
xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:component:accept"
from="###" id="dae48463">
* 2009-11-20 19:02:30,963 [DEB] getPacket[MainThread]: received <stream:error
xmlns:stream="http://etherx.jabber.org/streams"><not-authorized
xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error>
* 2009-11-20 19:02:30,963 [DEB] connect[MainThread]: Received handshake answer:
<stream:error xmlns:stream="http://etherx.jabber.org/streams"><not-authorized
xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error>
* 2009-11-20 19:02:30,963 [CRI] <module>[MainThread]: can't connect
Original comment by jahrave@gmail.com
on 20 Nov 2009 at 4:04
Проверяй пароли. Я только в этом вижу
проблему пока.
Original comment by mro...@gmail.com
on 20 Nov 2009 at 7:20
В смысле secret? Дак я его тупо скопировал из
старого конфига. Ну, попробую совсем
отключить проверку, но вряд ли в этом
проблема.
Original comment by jahrave@gmail.com
on 20 Nov 2009 at 9:39
Отключить не получилось, в яве мало что
понимаю. Пробовал менять сикрет, ноль
реакции. С неверным ошибка действительно
та же. Но данные-то верны!
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 12:00
Это бока из-за openfir'a. У меня тоже самое было,
парился неделю. В итоге поставил
ejabberd и всё завелось. Не знаю в чем причина у
тебя точно, но я решил её так. У
меня всё было точно как у тебя в логе.
Original comment by antonbib...@gmail.com
on 21 Nov 2009 at 1:25
jahrave, попробуй ловить пакеты Wireshark'ом и
смотреть что там выдают обе стороны..
(если есть такая возможность)
Original comment by mro...@gmail.com
on 21 Nov 2009 at 1:29
Поставил wireshark, попробую разобраться.
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 2:03
Как-то так:
http://dumpz.org/14515/
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 3:23
[deleted comment]
Таак.. Из этого видим..
id=9fb2ef66
handshake=c3d138417f96e4f6d641d6f4de333719f9f1d8ac
Так ну это уже радует. Т.е. транспорт
отвечает. И думается мне, что верно
отвечает.
Хорошо бы ещё знать какое значение
хэндшейка требует опенфайр.
Original comment by mro...@gmail.com
on 21 Nov 2009 at 4:06
Не знаю, насколоько это поможет, ибо,
повторюсь, в яве не секу, но код тут:
http://www.java2s.com/Open-Source/Java-Document/Net/openfire/org/jivesoftware/op
enfire/session/LocalComponentSession.java.htm
где-то со строки 188.
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 4:56
Пазыкал туда.
189: Element doc = reader.parseDocument().getRootElement();
190: String digest = "handshake".equals(doc.getName()) ? doc
191: .getStringValue() : "";
192: String anticipatedDigest =
AuthFactory.createDigest(session
193: .getStreamID().getID(), secretKey);
194: // Check that the provided handshake (secret key +
sessionID)
is correct
195: if (!anticipatedDigest.equalsIgnoreCase(digest)) {
Единственное что могу порекомендовать..
Это пазыкать что он получает в digest, мб там
какая-нибудь ерунда, а не актуальное
значение, которое высылает транспорт.
Сделаем так:
190: String digest = "handshake".equals(doc.getName()) ? doc
191: .getStringValue() : "";
192: Log.debug("LocalComponentSession: Received handshake: "
+
digest);
Ну и дебаг нужен после этого.
Original comment by mro...@gmail.com
on 21 Nov 2009 at 5:52
Хм, совпадает:
openfire debug:
2009.11.21 23:44:48 LocalComponentSession: Received handshake:
c3d138417f96e4f6d641d6f4de333719f9f1d8ac
tshark:
0000 00 00 00 00 00 00 00 00 00 00 00 00 08 00 45 00 ..............E.
0010 00 73 2d fc 40 00 40 06 72 6e 5b bd 71 50 5b bd .s-.@.@.rn[.qP[.
0020 71 50 cc 16 ac f3 2e 4e f7 6c 2e 64 dd 44 80 18 qP.....N.l.d.D..
0030 02 12 9a 80 00 00 01 01 08 0a 6c 55 db 19 6c 55 ..........lU..lU
0040 db 16 3c 68 61 6e 64 73 68 61 6b 65 3e 63 33 64 ..<handshake>c3d
0050 31 33 38 34 31 37 66 39 36 65 34 66 36 64 36 34 138417f96e4f6d64
0060 31 64 36 66 34 64 65 33 33 33 37 31 39 66 39 66 1d6f4de333719f9f
0070 31 64 38 61 63 3c 2f 68 61 6e 64 73 68 61 6b 65 1d8ac</handshake
0080 3e >
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 8:48
Так а если в 195 строчке убрать "!"
То есть получится так:
195: if (anticipatedDigest.equalsIgnoreCase(digest)) {
Эксперимента ради: пароли сделай разные, ну
на один символ поменяй, если не
пропустит, то баг был в этом.
Original comment by ptznig...@gmail.com
on 21 Nov 2009 at 8:57
main.py -m debug:
* 2009-11-22 00:55:04,427 [DEB] connect[MainThread]: Received server auth answer:
<?xml version='1.0' encoding='UTF-8'?><stream:stream
xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:component:accept"
from="npyvk-t.hack.lgg.ru" id="b7989bce">
openfire debug:
2009.11.22 00:55:04 InternalComponentManager: Registering component for domain:
npyvk-t
2009.11.22 00:55:04 InternalComponentManager: Component registered for domain:
npyvk-t
2009.11.22 00:55:04 LocalComponentSession: [ExComp] External component was
registered
SUCCESSFULLY with domain: npyvk-t
Но в списке сервисов транспорта не видно.
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 9:58
От того, правильный сикрет или нет, ничего
не меняется.
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 10:00
[deleted comment]
Нет, вру, если верный, то вылетает:
Traceback (most recent call last):
File "./main.py", line 46, in <module>
if not
s.connect(conf.get("general","server"),conf.get("general","port"),conf.get("gene
ral","secret")):
File "/opt/pyvk-t/pyvkt/comstream.py", line 83, in connect
handshake_answer=self.getPacket(True)
File "/opt/pyvk-t/pyvkt/comstream.py", line 126, in getPacket
c=self.sock.recv(1)
MemoryError
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 10:31
Просто не сразу почему-то, а спустя минут
пять.
Опенфая в своё время выбрал потому, что там
лучше всего реализован хер-136
(сервер-сайд хистори), а в этом просоди с
херами как-то совсем негусто.
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 10:38
Понятно, он зацикливается потому, что не
может найти конца тега ">" и поэтому
вылетает с MemoryError.
Теперь надо посмотреть вайршарком что
сервер отправляет на верный хэндшэйк.
З.Ы. Просоди разрабатывается. И даже пеп там
есть, что меня и порадовало..
Original comment by mro...@gmail.com
on 21 Nov 2009 at 10:54
И ещё..
211: writer.write("<handshake></handshake>");
Заменим на
211: writer.write("<handshake/>");
Original comment by mro...@gmail.com
on 21 Nov 2009 at 10:56
http://dumpz.org/14530/
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 11:05
это я ещё не прочитал коммент 32, сейчас
пересоберу
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 11:06
Подключилось, транспорт в ростере видит. Не
регистрирует, правда, но и твистед версия
тоже не регистрировала.
http://dumpz.org/14532/
* 2009-11-22 02:26:53,525 [DEB] connect[MainThread]: Received server auth answer:
<?xml version='1.0' encoding='UTF-8'?><stream:stream
xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:component:accept"
from="pyvk-t.hack.lgg.ru" id="81ca73f5">
* 2009-11-22 02:26:54,528 [DEB] getPacket[MainThread]: received <handshake/>
* 2009-11-22 02:26:54,528 [DEB] connect[MainThread]: Received handshake answer:
<handshake/>
* 2009-11-22 02:26:54,529 [WAR] <module>[MainThread]: connected
* 2009-11-22 02:26:54,531 [DEB] getPacket[receiver]: received <iq type="get"
id="26-254" from="component.hack.lgg.ru" to="pyvk-t.hack.lgg.ru"><query
xmlns="http://jabber.org/protocol/disco#info"/></iq>
* 2009-11-22 02:26:54,532 [INF] main[MainThread]: starting mainloop-0
* 2009-11-22 02:26:54,532 [DEB] sendLoop[sender]: sending <message
to="pyvk-t.hack.lgg.ru" from="pyvk-t.hack.lgg.ru" id="msg6014"
type="chat"><body>1258846014</body></message>
* 2009-11-22 02:26:54,533 [INF] onIq[mainloop-0]: RECV: iq (get)
component.hack.lgg.ru -> pyvk-t.hack.lgg.ru
* 2009-11-22 02:26:54,533 [INF] getQuery[mainloop-0]: query ns:
http://jabber.org/protocol/disco#info
* 2009-11-22 02:26:54,535 [DEB] sendLoop[sender]: sending <iq
to="component.hack.lgg.ru" from="pyvk-t.hack.lgg.ru" id="26-254"
type="result"><query
xmlns="http://jabber.org/protocol/disco#info"><identity category="gateway"
type="vkontakte.ru" name="npyvk-t"/><feature var="jabber:iq:register"/><feature
var="jabber:iq:gateway"/><feature var="jabber:iq:version"/><feature
var="jabber:iq:last"/><feature
var="http://jabber.org/protocol/commands"/><feature
var="http://jabber.org/protocol/stats"/><feature
var="urn:xmpp:receipts"/></query></iq>
* 2009-11-22 02:26:55,532 [DEB] getPacket[receiver]: received <message
to="pyvk-t.hack.lgg.ru" from="pyvk-t.hack.lgg.ru" id="msg6014"
type="chat"><body>1258846014</body></message>
* 2009-11-22 02:26:55,548 [INF] onMsg[MainThread]: RECV: msg pyvk-t.hack.lgg.ru ->
pyvk-t.hack.lgg.ru '<Element body at 87a7a2c>'
* 2009-11-22 02:27:04,537 [INF] sendLoop[sender]: sending keepalive
* 2009-11-22 02:27:04,537 [DEB] sendLoop[sender]: sending <iq
to="pyvk-t.hack.lgg.ru" from="pyvk-t.hack.lgg.ru" id="keepalive"/>
* 2009-11-22 02:27:05,531 [DEB] getPacket[receiver]: received <iq
to="pyvk-t.hack.lgg.ru" from="pyvk-t.hack.lgg.ru" id="keepalive"/>
* 2009-11-22 02:27:05,547 [INF] onIq[mainloop-0]: RECV: iq (None)
pyvk-t.hack.lgg.ru -> pyvk-t.hack.lgg.ru
* 2009-11-22 02:27:05,548 [INF] onIq[mainloop-0]: keepalive received
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 11:29
Нет, регистрируется нормально, транспорт
работает.
Original comment by jahrave@gmail.com
on 21 Nov 2009 at 11:44
[deleted comment]
Original comment by mro...@gmail.com
on 22 Nov 2009 at 7:53
Поставил pyicq-t, оно подключается к openfire
только при неверном сикрете (в связи со
сделанными изменениями). Т.е. опенфая до
изменений работал нормально.
Original comment by jahrave@gmail.com
on 23 Nov 2009 at 12:34
общение openfire с pyvk-t и pyicq-t со строки 225:
http://dumpz.org/14568/
Сикрет одинаковый и неверный.
Original comment by jahrave@gmail.com
on 23 Nov 2009 at 1:39
Original issue reported on code.google.com by
jahrave@gmail.com
on 19 Nov 2009 at 11:30