Hallo,
Ich Frage mich Langsam ob du C überhaupt kannst,
ich Behersche es leider nicht, aber du hättest anhand
der Beispiele in Netz schon längst den Login hin kriegen müssen.
Beim Session ID Login geht AVM wohl folgenden Weg
Man Ruft zuerst die login_sid.xml auf, existiert
diese Seite nicht dann wird der alte Login
Code:
sMode = "POST "
sLink = "http://" + sHost + "/cgi-bin/webcm"
sFormdata = "getpage=../html/de/menus/menu2.html&login:command/password=" + sPassword
durchgeführt, existiert aber die Login Seite
Code:
sMode = "POST "
sLink = "http://" + sHost + "/cgi-bin/webcm"
sFormdata = "getpage=../html/login_sid.xml"
dann werden die Werte
Code:
<SessionInfo>
<iswriteaccess>0</iswriteaccess>
<SID>0000000000000000</SID>
<Challenge>129b3320</Challenge>
</SessionInfo>
zurück gegeben, ist hier der Wert iswriteaccess = 0
dann wird ein Response aufgerufen mit dem Wert
was in Challenge steht und dem Passwort das eingegeben wurde.
Code:
sResponse = sChallenge + "-" + LCASE$(InMD5(sChallenge + "-" + makeDots(sPassword))) ' 25.07.2009
'
sFormdata = "getpage=../html/de/menus/menu2.html&login:command/response=" + sResponse
'
sRetHTTPTransferRT = HTTPTransferRT(sMode, sLink, sFormdata)
danach wenn der Login erfolgreich war steht dann die Session ID
im zurückgelieferten Response Text
Code:
<!-- Post Form -->
<form method="POST" action="../cgi-bin/webcm" target="_self" id="uiPostForm" name="uiPostForm">
<!-- Refresh Form -->
<input type="hidden" name="sid" value="13e41555bcc92250" id="uiPostSid">
<input type="hidden" name="getpage" value="../html/de/menus/menu2.html" id="uiPostGetPage">
<input type="hidden" name="errorpage" value="../html/de/menus/menu2.html" id="uiPostErrPage">
<input type="hidden" name="var:pagename" value="" id="uiPostPageName">
<input type="hidden" name="var:errorpagename" value="" id="uiPostErrorPageName">
<input type="hidden" name="var:menu" value="" id="uiPostMenu">
<input type="hidden" name="var:pagemaster" value="" id="uiPostPageMaster">
<input type="hidden" name="time:settings/time" value="" id="uiPostDateTime">
<input type="hidden" name="box:settings/webui_cookie" value="" disabled>
<!-- END Refresh Form -->
</form>
<!-- END Post Form -->
<form name="logoutForm" action="../cgi-bin/webcm" method="POST">
<input type="hidden" name="sid" value="13e41555bcc92250">
<input type="hidden" name="security:command/logout" value="">
<input type="hidden" name="getpage" value="../html/confirm_logout.html">
</form>
</body>
</html>
oder man Ruft so wie es AVM vorgesehen hat wieder die login_sid.xml auf
Code:
sMode = "POST "
sLink = "http://" + sHost + "/cgi-bin/webcm"
sFormdata = "sid=" + sRetSID + "&" + "getpage=../html/login_sid.xml"
wenn dann der Login erfolreich war dann müsste jetzt
die Session ID darin stehen und mann muss sie nur noch auslesen
Code:
<SessionInfo>
<iswriteaccess>1</iswriteaccess>
<SID>13e41555bcc92250</SID>
<Challenge>129b3320</Challenge>
</SessionInfo>
wenn der Wert iswriteaccess = 1 ist dann war der Login erfolgreich
und man hat jetzt eine gültige Session ID,
wenn der Wert iswriteaccess = 0 ist dann geht der
Login Spass wieder von vorne Los.
17.08.2011 Änderung hier:
Erst Login:
Code:
sRetSID = "0000000000000000"
sMode = "POST "
sLink = "http://" + sHost + "/cgi-bin/webcm"
sFormdata = "sid=" + sRetSID + "&" + "getpage=../html/login_sid.xml"
rückgabe:
Code:
<SessionInfo>
<iswriteaccess>0</iswriteaccess>
<SID>0000000000000000</SID>
<Challenge>129b3320</Challenge>
</SessionInfo>
zurück gegeben, ist hier der Wert iswriteaccess = 0
dann wird ein Response aufgerufen mit dem Wert
was in Challenge steht und dem Passwort das eingegeben wurde.
Code:
sResponse = sChallenge + "-" + LCASE$(InMD5(sChallenge + "-" + makeDots(sPassword))) ' 25.07.2009
'
sFormdata = "getpage=../html/login_sid.xml&login:command/response=" + sResponse
'
sRetHTTPTransferRT = HTTPTransferRT(sMode, sLink, sFormdata)
danach wenn der Login erfolgreich war steht dann die Session ID
im zurückgelieferten Response Text
Code:
<SessionInfo>
<iswriteaccess>1</iswriteaccess>
<SID>13e41555bcc92250</SID>
<Challenge>129b3320</Challenge>
</SessionInfo>
wenn dann der Login erfolreich war dann müsste jetzt
die Session ID darin stehen und mann muss sie nur noch auslesen
Jeder weitere Login mit übergabe der zuletzt erhaltenen SessionID
Code:
sRetSID = "13e41555bcc92250"
sMode = "POST "
sLink = "http://" + sHost + "/cgi-bin/webcm"
sFormdata = "sid=" + sRetSID + "&" + "getpage=../html/login_sid.xml"
Ist diese SessionID noch gültig bekommt man sie wieder zurück,
ansonsten bekommt man eine neue SessionID, nach dem ein Response erfolgt ist.
17.08.2011 Änderung
AVM 02.02.2012
AVM_Technical_Note_-_Session_ID.pdf
02.12.2012
Anhang anzeigen AVM_Technical_Note_Session-ID_Lua_02122012.txt
Gruß Erwin
:-Ö :done: