g1sms ipfs swarm & path adaptation
This commit is contained in:
parent
4398f5587a
commit
c1fb80f68b
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ..
|
||||
|
|
|
@ -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}"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 |
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
;;
|
||||
|
||||
*)
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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!!!"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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")
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"'"}'
|
|
@ -122,8 +122,6 @@ echo '
|
|||
\__, /\____/\__,_/\__/\__,_/_.___/\___/ \__,_/_/
|
||||
/____/
|
||||
|
||||
|
||||
|
||||
youtube-dl Swarm audio and video source...
|
||||
'
|
||||
if [[ ! $(which youtube-dl) ]]; then
|
||||
|
|
Loading…
Reference in New Issue