From fd4222f65d7a656cb4393e3b87000ed7ac33019b Mon Sep 17 00:00:00 2001
From: Nils Schneider <nils@nilsschneider.net>
Date: Mon, 30 Sep 2013 23:31:35 +0200
Subject: [PATCH] gluon-autoupdater: read config from site.conf

---
 package/gluon-autoupdater/Makefile            |  4 +++-
 package/gluon-autoupdater/autoupdater.pl      | 23 +++++++++++++++++++
 .../files/etc/config/autoupdater              |  2 +-
 .../files/usr/sbin/autoupdate                 | 12 +++++-----
 4 files changed, 33 insertions(+), 8 deletions(-)
 create mode 100644 package/gluon-autoupdater/autoupdater.pl

diff --git a/package/gluon-autoupdater/Makefile b/package/gluon-autoupdater/Makefile
index 09c398dec..43d9beb90 100644
--- a/package/gluon-autoupdater/Makefile
+++ b/package/gluon-autoupdater/Makefile
@@ -23,11 +23,13 @@ define Build/Configure
 endef
 
 define Build/Compile
+	$(GLUON_CONFIGURE) autoupdater.pl > $(PKG_BUILD_DIR)/autoupdater.sh
 endef
 
 define Package/gluon-autoupdater/install
 	$(CP) ./files/* $(1)/
-	chmod +x $(1)/usr/sbin/autoupdate
+	$(INSTALL_DIR) $(1)/lib/gluon/upgrade/autoupdater/initial
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/autoupdater.sh $(1)/lib/gluon/upgrade/autoupdater/initial/010-autoupdater
 endef
 
 $(eval $(call BuildPackage,gluon-autoupdater))
diff --git a/package/gluon-autoupdater/autoupdater.pl b/package/gluon-autoupdater/autoupdater.pl
new file mode 100644
index 000000000..88bac9f6d
--- /dev/null
+++ b/package/gluon-autoupdater/autoupdater.pl
@@ -0,0 +1,23 @@
+my $cfg = $CONFIG->{autoupdater};
+
+print <<'END';
+#/bin/sh
+
+uci -q batch <<EOF
+delete autoupdater.default
+set autoupdater.default=autoupdater
+END
+
+for (qw(enabled branch url probability good_signatures)) {
+  print 'set autoupdater.default.' . $_ . '=' . $cfg->{$_} . "\n";
+}
+
+for (@{$cfg->{pubkeys}}) {
+  print 'add_list autoupdater.default.pubkey=' . $_ . "\n";
+}
+
+print <<END;
+
+commit autoupdater
+EOF
+END
diff --git a/package/gluon-autoupdater/files/etc/config/autoupdater b/package/gluon-autoupdater/files/etc/config/autoupdater
index 9702ef214..b894baf3c 100644
--- a/package/gluon-autoupdater/files/etc/config/autoupdater
+++ b/package/gluon-autoupdater/files/etc/config/autoupdater
@@ -1,4 +1,4 @@
-config autoupdater
+config autoupdater default
         option enabled 1
         option branch "stable"
         option url 'http://[fdef:ffc0:3dd7::8]/~freifunk/firmware/autoupdate'
diff --git a/package/gluon-autoupdater/files/usr/sbin/autoupdate b/package/gluon-autoupdater/files/usr/sbin/autoupdate
index f7a2208b0..93406f242 100755
--- a/package/gluon-autoupdater/files/usr/sbin/autoupdate
+++ b/package/gluon-autoupdater/files/usr/sbin/autoupdate
@@ -1,11 +1,11 @@
 #!/bin/sh
 
-if test $(uci get autoupdater.@autoupdater[0].enabled) != 1; then
+if test $(uci get autoupdater.default.enabled) != 1; then
   echo "autoupdater is disabled"
   exit 0
 fi
 
-PROBABILITY=$(uci get autoupdater.@autoupdater[0].probability)
+PROBABILITY=$(uci get autoupdater.default.probability)
 
 if test "a$1" != "a-f"; then
   echo | awk "END{srand();exit rand() > $PROBABILITY}"
@@ -15,10 +15,10 @@ if test "a$1" != "a-f"; then
   fi
 fi
 
-BASE=$(uci get autoupdater.@autoupdater[0].url)
-PUBKEYS=$(uci get autoupdater.@autoupdater[0].pubkey)
-GOOD_SIGNATURES=$(uci get autoupdater.@autoupdater[0].good_signatures)
-BRANCH=$(uci get autoupdater.@autoupdater[0].branch)
+BASE=$(uci get autoupdater.default.url)
+PUBKEYS=$(uci get autoupdater.default.pubkey)
+GOOD_SIGNATURES=$(uci get autoupdater.default.good_signatures)
+BRANCH=$(uci get autoupdater.default.branch)
 
 VERSION_FILE=/lib/gluon/release
 
-- 
GitLab