From 010eb7ba00fee47a004db579344be2686707944a Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 7 Aug 2019 15:47:12 +0200 Subject: [PATCH] init --- .gitignore | 2 ++ README.md | 18 +++++++++++++++ cache/.gitkeep | 0 extract-contacts | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ send-sms | 56 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 135 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 cache/.gitkeep create mode 100755 extract-contacts create mode 100755 send-sms diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..278f74f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/cache/* +!/cache/.gitkeep diff --git a/README.md b/README.md new file mode 100644 index 0000000..847fd8a --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +SMS-SENDER +========== + +Send SMS using kdeconnect. + +```bash +$ git clone https://gitnet.fr/deblan/sms-sender.git +$ cd sms-sender +$ FILE=/path/to/contacts.vcf DEVICE=XXXXXXXXXXXXXXXX ./send-sms +``` + +Requirements +------------ + +* SH +* whiptail +* kdeconnect +* vim diff --git a/cache/.gitkeep b/cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/extract-contacts b/extract-contacts new file mode 100755 index 0000000..e975301 --- /dev/null +++ b/extract-contacts @@ -0,0 +1,59 @@ +#!/bin/sh + +SCRIPT_NAME="$(realpath "$0")" +SCRIPT_PATH="$(dirname "$SCRIPT_NAME")" + +cd "$SCRIPT_PATH" + +if [ -z "$FILE" ]; then + printf " Usage:\\n" + printf " FILE=/path/to/contacts.vcf %s\\n" "$0" + + exit 0 +fi + +CACHE="cache/$(basename "$FILE").cache" + +if [ -f "$CACHE" ]; then + cat "$CACHE" + + exit +fi + +touch "$CACHE" +chmod 600 "$CACHE" + +cat "$FILE" | while read LINE; do + FLAG="$(echo "$LINE" | cut -d: -f1)" + VALUE="$(echo "$LINE" | cut -d: -f2- | sed "s/\r//g" | sed "s/\n//g")" + + if [ "$FLAG" = "END" ]; then + if [ -n "$FULL_NAME" ] && [ -n "$PHONE" ]; then + printf "%s|%s\\n" "$FULL_NAME" "$PHONE" + fi + + FULL_NAME= + PHONE= + + export FULL_NAME + export PHONE + elif [ "$FLAG" = "FN" ] && [ -n "$VALUE" ]; then + FULL_NAME="$VALUE" + + export FULL_NAME + elif [ "$FLAG" = "FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE" ] && [ -n "$VALUE" ]; then + FULL_NAME="$(printf "$VALUE" | perl -MMIME::QuotedPrint -pe '$_=MIME::QuotedPrint::decode($_);')" + + export FULL_NAME + elif [ "$FLAG" = "TEL;CELL;PREF" ] && [ -n "$VALUE" ]; then + PHONE="$VALUE" + + export PHONE + elif [ "$FLAG" = "TEL;CELL" ] && [ -n "$VALUE" ]; then + PHONE="$VALUE" + + export PHONE + fi +done > "$CACHE" + +cat "$CACHE" diff --git a/send-sms b/send-sms new file mode 100755 index 0000000..dfe55a3 --- /dev/null +++ b/send-sms @@ -0,0 +1,56 @@ +#!/bin/sh + +SCRIPT_NAME="$(realpath "$0")" +SCRIPT_PATH="$(dirname "$SCRIPT_NAME")" + +cd "$SCRIPT_PATH" + +usage() { + printf " Usage:\\n" + printf " FILE=/path/to/contacts.vcf DEVICE=XXXXXXXXXXXXXXXX %s\\n" "$0" +} + +if [ -z "$FILE" ] || [ -z "$DEVICE" ]; then + usage + + exit 0 +fi + +SEARCH="$(whiptail --title "Filtre de contact" --inputbox "" 8 50 3>&1 1>&2 2>&3)" + +COMMAND="whiptail --title \"Contacts\" --menu \"Choose a recipient\" 25 65 16" + +COMMAND="$COMMAND $(FILE="$FILE" ./extract-contacts | sort | while read CONTACT; do + VALUE="$(echo "$CONTACT" | cut -d\| -f2 | sed 's/"//g')" + LABEL="$(echo "$CONTACT" | cut -d\| -f1 | sed 's/"//g')" + + if [ -n "$SEARCH" ]; then + if [ -n "$(echo "$LABEL" | grep -i "$SEARCH")" ]; then + printf " \"%s\" \"%s\"" "$VALUE" "$LABEL" + fi + else + printf " \"%s\" \"%s\"" "$VALUE" "$LABEL" + fi +done)" + +PHONE="$(eval "$COMMAND 3>&1 1>&2 2>&3")" + +if [ -n "$PHONE" ]; then + TMP_FILE="/tmp/send-sms-$(tr -dc "qwertQWERTasdfgASDFGzxcvbZXCVB" < /dev/urandom | head -c 16)" + touch "$TMP_FILE" + chmod 600 "$TMP_FILE" + + vim "$TMP_FILE" + + if [ -n "$(cat "$TMP_FILE")" ]; then + whiptail --textbox "$TMP_FILE" --title "SMS pour $PHONE" 15 70 + + if (whiptail --title "Confirmation" --yesno "Valides-tu l'expédition du SMS ?" 8 50 3>&1 1>&2 2>&3) then + kdeconnect-cli --device "$DEVICE" --send-sms "$(cat "$TMP_FILE")" --destination "$PHONE" + else + printf "Aborded!\\n" + fi + fi + + rm "$TMP_FILE" +fi