rpcd-mod-attendedsysupgrade: add package
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>
This commit is contained in:
parent
0499b69423
commit
f9a6c81c11
4 changed files with 112 additions and 0 deletions
44
utils/rpcd-mod-attendedsysupgrade/Makefile
Normal file
44
utils/rpcd-mod-attendedsysupgrade/Makefile
Normal file
|
@ -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))
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"attendedsysupgrade": {
|
||||
"description": "attended sysupgrade via rpcd",
|
||||
"read": {
|
||||
"ubus": {
|
||||
"attendedsysupgrade": [
|
||||
"sysupgrade"
|
||||
],
|
||||
"system": [
|
||||
"board"
|
||||
],
|
||||
"uci": [
|
||||
"get"
|
||||
]
|
||||
},
|
||||
"uci": [
|
||||
"*"
|
||||
]
|
||||
},
|
||||
"write": {
|
||||
"cgi-io": [
|
||||
"upload"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
29
utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.rpcd
Executable file
29
utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.rpcd
Executable file
|
@ -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
|
||||
|
Loading…
Reference in a new issue