mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-26 19:02:51 +08:00
🤞 Sync 2026-04-23 06:19:46
This commit is contained in:
1 parent
e66dab7047
commit
541ca70de3
250 files changed
+41507
-188
No files matched your search
Executable
+41
@@ -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))
|
||||
@@ -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'
|
||||
Executable
+140
@@ -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
|
||||
}
|
||||
Executable
+92
@@ -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
|
||||
Reference in new issue
Block a user