#!/bin/sh

# related to https://github.com/freifunk-berlin/falter-packages/issues/368
# write the freifunk-file on newly installed nodes

if [ ! -f /etc/config/freifunk ]; then
    cat <<EOT >/etc/config/freifunk
package 'freifunk'

config 'public' 'contact'
	option 'nickname' ''
	option 'name' ''
	option 'mail' ''
	option 'phone' ''
	option 'note' ''

config 'public' 'community'
	option 'name' 'Freifunk'
	option 'homepage' 'http://freifunk.net'

config 'fw_zone' 'zone_freifunk'
	option 'name' 'freifunk'
	option 'input' 'REJECT'
	option 'forward' 'REJECT'
	option 'output' 'ACCEPT'

config 'fw_rule' 'fficmp'
	option 'src' 'freifunk'
	option 'target' 'ACCEPT'
	option 'proto' 'icmp'

config 'fw_rule' 'ffhttp'
	option 'src' 'freifunk'
	option 'target' 'ACCEPT'
	option 'proto' 'tcp'
	option 'dest_port' '80'

config 'fw_rule' 'ffhttps'
	option 'src' 'freifunk'
	option 'target' 'ACCEPT'
	option 'proto' 'tcp'
	option 'dest_port' '443'

config 'fw_rule' 'ffssh'
	option 'src' 'freifunk'
	option 'target' 'ACCEPT'
	option 'proto' 'tcp'
	option 'dest_port' '22'

config 'fw_rule' 'ffolsr'
	option 'src' 'freifunk'
	option 'target' 'ACCEPT'
	option 'proto' 'udp'
	option 'dest_port' '698'

config 'fw_rule' 'ffwprobe'
	option 'src' 'freifunk'
	option 'target' 'ACCEPT'
	option 'proto' 'tcp'
	option 'dest_port' '17990'

config 'fw_rule' 'ffdns'
	option 'dest_port' '53'
	option 'src' 'freifunk'
	option 'target' 'ACCEPT'
	option 'proto' 'udp'

config 'fw_rule' 'ffdhcp'
	option 'src_port' '68'
	option 'src' 'freifunk'
	option 'target' 'ACCEPT'
	option 'dest_port' '67'
	option 'proto' 'udp'
	option 'leasetime' '30m'

config 'fw_rule' 'ffsplash'
	option 'dest_port' '8082'
	option 'src' 'freifunk'
	option 'target' 'ACCEPT'
	option 'proto' 'tcp'

config 'fw_forwarding' 'lanfffwd'
	option 'src' 'lan'
	option 'dest' 'freifunk'

config 'fw_forwarding' 'ffwanfwd'
	option 'src' 'freifunk'
	option 'dest' 'wan'

config 'fw_forwarding' 'fffwd'
	option 'src' 'freifunk'
	option 'dest' 'freifunk'

config 'include' 'freifunk'
	option 'path' '/etc/firewall.freifunk'

config 'defaults' 'system'
	option 'zonename' 'Europe/Berlin'
	option 'timezone' 'CET-1CEST,M3.5.0,M10.5.0/3'

config 'defaults' 'wifi_device'
	option 'channel' '1'
	option 'diversity' '1'
	option 'disabled' '0'
	option 'country' 'DE'
	option 'distance' '1000'

config 'defaults' 'wifi_iface'
	option 'mode' 'adhoc'
	option 'encryption' 'none'
	option 'bssid' '12:CA:FF:EE:BA:BE'
	option 'mcast_rate' '6000'

config 'defaults' 'wifi_iface_5'
	option 'mode' 'adhoc'
	option 'encryption' 'none'
	option 'bssid' '02:36:CA:FF:EE:EE'
	option 'mcast_rate' '6000'

config 'defaults' 'interface'
	option 'netmask' '255.255.0.0'
	option 'dns' '8.8.8.8 141.1.1.1'

config 'defaults' 'alias'
	option 'netmask' '255.255.255.0'

config 'defaults' 'dhcp'
	option 'leasetime' '30m'
	option 'start' '2'
	option 'force' '1'

config 'defaults' 'wifi_iface_80211s'
	option 'mode' 'mesh'
	option 'encryption' 'none'
	option 'mesh_id' 'Mesh-Freifunk'
	option 'mesh_fwding' '0'
	option 'mcast_rate' '12000'
EOT
fi

uci set freifunk.community.name='berlin'
uci set freifunk.community.homepage='http://berlin.freifunk.net'

uci set freifunk.wifi_device=defaults
uci set freifunk.wifi_device.diversity='1'
uci set freifunk.wifi_device.disabled='0'
uci set freifunk.wifi_device.country='DE'
uci set freifunk.wifi_device.channel='13'
uci delete freifunk.wifi_device.distance

uci set freifunk.wifi_device_5=defaults
uci set freifunk.wifi_device_5.diversity='1'
uci set freifunk.wifi_device_5.disabled='0'
uci set freifunk.wifi_device_5.country='DE'

uci set freifunk.olsr_interface=defaults
uci set freifunk.olsr_interface.Ip4Broadcast='255.255.255.255'

uci set freifunk.dhcp.leasetime='5m'

uci commit freifunk
