From 4aa71d7bc74aec5b8b2e86903a92c5b8e14447d7 Mon Sep 17 00:00:00 2001 From: olli Date: Fri, 30 Jun 2023 12:32:11 +0200 Subject: [PATCH] Update basics.yml --- basics.yml | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/basics.yml b/basics.yml index 79cd086..cddd50e 100644 --- a/basics.yml +++ b/basics.yml @@ -735,6 +735,116 @@ state: absent when: nocontainer.stat.exists == true + - name: /usr/local/bin/notify.sh + blockinfile: + path: /usr/local/bin/notify.sh + mode: "0555" + owner: root + group: root + create: yes + marker: "# {mark} ANSIBLE MANAGED BLOCK" + block: | + if [ -n "$SSH_ORIGINAL_COMMAND" ] + then + opts=$SSH_ORIGINAL_COMMAND + unset SSH_ORIGINAL_COMMAND + echo $opts >/tmp/SSH + notify.sh $opts + exit $? + fi + + . /etc/bash/gaboshlib.include + g_nice + g_lockfile + + [ -f /usr/local/etc/notify.conf ] && . /usr/local/etc/notify.conf + + to="$default_to" + togroup="$default_togroup" + + while getopts s:t:g:h:m: o + do + case $o in + s) subj="$OPTARG";; + t) to="$OPTARG";; + g) togroup="$OPTARG";; + h) tohost="$OPTARG";; + m) tomail="$OPTARG" + esac + done + + # If message should be sent by another host + if [ -n "$tohost" ] + then + if getent passwd signal >/dev/null + then + cat | sudo -u signal ssh -o BatchMode=yes -o StrictHostKeyChecking=accept-new -p33 $tohost " $@" + else + cat | ssh -o BatchMode=yes -o StrictHostKeyChecking=accept-new -p33 $tohost " $@" + fi + exit $? + fi + + message="$(cat)" + + + + [ "$message" = "''" ] && exit 0 + [ -z "$message" ] && exit 0 + + if [ -n "$subj" ] + then + message=$(echo -e "$subj\n$message") + fi + + if [ -n "$SSH_ORIGINAL_COMMAND" ] + then + subj=$(echo "$SSH_ORIGINAL_COMMAND" | sed 's#^/usr/local/bin/notify.sh##; s/^ *//; s/^\"//; s/\"$//') + message=$(echo -e "$subj$message") + fi + + if [ -n "$tomail" ] + then + echo "$message" | mail -s "notify.sh: $subj" $tomail + fi + + account=$(cat /home/signal/.local/share/signal-cli/data/accounts.json | jq -r '.accounts[0].number' | sed 's/+/_/') + if [ -z "$account" ] + then + echo "Didn't get Signal account" + exit 1 + fi + + + if [ -n "$togroup" ] + then + # Send to group via dbus + # Get group ID via dbus according to: https://github.com/AsamK/signal-cli/issues/1046 + groupid=$(dbus-send --system --type=method_call --print-reply --dest='org.asamk.Signal' /org/asamk/Signal/${account} org.asamk.Signal.listGroups | grep "$togroup" -B3 | head -n2 | perl -pe 's/\n/ /g;' | perl -pe 's/ +/ /g; s/ $//; s/ /,0x/g; s/^,//') + if [ -z "$groupid" ] + then + g_echo_error "Group(ID) $togroup not found (id=$groupid). Does Group really exist? -- Groups $(dbus-send --system --type=method_call --print-reply --dest='org.asamk.Signal' /org/asamk/Signal/${account} org.asamk.Signal.listGroups)" + exit 1 + fi + dbus-send --system --type=method_call --print-reply --dest="org.asamk.Signal" /org/asamk/Signal/${account} org.asamk.Signal.sendGroupMessage string:"$message" array:string: array:byte:${groupid} | egrep -v '^method return time=|^ int64 ' + fi + + if [ -n "$to" ] + then + # Sent to a single Number via dbus + dbus-send --system --type=method_call --print-reply --dest="org.asamk.Signal" /org/asamk/Signal/${account} org.asamk.Signal.sendMessage string:"${message}" array:string: string:${to} | egrep -v '^method return time=|^ int64 ' + fi + + backup: yes + validate: /bin/bash -n %s + + - name: /usr/local/bin/notify.sh shebang + lineinfile: + path: /usr/local/bin/notify.sh + insertbefore: BOF + line: "#!/bin/bash" + + handlers: - name: setupcon