#cs ---------------------------------------------------------------------------- AutoIt Version: 3.1.1.0 Author: myName Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include <GUIConstants.au3> #include <GUICombo.au3> #include <Misc.au3> #include <INet.au3> Opt("GUIOnEventMode", 1) ;Opt("TCPTimeout",5000) Dim $OptsWin, $optsok, $optscanc, $optsjid, $optspass, $optsrad1, $optsrad2 GUICreate("JabberIt", 500, 555) GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") $lblcon = GUICtrlCreateLabel("XMPP Console:", 7, 7, 80, 20) $lblmain = GUICtrlCreateEdit("", 5, 25, 490, 195, BitOR($WS_VSCROLL, $ES_READONLY)) $lblcon = GUICtrlCreateLabel("Chat Console:", 5, 227, 80, 20) $lblchat = GUICtrlCreateEdit("", 5, 245, 490, 195, BitOR($WS_VSCROLL, $ES_READONLY)) $usercmb = GUICtrlCreateCombo("Select JID...", 7, 445, 250, 20) ;$input1 = GUICtrlCreateInput("abu_rashid@.ibrahim.ms", 5, 445, 150, 20) $input2 = GUICtrlCreateInput("", 7, 470, 251, 20) $btnacc = GUICtrlCreateButton("Options", 295, 457, 60, 22) GUICtrlSetOnEvent(-1, "AccOpts") $btnacc = GUICtrlCreateButton("Subscribe", 295, 487, 60, 22) GUICtrlSetOnEvent(-1, "_Subscribe") GUICtrlCreateGroup ("Translation:", 370, 450, 70, 95) $nolang = GUICtrlCreateRadio ("None", 375, 465, 60, 20) $langfr = GUICtrlCreateRadio ("French", 375, 485, 60, 20) $langes = GUICtrlCreateRadio ("Spanish", 375, 505, 60, 20) $langit = GUICtrlCreateRadio ("Italian", 375, 525, 60, 20) GUICtrlCreateGroup ("",-99,-99,1,1) GUICtrlSetState ($nolang, $GUI_CHECKED) $optsfile = @scriptdir & "\jabberit.ini" $jid = IniRead($optsfile, "Account", "jid", "test@jabber.org") $server = StringTrimLeft($jid, StringInStr($jid, "@")) $jidname = StringTrimRight($jid, StringLen($jid) - StringInStr($jid, "@") + 1) $jidpass = IniRead(@scriptdir & "\jabberit.ini", "Account", "pass", "") $hello = "<?xml version='1.0' encoding='UTF-8' ?><stream:stream to='" & $server & "' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>" $login1 = "<iq type='get' to='" & $server & "' id='auth1'><query xmlns='jabber:iq:auth'><username>" & $jidname & "</username></query></iq>" $login2 = "<iq type='set' id='auth2'><query xmlns='jabber:iq:auth'><username>" & $jidname & "</username><password>" & $jidpass & "</password><resource>jabberit</resource></query></iq>" ;$message = "<message to='abu_rashid@bayt.ibrahim.ms' type='normal'><body>Saluton Mondo!</body></message>" GUISetState(@SW_SHOW) TCPStartUp() $socket = TCPConnect(TCPNameToIP($server), 5222 ) If $socket = -1 Then msgbox(1, "Failed to Connect", "Connection failure occured") Exit EndIf _ProgInit() While 1 if _IsPressed("0D") And GUICtrlRead($input2) <> "" Then SendText() Sleep(100) _JabPoll() WEnd Func _ProgInit() Select Case FileExists($optsfile) $jid = IniRead($optsfile, "Account", "jid", "test@jabber.org") $server = StringTrimLeft($jid, StringInStr($jid, "@")) $jidname = StringTrimRight($jid, StringLen($jid) - StringInStr($jid, "@") + 1) $jidpass = IniRead(@scriptdir & "\jabberit.ini", "Account", "pass", "") Case RegRead("HKEY_LOCAL_MACHINE\Software\JabberIt", "JID") <> "" $jid = RegRead("HKEY_LOCAL_MACHINE\Software\JabberIt", "JID") $server = StringTrimLeft($jid, StringInStr($jid, "@")) $jidname = StringTrimRight($jid, StringLen($jid) - StringInStr($jid, "@") + 1) $jidpass = RegRead("HKEY_LOCAL_MACHINE\Software\JabberIt", "Pass") Case Else AccOpts() WinWaitClose("Account") $jid = IniRead($optsfile, "Account", "jid", "test@jabber.org") $server = StringTrimLeft($jid, StringInStr($jid, "@")) $jidname = StringTrimRight($jid, StringLen($jid) - StringInStr($jid, "@") + 1) $jidpass = IniRead(@scriptdir & "\jabberit.ini", "Account", "pass", "") EndSelect _JabHello($server) _JabAuth($jidname, $jidpass, "jabberit") EndFunc Func CLOSEClicked() TCPsend($socket, "</stream:stream>") TCPCloseSocket($socket) TCPShutdown() Exit EndFunc Func AccOpts() $OptsWin = GUICreate("Account", 265, 130) GUISetOnEvent($GUI_EVENT_CLOSE, "CloseAccOpts") $optsjid = GUICtrlCreateInput("Enter JID...", 15, 15, 150, 22) $optspass = GUICtrlCreateInput("Enter Pass...", 15, 45, 150, 22) $optsok = GUICtrlCreateButton("Ok", 70, 90, 60, 22) GUIctrlSetOnEvent(-1, "UpdateAccOpts") $optscanc = GUICtrlCreateButton("Cancel", 140, 90, 60, 22) GUIctrlSetOnEvent(-1, "CloseAccOpts") GUICtrlCreateGroup ("Store in:", 180, 10, 70, 60) $optsrad1 = GUICtrlCreateRadio ("Registry", 185, 25, 60, 20) $optsrad2 = GUICtrlCreateRadio ("INI File", 185, 45, 60, 20) GUICtrlCreateGroup ("",-99,-99,1,1) GUICtrlSetState ($optsrad2, $GUI_CHECKED) GUISetState(@SW_SHOW) EndFunc Func UpdateAccOpts() IniWrite($optsfile, "Account", "jid", GUICtrlRead($optsjid)) IniWrite($optsfile, "Account", "pass", GUICtrlRead($optspass)) CloseAccOpts() EndFunc Func CloseAccOpts() GUIDelete($OptsWin) EndFunc Func SendText() $typed = GUICtrlRead($input2) GUICtrlSetData($input2, "") Select Case BitAND(GUICtrlRead($nolang), $GUI_CHECKED) = $GUI_CHECKED _JabMsg(GUICtrlRead($usercmb), $typed) Case BitAND(GUICtrlRead($langfr), $GUI_CHECKED) = $GUI_CHECKED _JabMsg(GUICtrlRead($usercmb), _Translate("fr", $typed)) Case BitAND(GUICtrlRead($langes), $GUI_CHECKED) = $GUI_CHECKED _JabMsg(GUICtrlRead($usercmb), _Translate("es", $typed)) Case BitAND(GUICtrlRead($langit), $GUI_CHECKED) = $GUI_CHECKED _JabMsg(GUICtrlRead($usercmb), _Translate("it", $typed)) EndSelect EndFunc ; Func AddUser($uname) If Not StringInStr(_GUICtrlComboGetList($usercmb), $uname) Then GUICtrlSetData($usercmb, $uname) EndFunc ;Func _ChatWin($JIDWin) ; $chatwin = GUICreate("Chat with: " $JIDWin, 400, 400) ; $lblchat = GUICtrlCreateEdit("", 5, 5, 390, 195, BitOR($WS_VSCROLL, $ES_READONLY, $ES_AUTOVSCROLL)) ;EndFunc ;#####-#####-(Future Jabber UDF begins here)-#####-##### Func _JabHello($JabServ) $socket = TCPConnect(TCPNameToIP($JabServ), 5222) If $socket = -1 Then CLOSEClicked() 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) ;GUICtrlSetData($lblmain, guictrlread($lblmain) & $recd) EndFunc 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) ;GUICtrlSetData($lblmain, guictrlread($lblmain) & $recd) 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>") ;$rece = TCPRecv($socket, 2048) ;GUICtrlSetData($lblmain, guictrlread($lblmain) & $rece) EndFunc Func _JabMsg($Target, $Message) TCPSend($socket, "<message to='" & $Target & "' type='normal'><body>" & $Message & "</body></message>") EndFunc Func _JabPoll() $recv = TCPRecv($socket, 2048) if $recv <> "" then GUICtrlSetData($lblmain, $recv, "-") ;Write raw msg to XMPP console If StringInStr($recv, "<message ") And StringInStr($recv, "<body>") Then ;Message Event _JabHandleMSG(StringTrimLeft($recv, StringInStr($recv, "<message "))) EndIf If StringInStr($recv, "<presence ") Then ;Presence Event _JabHandlePRES(StringTrimLeft($recv, StringInStr($recv, "<presence from="))) EndIf ;GUICtrlSetData($lblmain, @CRLF & "No handleable XMPP events detected" & @CRLF, "-") EndIf EndFunc Func _JabHandleMSG($recv) $from1 = StringTrimLeft($recv, StringInStr($recv, "from=") + 5) $from = StringTrimRight($from1, StringLen($from1) - StringInStr($from1, """") + 1) $body = StringInStr($recv, "<body>") + 5 $body2 = StringLen($recv) - StringInStr($recv, "</body>") + 1 $messbod = StringTrimRight(StringTrimLeft($recv, $body), $body2) GUICtrlSetData($lblchat, "<" & $from & "> " & $messbod & @CRLF , "-") ; Write sanitised msg to chat console EndFunc Func _JabHandlePRES($recv) $from1 = StringTrimLeft($recv, StringInStr($recv, "from=") + 5) $from = StringTrimRight($from1, StringLen($from1) - StringInStr($from1, """") + 1) If StringInStr($recv, "type=""subscribe") Then TCPSend($socket, '<presence to="' & $from & '" type="subscribed" from="' & $jidname & '"/>') EndIf AddUser($from) EndFunc Func _Subscribe() $uname = GUICtrlRead($usercmb) If StringInStr($uname, "/") Then $uname = StringTrimRight($uname, StringLen($uname) - StringInStr($uname, "/") + 1) EndIf TCPSend($socket, '<presence to="' & $uname & '" type="subscribe" from="' & $jidname & '"/>') MsgBox(1, "Subscription Request", "You have sent a subscription request to: " & $uname) EndFunc Func _JabPoll2() $recv = TCPRecv($socket, 2048) if $recv <> "" then GUICtrlSetData($lblmain, $recv, "-") ;Write raw msg to XMPP console if StringInStr($recv, "<message type=") And StringInStr($recv, "<body>") Then ;We have actually received a message. $from1 = StringTrimLeft($recv, StringInStr($recv, "from=") + 5) $from = StringTrimRight($from1, StringLen($from1) - StringInStr($from1, ">") + 2) $body = StringInStr($recv, "<body>") + 5 $body2 = StringLen($recv) - StringInStr($recv, "</body>") + 1 $messbod = StringTrimRight(StringTrimLeft($recv, $body), $body2) GUICtrlSetData($lblchat, "<" & $from & "> " & $messbod & @CRLF , "-") ; Write sanitised msg to chat console EndIf if StringInStr($recv, "<presence from=") And StringInStr($recv, "<priority>") Then $from1 = StringTrimLeft($recv, StringInStr($recv, "from=") + 5) $from = StringTrimRight($from1, StringLen($from1) - StringInStr($from1, " ") + 2) AddUser($from) ; Add user to username/contacts combo EndIf $recv = "" EndIf EndFunc ;+++++Extras+++++; Func _Translate($lang, $transtext) $getsrc = _INetGetSource('http://google.ca/translate_t?text=' & $transtext & '&langpair=en%7C' & $lang & '&hl=en&ie=UTF8') $translated1 = stringTrimleft($getsrc, StringInStr($getsrc, "id=result_box dir=ltr>") + 21) $translated2 = StringTrimRight($translated1, StringLen($translated1) - StringInStr($translated1, "</div></td></tr><tr><td id=submitcell>") + 2) Return($translated2) EndFunc |