ECMD Proxy

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Damit ein Ethersex nicht unter der Last der Anfragen in die Knie geht, wenn man die Messwerte von verschiedenen Browsern anzeigen will, kann man den ECMD Proxy einsetzen. Anwendungsbeispiele:

  • Seite mit vielen dynamischen Inhalten, die von vielen Browsern offen gehalten wird
  • Eine Seite soll Informationen von verschiedenen ethersexen anzeigen (ansonsten mit Ajax nicht möglich)
  • Auf Ethersexe in einem NAT zugreifen

Der ECMD Proxy ist ein Python CGI Skript, dass die ECMD Befehle abfängt und bei Bedarf an die jeweiligen ethersexe (per ecmd/tcp) absetzt und die Ergebnisse Ergebnisse cached. Die Vorraussetzungen sind, dass das Skript als cgi-bin ausgefuehrt wird:

   <VirtualHost 188.40.33.175:80 [2001:6f8:1209:f0:216:3eff:fe03:ff]:80>
           ServerName ethersex.dokucode.de 
           DocumentRoot /home/stettberger/public_html/cgi-bin/ecmd/
           ScriptAlias /ecmd /home/stettberger/public_html/cgi-bin/ecmd/ecmd
           Alias / /home/stettberger/public_html/cgi-bin/ecmd/
           <Directory "/home/stettberger/public_html/cgi-bin/ecmd">
             Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
           </directory>
   </VirtualHost>

und es das Cache Directory (default ist .cache) muss von www-data geschrieben werden dürfen. Die Konfiguration des Proxys geschieht im Skript selbst:

   cache_dir = '.cache'
   default_host = 'heizung'
   hosts = {'heizung': {   'addr': '192.168.100.13',
                           'port': 2701,
                           'kty get': 40,
                           'whitelist': ['kty get'],
                           'default_cache': 30}}

"'kty get': 40, setzt das Caching Intervall auf 40 Sekunden, Der default Value fuers caching auf dem ethersex `heizung' ist auf 30 Sekunden gesetzt. Auch wird durch das whitelisting verhindert, dass man für den Host heizung einen anderen Befehl absetzt als `kty get'.

Nun kann auf das ECMD des heizungs ethersex auf zwei Weisen angesprochen werden:

   heizung kty get

oder, weil heizung das default ethersex ist:

   kty get

Der Proxy findet sich bei ethersex unter contrib/ecmd_proxy