Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim ain As String
Dim pw As String
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Private btngetsid As Button
Private lblsid As Label
Private SID As String
Dim FritzCon As FritzBoxConnector
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("Layout1")
SID = ""
ain = "0000000000"
pw = "dein passwort hier"
FritzCon.Initialize("","fritz.box")
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub btngetsid_Click
Dim job As HttpJob
job.Initialize("getsid",Me)
job.Download("http://fritz.box/login_sid.lua")
End Sub
Sub JobDone (Job As HttpJob)
Log("JobName = " & Job.JobName & ", Success = " & Job.Success)
If Job.Success = True Then
Select Job.JobName
Case "Login"
Dim result As String = Job.GetString
Log("login = "&result)
Dim XOMBuilder1 As XOMBuilder
XOMBuilder1.Initialize("XOMBuilder1")
XOMBuilder1.BuildFromString(result, "", Null)
Case "getsid"
'print the result to the logs
Dim result As String = Job.GetString
Log("getsid = "&result)
Dim XOMBuilder1 As XOMBuilder
XOMBuilder1.Initialize("XOMBuilder1")
XOMBuilder1.BuildFromString(result, "", Null)
' Weiter geht´s in der Auswertung des XML -> Event XOMBuilder1_BuildDone
End Select
Else
Log("Error: " & Job.ErrorMessage)
ToastMessageShow("Error: " & Job.ErrorMessage, True)
End If
Job.Release
End Sub
Sub XOMBuilder1_BuildDone(XOMDocument1 As XOMDocument, Tag As Object)
If XOMDocument1.IsInitialized Then
Log("XOMDocument is initialized")
Dim RootElement As XOMElement
RootElement=XOMDocument1.RootElement
Log("Root.Value="&RootElement.Value)
Dim childs As XOMElements
childs=RootElement.GetChildElements
Log("childsSize="&childs.Size)
If childs.Size > 0 Then
Dim SessionInfo As Map
SessionInfo.Initialize
For i = 0 To childs.Size -1
Dim child As XOMElement = childs.GetElement(i)
'login = <?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>c5678acaad2604d4</SID><Challenge>ed04cdb0</Challenge><BlockTime>0</BlockTime><Rights><Name>Dial</Name><Access>2</Access><Name>App</Name><Access>2</Access><Name>HomeAuto</Name><Access>2</Access><Name>BoxAdmin</Name><Access>2</Access><Name>Phone</Name><Access>2</Access><Name>NAS</Name><Access>2</Access></Rights></SessionInfo>
If child.LocalName = "SID" Then
SessionInfo.Put("SID",child.Value)
End If
If child.LocalName = "Challenge" Then
SessionInfo.Put("Challenge",child.Value)
End If
If child.LocalName = "BlockTime" Then
SessionInfo.Put("BlockTime",child.Value)
End If
If child.LocalName = "Rights" Then
SessionInfo.Put("Rights",child.Value)
End If
'Log("child.tostring = "&child.ToString)
'Log("child.LocalName = "&child.LocalName)
'Log("child.value = "&child.Value)
Dim rights As XOMElements = child.GetChildElements
Log("SizeOf(rights)="&rights.Size)
If rights.Size Mod 2 = 0 Then
Log("mod2=0")
For o = 0 To rights.Size -1 Step 2
Dim rightn As XOMElement = rights.GetElement(o)
'Log("right.tostring = "&rightn.ToString)
'Log("right.LocalName = "&rightn.LocalName)
'Log("right.value = "&rightn.Value)
Dim rightv As XOMElement = rights.GetElement(o+1)
'Log("right.tostring = "&rightv.ToString)
'Log("right.LocalName = "&rightv.LocalName)
'Log("right.value = "&rightv.Value)
SessionInfo.Put(rightn.Value,rightv.Value)
Next
End If
Next
Log("SessionInfo folgt")
Log(SessionInfo)
If SessionInfo.Get("SID") <> "0000000000000000" Then
Log("Session known")
Log("SID = "&SessionInfo.Get("SID"))
SID = SessionInfo.Get("SID")
lblsid.Text = SID
Else
Log("Session Unknown!")
' Session ID errechnen aus Challenge, Passwort und MD5-Verschlüsselung
Dim response As String = FritzCon.getResponse(SessionInfo.Get("Challenge"),pw)
Log("Fritzcon.response="&response)
Dim req As HttpJob
req.Initialize("Login",Me)
req.Download("http://fritz.box/login_sid.lua?username=&response="&response)
End If
End If
Else
' XOMDocument1 will be uninitialized if an error has occurred
Log("An error has occured and the XOMDocument has NOT been initialized")
Log(LastException.Message)
End If
End Sub