Flexpanel: WebViewWidget mit Basic-Authentification

Hallo,
ich würde ins Felxpanel gerne ein Widget einbinden, das mir das Bild einer Webcam anzeigt.

Ich habe hier eine D-Link DCS-2136L stehen. Diese gibt einen mjpeg-Stream per http über den Aufruf http://{CAM-IP}/video1.mjpg zurück.
Allerdings ist die Kamera per Basic-Authentification geschützt.
Bei den gängigen Browsern lässt sich die direkte Anzeige, ohne eintippen des Benutzernamen und Passwort über den Zusatz http://{username}:{passwort}@{CAM-IP}/video1.mjpg lösen.

Jetzt hätte ich die Anzeige über ein WebViewWidget gelöst, in dem ich die URL mit Username und Passwort angegeben habe.
Allerdings scheint das im Flexpanel nicht zu funktionieren, denn im Widget wird nur “401 Unauthorized / Your client does not have permission to get URL /video1.mjpg from this server.” angezeigt.
Eine Anmeldung per Get-Parameter unterstützt die Kamera meines Wissens nicht. Den Zugangsschutz kann man auch leider nicht deaktivieren, zumindest konnte ich bei ausführlicher Recherche im Web und in der Admin-Oberfläche keine Option dafür finden.

Gibt es eine Möglichkeit dem WebViewWidget Basic-Auth-Zugangsdaten mitzugeben? Oder einen anderen Weg über den sich das Problem lösen lässt?

Vielen Dank und viele Grüße!

Hi Wagnerwagner,

I wrote one simple flex panel script. I hope it will fulfil your needs.

  • The script will only work if you have one WebViewWidget or all the images loaded by multiple WebViewWidgets need the same credentials.

import net.pascom.ahab.op.widgets.*
import java.net.Authenticator;
import java.net.PasswordAuthentication;

OpPane pane = frame.getMainPane()
frame.setWidth(1000)
frame.setHeight(900)

//replace mmuster with username
def username = "mmuster"
//replace 1234 with correct password
def password = "1234"
//relace url with correct one in given format
def url = "http://www.mobydick.net/image.jpg"
Authenticator.setDefault(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username,password.toCharArray());
            }
        });
WebViewWidget webViewWidget = new WebViewWidget(url,3,640,480);
webViewWidget.relocate(10,10)
pane.addWidget(webViewWidget);

If you have more questions do not hesitate to ask.

Kind regards,
Stefan

Your Code works fine! Thank you very much! :slight_smile:

But the webViewWidget could not handle the mjpg-format :frowning: It returns only the data:

–myboundary Content-Type: image/jpeg Content-Length: 30106 X-Status: 00400000 X-Tag: 8360 X-Flags: 0 X-Framerate: 25.15 X-Resolution: 800*450 X-Audio: 0 X-Timestamp: 1444901314863 ÿØÿàJFIF``ÿÛ„ aaa   #%$“”!&+7/&)4)!“0A149;>>>%.DIC;  ;(”(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÄ¢a a }!1AQaa"q2‘¡#B±ÁRÑð$3br‚ %&‘()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúaw!1AQaaq"2B‘¡±Á #3RðbrÑ $4á%ñ&’()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÀ "ÿݪÿÚ ?½M#mVE?íȨ:à ±9"™•ó%EÆ)^&#ûÈÅX~ÒˆÒFEtV•°Ã<ƒ¨âéÿö»ÿÒ‰(W¢º‹ˆ^x‚4¶ñ¾é"G8F`;¯Ð0’àI晨’%ñ®~ᆦ߲G·ÿe©MÜztSj31YD×…]

Hi,

Unfortunately component does not support mjpg format. Maybe you can try to solve it by implementing script which periodically creates image from the stream. Is it a option for you?
Here is reference

Regards,
Stefan

Hi,

MJPEG?
It’s a mobotix cam, right? I think there is also a way to get normal jpegs from it…

Regards,

Thomas