obuspa: Init script enhancement

This commit is contained in:
vdutta 2021-09-16 19:08:31 +05:30
parent d48965a03f
commit 11704f2f91
3 changed files with 59 additions and 59 deletions

View file

@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=obuspa
PKG_VERSION:=4.1.0.2
PKG_VERSION:=4.1.0.3
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=bb552093a94b0e6afd01a815cfad08236b2ea7e2
PKG_SOURCE_VERSION:=cf0a3526fbff0dc81af2d6011b69d7667ee0643a
PKG_SOURCE_URL:=https://dev.iopsys.eu/fork/obuspa.git
PKG_MAINTAINER:=Vivek Dutta <vivek.dutta@iopsys.eu>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
@ -80,13 +80,11 @@ define Package/obuspa/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/etc/obuspa
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
$(INSTALL_BIN) $(PKG_BUILD_DIR)/obuspa $(1)/usr/sbin/
$(INSTALL_BIN) ./files/etc/init.d/obuspa $(1)/etc/init.d/
$(INSTALL_DATA) ./files/etc/config/obuspa $(1)/etc/config/
$(INSTALL_DATA) ./files/etc/obuspa/roles.json $(1)/etc/obuspa/roles.json
$(INSTALL_DATA) ./files/etc/obuspa/dmcaching_exclude.json $(1)/etc/obuspa/dmcaching_exclude.json
$(INSTALL_BIN) ./files/etc/hotplug.d/iface/85-obuspa $(1)/etc/hotplug.d/iface/
endef
$(eval $(call BuildPackage,obuspa))

View file

@ -1,9 +0,0 @@
#!/bin/sh
[ "$(uci -q get obuspa.global.interface)" == "$INTERFACE" ] || exit 0
[ "$ACTION" = ifup -o "$ACTION" = ifupdate ] || exit 0
[ "$ACTION" = ifupdate -a -z "$IFUPDATE_ADDRESSES" ] && exit 0
/etc/init.d/obuspa reload

View file

