netmode: strip netmoded out of netmode package

This commit is contained in:
Sukru Senli 2022-02-06 13:33:50 +01:00
parent dace8147de
commit f67eca787f
10 changed files with 65 additions and 239 deletions

View file

@ -8,35 +8,26 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=netmode PKG_NAME:=netmode
PKG_VERSION:=0.2.0 PKG_VERSION:=0.3.0
PKG_RELEASE:=1
PKG_SOURCE_VERSION:=5c8abbdf86e4651c7c6f14f784cfb52e69979f96 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_PROTO:=git PKG_LICENSE:=GPL-2.0-only
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/netmoded
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
define Package/netmode define Package/netmode
CATEGORY:=Base system CATEGORY:=Utilities
DEPENDS:=+fping +ubus +libubox +libuci TITLE:=Network Modes and Utils
TITLE:=Predefined Network Modes
endef endef
define Package/netmode/description define Package/netmode/description
Predefined Network Modes Network Modes and Utils
endef
define Build/Compile
endef endef
define Package/netmode/install define Package/netmode/install
$(CP) ./files/* $(1)/ $(CP) ./files/* $(1)/
$(INSTALL_DIR) $(1)/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/netmoded $(1)/sbin/
endef endef
$(eval $(call BuildPackage,netmode)) $(eval $(call BuildPackage,netmode))

View file

@ -1,8 +1,10 @@
config netmoded 'netmoded' config netmode global
option enabled '0' option enabled 0
config setup 'setup'
option enabled '0'
option dir '/etc/netmodes'
# option mode 'router' # option mode 'router'
#config testnet testnet
# option enabled 1
# option destination '8.8.8.8'
#config shiftrange shiftrange
# option enabled 1

View file

@ -1,16 +1,16 @@
#!/bin/sh #!/bin/sh
# do not start testnet if the feature is explicitly disabled
[ "$(uci -q get netmode.testnet.enabled)" = "0" ] && exit 0
[ "$ACTION" == "ifup" -o "$ACTION" == "ifdown" ] || exit 0 [ "$ACTION" == "ifup" -o "$ACTION" == "ifdown" ] || exit 0
interface_check() { interface_check() {
local islan="$(uci -q get network.$INTERFACE.is_lan)" [ "$(uci -q get network.$INTERFACE.is_lan)" = "1" ] && exit 0
[ "$islan" == "1" ] && exit 0
local proto="$(uci -q get network.$INTERFACE.proto)" [ "$(uci -q get network.$INTERFACE.proto)" = "none" ] && exit 0
[ "$proto" == "none" ] && exit 0
local defroute="$(uci -q get network.$INTERFACE.defaultroute)" [ "$(uci -q get network.$INTERFACE.defaultroute)" = "0" ] && exit 0
[ "$defroute" == "0" ] && exit 0
} }
interface_check interface_check
@ -19,4 +19,3 @@ if [ -n "$(pgrep -f testnet)" ]; then
else else
testnet & testnet &
fi fi

View file

@ -2,6 +2,9 @@
# this scripts shifts the lan network prefixes # this scripts shifts the lan network prefixes
# if a wan interface has the same network prefix. # if a wan interface has the same network prefix.
# do not shift range if the feature is explicitly disabled
[ "$(uci -q get netmode.shiftrange.enabled)" == "0" ] && exit 0
. /lib/functions.sh . /lib/functions.sh
. /lib/functions/network.sh . /lib/functions/network.sh

View file

@ -3,44 +3,53 @@
START=10 START=10
USE_PROCD=1 USE_PROCD=1
NETMODED="/sbin/netmoded"
. /lib/functions.sh . /lib/functions.sh
. /lib/functions/netmode.sh
start_netmoded() { MODEDIR="/etc/netmodes"
config_load netmode
config_get enabled netmoded enabled 0 run_netmode_scripts() {
if [ "$enabled" != "1" ]; then mode="$1"
return when="$2"
path=$(readlink -f $MODEDIR/$mode)
[ "${path:0:13}" == "$MODEDIR" ] || exit
if [ -d $MODEDIR/$mode/scripts/$when ]; then
logger -s -p user.info -t "netmode" "Executing $when netmode scripts"
for script in $(ls MODEDIR/$mode/scripts/$when/); do
sh $MODEDIR/$mode/scripts/$when/$script
done
fi fi
procd_open_instance
procd_set_param command $NETMODED
procd_append_param command --verbose warning -i macaddr
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param respawn
procd_close_instance
} }
start_service() { start_service() {
populate_netmodes [ -f /etc/config/netmode -a -d $MODEDIR ] || return
start_netmoded config_load netmode
}
reload_service() { config_get_bool enabled global enabled '0'
switch_netmode [ $enabled -eq 0 ] && return
start_netmoded # Get the desired netmode from config
config_get mode global mode
# Check if netmode is set as boot environment parameter
[ -n "$mode" ] || mode="$(fw_printenv -n netmode 2>/dev/null)"
# Fallback to default netmode if exits
[ -n "$mode" ] || mode="default"
# Return if the desired netmode folder does not exist
[ -d "/etc/netmodes/$mode" ] || return
logger -s -p user.info -t "netmode" "Switching to $mode Mode" >/dev/console
run_netmode_scripts $mode "pre"
if [ -d $MODEDIR/$mode/uci ]; then
logger -s -p user.info -t "netmode" "Copying $MODEDIR/$mode/uci/* to /etc/config/"
cp $MODEDIR/$mode/uci/* /etc/config/ 2>/dev/null
fi
run_netmode_scripts $mode "post"
} }
service_triggers() service_triggers()
{ {
procd_add_reload_trigger netmode procd_add_reload_trigger netmode
} }

View file

@ -1,9 +0,0 @@
{
"description": [
{ "en" : "Bridge Mode" }
],
"explanation": [
{ "en" : "NAT is disabled." }
],
"reboot" : 0
}

View file

@ -1,9 +0,0 @@
{
"description": [
{ "en" : "Router Mode" }
],
"explanation": [
{ "en" : "NAT is enabled." }
],
"reboot" : 0
}

View file

@ -1,13 +0,0 @@
#!/bin/sh
. /lib/functions.sh
add_owsd_ubusproxy_object_netmode() {
local netmd=$(uci -q get owsd.ubusproxy.object | grep netmode)
if [ -z "$netmd" ]; then
uci -q add_list owsd.ubusproxy.object="netmode"
uci commit owsd
fi
}
add_owsd_ubusproxy_object_netmode

View file

@ -1,150 +0,0 @@
#!/bin/sh
. /lib/functions.sh
. /usr/share/libubox/jshn.sh
MODEDIR=$(uci -q get netmode.setup.dir)
[ -n "$MODEDIR" ] || MODEDIR="/etc/netmodes"
run_netmode_scripts() {
local mode=$1
local when=$2
local script
local path
path=$(readlink -f /etc/netmodes/$mode/)
[ "${path:0:14}" == "/etc/netmodes/" ] || exit
if [ -d /etc/netmodes/$mode/scripts/$when ]; then
logger -s -p user.info -t "netmode" "Executing $when netmode scripts" >/dev/console
for script in $(ls /etc/netmodes/$mode/scripts/$when/); do
sh /etc/netmodes/$mode/scripts/$when/$script
done
fi
}
switch_netmode() {
[ -f /etc/config/netmode -a -d $MODEDIR ] || return
config_load netmode
local enabled
config_get_bool enabled setup enabled '0'
[ $enabled -eq 0 ] && return
local mode
config_get mode setup mode
[ -d "/etc/netmodes/$mode" ] || return
logger -s -p user.info -t "netmode" "Switching to $mode Mode" >/dev/console
run_netmode_scripts $mode "pre"
local reboot=$(uci -q get netmode.$mode.reboot)
if [ "$reboot" == "1" ]; then
#run_netmode_scripts $mode "post"
reboot &
exit
fi
#run_netmode_scripts $mode "post"
}
populate_netmodes() {
[ -f /etc/config/netmode -a -d $MODEDIR ] || return
config_load netmode
local enabled
config_get_bool enabled setup enabled '0'
[ $enabled -eq 0 ] && return
delete_netmode() {
uci delete netmode.$1
}
config_foreach delete_netmode netmode
uci commit netmode
local hardware=$(db -q get hw.board.model_name)
local keys lang desc exp exclude support
for mode in $(ls $MODEDIR); do
lang=""
desc=""
exp=""
uci -q set netmode.$mode=netmode
json_load "$(cat $MODEDIR/$mode/DETAILS)"
if json_select excluded_boards; then
exclude=0
_i=1
while json_get_var board $_i; do
case "$hardware" in
$board)
uci -q delete netmode.$mode
exclude=1
break
;;
esac
_i=$((_i+1))
done
json_select ..
[ $exclude -eq 1 ] && continue
elif json_select supported_boards; then
support=0
_i=1
while json_get_var board $_i; do
case "$hardware" in
$board)
support=1
break
;;
esac
_i=$((_i+1))
done
json_select ..
[ $support -eq 1 ] || {
uci -q delete netmode.$mode
continue
}
fi
json_select description
json_get_keys keys
for k in $keys; do
json_get_keys lang $k
lang=$(echo $lang | sed 's/^[ \t]*//;s/[ \t]*$//')
json_select $k
json_get_var desc $lang
uci -q set netmode.$mode."desc_$lang"="$desc"
[ "$lang" == "en" ] && uci -q set netmode.$mode."desc"="$desc"
json_select ..
done
json_select ..
json_select explanation
json_get_keys keys
for k in $keys; do
json_get_keys lang $k
lang=$(echo $lang | sed 's/^[ \t]*//;s/[ \t]*$//')
json_select $k
json_get_var exp $lang
uci -q set netmode.$mode."exp_$lang"="$exp"
[ "$lang" == "en" ] && uci -q set netmode.$mode."exp"="$exp"
json_select ..
done
json_select ..
json_get_var cred credentials
uci -q set netmode.$mode.askcred="$cred"
json_get_var ulb uplink_band
uci -q set netmode.$mode.uplink_band="$ulb"
json_get_var reboot reboot
uci -q set netmode.$mode.reboot="$reboot"
done
uci commit netmode
}

View file

@ -31,7 +31,10 @@ test_connection() {
internet_test() { internet_test() {
local link dest local link dest
dest="$(uci -q get diagnostics.@connectivity[0].destination)" # use the destination address given in config for connectivity check
dest="$(uci -q get netmode.testnet.destination)"
# for backwards compatibility
[ -n "$dest" ] || dest="$(uci -q get diagnostics.@connectivity[0].destination)"
test_connection $dest test_connection $dest