#!/bin/sh #---------------------------------------- # Weimarnetz-Firmware #---------------------------------------- export DATE="25.apr.2006";SCRIPT=${0#/rom} export TITLE="Verwaltung: Weimarnetz" . ${SCRIPT%/*}/cgi-bin-pre.sh # # Fall noch eine alte weimarnetz-erweiterung drauf ist - hinweis zeigen # if [ "$(ls /etc/init.d/|grep weimarnetz|cut -f 1)" != "" ] then if [ "$(ls /www/|grep 2install|cut -f 1)" != "" ] then echo "
Die Weimarnetz-Erweiterung wurde doppelt installiert bzw. es ist noch eine alte vorhanden.

" echo "Bitte mache auf diesem Gerät einen \"Neustart mit Festplatte formatieren\" .
" echo "Keine Angst - dabei werden keine Einstellungen verändert - und spiele die Erweiterung erneut auf.


" . ${SCRIPT%/*}/cgi-bin-post.sh exit fi fi # # Falls AWK noch nicht installiert ist - tue das! # if [ "$(awk 'BEGIN{print 1}' 2>/dev/null)" != "1" ];then ipkg install /www/2install/busybox-awk* 1>/dev/null;rm /www/2install/busybox-awk*;fi if [ "$(awk 'BEGIN{print 1}' 2>/dev/null)" != "1" ];then echo "Das installieren von AWK hat nicht geklappt - MAYDAY,MAYDAY!";exit;fi # # - wurde auf uebernehmen geklickt? # - wird internet angekuendigt? # MAKE=$(echo $QUERY_STRING|awk '{if(substr($0,1,1)=="a")print "1"}') INET=$(nvram get ff_hna4|awk '{e=0;if(index($0,"0.0.0.0/0")>0)e=1;print e}') # # wenn NICHT auf uebernehmen geklickt wurde (also die Seite ohne optionen aufgerufen wird), # dann die Variablen fuer einige Formularfelder erzeugen und... # if [ "$MAKE" != "1" ];then V0=$(nvram get lan_ipaddr|awk -F "." '{print $2}') V1=$(nvram get wan_domain|awk '{printf substr($0,2)}') V2=$(a=$(nvram get ff_adm_loc);echo $a|awk '{if(length($0)=="0"){print "z.b.WilderGraben3";exit}print $0}') NAME=$(a=$(nvram get wan_hostname);echo $a|awk '{if(length($0)=="0"){print "blauekiste";exit}print $0}') V3=$(nvram get dhcp_start|awk '{w=$1-2;if(w>5)w=5;print w}') #DHCP-Anzahl V4=$(echo $V3|awk '{print 13-$0}') #DHCP-Start V5=$(echo $V3|awk '{print 2+$0}') # # ...Eingabemaske anzeigen # cat<
Freifunk-Stadt
In welchem Ort wohnst du?
Netzknotennummer
Dies ist eine eindeutige Nummmer,
die du dir über die weimarnetz.de Seite besorgen musst.
Name für dieses Gerät  
Wähle einen Namen,den du dir gut merken kannst.
Dieses Gerät ist später unter http://$NAME erreichbar.
Aufstellort
Damit andere wissen, wo dein
Router ungefähr steht. z.b. Teichgasse 12
Koordinaten  
Diese Angaben sind wichtig für die Automatische Netzkarte.
Du kannst sie mit Hilfe dieser Seite abfragen.
Du findest die Angaben dann unten links.
Gültige Werte sind z.b. 50.9934 und 11.3313
Trage nur 2 Kommastellen ein, wenn Dir das zu privat ist.
deine eMail-Adresse
Um bei Problemen die Kontaktaufnahme zu
erleichern, gib bitte eine gültige eMail-Adresse an.
deine Telefonnummer
Für den absoluten Notfall wäre
eine Mobilnummer nicht verkehrt.
Serveranzahl
Für Experten: für Rechner mit fester
Netzadresse, LAN-DHCP-Bereich wird verkleinert.
Internet anbieten
Moechtest du dem Weimarnetz deinen eigenen
Internetanschluss zur Verfügung stellen?
EOF exit fi # # Auslesen der vom Formular gebildeten URL # STADT=$(echo $QUERY_STRING|awk -F "&" '{print substr($1,3)}') NUMMER=$(echo $QUERY_STRING|awk -F "&" '{print substr($2,3)}') NAME=$(echo $QUERY_STRING|awk -F "&" '{gsub(/[ ]/,"");print substr($3,3)}') ORT=$(echo $QUERY_STRING|awk -F "&" '{gsub(/[+]/,"");print substr($4,3)}') GPSX=$(echo $QUERY_STRING|awk -F "&" '{print substr($5,3)}') GPSY=$(echo $QUERY_STRING|awk -F "&" '{print substr($6,3)}') MAIL=$(echo $QUERY_STRING|awk -F "&" '{print substr($7,3)}') FON=$(echo $QUERY_STRING|awk -F "&" '{print substr($8,3)}') SERVER=$(echo $QUERY_STRING|awk -F "&" '{print substr($9,3)}') DSL=$(echo $QUERY_STRING|awk -F "&" '{print substr($10,3)}') DHCPNUM=$(echo $SERVER|awk '{print 13-$0}') DHCPSTART=$(echo $SERVER|awk '{print 2+$0}') DNS_SERVER_FUER_ALLE="172.16.1.53" DNS_SERVER_FUER_DSLER="141.54.1.1" # # Nur wenn Knotennummer nicht zwischen 0 und 4060 liegt,wird weitergemacht... # # Aus der Knotennummer werden folgende Dinge generiert: # - WLAN-IP-Adresse # - LAN-IP-Adresse # - domain # Die letzten zwei Ziffern der IP-Adresse sind die Variable KNOTENNUMMER,also # Nummer 788 entspricht 26.48 und daraus ergibt sich dann die gesamte IP-Adresse,also 104.63.26.48 # KNOTENIP=$(awk -v w=$NUMMER 'BEGIN{for(n=0;n<241;){k++;s++;if(s>254){s=1;n=n+16}if(s<250&&w==k){printf s"."n;exit}}}') KNOTENIPHINTEN=$(awk -v w=$NUMMER 'BEGIN{for(n=0;n<241;){k++;s++;if(s>254){s=1;n=n+16}if(s<250&&w==k){printf n;exit}}}') if [ "$NUMMER" -lt 4060 ] && [ "$NUMMER" -gt 0 ] then # # Einstellungen Stadt-Spezifisch # if [ "$STADT" = "63" ];then SSID="weimar.freifunk.net";KANAL="4";KABELNETZ="104";WLANNETZ="10";fi if [ "$STADT" = "61" ];then SSID="leipzig.freifunk.net";KANAL="1";KABELNETZ="10";WLANNETZ="104";fi # # bilden der NV-RAM-Variablen # #------------------------------------ # System # hostname vom Router nvram set wan_hostname="$NAME" # domainname vom router nvram set wan_domain="K$NUMMER" # DNS-Server nvram set wan_dns="$DNS_SERVER_FUER_ALLE" # eigenen cachenden DNS-Server starten? nvram set ff_dnsmasq="1" # Zeitzone nvram set ff_tz="MET-1MEST-2,M3.3.0,M10.5.0" # Country-Code fuer Kanal nvram set wl0_country_code="DE" #-------------------------------------- # Kontakt/Ort nvram set ff_adm_loc="$ORT" # Kontakt/Mail nvram set ff_adm_mail="$MAIL" # Kontakt/Telefon nvram set ff_adm_tel="$FON" # Kontakt/Notiz (inkl. GPS-Infos) nvram set ff_adm_note="GPS: "$GPSX" "$GPSY #------------------------------------ # OLSR/OLSR-DHCP nvram set ff_wldhcp="$WLANNETZ.$STADT.$KNOTENIP/28,255.255.255.240" # OLSR/HNA4 nvram set ff_hna4="$KABELNETZ.$STADT.$KNOTENIP/28;$WLANNETZ.$STADT.$KNOTENIP/28" # OLSR/QOS-Level nvram set ff_qoslev="2" # OLSR/PlugIn DynGW nvram set ff_dyngw="1" # OLSR/PlugIn NameService nvram set ff_nameservice="1" # OLSR/PlugIn HTTP-info nvram set ff_httpinfo="1" # OLSR/Speed nvram set ff_olsrspeed="5" # OLSR/tc nvram set ff_olsrtc="1" # OLSR/fisheye nvram set ff_fisheye="1" # OLSR/dijkstra nvram set ff_rfisheye="1" #------------------------------------ # Drahtlos/Protokoll nvram set wifi_proto="static" # Drahtlos/IP let KNOTENIPHINTEN=KNOTENIPHINTEN+1 nvram set wifi_ipaddr="$WLANNETZ.$STADT.$(echo $KNOTENIP|cut -d "." -f 1).$KNOTENIPHINTEN" let KNOTENIPHINTEN=KNOTENIPHINTEN-1 # Drahtlos/Netmask nvram set wifi_netmask="255.0.0.0" # Drahtlos/Modus AdHoc nvram set wl0_mode="sta" nvram set wl0_infra="0" # Drahtlos/SSID nvram set wl0_ssid="$SSID" # Drahtlos/Kartentyp (a oder g-Karte) nvram set wl0_phytype="g" # Drahtlos/BSSID nvram set ff_bssid="02:ca:ff:ee:ba:be" # Drahtlos/Kanal nvram set wl0_channel="$KANAL" # Drahtlos/Empfangsantenne nvram set wl0_antdiv="0" # Drahtlos/Sendeantenne nvram set ff_txant="0" # Drahtlos/Sendeleistung nvram set ff_txpwr="20" # Drahtlos/Modus nvram set wl0_gmode="1" # Drahtlos/ESSID senden ja/nein nvram set wl0_closed="0" # Drahtlos/Basisrate nvram set wl0_rateset="all" # Drahtlos/Uebertragungsrate nvram set wl0_rate="0" # Drahtlos/CTS-Schutz nvram set wl0_gmode_protection="auto" # Drahtlos/Frameburst nvram set wl0_frameburst="off" # Drahtlos/FragSchwelle nvram set wl0_frag="2346" # Drahtlos/RTSSchwelle nvram set wl0_rts="128" # Drathlos/DTIM (normal 1) nvram set wl0_dtim="1" # Drahtlos/MTU nvram set ff_mtu="1500" # Drahtlos/BeaconIntervall (normal 100) nvram set wl0_bcn="100" # Drahtlos/Verschluesselung nvram set wl0_wep="disabled" #------------------------------------ # LAN/Protokoll nvram set lan_proto="static" nvram set ff_lan_proto="1" # LAN/LAN-Interfaces,darf nicht eth1 enthalten #nvram set lan_ifnames="vlan0 eth2 eth3" # LAN/IP let KNOTENIPHINTEN=KNOTENIPHINTEN+1 nvram set lan_ipaddr="$KABELNETZ.$STADT.$(echo $KNOTENIP|cut -d "." -f 1).$KNOTENIPHINTEN" let KNOTENIPHINTEN=KNOTENIPHINTEN-1 # LAN/Netmask nvram set lan_netmask="255.255.255.240" # LAN/NAT nvram set ff_nonat="1" # LAN/Firewall nvram set fw_disable="1" # LAN/DHCPstart nvram set dhcp_start="$DHCPSTART" # LAN/DHCPnutzer nvram set dhcp_num="$DHCPNUM" # LAN/DHCPleasetime nvram set dhcp_lease="43200" #------------------------------------ # WAN/Protokoll nvram set wan_proto="dhcp" # WAN/Gateway nvram set wan_gateway=" " # WAN/IP nvram set wan_ipaddr=" " # WAN/Netmask nvram set wan_netmask=" " # WAN/Firewall (1=ausschalten) nvram set ff_wanssh="1" nvram set ff_wanhttp="1" nvram set ff_wanicmp="1" #------------------------------------ # Spezielles fuer DSLer # Ankuendigen von 172.16.1.1/28 bedeutet: # 172.16.1.53 = DNS-Service # 172.16.1.80 = Webserver = MAC-Adressen der Registrierung & Bruellbox #------------------------------------ if [ "$DSL" = "1" ];then nvram set ff_hna4=$KABELNETZ"."$STADT".$KNOTENIP/28;"$WLANNETZ"."$STADT".$KNOTENIP/28;"$DNS_SERVER_FUER_ALLE"/32;172.16.1.80/32;0.0.0.0/0" # nvram set wan_proto="static" # nvram set wan_ipaddr="192.168.1.9" # nvram set wan_netmask="255.255.255.0" # nvram set wan_gateway="192.168.1.1" nvram set wan_dns="$DNS_SERVER_FUER_DSLER" # nvram set ff_wanssh="1" # nvram set ff_wanhttp="1" # nvram set ff_wanicmp="1" fi #------------------------------------ # nvram-vars schreiben! #------------------------------------ nvram commit 2>/dev/null # # Wenn Verzeichnis /www/2install exisitiert,dann werden Dateien eingespielt. # ansonsten war das (neu)setzen der NV-RAM-Variablen schon alles... # if [ "$(ls /www/|grep 2install|cut -f 1)" = "2install" ] then mv 2>/dev/null /www/index.asp /www/indexalt.asp mv 2>/dev/null /www/index.html /www/indexalt.html mv 2>/dev/null /www/cgi-bin-index.html /www/cgi-bin-indexalt.html mv 2>/dev/null /www/2install/S* /etc/init.d/ mv 2>/dev/null /www/2install/cron.* /usr/sbin/ mv 2>/dev/null /www/2install/cgi-bin* /www/ chmod 2>/dev/null -R 777 /www/ 2>/dev/null chmod 2>/dev/null -R 777 /etc/init.d/ 2>/dev/null chmod 2>/dev/null -R 777 /usr/sbin/ 2>/dev/null rm 2>/dev/null -fR /www/2install echo "
Denke bitte daran das Kennwort fuer dieses Gerät zu ändern.

