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