Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   AutoIt и Jabber (http://forum.oszone.net/showthread.php?t=181575)

morgan1991 27-07-2010 21:56 1461780

AutoIt и Jabber
 
Здравствуйте!
Вот возникла такая проблема, никак не могу понять принцип работы с сервером Jabber.
Возьмём например сервер vk.com.
Настроил свой qip следующим образом, логин - test@my_ip, пароль - test.
Qip отправил следующюю строку:
Цитата:

<?xml version='1.0' encoding='UTF-8'?><stream:stream to='my_ip' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'>
И судя по всему ждал какогото ответа от сервера. Я попробовал отправить на vk.com тоже самое, но в ответ ничего не получил.
Отправлял строку следующим образом:
Код:

TCPStartup()

$server = "vk.com"
$Port = "5222"

$jid = "login"
$jidpass = "pass"

$socket = TCPConnect(TCPNameToIP($server), $Port)
If $socket = -1 Then Exit

;  look for client connection
;--------------------

$data = "<?xml version='1.0' encoding='UTF-8'?><stream:stream to='" & $server & "' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'>"

TCPSend($socket, $data)

While 1
    $recv = TCPRecv($socket, 4098)
    If $recv <> "" Then ConsoleWrite($recv)
WEnd

Помогите пожалуйста, в чём моя ошибка?

kaster 27-07-2010 22:07 1461790

Может это тебе поможет
JAdmin v2.0 + Plugins!

morgan1991 27-07-2010 23:42 1461842

kaster, я его уже качал, но ничего не понял...
Хотяб на словах, кто знает, скажите в чём косяк?

beve 28-07-2010 21:32 1462463

Цитата:

Цитата morgan1991
Хотяб на словах, кто знает, скажите в чём косяк? »

Вот простенько, думаю сам разберешся что к чему, проверял на своему аккаунте, у меня на jabber.ru, как видно из примера - авторизация и получение сообщений работает, думаю ты это хотел узнать для начала:

Код:

TCPStartup()


;прикинем, что наш ак на jabber такой: login@jabber.ru, тогда
$jidname="login"
$server = "jabber.ru"
$jidpass = "пароль"
$Port = "5222"


_JabHello($server)
_JabAuth($jidname, $jidpass, "jjjjjjj")

While 1
   
$recv =
TCPRecv($socket, 2048)
   
If $recv <> "" Then
ConsoleWrite($recv&@LF)
Sleep(30)
WEnd



Func
_JabHello($JabServ)
Global $socket =
TCPConnect(TCPNameToIP($JabServ),  $Port)
If $socket = -1 Then Exit
   
;A typical user authentication process
TCPSend($socket, "<?xml version='1.0' encoding='UTF-8' ?><stream:stream to='" & $JabServ & "' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>")
$recd =
TCPRecv($socket, 2048)
ConsoleWrite( "Ответ_на_JabHello_________________ "&$recd& @LF)
EndFunc
;_JabHello()

;We ask the server about the authentication methods available for our specific user:
Func _JabAuth($JabUser, $JabPass, $JabRes)
TCPSend($socket, "<iq type='get' to='" & $server & "' id='auth1'><query xmlns='jabber:iq:auth'><username>" & $JabUser & "</username></query></iq>")
$recd =
TCPRecv($socket, 2048)
ConsoleWrite("Ответ_на_Запрос_JabAuth______________ "& $recd& @LF)
TCPSend($socket, "<iq type='set' id='auth2'><query xmlns='jabber:iq:auth'><username>" & $JabUser & "</username><password>" & $JabPass & "</password><resource>" & $JabRes & "</resource></query></iq><presence type='available'></presence>")
EndFunc
;_JabAuth()


morgan1991 28-07-2010 23:52 1462545

Цитата:

Цитата beve
$jidname="login" $server = "jabber.ru" $jidpass = "пароль" $Port = "5222" »

С такими настройками возвращает:
Код:

Ответ_на_JabHello_________________
Ответ_на_Запрос_JabAuth______________
<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='2764011537' from='jabber.ru' xml:lang='ru'>
<iq type='result' from='jabber.ru' id='auth1'><query xmlns='jabber:iq:auth'><username>login</username><password/><digest/><resource/></query></iq><stream:error><xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>

А если ставлю сервер vk.com, тогда в консоль вообще ничего не выводится...
+ пришлось объявить переменную $socket до функций, т.к. выдавало ошибку.
Код:

TCPStartup()

;прикинем, что наш ак на jabber такой: login@jabber.ru, тогда
Global $socket
$jidname
="login"
$server = "jabber.ru"
$jidpass = "пароль"
$Port = "5222"

_JabHello($server)
_JabAuth($jidname, $jidpass, "jjjjjjj")

While 1
    $recv = TCPRecv($socket, 2048)
    If $recv <> "" Then ConsoleWrite($recv&@LF)
Sleep(30)
WEnd

Func _JabHello($JabServ)
    $socket = TCPConnect(TCPNameToIP($JabServ),  $Port)
    If $socket = -1 Then Exit
    ;A typical user authentication process
    TCPSend($socket, "<?xml version='1.0' encoding='UTF-8' ?><stream:stream to='" & $JabServ & "' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>")
    $recd = TCPRecv($socket, 2048)
    ConsoleWrite("Ответ_на_JabHello_________________ "&$recd& @LF)
EndFunc ;_JabHello()

;We ask the server about the authentication methods available for our specific user:

Func _JabAuth($JabUser, $JabPass, $JabRes)
    TCPSend($socket, "<iq type='get' to='" & $server & "' id='auth1'><query xmlns='jabber:iq:auth'><username>" & $JabUser & "</username></query></iq>")
    $recd = TCPRecv($socket, 2048)
    ConsoleWrite("Ответ_на_Запрос_JabAuth______________ "& $recd& @LF)
    TCPSend($socket, "<iq type='set' id='auth2'><query xmlns='jabber:iq:auth'><username>" & $JabUser & "</username><password>" & $JabPass & "</password><resource>" & $JabRes & "</resource></query></iq><presence type='available'></presence>")
EndFunc ;_JabAuth()



Время: 01:03.

Время: 01:03.
© OSzone.net 2001-