g1sms ipfs swarm & path adaptation

This commit is contained in:
qo-op 2020-05-03 23:37:47 +02:00
parent 4398f5587a
commit c1fb80f68b
37 changed files with 802 additions and 500 deletions

View File

@ -12,41 +12,28 @@ isARM=$(cat $MY_PATH/.OS | grep YES)
##################################
## INSTALL TOOLS
######## YOUTUBE-DL ##########
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl || err=1
sudo chmod a+rx /usr/local/bin/youtube-dl
if [[ ! $(which youtube-dl) ]]; then
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl || exit 1
sudo chmod a+rx /usr/local/bin/youtube-dl
sudo chown $USER /usr/local/bin/youtube-dl
fi
sudo apt install libid3-tools mpd mpc lame omxplayer -y || err=1
sudo apt-get install lame sox libsox-fmt-mp3 eyed3 python-chardet imagemagick curl -y #libav-tools || err=1
sudo apt-get install ca-certificates git-core binutils rsync alsa-utils bc libid3-tools espeak mpg321 fuse atomicparsley -y || err=1
## CONFIG MPD
sudo cp -f $MY_PATH/mpd.conf /etc/mpd.conf
sudo cp -f $MY_PATH/templates/copylaradio/mpd.conf /etc/mpd.conf
sudo sed -i "s/_USER/$USER/g" /etc/mpd.conf || err=1
sudo chown -R $USER /var/lib/mpd/ /var/run/mpd /run/mpd /var/log/mpd
sudo service mpd restart || err=1
sudo apt-get install nginx php-curl php-sqlite3 php-gd php-json php-xml php-mbstring php-fpm sqlite -y || err=1
sudo apt-get install fail2ban nginx ssl-cert openssl-blacklist php-curl php-sqlite3 php-gd php-json php-xml php-mbstring php-fpm sqlite -y || err=1
wget http://launchpadlibrarian.net/339874908/libav-tools_3.3.4-2_all.deb -O $MY_PATH/libav-tools.deb
wget http://ftp.fr.debian.org/debian/pool/non-free/s/svox/libttspico-data_1.0+git20130326-3_all.deb -O $MY_PATH/libttspico-data.deb
if [[ $isARM ]]; then
wget http://ftp.fr.debian.org/debian/pool/non-free/s/svox/libttspico0_1.0+git20130326-3_armhf.deb -O $MY_PATH/libttspico0.deb
wget http://ftp.fr.debian.org/debian/pool/non-free/s/svox/libttspico-utils_1.0+git20130326-3_armhf.deb -O $MY_PATH/libttspico-utils.deb
else
wget http://ftp.fr.debian.org/debian/pool/non-free/s/svox/libttspico0_1.0+git20130326-5_amd64.deb -O $MY_PATH/libttspico0.deb
wget http://ftp.fr.debian.org/debian/pool/non-free/s/svox/libttspico-utils_1.0+git20130326-9_amd64.deb -O $MY_PATH/libttspico-utils.deb
fi
sudo dpkg -i $MY_PATH/libttspico-data.deb || err=1
sudo dpkg -i $MY_PATH/libttspico0.deb || err=1
sudo dpkg -i $MY_PATH/libttspico-utils.deb || err=1
sudo dpkg -i $MY_PATH/libav-tools.deb || sudo apt --fix-broken install -y || err=1
rm $MY_PATH/libttspico-data.deb $MY_PATH/libttspico0.deb $MY_PATH/libttspico-utils.deb $MY_PATH/libav-tools.deb
# CONFIG NGINX
sudo cp -f $MY_PATH/default /etc/nginx/sites-available/
# CONFIG NGINX TODO: NEED FIXING !!!
sudo cp -f $MY_PATH/../www/rompr.conf /etc/nginx/sites-available/
sudo sed -i "s/_USER/$USER/g" /etc/nginx/sites-available/default
sudo systemctl restart nginx || err=1

View File

