mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
netmode: strip netmoded out of netmode package
This commit is contained in:
parent
dace8147de
commit
f67eca787f
10 changed files with 65 additions and 239 deletions
|
|
@ -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))
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"description": [
|
|
||||||
{ "en" : "Bridge Mode" }
|
|
||||||
],
|
|
||||||
"explanation": [
|
|
||||||
{ "en" : "NAT is disabled." }
|
|
||||||
],
|
|
||||||
"reboot" : 0
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"description": [
|
|
||||||
{ "en" : "Router Mode" }
|
|
||||||
],
|
|
||||||
"explanation": [
|
|
||||||
{ "en" : "NAT is enabled." }
|
|
||||||
],
|
|
||||||
"reboot" : 0
|
|
||||||
}
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
}
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue