[Gelöst] Username und Passwort bei webIF - Api setzen

Anfängerfragen zum Programmieren mit PureBasic.
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

[Gelöst] Username und Passwort bei webIF - Api setzen

Beitrag von schleicher »

Wenn ich im Browser (z.B. Firefox) die Adresse für WebIF (enigma2) die Adresse :
http://meine_ip:port eingebe, dann erscheint ein Fenster für die Eingabe des Usernames und Passwort.
Nach Eingabe erscheint dann das WebIF. Aber wie mache ich das in meinem Code ?
Wenn ich im WebIF den Username und Passwort entferne funktioniert der Testcode aber mit Username und Pass nicht.
Wie muss ich der WebIF-Api den Usernamen und Passwort mitteilen ? In der WEBIF-Api Dokumentation steht davon nichts.
https://github.com/E2OpenPlugins/e2open ... umentation
http://username:passwort@ip:port funktioniert nicht
Hier der Testcode (Ist für Enigma2 basierte Receiver) Quelle: https://www.purebasic.fr/english/viewto ... 12&t=69667

Code: Alles auswählen

 

Structure _Channels_
  Name.s
  Name_xml.s
  Stream.s
EndStructure

Structure _Bouquets_
  Name.s
  InternalName.s
  List Chan._CHANNELS_()
EndStructure
Global NewList Bouquets._Bouquets_()


Global IP.s = "192.168.40.35"
Global port.s = "80"


Procedure GetBouquets(*CurrentNode)
  Protected *ChildNode
  
  If XMLNodeType(*CurrentNode) = #PB_XML_Normal
    
    If LCase(GetXMLNodeName(*CurrentNode)) = "e2servicereference"
      AddElement(Bouquets())
      Bouquets()\InternalName = GetXMLNodeText(*CurrentNode)
    ElseIf LCase(GetXMLNodeName(*CurrentNode)) = "e2servicename"
      Bouquets()\Name = GetXMLNodeText(*CurrentNode)
    EndIf   
    
    *ChildNode = ChildXMLNode(*CurrentNode)
    
    While *ChildNode <> 0
      GetBouquets(*ChildNode)
      *ChildNode = NextXMLNode(*ChildNode)
    Wend       
    
    
  EndIf
EndProcedure





Procedure GetChannels(*CurrentNode)
  Protected *ChildNode, a$
  
  If XMLNodeType(*CurrentNode) = #PB_XML_Normal
    
    If LCase(GetXMLNodeName(*CurrentNode)) = "e2servicereference"
      AddElement(Bouquets()\Chan())
      Bouquets()\Chan()\Stream = GetXMLNodeText(*CurrentNode)
    ElseIf LCase(GetXMLNodeName(*CurrentNode)) = "e2servicename"
      a$ = GetXMLNodeText(*CurrentNode)
      If a$ = "<n/a>"
        DeleteElement(Bouquets()\Chan())
      Else
        Bouquets()\Chan()\Name = a$
      EndIf
    EndIf   
    
    *ChildNode = ChildXMLNode(*CurrentNode)
    
    While *ChildNode <> 0
      GetChannels(*ChildNode)
      *ChildNode = NextXMLNode(*ChildNode)
    Wend       
    
  EndIf
  
EndProcedure


Procedure LoadBouquets(wert)
  Protected URL$, *Buffer, i
  Protected *MainNode, Size
  
  ClearList(Bouquets())
  
  
  URL$    = "http://" + IP + ":"+port+"/web/getservices"
  URL$    = URLEncoder(URL$)
  *Buffer = ReceiveHTTPMemory(URL$)
  
  If *Buffer
    Size = MemorySize(*Buffer)
    
    If CatchXML(0, *Buffer, MemorySize(*Buffer))
      If XMLStatus(0) = #PB_XML_Success
        *MainNode = MainXMLNode(0)
        GetBouquets(*MainNode)
      EndIf
      FreeXML(0)
    EndIf
    FreeMemory(*Buffer)
    
    
    ForEach Bouquets()
      If LCase(Bouquets()\Name)<>"last scanned"
        URL$    = "http://" + IP + ":"+port+"/web/getservices?sRef=" + Bouquets()\InternalName
        URL$    = URLEncoder(URL$)
        *Buffer = ReceiveHTTPMemory(URL$)
        Delay(100)
        If *Buffer
          If CatchXML(0, *Buffer, MemorySize(*Buffer))
            If XMLStatus(0) = #PB_XML_Success
              *MainNode = MainXMLNode(0)
              GetChannels(*MainNode)
            EndIf
            FreeXML(0)
          EndIf
          FreeMemory(*Buffer)
        EndIf
      Else
        DeleteElement(Bouquets())
      EndIf
    Next
    
    
  Else
    MessageRequester("Error", "Error downloading Bouquets and Channel !", #PB_MessageRequester_Error)
  EndIf
EndProcedure


InitNetwork()
LoadBouquets(0)
If ListSize(Bouquets())>0
  ForEach Bouquets()
    ForEach Bouquets()\Chan()
      Debug "Channel im Bouquet " +Bouquets()\Name + " = " +Bouquets()\Chan()\Name
    Next
  Next
Else
  Debug "Es wurde nichts empfangen"
EndIf
Zuletzt geändert von schleicher am 20.06.2019 11:48, insgesamt 2-mal geändert.
Purebasic 5.51
Sommertv
Beiträge: 68
Registriert: 26.04.2019 10:31
Computerausstattung: Lenovo W500, Debian Stable, Purebasic 5.70 (momentan die Testversion)
Wohnort: Mühldorf am Inn

Re: Username und Passwort bei webIF - Api setzen

Beitrag von Sommertv »

Schönen Abend,
wird das Webinterface auf dem Receiver über ein CGI Script angesprochen?
Dann kann es sein, dass der Receiver ein Security Token mit dem Webbrowser aushandeln.
Ich hab sowas mal mit der Easybox gemacht, das war nicht gerade einfach.
Dazu hab ich erstmal die Protokolle der I/O Schnittstelle mit Nmap protokolliert und analysiert.
Dann ging der Spass erst richtig los, man musste das Token abfangen, auswerten und entsprechend drauf reagieren.
Danach hat der Hersteller beim nächsten Update das Protokoll geändert und die Suche ging wieder von vorne los...

Vielleicht hilft es dir ein wenig, Denkanstoss...

Schöne Grüsse
Kurt
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Username und Passwort bei webIF - Api setzen

Beitrag von HeX0R »

Wäre nett gewesen die Quelle Deines Codes mit anzugeben...
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Re: Username und Passwort bei webIF - Api setzen

Beitrag von schleicher »

HeX0R hat geschrieben:Wäre nett gewesen die Quelle Deines Codes mit anzugeben...
Ja stimmt sorry. Kommt nicht mehr vor. Habe ich vergessen. :oops:
Habs im ersten Post hinzugefügt.

Habe den Fehler nun gefunden.
Login funktioniert doch so :
http://username:pass@IP:port
Vorraussetzung ist, wenn in der Box die Auth. eingeschalten ist, das auch ein Passwort per Telnet gesetzt wird.
Nur mit Username und Passwort funktioniert der Login wenn Authentifizierung eingeschalten ist.
Purebasic 5.51
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: [Gelöst] Username und Passwort bei webIF - Api setzen

Beitrag von HeX0R »

Wieso hast Du das überhaupt aktiviert?
Lässt Du auch Zugriff von aussen zu?
Antworten