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:
Dieser Eintrag reicht normalerweise aus, allerdings ist es komischerweise ziemlich langsam. Mit dem zusätzlichen Eintrag
in Datei
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.
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
Das habe ich im homeverzeichnis abgespeichert und dann mit python Env-anzeige.py gestartet. Das Ergebnis ist:
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:
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:
Damit wird beim starten auch die Einträge für Proxies angezeigt.
Nun sieht die obigen Log-Einträge folgendermassen aus:
der Aufruf der Env-anzeige.py (s.o.) ergab aber das selbe Ergebnis wie oben.
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
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:
Dieser Eintrag reicht normalerweise aus, allerdings ist es komischerweise ziemlich langsam. Mit dem zusätzlichen Eintrag
in Datei
Quellcode: /usr/bin/enigma2.sh
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
- export http_proxy="http://192.168.x.y:3128/"
- #export ftp_proxy="ftp://192.168.x.y:3128/" # optional wenn der ftp benutzt werden soll
- 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)
- # um die Schreibweise mit Grossbuchstaben auch zu berücksichtigen noch diese Einträge:
- export HTTP_PROXY=$http_proxy
- #export FTP_PROXY=$ftp_proxy # optional wenn der ftpbenutzt werden soll.
- 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
Das habe ich im homeverzeichnis abgespeichert und dann mit python Env-anzeige.py gestartet. Das Ergebnis ist:
Quellcode
- {'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
- ...
- 0.0.0.0
- 169.254
- 192.168
- nameservers: [[192, 168, 1, 251]]
- 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]}}
- ...
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
- data = { 'up': False, 'dhcp': False, 'preup' : False, 'predown' : False, 'dns-nameservers' : False, 'broadcast' : False }
- #die habe ich einfach mal ergänzt und sieht nun so aus:
- 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
- ....
- 0.0.0.0
- 169.254
- 192.168
- nameservers: [[192, 168, x, z]]
- 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}}
- ....
Quellcode
- {'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'}
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