@ -1,14 +1,12 @@
#!/bin/sh /etc/rc.common
START=99
STOP=2
USE_PROCD=1
PROG=/usr/sbin/obuspa
EXTRA_COMMANDS="remove_db"
EXTRA_HELP=" remove_db Removes obuspa persistent db before restarting, self trigger with uci change"
PARAM_FILE="/tmp/obuspa_param_reset.txt"
CONFIGURATION=obuspa
PARAM_FILE="/tmp/obuspa_param_reset.txt"
KEEP_FILES="/lib/upgrade/keep.d/obuspa"
USP_TEMP_FILE="/tmp/usp.tmp"
controller_num=0
@ -19,6 +17,7 @@ subs_num=0
challenge_num=0
index=0
role_def_file=""
PROFILE="/root/.profile"
. /lib/functions/network.sh
. /usr/share/libubox/jshn.sh
@ -43,6 +42,19 @@ db_set() {
fi
}
update_keep() {
keep_file=${1}
if [ -z "${keep_file}" ]; then
return;
fi
grep -q "${keep_file}" ${KEEP_FILES}
if [ "$?" -ne 0 ]; then
echo ${keep_file} >> ${KEEP_FILES}
fi
}
get_index() {
index=$(( index + 1 ))
if [ "$1" = "$2" ]; then
@ -580,28 +592,42 @@ configure_obuspa() {
fi
if [ -n "${interface}" ]; then
network_get_device ifname ${interface}
network_get_physdev ifname ${interface}
log "ifname from ${interface} is ${ifname}"
fi
if [ -n "${ifname}" ]; then
procd_set_param netdev ${ifname}
fi
# Set this variable for root user and obuspa -c tool
grep -q "export USP_BOARD_IFNAME=${ifname}" /root/.profile || \
echo "export USP_BOARD_IFNAME=${ifname}" >> /root/.profile
if [ -f "${PROFILE}" ]; then
grep -q "export USP_BOARD_IFNAME=${ifname}" ${PROFILE}
if [ "$?" -ne 0 ]; then
grep -q "export USP_BOARD_IFNAME" ${PROFILE}
if [ "$?" -eq 0 ]; then
sed -i "g/export USP_BOARD_IFNAME/d" ${PROFILE}
fi
echo "export USP_BOARD_IFNAME=${ifname}" >> ${PROFILE}
fi
else
echo "export USP_BOARD_IFNAME=${ifname}" > ${PROFILE}
fi
if [ -n "${db_file}" ]; then
echo "${db_file}" >>${KEEP_FILES}
update_keep "${db_file}"
procd_append_param command -f ${db_file}
fi
if [ -n "${trust_cert}" ]; then
echo "${trust_cert}" >>${KEEP_FILES}
update_keep "${trust_cert}"
if [ -f "${trust_cert}" ]; then
procd_append_param command -t ${trust_cert}
fi
fi
if [ -n "${client_cert}" ]; then
echo "${client_cert}" >>${KEEP_FILES}
update_keep "${client_cert}"
if [ -f "${client_cert}" ]; then
procd_append_param command -a ${client_cert}
fi
@ -612,9 +638,6 @@ configure_obuspa() {
# Create factory reset file
db_init() {
[ -f ${PARAM_FILE} ] && rm -f ${PARAM_FILE}
[ -f ${KEEP_FILES} ] && rm -f ${KEEP_FILES}
# Load configuration
config_load $CONFIGURATION
config_foreach configure_obuspa obuspa
@ -629,26 +652,13 @@ db_init() {
db_set Internal.Reboot.Cause "LocalFactoryReset"
}
# if uci changes for obuspa remove persistent db and then reload
remove_db() {
local db_file
config_load obuspa
config_get db_file global db_file
log "Removing db file (${db_file})"
[ -f ${db_file} ] && rm -f ${db_file}
sed -i "g/export USP_BOARD_IFNAME/d" /root/.profile
log "Restarting service"
stop
start
service_running() {
ubus wait_for usp.raw
procd_running ${CONFIGURATION}
}
service_running() {
ubus -t 10 wait_for usp.raw
procd_running ${CONFIGURATION}
boot() {
start
}
start_service() {
@ -662,12 +672,6 @@ start_service() {
return 0;
fi
ubus wait_for usp.raw
if [ "$?" -ne 0 ]; then
log "OBUSPA failed to start usp.raw not available"
return 0
fi
procd_open_instance ${CONFIGURATION}
procd_set_param command ${PROG}
db_init
@ -681,7 +685,19 @@ start_service() {
}
stop_service() {
local db_file
config_load obuspa
config_get db_file global db_file
${PROG} -c stop 2>&1 >/dev/null
if [ -z "${db_file}" ]; then
db_file="/tmp/usp.db"
fi
[ -f ${db_file} ] && rm -f ${db_file}
[ -f ${PARAM_FILE} ] && rm -f ${PARAM_FILE}
}
reload_service() {
@ -690,8 +706,9 @@ reload_service() {
}
service_triggers() {
procd_add_reload_trigger "uspd" "mosquitto"
procd_add_config_trigger "config.change" "${CONFIGURATION}" /etc/init.d/obuspa remove_db
procd_add_reload_trigger "obuspa" "mosquitto"
procd_add_raw_trigger "interface.*" 2000 /etc/init.d/obuspa reload
# Create a reload trigger if schema update avaialble
procd_open_trigger
@ -710,13 +727,7 @@ service_triggers() {
json_add_string "" "reload"
json_close_array
json_close_array
json_add_int "" "1000"
json_add_int "" "2000"
json_close_array
procd_close_trigger
# local interface
# config_load obuspa
# config_get interface global interface
# [ -n "$interface" ] && procd_add_interface_trigger "interface.*" "$interface" /etc/init.d/obuspa reload
}