Also, hai leuts,
ich habe mal angefangen einen DynDNS Updater zu schreiben, womit ich dann ganz einfach einen ausweichserver einlinken kann... nun leider hackt es ein wenig beim auslesen der DNS namen, also der hosts... stringsplit will da irgendwie nicht mitmachen...
ich habs unter windows xp noch nicht getestet aber win 7 sollte ja nicht zum problem werden...
bitte schaut mal ob ihr etwas fehlerhaftes von mir findet, ist sicher ein doofer fehler...
Spoiler anzeigen
#include "dnsupd_gui.au3"
#include <IE.au3>
#include <Inet.au3>
#include <String.au3>
Global $mpar = "go"
_onEvent("start") ; This must be the first!!!
savedata("start")
GUIcontrol("start")
account_login("start")
server_set("serverlist")
While True
Sleep(300)
loopcommand("loop")
WEnd
Func GUIcontrol($mpar, $par1="", $par2="")
Switch $mpar
Case "start"
Global $gui
Global $gui_l_loggedon, $gui_i_username, $gui_i_password, $gui_b_acconect
Global $gui_i_aservadd, $gui_l_aservstate, $gui_b_aservload, $gui_b_aservact
Global $gui_l_acclink, $gui_b_sendip, $gui_b_getaccstate
Global $gui_l_myip, $gui_b_loadip, $gui_b_startservice
GenerateGUI()
GUICtrlSetData($gui_i_username, $sav_username)
GUICtrlSetData($gui_i_password, $sav_password)
GUICtrlSetData($gui_i_aservadd, $sav_aserv)
server_set("getmyip")
_onEvent("create", $gui, -3, "GUIcontrol", "disappear")
_onEvent("create", $gui, $gui_b_acconect, "account_login", "userlogin")
_onEvent("create", $gui, $gui_b_loadip, "server_set", "getmyip")
Case "disappear"
GUISetState(@SW_HIDE, $gui)
EndSwitch
EndFunc
Func account_login($mpar, $par1="")
Switch $mpar
Case "start"
Global $active = False
_IELoadWaitTimeout(23000);23 sec.
Global $oIE = _IECreate("https://www.dyndns.com/account/")
account_login("login")
Case "checklogin"
_IENavigate($oIE, "https://www.dyndns.com/account/")
$DOM = _IEDocReadHTML($oIE)
If StringInStr($DOM, "Lost Password?") <> 0 Then
Return False
EndIf
Return True
Case "login"
GUICtrlSetData($gui_l_loggedon, "Überprufen...")
If not account_login("checklogin") Then
GUICtrlSetData($gui_l_loggedon, "Einloggen...")
_IENavigate($oIE, "https://www.dyndns.com/account/")
$DOM = _IEDocReadHTML($oIE)
$ar = StringSplit($DOM, "toplogin", 1)
$ar2 = StringSplit($ar[2], "login", 1)
$ar3 = StringSplit($ar2[2], "' ")
$gObjNum = $ar3[1]
_IEFormElementSetValue(_IEGetObjById($oIE, "login"&$gObjNum&"_username"), $sav_username)
_IEFormElementSetValue(_IEGetObjById($oIE, "login"&$gObjNum&"_password"), $sav_password)
_IEAction(_IEGetObjById($oIE, "login"&$gObjNum&"_submit"), "click")
_IELoadWait($oIE)
If StringInStr(_IEDocReadHTML($oIE), "Username or password did not match.") <> 0 Then
GUICtrlSetData($gui_l_loggedon, "Fehler!")
Return 0
EndIf
EndIf
GUICtrlSetData($gui_l_loggedon, "Ja")
Case "logout"
;Logout
Case "userlogin"
savedata("saveusr", GUICtrlRead($gui_i_username))
savedata("savepwd", GUICtrlRead($gui_i_password))
account_login("login")
EndSwitch
EndFunc
Func server_set($mpar, $par1="")
Switch $mpar
Case "sendmyip"
Case "sendaserv"
Case "getlink"
Case "serverlist"
_IENavigate($oIE, "https://www.dyndns.com/account/services/hosts/")
_IELoadWait($oIE, 100)
$DOM = _IEDocReadHTML($oIE)
$ar = StringSplit($DOM, "table", 1)
$ar2 = StringSplit($ar[2], 'tr', 1)
Dim $aRet[$ar2[0]]
For $count = 3 To $ar2[0] Step 2
$ar3 = StringSplit($ar2[$count], '"')
$aRet[$count-1] = $ar3[4]
Next
$aRet[0] = $ar2[0]-1
;debug-s
$string = ""
For $count = 1 To $aRet[0]
$string &= $aRet[$count]&"; "
Next
MsgBox(0, "debug check - server list", $string)
;debug-e
Return $aRet
Case "getmyip"
$localIP = _GetIP()
GUICtrlSetData($gui_l_myip, $localIP)
Case "exit"
If $active Then
server_set("sendaserv")
EndIf
account_login("logout")
Exit
EndSwitch
EndFunc
Func loopcommand($mpar, $par1="")
Switch $mpar
Case "start"
;Nothing
Case "loop"
If $active Then
server_set("loopgetip")
EndIf
Case "activate"
If $active Then
$active = False
GUICtrlSetData($gui_b_startservice, "Dienst STARTen")
Else
$active = True
GUICtrlSetData($gui_b_startservice, "Dienst STOPPen")
EndIf
EndSwitch
EndFunc
Func savedata($mpar, $par1="")
Switch $mpar
Case "start"
Global $sav_username = IniRead("dnsupd.ini", "account", "username", "Unbekannt")
Global $sav_password = _StringEncrypt(0, IniRead("dnsupd.ini", "account", "userid", "48F32E4F79617F3B3E2FE7CC30CDA50955DD"), "AHE36AGFDG36XGSDF756")
Global $sav_aserv = IniRead("dnsupd.ini", "account", "sec_server", "dein.ausweichserver.com")
Case "saveusr"
IniWrite("dnsupd.ini", "account", "username", $par1)
$sav_username = $par1
Case "savepwd"
IniWrite("dnsupd.ini", "account", "userid", _StringEncrypt(1, $par1, "AHE36AGFDG36XGSDF756"))
$sav_password = $par1
Case "saveserv"
IniWrite("dnsupd.ini", "account", "sec_server", $par1)
$sav_aserv = $par1
EndSwitch
EndFunc
Func _onEvent($mpar="go", $par0="0x0", $par1="0x0", $par2="", $par3="", $par4="")
Switch $mpar
Case "go"
For $count = 1 To $_onEvent_events[0][0]
If Not $_onEvent_loopTimeout Then
If $_onEvent_events[$count][0] = @GUI_CtrlId Or ($_onEvent_events[$count][4] = @GUI_WinHandle And $_onEvent_events[$count][0] = @GUI_CtrlId) Then
Call($_onEvent_events[$count][1], $_onEvent_events[$count][2], $_onEvent_events[$count][3])
Return 1
EndIf
Else
$_onEvent_loopTimeout = False
Return 0
EndIf
Next
Case "create"
$_onEvent_events[0][0] += 1
ReDim $_onEvent_events[$_onEvent_events[0][0]+1][5]
$_onEvent_events[$_onEvent_events[0][0]][4] = $par0 ;Fenster
$_onEvent_events[$_onEvent_events[0][0]][0] = $par1 ;ControlId
$_onEvent_events[$_onEvent_events[0][0]][1] = $par2 ;Funktion
$_onEvent_events[$_onEvent_events[0][0]][2] = $par3 ;Par1
$_onEvent_events[$_onEvent_events[0][0]][3] = $par4 ;Par2
GUISwitch($par0)
If $par1 > 0 Then
GUICtrlSetOnEvent($par1, "_onEvent")
Else
GUISetOnEvent($par1, "_onEvent")
EndIf
If @error Then
MsgBox(16, "fatal error", "onevent failed")
EndIf
Case "destruct"
For $count = 1 To $_onEvent_events[0][0]
If $_onEvent_events[$count][4] = $par0 And $_onEvent_events[$count][0] = $par1 Then
$_onEvent_events[$count][4] = $_onEvent_events[$_onEvent_events[0][0]][4]
$_onEvent_events[$count][0] = $_onEvent_events[$_onEvent_events[0][0]][0]
$_onEvent_events[$count][1] = $_onEvent_events[$_onEvent_events[0][0]][1]
$_onEvent_events[$count][2] = $_onEvent_events[$_onEvent_events[0][0]][2]
$_onEvent_events[$count][3] = $_onEvent_events[$_onEvent_events[0][0]][3]
ReDim $_onEvent_events[$_onEvent_events[0][0]][5]
$_onEvent_events[0][0] -= 1
$_onEvent_loopTimeout = True
ExitLoop
EndIf
Next
Case "start"
Opt("GUIOnEventMode", 1)
Opt("TrayOnEventMode", 1)
Global $_onEvent_events[1][5]
$_onEvent_events[0][0] = 0
Global $_onEvent_loopTimeout = False
EndSwitch
EndFunc
EDIT: im bereich der linie 86 hackt es...