From 80f2c3151a5cd64e068bb3bc86b72186b74ab02b Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 8 Jan 2024 15:38:20 +0100 Subject: [PATCH] Move some script to cron instead of omr-tracker --- omr-schedule/Makefile | 38 +++++++++++++++++++ omr-schedule/files/bin/omr-schedule | 10 +++++ .../files/etc/uci-defaults/3000-omr-schedule | 4 ++ .../usr/share/omr/schedule.d}/010-services | 38 ++++++------------- .../files/usr/share/omr/schedule.d/030-bypass | 19 ++++++++++ .../files/usr/share/omr/schedule.d}/050-rutx | 0 6 files changed, 82 insertions(+), 27 deletions(-) create mode 100644 omr-schedule/Makefile create mode 100755 omr-schedule/files/bin/omr-schedule create mode 100755 omr-schedule/files/etc/uci-defaults/3000-omr-schedule rename {mptcp/files/usr/share/omr/post-tracking.d => omr-schedule/files/usr/share/omr/schedule.d}/010-services (87%) create mode 100755 omr-schedule/files/usr/share/omr/schedule.d/030-bypass rename {mptcp/files/usr/share/omr/post-tracking.d => omr-schedule/files/usr/share/omr/schedule.d}/050-rutx (100%) diff --git a/omr-schedule/Makefile b/omr-schedule/Makefile new file mode 100644 index 000000000..80dbded52 --- /dev/null +++ b/omr-schedule/Makefile @@ -0,0 +1,38 @@ +# +# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=omr-schedule +PKG_VERSION:=0.1 +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) +SECTION:=OMR +CATEGORY:=OMR-Schedule +DEPENDS:=$(foreach p,$(MY_DEPENDS),+$(p)) +TITLE:=OpenMPTCProuter schedule scripts +endef + +define Package/$(PKG_NAME)/description +OpenMPTCProuter schedule scripts +endef + +define Package/$(PKG_NAME)/conffiles +/etc/contabs/root +endef + +define Build/Compile +endef + +define Package/$(PKG_NAME)/install + $(CP) ./files/* $(1)/ +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/omr-schedule/files/bin/omr-schedule b/omr-schedule/files/bin/omr-schedule new file mode 100755 index 000000000..5d319b6f7 --- /dev/null +++ b/omr-schedule/files/bin/omr-schedule @@ -0,0 +1,10 @@ +#!/bin/sh + +for schedule_bin in /usr/share/omr/schedule.d/*; do + [ -x "$schedule_bin" ] && ( + _log() { + logger -t "omr-schedule-${schedule_bin##*/}" "$*" + } + . "$schedule_bin" 2>&1 + ) +done diff --git a/omr-schedule/files/etc/uci-defaults/3000-omr-schedule b/omr-schedule/files/etc/uci-defaults/3000-omr-schedule new file mode 100755 index 000000000..bb5556c7a --- /dev/null +++ b/omr-schedule/files/etc/uci-defaults/3000-omr-schedule @@ -0,0 +1,4 @@ +#!/bin/sh +if [ ! -f /etc/crontabs/root ] || [ "$(cat /etc/crontabs/root | grep omr-schedule)" = "" ]; then + echo "*/5 * * * * /bin/omr-schedule" >> /etc/crontabs/root +fi diff --git a/mptcp/files/usr/share/omr/post-tracking.d/010-services b/omr-schedule/files/usr/share/omr/schedule.d/010-services similarity index 87% rename from mptcp/files/usr/share/omr/post-tracking.d/010-services rename to omr-schedule/files/usr/share/omr/schedule.d/010-services index 050ad3bc4..49282f329 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/010-services +++ b/omr-schedule/files/usr/share/omr/schedule.d/010-services @@ -33,15 +33,15 @@ if [ "$(pgrep -f dnsmasq)" = "" ] && [ -f /etc/init.d/dnsmasq ]; then /etc/init.d/dnsmasq restart 2>&1 >/dev/null sleep 5 fi -if [ -f /etc/init.d/unbound ] && [ "$(uci -q get unbound.@unbound[0].enabled)" = "1" ] && [ "$OMR_TRACKER_STATUS" != "ERROR" ]; then +if [ -f /etc/init.d/unbound ] && [ "$(uci -q get unbound.@unbound[0].enabled)" = "1" ]; then if [ "$(pgrep -f unbound)" = "" ]; then _log "Can't find unbound, restart it..." /etc/init.d/unbound restart 2>&1 >/dev/null sleep 5 - elif [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get unbound.ub_main.listen_port)" = "5353" ] && [ -n "$(dig +timeout=4 +tries=1 openmptcprouter.com -p 5353 | grep 'ANSWER: 0')" ]; then - _log "Can't resolve via unbound, restart it..." - /etc/init.d/unbound restart 2>&1 >/dev/null - sleep 20 +# elif [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get unbound.ub_main.listen_port)" = "5353" ] && [ -n "$(dig +timeout=4 +tries=1 openmptcprouter.com -p 5353 | grep 'ANSWER: 0')" ]; then +# _log "Can't resolve via unbound, restart it..." +# /etc/init.d/unbound restart 2>&1 >/dev/null +# sleep 5 fi fi @@ -101,10 +101,10 @@ if [ -z "$(pgrep ModemManager)" ] && [ -f /etc/init.d/modemmanager ] && [ -n "$( _log "Can't find ModemManager, restart it..." /etc/init.d/modemmanager restart 2>&1 >/dev/null sleep 5 -#elif [ -n "$(pgrep ModemManager)" ] && [ -f /etc/init.d/modemmanager ] && [ -z "$(uci -q show network | grep modemmanager)" ]; then -# _log "ModemManager not used, stop it..." -# /etc/init.d/modemmanager stop 2>&1 >/dev/null -# sleep 5 +elif [ -n "$(pgrep ModemManager)" ] && [ -f /etc/init.d/modemmanager ] && [ -z "$(uci -q show network | grep modemmanager)" ]; then + _log "ModemManager not used, stop it..." + /etc/init.d/modemmanager stop 2>&1 >/dev/null + sleep 5 fi if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ] && [ "$(pgrep -f '/etc/init.d/omr-tracker')" = "" ]; then @@ -137,24 +137,8 @@ restart_omrtracker() { sleep 10 } -set_lan_ips() { - config_get ip4table "$1" ip4table - config_get device "$1" device - config_get proto "$1" proto - if [ "$ip4table" = "lan" ] && [ -n "$device" ] && ([ "$proto" = "dhcp" ] || [ "$proto" = "static" ]); then - [ -z "$(uci -q get shadowsocks-libev.ss_rules.ifnames | grep $device)" ] && { - uci -q add_list shadowsocks-libev.ss_rules.ifnames="$device" - uci -q add_list shadowsocks-rust.ss_rules.ifnames="$device" - } - elif [ -n "$device" ] && [ -n "$(uci -q get shadowsocks-libev.ss_rules.ifnames | grep $device)" ]; then - uci -q del_list shadowsocks-libev.ss_rules.ifnames="$device" - uci -q del_list shadowsocks-rust.ss_rules.ifnames="$device" - fi -} - config_load network config_foreach restart_omrtracker interface -#config_foreach set_lan_ips interface mutlipath_fix() { config_get multipath "$1" multipath @@ -201,7 +185,7 @@ if [ -n "$(logread | tail -n 2 | grep 'Ring expansion failed')" ]; then echo 1 > /sys/bus/pci/rescan fi -if [ -f /etc/init.d/omr-bypass ] && [ "$(iptables-save 2>/dev/null | grep omr-bypass)" = "" ] && [ "$(pgrep -f omr-bypass)" = "" ]; then +if [ -f /etc/init.d/omr-bypass ] && (([ -e /usr/sbin/iptables-nft-save ] && [ "$(iptables-nft-save 2>/dev/null | grep omr-bypass)" = "" ]) || [ "$(iptables-save 2>/dev/null | grep omr-bypass)" = "" ]) && [ "$(pgrep -f omr-bypass)" = "" ]; then _log "Can't find omr-bypass rules, restart omr-bypass..." /etc/init.d/omr-bypass 2>&1 >/dev/null sleep 5 @@ -231,7 +215,7 @@ if [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get sqm.${OMR_TRACKER_INTERFAC fi fi -#if [ "$(uci -q show openmptcprouter | grep server)" != "" ] && [ "$(uci -q show openmptcprouter | grep password)" != "" ] && [ "$(pgrep -f openmptcprouter-vps)" = "" ] && [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" = "" ] && ([ "$(uci -q show openmptcprouter | grep set_firewall=\'1\')" != "" ] || [ -z "$(iptables-save 2>/dev/null | grep omr_dst_bypass_${OMR_TRACKER_DEVICE})" ]); then +#if [ "$(uci -q show openmptcprouter | grep server)" != "" ] && [ "$(uci -q show openmptcprouter | grep password)" != "" ] && [ "$(pgrep -f openmptcprouter-vps)" = "" ] && [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" = "" ] && ([ "$(uci -q show openmptcprouter | grep set_firewall=\'1\')" != "" ] || (([ -e /usr/sbin/iptables-nft-save ] && [ -z "$(iptables-save 2>/dev/null | grep omr_dst_bypass_${OMR_TRACKER_DEVICE})" ]) || [ -z "$(iptables-save 2>/dev/null | grep omr_dst_bypass_${OMR_TRACKER_DEVICE})" ])); then if [ "$(pgrep -f set_vps_firewall)" = "" ] && [ "$(uci -q show openmptcprouter | grep server)" != "" ] && [ "$(uci -q show openmptcprouter | grep password)" != "" ] && [ "$(pgrep -f openmptcprouter-vps)" = "" ] && [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" = "" ] && [ "$(uci -q show openmptcprouter | grep set_firewall=\'1\')" != "" ]; then check_server_fw() { [ "$(uci -q get openmptcprouter.$1.set_firewall)" = "1" ] && { diff --git a/omr-schedule/files/usr/share/omr/schedule.d/030-bypass b/omr-schedule/files/usr/share/omr/schedule.d/030-bypass new file mode 100755 index 000000000..19ff52437 --- /dev/null +++ b/omr-schedule/files/usr/share/omr/schedule.d/030-bypass @@ -0,0 +1,19 @@ +#!/bin/sh + +bypassipvs4s=$(ipset -o save list omr_dst_bypass_srv_vpn1_4) +[ -z "$bypassipvs4s" ] && bypassipv4s=$(nft -j list set inet fw4 "omr_dst_bypass_srv_vpn1_4" | jsonfilter -e @.nftables[1].set.elem[*].prefix | awk '{gsub(/"/,"",$3);gsub(/,/,"/",$3); print $3 $5}') +bypassipvs6s=$(ipset -o save list omr_dst_bypass_srv_vpn1_6) +[ -z "$bypassipvs6s" ] && bypassipv6s=$(nft -j list set inet fw4 "omr_dst_bypass_srv_vpn1_6" | jsonfilter -e @.nftables[1].set.elem[*].prefix | awk '{gsub(/"/,"",$3);gsub(/,/,"/",$3); print $3 $5}') +#" +vpnipv4md5=$(echo "${bypassipv4s}" | md5sum | awk '{print $1}' | tr -d "\n") +vpnipv6md5=$(echo "${bypassipv6s}" | md5sum | awk '{print $1}' | tr -d "\n") +if [ "$vpnipv4md5" != "$(uci -q get omr-bypass.global.vpn_ipv4_md5)" ] || [ "$vpnipv6md5" != "$(uci -q get omr-bypass.global.vpn_ipv6_md5)" ]; then + _log "Set bypass ip on servers" + /etc/init.d/openmptcprouter-vps set_bypass_ips + uci -q batch <<-EOF >/dev/null + set omr-bypass.global=global + set omr-bypass.global.vpn_ipv4_md5=${vpnipv4md5} + set omr-bypass.global.vpn_ipv6_md5=${vpnipv6md5} + commit omr-bypass + EOF +fi diff --git a/mptcp/files/usr/share/omr/post-tracking.d/050-rutx b/omr-schedule/files/usr/share/omr/schedule.d/050-rutx similarity index 100% rename from mptcp/files/usr/share/omr/post-tracking.d/050-rutx rename to omr-schedule/files/usr/share/omr/schedule.d/050-rutx