Seite 1 von 1

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

Verfasst: 19.06.2019 12:25
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

Re: Username und Passwort bei webIF - Api setzen

Verfasst: 19.06.2019 18:06
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

Re: Username und Passwort bei webIF - Api setzen

Verfasst: 19.06.2019 21:06
von HeX0R
Wäre nett gewesen die Quelle Deines Codes mit anzugeben...

Re: Username und Passwort bei webIF - Api setzen

Verfasst: 20.06.2019 11:41
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.

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

Verfasst: 20.06.2019 14:33
von HeX0R
Wieso hast Du das überhaupt aktiviert?
Lässt Du auch Zugriff von aussen zu?