Skripti, joka hakee ReturnHMTL:llä verkkopäätteen web-pohjaisesta hallinnasta ADSL statuksen toimii muuten ok, mutta esteenä on verkkopäätteen hallintaan pääsyyn vaadittu admin login.
Miten Visual Basicillä määritellään nk. autologin? Eli kun skripti noutaa lähiverkon osoitteesta http://192.168.1.1 halutut tiedot, kirjaudutaan kohteeseen ensin tietyllä käyttäjätunnuksella ja salasanalla.
P.S. Login -ruutu on normaali Windowsin pop-up login -ikkuna, mikäli sillä on merkitystä.
Tuollasta kokeilin, ei tunnu toimivan, osaako joku sano miksei?
Dim postData As String
postData = "username=admin&password=1234"
Dim request As HttpWebRequest
request = CType(WebRequest.Create("http://192.168.1.1"), HttpWebRequest)
request.Method = "POST"Ainakaan tuota post dataa ei tuon koodin mukaan liitetä mihinkään. Pastea vähän lisää koodia niin asia selkenee.
EDIT: Voithan lähettää vaikka winsockilla oman http requestin, jolloin ainakin saat juuri haluamasi datan lähtemään.
No, lisää koodia tuohon login -osioon ei ole. :) Mitenkäs post data tulisi liittää?
En tiedä käyttämästäsi http systeemistä tuon koodin perusteella kun ei ole tullut vb:tä käytettyä aikoihin, eikä sitä nyt ole mulla edes koneella asennettuna. Webbrowser kontrolli?
Mutta enivei, putkassa on winsock koodivinkkejä, ja googlella luulisi http-requesteista löytyvän runsaasti tietoa.
Tällaisella http-requestilla luulisi saavan siltä boksilta etusivun:
Dim request As String request = "GET / HTTP/1.1" & VbCrLf & "Connection: close" & VbCrLf & "Accept: */*" & VbCrLf & VbCrLf
Sitten winsockilla lähetät tuon "request"-stringin sinne boksille.
EDIT: ...ja se etusivu tulee sitten "paluupostissa" sieltä servulta kun olet lähettänyt tuon requestin, eli muista myös vastaanottaa data mitä winsock antaa.
Juu pitääpä tonkia noita koodivinkkejä. Tälläseen koodipohjaan törmäsin. Ajaako tuo haluamani asian kirjautumisen suhteen, kun en noista streameista ymmärrä hölkäsen pöläystä?
Dim postData As String
postData = "username=MyUserName&password=mysecretpassword1234"
Dim request As HttpWebRequest
Dim response As HttpWebResponse
request = CType(WebRequest.Create("http://10.0.0.1"), HttpWebRequest)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = postData.Length
request.Method = "POST"
Dim requestStream As Stream = request.GetRequestStream()
Dim postBytes As Byte() = Encoding.ASCII.GetBytes(postData)
requestStream.Write(postBytes, 0, postBytes.Length)
requestStream.Close()
response = CType(request.GetResponse(), HttpWebResponse)
Console.WriteLine(New StreamReader(response.GetResponseStream()).ReadToEnd())
Console.WriteLine("Headers:")
Console.WriteLine(response.Headers.ToString())Ja tässä vielä esimerkki yhdestä funktiosta. Eli tuon ReturnHTML:n yhteyteen pitäisi login vielä saada.
Function HaeDownstreamSNR
dim htmlResult,fs,f,result
htmlResult = ReturnHTML("http://10.0.0.2/doc/adsl.htm")
result = NULL
relnext = instr(htmlResult, "var st_dw_snr_margin = ")
if relnext > 0 then
for i = 1 to 1
aloitus = instr( relnext, htmlResult, "var st_dw_snr_margin = ") + 24
if aloitus > 1 then
lopetus = instr( aloitus, htmlResult, """;")
if lopetus > aloitus then
relnext = lopetus
result = result & mid( htmlResult, aloitus, lopetus-aloitus )
end if
else
exit for
end if
result = result & chr(13) & chr(10)
next
end if
result = replace(result, "å", "å")
result = replace(result, "ä", "ä")
result = replace(result, "ö", "ö")
result = replace(result, "Å", "Å")
result = replace(result, "Ä", "Ä")
result = replace(result, "Ö", "Ö")
result = replace(result, "'", "'")
result = replace(result, " ", " ")
result = replace(result, " ", " ")
result = replace(result, """, chr(34))
htmlResult = NULL
if WRITEFILE = "Yes" then
set fs=CreateObject("Scripting.FileSystemObject")
set f=fs.CreateTextFile("n.tmp",true)
f.write(result)
f.close
set f=nothing
set fs=nothing
else
HaeDownstreamSNR = result
end if
End FunctionTuo Encoding.ascii tuossa pisti silmään, onko tuo vb.net:iä? VB.net ei mulla ainakaan ole kovin hyvin hallussa... No emt, tuosta on huono sanoa kun en pääse kokeilemaan, mutta voisi toimiakin.
EDIT: eikun hmm, VBS? meinaatko VB Scriptiä? No siitä minulla ei ole tietoja.
Visual Basic Scriptiä nimenomaan. ;) Joo huomasin itekkin että tuo login -pätkä minkä löysin on vb.netiä, sitä ei taine saada mitenkään fiksusti yhdisteltyä vb scriptiin, mutta kiitos kuitenkin avusta, lisää ehdotuksia otetaan vastaan. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.