OLSR HTTPInfo Redirect: Unterschied zwischen den Versionen
Dieter (Diskussion | Beiträge) K (Tippfehler) |
Markit (Diskussion | Beiträge) (→Redirect mit HTTP Header) |
||
Zeile 22: | Zeile 22: | ||
Unter kamikaze wird das Shellscript aber gleich gar nicht ausgeführt, sondern als Content 1:1 ausgegeben )-; | Unter kamikaze wird das Shellscript aber gleich gar nicht ausgeführt, sondern als Content 1:1 ausgegeben )-; | ||
− | + | dafür gibt es aber auch einen Workaround, denn der busybox httpd ruft immer /cgi-bin/index.cgi auf wenn er in einem verzeichnis kein index.html findet,. | |
+ | |||
+ | legt man nun anstatt einer datei cgi-bin-status.html ein verzeichnis mit diesen namen an, wird dieses aufgerufen und man kann entweder einen suaberen http-header redirect machen, oder gleich das richtige cgi-script aufrufen,.. allerdings ist es auf diese Weise nicht möglich Formulardaten/paramter zu empfangen, deswegen ist es für Webseiten mit Formularen/Parametern besser nur einen redirect zu machen,.. | ||
+ | |||
+ | hier ein Beispiel eines index.cgi, welches nen redirect aufs httpinfo macht, und für andere Verzeichnis-urls nach einem cgi script (mit Namen cgi) in diesem Verzeichnis sucht und es aufruft, oder ansonsten ne Fehlermeldung zurückliefert,.. | ||
+ | |||
+ | #!/bin/sh | ||
+ | if [ "$QUERY_STRING" == "/cgi-bin-status.html/" ]; then | ||
+ | PORT=8000 | ||
+ | OWN_IP=`uci get network.wan.ipaddr` | ||
+ | echo "HTTP/1.0 301 Moved Permanently" | ||
+ | echo "Location: http://$OWN_IP:$PORT/nodes" | ||
+ | echo "Connection: close" | ||
+ | elif [ -f ..$QUERY_STRING./cgi ]; then | ||
+ | ..$QUERY_STRING./cgi | ||
+ | else | ||
+ | echo -en "Content-type: text/html\r\n\r\n" | ||
+ | echo "no index available for this Directory $QUERY_STRING !" | ||
+ | fi | ||
+ | |||
+ | Gefällt inem obiges wirklich nich dann kann mann auch unten angeführten HTML Redirect verwenden, obwohl es nicht empfehlenswert ist, da man einersetis diese Datei immer an die richtige IP des routers anpassen muss,.. und ein html redirect eben auch langsamer ist, und ihn evt. einige exotische clients gar nicht mitmachen,.. | ||
====HTML Redirect==== | ====HTML Redirect==== |
Version vom 30. Mai 2009, 10:34 Uhr
Zum Weiterleiten von cgi-bin-status.html aufs HttpInfo bieten sich folgende Möglichkeiten
cgi-bin-status.html sollte die Datei heißen, weil die Links von den Statusseiten der Freifunk-Firmware-Router eben darauf zeigen,..
Die Datei muss jedenfalls nachher ausführbar gemacht werden!
chmod 755 /www/cgi-bin-status.html
Redirect mit HTTP Header
Entweder als HTTP-Header (falls ein anderer Port als 8000 fürs HttpInfo verwendet wurde: PORT korrigieren!)
#!/bin/sh PORT=8000 OWN_IP=`nvram get wifi_ipaddr` echo "HTTP/1.0 301 Moved Permanently" echo "Location: http://$OWN_IP:$PORT/nodes" echo "Connection: close" echo echo
Unter der fff funktioniert obiges.
Unter kamikaze wird das Shellscript aber gleich gar nicht ausgeführt, sondern als Content 1:1 ausgegeben )-;
dafür gibt es aber auch einen Workaround, denn der busybox httpd ruft immer /cgi-bin/index.cgi auf wenn er in einem verzeichnis kein index.html findet,.
legt man nun anstatt einer datei cgi-bin-status.html ein verzeichnis mit diesen namen an, wird dieses aufgerufen und man kann entweder einen suaberen http-header redirect machen, oder gleich das richtige cgi-script aufrufen,.. allerdings ist es auf diese Weise nicht möglich Formulardaten/paramter zu empfangen, deswegen ist es für Webseiten mit Formularen/Parametern besser nur einen redirect zu machen,..
hier ein Beispiel eines index.cgi, welches nen redirect aufs httpinfo macht, und für andere Verzeichnis-urls nach einem cgi script (mit Namen cgi) in diesem Verzeichnis sucht und es aufruft, oder ansonsten ne Fehlermeldung zurückliefert,..
#!/bin/sh if [ "$QUERY_STRING" == "/cgi-bin-status.html/" ]; then PORT=8000 OWN_IP=`uci get network.wan.ipaddr` echo "HTTP/1.0 301 Moved Permanently" echo "Location: http://$OWN_IP:$PORT/nodes" echo "Connection: close" elif [ -f ..$QUERY_STRING./cgi ]; then ..$QUERY_STRING./cgi else echo -en "Content-type: text/html\r\n\r\n" echo "no index available for this Directory $QUERY_STRING !" fi
Gefällt inem obiges wirklich nich dann kann mann auch unten angeführten HTML Redirect verwenden, obwohl es nicht empfehlenswert ist, da man einersetis diese Datei immer an die richtige IP des routers anpassen muss,.. und ein html redirect eben auch langsamer ist, und ihn evt. einige exotische clients gar nicht mitmachen,..
HTML Redirect
Redirect im Html-File selber (Achtung: An 3 Stellen muss IP:PORT korrigiert werden!)
<HTML> <HEAD> <TITLE> OLSR Status Weiterleitung </TITLE> <meta HTTP-EQUIV="REFRESH" content="0; url=http://78.41.113.333:8000/nodes"> <SCRIPT> document.location="http://78.41.113.333:8000/nodes"; </SCRIPT> </HEAD> <BODY> <a href="http://78.41.113.333:8000/nodes">Hier gehts zum, HTTP-Info</a> </BODY> </HTML>