Dreambox Plugins und Proxyserver

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Dreambox Plugins und Proxyserver

      Hallo zusammen


      Nachdem ich vor 10 Jahren mal das Thema in einem anderen Forum angefangen und es dann wegen beruflicher Beanspruchung vergessen habe möchte ich es nun wieder angehen. Zwischenzeitlich bin ich auf Newnigma umgestiegen und voll zufrieden. An dieser Stelle ein dickes Lob an alle die sich hier so engagiert um die Anfänger wie mich kümmern.

      Von programmieren habe ich keine Ahnung, das mal am Anfang gleich gesagt. Es kann also sein dass sich die Profis sich vor lachen, oder weinen, wegwerfen bei meinen Fragen.

      als erstes mal meine Ausstattung:

      Box 7020HDv2
      Rechner Mac
      Programme die ich einsetze: Cyberduck, CoolTerm, iDreamX, Telnet, Eclipse, Fraise


      Was ich als Ziel habe
      ist dass alle Plugins, am besten natürlich unverändert, durch einen Proxyserver (ohne Auth) ins Internet gehen können.

      Was ich bis jetzt rausgefunden habe:

      Als erstes, da recht einfach zu lösen, ist das Thema Updates. Bei Enigma2 Receivern hat mann das Problem dass Proxyserver von Enigma nicht erkannt werden. Deshalb scheitert schon das Update der Firmware. Dies kann man recht einfach lösen, indem man folgende Einträge vornimmt:

      Quellcode: /etc/opkg/opkg.conf

      1. option http_proxy http://proxy.IP:ProxyPort


      Dieser Eintrag reicht normalerweise aus, allerdings ist es komischerweise ziemlich langsam. Mit dem zusätzlichen Eintrag


      in Datei

      Quellcode: /usr/bin/enigma2.sh

      1. export http_proxy="http://192.168.x.z:3128/"
      2. #export ftp_proxy="ftp://192.168.x.z:3128/" # wenn benötigt
      3. export no_proxy=127.0.0.1,localhost,local-netz.net,192.168.x.0/24
      4. export HTTP_PROXY=$http_proxy
      5. #export FTP_PROXY=$ftp_proxy # wenn benötigt
      6. export NO_PROXY=$no_proxy
      wird die Abfrage beschleunigt. Mit diesen Einträgen sind die Updates und die Installation von Plugins möglich.
      Allerdings hat man mit Plugins noch keinen Zugriff auf das Internet. Um es nochmal zu sagen - ich habe von Python , noch, keine Ahnung was das Programmieren anbelangt.

      Nach dem ich mir diverse Plugins unter /usr/lib/enigma2/python/Plugins/Extensions angeschaut habe musste ich feststellen dass der Internetzugriff, je nach Programmierer bzw. was das Plugin für eine Funktion hat, unterschiedlich erfolgte. mal wird z.B. urllib/urllib2 verwendet, mal twisted.web usw.

      Deshalb habe ich mir folgendes überlegt.

      Als erstes sollen die Proxyadresse und der Port Python als globale Environmentvariablen mitgeteilt werden.
      Nach testen und suchen fand ich die Datei mit der es möglich ist.

      Quellcode

      1. export http_proxy="http://192.168.x.y:3128/"
      2. #export ftp_proxy="ftp://192.168.x.y:3128/" # optional wenn der ftp benutzt werden soll
      3. export no_proxy=localhost,127.0.0.1,localnetzname,192.168.x.0/24 # hiermit wird verhindert dass Anfragen im lokalen Netz an den Proxyserver gehen.(Kommagetrennt ohne Leerzeichen)
      4. # um die Schreibweise mit Grossbuchstaben auch zu berücksichtigen noch diese Einträge:
      5. export HTTP_PROXY=$http_proxy
      6. #export FTP_PROXY=$ftp_proxy # optional wenn der ftpbenutzt werden soll.
      7. export NO_PROXY=$no_proxy


      Ob man Gross- und Kleinschreibung berücksichtigen muss, weiss ich nicht, ich habe beim Suchen beide Varianten gefunden und deshalb das so ausprobiert. Wenn ich mich nun per Telnet auf der Box anmelde und mit einem kleine Script die Environmentvariablen abfrage tauchen diese sauber auf, sowohl gross- als auch kleingeschrieben. Das script enthält nur folgendes

      Quellcode: Env-anzeige.py

      1. import os
      2. print os.environ
      Das habe ich im homeverzeichnis abgespeichert und dann mit python Env-anzeige.py gestartet. Das Ergebnis ist:

      Quellcode

      1. {'HZ': '100', 'TERM': 'xterm', 'SHELL': '/bin/sh', 'HTTP_PROXY': 'http://192.168.x.z:3128/', 'no_proxy': '127.0.0.1,localhost,local-netz.net,192.168.x.0/24', 'http_proxy': 'http://192.168.x.z:3128/', 'PWD': '/home/root', 'NO_PROXY': '127.0.0.1,localhost,local-netz.net,192.168.x.0/24', 'HUSHLOGIN': 'FALSE', 'LOGNAME': 'root', 'USER': 'root', 'PATH': '/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin', 'HOME': '/home/root', 'PS1': '\\u@\\h:\\w\\$ ', 'EDITOR': '/bin/vi'}

      Dies brachte aber kein Plugin dazu ins Internet zu gehen.

      ich habe dann erst mal die Box mit USB Kabel am Service-port an den Rechner angeschlossen und CoolTerm und den SiLabsUSBDriverDisk.dmg Treiber installiert und gestartet. (Einstellungen: Port: SLAB_USBtoUART, Baudrate: 115200, DataBits: 8 Party: none und Stopbitz: 1). Damit habe ich dann den Start der Box in eine Datei aufgezeichnet (Menü Connections), Beim durchsuchen des Logs kam eine Bereich (bei mir Zeile 1183 - 1188) der folgendermassen begann:


      Quellcode: Ausgabe boot.log

      1. ...
      2. 0.0.0.0
      3. 169.254
      4. 192.168
      5. nameservers: [[192, 168, 1, 251]]
      6. read configured interface: {'lo': {'dhcp': False}, 'eth0': {'dhcp': True}} self.ifaces after loading: {'eth0': {'preup': False, 'predown': False, 'ip': [192, 168, x, y], 'up': True, 'dns-nameservers': False, 'broadcast': False, 'mac': 'XX:XX:XX:XX:XX:XX', 'dhcp': True, 'bcast': [192, 168, x, 255], 'netmask': [255, 255, 255, 0], 'gateway': [192, 168, x, z]}}
      7. ...
      man sieht hier, dass beim Start die Proxy-einstellungen fehlen.

      Nun habe ich mir das Python-Verzeichnis angeschaut und bin im Verzeichnis /usr/lib/enigma2/python/Plugins/SystemPluguns/NetworkSetup auf die Datei
      earlyplugin.py gestossen. ich glaube dass hiermit die Netzwerkeinstellungen beim Start gesetzt werden. Bei mir in Zeile 78 steht:

      Quellcode: earlyplugin.py

      1. data = { 'up': False, 'dhcp': False, 'preup' : False, 'predown' : False, 'dns-nameservers' : False, 'broadcast' : False }
      2. #die habe ich einfach mal ergänzt und sieht nun so aus:
      3. data = { 'up': False, 'dhcp': False, 'preup' : False, 'predown' : False, 'dns-nameservers' : False, 'broadcast' : False, 'http_proxy' : False, 'no_proxy' : False }





      Damit wird beim starten auch die Einträge für Proxies angezeigt.


      Nun sieht die obigen Log-Einträge folgendermassen aus:


      Quellcode

      1. ....
      2. 0.0.0.0
      3. 169.254
      4. 192.168
      5. nameservers: [[192, 168, x, z]]
      6. read configured interface: {'lo': {'dhcp': False}, 'eth0': {'dhcp': True}} self.ifaces after loading: {'eth0': {'preup': False, 'predown': False, 'ip': [192, 168, x, y], 'http_proxy': False, 'dns-nameservers': '\tdns-nameservers 192.168.x.z\n', 'up': True, 'broadcast': False, 'mac': 'XX:XX:XX:XX:XX:XX', 'bcast': [192, 168, x, 255], 'gateway': [192, 168, x, z], 'no_proxy': False, 'netmask': [255, 255, 255, 0], 'dhcp': True}}
      7. ....
      der Aufruf der Env-anzeige.py (s.o.) ergab aber das selbe Ergebnis wie oben.

      Quellcode

      1. {'HZ': '100', 'TERM': 'xterm', 'SHELL': '/bin/sh', 'HTTP_PROXY': 'http://192.168.1.251:3128/', 'no_proxy': '127.0.0.1,localhost,js-netz.net,192.168.1.0/24', 'http_proxy': 'http://192.168.1.251:3128/', 'PWD': '/home/root', 'NO_PROXY': '127.0.0.1,localhost,js-netz.net,192.168.1.0/24', 'HUSHLOGIN': 'FALSE', 'LOGNAME': 'root', 'USER': 'root', 'PATH': '/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin', 'HOME': '/home/root', 'PS1': '\\u@\\h:\\w\\$ ', 'EDITOR': '/bin/vi'}
      So nun aber mal die paar Fragen, die ich habe:


      Wie kann man mit einem Plugin die Netzwerkeinstellungen ergänzen?
      Oder kann die im gleiche Verzeichnis liegende NetworkSetup.py und die earlyplugin.py entsprechend geändert werden dass auch der Eintrag für den Proxy dort erfolgt?
      (ich gehe davon aus, dass die Datei dann bei jedem Flash der Firmware manuell ersetzt werden muss. Trifft das auch beim Update zu?)

      Wo speichert man die Proxyeinstellungen ab? earlyplugin.py verwendet resolv.conf, kann der Eintrag hier problemlos auch erfolgen oder soll eine andere (z.B. /etc/proxy.conf) genommen werden?

      Welche Schreibweise (gross-/klein) braucht man?

      ist es besser mit der IP-Adresse das ganze zu nehmen oder geht auch der Name des Servers oder ist es egal?

      ist no_proxy überhaupt möglich?

      Und zu guter Letzt natürlich gibt es eine "Rentnertaugliche Lektüre" zum lernen von Python?


      Danke schon mal von dieser Stelle

      Gruss

      Jörg
    • dream_neuling schrieb:

      Und zu guter Letzt natürlich gibt es eine "Rentnertaugliche Lektüre" zum lernen von Python?
      Ich habe auch mal ein paar Gehversuche in Python und Python unter Enigma2 unternommen.
      Python allgemein: py-tutorial-de.readthedocs.io/de/python-3.3/index.html
      Python unter Enigma2: i-have-a-dreambox.com/wbb2/thr…5&hilight=python+tutorial
    • Hallo goliath
      danke für die Links, leider kann ich das Tutorial nicht installieren, ich bekomme folgende Fehlermeldung:

      root@dm7020hd:/var/volatile/tmp# [6nopkg install ihadtutorial_0.5_mipsel.ipk
      Collected errors:
      * wfopen: ihadtutorial_0.5_mipsel.ipk: No such file or directory.
      * pkg_init_from_file: Failed to extract control file from ihadtutorial_0.5_mipsel.ipk.

      ich habe den Dateinamen aus dem tmp-Ordner kopiert, Tipfehler also ausgeschlossen. Dateirechte habe ich testweise auf 644 und 755 geändert, gleiches Ergebnis.

      ist da die ipk beschädigt oder kennt jemand eine Lösung dafür?

      Gruss

      Jörg

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von dream_neuling ()

    • dream_neuling schrieb:

      ich habe den Dateinamen aus dem tmp-Ordner kopiert,
      Was für ein Dateiname aus welchem tmp-Ordner?
      Du mußt die .....ipk herunterladen und auf die Box ins Verzeichnis /tmp kopieren, danach in telnet mit "opkg update && opkg install /tmp/*.ipk" installieren.

      Solltest du hier schon scheitern, verabschiedest du dich besser von deiner Idee der späten Fortbildung :aufgeben:
      Ansonsten, weitermachen, es ist nie zu spät :D
    • goliath schrieb:

      dream_neuling schrieb:

      ich habe den Dateinamen aus dem tmp-Ordner kopiert,
      Was für ein Dateiname aus welchem tmp-Ordner?Du mußt die .....ipk herunterladen und auf die Box ins Verzeichnis /tmp kopieren, danach in telnet mit "opkg update && opkg install /tmp/*.ipk" installieren.

      Solltest du hier schon scheitern, verabschiedest du dich besser von deiner Idee der späten Fortbildung :aufgeben:
      Ansonsten, weitermachen, es ist nie zu spät :D
      das ist ein mipsel.ipk für OE1.6, das man mit opkg weder auf der 8k noch auf der die DM7020HD mit OE2.0 installieren kann, weil ein mips32el.ipk verlangt wird ...

      mit ar und tar auf der Box oder mit 7-zip am PC entpacken und per FTPauf die Box schieben sollte klappen
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$
    • @goliath habe mich wohl falsch ausgedrückt, Klar war die Datei im /tmp. Ich habe nur gemeint dass ich den Dateinamen per copy &paste eingesetzt habe um Tipfehler zu vermeiden.

      @ Fred danke für den Tip mit dem entpacken, muss nur mal schauen mit welchem Programm ich das am Mac hinbekomme.

      @Coxeroni Auch ein interessanter Ansatz. Wenn ich das mit dem Proxy nicht hinbekomme ist das dann die erste Alternative. Momentan will ich noch versuchen das mit Proxy zu knacken. :)
    • Hallo Zusammen

      ich gebe Euch mal den neuesten Stand der Dinge durch. Nach unzählichen Neuinstallationen da ich immer wieder das ganze zerschossen habe musste ich meinen Vorstellung, das ganze über globale Umgebungsvariable beim Starten der Box zu lösen, aufgeben.

      Da es vorne nicht ging habe ich mir mal das Ende betrachtet und so eine Lösung gefunden. Voraussetzung ist jedoch dass ein transparenter Proxy zum Einsatz kommt und iptables installiert wird. Hier auf dem Feed fehlt allerdings ein Modul (kernel-modul-xt-tcpudp) das habe ich mir von einer anderen Firmware ausgeliehen.

      Ich habe das ganze in der angehängten Datei erklärt, vielleicht kanns jemand brauchen. Man sollte aber wissen was man tut, ich übernehme keine Verantwortung! Die Erklärung basiert auf eine Neuinstallation da ich meine Vorgehensweise so getestet habe und mir parallel alles aufgeschrieben habe. Wer es auf seinem laufenden System einsetzen will steigt eben entsprechend später ein.

      Man kann mit dieser Vorgehensweise Löcher in sein Netz schlagen, deshalb sollte es je nach Bedarf noch abgesichert werden.

      Viel Spass

      Jörg
      Dateien