@ -64,28 +64,28 @@ if [[ "$BAN" == "BAN" ]]; then
# Get actual Duniter node used by silkaj
SERVER=$(cat ./silkaj/src/constants.py | grep G1_DEFAULT_ENDPOINT | awk '{print $3}' | sed s/\"\,//g | sed s/\"//g)
[[ ! $(grep $SERVER:443 shell/bad.nodes.txt) ]] && echo $SERVER:443 >> shell/bad.nodes.txt
sed -i "/$SERVER:443/d" ./shell/good.nodes.txt
echo "$SERVER:443 IS NOW in ./shell/bad.nodes.txt"
sed -i "/$SERVER:443/d" ./good.nodes.txt
echo "$SERVER:443 IS NOW in ./bad.nodes.txt"
fi
### nodes.txt EMPTYNESS CARE
NBgood=$(cat ./shell/good.nodes.txt | wc -l)
NBbad=$(cat ./shell/bad.nodes.txt | wc -l)
NBgood=$(cat ./good.nodes.txt | wc -l)
NBbad=$(cat ./bad.nodes.txt | wc -l)
if [[ $NBgood -le $NBbad ]]; then
echo "" > ./shell/good.nodes.txt
echo "" > ./shell/bad.nodes.txt
echo "" > ./good.nodes.txt
echo "" > ./bad.nodes.txt
# TODO: Each decentralized App must have a source for its confidence to be UP and running and publishing latest code for our concensus behaviour!
echo "___ REFRESH ./shell/nodes.txt from g1.duniter.org:443 ___"
curl -s https://g1.duniter.org/network/peers | jq '.peers[] | .endpoints' | grep BMAS | awk '{print $2,$3}' | sed s/\"//g | sed s/\,//g | sed s/\ /:/g > "./shell/nodes.txt"
echo $(cat "./shell/nodes.txt")
echo "___ REFRESH ./nodes.txt from g1.duniter.org:443 ___"
curl -s https://g1.duniter.org/network/peers | jq '.peers[] | .endpoints' | grep BMAS | awk '{print $2,$3}' | sed s/\"//g | sed s/\,//g | sed s/\ /:/g > "./nodes.txt"
echo $(cat "./nodes.txt")
fi
###########
# CONTINUE
# Grab the nodes we are actively watching - they will be in bold in the final output
watched=`grep -v "#" ./shell/nodes.txt|egrep "\!$"|awk '{print "#" $1 "#"}'`
watched=`grep -v "#" ./nodes.txt|egrep "\!$"|awk '{print "#" $1 "#"}'`
# All nodes we are watching
nodes=`grep -v "#" ./shell/nodes.txt|awk '{print $1}'`
nodes=`grep -v "#" ./nodes.txt|awk '{print $1}'`
# The index to generate separate file names
index=0
# Wipe out the output directory
@ -120,25 +120,25 @@ do
done
longchain=$(ls -S /tmp/gnodewatch/chains/ | head -n 1)
cp /tmp/gnodewatch/chains/$longchain "./shell/good.nodes.txt"
cp /tmp/gnodewatch/chains/$longchain "./good.nodes.txt"
#####################################################################################
# ASK peers to all good.nodes.txt
#for node in $(cat ./shell/good.nodes.txt); do
#for node in $(cat ./good.nodes.txt); do
# NANODATE=$(date +%s%N);
# DUN="https://$(echo $node| cut -d ":" -f 1)";
# curl -s -o $DIR/NODE.$NANODATE.$node ${DUN}/network/peers;
#done
# REFRESH from all known peers NEW nodes.txt
#cat /tmp/gnodewatch/NODE.* | jq '.peers[] | .endpoints' | grep BMAS | awk '{print $2,$3}' | sed s/\"//g | sed s/\,//g | sed s/\ /:/g | sort | uniq > "./shell/nodes.txt"
#cat /tmp/gnodewatch/NODE.* | jq '.peers[] | .endpoints' | grep BMAS | awk '{print $2,$3}' | sed s/\"//g | sed s/\,//g | sed s/\ /:/g | sort | uniq > "./nodes.txt"
#####################################################################################
# Output Random actual best node
# Compare with ./shell/bad.nodes.txt
# Compare with ./bad.nodes.txt
while [[ "$BAD" == "$DUNITER" ]]; do
DUNITER=$(shuf "./shell/good.nodes.txt" | head -n 1)
BAD=$(grep -Rw "$DUNITER" ./shell/bad.nodes.txt)
DUNITER=$(shuf "./good.nodes.txt" | head -n 1)
BAD=$(grep -Rw "$DUNITER" ./bad.nodes.txt)
done
################# MODIFY silkaj constants.py
silkaj=$(echo $DUNITER | cut -d ":" -f 1)

View File

@ -5,8 +5,8 @@
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
# BACKUP G1sms+ current Devlt code and push it with SWARM_CODE_MASTER to IPFS
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
now=$(date +%Y-%m-%d)
MY_PATH="`dirname \"$0\"`" # relative

View File

@ -6,8 +6,8 @@
# BACKUP G1sms+ current Devlt code and push it with NODE_G1AUTHFILE encryption to IPFS
################################################################################
## GET LATEST DEV $ROOT
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
now=$(date +%Y-%m-%d)
dir=$(pwd | awk 'BEGIN { FS = "/" } ; {print $4}')
cd ..

View File

@ -14,12 +14,12 @@ IPFSNODEID=$(su $YOU -c "ipfs id -f='<id>\n'")
NANODATE=$(date -u +%s%N) #1569692075385428020
# PROTECT from null HASH
for tag in ./wallets/.$IPFSNODEID/TAG/*; do
for tag in ~/.zen/ipfs/.$IPFSNODEID/TAG/*; do
function rmtag () {
echo "__SUB:cron_G1TAG_REFRESH.sh: rm -Rf ./wallets/.$IPFSNODEID/TAG/${tagj}"
echo "__SUB:cron_G1TAG_REFRESH.sh: rm -Rf ~/.zen/ipfs/.$IPFSNODEID/TAG/${tagj}"
rm -Rf ./TAG/${tagj}
rm -f ./wallets/.$IPFSNODEID/TAG/${tagj}
rm -f ./wallets_swarm/.$IPFSNODEID/TAG/${tagj}
rm -f ~/.zen/ipfs/.$IPFSNODEID/TAG/${tagj}
rm -f ~/.zen/ipfs_swarm/.$IPFSNODEID/TAG/${tagj}
rm -f /home/$YOU/.ipfs/keystore/${tagj}
}
@ -63,7 +63,7 @@ for tag in ./wallets/.$IPFSNODEID/TAG/*; do
echo "__SUB:cron_G1TAG_REFRESH.sh: GET PUBLISHKEY for that G1TAG";
su $YOU -c "ipfs get -o /home/$YOU/.ipfs/keystore/${RR}.crypt /ipns/$tagj/TAG_publishkey.MASTER.crypt"
if [[ ! -f /home/$YOU/.ipfs/keystore/${RR}.crypt ]]; then log "__SUB:cron_MINUTE.sh: error getting publishkey"; continue; fi
./shell/natools.py decrypt -k "$NODE_G1AUTHFILE" -i /home/$YOU/.ipfs/keystore/${RR}.crypt -o /home/$YOU/.ipfs/keystore/$RR
./natools.py decrypt -k "$NODE_G1AUTHFILE" -i /home/$YOU/.ipfs/keystore/${RR}.crypt -o /home/$YOU/.ipfs/keystore/$RR
rm /home/$YOU/.ipfs/keystore/${RR}.crypt
fi
echo "__SUB:cron_G1TAG_REFRESH.sh: G1Tag PUBLISHKEY OK : /home/$YOU/.ipfs/keystore/${RR}"

View File

@ -18,8 +18,8 @@ if [[ "$USER" != "root" ]]; then echo "Hey, $USER you must at least be admin of
if [[ "$YOU" == "" || "$YOU" == "root" ]]; then echo "BAD IPFS. Aucune installation IPFS satisfaisante ici... Ciao $YOU !"; exit; fi
IPFSNODEID=$(su $YOU -c "ipfs id -f='<id>\n'")
cd $GPATH
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
timebar=$(date +%H:%M)
@ -42,39 +42,39 @@ if [[ "$1" == "PRINT" ]]; then
################################################################################
# PRINT G1Tag PRINTED FROM ANOTHER NODE (TODO: Correct BAD Cypher KEY + BUG why last image png layers are not printed???)
# CREATE and REMOVE rr.bin -> done.rr
if [[ -d "./wallets_swarm/.$IPFSNODEID/PRINT/" ]]; then
if [[ -d "~/.zen/ipfs_swarm/.$IPFSNODEID/PRINT/" ]]; then
log "__SUB:cron_MINUTE.sh: SEARCH NEW PRINT FOR ME .$IPFSNODEID"
mkdir -p ./wallets/.$IPFSNODEID/PRINT/
mkdir -p ~/.zen/ipfs/.$IPFSNODEID/PRINT/
for qrrtag in ./wallets_swarm/.$IPFSNODEID/PRINT/*.bin; do
for qrrtag in ~/.zen/ipfs_swarm/.$IPFSNODEID/PRINT/*.bin; do
rr=$(echo $qrrtag | cut -d '/' -f 5 | cut -d '.' -f 1)
if [[ ! -f "./wallets/.$IPFSNODEID/PRINT/done.$rr" ]]; then
if [[ ! -f "~/.zen/ipfs/.$IPFSNODEID/PRINT/done.$rr" ]]; then
log "__SUB:cron_MINUTE.sh: PRINT G1Tag $rr - START: $(date)"
./shell/natools.py decrypt -k "$NODE_G1AUTHFILE" -i "${qrrtag}" -o "/tmp/G1Tag.png"
./natools.py decrypt -k "$NODE_G1AUTHFILE" -i "${qrrtag}" -o "/tmp/G1Tag.png"
log "__SUB:cron_MINUTE.sh: natools.py decrypt - $(date)"
brother_ql_create --model QL-700 "/tmp/G1Tag.png" --label-size 62 > "/tmp/G1Tag.bin"
log "__SUB:cron_MINUTE.sh: brother_ql_create - $(date)"
brother_ql_print "/tmp/G1Tag.bin" /dev/usb/lp0
log "__SUB:cron_MINUTE.sh: brother_ql_print - $(date)"
# INFORM PRINT DONE
echo "OK" > ./wallets/.$IPFSNODEID/PRINT/done.$rr
echo "OK" > ~/.zen/ipfs/.$IPFSNODEID/PRINT/done.$rr
I=$(ipfs_node_wallets_add)
else
lqrrtag=$(echo "${qrrtag}" | sed s/_swarm//g )
log "__SUB:cron_MINUTE.sh: REMOVE OLD DONE PRINT ${lqrrtag} + ./wallets/.$IPFSNODEID/PRINT/done.$rr"
rm -f "./wallets/.$IPFSNODEID/PRINT/done.$rr"
log "__SUB:cron_MINUTE.sh: REMOVE OLD DONE PRINT ${lqrrtag} + ~/.zen/ipfs/.$IPFSNODEID/PRINT/done.$rr"
rm -f "~/.zen/ipfs/.$IPFSNODEID/PRINT/done.$rr"
rm -f "${lqrrtag}"
I=$(ipfs_node_wallets_add)
fi
done
log "__SUB:cron_MINUTE.sh: REMOVE OLD PRINT MARKED AS DONE"
for scan in ./wallets_swarm/.Qm*/PRINT/done.*; do
for scan in ~/.zen/g1sms_wallets_swarm/.Qm*/PRINT/done.*; do
lscan=$(echo $scan | sed s/_swarm//g )
lid=$(echo $scan | cut -d '/' -f 3 | cut -d '.' -f 2 )
lrr=$(echo $scan | cut -d '/' -f 5 | cut -d '.' -f 2 )
log "__SUB:cron_MINUTE.sh: REMOVE ./wallets/.$lid/PRINT/$lrr.bin OLD PRINT ${lscan} SENT to $lid ($lrr.bin)"
rm -f ./wallets/.$lid/PRINT/$lrr.bin
log "__SUB:cron_MINUTE.sh: REMOVE ~/.zen/g1sms_wallets/.$lid/PRINT/$lrr.bin OLD PRINT ${lscan} SENT to $lid ($lrr.bin)"
rm -f ~/.zen/g1sms_wallets/.$lid/PRINT/$lrr.bin
rm -f "${lscan}"
I=$(ipfs_node_wallets_add)
done
@ -88,7 +88,7 @@ fi
##################################################################
if [[ "$1" == "KALKUN" ]]; then
##################################################################
for number in ./wallets/*; do
for number in ~/.zen/g1sms_wallets/*; do
member=""
phone=$(echo $number | cut -d '/' -f 3);
if [[ -f $number/$phone.uidname ]]; then member=$(cat $number/$phone.uidname); fi

View File

@ -7,8 +7,8 @@
# Effectue les payements récurrents et enlève le vérrou (DESTROY)
# TAKES CARE OF DOING RECURRENT PAYEMENTS EVERY DAY FOR ITS $PHONE G1Wallets
# TODO: Add SMS Alert if G1sms Wallet is low...
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "__SUB:cron_VIR.reccurent.sh: START"
rm -f /tmp/VIR*
@ -16,7 +16,7 @@ echo "" > /tmp/VIR
TODAY=$(date '+%Y%m%d')
log "__SUB:cron_VIR.reccurent.sh: Searching payements to do for $TODAY"
for file in ./wallets/*/VIREMENTS.gpg ; do
for file in ~/.zen/g1sms_wallets/*/VIREMENTS.gpg ; do
if [[ -f $file ]]; then
log "__SUB:cron_VIR.reccurent.sh: FOUND $file decrypting with Node key"
echo "${GPGPASS}" | gpg -d -q --output "/tmp/VIREMENTS" --yes --pinentry-mode loopback --passphrase-fd 0 "$file"
@ -44,10 +44,10 @@ while read line
# echo -salt="$PHONE" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] VIR $REF / $NB"
PAY=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] VIR $REF / $NB" -y)
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" ]]; then
new=$(./shell/checknodes.sh "BAN")
new=$(./checknodes.sh "BAN")
sms_ERROR "$PHONE" "Il est survenu un problème avec votre virement. Retour silkaj: $PAY ... $new";
else
new=$(./shell/checknodes.sh)
new=$(./checknodes.sh)
sms_SEND "$PHONE" "$TODAY Virement automatique $REF vers $DESTUID : $PAY (Reste $NB)"
cents=$(echo $(bc -l <<< "scale=0; $VIR * 100") | cut -d '.' -f 1)
move_g1cents "$PHONE" "$DESTRIB" "$cents"
@ -60,10 +60,10 @@ while read line
done < /tmp/VIR$TODAY
# CHECK FOR LAST VIREMENTS AND CLEAN IT?
for virfile in "./wallets/*/VIREMENTS.gpg"; do
for virfile in "~/.zen/g1sms_wallets/*/VIREMENTS.gpg"; do
phone=$(echo $virfile | cut -d '/' -f 3)
if [[ "$phone" == "*" ]]; then exit; fi
echo "${GPGPASS}" | gpg -d -q --output "/tmp/$phone.VIREMENTS" --yes --pinentry-mode loopback --passphrase-fd 0 "./wallets/$phone/VIREMENTS.gpg"
echo "${GPGPASS}" | gpg -d -q --output "/tmp/$phone.VIREMENTS" --yes --pinentry-mode loopback --passphrase-fd 0 "~/.zen/g1sms_wallets/$phone/VIREMENTS.gpg"
nv=0; tot=0;
while read ligne
do virs=(${ligne});
@ -78,8 +78,8 @@ for virfile in "./wallets/*/VIREMENTS.gpg"; do
if [[ $nv -eq 0 ]]; then
log "__SUB:cron_VIR.reccurent.sh: Plus AUCUN payement récurrent !!"
sms_SEND "$phone" "Plus AUCUN payement récurrent"
rm -f "./wallets/$phone/VIREMENTS.gpg"
rm -f "./wallets/$phone/VIREMENTS"
rm -f "~/.zen/g1sms_wallets/$phone/VIREMENTS.gpg"
rm -f "~/.zen/g1sms_wallets/$phone/VIREMENTS"
I=$(ipfs_node_wallets_add)
else
log "__SUB:cron_VIR.reccurent.sh: Encore $nv payements récurrents à réaliser pour $tot G1"

View File

@ -6,7 +6,7 @@ WORDCOUNT=${1-$MOTS}
# Download the wordlist
# wget -nc -O ~/.diceware-wordlist http://world.std.com/%7Ereinhold/diceware.wordlist.asc 2> /dev/null
# print a list of the diceware words
cat ./shell/diceware-wordlist.txt |
cat ./diceware-wordlist.txt |
awk '/[1-6][1-6][1-6][1-6][1-6]/{ print $2 }' |
# randomize the list order
shuf --random-source=/dev/urandom |

View File

@ -19,15 +19,15 @@ function sms_SEND () {
local dest="$1"
local mess="$2"
if [[ ${#dest} -eq 10 || ${#dest} -eq 12 ]]; then
if [[ -d ./wallets/$dest ]]; then
if [[ -d ~/.zen/g1sms_wallets/$dest ]]; then
# TEST IF $dest IS ON CURRENT NODE
gammu-smsd-inject TEXT "$dest" -text "$mess" 1>&2
else
# Send SMS through $dest NODE (TODO: send it like PRINT, TASK, ...)
DESTNODEID=$(cat ./wallets_swarm/$dest/MASTERPHONE.ipfsid)
DESTNODEID=$(cat ~/.zen/g1sms_wallets_swarm/$dest/MASTERPHONE.ipfsid)
log "$dest is managed by NODE: $DESTNODEID)"
mkdir "./wallets/.$DESTNODEID/SMS"
echo $mess > "./wallets/.$DESTNODEID/SMS/$dest.sms2send"
mkdir "~/.zen/g1sms_wallets/.$DESTNODEID/SMS"
echo $mess > "~/.zen/g1sms_wallets/.$DESTNODEID/SMS/$dest.sms2send"
I=$(ipfs_node_wallets_add)
fi
else
@ -113,34 +113,34 @@ function ipfs_swarm_wallets_refresh (){
I=$(ipfs_node_wallets_add)
# REFRESH SWARM MEMORY
mkdir -p "./wallets_swarm"
chown -R $YOU "./wallets_swarm"
mkdir -p "~/.zen/g1sms_wallets_swarm"
chown -R $YOU "~/.zen/g1sms_wallets_swarm"
log "__SUB:ipfs_swarm_wallets_refresh: REFRESHING SWARM $PHONE shared memory..."
if [[ $PHONE ]]; then rm -Rf ./wallets_swarm/$PHONE; fi
if [[ $PHONE ]]; then rm -Rf ~/.zen/g1sms_wallets_swarm/$PHONE; fi
# GET IPNS published wallets from ALL SWARM NODES / TODO: IF NODES MISSING, check ./wallets_swarm/.QmNODES...
#log "__SUB:ipfs_swarm_wallets_refresh: IPFS: ipfs get --output=./wallets_swarm/ /ipns/$IPFSNODEID"
su $YOU -c "ipfs get --output=./wallets_swarm/ /ipns/$IPFSNODEID"
# GET IPNS published wallets from ALL SWARM NODES / TODO: IF NODES MISSING, check ~/.zen/g1sms_wallets_swarm/.QmNODES...
#log "__SUB:ipfs_swarm_wallets_refresh: IPFS: ipfs get --output=~/.zen/g1sms_wallets_swarm/ /ipns/$IPFSNODEID"
su $YOU -c "ipfs get --output=~/.zen/g1sms_wallets_swarm/ /ipns/$IPFSNODEID"
count=1
# Search for All peers Nodes. TODO: To be changed when Swarm is too bug or not expendanding
#for id in ./wallets/.Qm*/;
#for id in ~/.zen/g1sms_wallets/.Qm*/;
for id in $(su $YOU -c "ipfs swarm peers" | awk -F '/' '{print $7}');
do
count=$((count+1))
id=$(echo $id | cut -d '.' -f 3 | cut -d '/' -f 1)
log "__SUB:ipfs_swarm_wallets_refresh: IPFS: ipfs get --output=./wallets_swarm/ /ipns/$id"
rm -Rf ./wallets_swarm/.$id
./shell/timeout.sh -t 20 su $YOU -c "ipfs get --output=./wallets_swarm/ /ipns/$id"
log "__SUB:ipfs_swarm_wallets_refresh: IPFS: ipfs get --output=~/.zen/g1sms_wallets_swarm/ /ipns/$id"
rm -Rf ~/.zen/g1sms_wallets_swarm/.$id
./timeout.sh -t 20 su $YOU -c "ipfs get --output=~/.zen/g1sms_wallets_swarm/ /ipns/$id"
done
log "__SUB:ipfs_swarm_wallets_refresh: ./wallets_swarm/ RENEW from $count peers .........OK!!!"
log "__SUB:ipfs_swarm_wallets_refresh: ~/.zen/g1sms_wallets_swarm/ RENEW from $count peers .........OK!!!"
############################################################################"
# TREAT move_g1cents Tasks in ./wallets/.$IPFSNODEID
# IF NODE find in ./wallets_swarm/.$IPFSNODEID/TASK directory && Have it's G1 Wallet already (for natools crypto)
if [[ "$1" != "SIMPLE" && -d ./wallets_swarm/.$IPFSNODEID/TASK && -f "./wallets/.$IPFSNODEID/$IPFSNODEID.authfile.GPGPASS.gpg" ]]; then
# TREAT move_g1cents Tasks in ~/.zen/ipfs/.$IPFSNODEID
# IF NODE find in ~/.zen/ipfs_swarm/.$IPFSNODEID/TASK directory && Have it's G1 Wallet already (for natools crypto)
if [[ "$1" != "SIMPLE" && -d ~/.zen/ipfs_swarm/.$IPFSNODEID/TASK && -f "~/.zen/ipfs/.$IPFSNODEID/$IPFSNODEID.authfile.GPGPASS.gpg" ]]; then
############################################################################"
for task in $(ls ./wallets_swarm/.$IPFSNODEID/TASK/*.move_g1cents.*); # ./wallets/.$IPFSNODEID/TASK/$NANODATE.move_g1cents.$DESTPHONE.NODEPUB.crypt OR "done.$NANODATE" FILES
for task in $(ls ~/.zen/ipfs_swarm/.$IPFSNODEID/TASK/*.move_g1cents.*); # ~/.zen/ipfs/.$IPFSNODEID/TASK/$NANODATE.move_g1cents.$DESTPHONE.NODEPUB.crypt OR "done.$NANODATE" FILES
do
FTASK=$( echo $task | cut -d '/' -f 5 ) # "$NANODATE.move_g1cents.$DESTPHONE.NODEPUB.crypt"
TNANO=$( echo $FTASK | cut -d '.' -f 1) # $NANODATE
@ -148,35 +148,35 @@ do
TDEST=$( echo $FTASK | cut -d '.' -f 3) # $DESTPHONE
log "__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) FOUND TASK $TNANO:$TTYPE:$TDEST "
# MAKE LOCAL .$IPFSNODEID directory
mkdir -p ./wallets/.$IPFSNODEID/TASK/
mkdir -p ~/.zen/ipfs/.$IPFSNODEID/TASK/
# TODO: CHECK BETTER NOT DONE YET and $NANODATE > $TNANO (=> detect NODES writing in the future!!)
if [[ ! -f "./wallets/.$IPFSNODEID/TASK/done.$TNANO" ]]; then # NOT DONE YET: NEW TASK!
if [[ ! -f "~/.zen/ipfs/.$IPFSNODEID/TASK/done.$TNANO" ]]; then # NOT DONE YET: NEW TASK!
tdiff=$(bc -l <<< "$NANODATE - $TNANO")
if [[ $tdiff -gt 0 ]]; then
# GET BACK MY NODE G1 Wallet authfile from my LOCAL ./wallets
echo "${GPGPASS}" | gpg -q -d --output "./NODEG1Wallet.authfile" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./wallets/.$IPFSNODEID/$IPFSNODEID.authfile.GPGPASS.gpg"
# GET BACK MY NODE G1 Wallet authfile from my LOCAL ~/.zen/g1sms_wallets
echo "${GPGPASS}" | gpg -q -d --output "./NODEG1Wallet.authfile" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "~/.zen/ipfs/.$IPFSNODEID/$IPFSNODEID.authfile.GPGPASS.gpg"
# DECRYPT and CAT move_g1cents VALUE
./shell/natools.py decrypt -k "./NODEG1Wallet.authfile" -i "$task" -o "/tmp/move_g1cents.$TDEST"
./natools.py decrypt -k "./NODEG1Wallet.authfile" -i "$task" -o "/tmp/move_g1cents.$TDEST"
ZENVAL=$(cat "/tmp/move_g1cents.$TDEST")
log "__SUB:ipfs_swarm_wallets_refresh: tdiff=$tdiff .$IPFSNODEID G1 = ./NODEG1Wallet.authfile :decrypt: Found $ZENVAL Zen to ADD"
rm -f "./NODEG1Wallet.authfile"
if [[ $ZENVAL -gt 0 ]]; then
curvalue=$(cat ./wallets/$TDEST/$TDEST.g1cents)
curvalue=$(cat ~/.zen/g1sms_wallets/$TDEST/$TDEST.g1cents)
newvalue=$(bc -l <<< "$curvalue + $ZENVAL")
echo $newvalue > ./wallets/$TDEST/$TDEST.g1cents
echo "OK.$tdiff" > ./wallets/.$IPFSNODEID/TASK/done.$TNANO
log "__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) DONE! OPERATION: ($curvalue + $ZENVAL) = $newvalue Zen <=> ./wallets/$TDEST/$TDEST.g1cents:: OK"
# REFRESH ./wallets and PUBLISH
echo $newvalue > ~/.zen/g1sms_wallets/$TDEST/$TDEST.g1cents
echo "OK.$tdiff" > ~/.zen/ipfs/.$IPFSNODEID/TASK/done.$TNANO
log "__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) DONE! OPERATION: ($curvalue + $ZENVAL) = $newvalue Zen <=> ~/.zen/g1sms_wallets/$TDEST/$TDEST.g1cents:: OK"
# REFRESH ~/.zen/g1sms_wallets and PUBLISH
I=$(ipfs_node_wallets_add)
else
echo "KO.$tdiff" > ./wallets/.$IPFSNODEID/TASK/done.$TNANO
log "__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) ERROR! BAD: ($curvalue + $ZENVAL) = $newvalue Zen <=> ./wallets/$TDEST/$TDEST.g1cents :: KO"
echo "KO.$tdiff" > ~/.zen/ipfs/.$IPFSNODEID/TASK/done.$TNANO
log "__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) ERROR! BAD: ($curvalue + $ZENVAL) = $newvalue Zen <=> ~/.zen/g1sms_wallets/$TDEST/$TDEST.g1cents :: KO"
I=$(ipfs_node_wallets_add)
sms_SEND "$ADMINPHONE" "ADMIN! TASK ERROR: .$IPFSNODEID($FTASK) ERROR! BAD: ($curvalue + $ZENVAL) = $newvalue Zen <=> ./wallets/$TDEST/$TDEST.g1cents :: KO"
sms_SEND "$ADMINPHONE" "ADMIN! TASK ERROR: .$IPFSNODEID($FTASK) ERROR! BAD: ($curvalue + $ZENVAL) = $newvalue Zen <=> ~/.zen/g1sms_wallets/$TDEST/$TDEST.g1cents :: KO"
fi
else
# TODO: Bad NODE in the Future task !!! Make better BAD Node detection = Swarm Banish?
echo "KO.$tdiff" > ./wallets/.$IPFSNODEID/TASK/done.$TNANO
echo "KO.$tdiff" > ~/.zen/ipfs/.$IPFSNODEID/TASK/done.$TNANO
log "__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) ERROR! DATE PROBLEM: $NANODATE < $TNANO :: KO"
I=$(ipfs_node_wallets_add)
sms_SEND "$ADMINPHONE" "ADMIN! .$IPFSNODEID($FTASK) ERROR! DATE PROBLEM: $NANODATE < $TNANO :: KO"
@ -185,13 +185,13 @@ do
done
log "__SUB:ipfs_swarm_wallets_refresh: REMOVE OLD TASK MARKED AS DONE"
for scan in ./wallets_swarm/.Qm*/TASK/done.*; do
for scan in ~/.zen/g1sms_wallets_swarm/.Qm*/TASK/done.*; do
lscan=$(echo $scan | sed s/_swarm//g )
lid=$(echo $scan | cut -d '/' -f 3 | cut -d '.' -f 2 )
lnano=$(echo $scan | cut -d '/' -f 5 | cut -d '.' -f 2 )
if [[ "$lid" != "$IPFSNODEID" ]]; then
log "__SUB:ipfs_swarm_wallets_refresh: CLEANING done OLD TASK ${lscan} SENT to $lid ($lnano.bin)"
rm -f ./wallets/.$lid/TASK/$lnano.*
rm -f ~/.zen/g1sms_wallets/.$lid/TASK/$lnano.*
I=$(ipfs_node_wallets_add)
fi
done
@ -206,11 +206,11 @@ fi
function ipfs_node_wallets_add (){
##########################
##########################
IWALLETS=$(su $YOU -c "ipfs add -rHq './wallets' | tail -n 1")
IWALLETS=$(su $YOU -c "ipfs add -rHq '~/.zen/g1sms_wallets' | tail -n 1")
# CHAIN STATE FOR $IPFSNODEID
echo $IWALLETS > ./wallets/.$IPFSNODEID.wallets.chain
log "__SUB:ipfs_node_wallets_add: NEW './wallets' HASH ipfs ls $IWALLETS"
echo $IWALLETS > ~/.zen/ipfs/.$IPFSNODEID.wallets.chain
log "__SUB:ipfs_node_wallets_add: NEW '~/.zen/g1sms_wallets' HASH ipfs ls $IWALLETS"
# PUBLISH IPNS NODE WALLETS
NODEWALLETS=$(su $YOU -c "ipfs name publish --quieter /ipfs/$IWALLETS")
@ -222,9 +222,9 @@ function ipfs_node_wallets_add (){
#################################################################################################################################
function sms_uid2key (){
RIBFILE="./wallets/$PHONE/$PHONE.uidrib"
NAMEFILE="./wallets/$PHONE/$PHONE.uidname"
UIDNAFILE="./wallets/$PHONE/$PHONE.uidna"
RIBFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.uidrib"
NAMEFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.uidname"
UIDNAFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.uidna"
# New related wallet asked
ASKWALLET="$1"
#For micro payement
@ -249,7 +249,7 @@ function sms_uid2key (){
fi
# Search fo duplicate
DUP=$(grep -Rwl "$ASKWALLET" ./wallets/*/*.uidname | cut -f 3 -d '/')
DUP=$(grep -Rwl "$ASKWALLET" ~/.zen/g1sms_wallets/*/*.uidname | cut -f 3 -d '/')
if [[ "$DUP" != "" && "$DUP" != "$PHONE" ]]; then
sms_SEND "$ADMINPHONE" "ADMIN! INFO: $PHONE prend le même $ASKWALLET, que $DUP"
sms_SEND "$DUP" "Vous devez savoir que $ASKWALLET est associé à un autre téléphone que le votre également!"
@ -259,18 +259,18 @@ function sms_uid2key (){
# FIND ASKWALLET into wallets, wallest_swarm OR duniter (silkaj)
DESTMEM="$VIRDEST"
# SEARCH IN WALLETS
LOCAL=$(grep -Rwl "$ASKWALLET" ./wallets/*/*.uidna | cut -f 3 -d '/')
LOCAL=$(grep -Rwl "$ASKWALLET" ~/.zen/g1sms_wallets/*/*.uidna | cut -f 3 -d '/')
if [[ "$LOCAL" != "" ]]; then
# LOCAL G1sms account
DESTRIB=$(cat ./wallets/$LOCAL/$LOCAL.pub)
DESTRIB=$(cat ~/.zen/g1sms_wallets/$LOCAL/$LOCAL.pub)
DESTPHONE=$LOCAL
log "__SUB:sms_uid2key: FOUND LOCAL ($MASTERPHONE) G1sms+ wallet: $DESTRIB ($LOCAL)"
else
# SEARCH IN WALLETS SWARM
INSWARM=$(grep -Rwl "$ASKWALLET" ./wallets_swarm/*/*.uidna | cut -f 3 -d '/')
INSWARM=$(grep -Rwl "$ASKWALLET" ~/.zen/g1sms_wallets_swarm/*/*.uidna | cut -f 3 -d '/')
if [[ "$INSWARM" != "" ]]; then
REMOTENODE=$(cat ./wallets_swarm/$INSWARM/MASTERPHONE.sms)
DESTRIB=$(cat ./wallets_swarm/$INSWARM/$INSWARM.pub)
REMOTENODE=$(cat ~/.zen/g1sms_wallets_swarm/$INSWARM/MASTERPHONE.sms)
DESTRIB=$(cat ~/.zen/g1sms_wallets_swarm/$INSWARM/$INSWARM.pub)
DESTPHONE=$INSWARM
log "__SUB:sms_uid2key: FOUND SWARM ($REMOTENODE) G1sms+ wallet: $DESTRIB ($INSWARM)"
else
@ -279,9 +279,9 @@ function sms_uid2key (){
DESTRIB=$(./silkaj/silkaj id "$ASKWALLET" | grep -w "$ASKWALLET" | awk '{print $2}')
log "__SUB:sms_uid2key: OUT OFF SWARM MEMBER wallet: $DESTRIB"
# GET CESIUM+ geoPoint DATA (TODO: cron for GCHANGE SMS Alert)
curl -s ${CESIUM}/user/profile/${DESTRIB} | jq '._source.geoPoint' > "./wallets/$PHONE/$PHONE.uidgeo.json"
log "__SUB:sms_uid2key: GET CESIUM+ geoPoint and AVATAR : $(cat ./wallets/$PHONE/$PHONE.uidgeo.json)"
curl -s ${CESIUM}/user/profile/${DESTRIB} | jq '._source.avatar._content' | sed 's/\"//g' | base64 -d > "./wallets/$PHONE/$PHONE.avatar.png"
curl -s ${CESIUM}/user/profile/${DESTRIB} | jq '._source.geoPoint' > "~/.zen/g1sms_wallets/$PHONE/$PHONE.uidgeo.json"
log "__SUB:sms_uid2key: GET CESIUM+ geoPoint and AVATAR : $(cat ~/.zen/g1sms_wallets/$PHONE/$PHONE.uidgeo.json)"
curl -s ${CESIUM}/user/profile/${DESTRIB} | jq '._source.avatar._content' | sed 's/\"//g' | base64 -d > "~/.zen/g1sms_wallets/$PHONE/$PHONE.avatar.png"
fi
fi
@ -309,30 +309,30 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
UNKNOWN=0
# TODO Optimize GLOBAL/local variables use, use more function array output ?!
# Initiate PHONE settings files and values
IPFSNODEIDFILE="./wallets/$PHONE/MASTERPHONE.ipfsid" # Contains G1sms+ NODE IPFS id
SMSNODE="./wallets/$PHONE/MASTERPHONE.sms" # Contains G1sms+ SMS phone number
PINFILE="./wallets/$PHONE/$PHONE.pin" # Contains phone wallet diceware password
GPGPINFILE="./wallets/$PHONE/$PHONE.pin.gpg" # Contains g1smsnode cypher phone wallet diceware password
AUTHCRYPTFILE="./wallets/$PHONE/$PHONE.authfile.crypt" # Crypt with $NODE_G1PUBKEY
PUBKEYFILE="./wallets/$PHONE/$PHONE.pub" # Contains phone wallet public key (RIB)
UNITFILE="./wallets/$PHONE/$PHONE.unit" # Contains phone wallet prefered unit (LOVE,G1,DU)
IPFSNODEIDFILE="~/.zen/g1sms_wallets/$PHONE/MASTERPHONE.ipfsid" # Contains G1sms+ NODE IPFS id
SMSNODE="~/.zen/g1sms_wallets/$PHONE/MASTERPHONE.sms" # Contains G1sms+ SMS phone number
PINFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.pin" # Contains phone wallet diceware password
GPGPINFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.pin.gpg" # Contains g1smsnode cypher phone wallet diceware password
AUTHCRYPTFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.authfile.crypt" # Crypt with $NODE_G1PUBKEY
PUBKEYFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.pub" # Contains phone wallet public key (RIB)
UNITFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.unit" # Contains phone wallet prefered unit (LOVE,G1,DU)
RIBFILE="./wallets/$PHONE/$PHONE.uidrib" # Contains phone wallet related UID Pubkey
NAMEFILE="./wallets/$PHONE/$PHONE.uidname" # Contains the member UID related to wallet
MAILFILE="./wallets/$PHONE/$PHONE.email" # Contains the member EMAIL (Send BILLET)
GPGMAILFILE="./wallets/$PHONE/$PHONE.email.gpg" # Contains the member EMAIL (Send BILLET)
UIDNAFILE="./wallets/$PHONE/$PHONE.uidna" # Contains the G1sms+ UID Name for recursive VIR
GEOFILE="./wallets/$PHONE/$PHONE.uidgeo.json" # Contains the member GeoPoint from member Cesium+ related to wallet
RIBFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.uidrib" # Contains phone wallet related UID Pubkey
NAMEFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.uidname" # Contains the member UID related to wallet
MAILFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.email" # Contains the member EMAIL (Send BILLET)
GPGMAILFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.email.gpg" # Contains the member EMAIL (Send BILLET)
UIDNAFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.uidna" # Contains the G1sms+ UID Name for recursive VIR
GEOFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.uidgeo.json" # Contains the member GeoPoint from member Cesium+ related to wallet
RECFILE="./wallets/$PHONE/VIREMENTS" # File showing recurrent payements are left to be done with this G1sms Wallet
GPGRECFILE="./wallets/$PHONE/VIREMENTS.gpg" # Cypher file with GPGPASS (Node .Identity.PrivKey)
G1COUNTFILE="./wallets/$PHONE/$PHONE.g1cents" # Last sms_COUNT.sh call value
CHAINFILE="./wallets/$PHONE/$PHONE.chain" # Contains wallet last IPFS hash before ZEN value change
RECFILE="~/.zen/g1sms_wallets/$PHONE/VIREMENTS" # File showing recurrent payements are left to be done with this G1sms Wallet
GPGRECFILE="~/.zen/g1sms_wallets/$PHONE/VIREMENTS.gpg" # Cypher file with GPGPASS (Node .Identity.PrivKey)
G1COUNTFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.g1cents" # Last sms_COUNT.sh call value
CHAINFILE="~/.zen/g1sms_wallets/$PHONE/$PHONE.chain" # Contains wallet last IPFS hash before ZEN value change
DABUIDF="./wallets/$PHONE/uidna.G1TAGNODE" # Contains G1Dab Name
DABUIDF="~/.zen/g1sms_wallets/$PHONE/uidna.G1TAGNODE" # Contains G1Dab Name
# GET CURRENT NODE UIDNA (default DABUID)
NODEUIDNA=$(cat "./wallets/.$IPFSNODEID/$IPFSNODEID.uidna")
[[ $NODEUIDNA == "" ]] && NODEUIDNA=$(cat "./wallets/.$IPFSNODEID/_uidna")
NODEUIDNA=$(cat "~/.zen/ipfs/.$IPFSNODEID/$IPFSNODEID.uidna")
[[ $NODEUIDNA == "" ]] && NODEUIDNA=$(cat "~/.zen/ipfs/.$IPFSNODEID/_uidna")
######################################################################
# (NO PIN) = FIRST ACCOUNT: Create wallet
if [ ! -f "$PINFILE" ]; then
@ -342,13 +342,13 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
#######################
# Create Account Files
#######################
mkdir -p "./wallets/$PHONE/"
PIN=$(./shell/diceware.sh | xargs)
mkdir -p "~/.zen/g1sms_wallets/$PHONE/"
PIN=$(./diceware.sh | xargs)
PUBKEY=$(./silkaj/silkaj generate_auth_file --auth-scrypt -salt="$PHONE" -password="$PIN")
# BACKUP authfile available to authfile or PIN owner (DOUBLON AVEC PIN) TEST
log "__SUB:sms_INIT_ACCOUNT: ./shell/natools.py encrypt -p $PUBKEY -i ""./authfile"" -o ""$AUTHCRYPTFILE"""
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "./authfile" -o "$AUTHCRYPTFILE"
log "__SUB:sms_INIT_ACCOUNT: ./natools.py encrypt -p $PUBKEY -i ""./authfile"" -o ""$AUTHCRYPTFILE"""
./natools.py encrypt -p $NODE_G1PUBKEY -i "./authfile" -o "$AUTHCRYPTFILE"
rm -f ./authfile
log "__SUB:sms_INIT_ACCOUNT: !! G1 Wallet CREATED: $PHONE $PIN : $PUBKEY"
@ -358,9 +358,9 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
# 4 derniers chiffres du numéro de téléphone
TAIL=${PHONE:8:4}
# No UIDNA yet. Create new
UIDNA=$(./shell/diceware.sh 1 | xargs)
UIDNA=$(./diceware.sh 1 | xargs)
# Check if already existing among all swarm wallets
while [[ $(grep -Rwl $UIDNA$TAIL ./wallets_swarm/*/*.uidna) ]]; do UIDNA=$(./shell/diceware.sh 1 | xargs); done
while [[ $(grep -Rwl $UIDNA$TAIL ~/.zen/g1sms_wallets_swarm/*/*.uidna) ]]; do UIDNA=$(./diceware.sh 1 | xargs); done
echo "$UIDNA$TAIL" > "$UIDNAFILE"
#######################
@ -406,15 +406,15 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
echo "$MASTERPHONE" > "$SMSNODE"
TAIL=${PHONE:8:4}
# No UIDNA yet. Create new
UIDNA=$(./shell/diceware.sh 1 | xargs)
UIDNA=$(./diceware.sh 1 | xargs)
# Check if already existing among all swarm wallets
while [[ $(grep -Rwl $UIDNA$TAIL ./wallets_swarm/*/*.uidna) ]]; do UIDNA=$(./shell/diceware.sh 1 | xargs); done
while [[ $(grep -Rwl $UIDNA$TAIL ~/.zen/g1sms_wallets_swarm/*/*.uidna) ]]; do UIDNA=$(./diceware.sh 1 | xargs); done
echo "$UIDNA$TAIL" > "$UIDNAFILE"
PIN=$(cat "$PINFILE" | xargs)
log "__SUB:sms_INIT_ACCOUNT: Old G1sms wallet ;) SECURITY HOLE... Chiffrage PGP du PIN !!!"
echo "${GPGPASS}" | gpg -q --output "$GPGPINFILE" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "$PINFILE";
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "$PINFILE" -o "$PINFILE.$NODE_UIDNA.crypt"
./natools.py encrypt -p $NODE_G1PUBKEY -i "$PINFILE" -o "$PINFILE.$NODE_UIDNA.crypt"
else
# ------------>8------------------
log "__SUB:sms_INIT_ACCOUNT: Déchiffrage PGP PIN..."
@ -422,7 +422,7 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
# TODO make decypher less stress on filesystem, use /tmp and ramdisk
echo "${GPGPASS}" | gpg -d -q --output "$PINFILE" --yes --pinentry-mode loopback --passphrase-fd 0 "$GPGPINFILE"
PIN=$(cat "$PINFILE" | xargs)
[[ "$PIN" == "" && -f "$PINFILE.$NODE_UIDNA.crypt" ]] && ./shell/natools.py decrypt -k "$NODE_G1AUTHFILE" -i "$PINFILE.$NODE_UIDNA.crypt" -o "$PINFILE" && PIN=$(cat "$PINFILE");
[[ "$PIN" == "" && -f "$PINFILE.$NODE_UIDNA.crypt" ]] && ./natools.py decrypt -k "$NODE_G1AUTHFILE" -i "$PINFILE.$NODE_UIDNA.crypt" -o "$PINFILE" && PIN=$(cat "$PINFILE");
[[ "$PIN" != "" ]] && echo "" > "$PINFILE" || log "SYSTEM ERROR :: PIN EMPTY !!! GPG???"
fi
@ -441,14 +441,14 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
log "__SUB:sms_INIT_ACCOUNT: DECODING EMAIL .gpg... "
echo "${GPGPASS}" | gpg -d -q --output "$MAILFILE" --yes --pinentry-mode loopback --passphrase-fd 0 "$GPGMAILFILE"
MAIL=$(cat "$MAILFILE");
[[ $MAIL == "" && -f "$MAILFILE.node.crypt" ]] && ./shell/natools.py decrypt -k "$NODE_G1AUTHFILE" -i "$MAILFILE.node.crypt" -o "$MAILFILE" && MAIL=$(cat "$MAILFILE");
[[ $MAIL == "" && -f "$MAILFILE.node.crypt" ]] && ./natools.py decrypt -k "$NODE_G1AUTHFILE" -i "$MAILFILE.node.crypt" -o "$MAILFILE" && MAIL=$(cat "$MAILFILE");
# EMPTY CLEAR EMAIL FILE
[[ $MAIL != "" ]] && echo "" > "$MAILFILE" || log "SYSTEM ERROR :: MAIL EMPTY !!! GPG???"
fi
# ------------8<------------------
# REMOVE OLD HISTORY FILES
rm -f ./wallets/$PHONE/$PHONE.hist
rm -f ~/.zen/g1sms_wallets/$PHONE/$PHONE.hist
# ------------>8------------------
# PUBLISH GLOBAL VARS FROM ACCOUNT FILES
@ -500,7 +500,7 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
#################################################################################################################################
function check_account (){
log "__SUB:check_account: SILKAJ...... max 30 sec....."
AMOUNTG1=$(./shell/timeout.sh -t 30 ./silkaj/silkaj amount "$PUBKEY")
AMOUNTG1=$(./timeout.sh -t 30 ./silkaj/silkaj amount "$PUBKEY")
AMOUNTDU=$(bc <<< "scale=2; $AMOUNTG1 / $DUFACTOR")
AMOUNTLOVE=$(bc <<< "$AMOUNTG1 * 100 / $DUFACTOR")
@ -520,17 +520,17 @@ G1cents=$(echo "$AMOUNTG1*100" | bc -l | awk '{print int($0)}')
log "__SUB:check_account: $PHONE: $AMOUNTG1 = $AMOUNT $UNIT ($G1cents) - $PUBKEY"
if [[ "$G1cents" != "" ]]; then
NN=$(cat "./wallets/$PHONE/$PHONE.n")
NN=$(cat "~/.zen/g1sms_wallets/$PHONE/$PHONE.n")
((NN++))
echo "$NN" > "./wallets/$PHONE/$PHONE.n"
echo $G1cents > "./wallets/$PHONE/$PHONE.g1cents"
echo "$NN" > "~/.zen/g1sms_wallets/$PHONE/$PHONE.n"
echo $G1cents > "~/.zen/g1sms_wallets/$PHONE/$PHONE.g1cents"
# REFRESH NODE IPFS wallets & PUBLISH
I=$(ipfs_node_wallets_add)
# Register modification
echo "$I" > "./wallets/$PHONE/$PHONE.chain"
echo "$I" > "~/.zen/g1sms_wallets/$PHONE/$PHONE.chain"
else
# BAN actual Duniter Node in case of silkaj timeout.
export NEWDUNITER=$(./shell/checknodes.sh 'BAN')
export NEWDUNITER=$(./checknodes.sh 'BAN')
log "__SUB:check_account: !!! SILKAJ IS TOO SLOW !!! => NEW DUNITER SERVER: $NEWDUNITER"
fi
@ -563,7 +563,7 @@ esac
# GET G1sms wallet AMOUNTG1 and CHECK for right balance
log "__SUB:make_accounting: LOCAL $VIR amount for $PHONE : $PUBKEY"
# Try to ask silkaj. If timeout, use SWARM last known $PHONE.g1cents value
AMOUNTG1=$(./shell/timeout.sh -t 30 ./silkaj/silkaj amount "$PUBKEY")
AMOUNTG1=$(./timeout.sh -t 30 ./silkaj/silkaj amount "$PUBKEY")
if [[ "$AMOUNTG1" == "" ]]; then AMOUNTG1=0; fi
# TAX AND MINIMUM WALLET ACCOUNT CALCULATION
PERCENT=0$(bc -l <<< "scale=2; $VIR / $SWARMCOMM")
@ -589,34 +589,34 @@ function move_g1cents (){
log "__SUB:move_g1cents: $phonesrc ($zenvalue) -> $pubkeydest :: $G1COUNTFILE ::"
### CHANGE INPUT VALUE ####
curvalue=$(cat ./wallets/$phonesrc/$phonesrc.g1cents | cut -d '.' -f 1)
curvalue=$(cat ~/.zen/g1sms_wallets/$phonesrc/$phonesrc.g1cents | cut -d '.' -f 1)
newvalue=$(bc -l <<< "$curvalue - $zenvalue")
echo $newvalue > ./wallets/$phonesrc/$phonesrc.g1cents
log "__SUB:move_g1cents: DEBIT: OK APPLY $curvalue - $zenvalue = $newvalue TO ./wallets/$phonesrc/$phonesrc.g1cents"
echo $newvalue > ~/.zen/g1sms_wallets/$phonesrc/$phonesrc.g1cents
log "__SUB:move_g1cents: DEBIT: OK APPLY $curvalue - $zenvalue = $newvalue TO ~/.zen/g1sms_wallets/$phonesrc/$phonesrc.g1cents"
### CHANGE OUTPUT VALUE ####
# TEST IF $dest is a wallets_ G1sms PUBKEY?
winnerphone=$(grep -Rwl "$pubkeydest" ./wallets_swarm/*/*.pub | cut -d '.' -f 2 | cut -d '/' -f 3)
winnerphone=$(grep -Rwl "$pubkeydest" ~/.zen/g1sms_wallets_swarm/*/*.pub | cut -d '.' -f 2 | cut -d '/' -f 3)
if [[ $winnerphone ]]; then
# GET INFORMATON ON MANAGER NODE
NODEID=$(cat ./wallets_swarm/$winnerphone/MASTERPHONE.ipfsid)
NODEID=$(cat ~/.zen/g1sms_wallets_swarm/$winnerphone/MASTERPHONE.ipfsid)
if [[ "$NODEID" == "$IPFSNODEID" ]]; then
# ACTUAL NODE IS WALLET MANAGING NODE ;)
curvalue=$(cat ./wallets/$winnerphone/$winnerphone.g1cents | cut -d '.' -f 1)
curvalue=$(cat ~/.zen/g1sms_wallets/$winnerphone/$winnerphone.g1cents | cut -d '.' -f 1)
newvalue=$(bc -l <<< "$curvalue + $zenvalue")
echo $newvalue > ./wallets/$winnerphone/$winnerphone.g1cents
log "__SUB:move_g1cents: CREDIT: OK APPLY $curvalue + $zenvalue = $newvalue TO ./wallets/$winnerphone/$winnerphone.g1cents"
echo $newvalue > ~/.zen/g1sms_wallets/$winnerphone/$winnerphone.g1cents
log "__SUB:move_g1cents: CREDIT: OK APPLY $curvalue + $zenvalue = $newvalue TO ~/.zen/g1sms_wallets/$winnerphone/$winnerphone.g1cents"
else
# MUST ASK MANAGER NODE TO CORRECT g1cents FOR $winnerphone WALLET
# WRITE TASK TO .$NODEID CHANNEL
mkdir -p ./wallets/.$NODEID/TASK/
mkdir -p ~/.zen/g1sms_wallets/.$NODEID/TASK/
# USE natools with NODEPUB crypt
echo "$zenvalue" > "/tmp/move_g1cents.$winnerphone"
# GET NODE G1sms Wallet PUBKEY
NODEPUB=$(cat ./wallets_swarm/.$NODEID/$NODEID.pub)
./shell/natools.py encrypt -p $NODEPUB -i "/tmp/move_g1cents.$winnerphone" -o "./wallets/.$NODEID/TASK/$NANODATE.move_g1cents.$winnerphone.NODEPUB.crypt"
log "__SUB:move_g1cents: CREDIT: WRITE TASK TO ./wallets/.$NODEID/$NANODATE.move_g1cents.$winnerphone.NODEPUB.crypt "
NODEPUB=$(cat ~/.zen/g1sms_wallets_swarm/.$NODEID/$NODEID.pub)
./natools.py encrypt -p $NODEPUB -i "/tmp/move_g1cents.$winnerphone" -o "~/.zen/g1sms_wallets/.$NODEID/TASK/$NANODATE.move_g1cents.$winnerphone.NODEPUB.crypt"
log "__SUB:move_g1cents: CREDIT: WRITE TASK TO ~/.zen/g1sms_wallets/.$NODEID/$NANODATE.move_g1cents.$winnerphone.NODEPUB.crypt "
rm -f /tmp/move_g1cents.$winnerphone
fi
else

View File

@ -42,25 +42,25 @@ if [[ ! -e "./g1sms.preoni.pub.key" && -f "./g1sms.priv.key" ]]; then
ln -s ./g1sms.pub.key ./g1sms.preoni.pub.key
elif [[ ! -f ./g1sms.preoni.priv.key ]]; then
# CREATE NODE G1 KEYS AND FILES
mkdir -p ./wallets/.$IPFSNODEID/TASK
mkdir -p ~/.zen/ipfs/.$IPFSNODEID/TASK
################################################
# GIVE NAME TO NODE G1 WALLET: "0000diceware"
# CREATE "preoni" KeyS & ./wallets/.Qm***/_files
# CREATE "preoni" KeyS & ~/.zen/g1sms_wallets/.Qm***/_files
################################################
# 4 derniers chiffres du MASTERPHONE + diceware
PRE=${MASTERPHONE:8:4}
ZUID=$(./shell/diceware.sh 1 | xargs)
ZUID=$(./diceware.sh 1 | xargs)
# Check if already existing among all swarm wallets
while [[ $(grep -Rwl "$PRE$ZUID" ./wallets_swarm/.*/_uidna) ]]; do ZUID=$(./shell/diceware.sh 1 | xargs); done
while [[ $(grep -Rwl "$PRE$ZUID" ~/.zen/g1sms_wallets_swarm/.*/_uidna) ]]; do ZUID=$(./diceware.sh 1 | xargs); done
NODE_UIDNA="$PRE$ZUID"
NODE_PIN=$(./shell/diceware.sh | xargs)
NODE_PIN=$(./diceware.sh | xargs)
NODE_G1PUBKEY=$(./silkaj/silkaj generate_auth_file --auth-scrypt -salt="$NODE_UIDNA" -password="$NODE_PIN")
if [[ ! $NODE_G1PUBKEY ]]; then log "PROBLEME CREATION DU WALLET G1 POUR $NODE_UIDNA = $IPFSNODEID"; exit; fi
log "__SUB:initkeys.sh: NODE G1WALLET CESIUM: $NODE_UIDNA / $NODE_PIN CREATED..."
# WRITE NODE_UIDNA
echo "$NODE_UIDNA" > "./wallets/.$IPFSNODEID/_uidna" ################# _uidna
echo "$NODE_UIDNA" > "~/.zen/ipfs/.$IPFSNODEID/_uidna" ################# _uidna
############ SYSTEM MODIFY hosts & hostname ################
# WRITE NODE uidna NAME TO /etc/hosts & .Qm*/_uidna file
@ -69,30 +69,30 @@ elif [[ ! -f ./g1sms.preoni.priv.key ]]; then
############################################################
# BACKUP AUTHFILE FOR FOR SWARM USE (TODO: Refine Swarm, Node access): GIVES SMARM WITHDRAW ACTION
./shell/natools.py encrypt -p $SWARM_G1PUBKEY -i "./authfile" -o "./wallets/.$IPFSNODEID/_authfile.swarm.crypt"
./natools.py encrypt -p $SWARM_G1PUBKEY -i "./authfile" -o "~/.zen/ipfs/.$IPFSNODEID/_authfile.swarm.crypt"
echo $NODE_G1PUBKEY > "./wallets/.$IPFSNODEID/_pub" ################# _pub
echo $IPFSNODEID > "./wallets/.$IPFSNODEID/_ipfsid" ################# _ipfsid
echo $NODE_G1PUBKEY > "~/.zen/ipfs/.$IPFSNODEID/_pub" ################# _pub
echo $IPFSNODEID > "~/.zen/ipfs/.$IPFSNODEID/_ipfsid" ################# _ipfsid
log "__SUB:initkeys.sh: [ADMIN] G1sms+ CREATE G1WALLET FOR: $IPFSNODEID: _pub = $NODE_G1PUBKEY "
# BACKUP $IPFSNODEID config ################# _ipfsconfig.swarm.crypt : GIVES SMARM NODE RESTORE ACTION
./shell/natools.py encrypt -p $SWARM_G1PUBKEY -i "/home/$YOU/.ipfs/config" -o "./wallets/.$IPFSNODEID/_ipfsconfig.swarm.crypt"
log "__SUB:initkeys.sh: [ADMIN] BACKUP IPFS NODE CONFIG to ./wallets/.$IPFSNODEID/_ipfsconfig.swarm.crypt"
./natools.py encrypt -p $SWARM_G1PUBKEY -i "/home/$YOU/.ipfs/config" -o "~/.zen/ipfs/.$IPFSNODEID/_ipfsconfig.swarm.crypt"
log "__SUB:initkeys.sh: [ADMIN] BACKUP IPFS NODE CONFIG to ~/.zen/ipfs/.$IPFSNODEID/_ipfsconfig.swarm.crypt"
# Cyper & Empty PIN
echo "${NODE_PIN}" > "./wallets/.$IPFSNODEID/_pin" ################# _pin / _pin.node.crypt / _pin.gpg
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "./wallets/.$IPFSNODEID/_pin" -o "./wallets/.$IPFSNODEID/_pin.node.crypt"
echo "${GPGPASS}" | gpg -q --output "./wallets/.$IPFSNODEID/_pin.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./wallets/.$IPFSNODEID/_pin"
echo "" > "./wallets/.$IPFSNODEID/_pin"
echo "${NODE_PIN}" > "~/.zen/ipfs/.$IPFSNODEID/_pin" ################# _pin / _pin.node.crypt / _pin.gpg
./natools.py encrypt -p $NODE_G1PUBKEY -i "~/.zen/ipfs/.$IPFSNODEID/_pin" -o "~/.zen/ipfs/.$IPFSNODEID/_pin.node.crypt"
echo "${GPGPASS}" | gpg -q --output "~/.zen/ipfs/.$IPFSNODEID/_pin.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "~/.zen/ipfs/.$IPFSNODEID/_pin"
echo "" > "~/.zen/ipfs/.$IPFSNODEID/_pin"
echo "314" > "./wallets/.$IPFSNODEID/_g1cents" ################# _g1cents
echo $NANODATE > "./wallets/.$IPFSNODEID/_nanodate" ################# _nanodate
echo "314" > "~/.zen/ipfs/.$IPFSNODEID/_g1cents" ################# _g1cents
echo $NANODATE > "~/.zen/ipfs/.$IPFSNODEID/_nanodate" ################# _nanodate
# SILKAJ INIT G1 NODE WALLET
TX_IN=$(./silkaj/silkaj transaction --auth-file -file="$SWARM_G1AUTHFILE" --amount=3.24 --output=$NODE_G1PUBKEY --comment="[G1sms+] G1NODE ($ADMINPSEUDO) $NODE_UIDNA $IPFSNODEID" -y)
TX_OUT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$NODE_UIDNA" -password="$NODE_PIN" --amount=0.1 --output=$SWARM_G1PUBKEY --comment="[G1sms+] G1NODE ($ADMINPSEUDO) $NODE_UIDNA $IPFSNODEID:ACK" -y)
log "__SUB:initkeys.sh: [ADMIN] NODE G1sms+ $NODE_UIDNA : ls ./wallets/.$IPFSNODEID"
log "__SUB:initkeys.sh: [ADMIN] NODE G1sms+ $NODE_UIDNA : ls ~/.zen/ipfs/.$IPFSNODEID"
gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "[ADMIN] G1sms+ NODE $NODE_UIDNA ($IPFSNODEID)" 1>&2
gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "$NODE_G1PUBKEY" 1>&2
@ -101,15 +101,15 @@ elif [[ ! -f ./g1sms.preoni.priv.key ]]; then
echo $NODE_G1PUBKEY > ./g1sms.preoni.pub.key
fi
NODE_UIDNA=$(cat "./wallets/.$IPFSNODEID/_uidna")
NODE_UIDNA=$(cat "~/.zen/ipfs/.$IPFSNODEID/_uidna")
## INIT NODE G1 PUB & PRIV KEY
NODE_G1PUBKEY=$(cat "${GPATH}/g1sms.preoni.pub.key")
NODE_G1AUTHFILE="${GPATH}/g1sms.preoni.priv.key"
##########################################################
# MEMORIZE NODE NANODATE EXECUTION TIME (for ntpdate regular sync)
if [[ -f ./wallets/.$IPFSNODEID/_nanodate ]]; then
last=$(cat ./wallets/.$IPFSNODEID/_nanodate)
if [[ -f ~/.zen/ipfs/.$IPFSNODEID/_nanodate ]]; then
last=$(cat ~/.zen/ipfs/.$IPFSNODEID/_nanodate)
timediff=$( echo "${NANODATE} - ${last}" | bc -l )
# NODE TIME SYNC 600 milliards de nanosecondes = 600 s = 10 mn
if [[ $timediff -gt 600000000000 ]]; then
@ -117,32 +117,32 @@ if [[ -f ./wallets/.$IPFSNODEID/_nanodate ]]; then
log "__SUB:ntpdate pool.ntp.org: $timediff $(ntpdate pool.ntp.org)"
export NANODATE=$(date -u +%s%N)
fi
echo $NANODATE > ./wallets/.$IPFSNODEID/_nanodate
echo $NANODATE > ~/.zen/ipfs/.$IPFSNODEID/_nanodate
fi
################################################################
#INFORM ABOUT NODE CAPACITIES
export NODEPUB=$(cat "./wallets/.$IPFSNODEID/_pub")
export NODEPUB=$(cat "~/.zen/ipfs/.$IPFSNODEID/_pub")
## IS IT A SMS NODE (gammu-smsd is installed)??
if [[ $G1SMS ]]; then
echo $MASTERPHONE > "./wallets/.$IPFSNODEID/_sms"
echo $MASTERPHONE > "~/.zen/ipfs/.$IPFSNODEID/_sms"
else
if [ -f "./wallets/.$IPFSNODEID/_sms" ]; then rm -f "./wallets/.$IPFSNODEID/_sms"; fi
if [ -f "~/.zen/ipfs/.$IPFSNODEID/_sms" ]; then rm -f "~/.zen/ipfs/.$IPFSNODEID/_sms"; fi
fi
## IS THERE USB PRINTER CONNECTED?
if [[ -e "/dev/usb/lp0" ]]; then
log "G1CORE: IMPRESSION G1Tag ACTIF .............."
echo $ADRESSE > "./wallets/.$IPFSNODEID/_where"
echo $ADRESSE > "~/.zen/ipfs/.$IPFSNODEID/_where"
fi
## IS THERE SERIAL QR CODE READER CONNECTED?
if [[ -e "/dev/ttyACM0" ]]; then
log "G1CORE: SCAN G1Tag ACTIF .............."
export G1TX="YES"
echo "/dev/ttyACM0" > "./wallets/.$IPFSNODEID/_scan"
echo "/dev/ttyACM0" > "~/.zen/ipfs/.$IPFSNODEID/_scan"
else
if [ -f "./wallets/.$IPFSNODEID/_scan" ]; then rm -f "./wallets/.$IPFSNODEID/_scan"; fi
if [ -f "~/.zen/ipfs/.$IPFSNODEID/_scan" ]; then rm -f "~/.zen/ipfs/.$IPFSNODEID/_scan"; fi
fi

View File

@ -6,8 +6,8 @@
################################################################################
# TODO: Before June 2020: Get "./billets/$bpath/note.authfile.GPGPASS.gpg" for automatic Payback
# Search for old G1Billets for final CHK : Forget & Transfer G1 ?
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
# Existence days number can be $1
if [[ "$1" ]]; then vieux="$1"; else vieux=210; fi

View File

@ -9,8 +9,8 @@
# Gère les Abonnements aux communications PUSH SMS
##################################################################
# TODO: Create information Channels and moderate OPT IN/OUT
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "__SUB:sms_ABO.sh: START ($1=PHONE, $2=SERVICE)"
PHONE=$1
SERVICE=$2

View File

@ -6,9 +6,9 @@
################################################################################
# Accessible seulement pour ADMINPHONE.
# Permet de lancer des paquets de SMS aux membres, wallets, ...
# TODO Add OptIN/OUT options (./shell/sms_ABO.sh) + Extand ADMIN functions...
source ./shell/init.sh
source ./shell/functions.sh
# TODO Add OptIN/OUT options (./sms_ABO.sh) + Extand ADMIN functions...
source ./init.sh
source ./functions.sh
log "__SUB:sms_ADMIN.sh: START ($1=CMD, $2=MESSAGE)"
CMD="$1"
@ -21,10 +21,10 @@ case "$CMD" in
# Get it from first MESSAGE message word...
towoo=$(echo $MESSAGE | cut -d ' ' -f 1)
SEARCH=$(grep -Rwl "$towoo" ./wallets_swarm/*/*.uidna* | tail -n 1 | cut -f 3 -d '/')
SEARCH=$(grep -Rwl "$towoo" ~/.zen/g1sms_wallets_swarm/*/*.uidna* | tail -n 1 | cut -f 3 -d '/')
if [[ "$SEARCH" != "" ]]; then
REMOTENODE=$(cat ./wallets_swarm/$SEARCH/MASTERPHONE.sms)
DESTRIB=$(cat ./wallets_swarm/$SEARCH/$SEARCH.pub)
REMOTENODE=$(cat ~/.zen/g1sms_wallets_swarm/$SEARCH/MASTERPHONE.sms)
DESTRIB=$(cat ~/.zen/g1sms_wallets_swarm/$SEARCH/$SEARCH.pub)
DESTPHONE=$SEARCH
log "__SUB:sms_ADMIN.sh: FOUND $towoo on NODE ($REMOTENODE) G1sms+ wallet: $DESTRIB : $DESTPHONE)"
@ -37,7 +37,7 @@ case "$CMD" in
MEM)
log "__SUB:sms_ADMIN.sh: Send $MESSAGE message to All NODE members"
for f in ./wallets/*/*.uidname; do
for f in ~/.zen/g1sms_wallets/*/*.uidname; do
uid=$(cat $f);
num=$(echo $f | cut -d '/' -f3);
if [[ "$num" == "$ADMINPHONE" || "$num" == "$MASTERPHONE" ]]; then continue; fi
@ -45,31 +45,31 @@ case "$CMD" in
sms_SEND "$num" "$uid, $MESSAGE"
sleep 5
done
sms_SEND "$ADMINPHONE" "ADMIN! Message envoyé aux $(cat ./wallets/*/*.uidname | wc -l) membres de ce NODE"
sms_SEND "$ADMINPHONE" "ADMIN! Message envoyé aux $(cat ~/.zen/g1sms_wallets/*/*.uidname | wc -l) membres de ce NODE"
;;
ALL)
log "__SUB:sms_ADMIN.sh: Send $MESSAGE message to All NODE G1sms wallets"
for f in ./wallets/*; do
for f in ~/.zen/g1sms_wallets/*; do
num=$(echo $f | cut -d '/' -f3);
if [[ "$num" == "$ADMINPHONE" || "$num" == "$MASTERPHONE" ]]; then continue; fi
log "__SUB:sms_ADMIN.sh: Send SMS to $num"
sms_SEND "$num" "$MESSAGE"
sleep 5
done
sms_SEND "$ADMINPHONE" "ADMIN! Message envoyé aux $(ls ./wallets/ | cut -d '/' -f3 | wc -l) possesseur de G1sms Wallets de ce NODE"
sms_SEND "$ADMINPHONE" "ADMIN! Message envoyé aux $(ls ~/.zen/g1sms_wallets/ | cut -d '/' -f3 | wc -l) possesseur de G1sms Wallets de ce NODE"
;;
SWARM)
log "__SUB:sms_ADMIN.sh: Send $MESSAGE message to All SWARM G1sms wallets"
for f in ./wallets_swarm/+33*; do
for f in ~/.zen/g1sms_wallets_swarm/+33*; do
num=$(echo $f | cut -d '/' -f3);
if [[ "$num" == "$ADMINPHONE" || "$num" == "$MASTERPHONE" ]]; then continue; fi
log "__SUB:sms_ADMIN.sh: Send SMS to $num"
sms_SEND "$num" "$MESSAGE"
sleep 5
done
sms_SEND "$ADMINPHONE" "ADMIN! Message: $MESSAGE envoyé aux $(ls ./wallets_swarm/ | cut -d '/' -f3 | wc -l) PHONE G1sms Wallets du SWARM"
sms_SEND "$ADMINPHONE" "ADMIN! Message: $MESSAGE envoyé aux $(ls ~/.zen/g1sms_wallets_swarm/ | cut -d '/' -f3 | wc -l) PHONE G1sms Wallets du SWARM"
;;
*)

View File

@ -4,8 +4,8 @@
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "X sms_AIDE.sh ($1=phone)"
sms_INIT_ACCOUNT "$1" "NOSMS"

View File

@ -5,8 +5,8 @@
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
# Create and print 6 G1Billets de nn LOVE
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "__SUB:sms_BILLET.sh: ($1=phone, $2=VALbillet)"
phone="$1"
@ -59,7 +59,7 @@ testmin=$( echo "${VIR} < ${MIN}" | bc -l )
log "__SUB:sms_BILLET.sh: TEST : $VIR < $MIN ? $testmin"
# silkaj NODE CHANGE !!!
#SILKAJNODE=$(./shell/checknodes.sh)
#SILKAJNODE=$(./checknodes.sh)
#log "NEW SILKAJ NODE: $SILKAJNODE"
if [[ "$testmin" -eq "1" ]]
@ -70,17 +70,17 @@ then
while [ $boucle -lt $NBbillets ]
do
# Creation du numéro de billet
NUMBER=$(./shell/diceware.sh 2 | xargs)
NUMBER=$(./diceware.sh 2 | xargs)
bpath=$(echo $NUMBER | sed 's/ /_/g')
# Cas d'un billet existant
while [ -d "./billets/$bpath" ]
do
NUMBER=$(./shell/diceware.sh 2 | xargs)
NUMBER=$(./diceware.sh 2 | xargs)
bpath=$(echo $NUMBER | sed 's/ /_/g')
done
SECRET=$(./shell/diceware.sh 4 | xargs)
SECRET=$(./diceware.sh 4 | xargs)
boucle=$(bc -l <<< "$boucle + 1")
@ -92,7 +92,7 @@ then
log "__SUB:sms_BILLET.sh: authfile KEY : ./billets/$bpath/note.authfile.GPGPASS.gpg"
mkdir -p "./billets/$bpath"
echo "${GPGPASS}" | gpg -q --output "./billets/$bpath/note.authfile.GPGPASS.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./authfile"
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "./authfile" -o "./billets/$bpath/note.authfile.$NODE_UIDNA.crypt"
./natools.py encrypt -p $NODE_G1PUBKEY -i "./authfile" -o "./billets/$bpath/note.authfile.$NODE_UIDNA.crypt"
rm -f "./authfile"
log_history $PHONE "G1BILLET, $TRANSAC, $BILLETPUBKEY"
@ -113,8 +113,8 @@ then
log "Remplissage: $TRANSAC G1... $BILLETPUBKEY = $PAY"
# CREATION FICHIER IMAGE BILLET
$(./shell/sms_BILLET_MAKE.sh "$NUMBER" "$SECRET" "$VALbillet" "$UNIT" "$TRANSAC" "$BILLETPUBKEY" "$MEMBER" "$TRANSAC" "$PHONE")
log "./shell/sms_BILLET_MAKE.sh \"$NUMBER\" \"$SECRET\" \"$VALbillet\" \"$UNIT\" \"$TRANSAC\" \"$BILLETPUBKEY\" \"$MEMBER\" \"$TRANSAC\" \"$PHONE\""
$(./sms_BILLET_MAKE.sh "$NUMBER" "$SECRET" "$VALbillet" "$UNIT" "$TRANSAC" "$BILLETPUBKEY" "$MEMBER" "$TRANSAC" "$PHONE")
log "./sms_BILLET_MAKE.sh \"$NUMBER\" \"$SECRET\" \"$VALbillet\" \"$UNIT\" \"$TRANSAC\" \"$BILLETPUBKEY\" \"$MEMBER\" \"$TRANSAC\" \"$PHONE\""
# Transaction to create Link BILLET <-> MEMBER RIB => Decrease BILLET value !
sleep 2

View File

@ -2,8 +2,8 @@
# If 4 words provided => Check if Billet exists and return BILLET AMOUNT VALUE
# If 7 words provided => if Billet exists, transfer AMOUNT to PHONE & destroy BILLET
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "X sms_BILLETCHK.sh $0"
PHONE="$1"

View File

@ -8,10 +8,10 @@
############################################################################
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
# TEST:
# ./shell/sms_BILLET_MAKE.sh "nu me ro test" "se cr et" 100 LOVE 10.04 "https://g1sms.fr" G1SMS TEST
# ./sms_BILLET_MAKE.sh "nu me ro test" "se cr et" 100 LOVE 10.04 "https://g1sms.fr" G1SMS TEST
############################################################################
source "./shell/init.sh"
source "./shell/functions.sh"
source "./init.sh"
source "./functions.sh"
NUMERO="$1"
SECRET="$2"
@ -22,7 +22,7 @@ NOTERIB="$6"
MEMBER="$7"
TRANSAC="$8"
PHONE="$9"
log "X sudo ./shell/sms_BILLET_MAKE.sh \"$1\" \"$2\" \"$3\" \"$4\" \"$5\" \"$6\" \"$7\" \"$8\""
log "X sudo ./sms_BILLET_MAKE.sh \"$1\" \"$2\" \"$3\" \"$4\" \"$5\" \"$6\" \"$7\" \"$8\""
if [[ "$NOTERIB" == "" || "$MEMBER" == "" ]]
then
@ -45,16 +45,16 @@ valid="0${valid:0:2}"
# ADD VALIDITY to convert: -pointsize 20 -draw 'text 380,410 "'"A encaisser avant le 01/$valid/$year"'"' \
# ADD Avatar on G1 Logo SouthEast
if [[ $(file "./wallets/$PHONE/$PHONE.avatar.png" | grep 'PNG') ]]; then
composite -compose Over -gravity East -geometry +15+0 -dissolve 33% "./wallets/$PHONE/$PHONE.avatar.png" "./shell/Oeuro.jpg" "/tmp/$NUMERO.jpg"
composite -compose Over -gravity West -geometry +15+0 -dissolve 33% "./wallets/$PHONE/$PHONE.avatar.png" "/tmp/$NUMERO.jpg" "/tmp/$NUMERO.jpg"
if [[ $(file "~/.zen/g1sms_wallets/$PHONE/$PHONE.avatar.png" | grep 'PNG') ]]; then
composite -compose Over -gravity East -geometry +15+0 -dissolve 33% "~/.zen/g1sms_wallets/$PHONE/$PHONE.avatar.png" "./Oeuro.jpg" "/tmp/$NUMERO.jpg"
composite -compose Over -gravity West -geometry +15+0 -dissolve 33% "~/.zen/g1sms_wallets/$PHONE/$PHONE.avatar.png" "/tmp/$NUMERO.jpg" "/tmp/$NUMERO.jpg"
else
composite -compose Over -gravity East -geometry +15+0 -dissolve 33% "./shell/G1Anar.png" "./shell/Oeuro.jpg" "/tmp/$NUMERO.jpg"
composite -compose Over -gravity West -geometry +15+0 -dissolve 33% "./shell/G1Anar.png" "/tmp/$NUMERO.jpg" "/tmp/$NUMERO.jpg"
composite -compose Over -gravity East -geometry +15+0 -dissolve 33% "./G1Anar.png" "./Oeuro.jpg" "/tmp/$NUMERO.jpg"
composite -compose Over -gravity West -geometry +15+0 -dissolve 33% "./G1Anar.png" "/tmp/$NUMERO.jpg" "/tmp/$NUMERO.jpg"
fi
# Add G1Billet_LOVE.png logo (250px)
composite -compose Over -gravity SouthWest -geometry +50+50 -dissolve 70% "./shell/G1Billet_LOVE.png" "/tmp/$NUMERO.jpg" "/tmp/$NUMERO.jpg"
composite -compose Over -gravity SouthWest -geometry +50+50 -dissolve 70% "./G1Billet_LOVE.png" "/tmp/$NUMERO.jpg" "/tmp/$NUMERO.jpg"
# Prepare BILLET qrcode verification URL
qrencode -s 3 -o "/tmp/$NUMERO_NOTERIB.png" "$NOTERIB"
@ -66,28 +66,28 @@ composite -compose Over -gravity NorthEast -geometry +50+25 "/tmp/$NUMERO_NOTERI
# Add June logo
case "$MONTANT" in
10)
convert "./shell/g1.png" -fuzz 20% -fill grey -opaque '#e5912b' "/tmp/g1.png"
convert "./g1.png" -fuzz 20% -fill grey -opaque '#e5912b' "/tmp/g1.png"
;;
20)
convert "./shell/g1.png" -fuzz 20% -fill green -opaque '#e5912b' "/tmp/g1.png"
convert "./g1.png" -fuzz 20% -fill green -opaque '#e5912b' "/tmp/g1.png"
;;
50)
convert "./shell/g1.png" -fuzz 20% -fill orange -opaque '#e5912b' "/tmp/g1.png"
convert "./g1.png" -fuzz 20% -fill orange -opaque '#e5912b' "/tmp/g1.png"
;;
100)
convert "./shell/g1.png" -fuzz 20% -fill blue -opaque '#e5912b' "/tmp/g1.png"
convert "./g1.png" -fuzz 20% -fill blue -opaque '#e5912b' "/tmp/g1.png"
;;
200)
convert "./shell/g1.png" -fuzz 20% -fill purple -opaque '#e5912b' "/tmp/g1.png"
convert "./g1.png" -fuzz 20% -fill purple -opaque '#e5912b' "/tmp/g1.png"
;;
500)
convert "./shell/g1.png" -fuzz 20% -fill red -opaque '#e5912b' "/tmp/g1.png"
convert "./g1.png" -fuzz 20% -fill red -opaque '#e5912b' "/tmp/g1.png"
;;
1000)
convert "./shell/g1.png" -fuzz 20% -fill black -opaque '#e5912b' "/tmp/g1.png"
convert "./g1.png" -fuzz 20% -fill black -opaque '#e5912b' "/tmp/g1.png"
;;
*)
cp "./shell/g1.png" "/tmp/g1.png"
cp "./g1.png" "/tmp/g1.png"
;;
esac
composite -compose Over -gravity SouthEast -geometry +20+20 -dissolve 90% "/tmp/g1.png" "/tmp/$NUMERO.jpg" "/tmp/$NUMERO.jpg"

View File

@ -4,8 +4,8 @@
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "X sms_COUNT.sh ($1=phone $2=NOSMS)"
PHONE=$1
TODAY=$(date '+%Y%m%d')
@ -25,7 +25,7 @@ AMOUNT=${accounting[1]}
UNIT=${accounting[2]}
# SEARCH FOR VIREMENT
if [[ -f ./wallets/$PHONE/VIREMENTS.gpg ]]; then
if [[ -f ~/.zen/g1sms_wallets/$PHONE/VIREMENTS.gpg ]]; then
echo "FOUND $file decrypting with Node key"
echo "${GPGPASS}" | gpg -d -q --output "/tmp/VIREMENTS.$PHONE" --yes --pinentry-mode loopback --passphrase-fd 0 "$file"
declare -a LIST

View File

@ -4,18 +4,18 @@
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "${c_yellow}__SUB:sms_DESTROY.sh: START ($1=phone, $2=uid)$c_"
PHONE="$1"
MEMBERUID="$2"
TODAY=$(date '+%Y%m%d')
if [[ -f "./wallets/$PHONE/VIREMENTS" ]]; then
if [[ -f "~/.zen/g1sms_wallets/$PHONE/VIREMENTS" ]]; then
# CHECK IF ALL DONE.
log "__SUB:sms_DESTROY.sh: FOUND "./wallets/$PHONE/VIREMENTS" decrypting with Node key"
echo "${GPGPASS}" | gpg -d -q --output "/tmp/VIREMENTS.$PHONE" --yes --pinentry-mode loopback --passphrase-fd 0 "./wallets/$PHONE/VIREMENTS.gpg"
log "__SUB:sms_DESTROY.sh: FOUND "~/.zen/g1sms_wallets/$PHONE/VIREMENTS" decrypting with Node key"
echo "${GPGPASS}" | gpg -d -q --output "/tmp/VIREMENTS.$PHONE" --yes --pinentry-mode loopback --passphrase-fd 0 "~/.zen/g1sms_wallets/$PHONE/VIREMENTS.gpg"
for next in $(cat /tmp/VIREMENTS.$PHONE | cut -d ' ' -f 1); do
if [[ $next -ge $TODAY ]]; then
log "__SUB:sms_DESTROY.sh: VIREMENT $next >= $TODAY"
@ -54,8 +54,8 @@ $ADMINPSEUDO @ $NODEUIDNA
$back"
sms_SEND "$PHONE" "$mess"
rm -Rf ./wallets/$PHONE;
rm -Rf ./wallets_swarm/$PHONE;
rm -Rf ~/.zen/g1sms_wallets/$PHONE;
rm -Rf ~/.zen/g1sms_wallets_swarm/$PHONE;
cents=$(echo $(bc -l <<< "scale=0; $GETLIMIT * 100") | cut -d '.' -f 1)
move_g1cents "$PHONE" "$MEMRIB" "$cents"
cents=$(echo $(bc -l <<< "scale=0; $LIMIT * 100") | cut -d '.' -f 1)
@ -64,7 +64,7 @@ sms_SEND "$PHONE" "$mess"
log "__SUB:sms_DESTROY.sh: WALLET DESTROYED : $PHONE / $UIDNA / $MEMBER : ${c_green}OK$c_"
fi
else
new=$(./shell/checknodes.sh "BAN")
new=$(./checknodes.sh "BAN")
sms_ERROR "$PHONE" "Problème de payement avec silkaj (changement de serveur $new): $PAY";
log "${c_red}__SUB:sms_DESTROY.sh: END WITH ERRORS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~$c_"
exit

View File

@ -8,15 +8,15 @@
# Configure in /etc/ssmtp
# Send email with file attachement: mpack -s "Logo G1Tag" /home/pi/G1sms+/G1Tag.png dest@email.ext
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "__SUB:sms_EMAIL.sh.sh: START ($1=phone, $2=mail)"
phone="$1"
mail="$2"
MAILFILE="./wallets/$phone/$phone.email" # Contains the member EMAIL (Send BILLET)
MAILFILE="~/.zen/g1sms_wallets/$phone/$phone.email" # Contains the member EMAIL (Send BILLET)
# Initialise PHONE, PIN, PUBKEY, UNIT ...
sms_INIT_ACCOUNT "$phone" "NOSMS"
@ -28,7 +28,7 @@ fi
if [[ "$mail" != "" ]]; then
echo "$mail" > "$MAILFILE"
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "$MAILFILE" -o "$MAILFILE.node.crypt"
./natools.py encrypt -p $NODE_G1PUBKEY -i "$MAILFILE" -o "$MAILFILE.node.crypt"
echo "" > "$MAILFILE"
log "__SUB:sms_EMAIL.sh.sh: EMAIL $MEMBER ($PHONE) NOUVEAU: $mail... Publishing to IPFS"
ipfs_node_wallets_add

View File

@ -4,8 +4,8 @@
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "X sms_ERROR.sh ($1=phone, $2=message)"
MESS="Commande inconnue $2."

View File

@ -14,11 +14,11 @@
#
# TAG 250 => Imprime un G1Tag rempli de 250 UNIT
# TAG 2 100 => Imprime 100 G1Tag BON de 2 UNIT
# PHONE any ./wallets/IDs
# PHONE any ~/.zen/g1sms_wallets/IDs
# TODO: for multi-channel -> Use HASHLINK + UIDNA + NODE_UIDNA + AMOUNT ...
###########################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "__SUB:sms_G1TAG.sh: START ($1=PHONE, $2=AMOUNT, $3=NUMBER)"
PHONE=$1
@ -73,8 +73,8 @@ fi
##### IS G1DAB NODE?
if [[ ! $PASSENGER && ! $G1DAB ]]; then
if [[ -f ./wallets/$PHONE/ipfsid.G1TAGNODE ]]; then
DABnode=$(cat ./wallets/$PHONE/ipfsid.G1TAGNODE)
if [[ -f ~/.zen/g1sms_wallets/$PHONE/ipfsid.G1TAGNODE ]]; then
DABnode=$(cat ~/.zen/g1sms_wallets/$PHONE/ipfsid.G1TAGNODE)
if [[ "$DABnode" == "$IPFSNODEID" ]]; then
sms_ERROR "$PHONE" "IMPRIMANTE G1Tag sur $DABnode non détectée!! Choisissez un autre G1Dab..."
log "__SUB:sms_G1TAG.sh: IMPRIMANTE G1Tag non détectée!!"
@ -84,19 +84,19 @@ if [[ ! $PASSENGER && ! $G1DAB ]]; then
fi
# TODO: SEARCH PROXIMITY DAB LOCATION (GeoPoint + GPS)...
# for node in ./wallets_swarm/.*/*.where; do
# for node in ~/.zen/g1sms_wallets_swarm/.*/*.where; do
# done
###########################################################
# silkaj NODE CHANGE !!!
#SILKAJNODE=$(./shell/checknodes.sh)
#SILKAJNODE=$(./checknodes.sh)
#log "NEW SILKAJ NODE: $SILKAJNODE"
###########################################
# PAY VIR + PERCENT G1
ML=$(bc -l <<< "scale=2; $VIR + $PERCENT")
PAY=$(./shell/timeout.sh -t 29 ./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$ML" --output="$NODE_G1PUBKEY" --comment="[G1sms+] ACHAT $3 G1Tag(s) - $2 $UNIT" -y)
PAY=$(./timeout.sh -t 29 ./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$ML" --output="$NODE_G1PUBKEY" --comment="[G1sms+] ACHAT $3 G1Tag(s) - $2 $UNIT" -y)
if [[ "$PAY" == "" || "$(echo $PAY | cut -d '|' -f 1)" == "KO" ]]; then
# new=$(./shell/checknodes.sh "BAN")
# new=$(./checknodes.sh "BAN")
sms_ERROR "$PHONE" "Il est survenu un problème lors de votre virement: $PAY / Silkaj: $new";
exit
else
@ -110,12 +110,12 @@ c=0
while [[ $c -lt $NUMBER ]]; do
((c++))
# Nom du G1Tag imprimé du le QRCode RJ
AA=$(./shell/diceware.sh 6 | xargs); # Nom = Diceware de 6 mots
AA=$(./diceware.sh 6 | xargs); # Nom = Diceware de 6 mots
RR=$(echo ${AA} | sed s/\ //g ); # Nom concaténé
PR=$(echo ${AA} | cut -d ' ' -f 1 ); # Prénom du G1Tag
# Create Unique G1tag in all SWARM!
while [[ $(ls ./wallets_swarm/.Qm*/TAG/${RR}) ]]; do
AA=$(./shell/diceware.sh 6 | xargs); RR=$(echo ${AA} | sed s/\ //g ); PR=$(echo ${AA} | cut -d ' ' -f 1 );
while [[ $(ls ~/.zen/g1sms_wallets_swarm/.Qm*/TAG/${RR}) ]]; do
AA=$(./diceware.sh 6 | xargs); RR=$(echo ${AA} | sed s/\ //g ); PR=$(echo ${AA} | cut -d ' ' -f 1 );
done
# Clef de chiffrage PGP imprimée sur le QRCode BJ
BB=$(date +%N | sha256sum | base64 | head -c 32) #YjY4MDc3OTVjNmUxN2JhYWVjYmU3MDcy
@ -129,7 +129,7 @@ TAGID="./TAG/${RR}/TAG_id" #Nom du TAG
TAGCURRENCY="./TAG/${RR}/TAG_currency" # ZEN (0.01 G1)
TAGAMOUNT="./TAG/${RR}/TAG_amount" # Tag amount. It is!
TAGTYPE="./TAG/${RR}/TAG_type" # G1 Tag type
TAGPASSENGER="./TAG/${RR}/TAG_passenger" # Reference to G1Tag owner/counter put in "./wallets/.$IPFSNODEID/TAG/${J}"
TAGPASSENGER="./TAG/${RR}/TAG_passenger" # Reference to G1Tag owner/counter put in "~/.zen/ipfs/.$IPFSNODEID/TAG/${J}"
# ... GESTION DE LA CLEF DE PUBLICATION IPNS ".ipfs/keystore/${RR}" ...
TAGPUBLISH_B_GPG="./TAG/${RR}/TAG_publishkey.B.gpg" # ipns publish key B PGP cyphered
TAGPUBLISH_PHONE_CRYPT="./TAG/${RR}/TAG_publishkey.phone.crypt" # natools.py crypt with creator G1sms Wallet PUBKEY
@ -177,13 +177,13 @@ TAGCHAIN="./TAG/${RR}/TAG_chain" # contains IPFS current ipfs hash
# GIVE PHONE CREATOR G1WALLET ACCESS TO ZEN TAG
# Enregistrement de la clef de publication chiffrée par $PUBKEY la clef publique du portefeuille G1 createur.
./shell/natools.py encrypt -p $PUBKEY -i "/home/$YOU/.ipfs/keystore/${RR}" -o "$TAGPUBLISH_PHONE_CRYPT"
./natools.py encrypt -p $PUBKEY -i "/home/$YOU/.ipfs/keystore/${RR}" -o "$TAGPUBLISH_PHONE_CRYPT"
# GIVE NODE_UIDNA ACCESS TO ZEN TAG
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "/home/$YOU/.ipfs/keystore/${RR}" -o "$TAGPUBLISH_NODE_CRYPT"
./natools.py encrypt -p $NODE_G1PUBKEY -i "/home/$YOU/.ipfs/keystore/${RR}" -o "$TAGPUBLISH_NODE_CRYPT"
# GIVE SWARM ACCESS TO ZEN TAG
./shell/natools.py encrypt -p $SWARM_G1PUBKEY -i "/home/$YOU/.ipfs/keystore/${RR}" -o "$TAGPUBLISH_SWARM_CRYPT"
./natools.py encrypt -p $SWARM_G1PUBKEY -i "/home/$YOU/.ipfs/keystore/${RR}" -o "$TAGPUBLISH_SWARM_CRYPT"
###########################################################
# TAG IPFS STORAGE & G1Tag IPNS PUBLISHING
@ -197,14 +197,14 @@ TAGCHAIN="./TAG/${RR}/TAG_chain" # contains IPFS current ipfs hash
J=$(su $YOU -c "ipfs name publish -k ${RR} --quieter /ipfs/${I}")
echo "${J}" > "$TAGIPNS"
# KEEP G1Tag J MEMORY in NODE ./wallets/.$IPFSNODEID/TAG/ (TODO: OPTIMIZE SWARM SYNC and REPUBLISH)
mkdir -p "./wallets/.$IPFSNODEID/TAG/"
# KEEP G1Tag J MEMORY in NODE ~/.zen/ipfs/.$IPFSNODEID/TAG/ (TODO: OPTIMIZE SWARM SYNC and REPUBLISH)
mkdir -p "~/.zen/ipfs/.$IPFSNODEID/TAG/"
# WRITE PASSENGER to J Link (G1Tag is stick to it: PHONE, NODE, FILE )
# TODO USE SHA256 ID !!!
echo "$PHONE" > "./wallets/.$IPFSNODEID/TAG/${J}"
echo "$PHONE" > "~/.zen/ipfs/.$IPFSNODEID/TAG/${J}"
if [[ $PASSENGER ]]; then
HPASSENGER=$(echo -n $PASSENGER | sha256sum | cut -d ' ' -f 1)
echo "$HPASSENGER" > "./wallets/.$IPFSNODEID/TAG/${J}";
echo "$HPASSENGER" > "~/.zen/ipfs/.$IPFSNODEID/TAG/${J}";
fi
###########################################################
@ -219,15 +219,15 @@ TAGCHAIN="./TAG/${RR}/TAG_chain" # contains IPFS current ipfs hash
log "__SUB:sms_G1TAG.sh: CREATE WRITE QRCODE [] BJ: ${BB} # ipfs ls /ipns/${J}"
# COMPOSE G1TAG PRINT + TAG_READ.png + TAG_WRITE.png
composite -compose Over -resize 133% -gravity West "./TAG/${RR}/TAG_READ.png" "./shell/g1tag.png" "./TAG/${RR}/${RR}.png"
composite -compose Over -resize 133% -gravity West "./TAG/${RR}/TAG_READ.png" "./g1tag.png" "./TAG/${RR}/${RR}.png"
composite -compose Over -gravity SouthEast "./TAG/${RR}/TAG_WRITE.png" "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png"
# ADD Avatar in the Center
# if [[ $(file "./wallets/$PHONE/$PHONE.avatar.png" | grep 'PNG') ]]; then
# composite -compose Over -resize 150% -gravity Center "./wallets/$PHONE/$PHONE.avatar.png" "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png"
# if [[ $(file "~/.zen/g1sms_wallets/$PHONE/$PHONE.avatar.png" | grep 'PNG') ]]; then
# composite -compose Over -resize 150% -gravity Center "~/.zen/g1sms_wallets/$PHONE/$PHONE.avatar.png" "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png"
# else
# composite -compose Over -resize 100% -gravity Center "./shell/G1Anar.png" "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png"
# composite -compose Over -resize 100% -gravity Center "./G1Anar.png" "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png"
# fi
@ -241,23 +241,23 @@ TAGCHAIN="./TAG/${RR}/TAG_chain" # contains IPFS current ipfs hash
# convert "./TAG/${RR}/${RR}.png" -rotate -180 "./TAG/${RR}/${RR}.png"
# QL-700 PRINT PREPARE
if [[ -f "./wallets/$PHONE/ipfsid.G1TAGNODE" ]]; then
destnode=$(cat "./wallets/$PHONE/ipfsid.G1TAGNODE")
if [[ -f "~/.zen/g1sms_wallets/$PHONE/ipfsid.G1TAGNODE" ]]; then
destnode=$(cat "~/.zen/g1sms_wallets/$PHONE/ipfsid.G1TAGNODE")
if [[ "$destnode" == "" || "$destnode" == "$IPFSNODEID" ]]; then
log "__SUB:sms_G1TAG.sh: Local PRINT ${RR} # ipfs ls /ipns/${J}"
brother_ql_create --model QL-700 "./TAG/${RR}/${RR}.png" --label-size 62 > "./TAG/${RR}/${RR}.bin"
brother_ql_print "./TAG/${RR}/${RR}.bin" /dev/usb/lp0
else
# PRINT ON ANOTHER G1Dab. Send files to G1Tag Printer TODO: Could use DESTNODEPUB instead of NODE_G1PUBKEY ?
log "__SUB:sms_G1TAG.sh: Remote PRINT :: ./wallets/.$destnode/PRINT/${RR}.bin "
mkdir -p "./wallets/.$destnode/PRINT/"
log "__SUB:sms_G1TAG.sh: Remote PRINT :: ~/.zen/g1sms_wallets/.$destnode/PRINT/${RR}.bin "
mkdir -p "~/.zen/g1sms_wallets/.$destnode/PRINT/"
# TODO: USE $DEST_G1PUBKEY is better
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "./TAG/${RR}/${RR}.png" -o "./wallets/.$destnode/PRINT/${RR}.bin"
./natools.py encrypt -p $NODE_G1PUBKEY -i "./TAG/${RR}/${RR}.png" -o "~/.zen/g1sms_wallets/.$destnode/PRINT/${RR}.bin"
fi
else
#
log "__SUB:sms_G1TAG.sh: Becoming default PRINTER :: $IPFSNODEID"
echo "$IPFSNODEID" > "./wallets/$PHONE/ipfsid.G1TAGNODE"
echo "$IPFSNODEID" > "~/.zen/g1sms_wallets/$PHONE/ipfsid.G1TAGNODE"
brother_ql_create --model QL-700 "./TAG/${RR}/${RR}.png" --label-size 62 > "./TAG/${RR}/${RR}.bin"
brother_ql_print "./TAG/${RR}/${RR}.bin" /dev/usb/lp0
destnode="$IPFSNODEID"
@ -269,14 +269,14 @@ done
# PRINT $PHONE WALLET PUBKEY
####################################################
if [[ "$destnode" == "" || "$destnode" == "$IPFSNODEID" ]]; then
qrencode -s 5 -o "/tmp/G1PubQR.$PHONE.png" "$(cat ./wallets/$PHONE/$PHONE.pub)"
composite -compose Over -gravity West "/tmp/G1PubQR.$PHONE.png" "./shell/g1tag.png" "/tmp/G1PubQR.$PHONE.png"
qrencode -s 5 -o "/tmp/G1PubQR.$PHONE.png" "$(cat ~/.zen/g1sms_wallets/$PHONE/$PHONE.pub)"
composite -compose Over -gravity West "/tmp/G1PubQR.$PHONE.png" "./g1tag.png" "/tmp/G1PubQR.$PHONE.png"
if [[ $(file "./wallets/$PHONE/$PHONE.avatar.png" | grep 'PNG') ]]; then
composite -compose Over -gravity Center "./wallets/$PHONE/$PHONE.avatar.png" "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png"
if [[ $(file "~/.zen/g1sms_wallets/$PHONE/$PHONE.avatar.png" | grep 'PNG') ]]; then
composite -compose Over -gravity Center "~/.zen/g1sms_wallets/$PHONE/$PHONE.avatar.png" "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png"
fi
if [[ -f ./wallets/$PHONE/$PHONE.uidrib ]]; then
qrencode -s 6 -o "/tmp/G1MemQR.$PHONE.png" "$(cat ./wallets/$PHONE/$PHONE.uidrib)";
if [[ -f ~/.zen/g1sms_wallets/$PHONE/$PHONE.uidrib ]]; then
qrencode -s 6 -o "/tmp/G1MemQR.$PHONE.png" "$(cat ~/.zen/g1sms_wallets/$PHONE/$PHONE.uidrib)";
composite -compose Over -gravity SouthEast "/tmp/G1MemQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png" && rm /tmp/G1MemQR.$PHONE.png
fi

View File

@ -4,8 +4,8 @@
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "${c_yellow}X sms_NEW.sh ($1=phone, $2=uid)$c_"
PHONE="$1"

View File

@ -4,8 +4,8 @@
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "__SUB:sms_PAY.sh: START ($1=PHONE, $2=PHONEDEST, $3=AMOUNT)"
phone="$1"
@ -37,10 +37,10 @@ fi
PHONEDEST="$COUNTRY${PHONEDEST:1:10}"
# CHECK if PHONEDEST have an account in IPFS G1sms+ SWARM
if [[ -f "./wallets_swarm/$PHONEDEST/$PHONEDEST.pub" ]]
if [[ -f "~/.zen/g1sms_wallets_swarm/$PHONEDEST/$PHONEDEST.pub" ]]
then
PUBKEYDEST=$(cat "./wallets_swarm/$PHONEDEST/$PHONEDEST.pub")
UNITDEST=$(cat "./wallets_swarm/$PHONEDEST/$PHONEDEST.unit")
PUBKEYDEST=$(cat "~/.zen/g1sms_wallets_swarm/$PHONEDEST/$PHONEDEST.pub")
UNITDEST=$(cat "~/.zen/g1sms_wallets_swarm/$PHONEDEST/$PHONEDEST.unit")
else
# NO, then create NEW Wallet
sms_INIT_ACCOUNT "$PHONEDEST"
@ -50,7 +50,7 @@ else
fi
# Payement
PAY=$(./shell/timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt="$phone" -password="$pin" --amount="$VIR" --output="$PUBKEYDEST" --comment="[G1sms+] PAY" -y)
PAY=$(./timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt="$phone" -password="$pin" --amount="$VIR" --output="$PUBKEYDEST" --comment="[G1sms+] PAY" -y)
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" || "$PAY" == "" ]]; then
sms_ERROR "$phone" "Problème de payement avec silkaj (changement de serveur $new): $PAY";
log "__SUB:sms_PAY.sh: Problème de payement avec silkaj $new : $PAY"
@ -64,9 +64,9 @@ fi
sleep 2
# + G1SMS Commission
COM=$(./shell/timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt="$phone" -password="$pin" --amount="$PERCENT" --output="$NODE_G1PUBKEY" --comment="[G1sms+] Commission" -y)
COM=$(./timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt="$phone" -password="$pin" --amount="$PERCENT" --output="$NODE_G1PUBKEY" --comment="[G1sms+] Commission" -y)
if [[ "$(echo $COM | cut -d '|' -f 1)" == "KO" || "$PAY" == "" ]]; then
new=$(./shell/checknodes.sh "BAN")
new=$(./checknodes.sh "BAN")
sms_ERROR "$phone" "Problème de payement avec silkaj (changement de serveur $new): $COM";
log "__SUB:sms_PAY.sh: Problème de payement avec silkaj $new : $COM"
exit

View File

@ -3,10 +3,10 @@
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
# RECORD RECURRENT PAYEMENTS WITH "Cesium+ ID" Pubkey TODO cron ./wallets/$PHONE/VIREMENTS, Fusion avec sms_VIR.sh
# RECORD RECURRENT PAYEMENTS WITH "Cesium+ ID" Pubkey TODO cron ~/.zen/g1sms_wallets/$PHONE/VIREMENTS, Fusion avec sms_VIR.sh
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "__SUB:sms_REC.sh: START ($1=PHONE, $2=VIRDEST, $3=AMOUNT, $4=PERIOD, $5=TIME)"
PHONE="$1"
@ -79,20 +79,20 @@ else
log "__SUB:sms_REC.sh: SEARCH $VIRDEST related wallet!!! $DESTRIB "
DESTMEM="$VIRDEST"
# SEARCH IN WALLETS
LOCAL=$(grep -Rwl "$DESTMEM" ./wallets/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
if [[ "$LOCAL" == "" ]]; then LOCAL=$(grep -Rwl "$DESTMEM" ./wallets/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
LOCAL=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
if [[ "$LOCAL" == "" ]]; then LOCAL=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
if [[ "$LOCAL" != "" ]]; then
# LOCAL G1sms account
DESTRIB=$(cat ./wallets/$LOCAL/$LOCAL.pub)
DESTRIB=$(cat ~/.zen/g1sms_wallets/$LOCAL/$LOCAL.pub)
DESTPHONE=$LOCAL
log "__SUB:sms_REC.sh: FOUND LOCAL ($MASTERPHONE) G1sms+ wallet: $DESTRIB ($LOCAL)"
else
# SEARCH IN WALLETS SWARM (MEMBER THEN UIDNA)
INSWARM=$(grep -Rwl "$DESTMEM" ./wallets_swarm/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
if [[ "$INSWARM" == "" ]]; then INSWARM=$(grep -Rwl "$DESTMEM" ./wallets_swarm/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
INSWARM=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets_swarm/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
if [[ "$INSWARM" == "" ]]; then INSWARM=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets_swarm/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
if [[ "$INSWARM" != "" ]]; then
REMOTENODE=$(cat ./wallets_swarm/$INSWARM/MASTERPHONE.sms)
DESTRIB=$(cat ./wallets_swarm/$INSWARM/$INSWARM.pub)
REMOTENODE=$(cat ~/.zen/g1sms_wallets_swarm/$INSWARM/MASTERPHONE.sms)
DESTRIB=$(cat ~/.zen/g1sms_wallets_swarm/$INSWARM/$INSWARM.pub)
DESTPHONE=$INSWARM
log "__SUB:sms_REC.sh: FOUND SWARM ($REMOTENODE) G1sms+ wallet: $DESTRIB ($INSWARM)"
else
@ -106,9 +106,9 @@ fi
# ADD DATES TO VIREMENTS
if [[ "$DESTRIB" != "" ]]; then
log "__SUB:sms_REC.sh: TRAITEMENT DU VIREMENT DE $AMOUNT $UNIT = 1ER VIREMENT de $VIR G1 vers $VIRDEST ($DESTRIB) $TIME FOIS. OK..."
PAY=$(./shell/timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] REC 1/$TIME ($PERIOD)" -y)
PAY=$(./timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] REC 1/$TIME ($PERIOD)" -y)
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" || "$PAY" == "" ]]; then
new=$(./shell/checknodes.sh "BAN")
new=$(./checknodes.sh "BAN")
sms_ERROR "$PHONE" "Problème de payement avec silkaj (changement de serveur $new): $PAY";
log "__SUB:sms_REC.sh: END ~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
exit
@ -116,12 +116,12 @@ if [[ "$DESTRIB" != "" ]]; then
cents=$(echo $(bc -l <<< "scale=0; $VIR * 100") | cut -d '.' -f 1)
move_g1cents "$PHONE" "$DESTRIB" "$cents"
fi
log "__SUB:sms_REC.sh: UPDATE ./wallets/$PHONE/VIREMENTS with FUTURE PAYEMENTS? $PAY"
log "__SUB:sms_REC.sh: UPDATE ~/.zen/g1sms_wallets/$PHONE/VIREMENTS with FUTURE PAYEMENTS? $PAY"
########### MAKE ./wallets/$PHONE/VIREMENTS for NEXT ONES
if [[ -f "./wallets/$PHONE/VIREMENTS.gpg" ]]; then
########### MAKE ~/.zen/g1sms_wallets/$PHONE/VIREMENTS for NEXT ONES
if [[ -f "~/.zen/g1sms_wallets/$PHONE/VIREMENTS.gpg" ]]; then
# DECYPHER FILE FOR CHANGE
echo "${GPGPASS}" | gpg -d -q --output "./wallets/$PHONE/VIREMENTS" --yes --pinentry-mode loopback --passphrase-fd 0 "./wallets/$PHONE/VIREMENTS.gpg"
echo "${GPGPASS}" | gpg -d -q --output "~/.zen/g1sms_wallets/$PHONE/VIREMENTS" --yes --pinentry-mode loopback --passphrase-fd 0 "~/.zen/g1sms_wallets/$PHONE/VIREMENTS.gpg"
fi
# WRITE NEW LINES INTO AN ARRAY FILE: VIREMENTS
boucle=$((TIME - 1))
@ -131,14 +131,14 @@ if [[ "$DESTRIB" != "" ]]; then
$((num ++))
NEXT=$(date --date="$num $NEXTDATE" '+%Y%m%d')
# ADD NEW LINE IN VIREMENTS
echo "$NEXT $MEMBER $PHONE $VIR $DESTRIB $DESTMEM $MEMBER#$TIME#$AMOUNT#$DESTMEM $boucle " >> ./wallets/$PHONE/VIREMENTS
echo "$NEXT $MEMBER $PHONE $VIR $DESTRIB $DESTMEM $MEMBER#$TIME#$AMOUNT#$DESTMEM $boucle " >> ~/.zen/g1sms_wallets/$PHONE/VIREMENTS
done
# CYPHER FILE
echo "${GPGPASS}" | gpg -q --output "./wallets/$PHONE/VIREMENTS.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./wallets/$PHONE/VIREMENTS"
echo "${GPGPASS}" | gpg -q --output "~/.zen/g1sms_wallets/$PHONE/VIREMENTS.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "~/.zen/g1sms_wallets/$PHONE/VIREMENTS"
# EMPTY CLEAR FILE
log "__SUB:sms_REC.sh: $(cat ./wallets/$PHONE/VIREMENTS)"
echo "" > ./wallets/$PHONE/VIREMENTS
log "__SUB:sms_REC.sh: $(cat ~/.zen/g1sms_wallets/$PHONE/VIREMENTS)"
echo "" > ~/.zen/g1sms_wallets/$PHONE/VIREMENTS
###########
log "__SUB:sms_REC.sh: .....................................OK!!!"

View File

@ -4,13 +4,13 @@
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "X sms_SETUNIT.sh ($1=phone, $2=unit)"
phone="$1"
unit="$2"
UNITFILE="./wallets/$phone/$phone.unit"
UNITFILE="~/.zen/g1sms_wallets/$phone/$phone.unit"
# Initialise PHONE, PIN, PUBKEY, UNIT, HIST
sms_INIT_ACCOUNT "$phone" "NOSMS"

View File

@ -4,8 +4,8 @@
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
log "__SUB:sms_VIR.sh: START ($1=phone, $2=AMOUNT, $3=VIRDEST)"
phone="$1"
@ -48,20 +48,20 @@ else
log "__SUB:sms_VIR.sh: SEARCH $VIRDEST related wallet!!! $DESTRIB "
DESTMEM="$VIRDEST"
# SEARCH IN WALLETS
LOCAL=$(grep -Rwl "$DESTMEM" ./wallets/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
if [[ "$LOCAL" == "" ]]; then LOCAL=$(grep -Rwl "$DESTMEM" ./wallets/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
LOCAL=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
if [[ "$LOCAL" == "" ]]; then LOCAL=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
if [[ "$LOCAL" != "" ]]; then
# LOCAL G1sms account
DESTRIB=$(cat ./wallets/$LOCAL/$LOCAL.pub)
DESTRIB=$(cat ~/.zen/g1sms_wallets/$LOCAL/$LOCAL.pub)
DESTPHONE=$LOCAL
log "__SUB:sms_VIR.sh: FOUND LOCAL ($MASTERPHONE) G1sms+ wallet: $DESTRIB ($LOCAL)"
else
# SEARCH IN WALLETS SWARM (MEMBER THEN UIDNA)
INSWARM=$(grep -Rwl "$DESTMEM" ./wallets_swarm/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
if [[ "$INSWARM" == "" ]]; then INSWARM=$(grep -Rwl "$DESTMEM" ./wallets_swarm/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
INSWARM=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets_swarm/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
if [[ "$INSWARM" == "" ]]; then INSWARM=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets_swarm/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
if [[ "$INSWARM" != "" ]]; then
REMOTENODE=$(cat ./wallets_swarm/$INSWARM/MASTERPHONE.sms)
DESTRIB=$(cat ./wallets_swarm/$INSWARM/$INSWARM.pub)
REMOTENODE=$(cat ~/.zen/g1sms_wallets_swarm/$INSWARM/MASTERPHONE.sms)
DESTRIB=$(cat ~/.zen/g1sms_wallets_swarm/$INSWARM/$INSWARM.pub)
DESTPHONE=$INSWARM
log "__SUB:sms_VIR.sh: FOUND SWARM ($REMOTENODE) G1sms+ wallet: $DESTRIB ($INSWARM)"
else
@ -73,7 +73,7 @@ else
fi
if [[ "$DESTRIB" != "" ]]; then
PAY=$(./shell/timeout.sh -t 30 ./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] VIR $VIR G1" -y)
PAY=$(./timeout.sh -t 30 ./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] VIR $VIR G1" -y)
if [[ "$(echo $PAY | cut -d '|' -f 1)" != "KO" && "$PAY" != "" ]]; then
log "__SUB:sms_VIR.sh: VIREMENT VERS $DESTMEM OK"
mess="[G1sms+] $MEMBER
@ -90,7 +90,7 @@ $PAY"
cents=$(echo $(bc -l <<< "scale=0; $VIR * 100") | cut -d '.' -f 1)
move_g1cents "$PHONE" "$DESTRIB" "$cents"
else
new=$(./shell/checknodes.sh "BAN")
new=$(./checknodes.sh "BAN")
sms_SEND "$ADMINPHONE" "ADMIN! Problème de payement avec silkaj (changement de serveur $new): $PAY";
fi
else

View File

@ -4,9 +4,9 @@
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
# is there ADMINPSEUDO-UIDNATAIL in ./wallets_swarm/.*/*.uidna ?"
source ./shell/init.sh
source ./shell/functions.sh
# is there ADMINPSEUDO-UIDNATAIL in ~/.zen/g1sms_wallets_swarm/.*/*.uidna ?"
source ./init.sh
source ./functions.sh
log "__SUB:sms_WHERE.sh: START ($1=PHONE $2=askeduidna)"
phone="$1"
@ -21,19 +21,19 @@ Envoyez N pour créer votre portefeuille G1sms"
fi
if [[ "$askeduidna" == "" ]]; then #SELF
if [[ -f "./wallets/.$IPFSNODEID/$IPFSNODEID.uidna" ]]; then
nodeuidnafile="./wallets/.$IPFSNODEID/$IPFSNODEID.uidna"
if [[ -f "~/.zen/ipfs/.$IPFSNODEID/$IPFSNODEID.uidna" ]]; then
nodeuidnafile="~/.zen/ipfs/.$IPFSNODEID/$IPFSNODEID.uidna"
uidna=$(cat $nodeuidnafile)
fi
else
nodeuidnafile=$(grep -Rwl "$askeduidna" ./wallets_swarm/.*/*.uidna)
nodeuidnafile=$(grep -Rwl "$askeduidna" ~/.zen/g1sms_wallets_swarm/.*/*.uidna)
uidna=$(cat $nodeuidnafile)
fi
if [[ -f $nodeuidnafile && "$uidna" != "" ]]; then
ipfsnodeid=$(echo $nodeuidnafile | cut -d '/' -f 3 | cut -d '.' -f 2 )
echo $uidna > ./wallets/$PHONE/uidna.G1TAGNODE
echo $ipfsnodeid > ./wallets/$PHONE/ipfsid.G1TAGNODE
echo $uidna > ~/.zen/g1sms_wallets/$PHONE/uidna.G1TAGNODE
echo $ipfsnodeid > ~/.zen/g1sms_wallets/$PHONE/ipfsid.G1TAGNODE
log "__SUB:sms_WHERE.sh: Distributeur de G1Tag $uidna : $ipfsnodeid "
I=$(ipfs_node_wallets_add)
log_history $PHONE "G1TagNode, $uidna, $ipfsnodeid"
@ -47,7 +47,7 @@ fi
mess="[G1sms+] $MEMBER
Votre distributeur de G1Tag par défaut est
$uidna ($ipfsnodeid), situé:
$(cat ./wallets_swarm/.$ipfsnodeid/$ipfsnodeid.where)"
$(cat ~/.zen/g1sms_wallets_swarm/.$ipfsnodeid/$ipfsnodeid.where)"
sms_SEND "$PHONE" "$mess"

217
g1sms/sms_received.sh Normal file
View File

@ -0,0 +1,217 @@
#!/bin/bash
################################################################################
# SWARM de développement G1sms+.
# PUBKEY G1 DU SWARMMASTER: 8qs69HriAdytcCLzvQGJ15XBwpjAVFx8JoVM2ahue1y7
# ipfs ls /ipns/QmZHTne3bjtMgaXWRqSbdKchJbgq2NaAeVSzFUN7ceYpif
#
# G1sms+ est totalement décentralisé! Il peut être fait de multiples SWARM de Services dont les codes évoluent de façon décentralisé.
# Puis se mettent à jour autour des $ADMINPHONE par consensus d'utilisateurs ;)
#
# Log => tail -f /tmp/g1sms.log -n 200
# gammu => tail -f /tmp/smsd.log -n 200
#
# 2 commands needed to make the ramdisk if planning to run from ramdisk to gain some speed
# sudo mkdir /mnt/ramdisk
# sudo mount -t tmpfs -o size=50m tmpfs /mnt/ramdisk
#
# Utiliser la commande ./search fournie pour fouiller dans le code, mais tout est ordonnancé d'ici, donc vous êtes au bon endroit pour commencer à farfouiller.
###############################################################################
# EN FAISANT PARTIE DU SWARM G1sms+ VOUS VOUS ENGAGEZ A ASSURER LA SECURITE
# PHYSIQUE ET INFORMATIQUE DE VOTRE NOEUD ET NE PAS INTRODUIRE DE CODE MALVEILLANT
# DANS LE GROUPE SI VOUS ETES AMENES A EN PROPOSER UNE MISE A JOUR.
# UNE COMMISSION EST PERCU SUR CERTAINS TRANSFERTS.
# ELLE EST PROVISION EN CAS DE FRAUDE ET SA REATRIBUTION POURRA EVOLUER...
#
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: GPL (http://www.google.com/search?q=GPL)
################################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
# Execute Kalkun daemon
[[ -f /var/www/kalkun/scripts/daemon.sh ]] && /var/www/kalkun/scripts/daemon.sh
export YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
cd $MY_PATH
source $MY_PATH/shell/init.sh
source $MY_PATH/shell/functions.sh
##################################################################
# Get global variables from gammu-smsd
PHONE="$SMS_1_NUMBER"
TEXT="$SMS_1_TEXT"
# Extract Received Command (PUBLISH OFFICIALS in file sms_AIDE.sh)
CMD=$(echo "$TEXT" | awk '{print toupper($1)}')
log "##########################################################################################"
log "#############################################"
log "#############################################"
log "$(date)"
log "SMS received $PHONE $TEXT"
log "#############################################"
log "NODE: ALL WALLETS: ipfs ls /ipns/$IPFSNODEID"
log "NODE: G1wallet: cat ~/.zen/ipfs/.$IPFSNODEID/NODE.pub"
log "#############################################"
##################################################################
# BASIC SECURITY & ANTI SPAM
##################################################################
security
##################################################################
# Refresh All peers SWARM Wallets.
##################################################################
ipfs_swarm_wallets_refresh
##################################################################
# Check if PHONE is already registred in G1sms+ SWARM
##################################################################
if [[ ! -f "~/.zen/g1sms_wallets/$PHONE/MASTERPHONE.sms" && "$CMD" != "ADMIN" ]]
then
NODEPHONE=$(cat "~/.zen/g1sms_wallets_swarm/$PHONE/MASTERPHONE.sms")
if [[ "$NODEPHONE" != "$MASTERPHONE" && "$NODEPHONE" != "" ]]; then
sms_SEND "$PHONE" "[G1sms+] Vous avez déjà un compte portefeuille sur $NODEPHONE (Envoyez lui RAZ si vous voulez fermer votre compte)"
log "ALERT!! $PHONE compte existant sur le NODE G1sms+ ($NODEPHONE)"
exit
fi
else
# Refresh MasterPhone (usefull in case of MASTERPHONE SIM number change)
echo "$MASTERPHONE" > "~/.zen/g1sms_wallets/$PHONE/MASTERPHONE.sms"
fi
##################################################################
# Handle commands CMD
##################################################################
case "$CMD" in
DESTROY|RAZ)
# SEND DESTROY Member or DESTROY DON to empty you PHONE wallet and remove it
MEMBERUID=$(echo "$TEXT" | awk '{print $2}' | grep -E "([A-Za-z0-9\-\_]+$)")
./sms_DESTROY.sh "$PHONE" "$MEMBERUID"&
;;
A|AIDE)
./sms_AIDE.sh "$PHONE" &
;;
N|D)
# SEND DESTROY Member or DESTROY DON to empty you PHONE wallet and remove it
MEMBERUID=$(echo "$TEXT" | awk '{print $2}' | grep -E "([A-Za-z0-9\-\_]+$)")
./sms_NEW.sh "$PHONE" "$MEMBERUID" &
;;
P|PAY)
DEST=$(echo "$TEXT" | awk '{print $2}' | grep -E "^\-?[0-9]+$")
MONEY=$(echo "$TEXT" | awk '{print $3}' | grep -E "^\-?[0-9]+$")
if [[ ${#DEST} == 10 && "$DEST" != "" && "$MONEY" != "" ]]; then
./sms_PAY.sh "$PHONE" "$DEST" "$MONEY" &
else
./sms_ERROR.sh "$PHONE" "ex:: P 0612345678 100 = Envoyer 100 $UNIT au portefeuille G1sms+ +33612345678" &
fi
;;
VIR)
montant=$(echo "$TEXT" | awk '{print $2}' | grep -E "^\-?[0-9]+$")
membre=$(echo "$TEXT" | awk '{print $3}' | grep -E "([A-Za-z0-9\-\_]+$)")
if [[ "$montant" != "" && "$membre" != "" ]]; then
./sms_VIR.sh "$PHONE" "$montant" "$membre" &
else
./sms_ERROR.sh "$PHONE" "ex:: VIR 100 mot5678 = Envoyer 100 $UNIT au portefeuille G1sms+ 'mot5678' (On peut aussi utiliser le pseudo d'un Membre)" &
fi
;;
REC)
# ex: "REC 2000 John J 12" (Virer 2000 UNIT au G1sms+ wallet de John pour les 12 prochains jours)
AMOUNT=$(echo "$TEXT" | awk '{print $2}' | grep -E "^\-?[0-9]+$")
VIRDEST=$(echo "$TEXT" | awk '{print $3}' | grep -E "([A-Za-z0-9\-\_]+$)")
PERIOD=$(echo "$TEXT" | awk '{print toupper($4)}' | grep -E "([A-Za-z0-9\-\_]+$)")
TIME=$(echo "$TEXT" | awk '{print $5}' | grep -E "^\-?[0-9]+$")
if [[ "$VIRDEST" != "" && "$AMOUNT" != "" && "$PERIOD" != "" && "$TIME" != "" ]]; then
./sms_REC.sh "$PHONE" "$VIRDEST" "$AMOUNT" "$PERIOD" "$TIME" &
else
./sms_ERROR.sh "$PHONE" "ex:: REC 20 Fred M 12 => Virer 20 $UNIT au portefeuille G1sms+ de Fred pendant 12 Mois (Choisir la période: J,S,M,A)." &
fi
;;
C|S|SOLDE)
./sms_COUNT.sh "$PHONE" &
;;
EMAIL)
# RECUPERE EMAIL ASSOCIE AU G1SMS WALLET
MAIL=$(echo "$TEXT" | awk '{print tolower($2)}' | grep -E "[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}")
if [[ "$MAIL" != "" ]]; then
./sms_EMAIL.sh "$PHONE" "$MAIL" &
else
./sms_ERROR.sh "$PHONE" "$TEXT votre adresse est incorrecte..." &
fi
;;
BILL)
# PREMIERS G1billets (à gratter)... COLLECTOR ;) ONLY FOR A4 PRINTER !!
VAL=$(echo "$TEXT" | awk '{print $2}' | grep -E "^\-?[0-9]+$")
if [[ "$VAL" != "" ]]; then
./sms_BILLET.sh "$PHONE" "$VAL" &
else
./sms_ERROR.sh "$PHONE" "ex:: BILL 20 => Créer et imprimer 6 G1Billets de '20 LOVE' sur une feuille A4 (cout 120 $UNIT + $BILLCOM )" &
fi
;;
CHK)
W1=$(echo "$TEXT" | awk '{print tolower($2)}' | grep -E "^[a-z0-9]+$")
W2=$(echo "$TEXT" | awk '{print tolower($3)}' | grep -E "^[a-z0-9]+$")
W3=$(echo "$TEXT" | awk '{print tolower($4)}' | grep -E "^[a-z0-9]+$")
W4=$(echo "$TEXT" | awk '{print tolower($5)}' | grep -E "^[a-z0-9]+$")
W5=$(echo "$TEXT" | awk '{print tolower($6)}' | grep -E "^[a-z0-9]+$")
W6=$(echo "$TEXT" | awk '{print tolower($7)}' | grep -E "^[a-z0-9]+$")
W7=$(echo "$TEXT" | awk '{print tolower($8)}' | grep -E "^[a-z0-9]+$")
if [[ "$W1" != "" && "$W2" != "" ]]; then
./sms_BILLETCHK.sh "$PHONE" "$W1" "$W2" "$W3" "$W4" "$W5" "$W6" "$W7" &
else
./sms_ERROR.sh "$PHONE" "Mauvais Format. Le code doit comporter 2 mots minimum pour vérifier la valeur du billet, + code secret pour l'encaisser..." &
fi
;;
TAG)
# NOUVEAU TAG (pubkey, BI) pour terminaux DAB et TX sur IPFS.
# ex: TAG 200 (Create & Print One 200 "PubKey / BI" Qrcode Notes)
VAL=$(echo "$TEXT" | awk '{print $2}' | grep -E "^\-?[0-9]+$")
NUM=$(echo "$TEXT" | awk '{print $3}' | grep -E "^\-?[0-9]+$")
if [[ "$VAL" != "" ]]; then
./sms_G1TAG.sh "$PHONE" "$VAL" "$NUM" &
else
./sms_ERROR.sh "$PHONE" "ex:: TAG 2 12 => Créer 12 G1Tag de 2 G1" &
fi
;;
U|UNIT)
# Choisir son UNIT préférée (G1, DU, LOVE)
UNIT=$(echo "$TEXT" | awk '{print toupper($2)}'| grep -E "^[A-Za-z0-9]+$")
./sms_SETUNIT.sh "$PHONE" "$UNIT" &
;;
OU)
# CHOISIR SON DISTRIBUTEUR DE G1Tag
NODEUIDNA=$(echo "$TEXT" | awk '{print $2}'| grep -E "([A-Za-z0-9\-\_]+$)")
./sms_WHERE.sh "$PHONE" "$NODEUIDNA" &
;;
ABO)
# GERER SES ABONNEMENT CANAUX INFO SMS
SERVICE=$(echo "$TEXT" | awk '{print toupper($2)}'| grep -E "([A-Za-z0-9\-\_]+$)")
./sms_ABO.sh "$PHONE" "$SERVICE" &
;;
DELIVERED|PENDING|FAILED)
# If delivered/pending notification come back (gammu/phone config)
exit
;;
ADMIN)
# If Phone is ADMIN
if [[ "$PHONE" == "$ADMINPHONE" ]]; then
CMD=$(echo "$TEXT" | awk '{print toupper($2)}')
PARAM=$(echo "$TEXT" | awk '{print substr($0,index($0,$3))}')
./sms_ADMIN.sh "$CMD" "$PARAM" &
fi
;;
*)
#./sms_ERROR.sh "$PHONE" "$TEXT" &
log "SMS forward to $ADMINPHONE"
sms_SEND "$ADMINPHONE" "ADMIN! BAD SMS FROM $PHONE
$TEXT"
;;
esac
# MONITORING: SEND INCOMING MESSAGE COPY TO ADMINPHONE
if [[ "$PHONE" != "$ADMINPHONE" && "$CPERROR" == "YES" ]]; then sms_SEND "$ADMINPHONE" "ADMIN! MONITOR: $PHONE : $TEXT"; fi
echo $PUBKEY
exit

View File

@ -42,7 +42,7 @@
# }
#
#############################################################################################################
# ./shell/tag_LOAD_passenger.sh G1TagIPNS FileID MusicFile MASTERKEY
# ./tag_LOAD_passenger.sh G1TagIPNS FileID MusicFile MASTERKEY
JSOURCE=$1
TUBEID=$2
MUSICFILE=$3
@ -58,7 +58,7 @@ if [[ ! -f "$KEYFILE" || ! -f "$MUSICFILE" || ! -f "./g1sms.pub.key" ]]; then "D
############## INIT & root check
NANODATE=$(date -u +%s%N)
echo "__SUB:tag_LOAD_passenger.sh: LOAD \"$MUSICFILE\" into REC G1Tag $JSOURCE indexed by $TUBEID (using $KEYFILE)... $NANODATE"
if [[ "$USER" != "root" ]]; then echo "__SUB:tag_LOAD_passenger.sh: Hey, $USER you must be root. 'sudo ./shell/tag_LOAD_passenger.sh ...' ?"; exit; fi
if [[ "$USER" != "root" ]]; then echo "__SUB:tag_LOAD_passenger.sh: Hey, $USER you must be root. 'sudo ./tag_LOAD_passenger.sh ...' ?"; exit; fi
#############################################
############## CHECK ipfs daemon user
@ -100,7 +100,7 @@ fi
#############################################
############## EXTRACT $JSOURCERR PUBLISH KEY
if [[ -f "$KEYFILE" ]]; then
./shell/natools.py decrypt -k "$KEYFILE" -i "$JSOURCEPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JSOURCERR"
./natools.py decrypt -k "$KEYFILE" -i "$JSOURCEPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JSOURCERR"
else
echo "__SUB:tag_LOAD_passenger.sh: KO. La clef $KEYFILE fournie pour ce G1Tag $JSOURCERR est inexistante. Procurez-vous un portefeuille monnaie libre sur https://g1sms.fr"
exit
@ -126,7 +126,7 @@ if [[ ! $IFILE ]]; then exit; fi
echo "$IFILE" > $TAGPASSENGER
# ONLY SWARM KEY CAN DECRYPT IPFS LINK TO FILE (TODO: Glue better)
NODE_G1PUBKEY=$(cat "./g1sms.pub.key")
./shell/natools.py encrypt -p "$NODE_G1PUBKEY" -i "$TAGPASSENGER" -o "$TAGPASSENGERCRYPT"
./natools.py encrypt -p "$NODE_G1PUBKEY" -i "$TAGPASSENGER" -o "$TAGPASSENGERCRYPT"
echo "LOADED" > $TAGPASSENGER
echo "$DEB" > $TAGPASSENGERDEBIT
@ -143,17 +143,17 @@ J=$(su $YOU -c "ipfs name publish -k ${JSOURCERR} --quieter /ipfs/${I}")
# TODO rm "/home/$YOU/.ipfs/keystore/$JSOURCERR"
# WRITE FILE REC INDEX IN NODE G1TAG REF.
mkdir -p ./wallets/.$IPFSNODEID/TAG/
echo "$TUBEID" > "./wallets/.$IPFSNODEID/TAG/${J}.youtubeid"
mkdir -p ~/.zen/ipfs/.$IPFSNODEID/TAG/
echo "$TUBEID" > "~/.zen/ipfs/.$IPFSNODEID/TAG/${J}.youtubeid"
##########################
# REFRESH SWARM
##########################
IWALLETS=$(su $YOU -c "ipfs add -rHq './wallets' | tail -n 1")
IWALLETS=$(su $YOU -c "ipfs add -rHq '~/.zen/g1sms_wallets' | tail -n 1")
# CHAIN STATE FOR $IPFSNODEID
echo $IWALLETS > ./wallets/.$IPFSNODEID.wallets.chain
echo "__SUB:tag_LOAD_passenger.sh: NEW './wallets' HASH ipfs ls $IWALLETS"
echo $IWALLETS > ~/.zen/ipfs/.$IPFSNODEID.wallets.chain
echo "__SUB:tag_LOAD_passenger.sh: NEW '~/.zen/g1sms_wallets' HASH ipfs ls $IWALLETS"
# PUBLISH IPNS NODE WALLETS
NODEWALLETS=$(su $YOU -c "ipfs name publish --quieter /ipfs/$IWALLETS")

View File

@ -67,7 +67,7 @@ if [[ $FINALSOURCE -lt 0 ]]; then echo "__SUB:tag_OP.sh: KO. La valeur de ce G1T
#############################################
############## EXTRACT $JSOURCERR PUBLISH KEY
if [[ -f $KEYFILE && ! -f "/home/$YOU/.ipfs/keystore/$JSOURCERR" ]]; then
./shell/natools.py decrypt -k "$KEYFILE" -i "$JSOURCEPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JSOURCERR"
./natools.py decrypt -k "$KEYFILE" -i "$JSOURCEPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JSOURCERR"
else
if [[ ! -f $KEYFILE ]]; then
echo "__SUB:tag_OP.sh: KO. La clef de dévérouillage pour $JSOURCERR est inexistante. Contact: https://g1sms.fr"
@ -88,7 +88,7 @@ FINALDEST=$(echo "${JDESTVALUE} + ${VALUE}" | bc -l)
# EXTRACT $JSOURCERR PUBLISH KEY to "/home/$YOU/.ipfs/keystore/JSOURCE"
# EXTRACT PUBLISH KEY
if [[ -f $KEYFILE && ! -f "/home/$YOU/.ipfs/keystore/$JDESTRR" ]]; then
./shell/natools.py decrypt -k "$KEYFILE" -i "$JDESTPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JDESTRR"
./natools.py decrypt -k "$KEYFILE" -i "$JDESTPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JDESTRR"
else
if [[ ! -f $KEYFILE ]]; then
echo "__SUB:tag_OP.sh: KO. La clef de dévérouillage pour $JDESTRR est inexistante. Contact: https://g1sms.fr"

View File

@ -6,7 +6,7 @@
###########################################################################################
# Find and PLAY (cat) passenger File OF G1Tag / REC TAG
# sudo pip3 install duniterpy
# READERID is PHONE or IPFSNODEID (G1 ./wallets/* )
# READERID is PHONE or IPFSNODEID (G1 ~/.zen/g1sms_wallets/* )
# JSOURCE is G1Tag IPNS link with PASSENGER
###########################################################################################
READERID=$1
@ -16,10 +16,10 @@ NODE_G1PUBKEY=$(cat "./g1sms.pub.key")
if [[ ! $READERID || ! $JSOURCE || ! -f "$KEYFILE" || ! $NODE_G1PUBKEY ]]; then "Something is wrong! Do you know what you are doing?"; exit; fi
NODEG1TAG=$(cat "./wallets_swarm/.$READERID/TAG/$READERID") # Contains IPNS link to Node G1Tag
NODEG1TAG=$(cat "~/.zen/g1sms_wallets_swarm/.$READERID/TAG/$READERID") # Contains IPNS link to Node G1Tag
if [[ ! $NODEG1TAG ]]; then
# INIT NODE G1TAG WITH 1000 zen
echo "__SUB:tag_PLAY_passenger.sh: $READERID ne possède pas de G1Tag sudo ./shell/sms_G1TAG.sh \"$READERID\" \"10\" \"1\" \"NODE\" \"$READERID\" "
echo "__SUB:tag_PLAY_passenger.sh: $READERID ne possède pas de G1Tag sudo ./sms_G1TAG.sh \"$READERID\" \"10\" \"1\" \"NODE\" \"$READERID\" "
exit
fi
@ -50,14 +50,14 @@ CRED=$(cat "./TAG/${JSOURCERR}/TAG_passenger_credit")
##############################################
# MAKE TRANSACTIONS
NODEZEN=$(cat "./wallets/$READERID/$READERID.g1cents")
uidna=$(cat "./wallets/$READERID/$READERID.uidna")
NODEZEN=$(cat "~/.zen/g1sms_wallets/$READERID/$READERID.g1cents")
uidna=$(cat "~/.zen/g1sms_wallets/$READERID/$READERID.uidna")
if [[ $ZEN -gt $CRED ]]; then
REZ=$((TAGZEN + CRED))
#echo "$REZ" > "./TAG/${JSOURCERR}/TAG_amount"
# TODO READER NEEDS ITS G1TAG
#./shell/tag_OP.sh "$READERIDTAG" "J2TAG" "$CRED" $KEYFILE
#./tag_OP.sh "$READERIDTAG" "J2TAG" "$CRED" $KEYFILE
else
echo "Désolé ;( $READERID vous manquez de ZEN ($ZEN) pour vous payer la lecture de $JSOURCE ($CRED)"
echo "Rechargez avec un VIREMENT vers $uidna"

View File

@ -6,17 +6,17 @@
###########################################################################################
###########################################################################################
echo "__SUB:tag_READ.sh: QRCODE READER : START"
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
# DOUCHETTE ES TU LA?
if [ ! $G1TX ]; then ./shell/parle.sh "Branchez votre lecteur de QR code!"; exit; fi
if [ ! $G1TX ]; then ./parle.sh "Branchez votre lecteur de QR code!"; exit; fi
# TABLEAU MEMOIRE DE SCAN
declare -a act
declare -a obj
declare -a val
./shell/parle.sh "Lecteur de G1 Tag. OK. Prêt"
./parle.sh "Lecteur de G1 Tag. OK. Prêt"
cat /dev/ttyACM0 | while read line; do
lon=${#line}
@ -26,14 +26,14 @@ cat /dev/ttyACM0 | while read line; do
case $pref in
RJ)
./shell/parle.sh "R J"
./parle.sh "R J"
R=$(echo $qrvalue | cut -d '#' -f 1)
J=$(echo $qrvalue | cut -d '#' -f 2)
log "__SUB:tag_READ.sh: Lecture G1Tag $R $J"
#
ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id");
if [[ "$ID" == "" ]]; then
./shell/parle.sh "G1 Tag déjà capturé, veuillez le détruire!";
./parle.sh "G1 Tag déjà capturé, veuillez le détruire!";
sms_SEND "$ADMINPHONE" "ADMIN! FRAUDE G1Tag RJ $R $J"
# TODO: ENQUETER auprès du CREATEUR de ce G1 Tag !!
continue
@ -45,11 +45,11 @@ cat /dev/ttyACM0 | while read line; do
if [[ "$CURRENCY" == "zen" ]]; then CUR="zène"; else CUR=$CURRENCY; fi # Correction du défaut de prononciation.
PASSENGER=$(su $YOU -c "ipfs cat /ipns/$J/TAG_passenger");
if [[ "$PASSENGER" != "" ]]; then
./shell/parle.sh "Rec Tag Machine $PASSENGER! Valeur $RVALUE $CUR";
./parle.sh "Rec Tag Machine $PASSENGER! Valeur $RVALUE $CUR";
else
G1VAL=$(bc -l <<< "scale=2; $RVALUE / 100" | cut -d '.' -f 1)
log "__SUB:tag_READ.sh: G1Tag $FID. Valeur $RVALUE $CURRENCY = $G1VAL G1"
./shell/parle.sh "G1 Tag $FID. Valeur $RVALUE $CUR convertible en $G1VAL June"
./parle.sh "G1 Tag $FID. Valeur $RVALUE $CUR convertible en $G1VAL June"
fi
cmd="RJ"
CASHBACK=""
@ -57,7 +57,7 @@ cat /dev/ttyACM0 | while read line; do
;;
BJ)
./shell/parle.sh "B J"
./parle.sh "B J"
BB=$(echo $qrvalue | cut -d '#' -f 1)
J=$(echo $qrvalue | cut -d '#' -f 2)
log "__SUB:tag_READ.sh: Ouverture G1Tag $BB $J"
@ -65,7 +65,7 @@ cat /dev/ttyACM0 | while read line; do
ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id");
FID=$(echo $ID | awk '{print toupper($1)}')
if [[ "$ID" == "" ]]; then
./shell/parle.sh "G1 Tag inconnu! veuillez le détruire!";
./parle.sh "G1 Tag inconnu! veuillez le détruire!";
# sms_SEND "$ADMINPHONE" "ADMIN! FRAUDE G1Tag BJ $B $J"
# TODO: ENQUETER auprès du CREATEUR de ce G1 Tag !!
continue
@ -84,20 +84,20 @@ cat /dev/ttyACM0 | while read line; do
# CHECK IF OK
gpg -d --output /tmp/ipns.key --pinentry-mode=loopback --passphrase $BB /tmp/TAG_publishkey.B.gpg
if [[ ! -f /tmp/ipns.key ]]; then
./shell/parle.sh "Erreur. Problème de déchiffrage PGP ${FID}! Vérifiez vos logs";
./parle.sh "Erreur. Problème de déchiffrage PGP ${FID}! Vérifiez vos logs";
log "__SUB:tag_READ.sh: ERROR! gpg -d --output /tmp/ipns.key --pinentry-mode=loopback --passphrase $BB /tmp/TAG_publishkey.B.gpg"
continue
fi
mv /tmp/ipns.key /home/$YOU/.ipfs/keystore/$RR
log "__SUB:tag_READ.sh: Récupération de la clef de publication $RR"
./shell/parle.sh "Récupération clef de publication du G1 Tag ${FID}"
./parle.sh "Récupération clef de publication du G1 Tag ${FID}"
fi
if [[ "$PASSENGER" != "" ]]; then
log "__SUB:tag_READ.sh: !!!! REC Tag = $BVALUE $CURRENCY"
./shell/parle.sh "Rec Tag Machine! Valeur $BVALUE $CUR";
./parle.sh "Rec Tag Machine! Valeur $BVALUE $CUR";
else
log "__SUB:tag_READ.sh: Ce G1 Tag contient $BVALUE $CURRENCY"
./shell/parle.sh "Ce G1 Tag contient $BVALUE $CUR"
./parle.sh "Ce G1 Tag contient $BVALUE $CUR"
fi
cmd="BJ"
val+=("$BVALUE")
@ -105,34 +105,34 @@ cat /dev/ttyACM0 | while read line; do
*)
if [[ $lon -eq 44 ]]; then
./shell/parle.sh "Portefeuille G1?"
./parle.sh "Portefeuille G1?"
J=$qrvalue
if [[ "$J" != "${obj[0]}" ]]; then
VALUE=$(./shell/timeout.sh -t 15 ./silkaj/silkaj amount $J)
VALUE=$(./timeout.sh -t 15 ./silkaj/silkaj amount $J)
if [[ "$(echo $VALUE | cut -d ':' -f 1)" != "Error" && "$VALUE" != "" ]]; then
log "__SUB:tag_READ.sh: Ce compte monnaie libre contient $VALUE G1"
./shell/parle.sh "Ce compte monnaie libre contient $VALUE G1"
./parle.sh "Ce compte monnaie libre contient $VALUE G1"
CASHBACK="$J"
cmd="G1"
val+=("$VALUE")
else
log "__SUB:tag_READ.sh: ERREUR QR code illisible. longueur $J = ${#J}"
if [[ "$VALUE" == "" ]]; then
DUNITER=$(./shell/checknodes.sh 'BAN')
DUNITER=$(./checknodes.sh 'BAN')
echo "TIMEOUT. CHANGE SILKAJ SERVER: $DUNITER"
./shell/parle.sh "Temps dépassé. Changement de serveur $DUNITER"
./parle.sh "Temps dépassé. Changement de serveur $DUNITER"
CASHBACK=""
else
./shell/parle.sh "QR code inconnu."
./parle.sh "QR code inconnu."
CASHBACK=""
fi
fi
else
./shell/parle.sh "Ce compte monnaie libre contient ${val[0]} G1"
./parle.sh "Ce compte monnaie libre contient ${val[0]} G1"
fi
else
./shell/parle.sh "QR code de type inconnu"
./parle.sh "QR code de type inconnu"
fi
;;
@ -142,16 +142,16 @@ cat /dev/ttyACM0 | while read line; do
###############################################################
# APRES G1 CASHBACK : G1 Tag BJ WRITE => ENCAISSEMENT
if [[ "${cmd}" == "BJ" && "$CASHBACK" != "" && -f /home/$YOU/.ipfs/keystore/${RR} ]]; then
./shell/parle.sh "Encaissement du G1 Tag"
./parle.sh "Encaissement du G1 Tag"
log "__SUB:tag_READ.sh: G1 tag de $BVALUE G1 ! /ipns/$J Virement vers $CASHBACK? "
./shell/parle.sh "vers portefeuille G1"
./parle.sh "vers portefeuille G1"
# ipfs get G1Tag vers ./TAG/${RR}
mkdir -p ./TAG/${RR}; rm -f ./TAG/${RR}/*; chown -R $YOU ./TAG/${RR}/
log "__SUB:tag_READ.sh: ipfs get --output=./TAG/${RR} /ipns/$J"
su $YOU -c "ipfs get --output=./TAG/${RR} /ipns/$J"
if [[ $(cat ./TAG/${RR}/TAG_passenger) != "" ]]; then ./shell/parle.sh "Impossible à encaisser. REC Tag ${FID}. $(cat ./TAG/${RR}/TAG_passenger) de Valeur $BVALUE "; continue; fi
if [[ $(cat ./TAG/${RR}/TAG_passenger) != "" ]]; then ./parle.sh "Impossible à encaisser. REC Tag ${FID}. $(cat ./TAG/${RR}/TAG_passenger) de Valeur $BVALUE "; continue; fi
# Make Silkaj TX
G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1)
@ -160,12 +160,12 @@ cat /dev/ttyACM0 | while read line; do
log "__SUB:tag_READ.sh: Silkaj output = $PAY"
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" ]]; then
new=$(./shell/checknodes.sh "BAN")
new=$(./checknodes.sh "BAN")
sms_ERROR "$ADMINPHONE" "Il est survenu un problème avec un virement. Retour silkaj: $PAY ... $new";
./shell/parle.sh "Erreur de virement. Changement de serveur Duniter. Veuillez recommencer"
./parle.sh "Erreur de virement. Changement de serveur Duniter. Veuillez recommencer"
else
# ENCAISSEMENT G1Tag
./shell/parle.sh "Transfert du Tag ${FID} de $G1VAL G1 vers portefeuille OK"
./parle.sh "Transfert du Tag ${FID} de $G1VAL G1 vers portefeuille OK"
# CAPTURE / DESTRUCTION du G1 Tag
echo "0" > "./TAG/${RR}/TAG_amount"
echo "${J}" > "./TAG/${RR}/TAG_ipns"
@ -191,7 +191,7 @@ cat /dev/ttyACM0 | while read line; do
J=$(su $YOU -c "ipfs name publish -k ${RR} --quieter /ipfs/${I}")
log "__SUB:tag_READ.sh: Destruction de ce G1 Tag publish -k ${RR} --quieter /ipfs/${I} :: ipfs ls /ipns/$J"
./shell/parle.sh "${FID} G1 Tag vide. Merci de détruire ce G1 Tag!"
./parle.sh "${FID} G1 Tag vide. Merci de détruire ce G1 Tag!"
# CLEAN IPFS keystore: remove NOT created NODE keys
SOURCENODEID=$(cat "./TAG/${RR}/TAG_nodeid")
@ -201,7 +201,7 @@ cat /dev/ttyACM0 | while read line; do
fi
else
# AJOUT MEMOIRE SCAN
./shell/parle.sh "Mémorisation"
./parle.sh "Mémorisation"
act+=("$cmd")
obj+=("$J")
fi
@ -217,11 +217,11 @@ cat /dev/ttyACM0 | while read line; do
if [[ "${act[0]}" == "RJ" && "${act[1]}" == "BJ" && "${obj[0]}" != "${obj[1]}" ]]; then
PASSENGER=$(su $YOU -c "ipfs cat /ipns/${obj[1]}/TAG_passenger");
if [[ "$PASSENGER" != "" ]]; then
./shell/parle.sh "Rec Tag Machine non transférable!";
./parle.sh "Rec Tag Machine non transférable!";
else
log "__SUB:tag_READ.sh: Transfert de G1 Tag à G1 Tag. $BVALUE $CUR"
./shell/parle.sh "Transfert de ${val[1]} $CUR vers le G1 Tag ${FID}"
log "__SUB:tag_READ.sh: $(./shell/tag_OP.sh ${obj[1]} ${obj[0]} ${val[1]} $SWARM_G1AUTHFILE)"
./parle.sh "Transfert de ${val[1]} $CUR vers le G1 Tag ${FID}"
log "__SUB:tag_READ.sh: $(./tag_OP.sh ${obj[1]} ${obj[0]} ${val[1]} $SWARM_G1AUTHFILE)"
fi
CASHBACK=""
fi
@ -230,11 +230,11 @@ cat /dev/ttyACM0 | while read line; do
if [[ "${act[0]}" == "BJ" && "${act[1]}" == "BJ" && "${obj[0]}" == "${obj[1]}" ]]; then
PASSENGER=$(su $YOU -c "ipfs cat /ipns/${obj[0]}/TAG_passenger");
if [[ "$PASSENGER" != "" ]]; then
./shell/parle.sh "Déjà Rec Tag Machine!";
./parle.sh "Déjà Rec Tag Machine!";
else
log "__SUB:tag_READ.sh: Transformation du G1 Tag en Rec Tag. ${val[0]} = ${val[1]}"
./shell/parle.sh "Transformation du G1 Tag ${val[0]} $CUR en Rec Tag chargé de ${FID}..."
log "__SUB:tag_READ.sh: $(./shell/tag_OP.sh ${obj[0]} ${obj[0]} 0 $SWARM_G1AUTHFILE)"
./parle.sh "Transformation du G1 Tag ${val[0]} $CUR en Rec Tag chargé de ${FID}..."
log "__SUB:tag_READ.sh: $(./tag_OP.sh ${obj[0]} ${obj[0]} 0 $SWARM_G1AUTHFILE)"
fi
CASHBACK=""
fi
@ -242,9 +242,9 @@ cat /dev/ttyACM0 | while read line; do
act=()
obj=()
val=()
./shell/parle.sh "Nouveau cycle de lecture."
./parle.sh "Nouveau cycle de lecture."
fi
./shell/parle.sh "Flasher un QR code"
./parle.sh "Flasher un QR code"
done

View File

@ -10,8 +10,8 @@
# Saisie du montant à transférer par pavé numérique
###########################################################################################
echo "__SUB:tag_READ_X.sh: QRCODE READER : START"
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
@ -26,8 +26,8 @@ if [ ! -f $SWARM_G1AUTHFILE ]; then echo "ERREUR CLEF DECHIFFRAGE!"; exit; fi
# DOUCHETTE ES TU LA?
if [ ! $G1TX ]; then echo "Branchez votre lecteur de QR code!"; exit; fi
./shell/tools/4LETTER.scroll.py "G1TX START"
./shell/tools/4LETTER.clock.py &
./tools/4LETTER.scroll.py "G1TX START"
./tools/4LETTER.clock.py &
clockpid=$!
# TABLEAU MEMOIRE DE SCAN
declare -a act
@ -50,24 +50,24 @@ cat /dev/ttyACM0 | while read line; do
# IPFS READ
ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id");
if [[ "$ID" == "" ]]; then
./shell/tools/4LETTER.scroll.py ">> BAD G1TAG <<"
./tools/4LETTER.scroll.py ">> BAD G1TAG <<"
continue
fi
# Get First R Tag name word and remove space for RR
FID=$(echo $ID | awk '{print toupper($1)}')
RR=$(echo $ID | sed s/\ //g)
./shell/tools/4LETTER.scroll.py "${#act[@]} $FID > "
./tools/4LETTER.scroll.py "${#act[@]} $FID > "
RVALUE=$(su $YOU -c "ipfs cat /ipns/$J/TAG_amount");
CURRENCY=$(su $YOU -c "ipfs cat /ipns/$J/TAG_currency" | awk '{print tolower($1)}')
PASSENGER=$(su $YOU -c "ipfs cat /ipns/$J/TAG_passenger");
if [[ "$PASSENGER" != "" ]]; then
./shell/tools/4LETTER.scroll.py "G1TAG PASSENGER $RVALUE ZEN"
./tools/4LETTER.scroll.py "G1TAG PASSENGER $RVALUE ZEN"
else
G1VAL=$(bc -l <<< "scale=2; $RVALUE / 100" | cut -d '.' -f 1)
log "__SUB:tag_READ_X.sh: G1Tag $FID. Valeur $RVALUE $CURRENCY = $G1VAL G1"
./shell/tools/4LETTER.scroll.py "$RVALUE ZEN *** $G1VAL G1"
./tools/4LETTER.scroll.py "$RVALUE ZEN *** $G1VAL G1"
fi
cmd="RJ"
CASHBACK=""
@ -81,13 +81,13 @@ cat /dev/ttyACM0 | while read line; do
#
ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id");
if [[ "$ID" == "" ]]; then
./shell/tools/4LETTER.scroll.py ">> BAD G1TAG <<"
./tools/4LETTER.scroll.py ">> BAD G1TAG <<"
continue
fi
FID=$(echo $ID | awk '{print toupper($1)}')
RR=$(echo $ID | sed s/\ //g)
./shell/tools/4LETTER.scroll.py "${#act[@]} $FID TX >>"
./tools/4LETTER.scroll.py "${#act[@]} $FID TX >>"
BVALUE=$(su $YOU -c "ipfs cat /ipns/$J/TAG_amount")
CURRENCY=$(su $YOU -c "ipfs cat /ipns/$J/TAG_currency" | awk '{print tolower($1)}')
@ -98,11 +98,11 @@ cat /dev/ttyACM0 | while read line; do
else
rm /tmp/TAG_publishkey.B.gpg
su $YOU -c "ipfs get -o /tmp/ /ipns/$J/TAG_publishkey.B.gpg"
./shell/tools/4LETTER.scroll.py "** GPG **"
./tools/4LETTER.scroll.py "** GPG **"
gpg -d --output /tmp/ipns.key --pinentry-mode=loopback --passphrase $BB /tmp/TAG_publishkey.B.gpg
# CHECK IF OK
if [[ ! -f /tmp/ipns.key ]]; then
./shell/tools/4LETTER.scroll.py ">> BAD GPG KEY <<"
./tools/4LETTER.scroll.py ">> BAD GPG KEY <<"
continue
fi
mv /tmp/ipns.key /home/$YOU/.ipfs/keystore/$RR
@ -110,11 +110,11 @@ cat /dev/ttyACM0 | while read line; do
fi
if [[ "$PASSENGER" != "" ]]; then
log "__SUB:tag_READ_X.sh: !!!! $FID REC Tag = $BVALUE $CURRENCY"
./shell/tools/4LETTER.scroll.py "G1TAG PASSENGER $BVALUE ZEN"
./tools/4LETTER.scroll.py "G1TAG PASSENGER $BVALUE ZEN"
else
G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1)
log "__SUB:tag_READ_X.sh: Ce G1 Tag $FID contient $BVALUE $CURRENCY"
./shell/tools/4LETTER.scroll.py "$BVALUE ZEN *** $G1VAL G1 MAX"
./tools/4LETTER.scroll.py "$BVALUE ZEN *** $G1VAL G1 MAX"
fi
cmd="BJ"
val+=("$BVALUE")
@ -122,37 +122,37 @@ cat /dev/ttyACM0 | while read line; do
*)
if [[ $lon -eq 44 ]]; then
./shell/tools/4LETTER.scroll.py "PORTEFEUILLE G1 >>>>>>>> ${#act[@]}" &
./tools/4LETTER.scroll.py "PORTEFEUILLE G1 >>>>>>>> ${#act[@]}" &
J=$qrvalue
if [[ "$J" != "${obj[0]}" ]]; then
VALUE=$(./shell/timeout.sh -t 25 ./silkaj/silkaj amount $J)
VALUE=$(./timeout.sh -t 25 ./silkaj/silkaj amount $J)
if [[ "$(echo $VALUE | cut -d ':' -f 1)" != "Error" && "$VALUE" != "" ]]; then
log "__SUB:tag_READ_X.sh: Ce compte monnaie libre contient $VALUE G1"
NOPOINT=$(echo $VALUE | cut -d '.' -f 1)
./shell/tools/4LETTER.scroll.py " $NOPOINT G1 *** $NOPOINT G1 "
./tools/4LETTER.scroll.py " $NOPOINT G1 *** $NOPOINT G1 "
CASHBACK="$J"
cmd="G1"
val+=("$VALUE")
else
if [[ "$VALUE" == "" ]]; then
DUNITER=$(./shell/checknodes.sh 'BAN')
DUNITER=$(./checknodes.sh 'BAN')
log "__SUB:tag_READ_X.sh: ERREUR TIMEOUT. CHANGE SILKAJ SERVER: $DUNITER"
./shell/tools/4LETTER.scroll.py "ERREUR TIMEOUT SILKAJ"
./shell/timeout.sh -t 1 ./shell/tools/4LETTER.spinner.py
./tools/4LETTER.scroll.py "ERREUR TIMEOUT SILKAJ"
./timeout.sh -t 1 ./tools/4LETTER.spinner.py
CASHBACK=""
else
log "__SUB:tag_READ_X.sh: ERREUR QRCODE ILLISIBLE. longueur $J = ${#J}"
./shell/tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU"
./shell/timeout.sh -t 1 ./shell/tools/4LETTER.spinner.py
./tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU"
./timeout.sh -t 1 ./tools/4LETTER.spinner.py
CASHBACK=""
fi
fi
else
./shell/tools/4LETTER.scroll.py " 2 X "
./tools/4LETTER.scroll.py " 2 X "
fi
else
./shell/tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU"
./tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU"
fi
;;
@ -162,10 +162,10 @@ cat /dev/ttyACM0 | while read line; do
###############################################################
# APRES G1 CASHBACK : G1 Tag BJ WRITE => ENCAISSEMENT
if [[ "${cmd}" == "BJ" && "$CASHBACK" != "" && -f /home/$YOU/.ipfs/keystore/${RR} ]]; then
./shell/tools/4LETTER.scroll.py "ZEN -> G1"
./tools/4LETTER.scroll.py "ZEN -> G1"
log "__SUB:tag_READ_X.sh: G1 tag de $BVALUE G1 ! /ipns/$J Virement vers $CASHBACK? "
./shell/tools/4LETTER.spinner.py &
./tools/4LETTER.spinner.py &
spinnerpid=$!
# ipfs get G1Tag vers ./TAG/${RR}
@ -173,7 +173,7 @@ cat /dev/ttyACM0 | while read line; do
log "__SUB:tag_READ_X.sh: ipfs get --output=./TAG/${RR} /ipns/$J"
su $YOU -c "ipfs get --output=./TAG/${RR} /ipns/$J"
if [[ $(cat ./TAG/${RR}/TAG_passenger) != "" ]]; then ./shell/tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER $BVALUE ZEN"; continue; fi
if [[ $(cat ./TAG/${RR}/TAG_passenger) != "" ]]; then ./tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER $BVALUE ZEN"; continue; fi
# Make Silkaj TX
G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1)
@ -185,12 +185,12 @@ cat /dev/ttyACM0 | while read line; do
kill $spinnerpid
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" && "$PAY" != "" ]]; then
new=$(./shell/checknodes.sh "BAN")
new=$(./checknodes.sh "BAN")
sms_ERROR "$ADMINPHONE" "Il est survenu un problème avec un virement. Retour silkaj: $PAY ... $new";
./shell/tools/4LETTER.scroll.py "ERREUR SILKAJ ERREUR"
./tools/4LETTER.scroll.py "ERREUR SILKAJ ERREUR"
else
# ENCAISSEMENT G1Tag
./shell/tools/4LETTER.scroll.py "VIR ${FID} $G1VAL G1 -> OK "
./tools/4LETTER.scroll.py "VIR ${FID} $G1VAL G1 -> OK "
# CAPTURE / DESTRUCTION du G1 Tag
echo "0" > "./TAG/${RR}/TAG_amount"
echo "${J}" > "./TAG/${RR}/TAG_ipns"
@ -216,7 +216,7 @@ cat /dev/ttyACM0 | while read line; do
J=$(su $YOU -c "ipfs name publish -k ${RR} --quieter /ipfs/${I}")
log "__SUB:tag_READ_X.sh: Destruction de ce G1 Tag publish -k ${RR} --quieter /ipfs/${I} :: ipfs ls /ipns/$J"
./shell/tools/4LETTER.scroll.py "DETRUIRE G1TAG ${FID}"
./tools/4LETTER.scroll.py "DETRUIRE G1TAG ${FID}"
# CLEAN IPFS keystore: remove NOT created NODE keys
SOURCENODEID=$(cat "./TAG/${RR}/TAG_nodeid")
@ -226,7 +226,7 @@ cat /dev/ttyACM0 | while read line; do
fi
else
# AJOUT MEMOIRE SCAN
./shell/timeout.sh -t 1 ./shell/tools/4LETTER.spinner.py
./timeout.sh -t 1 ./tools/4LETTER.spinner.py
act+=("$cmd")
obj+=("$J")
fi
@ -242,19 +242,19 @@ cat /dev/ttyACM0 | while read line; do
if [[ "${act[0]}" == "RJ" && "${act[1]}" == "BJ" && "${obj[0]}" != "${obj[1]}" ]]; then
PASSENGER=$(su $YOU -c "ipfs cat /ipns/${obj[1]}/TAG_passenger");
if [[ "$PASSENGER" != "" ]]; then
./shell/tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER";
./tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER";
else
###########################################################
# READ KEYBOARD VALUE !!! 4 DIGIT REMOVING LEADING 0
COMBIEN=$(./shell/tools/matrixKeypad.py | sed 's/^0*//')
COMBIEN=$(./tools/matrixKeypad.py | sed 's/^0*//')
if [[ $COMBIEN -le ${val[1]} ]]; then
COMBIENZEN=$(bc -l <<< "$COMBIEN * 100")
log "__SUB:tag_READ_X.sh: Transfert de G1 Tag à G1 Tag. $COMBIEN"
./shell/tools/4LETTER.scroll.py "G1TAG ${FID} -> TX $COMBIENZEN ZEN *** $COMBIEN G1"
log "__SUB:tag_READ_X.sh: ./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN $SWARM_G1AUTHFILE"
./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN "$SWARM_G1AUTHFILE"
./tools/4LETTER.scroll.py "G1TAG ${FID} -> TX $COMBIENZEN ZEN *** $COMBIEN G1"
log "__SUB:tag_READ_X.sh: ./tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN $SWARM_G1AUTHFILE"
./tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN "$SWARM_G1AUTHFILE"
else
./shell/tools/4LETTER.scroll.py "ERREUR $COMBIEN > VALEUR DE ${FID} *** ${val[1]} ZEN"
./tools/4LETTER.scroll.py "ERREUR $COMBIEN > VALEUR DE ${FID} *** ${val[1]} ZEN"
fi
fi
CASHBACK=""
@ -264,11 +264,11 @@ cat /dev/ttyACM0 | while read line; do
if [[ "${act[0]}" == "BJ" && "${act[1]}" == "BJ" && "${obj[0]}" == "${obj[1]}" ]]; then
PASSENGER=$(su $YOU -c "ipfs cat /ipns/${obj[0]}/TAG_passenger");
if [[ "$PASSENGER" != "" ]]; then
./shell/tools/4LETTER.scroll.py "DEJA TAG PASSENGER";
./tools/4LETTER.scroll.py "DEJA TAG PASSENGER";
else
log "__SUB:tag_READ_X.sh: Transformation du G1 Tag en Rec Tag. ${val[0]} = ${val[1]}"
./shell/tools/4LETTER.scroll.py "TRASNFORMATION G1TAG ${val[0]} ZEN EN PASSENGER ${FID}";
log "__SUB:tag_READ_X.sh: $(./shell/tag_OP.sh ${obj[0]} ${obj[0]} 0 $SWARM_G1AUTHFILE)"
./tools/4LETTER.scroll.py "TRASNFORMATION G1TAG ${val[0]} ZEN EN PASSENGER ${FID}";
log "__SUB:tag_READ_X.sh: $(./tag_OP.sh ${obj[0]} ${obj[0]} 0 $SWARM_G1AUTHFILE)"
fi
CASHBACK=""
fi
@ -277,10 +277,10 @@ cat /dev/ttyACM0 | while read line; do
obj=()
val=()
# END OF 2-PASS READ
./shell/timeout.sh -t 2 ./shell/tools/4LETTER.spinner.py
./timeout.sh -t 2 ./tools/4LETTER.spinner.py
fi
./shell/tools/4LETTER.blink.py
./shell/tools/4LETTER.clock.py &
./tools/4LETTER.blink.py
./tools/4LETTER.clock.py &
clockpid=$!
done

View File

@ -14,14 +14,14 @@ function log () {
echo "$line
$1" >> /tmp/tag_READ_XY.log
}
source ./shell/init.sh
source ./shell/functions.sh
source ./init.sh
source ./functions.sh
##############################################
# NODE ENVIRONEMENT DETECTION
##############################################
YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1);
IPFSNODEID=$(su $YOU -c "ipfs id -f='<id>\n'")
NODE_UIDNA=$(cat "./wallets/.$IPFSNODEID/_uidna")
NODE_UIDNA=$(cat "~/.zen/ipfs/.$IPFSNODEID/_uidna")
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
@ -39,8 +39,8 @@ if [[ ! -e "/dev/ttyACM0" ]]; then echo "Branchez votre lecteur de QR code!"; ex
##############################################
# DOUCHETTE ES TU LA?
./shell/tools/4LETTER.scroll.py "G1TX START"
./shell/tools/4LETTER.clock.py &
./tools/4LETTER.scroll.py "G1TX START"
./tools/4LETTER.clock.py &
clockpid=$!
# TABLEAU MEMOIRE DE SCAN
@ -64,24 +64,24 @@ cat /dev/ttyACM0 | while read line; do
# IPFS READ
ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id");
if [[ "$ID" == "" ]]; then
./shell/tools/4LETTER.scroll.py ">> BAD G1TAG <<"
./tools/4LETTER.scroll.py ">> BAD G1TAG <<"
continue
fi
# Get First R Tag name word and remove space for RR
FID=$(echo $ID | awk '{print toupper($1)}')
RR=$(echo $ID | sed s/\ //g)
./shell/tools/4LETTER.scroll.py "${#act[@]} $FID > "
./tools/4LETTER.scroll.py "${#act[@]} $FID > "
RVALUE=$(su $YOU -c "ipfs cat /ipns/$J/TAG_amount");
CURRENCY=$(su $YOU -c "ipfs cat /ipns/$J/TAG_currency" | awk '{print tolower($1)}')
PASSENGER=$(su $YOU -c "ipfs cat /ipns/$J/TAG_passenger");
if [[ "$PASSENGER" != "" ]]; then
./shell/tools/4LETTER.scroll.py "G1TAG PASSENGER $RVALUE ZEN"
./tools/4LETTER.scroll.py "G1TAG PASSENGER $RVALUE ZEN"
else
G1VAL=$(bc -l <<< "scale=2; $RVALUE / 100" | cut -d '.' -f 1)
log "__SUB:tag_READ_X.sh: G1Tag $FID. Valeur $RVALUE $CURRENCY = $G1VAL G1"
./shell/tools/4LETTER.scroll.py "$RVALUE ZEN *** $G1VAL G1"
./tools/4LETTER.scroll.py "$RVALUE ZEN *** $G1VAL G1"
fi
cmd="RJ"
CASHBACK=""
@ -95,13 +95,13 @@ cat /dev/ttyACM0 | while read line; do
#
ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id");
if [[ "$ID" == "" ]]; then
./shell/tools/4LETTER.scroll.py ">> BAD G1TAG <<"
./tools/4LETTER.scroll.py ">> BAD G1TAG <<"
continue
fi
FID=$(echo $ID | awk '{print toupper($1)}')
RR=$(echo $ID | sed s/\ //g)
./shell/tools/4LETTER.scroll.py "${#act[@]} $FID TX >>"
./tools/4LETTER.scroll.py "${#act[@]} $FID TX >>"
BVALUE=$(su $YOU -c "ipfs cat /ipns/$J/TAG_amount")
CURRENCY=$(su $YOU -c "ipfs cat /ipns/$J/TAG_currency" | awk '{print tolower($1)}')
@ -112,11 +112,11 @@ cat /dev/ttyACM0 | while read line; do
else
rm /tmp/TAG_publishkey.B.gpg
su $YOU -c "ipfs get -o /tmp/ /ipns/$J/TAG_publishkey.B.gpg"
./shell/tools/4LETTER.scroll.py "** GPG **"
./tools/4LETTER.scroll.py "** GPG **"
gpg -d --output /tmp/ipns.key --pinentry-mode=loopback --passphrase $BB /tmp/TAG_publishkey.B.gpg
# CHECK IF OK
if [[ ! -f /tmp/ipns.key ]]; then
./shell/tools/4LETTER.scroll.py ">> BAD GPG KEY <<"
./tools/4LETTER.scroll.py ">> BAD GPG KEY <<"
continue
fi
mv /tmp/ipns.key /home/$YOU/.ipfs/keystore/$RR
@ -124,11 +124,11 @@ cat /dev/ttyACM0 | while read line; do
fi
if [[ "$PASSENGER" != "" ]]; then
log "__SUB:tag_READ_X.sh: !!!! $FID REC Tag = $BVALUE $CURRENCY"
./shell/tools/4LETTER.scroll.py "G1TAG PASSENGER $BVALUE ZEN"
./tools/4LETTER.scroll.py "G1TAG PASSENGER $BVALUE ZEN"
else
G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1)
log "__SUB:tag_READ_X.sh: Ce G1 Tag $FID contient $BVALUE $CURRENCY"
./shell/tools/4LETTER.scroll.py "$BVALUE ZEN *** $G1VAL G1 MAX"
./tools/4LETTER.scroll.py "$BVALUE ZEN *** $G1VAL G1 MAX"
fi
cmd="BJ"
val+=("$BVALUE")
@ -136,37 +136,37 @@ cat /dev/ttyACM0 | while read line; do
*)
if [[ $lon -eq 44 ]]; then
./shell/tools/4LETTER.scroll.py "PORTEFEUILLE G1 >>>>>>>> ${#act[@]}" &
./tools/4LETTER.scroll.py "PORTEFEUILLE G1 >>>>>>>> ${#act[@]}" &
J=$qrvalue
if [[ "$J" != "${obj[0]}" ]]; then
VALUE=$(./shell/timeout.sh -t 25 ./silkaj/silkaj amount $J)
VALUE=$(./timeout.sh -t 25 ./silkaj/silkaj amount $J)
if [[ "$(echo $VALUE | cut -d ':' -f 1)" != "Error" && "$VALUE" != "" ]]; then
log "__SUB:tag_READ_X.sh: Ce compte monnaie libre contient $VALUE G1"
NOPOINT=$(echo $VALUE | cut -d '.' -f 1)
./shell/tools/4LETTER.scroll.py " $NOPOINT G1 *** $NOPOINT G1 "
./tools/4LETTER.scroll.py " $NOPOINT G1 *** $NOPOINT G1 "
CASHBACK="$J"
cmd="G1"
val+=("$VALUE")
else
if [[ "$VALUE" == "" ]]; then
DUNITER=$(./shell/checknodes.sh 'BAN')
DUNITER=$(./checknodes.sh 'BAN')
log "__SUB:tag_READ_X.sh: ERREUR TIMEOUT. CHANGE SILKAJ SERVER: $DUNITER"
./shell/tools/4LETTER.scroll.py "ERREUR TIMEOUT SILKAJ"
./shell/timeout.sh -t 1 ./shell/tools/4LETTER.spinner.py
./tools/4LETTER.scroll.py "ERREUR TIMEOUT SILKAJ"
./timeout.sh -t 1 ./tools/4LETTER.spinner.py
CASHBACK=""
else
log "__SUB:tag_READ_X.sh: ERREUR QRCODE ILLISIBLE. longueur $J = ${#J}"
./shell/tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU"
./shell/timeout.sh -t 1 ./shell/tools/4LETTER.spinner.py
./tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU"
./timeout.sh -t 1 ./tools/4LETTER.spinner.py
CASHBACK=""
fi
fi
else
./shell/tools/4LETTER.scroll.py " 2 X "
./tools/4LETTER.scroll.py " 2 X "
fi
else
./shell/tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU"
./tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU"
fi
;;
@ -176,10 +176,10 @@ cat /dev/ttyACM0 | while read line; do
###############################################################
# APRES G1 CASHBACK : G1 Tag BJ WRITE => ENCAISSEMENT
if [[ "${cmd}" == "BJ" && "$CASHBACK" != "" && -f /home/$YOU/.ipfs/keystore/${RR} ]]; then
./shell/tools/4LETTER.scroll.py "ZEN -> G1"
./tools/4LETTER.scroll.py "ZEN -> G1"
log "__SUB:tag_READ_X.sh: G1 tag de $BVALUE G1 ! /ipns/$J Virement vers $CASHBACK? "
./shell/tools/4LETTER.spinner.py &
./tools/4LETTER.spinner.py &
spinnerpid=$!
# ipfs get G1Tag vers ./TAG/${RR}
@ -187,7 +187,7 @@ cat /dev/ttyACM0 | while read line; do
log "__SUB:tag_READ_X.sh: ipfs get --output=./TAG/${RR} /ipns/$J"
su $YOU -c "ipfs get --output=./TAG/${RR} /ipns/$J"
if [[ $(cat ./TAG/${RR}/TAG_passenger) != "" ]]; then ./shell/tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER $BVALUE ZEN"; continue; fi
if [[ $(cat ./TAG/${RR}/TAG_passenger) != "" ]]; then ./tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER $BVALUE ZEN"; continue; fi
# Make Silkaj TX
G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1)
@ -199,12 +199,12 @@ cat /dev/ttyACM0 | while read line; do
kill $spinnerpid
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" && "$PAY" != "" ]]; then
new=$(./shell/checknodes.sh "BAN")
new=$(./checknodes.sh "BAN")
sms_ERROR "$ADMINPHONE" "Il est survenu un problème avec un virement. Retour silkaj: $PAY ... $new";
./shell/tools/4LETTER.scroll.py "ERREUR SILKAJ ERREUR"
./tools/4LETTER.scroll.py "ERREUR SILKAJ ERREUR"
else
# ENCAISSEMENT G1Tag
./shell/tools/4LETTER.scroll.py "VIR ${FID} $G1VAL G1 -> OK "
./tools/4LETTER.scroll.py "VIR ${FID} $G1VAL G1 -> OK "
# CAPTURE / DESTRUCTION du G1 Tag
echo "0" > "./TAG/${RR}/TAG_amount"
echo "${J}" > "./TAG/${RR}/TAG_ipns"
@ -230,7 +230,7 @@ cat /dev/ttyACM0 | while read line; do
J=$(su $YOU -c "ipfs name publish -k ${RR} --quieter /ipfs/${I}")
log "__SUB:tag_READ_X.sh: Destruction de ce G1 Tag publish -k ${RR} --quieter /ipfs/${I} :: ipfs ls /ipns/$J"
./shell/tools/4LETTER.scroll.py "DETRUIRE G1TAG ${FID}"
./tools/4LETTER.scroll.py "DETRUIRE G1TAG ${FID}"
# CLEAN IPFS keystore: remove NOT created NODE keys
SOURCENODEID=$(cat "./TAG/${RR}/TAG_nodeid")
@ -240,7 +240,7 @@ cat /dev/ttyACM0 | while read line; do
fi
else
# AJOUT MEMOIRE SCAN
./shell/timeout.sh -t 1 ./shell/tools/4LETTER.spinner.py
./timeout.sh -t 1 ./tools/4LETTER.spinner.py
act+=("$cmd")
obj+=("$J")
fi
@ -256,19 +256,19 @@ cat /dev/ttyACM0 | while read line; do
if [[ "${act[0]}" == "RJ" && "${act[1]}" == "BJ" && "${obj[0]}" != "${obj[1]}" ]]; then
PASSENGER=$(su $YOU -c "ipfs cat /ipns/${obj[1]}/TAG_passenger");
if [[ "$PASSENGER" != "" ]]; then
./shell/tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER";
./tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER";
else
###########################################################
# READ KEYBOARD VALUE !!! 4 DIGIT REMOVING LEADING 0
COMBIEN=$(./shell/tools/matrixKeypad.py | sed 's/^0*//')
COMBIEN=$(./tools/matrixKeypad.py | sed 's/^0*//')
if [[ $COMBIEN -le ${val[1]} ]]; then
COMBIENZEN=$(bc -l <<< "$COMBIEN * 100")
log "__SUB:tag_READ_X.sh: Transfert de G1 Tag à G1 Tag. $COMBIEN"
./shell/tools/4LETTER.scroll.py "G1TAG ${FID} -> TX $COMBIENZEN ZEN *** $COMBIEN G1"
log "__SUB:tag_READ_X.sh: ./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN $SWARM_G1AUTHFILE"
./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN "$SWARM_G1AUTHFILE"
./tools/4LETTER.scroll.py "G1TAG ${FID} -> TX $COMBIENZEN ZEN *** $COMBIEN G1"
log "__SUB:tag_READ_X.sh: ./tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN $SWARM_G1AUTHFILE"
./tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN "$SWARM_G1AUTHFILE"
else
./shell/tools/4LETTER.scroll.py "ERREUR $COMBIEN > VALEUR DE ${FID} *** ${val[1]} ZEN"
./tools/4LETTER.scroll.py "ERREUR $COMBIEN > VALEUR DE ${FID} *** ${val[1]} ZEN"
fi
fi
CASHBACK=""
@ -278,11 +278,11 @@ cat /dev/ttyACM0 | while read line; do
if [[ "${act[0]}" == "BJ" && "${act[1]}" == "BJ" && "${obj[0]}" == "${obj[1]}" ]]; then
PASSENGER=$(su $YOU -c "ipfs cat /ipns/${obj[0]}/TAG_passenger");
if [[ "$PASSENGER" != "" ]]; then
./shell/tools/4LETTER.scroll.py "DEJA TAG PASSENGER";
./tools/4LETTER.scroll.py "DEJA TAG PASSENGER";
else
log "__SUB:tag_READ_X.sh: Transformation du G1 Tag en Rec Tag. ${val[0]} = ${val[1]}"
./shell/tools/4LETTER.scroll.py "TRASNFORMATION G1TAG ${val[0]} ZEN EN PASSENGER ${FID}";
log "__SUB:tag_READ_X.sh: $(./shell/tag_OP.sh ${obj[0]} ${obj[0]} 0 $SWARM_G1AUTHFILE)"
./tools/4LETTER.scroll.py "TRASNFORMATION G1TAG ${val[0]} ZEN EN PASSENGER ${FID}";
log "__SUB:tag_READ_X.sh: $(./tag_OP.sh ${obj[0]} ${obj[0]} 0 $SWARM_G1AUTHFILE)"
fi
CASHBACK=""
fi
@ -291,10 +291,10 @@ cat /dev/ttyACM0 | while read line; do
obj=()
val=()
# END OF 2-PASS READ
./shell/timeout.sh -t 2 ./shell/tools/4LETTER.spinner.py
./timeout.sh -t 2 ./tools/4LETTER.spinner.py
fi
./shell/tools/4LETTER.blink.py
./shell/tools/4LETTER.clock.py &
./tools/4LETTER.blink.py
./tools/4LETTER.clock.py &
clockpid=$!
done

100
zen/nextcloud_SWARM_share.sh Executable file
View File

@ -0,0 +1,100 @@
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
# Extract last ads
# Thank you @kimamila for cesium & gchange
# ES backend http://www.elasticsearchtutorial.com/spatial-search-tutorial.html
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
ipfsnodeid=$(ipfs id -f='<id>\n')
[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh
g1pub=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
CESIUM="https://g1.data.le-sou.org"
curl -sk ${CESIUM}/user/profile/${g1pub} -o ~/.zen/cache/cesium_profile.json
LON=$(cat ~/.zen/cache/cesium_profile.json | jq '._source.geoPoint.lon')
LAT=$(cat ~/.zen/cache/cesium_profile.json | jq '._source.geoPoint.lat')
RAD="$1"
[[ ! $RAD ]] && RAD="10km"
if [[ "$LON" != "null" ]]; then
curl -sk -XPOST 'https://data.gchange.fr/market/record/_search?pretty&_source=title' -d '
{
"size": 200,
"query": {
"bool": {
"filter": [{
"geo_distance": {
"distance": "'$RAD'",
"geoPoint": {
"lat": '$LAT',
"lon": '$LON'
}
}
}]
}
}
}' > /tmp/gchange.json || exit 1
else
echo "Aucune coordonnées geoPoint pour $g1pub" && exit 1
fi
TIMEBEFORE=$(date -u --date="-$DELAY" +"%s")
TIMESTAMP=$(date -u +"%s")
TOTAL=$(cat /tmp/gchange.json | jq .hits.total)
echo 'tail -f ~/.zen/cache/gchange.txt'
echo '# #GCHANGE-Market' > ~/.zen/cache/gchange.txt
echo "Le profil géolocalisé de ce [portefeuille](https://demo.cesium.app/#/app/wot/$g1pub/)" >> ~/.zen/cache/gchange.txt
echo "reçoit les annonces [situées dans un rayon de $RAD](https://www.openstreetmap.org/#map=10/$LAT/$LON) " >> ~/.zen/cache/gchange.txt
chunk=0
fullcount=0
DUNITERNODE=$($MY_PATH/tools/duniter_getnode.sh)
DUNITERURL="https://$DUNITERNODE"
LASTDU=$(curl -s ${DUNITERURL}/blockchain/with/ud | jq '.result.blocks[]' | tail -n 1);
[[ $LASTDU != "" ]] && LASTDU=$(curl -s ${DUNITERURL}/blockchain/block/${LASTDU} | jq '.dividend')
echo "DU = $LASTDU G1"
for gID in $(cat /tmp/gchange.json | jq -r .hits.hits[]._id); do
NEW=""
#[[ ! -f ~/.zen/cache/gchange/$gID.json ]] &&
NEW="true" \
&& curl -s --create-dirs -o ~/.zen/cache/gchange/$gID.json -s https://data.gchange.fr/market/record/$gID?_source=category,title,description,issuer,time,creationTime,location,address,city,price,unit,currency,thumbnail._content_type,thumbnail._content,picturesCount,type,stock,fees,feesCurrency,geoPoint \
&& sleep $((1 + RANDOM % 3))
type=$(cat ~/.zen/cache/gchange/$gID.json | jq -r ._source.type)
# [[ $type == "need" ]] && continue
creationTime=$(cat ~/.zen/cache/gchange/$gID.json | jq -r ._source.creationTime)
title=$(cat ~/.zen/cache/gchange/$gID.json | jq -r ._source.title)
currency=$(cat ~/.zen/cache/gchange/$gID.json | jq -r ._source.currency)
price=$(cat ~/.zen/cache/gchange/$gID.json | jq -r ._source.price)
categoryname=$(cat ~/.zen/cache/gchange/$gID.json | jq -r ._source.category.name)
[[ $price == null ]] && price="0"
[[ $currency == "g1" ]] && love=$(bc -l <<< "scale=2; $price / $LASTDU * 100") || love="?.??"
love="$love LOVE"
price=$(bc -l <<< "scale=2; $price / 100")
fullcount=$((fullcount+1)) && echo "DEBUG : $fullcount - $type - $price $currency - $title "
[[ $price == "0" ]] && love="OFFERT !?" && price="A débattre "
[[ $NEW == "true" ]] \
&& echo "- [$title](https://data.gchange.fr/market/record/$gID/_share) :heart: $love" >> ~/.zen/cache/gchange.txt \
&& chunk=$((chunk+1)) && echo $chunk
done
echo "$chunk nouvelles annonces ($TOTAL)" >> ~/.zen/cache/gchange.txt
## LOG INTO SSB ??? TODO
# sbotc publish '{"type":"zenlog","text":"'"$ME"'"}'

View File

@ -122,8 +122,6 @@ echo '
\__, /\____/\__,_/\__/\__,_/_.___/\___/ \__,_/_/
/____/
youtube-dl Swarm audio and video source...
'
if [[ ! $(which youtube-dl) ]]; then