" echo "Die erforderlichen Weimarnetz-Erweiterungen wurden installiert.


" fi # # Hat jemand Server freigeschaltet? Dann Hinweis auf IP-Adressen. # if [ "$SERVER" -gt 0 ] then echo "
Du hast Server die per Kabel angeschlossen sind freigeschaltet.
" echo "Server werden nicht durch die Nervseite geärgert.
Folgende IP-Adressen darfst du dafür benutzen.

" echo $SERVER $STADT $KNOTENIP $KABELNETZ|awk '{for(;s<$1;){s++;printf("%d.%d.%2.2f - Server %d
",$4,$2,$3+s/100,s)}}' echo "


" fi # # Stellt jemand Internet zu Verfuegung? Dann Hinweis auf Eselbremse # if [ "$DSL" = "1" ] then echo "
Vielen Dank, dass du deinen Internetanschluss freigibst.

" echo "Ehre, wem Ehre gebührt - ewiger Ruhm ist Dir gewiß. Danke!

" if [ "$SERVER" -lt 1 ] then echo "Du hast evtl. eine wichtige Sache vergessen:
Die Eselbremse muss als Server freigeschaltet werden.
Geh nochmal in den Kindergarten... 8-)

" fi let KNOTENIPHINTEN=KNOTENIPHINTEN+2 echo "Kleiner Hinweis: Wenn du eine Eselbremse benutzt (IP 104.63.$(echo $KNOTENIP|cut -d "." -f 1).$KNOTENIPHINTEN),
" echo "dann bitte die statischen Routen ins Weimarnetz nicht vergessem:

" let KNOTENIPHINTEN=KNOTENIPHINTEN-1 echo "Das Netzwerk $KABELNETZ.0.0.0/8 soll nach IP $KABELNETZ.$STADT.$(echo $KNOTENIP|cut -d "." -f 1).$KNOTENIPHINTEN geleitet werden, und
" echo "das Netzwerk $WLANNETZ.0.0.0/8 soll nach IP $KABELNETZ.$STADT.$(echo $KNOTENIP|cut -d "." -f 1).$KNOTENIPHINTEN geleitet werden.


" fi # # Alles gut! - Hinweis auf Neustart # cat< Die geänderten Einstellungen wurden übernommen.Die Einstellungen sind erst beim nächsten Neustart aktiv. EOF . ${SCRIPT%/*}/cgi-bin-post.sh fi # # Ende der Normalprozedur - nun Fehlermeldung fuer falsche Knotennummer... # echo "Knoten falsch! Ohne gültige Knotennummer ist eine Teilnahme am Netz leider nicht moeglich." . ${SCRIPT%/*}/cgi-bin-post.sh # # Ende Gelaende #