op-packages/smscontrol/files/smscontrol.init
github-actions[bot] b86d032e91 🤞 Sync 2026-04-23 06:19:46
2026-04-23 06:19:46 +08:00

141 lines
3.6 KiB
Bash
Executable File

#!/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
}