rpcd-mod-attendedsysupgrade: add package 4627/head
authorPaul Spooren <paul@spooren.de>
Tue, 18 Jul 2017 22:47:40 +0000 (00:47 +0200)
committerPaul Spooren <paul@spooren.de>
Tue, 25 Jul 2017 17:29:21 +0000 (19:29 +0200)
add ubus call to perform a sysupgrade and acl file for the attended
sysupgrade use case as well uci defaults.
Package is a part of the GSoC 17 project implementing easy
sysupgrade functionality.

Signed-off-by: Paul Spooren <paul@spooren.de>
utils/rpcd-mod-attendedsysupgrade/Makefile [new file with mode: 0644]
utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.acl [new file with mode: 0644]
utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.defaults [new file with mode: 0644]
utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.rpcd [new file with mode: 0755]

diff --git a/utils/rpcd-mod-attendedsysupgrade/Makefile b/utils/rpcd-mod-attendedsysupgrade/Makefile
new file mode 100644 (file)
index 0000000..ad9c8fc
--- /dev/null
@@ -0,0 +1,44 @@
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=rpcd-mod-attendedsysupgrade
+PKG_VERSION:=1
+PKG_RELEASE:=1
+PKG_LICENSE:=GPL-2.0
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/rpcd-mod-attendedsysupgrade
+  SECTION:=utils
+  CATEGORY:=Base system
+  TITLE:=OpenWrt ubus RPC backend server (attendedsysupgrade)
+  MAINTAINER:=Paul Spooren <paul@spooren.de>
+  DEPENDS:=rpcd +cgi-io +rpcd-mod-packagelist
+endef
+
+define Package/rpcd-mod-attendedsysupgrade/description
+       implements sysupgrade function with ubus
+       add uci settings and needed acls
+endef
+
+define Build/Compile
+endef
+
+define Build/Configure
+endef
+
+define Package/rpcd-mod-attendedsysupgrade/install
+       $(INSTALL_DIR) $(1)/usr/share/rpcd/acl.d/
+       $(INSTALL_BIN) ./files/attendedsysupgrade.acl $(1)/usr/share/rpcd/acl.d/attendedsysupgrade.json
+
+       $(INSTALL_DIR) $(1)/usr/libexec/rpcd/
+       $(INSTALL_BIN) ./files/attendedsysupgrade $(1)/usr/libexec/rpcd/attendedsysupgrade
+
+       $(INSTALL_DIR) $(1)/etc/uci-defaults/
+       $(INSTALL_BIN) ./files/attendedsysupgrade.defaults $(1)/etc/uci-defaults/attendedsysupgrade
+endef
+
+$(eval $(call BuildPackage,rpcd-mod-attendedsysupgrade))
diff --git a/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.acl b/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.acl
new file mode 100644 (file)
index 0000000..fdb05b7
--- /dev/null
@@ -0,0 +1,26 @@
+{
+       "attendedsysupgrade": {
+               "description": "attended sysupgrade via rpcd",
+               "read": {
+                       "ubus": {
+                               "attendedsysupgrade": [
+                                       "sysupgrade"
+                               ], 
+                               "system": [
+                                       "board"
+                               ],
+                               "uci": [ 
+                                       "get" 
+                               ]
+                       },
+                       "uci": [ 
+                               "*" 
+                       ]
+               },
+               "write": {
+                       "cgi-io": [
+                               "upload"
+                       ]
+               }
+       }
+}
diff --git a/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.defaults b/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.defaults
new file mode 100644 (file)
index 0000000..772ec53
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+[ -e /etc/config/attendedsysupgrade ] && exit 0
+
+touch /etc/config/attendedsysupgrade
+
+uci -q batch <<EOF
+add attendedsysupgrade settings
+set attendedsysupgrade.@settings[0].update_server=https://betaupdate.libremesh.org
+commit attendedsysupgrade
+EOF
+
+exit 01
diff --git a/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.rpcd b/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.rpcd
new file mode 100755 (executable)
index 0000000..20cf2c2
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+. /usr/share/libubox/jshn.sh
+
+case "$1" in
+       list)
+               json_init
+
+               json_add_object "sysupgrade"
+               json_close_object
+
+               json_dump
+        ;;
+    call)
+        case "$2" in
+                       sysupgrade)
+                               if [ -f "/tmp/sysupgrade.bin" ]; then
+                                       /etc/init.d/uhttpd stop
+                                       /etc/init.d/dropbear stop
+                                       sleep 1;
+                                       /sbin/sysupgrade -c /tmp/sysupgrade.bin
+                               fi
+                               json_init
+                               json_add_string "message" "could not find /tmp/sysupgrade.bin"
+                               json_dump
+        esac
+    ;;
+esac
+