🤞 Sync 2026-04-23 06:19:46

This commit is contained in:
github-actions[bot] committed 2026-04-23 06:19:46 +08:00
1 parent e66dab7047
commit 541ca70de3
250 files changed
+41507 -188

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=smscontrol
PKG_VERSION:=1
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/smscontrol
include $(INCLUDE_DIR)/package.mk
define Package/smscontrol
SECTION:=utils
CATEGORY:=Utilities
TITLE:=CLI commands over sms and calls
DEPENDS:=smstools3-fix
PKGARCH:=all
endef
define Package/smscontrol/description
Utility to send CLI commands over sms and calls
endef
define Build/Prepare
endef
define Build/Configure
endef
define Build/Compile
endef
define Package/smscontrol/install
$(INSTALL_DIR) $(1)/etc/smscontrol
$(CP) ./files/smshandler $(1)/etc/smscontrol/smshandler
$(INSTALL_DIR) $(1)/etc/config
$(CP) ./files/smscontrol.config $(1)/etc/config/smscontrol
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/smscontrol.init $(1)/etc/init.d/smscontrol
endef
$(eval $(call BuildPackage,smscontrol))
+26
View File
@@ -0,0 +1,26 @@
config smscontrol 'common'
option enabled '0'
config smscontrol 'send'
option to ''
option msgtxt ''
config call
option enabled '0'
option ack '0'
option command 'reboot'
config remote
option enabled '0'
option received 'reboot'
option command 'reboot'
config remote
option enabled '0'
option received 'factory'
option command 'firstboot -y && reboot'
config cli
option enabled '0'
option received 'CLI$any_cli_command_here'
option command 'any_cli_command_here'
+140
View File
@@ -0,0 +1,140 @@
#!/bin/sh /etc/rc.common
START=90
USE_PROCD=1
DIR="/var/spool/smscontrol"
COMMANDS="/var/spool/smscontrol/commands"
CALLS="/var/spool/smscontrol/calls"
CLI="/var/spool/smscontrol/cli"
OUT_DIR="/var/spool/sms/outgoing"
generate_pass() {
config_get PASS common pass
if [ -z "$PASS" ]; then
. /usr/share/libubox/jshn.sh
json_load "$(ubus call system board)"
json_get_var MODEL model
case "$MODEL" in
"TELEOFIS LT70")
PASS=$(head -c 1000 /dev/urandom | tr -dc '0-9' | cut -c -8)
;;
"TELEOFIS RTUx68" | "TELEOFIS RTUx68 RE-DE")
PASS=$(getserialnum)
;;
esac
uci_set smscontrol common pass "$PASS"
uci_commit smscontrol
fi
}
add_comm() {
config_get enabled "$1" "enabled"
[ "$enabled" = "0" ] && continue
config_get ack "$1" "ack"
config_get received "$1" "received"
config_get command "$1" "command"
echo " \"$received\")" >> "$COMMANDS"
if [ "$ack" = "1" ]; then
echo " REPLY=\$($command)" >> "$COMMANDS"
echo " if [ -n \"\$REPLY\" ]; then" >> "$COMMANDS"
echo " DATE=\$(date +%s)" >> "$COMMANDS"
echo " touch /tmp/sms\$DATE.sms" >> "$COMMANDS"
echo " echo \"To: \$2\" >> /tmp/sms\$DATE.sms" >> "$COMMANDS"
echo " echo \"\" >> /tmp/sms\$DATE.sms" >> "$COMMANDS"
echo " echo \"\$REPLY\" >> /tmp/sms\$DATE.sms" >> "$COMMANDS"
echo " cp /tmp/sms\$DATE.sms $OUT_DIR/sms\$DATE.sms" >> "$COMMANDS"
echo " rm /tmp/sms\$DATE.sms" >> "$COMMANDS"
echo " fi" >> "$COMMANDS"
else
echo " $command" >> "$COMMANDS"
fi
echo " ;;" >> "$COMMANDS"
echo " " >> "$COMMANDS"
}
add_call() {
config_get enabled "$1" "enabled"
[ "$enabled" = "0" ] && continue
config_get ack "$1" "ack"
config_get command "$1" "command"
if [ "$ack" = "1" ]; then
echo " REPLY=\$($command)" >> "$CALLS"
echo " if [ -n \"\$REPLY\" ]; then" >> "$CALLS"
echo " DATE=\$(date +%s)" >> "$CALLS"
echo " touch /tmp/sms\$DATE.sms" >> "$CALLS"
echo " echo \"To: \$1\" >> /tmp/sms\$DATE.sms" >> "$CALLS"
echo " echo \"\" >> /tmp/sms\$DATE.sms" >> "$CALLS"
echo " echo \"\$REPLY\" >> /tmp/sms\$DATE.sms" >> "$CALLS"
echo " cp /tmp/sms\$DATE.sms $OUT_DIR/sms\$DATE.sms" >> "$CALLS"
echo " rm /tmp/sms\$DATE.sms" >> "$CALLS"
echo " fi" >> "$CALLS"
else
echo " $command" >> "$CALLS"
fi
}
add_cli() {
config_get enabled "$1" "enabled"
[ "$enabled" = "0" ] && continue
config_get ack "$1" "ack"
if [ "$ack" = "1" ]; then
echo " REPLY=\$(eval \$1)" >> "$CLI"
echo " if [ -n \"\$REPLY\" ]; then" >> "$CLI"
echo " DATE=\$(date +%s)" >> "$CLI"
echo " touch /tmp/sms\$DATE.sms" >> "$CLI"
echo " echo \"To: \$2\" >> /tmp/sms\$DATE.sms" >> "$CLI"
echo " echo \"\" >> /tmp/sms\$DATE.sms" >> "$CLI"
echo " echo \"\$REPLY\" >> /tmp/sms\$DATE.sms" >> "$CLI"
echo " cp /tmp/sms\$DATE.sms $OUT_DIR/sms\$DATE.sms" >> "$CLI"
echo " rm /tmp/sms\$DATE.sms" >> "$CLI"
echo " fi" >> "$CLI"
else
echo " eval \$1" >> "$CLI"
fi
}
stop_service() {
rm "$COMMANDS" 2>/dev/null
rm "$CALLS" 2>/dev/null
rm "$CLI" 2>/dev/null
/etc/init.d/smstools3 stop
}
start_service() {
config_load smscontrol
generate_pass
enabled=$(uci get smscontrol.common.enabled)
[ -e "/etc/config/smscontrol_log" ] || touch /etc/config/smscontrol_log
if [ "$enabled" -eq "1" ]; then
mkdir -p "$DIR"
touch "$COMMANDS"
chmod +x "$COMMANDS"
touch "$CALLS"
chmod +x "$CALLS"
touch "$CLI"
chmod +x "$CLI"
config_foreach add_call call
config_foreach add_cli cli
echo "case \"\$1\" in" >> "$COMMANDS"
config_foreach add_comm remote
echo "esac" >> "$COMMANDS"
/etc/init.d/smstools3 start
fi
}
service_triggers() {
procd_add_reload_trigger "smscontrol"
}
reload_service() {
stop_service
start_service
}
+92
View File
@@ -0,0 +1,92 @@
#!/bin/ash
DIR="/var/spool/smscontrol"
ENABLED=$(uci get smscontrol.common.enabled)
if [ "$ENABLED" -eq "1" ]; then
case "$1" in
RECEIVED)
PASS=$(uci get smscontrol.common.pass)
[ -z "$PASS" ] && exit
PASSLENGTH=$(echo $PASS | wc -c)
MESSAGE=$(cat "$2")
FROM=$(echo "${MESSAGE}"|grep -e '^From\:'|cut -d' ' -f2)
DATE=$(echo "${MESSAGE}"|grep -e '^Received\:'|cut -d' ' -f2,3)
BODY=$(echo "${MESSAGE}"|sed -e '1,/^$/d')
if [[ "$(uci -q get smscontrol.common.smscontrol_log)" = "1" ]]; then
CFG=$(uci add smscontrol_log event)
uci set smscontrol_log.$CFG.date="${DATE}"
uci set smscontrol_log.$CFG.type=SMS
uci set smscontrol_log.$CFG.from="${FROM}"
uci set smscontrol_log.$CFG.message="${BODY}"
uci commit smscontrol_log
fi
[ "$PASS;" != "${BODY::$PASSLENGTH}" ] && exit
ADMINPHONES=$(uci get smscontrol.common.whitelist)
COUNTPHONES=$(echo $ADMINPHONES | wc -w)
COUNT="0"
while [ "$COUNT" -ne "$COUNTPHONES" ]; do
COUNT=$(($COUNT + 1))
ADMPH=$(echo $ADMINPHONES | awk -v var=$COUNT -F ' ' '{print $var}')
if [ "$ADMPH" -eq "$FROM" ]; then
BODY=${BODY:$PASSLENGTH}
if [ "${BODY::4}" != "CLI\$" ]; then
$DIR/commands "$BODY" "$FROM" &
break
else
BODY=${BODY:4}
$DIR/cli "$BODY" "$FROM" &
break
fi
fi
done
;;
USSD)
;;
CALL)
MESSAGE=$(cat "$2")
FROM=$(echo "${MESSAGE}"|grep -e '^From\:'|cut -d' ' -f2)
if [[ "$(uci -q get smscontrol.common.smscontrol_log)" = "1" ]]; then
CFG=$(uci add smscontrol_log event)
DATE=$(date +"%y-%m-%d %H:%M:%S")
uci set smscontrol_log.$CFG.date="${DATE}"
uci set smscontrol_log.$CFG.type=CALL
uci set smscontrol_log.$CFG.from="${FROM}"
uci commit smscontrol_log
fi
ADMINPHONES=$(uci get smscontrol.common.whitelist)
COUNTPHONES=$(echo $ADMINPHONES | wc -w)
COUNT="0"
while [ "$COUNT" -ne "$COUNTPHONES" ]; do
COUNT=$(($COUNT + 1))
ADMPH=$(echo $ADMINPHONES | awk -v var=$COUNT -F ' ' '{print $var}')
if [ "$ADMPH" -eq "$FROM" ]; then
$DIR/calls "$FROM" &
break
fi
done
;;
SENT)
if [[ "$(uci -q get smscontrol.common.smscontrol_log)" = "1" ]]; then
MESSAGE=$(cat "$2")
TO=$(echo "${MESSAGE}"|grep -e '^To\:'|cut -d' ' -f2)
BODY=$(echo "${MESSAGE}"|sed -e '1,/^$/d')
CFG=$(uci add smscontrol_log event)
DATE=$(date +"%y-%m-%d %H:%M:%S")
uci set smscontrol_log.$CFG.date="${DATE}"
uci set smscontrol_log.$CFG.type=SMS
uci set smscontrol_log.$CFG.to="${TO}"
uci set smscontrol_log.$CFG.message="${BODY}"
uci commit smscontrol_log
fi
;;
*)
;;
esac
fi