ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/net/gnunet/files/gnunet-dhtcache-heap.defaults b/external/subpack/net/gnunet/files/gnunet-dhtcache-heap.defaults
new file mode 100644
index 0000000..09172b6
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-dhtcache-heap.defaults
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+uci -q get gnunet.dhtcache || uci set gnunet.dhtcache=gnunet-config
+
+uci -q batch <<EOF
+ set gnunet.dhtcache.DATABASE=heap
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-dhtcache-pgsql.defaults b/external/subpack/net/gnunet/files/gnunet-dhtcache-pgsql.defaults
new file mode 100644
index 0000000..eedbe24
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-dhtcache-pgsql.defaults
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+uci -q get gnunet.dhtcache || uci set gnunet.dhtcache=gnunet-config
+
+uci -q batch <<EOF
+ set gnunet.dhtcache.DATABASE=postgres
+ set gnunet.datacache_postgres=gnunet-config
+ set gnunet.datacache_postgres.CONFIG=postgres://gnunet@%2Ftmp%2Frun%2Fpostgresql/gnunet
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-dhtcache-sqlite.defaults b/external/subpack/net/gnunet/files/gnunet-dhtcache-sqlite.defaults
new file mode 100644
index 0000000..5166052
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-dhtcache-sqlite.defaults
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q get gnunet.dhtcache || uci set gnunet.dhtcache=gnunet-config
+
+uci -q batch <<EOF
+ del gnunet.datacache_sqlite
+ set gnunet.datacache_sqlite=gnunet-config
+ set gnunet.datacache_sqlite.FILENAME=/var/run/gnunet/datacache.sqlite
+ set gnunet.dhtcache.DATABASE=sqlite
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-fs-heap.defaults b/external/subpack/net/gnunet/files/gnunet-fs-heap.defaults
new file mode 100644
index 0000000..19b0531
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-fs-heap.defaults
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+uci -q get gnunet.datastore || uci set gnunet.datastore=gnunet-config
+
+uci -q batch <<EOF
+ set gnunet.datastore.DATABASE=heap
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-fs-pgsql.defaults b/external/subpack/net/gnunet/files/gnunet-fs-pgsql.defaults
new file mode 100644
index 0000000..8caeb82
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-fs-pgsql.defaults
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+uci -q get gnunet.datastore || uci set gnunet.datastore=gnunet-config
+
+uci -q batch <<EOF
+ set gnunet.datastore.DATABASE=postgres
+ set gnunet.datastore_postgres=gnunet-config
+ set gnunet.datastore_postgres.CONFIG=postgres://gnunet@%2Ftmp%2Frun%2Fpostgresql/gnunet
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-fs-sqlite.defaults b/external/subpack/net/gnunet/files/gnunet-fs-sqlite.defaults
new file mode 100644
index 0000000..ff72335
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-fs-sqlite.defaults
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q get gnunet.datastore || uci set gnunet.datastore=gnunet-config
+
+uci -q batch <<EOF
+ del gnunet.datastore_sqlite
+ set gnunet.datastore_sqlite=gnunet-config
+ set gnunet.datastore_sqlite.FILENAME=/etc/gnunet/datastore.sqlite
+ set gnunet.datastore.DATABASE=sqlite
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-gns-flat.defaults b/external/subpack/net/gnunet/files/gnunet-gns-flat.defaults
new file mode 100644
index 0000000..a861291
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-gns-flat.defaults
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+uci -q get gnunet.namestore || uci set gnunet.namestore=gnunet-config
+uci -q get gnunet.namecache || uci set gnunet.namecache=gnunet-config
+
+uci -q batch <<EOF
+ del gnunet.namestore_flat
+ set gnunet.namestore_flat=gnunet-config
+ set gnunet.namestore_flat.FILENAME=/etc/gnunet/namestore.flat
+ set gnunet.namestore.DATABASE=flat
+ del gnunet.namecache_flat
+ set gnunet.namecache_flat=gnunet-config
+ set gnunet.namecache_flat.FILENAME=/var/run/gnunet/namecache.flat
+ set gnunet.namecache.DATABASE=flat
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-gns-pgsql.defaults b/external/subpack/net/gnunet/files/gnunet-gns-pgsql.defaults
new file mode 100644
index 0000000..ccc9707
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-gns-pgsql.defaults
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+uci -q get gnunet.namestore || uci set gnunet.namestore=gnunet-config
+uci -q get gnunet.namecache || uci set gnunet.namecache=gnunet-config
+
+uci -q batch <<EOF
+ set gnunet.namestore.DATABASE=postgres
+ set gnunet.namecache.DATABASE=postgres
+ set gnunet.namestore_postgres=gnunet-config
+ set gnunet.namestore_postgres.CONFIG=postgres://gnunet@%2Ftmp%2Frun%2Fpostgresql/gnunet
+ set gnunet.namecache_postgres=gnunet-config
+ set gnunet.namecache_postgres.CONFIG=postgres://gnunet@%2Ftmp%2Frun%2Fpostgresql/gnunet
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-gns-sqlite.defaults b/external/subpack/net/gnunet/files/gnunet-gns-sqlite.defaults
new file mode 100644
index 0000000..4f46818
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-gns-sqlite.defaults
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+uci -q get gnunet.namestore || uci set gnunet.namestore=gnunet-config
+uci -q get gnunet.namecache || uci set gnunet.namecache=gnunet-config
+
+uci -q batch <<EOF
+ del gnunet.namestore_sqlite
+ set gnunet.namestore_sqlite=gnunet-config
+ set gnunet.namestore_sqlite.FILENAME=/etc/gnunet/namestore.sqlite
+ set gnunet.namestore.DATABASE=sqlite
+ del gnunet.namecache_sqlite
+ set gnunet.namecache_sqlite=gnunet-config
+ set gnunet.namecache_sqlite.FILENAME=/var/run/gnunet/namecache.sqlite
+ set gnunet.namecache.DATABASE=sqlite
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-gns.defaults b/external/subpack/net/gnunet/files/gnunet-gns.defaults
new file mode 100644
index 0000000..9363551
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-gns.defaults
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+uci -q batch <<EOF
+del network.gnunetdns
+set network.gnunetdns=interface
+set network.gnunetdns.ifname='gnunet-dns'
+set network.gnunetdns.proto='gnunet'
+
+del network.gndnsrtt
+set network.gndnsrtt=route
+set network.gndnsrtt.interface='gnunetdns'
+set network.gndnsrtt.table='53'
+set network.gndnsrtt.target='0.0.0.0/0'
+
+del network.gndnsrl
+set network.gndnsrl=rule
+set network.gndnsrl.mark='0x8260035'
+set network.gndnsrl.lookup='53'
+set network.gndnsrk.priority='0'
+
+commit network
+
+del firewall.gnunetdns
+set firewall.gnunetdns=zone
+set firewall.gnunetdns.name='gnunetdns'
+set firewall.gnunetdns.network='gnunetdns'
+set firewall.gnunetdns.input='ACCEPT'
+set firewall.gnunetdns.output='ACCEPT'
+set firewall.gnunetdns.forward='ACCEPT'
+
+del firewall.gndnsrl
+set firewall.gndnsrl=rule
+set firewall.gndnsrl.name='Mark-local-DNS-for-GNUnet'
+set firewall.gndnsrl.proto='udp'
+set firewall.gndnsrl.dest_port='53'
+set firewall.gndnsrl.extra='-m owner ! --gid-owner 452-453'
+set firewall.gndnsrl.target='MARK'
+set firewall.gndnsrl.set_mark='136708149'
+
+del firewall.gndnsrl2
+set firewall.gndnsrl2=rule
+set firewall.gndnsrl2.name='Mark-forwarded-DNS-for-GNUnet'
+set firewall.gndnsrl2.enabled='0'
+set firewall.gndnsrl2.src='*'
+set firewall.gndnsrl2.proto='udp'
+set firewall.gndnsrl2.dest_port='53'
+set firewall.gndnsrl2.target='MARK'
+set firewall.gndnsrl2.set_mark='136708149'
+
+commit firewall
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-peerstore-flat.defaults b/external/subpack/net/gnunet/files/gnunet-peerstore-flat.defaults
new file mode 100644
index 0000000..3cd7e33
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-peerstore-flat.defaults
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q get gnunet.peerstore || uci set gnunet.peerstore=gnunet-config
+
+uci -q batch <<EOF
+ del gnunet.peerstore_flat
+ set gnunet.peerstore_flat=gnunet-config
+ set gnunet.peerstore_flat.FILENAME=/etc/gnunet/peerstore.flat
+ set gnunet.peerstore.DATABASE=flat
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-peerstore-sqlite.defaults b/external/subpack/net/gnunet/files/gnunet-peerstore-sqlite.defaults
new file mode 100644
index 0000000..47298e7
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-peerstore-sqlite.defaults
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q get gnunet.peerstore || uci set gnunet.peerstore=gnunet-config
+
+uci -q batch <<EOF
+ del gnunet.peerstore_sqlite
+ set gnunet.peerstore_sqlite=gnunet-config
+ set gnunet.peerstore_sqlite.FILENAME=/etc/gnunet/peerstore.sqlite
+ set gnunet.peerstore.DATABASE=sqlite
+ commit gnunet
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-pgsql.defaults b/external/subpack/net/gnunet/files/gnunet-pgsql.defaults
new file mode 100644
index 0000000..1bb194f
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-pgsql.defaults
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+uci -q batch <<EOF
+ del postgresql.gnunet
+ set postgresql.gnunet=postgres-db
+ set postgresql.gnunet.name=gnunet
+ set postgresql.gnunet.user=gnunet
+ commit postgresql
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet-proto.sh b/external/subpack/net/gnunet/files/gnunet-proto.sh
new file mode 100644
index 0000000..8883f42
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-proto.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+# gnunet.sh - GNUnet proto for netifd
+# Copyright (c) 2016 OpenWrt.org
+
+[ -n "$INCLUDE_ONLY" ] || {
+ . /lib/functions.sh
+ . /lib/functions/network.sh
+ . ../netifd-proto.sh
+ init_proto "$@"
+}
+
+proto_gnunet_setup() {
+ local cfg="$1"
+ local iface="$2"
+
+ local ipv4_addr ipv6_addr prefix ipaddr ip6addr
+
+ local configfile="/var/run/gnunet/gnunet.conf"
+ local gnunet_iftype
+
+ for gnit in dns exit vpn; do
+ local i1="$(gnunet-config -c $configfile -s $gnit -o IFNAME 2>/dev/null)"
+ local i2="$(gnunet-config -c $configfile -s $gnit -o TUN_IFNAME 2>/dev/null)"
+ [ "$i1" = "$iface" -o "$i2" = "$iface" ] && gnunet_iftype="$gnit"
+ done
+
+ if [ -z "$iface" -o -z "$gnunet_iftype" ]; then
+ proto_setup_failed "$cfg"
+ return
+ fi
+
+ proto_init_update "$iface" 1
+ ipaddr="$(gnunet-config -c $configfile -s $gnunet_iftype -o IPV4ADDR 2>/dev/null)"
+ ipmask="$(gnunet-config -c $configfile -s $gnunet_iftype -o IPV4MASK 2>/dev/null)"
+ ip6addr="$(gnunet-config -c $configfile -s $gnunet_iftype -o IPV6ADDR 2>/dev/null)"
+ ip6prefix="$(gnunet-config -c $configfile -s $gnunet_iftype -o IPV6PREFIX 2>/dev/null)"
+
+ [ -n "$ipaddr" ] && proto_add_ipv4_address "$ipaddr" "$ipmask"
+ [ -n "$ip6addr" ] && proto_add_ipv6_address "$ip6addr" "$ip6prefix"
+ proto_send_update "$cfg"
+}
+
+proto_gnunet_teardown() {
+ return
+}
+
+[ -n "$INCLUDE_ONLY" ] || {
+ add_protocol gnunet
+}
+
+
diff --git a/external/subpack/net/gnunet/files/gnunet-vpn.defaults b/external/subpack/net/gnunet/files/gnunet-vpn.defaults
new file mode 100644
index 0000000..efc9d7b
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet-vpn.defaults
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+uci -q batch <<EOF
+del network.gnunetvpn
+set network.gnunetvpn=interface
+set network.gnunetvpn.ifname='vpn-gnunet'
+set network.gnunetvpn.proto='gnunet'
+del network.gnunetexit
+set network.gnunetexit=interface
+set network.gnunetexit.ifname='exit-gnunet'
+set network.gnunetexit.proto='gnunet'
+commit network
+
+del firewall.gnunetvpn
+set firewall.gnunetvpn=zone
+set firewall.gnunetvpn.name='gnunetvpn'
+set firewall.gnunetvpn.network='gnunetvpn'
+set firewall.gnunetvpn.input='ACCEPT'
+set firewall.gnunetvpn.output='ACCEPT'
+set firewall.gnunetvpn.forward='REJECT'
+del firewall.gnunetexit
+set firewall.gnunetexit=zone
+set firewall.gnunetexit.name='gnunetexit'
+set firewall.gnunetexit.network='gnunetexit'
+set firewall.gnunetexit.input='ACCEPT'
+set firewall.gnunetexit.output='ACCEPT'
+set firewall.gnunetexit.forward='REJECT'
+
+del firewall.gnexitfwd
+set firewall.gnexitfwd=forwarding
+set firewall.gnexitfwd.src='gnunetexit'
+set firewall.gnexitfwd.dest='wan'
+commit firewall
+EOF
diff --git a/external/subpack/net/gnunet/files/gnunet.defaults b/external/subpack/net/gnunet/files/gnunet.defaults
new file mode 100644
index 0000000..235f3b2
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet.defaults
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+[ -e /etc/config/gnunet ] && exit 0
+
+touch /etc/config/gnunet
+
+uci batch <<EOF
+set gnunet.nse=gnunet-config
+set gnunet.nse.WORKDELAY='500 ms'
+
+commit gnunet
+
+EOF
+
diff --git a/external/subpack/net/gnunet/files/gnunet.init b/external/subpack/net/gnunet/files/gnunet.init
new file mode 100755
index 0000000..5fad67b
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet.init
@@ -0,0 +1,103 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2015 OpenWrt.org
+
+START=90
+
+USE_PROCD=1
+PROG=/usr/lib/gnunet/libexec/gnunet-service-arm
+
+GNUNET_HOME=/var/run/gnunet
+# LOGFILE=$GNUNET_HOME/gnunet.log
+CONFIGFILE=$GNUNET_HOME/gnunet.conf
+
+extra_command "restart_transport" "Restart transport"
+
+prepare_config() {
+ local had_exit_service=0
+
+ if [ ! -e "$GNUNET_HOME" ]; then
+ mkdir -m 0750 -p "$GNUNET_HOME"
+ chown gnunet:gnunet "$GNUNET_HOME"
+ fi
+ touch "$CONFIGFILE"
+ chown gnunet:gnunet "$CONFIGFILE"
+ chmod 0640 "$CONFIGFILE"
+ gnunet-config -c "$CONFIGFILE" -s PATHS -o GNUNET_HOME -V "$GNUNET_HOME"
+
+ # minimal persistency in /etc/gnunet
+ [ ! -d /etc/gnunet ] && mkdir -m 0750 -p /etc/gnunet
+ chown -R gnunet:gnunet /etc/gnunet
+
+ # defaults paths for persistent files
+ gnunet-config -c "$CONFIGFILE" -s PATHS -o GNUNET_CONFIG_HOME -V /etc/gnunet
+ gnunet-config -c "$CONFIGFILE" -s PEER -o PRIVATE_KEY -V /etc/gnunet/private_key.ecc
+ gnunet-config -c "$CONFIGFILE" -s identity -o EGODIR -V /etc/gnunet/identity/egos
+ gnunet-config -c "$CONFIGFILE" -s revocation -o DATABASE -V /etc/gnunet/revocation.dat
+ gnunet-config -c "$CONFIGFILE" -s nse -o PROOFFILE -V /etc/gnunet/proof.dat
+
+ # enable all installed transport plugins
+ transport_plugins=$(gnunet-config -c "$CONFIGFILE" -s transport -o PLUGINS)
+ for transplug in /usr/lib/gnunet/libgnunet_plugin_transport_*.so; do
+ transplug="$( echo "$transplug" |
+ sed -ne 's!^.*_transport_\(.*\)\.so$!\1!p' )"
+ echo "$transport_plugins" | grep -q "$transplug" ||
+ transport_plugins="$transport_plugins $transplug"
+ done
+ gnunet-config -c "$CONFIGFILE" -s transport -o PLUGINS -V "$transport_plugins"
+
+ # do not touch sysctl, iptables and routing
+ gnunet-config -c "$CONFIGFILE" -s dns -o SKIP_ROUTING_SETUP -V YES
+ gnunet-config -c "$CONFIGFILE" -s exit -o EXIT_IFNAME -V ''
+
+ # apply config from UCI
+ _gnunet_section=""
+ config_cb()
+ {
+ # $1 "Type"
+ # $2 "Name"
+ local __TYPE="$1"
+ local __NAME="${2/_/-}"
+ [ "${__TYPE}" = "gnunet-config" ] && _gnunet_section="${__NAME}"
+ [ "${__TYPE}" = "gnunet-exit-service" ] && {
+ had_exit_service=1
+ _gnunet_section="${__NAME}.gnunet."
+ }
+ }
+ option_cb() {
+ # $1 name of variable
+ # $2 value
+ local __OPT="$1"
+ local __VAL="$2"
+ gnunet-config -c "$CONFIGFILE" -s "${_gnunet_section}" -o "${__OPT}" -V "${__VAL}"
+ }
+
+ config_load gnunet
+
+ [ "$had_exit_service" -eq 1 ] && gnunet-config -c "$CONFIGFILE" -s exit -o FORCESTART -V YES
+
+ return 0
+}
+
+restart_transport() {
+ gnunet-arm -c "$CONFIGFILE" -k transport
+ gnunet-arm -c "$CONFIGFILE" -i transport
+}
+
+start_service() {
+ prepare_config
+
+ procd_open_instance
+ procd_set_param user gnunet
+# procd_set_param env GNUNET_LOG="dht;;;;info"
+ procd_set_param stderr 1
+ procd_set_param command "$PROG" -c "$CONFIGFILE"
+ [ "$LOGFILE" ] && procd_append_param command -l "$LOGFILE"
+ procd_set_param respawn
+ procd_close_instance
+}
+
+service_triggers()
+{
+ procd_add_reload_trigger "gnunet"
+ procd_add_raw_trigger "interface.*.up" 3000 /etc/init.d/gnunet restart_transport
+}
diff --git a/external/subpack/net/gnunet/files/gnunet.upgrade b/external/subpack/net/gnunet/files/gnunet.upgrade
new file mode 100644
index 0000000..f488957
--- /dev/null
+++ b/external/subpack/net/gnunet/files/gnunet.upgrade
@@ -0,0 +1 @@
+/etc/gnunet