Hallo Forumsgemeinde, In meinem lokalen Netzwerk habe ich eine Webcam. Die ist passwortgeschützt um auch von unterwegs einen Blick nach Hause zu werfen. Funktioniert prächtig mit einer Portfreigabe im Router. Nun kam ein SmartTV ins Haus. Über dessen Browser möchte ich ab und zu mal lokal auf die Cam zugreifen. Das funktioniert, leider merkt er sich partout nicht die Zugangsdaten. Die jedesmal mit der FB neu eintippen ist eine Qual. Der Trick einfach eine URL z.B. http://user:passwort@webcamip als Favorit zu speichern funktioniert leider nicht und wird weggekürzt. Das ist eigentlich auch gut so, man könnte böse Sachen Tür und Tor öffnen. Die Cam einfach ohne Zugangsdaten offen halten würde mir garnicht behagen. Da kam mir eine Idee: Bei mir läuft noch ein Bananapi als NAS-Ersatz. Darauf läuft eine Debian Installation die nicht viel zu tun hat. Deswegen meine Frage an die Netzwerk/Linux-Experten: gibt es ein Tool oder geht es sogar mit einigen Einstellungen, das vom TV einfach eine URL am Bananapi aufgerufen wird und der dann nichts anderes macht als eine Weiterleitung auf die Cam, aber mit Benutzer + Passwort? Weil auf dem Bananpi schon einige Sachen laufen müsste natürlich ein unbenutzter Port übergeben werden, z.B. so: http://bananapi:8080 vom TV aus die URL aufrufen, dieser einfach Benutzer + Passwort ergänzt und dann zu http://webcam weiterleitet?
So wie du es beschreibst macht die Kamera wohl Basic oder Digest Auth? (Bei Ersterem ist es übrigens eine blöde Idee eine Portweiterleitung zu erstellen, wenn die Kamera kein SSL kann geht das Passwort im Klartext über die Leitung!) Du könntest den Apache (bzw. einen zusätzlichen VHost) als Proxy konfigurieren, der kümmert sich dann um die Anmeldung und leitet dir die Seiteninhalte weiter: http://stackoverflow.com/questions/567814/apache2-reverse-proxy-to-an-end-point-that-requires-basicauth-but-want-to-hide-t
Der Link ist sehr interessant und beschreibt genau das gesuchte. Danke dafür! Es sieht so aus, dass ich um das Schwergewicht Apache nicht herumkomme. Habe gedacht, ein paar Zeilen bash-script würden reichen.
Torsten S. schrieb: > Es sieht so aus, dass ich um das Schwergewicht Apache nicht herumkomme. Quatsch. Andere Webserver können das auch.
Wenn die Webcam mit basic authorization läuft, geht da vielleicht was mit dem Perl HTTP::Proxy Module. den Bananpi beim Fernseher als Proxy eintragen. Wenn dann die Webcam angesurft wird greift der Match und der username+passwort wird injected. [code] #!/usr/bin/perl use strict; use warnings; use HTTP::Proxy; use HTTP::Proxy::HeaderFilter::simple; use Term::ReadPassword; my $port = 8888; my $user; my $passwd; print "Please Enter username: "; chomp ($user = <>); $passwd = read_password("password: "); my $filter = HTTP::Proxy::HeaderFilter::simple->new( sub { my ( $self, $headers, $message ) = @_; my $get_uri = $message->uri() or die; if ($get_uri =~ m{webcamIP}) { $message->authorization_basic($user,$passwd); }; } ); print "Start Proxy on Port $port and inject authorization for $user\n"; my $proxy = HTTP::Proxy->new( port => $port ); $proxy->push_filter(request => $filter); $proxy->start; [code]
Auf die Idee, den BPi als Proxy zu verwenden, wäre ich nie gekommen. Am obigen Code sieht man auch, dass Du das nicht zum ersten mal machst. Respekt! Hiermit muss ich bekennen, das ich von Perl nur soviel weiss als dass es diese Programmiersprache gibt. Ich bitte um Nachsicht. Die obigen Zeilen zwischen "code" habe ich in eine Datei "myproxy.pl" kopiert, ins /root Verzeichnis befördert und ausführbar gemacht. Das kam dann raus:
1 | root@bpi:~# /root/myproxy.pl |
2 | Can't locate HTTP/Proxy.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /root/myproxy.pl line 6. |
3 | BEGIN failed--compilation aborted at /root/myproxy.pl line 6. |
Vielleicht is mein OS etwas zu alt:
1 | root@bpi:~# uname -a |
2 | Linux bpi 3.4.103-sunxi #6 SMP PREEMPT Wed Sep 24 21:11:21 CEST 2014 armv7l GNU/Linux |
Bin ratlos.
> root@bpi:~# /root/myproxy.pl > Can't locate HTTP/Proxy.pm in @INC (@INC contains: /etc/perl > /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 > /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 > /usr/local/lib/site_perl .) at /root/myproxy.pl line 6. > BEGIN failed--compilation aborted at /root/myproxy.pl line 6. Eigentlich sagt hier Perl nur das es das CPAN Module HTTP/Proxy.pm nicht kennt. Unter debian/ubuntu müsste das, dass Paket libhttp-proxy-perl sein das fehlt. Wenn du was anderes als Debian nutzt musst du da mal gucken ob es von denn als Paket verteilt wird. Alternativ kannst du dich auch belesen wie man perl Pakete direkt aus CPAN installiert. Aber da hört meine Kenntnis von Perl auch auf.
Imonbln schrieb: > Can't locate HTTP/Proxy.pm in @INC heißt übersetzt: "gib folgendes Befehl als root ein:" (sudo) cpan install HTTP::Proxy (auf Groß/Kleinschreibung achten!) Was die debilans bei ihrer Paketbenennung geraucht haben, möcht ich aber zu gern mal wissen. Die Namesverrenkungen sind ja nicht mehr feierlich.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.