mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2026-01-07 09:02:36 +08:00
Compare commits
2 Commits
map-nev1
...
easy-qos-i
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ca3791a2f1 | ||
|
|
1c659d10b6 |
@@ -1,5 +1,6 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
. /lib/functions/iopsys-repeated-macs.sh
|
||||
. /usr/share/libubox/jshn.sh
|
||||
|
||||
START=99
|
||||
@@ -79,13 +80,13 @@ map_client_entries() {
|
||||
|
||||
# Find the IP of a corresponding mac from arp table
|
||||
get_ipaddress() {
|
||||
local clients ip mac host
|
||||
local clients ip="" mac host
|
||||
|
||||
json_load "$(cat ${CLIENT_LIST})"
|
||||
json_get_keys keys
|
||||
|
||||
# jshn seems a bit iffy on having : in key, replace by _
|
||||
json_select "${1//:/_}"
|
||||
json_select "${1//:/_}" 2 > /dev/null
|
||||
json_get_var ip ip
|
||||
|
||||
echo "$ip"
|
||||
@@ -141,7 +142,24 @@ create_rule() {
|
||||
fi
|
||||
cmd="-s ${src_ip} $cmd"
|
||||
|
||||
check_and_create ${cmd}
|
||||
check_and_create ${cmd}
|
||||
}
|
||||
|
||||
create_rules() {
|
||||
proto=$1; shift
|
||||
mac=$1; shift
|
||||
prio_num=$1; shift
|
||||
port_list=$1;
|
||||
|
||||
ip=$(get_ipaddress $mac)
|
||||
[ -n "$ip" ] || return
|
||||
|
||||
if [ "$proto" == "none" ]; then
|
||||
create_rule tcp $ip $prio_num $port_list
|
||||
create_rule udp $ip $prio_num $port_list
|
||||
else
|
||||
create_rule $proto $ip $prio_num $port_list
|
||||
fi
|
||||
}
|
||||
|
||||
manage_rule() {
|
||||
@@ -154,17 +172,15 @@ manage_rule() {
|
||||
}
|
||||
|
||||
prio_num=$(get_priority ${priority})
|
||||
ip=$(get_ipaddress ${macaddr})
|
||||
port_list=$(echo ${port}|sed 's/ /,/g')
|
||||
|
||||
if [ -n "${ip}" -a -n "${prio_num}" ]; then
|
||||
if [ "${proto}" == "none" ]; then
|
||||
create_rule tcp ${ip} ${prio_num} ${port_list}
|
||||
create_rule udp ${ip} ${prio_num} ${port_list}
|
||||
else
|
||||
create_rule ${proto} ${ip} ${prio_num} ${port_list}
|
||||
fi
|
||||
fi
|
||||
[ -n "${prio_num}" ] || return
|
||||
|
||||
create_rules ${proto} ${macaddr} ${prio_num} ${port_list}
|
||||
repeated_macs=$(mac_to_repeated ${macaddr})
|
||||
for mac in $repeated_macs; do
|
||||
create_rules ${proto} $mac ${prio_num} ${port_list}
|
||||
done
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
|
||||
35
script-trigger/Makefile
Normal file
35
script-trigger/Makefile
Normal file
@@ -0,0 +1,35 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=script-trigger
|
||||
PKG_VERSION:=1.0
|
||||
PKG_RELEASE:=0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/script-trigger
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=Script Trigger
|
||||
endef
|
||||
|
||||
define Package/script-trigger/description
|
||||
This package will install a script listening for ubusx object getting
|
||||
added in order to reload the firewall and easy-qos script
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
$(CP) ./files/* $(PKG_BUILD_DIR)/
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/script-trigger/install
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(CP) ./files/etc/init.d/script-trigger $(1)/etc/init.d/
|
||||
$(CP) ./files/usr/bin/script-trigger $(1)/usr/bin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,script-trigger))
|
||||
28
script-trigger/files/etc/init.d/script-trigger
Executable file
28
script-trigger/files/etc/init.d/script-trigger
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=14
|
||||
STOP=96
|
||||
|
||||
USE_PROCD=1
|
||||
NAME=script-trigger
|
||||
|
||||
start_service() {
|
||||
procd_open_instance
|
||||
procd_set_param command "/usr/bin/script-trigger"
|
||||
procd_set_param respawn
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
stop() {
|
||||
#stop_service() is called after procd killed the service
|
||||
killall -9 script-trigger
|
||||
}
|
||||
|
||||
service_triggers()
|
||||
{
|
||||
echo ;
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
echo ;
|
||||
}
|
||||
24
script-trigger/files/usr/bin/script-trigger
Executable file
24
script-trigger/files/usr/bin/script-trigger
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
|
||||
. /usr/share/libubox/jshn.sh
|
||||
|
||||
while true ; do
|
||||
ubus listen ubus.object.add | \
|
||||
while read event ; do
|
||||
json_load "$event"
|
||||
json_get_keys keys
|
||||
|
||||
for k in $keys; do
|
||||
case $k in
|
||||
*add)
|
||||
json_select $k
|
||||
json_get_var path path
|
||||
if [ -n "$(echo $path | grep [0-9].[0-9].[0-9].[0-9]/router.system)" ]; then
|
||||
/etc/init.d/firewall restart
|
||||
/etc/init.d/easy-qos restart
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
done
|
||||
Reference in New Issue
Block a user