158 lines
7.9 KiB
Bash
Executable File
158 lines
7.9 KiB
Bash
Executable File
#!/bin/bash
|
|
################################################################################
|
|
# Author: Fred (support@qo-op.com)
|
|
# Version: 0.1
|
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
|
################################################################################
|
|
MY_PATH="`dirname \"$0\"`" # relative
|
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|
|
|
ME="${0##*/}"
|
|
echo "EXECUTE $ME ($1=phone, $2=uid)"
|
|
phone="$1"
|
|
groupe="$2"
|
|
|
|
avis="$(cat /tmp/${phone}_message)"
|
|
|
|
########################################################################
|
|
echo "## GET STATION G1PUB"
|
|
########################################################################
|
|
YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) || er+=" ipfs daemon not running"
|
|
[[ ! -f /home/${YOU}/.zen/secret.dunikey ]] && echo "Crypto is missing... please provide /home/${YOU}/.zen/secret.dunikey by installing 'astrXbian' TestNet" && exit 1
|
|
G1PUB=$(cat /home/${YOU}/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
|
|
|
## LOG
|
|
echo "${phone};${groupe};${avis}" >> /home/${YOU}/.zen/SMS/received.log
|
|
|
|
########################################################################
|
|
echo "## sha256sum($phone)"
|
|
########################################################################
|
|
phonehash=$(echo $phone | sha256sum | cut -d ' ' -f1)
|
|
########################################################################
|
|
echo "=> ${phonehash}"
|
|
########################################################################
|
|
|
|
htest=$(ls /home/${YOU}/.zen/SMS/PHONE/${phonehash} 2>dev/null)
|
|
if [[ $htest ]]; then
|
|
xzuid=$(cat "/home/${YOU}/.zen/SMS/PHONE/${phonehash}/xzuid")
|
|
echo "$phone already registered it is $xzuid"
|
|
fi
|
|
|
|
mkdir -p /home/${YOU}/.zen/SMS/PHONE/${phonehash}/
|
|
|
|
if [[ ! $xzuid ]]; then
|
|
########################################################################
|
|
echo "## GESTION IDENTITES: G1 + NEXTCLOUD + QRCODE"
|
|
########################################################################
|
|
|
|
## MAKE UNIQ xzuid
|
|
xzuid=$($MY_PATH/diceware.sh 1 | xargs)${RANDOM:0:5}
|
|
while [[ "$(cat /home/${YOU}/.zen/SMS/PHONE/*/xzuid)" == "${xzuid}" ]]
|
|
do
|
|
xzuid=$($MY_PATH/diceware.sh 1 | xargs)${RANDOM:0:5}
|
|
done
|
|
echo "$xzuid" > /home/${YOU}/.zen/SMS/PHONE/${phonehash}/xzuid
|
|
echo "=> $xzuid + NOUVEAU +"
|
|
|
|
########################################################################
|
|
echo "## $xzuid / $phone => NEW DUNIKEY & QRCODE"
|
|
########################################################################
|
|
|
|
########################################################################
|
|
echo "## MAKE /tmp/secret.dunikey"
|
|
########################################################################
|
|
$MY_PATH/key_create_dunikey.py "$xzuid" "$phone"
|
|
[[ ! $? == 0 ]] && echo "FAILED" && exit 1
|
|
g1pub=$(cat /tmp/secret.dunikey | grep "pub" | cut -d ' ' -f 2)
|
|
g1sec=$(cat /tmp/secret.dunikey | grep "sec" | cut -d ' ' -f 2)
|
|
|
|
########################################################################
|
|
echo "## SAVING /home/${YOU}/.zen/SMS/PHONE/${phonehash}/secret.dunikey.encrypt"
|
|
########################################################################
|
|
$MY_PATH/natools.py encrypt -p $G1PUB -i /tmp/secret.dunikey -o /home/${YOU}/.zen/SMS/PHONE/${phonehash}/secret.dunikey.encrypt
|
|
[[ ! $? == 0 ]] && echo "FAILED" && exit 1
|
|
|
|
########################################################################
|
|
echo "GETTING AVATAR"
|
|
########################################################################
|
|
$MY_PATH/timeout.sh -t 10 curl -s https://thispersondoesnotexist.com/image -o /home/${YOU}/.zen/SMS/PHONE/${phonehash}/avatar.jpg
|
|
|
|
if [[ -f /home/${YOU}/.zen/SMS/PHONE/${phonehash}/avatar.jpg ]]; then
|
|
########################################################################
|
|
echo "CREATING GCHANGE+ PROFILE"
|
|
########################################################################
|
|
$MY_PATH/timeout.sh -t 10 $MY_PATH/jaklis/jaklis.py -k /tmp/secret.dunikey -n "https://data.gchange.fr" set --name "${xzuid}" --avatar "/home/${YOU}/.zen/SMS/PHONE/${phonehash}/avatar.jpg" #GCHANGE+
|
|
|
|
########################################################################
|
|
echo "CREATING CESIUM+ PROFILE"
|
|
########################################################################
|
|
$MY_PATH/timeout.sh -t 10 $MY_PATH/jaklis/jaklis.py -k /tmp/secret.dunikey -n "https://g1.data.e-is.pro" set --name "${xzuid}" --avatar "/home/${YOU}/.zen/SMS/PHONE/${phonehash}/avatar.jpg" #CESIUM+
|
|
fi
|
|
|
|
if [[ -f /var/www/nextcloud/occ ]]; then
|
|
########################################################################
|
|
echo "## REGISTER Nextcloud : ${xzuid} / ${phone} "
|
|
########################################################################
|
|
sudo su -s /bin/sh www-data -c "export OC_PASS=\"${phone}\" && php /var/www/nextcloud/occ user:add --password-from-env --group=\"${groupe}\" --display-name=\"${xzuid}\" ${xzuid}"
|
|
fi
|
|
|
|
########################################################################
|
|
echo "## MAKING QRCODE"
|
|
########################################################################
|
|
qrencode -s 6 -o "/home/${YOU}/.zen/SMS/PHONE/${phonehash}/qrcode.png" "$g1pub"
|
|
|
|
########################################################################
|
|
echo "## Encrypt ${phone} into /home/${YOU}/.zen/SMS/PHONE/${phonehash}/passwd.encrypt"
|
|
########################################################################
|
|
echo ${phone} > /tmp/${phone}_phone
|
|
$MY_PATH/natools.py encrypt -p $G1PUB -i /tmp/${phone}_phone -o /home/${YOU}/.zen/SMS/PHONE/${phonehash}/passwd.encrypt
|
|
[[ ! $? == 0 ]] && echo "FAILED" && exit 1
|
|
|
|
else
|
|
|
|
echo "=> $xzuid OK"
|
|
|
|
fi
|
|
|
|
########################################################################
|
|
echo "## GESTION MESSAGE PHONE VERS GUILDE : ${groupe}"
|
|
########################################################################
|
|
mkdir -p /home/${YOU}/.zen/SMS/GUILDES/${groupe}/INPUT/
|
|
|
|
## Ajout à la liste "avis" de PHONE à la GUILDE
|
|
echo "${avis}" >> /home/${YOU}/.zen/SMS/GUILDES/${groupe}/INPUT/${phone}
|
|
## Ajout à la liste "guildes" de PHONE
|
|
echo "${groupe}" >> /home/${YOU}/.zen/SMS/PHONE/${phonehash}/guildes
|
|
|
|
########################################################################
|
|
## BUG: gammu-smsd HACK (must be stop to send response sms)
|
|
## Création de script d'envoi de SMS après gammu-smsd stop
|
|
########################################################################
|
|
ts=$(date -u +%s%N | cut -b1-13)
|
|
echo "#!/bin/bash
|
|
sudo gammu sendsms TEXT \"$phone\" -text \"Message pour ${groupe} bien reçu.\"" > /home/${YOU}/.zen/SMS/PHONE/${phonehash}/${ts}.tosend.sh
|
|
chmod 775 /home/${YOU}/.zen/SMS/PHONE/${phonehash}/${ts}.tosend.sh
|
|
|
|
########################################################################
|
|
## PRINT ID + MESSAGE
|
|
# Disable power off = https://github.com/pklaus/brother_ql/issues/50
|
|
# echo -n -e '\x1b\x69\x55\x41\x00\x00' | brother_ql -m QL-700 -p /dev/usb/lp0 send -
|
|
## IMAGE MAGICK https://legacy.imagemagick.org/Usage/layers/#append
|
|
########################################################################
|
|
if [[ -e /dev/usb/lp0 ]]; then
|
|
convert -background White label:"$xzuid ${phone}" -append /tmp/${ts}_message.png
|
|
brother_ql_create --model QL-700 /tmp/${ts}_message.png --label-size 62 > /tmp/${ts}_message.bin
|
|
brother_ql_print /tmp/${ts}_qrcode.bin /dev/usb/lp0
|
|
|
|
brother_ql_create --model QL-700 /home/${YOU}/.zen/SMS/PHONE/${phonehash}/qrcode.png --label-size 62 > /tmp/${ts}_qrcode.bin
|
|
brother_ql_print /tmp/${ts}_qrcode.bin /dev/usb/lp0
|
|
|
|
## TODO RESIZE IMAGE
|
|
sms=$(echo "${groupe} ${avis}" | cut -b160- | fold -w 40 )
|
|
convert -background White label:"$sms" -append /tmp/${ts}_message.png
|
|
brother_ql_create --model QL-700 /tmp/${ts}_message.png --label-size 62 > /tmp/${ts}_message.bin
|
|
brother_ql_print /tmp/${ts}_message.bin /dev/usb/lp0
|
|
fi
|
|
|
|
exit 0
|