Compare commits
91 Commits
master
...
dev-multic
Author | SHA1 | Date |
---|---|---|
poka | f314b9dea3 | |
poka | 41629cc938 | |
poka | 8be9b7ea3a | |
poka | 6225b2e5cd | |
poka | 1da87b7002 | |
poka | ef332a91a3 | |
qo-op | bf94b41551 | |
poka | c82d96394f | |
poka | b62c8f3853 | |
poka | 360c86a771 | |
poka | 3dcf311314 | |
poka | 737f3e2adf | |
poka | 1fa0e9e017 | |
poka | 2436c862d1 | |
poka | 1194927282 | |
poka | 05c9269ec9 | |
poka | c8cc511cd3 | |
poka | 3468ca60e5 | |
poka | e879dc674e | |
poka | 3e226ac676 | |
poka | face5133ec | |
poka | 38c31c77da | |
poka | 206e10582b | |
poka | 5d4ac829fe | |
poka | 2d7e063685 | |
poka | c36c294780 | |
poka | 8c790dac9d | |
poka | 2b7a63fe2f | |
poka | cbfa5c4e4b | |
poka | 06cec4b5ed | |
poka | f711b47601 | |
poka | b80db3cb16 | |
poka | 6d261b509b | |
poka | 65745ca1fd | |
poka | 24e4127896 | |
poka | 9a77889738 | |
qo-op | 07865137a7 | |
qo-op | 6e5dfd9e06 | |
qo-op | f18e070d5d | |
qo-op | be099b6f3e | |
qo-op | ccbbb3ae3d | |
qo-op | 22fb57d984 | |
qo-op | 1d2d814999 | |
qo-op | 80510f259b | |
qo-op | b26f42b6dd | |
qo-op | f67286a1fb | |
qo-op | 1bb3c99930 | |
qo-op | 6b3a2f1456 | |
qo-op | e9fc812ac2 | |
qo-op | 1bd4dd2518 | |
qo-op | d68ce6cb6a | |
qo-op | df4679d38c | |
qo-op | 07cd3d8ead | |
qo-op | eb2b59ebc1 | |
qo-op | 90a26f5932 | |
qo-op | 27ea5c0103 | |
qo-op | 168ed8b8ea | |
qo-op | 625e1aaba9 | |
qo-op | abb7ccbdc7 | |
poka | a1be1b53c3 | |
poka | 3c65aba16e | |
qo-op | 72f9d06514 | |
poka | dddb82c037 | |
qo-op | e2f57db5e6 | |
poka | 7c0d9977f6 | |
poka | fac3136524 | |
poka | 7ccfd8f377 | |
poka | 043b7db512 | |
poka | ed5af53c90 | |
poka | ac356a7ae3 | |
poka | 123b4ea563 | |
qo-op | f07f5f994a | |
poka | bd5efb3a67 | |
poka | a00cfd9e6e | |
qo-op | dd74cff5aa | |
qo-op | 5c0d888bac | |
qo-op | d2bd1b6c76 | |
qo-op | 7126c11e04 | |
poka | aceffcb535 | |
poka | c03a3245d6 | |
qo-op | 6e00414c16 | |
qo-op | 014634e840 | |
poka | 3918e035da | |
qo-op | 975963b9b6 | |
poka | 50e73491f0 | |
poka | d984ebe9f5 | |
poka | 8647b941d6 | |
poka | 9231e6718a | |
poka | bb5df2ce26 | |
poka | 7b18a29c70 | |
poka | ee3a6bc9f4 |
|
@ -15,3 +15,5 @@ history.*
|
||||||
.install/log
|
.install/log
|
||||||
.install/.OS
|
.install/.OS
|
||||||
.profile
|
.profile
|
||||||
|
deps/g1bot/
|
||||||
|
mesms/
|
||||||
|
|
|
@ -2,9 +2,8 @@
|
||||||
|
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
|
[[ -f $MY_PATH/../.profile ]] && source $MY_PATH/../.profile || echo -e "${c_red}Le .profile n'existe pas$c_" && exit 1
|
||||||
|
|
||||||
OS=$(head -n1 $MY_PATH/.OS)
|
|
||||||
isARM=$(cat $MY_PATH/.OS | grep YES)
|
|
||||||
unset err
|
unset err
|
||||||
|
|
||||||
# Basics
|
# Basics
|
||||||
|
@ -26,7 +25,7 @@ silkaj() {
|
||||||
ipfs() {
|
ipfs() {
|
||||||
echo -e "${c_yellow}Installation d'IPFS...$c_"
|
echo -e "${c_yellow}Installation d'IPFS...$c_"
|
||||||
[[ -f /usr/local/bin/ipfs ]] && sudo service ipfs stop
|
[[ -f /usr/local/bin/ipfs ]] && sudo service ipfs stop
|
||||||
if [[ $isARM ]]; then
|
if [[ $ARM == "yes" ]]; then
|
||||||
wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-arm.tar.gz -O $MY_PATH/ipfs-update.tar.gz || err+="Download ipfs-update"
|
wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-arm.tar.gz -O $MY_PATH/ipfs-update.tar.gz || err+="Download ipfs-update"
|
||||||
else
|
else
|
||||||
wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-amd64.tar.gz -O $MY_PATH/ipfs-update.tar.gz || err+="Download ipfs-update"
|
wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-amd64.tar.gz -O $MY_PATH/ipfs-update.tar.gz || err+="Download ipfs-update"
|
||||||
|
|
|
@ -2,10 +2,9 @@
|
||||||
|
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
source $MY_PATH/../.install/.GPATH
|
|
||||||
|
|
||||||
## Récupère les données du profile
|
## Récupère les données du profile
|
||||||
[[ -f $MY_PATH/../.profile ]] && source $MY_PATH/../.profile
|
[[ -f $MY_PATH/../.profile ]] && source $MY_PATH/../.profile || echo -e "${c_red}Le .profile n'existe pas$c_" && exit 1
|
||||||
|
|
||||||
## Désactive les processus écoutant le tty1
|
## Désactive les processus écoutant le tty1
|
||||||
[[ $(sudo systemctl status getty@tty1.service | grep "loaded" 2>/dev/null) ]] && sudo systemctl stop getty@tty1.service && sudo systemctl disable getty@tty1.service
|
[[ $(sudo systemctl status getty@tty1.service | grep "loaded" 2>/dev/null) ]] && sudo systemctl stop getty@tty1.service && sudo systemctl disable getty@tty1.service
|
||||||
|
@ -31,6 +30,12 @@ fi
|
||||||
|
|
||||||
## Configure rc.local
|
## Configure rc.local
|
||||||
|
|
||||||
|
if [[ ! -f /etc/rc.local ]]; then
|
||||||
|
sudo cp $MY_PATH/template/rc.local /etc/
|
||||||
|
else
|
||||||
|
[[ ! $(grep "exit 0" /etc/rc.local) ]] && echo "exit 0" | tee -a /etc/rc.local
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo sed -i "/exit 0/i $GPATH/debug/GSM_powerkey.sh\ngammu-smsd-inject TEXT \"0647683646\" -text \"G1sms Plus démarré.\"" /etc/rc.local
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
templates="$MY_PATH/templates/3"
|
source $MY_PATH/../.profile
|
||||||
|
|
||||||
isARM=$(cat $MY_PATH/.OS | grep YES)
|
templates="$MY_PATH/templates/3"
|
||||||
|
|
||||||
##################################
|
##################################
|
||||||
## INSTALL TOOLS
|
## INSTALL TOOLS
|
||||||
|
@ -27,7 +27,7 @@ sudo apt-get install ca-certificates git-core binutils rsync alsa-utils bc libid
|
||||||
|
|
||||||
wget http://launchpadlibrarian.net/339874908/libav-tools_3.3.4-2_all.deb -O $MY_PATH/libav-tools.deb
|
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
|
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
|
if [[ $ARM == "yes" ]]; 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/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
|
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
|
else
|
||||||
|
|
|
@ -3,13 +3,12 @@
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
|
|
||||||
[[ -f $MY_PATH/../.profile ]] && source $MY_PATH/../.profile
|
[[ -f $MY_PATH/../.profile ]] && source $MY_PATH/../.profile || echo -e "${c_red}Le .profile n'existe pas$c_" && exit 1
|
||||||
unset err
|
unset err
|
||||||
|
|
||||||
args=$@
|
args=$@
|
||||||
[[ $args =~ noask ]] && noask=o && askSSL=o
|
[[ $args =~ noask ]] && noask=o && askSSL=o
|
||||||
|
|
||||||
OS=$(head -n1 $MY_PATH/.OS)
|
|
||||||
IP=$(ifconfig | grep "inet " | grep -v "127.0.0.1" | awk '{ print $2 }')
|
IP=$(ifconfig | grep "inet " | grep -v "127.0.0.1" | awk '{ print $2 }')
|
||||||
if [[ -z $KSMS_DOMAIN ]]; then
|
if [[ -z $KSMS_DOMAIN ]]; then
|
||||||
echo -e "${c_yellow}Choisissez un nom de domaine pour KALKUN (Sinon $IP sera choisi): $c_" && read KSMS_DOMAIN
|
echo -e "${c_yellow}Choisissez un nom de domaine pour KALKUN (Sinon $IP sera choisi): $c_" && read KSMS_DOMAIN
|
||||||
|
|
|
@ -54,7 +54,7 @@ sudo /usr/local/bin/playsmsd start
|
||||||
if [[ -f /etc/rc.local ]]; then
|
if [[ -f /etc/rc.local ]]; then
|
||||||
[[ ! $(grep playsmsd /etc/rc.local) ]] && sudo sed -i '/^exit 0.*/i /usr/local/bin/playsmsd start' /etc/rc.local
|
[[ ! $(grep playsmsd /etc/rc.local) ]] && sudo sed -i '/^exit 0.*/i /usr/local/bin/playsmsd start' /etc/rc.local
|
||||||
else
|
else
|
||||||
echo "/usr/local/bin/playsmsd start" | sudo tee /etc/rc.local
|
echo "/usr/local/bin/playsmsd start" | sudo tee -a /etc/rc.local
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
source $MY_PATH/../.install/.GPATH
|
[[ -f $MY_PATH/../.profile ]] && source $MY_PATH/../.profile || echo -e "${c_red}Le .profile n'existe pas$c_" && exit 1
|
||||||
|
|
||||||
GPATHS=$(echo $GPATH | sed 's./.\\/.g')
|
GPATHS=$(echo $GPATH | sed 's./.\\/.g')
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
|
|
||||||
|
[[ -f $MY_PATH/../.profile ]] && source $MY_PATH/../.profile || echo -e "${c_red}Le .profile n'existe pas$c_" && exit 1
|
||||||
|
|
||||||
|
## Install node 13 via NVM
|
||||||
|
if [[ -z $(which node) ]]; then
|
||||||
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
|
||||||
|
nvm install 13
|
||||||
|
nvm use 13
|
||||||
|
fi
|
||||||
|
|
||||||
|
## install pm2 for deamoning
|
||||||
|
[[ -z $(which pm2) ]] && npm install pm2 -g
|
||||||
|
|
||||||
|
## Install g1bot
|
||||||
|
[[ ! -d $GPATH/deps ]] && mkdir $GPATH/deps
|
||||||
|
cd $GPATH/deps/
|
||||||
|
[[ -d g1bot ]] && echo "g1bot est déjà installé" && exit 1
|
||||||
|
git clone https://git.p2p.legal/axiom-team/g1bot.git g1bot && cd g1bot || exit 1
|
||||||
|
npm install
|
||||||
|
cp .env.example .env
|
||||||
|
echo "Now edit url and password in .env in 3 seconds ..." && sleep 3
|
||||||
|
nano .env
|
||||||
|
|
||||||
|
export NODE_PATH=$GPATH/deps/g1bot/node_modules:$NODE_PATH
|
||||||
|
[[ -z $(grep "NODE_PATH=" ~/.bashrc) ]] && echo "export NODE_PATH=$GPATH/deps/g1bot/node_modules:$NODE_PATH" >> ~/.bashrc
|
||||||
|
pm2 kill && sleep 1
|
||||||
|
pm2 start bbot.js && echo "${c_green}BBOT a été correctement installé et a pu démarrer$c_" || echo "$c{c_gree,}BBOT n'a pas pu démarrer$c_"
|
||||||
|
|
||||||
|
exit 0
|
|
@ -1,6 +1,15 @@
|
||||||
|
### PROFILE ###
|
||||||
|
|
||||||
ADMINPSEUDO=_ADMINPSEUDO
|
ADMINPSEUDO=_ADMINPSEUDO
|
||||||
ADMINPHONE=_ADMINPHONE
|
ADMINPHONE=_ADMINPHONE
|
||||||
MASTERPHONE=_MASTERPHONE
|
MASTERPHONE=_MASTERPHONE
|
||||||
ADRESSE="_ADRESSE"
|
ADRESSE="_ADRESSE"
|
||||||
PIN=_PIN
|
PIN=_PIN
|
||||||
KSMS_DOMAIN=
|
KSMS_DOMAIN=
|
||||||
|
|
||||||
|
### SYSTEME ###
|
||||||
|
|
||||||
|
GPATH=_GPATH
|
||||||
|
OS=_OS
|
||||||
|
ARM=_ARM
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
User=_USER
|
User=_USER
|
||||||
ExecStart=/usr/local/bin/ipfs daemon --enable-pubsub-experiment --enable-namesys-pubsub --routing=dhtclient --enable-gc
|
ExecStart=/usr/local/bin/ipfs daemon --enable-pubsub-experiment --enable-namesys-pubsub --enable-gc
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
/key/swarm/psk/1.0.0/
|
|
||||||
/base16/
|
|
||||||
66f6fcfa6e89bc14721d905370dae9026442eb44fa4d0c92464da887074a234f
|
|
|
@ -2,7 +2,7 @@ server {
|
||||||
listen 80;
|
listen 80;
|
||||||
listen 443;
|
listen 443;
|
||||||
listen [::]:443 ssl;
|
listen [::]:443 ssl;
|
||||||
server_name _DOMAIN;
|
server_name _DOMAIN 127.0.0.1 localhost;
|
||||||
|
|
||||||
#add_header Content-Security-Policy upgrade-insecure-requests;
|
#add_header Content-Security-Policy upgrade-insecure-requests;
|
||||||
#if ($http_x_forwarded_proto = "http") { return 301 https://$server_name$request_uri; }
|
#if ($http_x_forwarded_proto = "http") { return 301 https://$server_name$request_uri; }
|
||||||
|
|
|
@ -7,19 +7,25 @@
|
||||||
|
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
if [[ -f $MY_PATH/.install/.GPATH ]]; then source $MY_PATH/.install/.GPATH; fi
|
if [[ -f $MY_PATH/.profile ]]; then
|
||||||
if [[ -f $MY_PATH/../.install/.GPATH ]]; then source $MY_PATH/../.install/.GPATH; fi
|
source $MY_PATH/.profile
|
||||||
|
elif [[ -f $MY_PATH/../.profile ]]; then
|
||||||
|
source $MY_PATH/../.profile
|
||||||
|
else
|
||||||
|
echo -e "${c_red}Le .profile n'existe pas$c_"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
source /home/pi/.bash_aliases
|
||||||
|
|
||||||
# Adapter les valeurs au contexte spatio-temporel du NODE G1SMS
|
# Adapter les valeurs au contexte spatio-temporel du NODE G1SMS
|
||||||
function log () {
|
function log () {
|
||||||
# log ($1=text)
|
# log ($1=text)
|
||||||
if [ "$DOLOG" == "YES" ]
|
if [ "$DOLOG" == "YES" ]
|
||||||
then
|
then
|
||||||
echo "$PHONE:$1" >> /tmp/g1sms.log
|
echo -e "$PHONE: $1" >> $logfile
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
###################################################################################################################################
|
###################################################################################################################################
|
||||||
fn_exists() {
|
fn_exists() {
|
||||||
# appended double quote is an ugly trick to make sure we do get a string -- if $1 is not a known command, type does not output anything
|
# appended double quote is an ugly trick to make sure we do get a string -- if $1 is not a known command, type does not output anything
|
||||||
|
@ -29,13 +35,12 @@ fn_exists() {
|
||||||
if ! fn_exists gammu-smsd-inject; then
|
if ! fn_exists gammu-smsd-inject; then
|
||||||
log ":p) DESACTIVATION ENVOI DE SMS .............."
|
log ":p) DESACTIVATION ENVOI DE SMS .............."
|
||||||
function gammu-smsd-inject () {
|
function gammu-smsd-inject () {
|
||||||
log "$PHONE: >>> SENDING SMS $4 TO $2 "
|
log "$PHONE: >>> SENDING SMS $4 TO $2 "
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
export G1SMS="YES"
|
export G1SMS="YES"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
export YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1);
|
export YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1);
|
||||||
cd $GPATH
|
cd $GPATH
|
||||||
##################################################################
|
##################################################################
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
#
|
||||||
|
# rc.local
|
||||||
|
#
|
||||||
|
# This script is executed at the end of each multiuser runlevel.
|
||||||
|
# Make sure that the script will "exit 0" on success or any other
|
||||||
|
# value on error.
|
||||||
|
#
|
||||||
|
# In order to enable or disable this script just change the execution
|
||||||
|
# bits.
|
||||||
|
#
|
||||||
|
# By default this script does nothing.
|
||||||
|
|
||||||
|
# Print the IP address
|
||||||
|
_IP=$(hostname -I) || true
|
||||||
|
if [ "$_IP" ]; then
|
||||||
|
printf "My IP address is %s\n" "$_IP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
|
@ -2,7 +2,14 @@
|
||||||
|
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
source $MY_PATH/../.install/.GPATH
|
if [[ -f $MY_PATH/.profile ]]; then
|
||||||
|
source $MY_PATH/.profile
|
||||||
|
elif [[ -f $MY_PATH/../.profile ]]; then
|
||||||
|
source $MY_PATH/../.profile
|
||||||
|
else
|
||||||
|
echo -e "${c_red}Le .profile n'existe pas$c_"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Clean /tmp/ytdl.list
|
# Clean /tmp/ytdl.list
|
||||||
#echo > /tmp/ytdl.list
|
#echo > /tmp/ytdl.list
|
||||||
|
|
2
_chain
|
@ -1 +1 @@
|
||||||
QmbVfLJ9UsnyV3Si9UgZVS4srCnL1c2Gqt7XissCV4iC83
|
QmWEyZDyn7XMM3pDFCBkDqC6XPAraTSLHbVD3h7geunNWy
|
||||||
|
|
|
@ -178,3 +178,6 @@ OK
|
||||||
2019-12-20: NOW
|
2019-12-20: NOW
|
||||||
2019-12-21: Various
|
2019-12-21: Various
|
||||||
2019-12-24:
|
2019-12-24:
|
||||||
|
2019-12-26: SWARMKEY
|
||||||
|
2019-12-26: ipfs p2p listen /x/$YOU /ip4/127.0.0.1/tcp/80
|
||||||
|
2019-12-26: ./wallets/sha256sum(PHONE)
|
||||||
|
|
BIN
_publishkey.gpg
|
@ -0,0 +1 @@
|
||||||
|
biz-bot-admin
|
|
@ -0,0 +1,19 @@
|
||||||
|
const bot = require('bbot');
|
||||||
|
const exec = require('child_process').exec;
|
||||||
|
const fs = require('fs');
|
||||||
|
const util = require('util')
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
contains: ['biz aide','biz help']
|
||||||
|
}, (b) => {
|
||||||
|
membres = exec("src/shell/aide.sh text", function(err, stdout, stderr) {
|
||||||
|
if (err) {
|
||||||
|
b.respond("Une erreur est survenue ...")
|
||||||
|
} else {
|
||||||
|
b.respond(stdout)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, {
|
||||||
|
id: 'biz-aide'
|
||||||
|
});
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
const bot = require('bbot');
|
||||||
|
const exec = require('child_process').exec;
|
||||||
|
|
||||||
|
//ADMINS
|
||||||
|
//var adminRooms = exec("cat admins-chan.txt"); //cat admins-chan.txt");
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
contains: ['axiom adhérent','axiom adhérents','axiom adherent','axiom adherents']
|
||||||
|
}, (b) => {
|
||||||
|
// cmd = b.message.text
|
||||||
|
|
||||||
|
if (b.message.user.room.type == "p") {
|
||||||
|
roomName = b.message.user.room.name
|
||||||
|
} else {
|
||||||
|
roomName = b.message.user.name
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (adminRooms.indexOf(roomName) == -1) {
|
||||||
|
if (['biz-bot-admin', 'poka', 'brad.pi', '_pole_financements', '_axiom_business_plan', 'compta-axiom', 'communication', '_recrutement'].includes(roomName)) {
|
||||||
|
cmd = "adherents"
|
||||||
|
process.env.hb_cmd = cmd
|
||||||
|
} else {
|
||||||
|
b.respond("Réservé aux administrateurs de l'association.")
|
||||||
|
}
|
||||||
|
|
||||||
|
pubkey = exec("src/shell/helloasso.sh $hb_cmd", function(err, stdout, stderr) {
|
||||||
|
if (err) {
|
||||||
|
b.respond("Une erreur est survenue ...")
|
||||||
|
} else {
|
||||||
|
b.respond(stdout)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, {
|
||||||
|
id: 'axiom-adherents'
|
||||||
|
});
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
contains: ['axiom cagnotte']
|
||||||
|
}, (b) => {
|
||||||
|
membres = exec("src/shell/helloasso.sh cagnotte", function(err, stdout, stderr) {
|
||||||
|
if (err) {
|
||||||
|
b.respond("Une erreur est survenue ...")
|
||||||
|
} else {
|
||||||
|
b.respond(stdout)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, {
|
||||||
|
id: 'axiom-cagnotte'
|
||||||
|
});
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
const bot = require('bbot');
|
||||||
|
const exec = require('child_process').exec;
|
||||||
|
const util = require('util');
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
contains: ['debug user']
|
||||||
|
}, (b) => {
|
||||||
|
username = b.message
|
||||||
|
// const userId = res.message.user.id
|
||||||
|
// username = robot.adapter.api.get('users.info', { userId })
|
||||||
|
// process.env.hb_username = username
|
||||||
|
b.reply("```" + util.inspect(username, {showHidden: false, depth: null}) + "```")
|
||||||
|
|
||||||
|
|
||||||
|
}, {
|
||||||
|
id: 'debug'
|
||||||
|
});
|
|
@ -0,0 +1,201 @@
|
||||||
|
const bot = require('bbot')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All branch examples start from the "global" conversation scope.
|
||||||
|
* We are working on features to provide branching within a conversational
|
||||||
|
* context, but as those methods are changing in the beta, they aren't included
|
||||||
|
* as examples to follow just yet.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Branch types are declared from their scope, see all available types here:
|
||||||
|
* http://bbot.chat/docs/path#builtforbranching
|
||||||
|
*
|
||||||
|
* `text` branches take the following arguments:
|
||||||
|
* - matcher: expression, semantic conditions object, or array of conditions
|
||||||
|
* - callback: to fire on successful match, given the state object (b)
|
||||||
|
* - [options]: object with `id` (string) and/or `force` (boolean) attributes
|
||||||
|
*
|
||||||
|
* Test with "Hello bots!"
|
||||||
|
*/
|
||||||
|
bot.global.text(/(hi|hello).*bots?/, (b) => b.respond('Hello :wave:'), {
|
||||||
|
id: 'hello-bots'
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* `direct` branch type requires the bot to be explicitly addressed.
|
||||||
|
*
|
||||||
|
* `reply` instead of `respond` prepends messages with user's name.
|
||||||
|
*
|
||||||
|
* In Rocket.Chat all messages to a bot in a direct room have the name prepended
|
||||||
|
* by the Rocket.Chat SDK before it's processed by the bot framework.
|
||||||
|
*
|
||||||
|
* Test with "@brocket Hello" or just "Hello" in a DM.
|
||||||
|
*/
|
||||||
|
bot.global.direct(/hi|hello/i, (b) => b.reply('Hey there.'), {
|
||||||
|
id: 'hello-direct'
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* `respondVia` allows using custom platform methods to dispatch response.
|
||||||
|
*
|
||||||
|
* Matcher conditions allow semantic attributes with a string or array of
|
||||||
|
* optional values to match against, possibly capturing content.
|
||||||
|
* Accepted atts: is, starts, ends, contains, excludes, after, before, range
|
||||||
|
*
|
||||||
|
* Test with "Hello anyone?"
|
||||||
|
*/
|
||||||
|
bot.global.text({
|
||||||
|
contains: ['hi', 'hello']
|
||||||
|
}, (b) => b.respondVia('react', ':wave:'), {
|
||||||
|
id: 'hello-react'
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Branch callbacks allow asynchronous responding, if they return a promise.
|
||||||
|
* State (b) includes branch matching attributes, see bbot.chat/docs/thought.
|
||||||
|
*
|
||||||
|
* Test with "@brocket ping back in 5 seconds"
|
||||||
|
*/
|
||||||
|
bot.global.direct(/ping back in (\d*)/i, async (b) => {
|
||||||
|
const ms = parseInt(b.match[1]) * 1000
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, ms))
|
||||||
|
return b.respond('Ping :ping_pong:')
|
||||||
|
}, {
|
||||||
|
id: 'ping-delay'
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The `respond` method can accept attachment objects as well as strings.
|
||||||
|
* Rendering support depends on the message platform and adapter. In shell,
|
||||||
|
* it will display the fallback text.
|
||||||
|
*
|
||||||
|
* Test with "bot attach image"
|
||||||
|
*/
|
||||||
|
bot.global.text(/attach image/i, (b) => {
|
||||||
|
return b.respond({
|
||||||
|
fallback: `See: https://www.wikiwand.com/en/Three_Laws_of_Robotics`,
|
||||||
|
image: `https://upload.wikimedia.org/wikipedia/en/8/8e/I_Robot_-_Runaround.jpg`,
|
||||||
|
title: {
|
||||||
|
text: `Asimov's Three Laws of Robotics`,
|
||||||
|
link: `https://www.wikiwand.com/en/Three_Laws_of_Robotics`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}, { id: 'attach-image' })
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The `envelope` provides helpers for adding rich-message payloads before
|
||||||
|
* responding. Preparing envelopes before dispatch also allows changing the
|
||||||
|
* user/room the envelope is addressed to or dispatching multiple envelopes.
|
||||||
|
*
|
||||||
|
* Test with "I want a prize"
|
||||||
|
*/
|
||||||
|
bot.global.text({
|
||||||
|
contains: 'prize'
|
||||||
|
}, (b) => {
|
||||||
|
b.envelope.write('Choose your fate! 🚪... 🎁 ')
|
||||||
|
b.envelope.attach({ color: '#f4426e' })
|
||||||
|
b.envelope.payload
|
||||||
|
.quickReply({ text: 'Door number 1' })
|
||||||
|
.quickReply({ text: 'Door number 2' })
|
||||||
|
.quickReply({ text: 'Door number 3' })
|
||||||
|
return b.respond().catch((err) => console.error(err))
|
||||||
|
}, { id: 'door-prize-intro' })
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The `conditions` attribute contains results of semantic condition matching
|
||||||
|
* and capture groups. Each condition can be given a key for easy reference.
|
||||||
|
*
|
||||||
|
* Test with "what's behind door number 2"
|
||||||
|
*/
|
||||||
|
bot.global.text({
|
||||||
|
door: { after: 'door', range: '1-3' }
|
||||||
|
}, (b) => {
|
||||||
|
switch (b.conditions.captured.door) {
|
||||||
|
case '1': return b.respond(`You win nothing 💔`)
|
||||||
|
case '2': return b.respond(`You win a monkey 🐒`)
|
||||||
|
case '3': return b.respond(`It's a new car!! 🚗`)
|
||||||
|
}
|
||||||
|
}, { id: 'door-prize-award' })
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Branch callbacks can be async functions, to awaiting one or more processes
|
||||||
|
* before responding. This example uses API requests to fill a dynamic array
|
||||||
|
* of actions, using the url property to provide link action buttons.
|
||||||
|
*
|
||||||
|
* Test with "@brocket plan meeting" in a public or private room.
|
||||||
|
*/
|
||||||
|
bot.global.direct({
|
||||||
|
is: 'plan meeting'
|
||||||
|
}, async (b) => {
|
||||||
|
if (bot.adapters.message.name !== 'rocketchat-message-adapter') return
|
||||||
|
b.envelope.write('Please review time zones in the room...')
|
||||||
|
const { id, type } = b.message.user.room
|
||||||
|
let room
|
||||||
|
const q = { roomId: id }
|
||||||
|
if (type === 'c') {
|
||||||
|
room = await bot.adapters.message.api.get('channels.members', q, true)
|
||||||
|
} else if (type === 'p') {
|
||||||
|
room = await bot.adapters.message.api.get('groups.members', q, true)
|
||||||
|
} else {
|
||||||
|
return b.respond('Sorry, that only works in channels and private groups.')
|
||||||
|
}
|
||||||
|
const offsets = room.members
|
||||||
|
.map((member) => member.utcOffset || undefined)
|
||||||
|
.filter((offset) => !!offset)
|
||||||
|
for (let utc of offsets) {
|
||||||
|
b.envelope.payload.quickReply({
|
||||||
|
text: `🌐 UTC ${utc}`,
|
||||||
|
url: `https://www.timeanddate.com/worldclock/timezone/utc${utc}`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
b.respond()
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @todo This example requires PR #11811 to be merged. Room names are undefined.
|
||||||
|
*/
|
||||||
|
bot.global.text(/where am i/i, (b) => {
|
||||||
|
const { name, type } = b.message.user.room
|
||||||
|
switch (type) {
|
||||||
|
case 'c': return b.respond(`You're in the #${name} public channel.`)
|
||||||
|
case 'p': return b.respond(`You're in a private group called **${name}**.`)
|
||||||
|
case 'l': return b.respond(`You're in a livechat channel.`)
|
||||||
|
case 'd': return b.respond(`You're in a DM with me :hugging:`)
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
id: 'location-check'
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom options can be added to the bot, with the full config utility of bBot,
|
||||||
|
* allowing them to be defined as environment variables, command line args or
|
||||||
|
* package.json attributes. Extend settings with a yargs option format.
|
||||||
|
*
|
||||||
|
* Try any of the following:
|
||||||
|
* - `node index.js --avatar <YOUR_AVATAR_URL>`
|
||||||
|
* - BOT_AVATAR=<YOUR_AVATAR_URL> in .env
|
||||||
|
* - `{ "bot": { "avatar": "<YOUR_AVATAR_URL>" } }` in package.json
|
||||||
|
*/
|
||||||
|
bot.settings.extend({
|
||||||
|
avatar: {
|
||||||
|
'type': 'string',
|
||||||
|
'description': 'Set a custom avatar for your bot account profile'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The bot can access lower level methods of the Rocket.Chat SDK through the
|
||||||
|
* message adapter, once it's connected. This example sets an avatar on login.
|
||||||
|
*
|
||||||
|
* Try replacing the avatar configured in package.json with your own.
|
||||||
|
*/
|
||||||
|
bot.events.on('started', () => {
|
||||||
|
if (bot.adapters.message.name !== 'rocketchat-message-adapter') return
|
||||||
|
if (bot.settings.get('avatar')) {
|
||||||
|
bot.logger.info('Setting bot avatar')
|
||||||
|
bot.adapters.message.api.post('users.setAvatar', {
|
||||||
|
avatarUrl: bot.settings.get('avatar')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
|
@ -0,0 +1,33 @@
|
||||||
|
const bot = require('bbot');
|
||||||
|
const exec = require('child_process').exec;
|
||||||
|
const fs = require('fs');
|
||||||
|
const util = require('util')
|
||||||
|
|
||||||
|
bot.global.text({ contains: [''] }, (b) => b.respond(""), {
|
||||||
|
id: 'id-tpl'
|
||||||
|
})
|
||||||
|
|
||||||
|
// --------
|
||||||
|
|
||||||
|
bot.global.text({ contains: [''] }, (b) => {
|
||||||
|
b.respond("")
|
||||||
|
}, {
|
||||||
|
id: 'id-tpl-2'
|
||||||
|
});
|
||||||
|
|
||||||
|
// --------
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
contains: ['']
|
||||||
|
}, (b) => {
|
||||||
|
membres = exec("src/shell/.sh", function(err, stdout, stderr) {
|
||||||
|
if (err) {
|
||||||
|
b.respond("Une erreur est survenue ...")
|
||||||
|
} else {
|
||||||
|
b.respond(stdout)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, {
|
||||||
|
id: 'id-tpl-3'
|
||||||
|
});
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
|
||||||
|
const bot = require('bbot');
|
||||||
|
const request = require('request');
|
||||||
|
const decodeEntities = require('decode-entities');
|
||||||
|
//var decode = require('unescape');
|
||||||
|
|
||||||
|
var request_options = {
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'crabot retrieving url metadata (https://wiki.crapaud-fou.org/crabot)'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bot.global.text(/(https?:\/\/[^ ,\)"\n]*)/ig, async (b) => {
|
||||||
|
// console.log(JSON.stringify(b.match, null, 2));
|
||||||
|
for (url of b.match) {
|
||||||
|
// console.log(JSON.stringify(url, null, 2));
|
||||||
|
if (!/(coa|pad)\.crapaud-fou\.org/.test(url)) {
|
||||||
|
request_options.url = url;
|
||||||
|
request(request_options, (err, res, body) => {
|
||||||
|
// console.log(JSON.stringify(res, null, 2));
|
||||||
|
if (!err && res.statusCode === 200) {
|
||||||
|
var re = /<title[^>]*>([^<]*)<\/title>/gi;
|
||||||
|
var match = re.exec(body);
|
||||||
|
if (match && match[1]) {
|
||||||
|
var extra = "";
|
||||||
|
var link = res.request.uri.href;
|
||||||
|
link = link.replace(/[\?&]fbclid=.+/gi, "");
|
||||||
|
link = link.replace(/[\?&]ncid=.+/gi, "");
|
||||||
|
//kopa match[1] = match[1].replace("'", "'");
|
||||||
|
if (/youtube.com/.test(link)) {
|
||||||
|
if (t = /[?&]v=([^&]+)/.exec(link)) {
|
||||||
|
link = "https://www.youtube.com/watch?v=" + t[1];
|
||||||
|
extra += " - [no-cookie](https://www.youtube-nocookie.com/embed/" + t[1] + ")";
|
||||||
|
extra += " - [invidious](https://invidio.us/watch?v=" + t[1] + ")";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b.respond(decodeEntities("[>>>](" + link + ") _" + match[1].replace(/\n/g, " ").trim() + "_" + extra));
|
||||||
|
// b.respond("\>\>\>\> _" + match[1].replace(/\n/g, " ").trim() + "_" + extra);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('-----------------------------------');
|
||||||
|
console.log('URL: ' + url);
|
||||||
|
console.log('ERR - - - - - - - - - - - - - - - -');
|
||||||
|
console.log(JSON.stringify(err, null, 2));
|
||||||
|
console.log('RES - - - - - - - - - - - - - - - -');
|
||||||
|
console.log(JSON.stringify(res, null, 2));
|
||||||
|
console.log('-----------------------------------');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
id: 'get-url-metadata'
|
||||||
|
});
|
|
@ -0,0 +1,35 @@
|
||||||
|
const bot = require('bbot');
|
||||||
|
const exec = require('child_process').exec;
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
starts: ['pubkey','rib','brocket rib', 'brocket pubkey']
|
||||||
|
}, (b) => {
|
||||||
|
username = b.message.user.name
|
||||||
|
cmd = b.message.text
|
||||||
|
process.env.hb_username = username
|
||||||
|
process.env.hb_cmd = cmd
|
||||||
|
pubkey = exec("src/shell/g1-infos.sh pubkey $hb_username \"$hb_cmd\"", function(err, stdout, stderr) {
|
||||||
|
if (err) {
|
||||||
|
b.respond("Une erreur est survenue ...")
|
||||||
|
} else {
|
||||||
|
b.respond(stdout)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, {
|
||||||
|
id: 'g1-pubkey'
|
||||||
|
});
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
contains: ['membres g1','g1 membre','g1 membres']
|
||||||
|
}, (b) => {
|
||||||
|
membres = exec("src/shell/g1-infos.sh membres", function(err, stdout, stderr) {
|
||||||
|
if (err) {
|
||||||
|
b.respond("Une erreur est survenue ...")
|
||||||
|
} else {
|
||||||
|
b.respond(stdout)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, {
|
||||||
|
id: 'g1-membres'
|
||||||
|
});
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
const bot = require('bbot');
|
||||||
|
const exec = require('child_process').exec;
|
||||||
|
const fs = require('fs');
|
||||||
|
const util = require('util')
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
contains: ['TEST BSMS']
|
||||||
|
}, async (b) => {
|
||||||
|
await b.respond("Test de G1SMS ...")
|
||||||
|
const username = b.message.user.id
|
||||||
|
membres = exec("g1sms/test.sh chat", function(err, stdout, stderr) {
|
||||||
|
if (err) {
|
||||||
|
b.respond("Une erreur est survenue ...")
|
||||||
|
} else {
|
||||||
|
b.respond(stdout)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, {
|
||||||
|
id: 'sms-test'
|
||||||
|
});
|
|
@ -0,0 +1,11 @@
|
||||||
|
*Voici ce que je sais faire ...*
|
||||||
|
|
||||||
|
```
|
||||||
|
- biz aide: Affiche cette aide
|
||||||
|
- biz liens: Donne des liens utiles
|
||||||
|
- index pads: Donne le lien vers l'index de nos pads
|
||||||
|
- membres: Affiche le nombre de membres actuelles de la Ğ1
|
||||||
|
- pubkey [pseudo]: Affiche sa propre clé publique Ğ1 si [pseudo] n'est pas renseigné, ou bien celle du pseudo indiqué
|
||||||
|
- axiom adhérents: Affiche les adhérents de l'association
|
||||||
|
- axiom cagnotte: Affiche le status de la cagnotte de l'association
|
||||||
|
```
|
|
@ -0,0 +1,6 @@
|
||||||
|
index pad !! https://pad.p2p.legal/axiom_index-pads
|
||||||
|
Site officiel de l'association Axiom-Team !! https://axiom-team.fr/
|
||||||
|
Forum de l'asso axiom-team !! https://forum.axiom-team.fr/
|
||||||
|
Cloud publique axiom - Ressources Agora !! https://cloud.p2p.legal/s/DDbKi2pqdEmixS9
|
||||||
|
Cloud interne axiom _(Nécessite un accès)_ !! https://cloud.p2p.legal/f/204193`
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
5 personnes membres vous connaissent-elles bien ? Peuvent-elles vous contacter ? Contacter votre entourage ? Avez-vous sauvegardé votre document de révocation ? Avez-vous installé un client local sur votre ordinateur/smartphone comme Cesium ?
|
||||||
|
|
||||||
|
Si oui -> vous connaissez certainement ces personnes vous aussi, et pouvez leur demander.
|
||||||
|
Si non -> il va vous falloir créer des liens avec des membres, conformément à la **[licence](https://duniter.org/fr/wiki/licence-g1/)** que vous devez lire, comprendre et accepter.
|
||||||
|
|
||||||
|
Je vous invite également à lire le **[guide du débutant](https://forum.monnaie-libre.fr/t/00-intro-guide-du-debutant-en-monnaie-libre-g1-june/2777)**, et surtout à vous renseigner sur les rencontres de présentation de la monnaie libre autour de chez vous, pour créer des relations humaines réelles.
|
||||||
|
|
||||||
|
Bienvenue, et bonnes découvertes !
|
|
@ -0,0 +1,6 @@
|
||||||
|
OBSCURANTISTE!
|
||||||
|
MENTEUR!
|
||||||
|
Toute mlc ne sert qu'à nuire à l’eveil de conscience sur la création monétaire.
|
||||||
|
Avez vous déjà vérifié les arguments (fallacieux) servis par les rabatteurs de mlc?
|
||||||
|
Les mlc coutent un bras au profit des banques et de quelques « chiens de garde» de leur salaire en unl qui en découle (rabatteurs).
|
||||||
|
La plus grosse mlc de l’histoire j’ai analysé: La mlc argentine en 2001. Elle a permis l’emergence de Monsanto compagny en 2002. N’hésitez pas à vérifier.
|
|
@ -0,0 +1,23 @@
|
||||||
|
const bot = require('bbot');
|
||||||
|
const exec = require('child_process').exec;
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
bot.global.text({ contains: ['vtfn','si tes pas content','si t\'es pas content'] }, (b) => b.respond(":arrow_right: https://vatefairecuireunnem.com/"), {
|
||||||
|
id: 'joke-vtfn'
|
||||||
|
})
|
||||||
|
|
||||||
|
bot.global.text({ contains: ['biz présente toi'] }, (b) => b.respond(":arrow_right: https://matiou.biz"), {
|
||||||
|
id: 'joke-presente'
|
||||||
|
})
|
||||||
|
|
||||||
|
// L'infernal matiou sur les MLC ...
|
||||||
|
let bizbi = fs.readFileSync('./src/inc/repliques-mlc.txt', 'utf8');
|
||||||
|
bizbi = bizbi.split('\n')
|
||||||
|
function randomize(toRand) {
|
||||||
|
resultRand = toRand[Math.floor(Math.random()*toRand.length)]
|
||||||
|
return resultRand;
|
||||||
|
}
|
||||||
|
bot.global.text({ contains: ['mlc'] }, (b) => b.respond(randomize(bizbi)), {
|
||||||
|
id: 'joke-presente'
|
||||||
|
})
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
const bot = require('bbot');
|
||||||
|
const exec = require('child_process').exec;
|
||||||
|
const fs = require('fs');
|
||||||
|
const util = require('util')
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
contains: ['biz lien','biz liens']
|
||||||
|
}, (b) => {
|
||||||
|
cmd = b.message.text
|
||||||
|
process.env.hb_cmd = cmd
|
||||||
|
membres = exec("src/shell/liens.sh $hb_cmd", function(err, stdout, stderr) {
|
||||||
|
if (err) {
|
||||||
|
b.respond("Une erreur est survenue ...")
|
||||||
|
} else {
|
||||||
|
b.respond(stdout)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, {
|
||||||
|
id: 'biz-liens'
|
||||||
|
});
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
|
||||||
|
const bot = require('bbot');
|
||||||
|
const globe_delay = 60000; // 1 minute
|
||||||
|
var globe_said = {};
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
contains: ['facebook', 'google', 'amazon', 'apple', 'microsoft', 'youtube']
|
||||||
|
}, (b) => {
|
||||||
|
b.respondVia('react', ':hear_no_evil:');
|
||||||
|
}, {
|
||||||
|
id: 'gafam-react'
|
||||||
|
});
|
||||||
|
|
||||||
|
bot.global.text(
|
||||||
|
/pe?tit? globe/i
|
||||||
|
, (b) => {
|
||||||
|
if (!globe_said[b.message.user.room] || new Date().getTime() > globe_said[b.message.user.room] + globe_delay) {
|
||||||
|
b.respond('![pti globe](https://crapaud-fou.org/images/chat-ptiglobe.png)');
|
||||||
|
globe_said[b.message.user.room] = new Date().getTime();
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
id: 'ptiglobe-direct'
|
||||||
|
})
|
|
@ -0,0 +1,22 @@
|
||||||
|
const bot = require('bbot');
|
||||||
|
const exec = require('child_process').exec;
|
||||||
|
|
||||||
|
bot.global.text({
|
||||||
|
is: ['biz reload']
|
||||||
|
}, (b) => {
|
||||||
|
function reload() {
|
||||||
|
pubkey = exec("pm2 reload bbot --force", function(err, stdout, stderr) {
|
||||||
|
if (err) {
|
||||||
|
b.respond("Une erreur est survenue: " + " - " + stderr)
|
||||||
|
} else {
|
||||||
|
b.respond("Biz a été rechargé")
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
b.respond("Biz redémarre ... OK dans 5 secondes")
|
||||||
|
setTimeout(reload, 10);
|
||||||
|
|
||||||
|
}, {
|
||||||
|
id: 'reload-scripts'
|
||||||
|
});
|
|
@ -0,0 +1,12 @@
|
||||||
|
const bot = require('bbot');
|
||||||
|
const exec = require('child_process').exec;
|
||||||
|
const fs = require('fs');
|
||||||
|
const util = require('util')
|
||||||
|
|
||||||
|
bot.global.text({ contains: ['me certifier','me faire certifier','je cherche une certification','je cherche des certifications'] }, (b) => {
|
||||||
|
// Lisez la licence Ḡ1 ...
|
||||||
|
let newml = fs.readFileSync('./src/inc/need-certif.txt', 'utf8');
|
||||||
|
b.respond("Bonjour, et bienvenue @" + b.message.user.name + " ! =)" + newml)
|
||||||
|
}, {
|
||||||
|
id: 'rep-certif'
|
||||||
|
});
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
auto() {
|
||||||
|
echo "*Je suis l'aide auto*"
|
||||||
|
cd src
|
||||||
|
|
||||||
|
#cmds=$(grep "^bot\." *.js -A3 | grep -E "\['|aide = ")
|
||||||
|
cmds=$(grep "\['" *.js | awk -F "[" '{ print $2 }' | awk -F "]" '{ print $1 }')
|
||||||
|
IFS=$'\n'
|
||||||
|
for i in $cmds; do
|
||||||
|
echo "$i" | awk -F "'" '{ print $2 }'
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
text() {
|
||||||
|
cat src/inc/aide.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
$@
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
node="https://duniter-g1.p2p.legal"
|
||||||
|
|
||||||
|
pubkey() {
|
||||||
|
url="$node/wot/members"
|
||||||
|
if [[ "$@" =~ "brocket" ]]; then
|
||||||
|
[[ $4 ]] && username=$4 || username=$1
|
||||||
|
else
|
||||||
|
[[ $3 ]] && username=$3 || username=$1
|
||||||
|
fi
|
||||||
|
username=$(echo $username | tr -d '@')
|
||||||
|
local pubkey=$(curl -m 5 -s $url | grep -w -i -B 1 $username | grep "pubkey" | awk -F '"' '{ print $4 }')
|
||||||
|
# TODO: local pubkey=$(curl -m 5 -s $url | jq -r --arg username "$username" '.results[] | select(.uid=="$username") | .pubkey')
|
||||||
|
[[ $pubkey ]] && echo "@$username Ta clé publique Ğ1 est: $pubkey" || echo "@$username n'est pas pseudo membre de la Ḡ1"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
membres() {
|
||||||
|
url="$node/blockchain/current"
|
||||||
|
local nbr_membres=$(curl -m 5 -s $url | jq '.membersCount')
|
||||||
|
[[ $nbr_membres ]] && echo "Il y a actuellement $nbr_membres membres de la Ğ1 !" || echo "Service en maintenance, réessayez dans un instant :coffee:"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$@
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ~/.adm/helloasso/ids
|
||||||
|
ha="https://api.helloasso.com/v3"
|
||||||
|
|
||||||
|
adherents() {
|
||||||
|
url="$ha/campaigns/000001053192/actions.json?type"
|
||||||
|
list=$(curl -m 5 --user $ids -s $url | jq -r '.resources[] | .date + " , " + .first_name + " " + .last_name + " - " + .email' | sed 's/T.*,//')
|
||||||
|
|
||||||
|
echo "$list" | awk '!seen[$3]++'
|
||||||
|
|
||||||
|
nbrAdherents=$(echo "$list" | awk '!seen[$3]++' | wc -l)
|
||||||
|
|
||||||
|
echo "---"
|
||||||
|
echo -e "\n Il y a actuellement **$nbrAdherents adhérents** de l'association Axiom-Team."
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
adherentsSoft() {
|
||||||
|
url="$ha/campaigns/000001053192/actions.json?type"
|
||||||
|
curl -m 5 --user $ids -s $url | jq -r '.resources[] | .date + " , " + .first_name + " " + .last_name' | sed 's/T.*,//'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
cagnotte() {
|
||||||
|
url="$ha/campaigns/000001053192.json"
|
||||||
|
list=$(curl -m 5 --user $ids -s $url | jq -r '.name, {"Donnateurs": .supporters},{"Fonds":.funding},.url' | tr -d '{|}')
|
||||||
|
# list=$(curl -m 5 --user $ids -s $url | jq -r '{"Donnateurs": .supporters},{"Fonds":.funding},.url' | tr -d '{|}')
|
||||||
|
|
||||||
|
name=$(echo "$list" | head -n1)
|
||||||
|
url=$(echo "$list" | tail -n1)
|
||||||
|
donnateurs=$(echo "$list" | grep "Donnateurs" | awk '{ print $2 }')
|
||||||
|
fonds=$(echo "$list" | grep "Fonds" | awk '{ print $2 }')
|
||||||
|
|
||||||
|
echo "Il y a **${fonds}€** pour **$donnateurs donnateurs** sur la cagnotte **\"$name\"**"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$@
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z $3 ]]; then
|
||||||
|
res=$(sed 's/!!/:arrow_right:/g' src/inc/liens.txt)
|
||||||
|
else
|
||||||
|
shift 2
|
||||||
|
res=$(sed 's/!!/:arrow_right:/g' src/inc/liens.txt | grep -i "$@")
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ $res ]] && echo "$res" || echo "Aucun lien trouvé avec **$@**"
|
||||||
|
|
||||||
|
exit 0
|
|
@ -9,6 +9,8 @@ if [ ! -e /sys/class/gpio/gpio4 ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "out" > /sys/class/gpio/gpio4/direction
|
echo "out" > /sys/class/gpio/gpio4/direction
|
||||||
|
echo "0" > /sys/class/gpio/gpio4/value
|
||||||
|
sleep 3
|
||||||
echo "1" > /sys/class/gpio/gpio4/value
|
echo "1" > /sys/class/gpio/gpio4/value
|
||||||
|
|
||||||
sleep 3 && $MY_PATH/gammu-restart.sh
|
sleep 3 && $MY_PATH/gammu-restart.sh
|
||||||
|
|
46
install.sh
|
@ -7,8 +7,6 @@
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
|
|
||||||
echo "GPATH=$MY_PATH" > $MY_PATH/.install/.GPATH
|
|
||||||
source $MY_PATH/.install/.GPATH
|
|
||||||
|
|
||||||
init_loc="$MY_PATH/shell/init.sh"
|
init_loc="$MY_PATH/shell/init.sh"
|
||||||
now=$(date +%Y-%m-%d)
|
now=$(date +%Y-%m-%d)
|
||||||
|
@ -17,19 +15,36 @@ unset err
|
||||||
## Récupère les données du profile
|
## Récupère les données du profile
|
||||||
[[ -f $MY_PATH/.profile ]] && source $MY_PATH/.profile
|
[[ -f $MY_PATH/.profile ]] && source $MY_PATH/.profile
|
||||||
|
|
||||||
|
help() {
|
||||||
|
clear
|
||||||
|
echo -e "${c_light}Bienvenue à bord de Ḡ1Bot !$c_
|
||||||
|
Laissez vous guider par cet installeur, ou bien renseignez lui en argument:
|
||||||
|
- all : Répond oui à tous sans poser de questions
|
||||||
|
- noptions : Ne propose d'installer aucune options, juste le minimum
|
||||||
|
- force : Met à jour les dépendances
|
||||||
|
- noask : Ne demande pas de confirmations aux questions
|
||||||
|
|
||||||
|
Si vous souhaitez installer un composant précis, vous pouvez executer directement les scripts présents dans le dossier \".install/\"
|
||||||
|
"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
## Récupère les arguments
|
## Récupère les arguments
|
||||||
args="$@"
|
args="$@"
|
||||||
[[ $args =~ all ]] && repOption=o
|
[[ $args =~ all ]] && repOption=o
|
||||||
[[ $args =~ noptions ]] && repOption=n
|
[[ $args =~ noptions ]] && repOption=n
|
||||||
[[ $args =~ force ]] && force_req=o
|
[[ $args =~ force ]] && force_req=o
|
||||||
[[ $args =~ noask ]] && noask=o
|
[[ $args =~ noask ]] && noask=o
|
||||||
|
[[ $args =~ ^(help|-h|--help|aide)$ ]] && help
|
||||||
|
|
||||||
## Vérifie le type de système
|
## Vérifie le type de système
|
||||||
[[ $(uname -a | grep arm) ]] && isARM=YES || unset isARM
|
[[ $(uname -a | grep arm) ]] && ARM=yes || unset isARM
|
||||||
if [[ $(grep -E 'stretch|18.|19.' /etc/os-release) ]]; then OS=stretch;
|
if [[ $(grep -E 'stretch|18.|19.' /etc/os-release) ]]; then OS=stretch;
|
||||||
elif [[ $(grep buster /etc/os-release) ]]; then OS=buster;
|
elif [[ $(grep buster /etc/os-release) ]]; then OS=buster;
|
||||||
else echo "${c_red}Votre OS n'est pas supporté$c_"; exit 1; fi
|
else echo "${c_red}Votre OS n'est pas supporté$c_"; exit 1; fi
|
||||||
echo -e "$OS\n$isARM" > .install/.OS
|
sed -i 's/_OS/$OS/g' $MY_PATH/.profile
|
||||||
|
sed -i 's/_ARM/$ARM/g' $MY_PATH/.profile
|
||||||
|
sed -i 's/_GPATH/$MY_PATH/g' $MY_PATH/.profile
|
||||||
|
|
||||||
unset err
|
unset err
|
||||||
|
|
||||||
|
@ -79,18 +94,21 @@ if [[ -f $MY_PATH/.install/templates/init.sh ]]; then
|
||||||
[[ -f shell/init.sh ]] && mv shell/init.sh shell/init.sh.old
|
[[ -f shell/init.sh ]] && mv shell/init.sh shell/init.sh.old
|
||||||
cp $MY_PATH/.install/templates/init.sh shell/init.sh || err+=1
|
cp $MY_PATH/.install/templates/init.sh shell/init.sh || err+=1
|
||||||
|
|
||||||
sed -i s/_MASTERPHONE/$MASTERPHONE/g $init_loc
|
sed -i "s/_MASTERPHONE/$MASTERPHONE/g" $init_loc
|
||||||
sed -i s/_ADRESSE/$ADRESSE/g $init_loc
|
sed -i "s/_ADRESSE/$ADRESSE/g" $init_loc
|
||||||
sed -i s/_ADMINPHONE/$ADMINPHONE/g $init_loc
|
sed -i "s/_ADMINPHONE/$ADMINPHONE/g" $init_loc
|
||||||
sed -i s/_ADMINPSEUDO/$ADMINPSEUDO/g $init_loc
|
sed -i "s/_ADMINPSEUDO/$ADMINPSEUDO/g" $init_loc
|
||||||
|
|
||||||
if [[ ! -f $MY_PATH/.profile ]]; then
|
if [[ ! -f $MY_PATH/.profile ]]; then
|
||||||
cp $MY_PATH/.install/templates/.profile $MY_PATH/
|
cp $MY_PATH/.install/templates/.profile $MY_PATH/
|
||||||
sed -i s/_MASTERPHONE/$MASTERPHONE/g $MY_PATH/.profile
|
sed -i "s/_MASTERPHONE/$MASTERPHONE/g" $MY_PATH/.profile
|
||||||
sed -i s/_ADRESSE/$ADRESSE/g $MY_PATH/.profile
|
sed -i "s/_ADRESSE/$ADRESSE/g" $MY_PATH/.profile
|
||||||
sed -i s/_ADMINPHONE/$ADMINPHONE/g $MY_PATH/.profile
|
sed -i "s/_ADMINPHONE/$ADMINPHONE/g" $MY_PATH/.profile
|
||||||
sed -i s/_ADMINPSEUDO/$ADMINPSEUDO/g $MY_PATH/.profile
|
sed -i "s/_ADMINPSEUDO/$ADMINPSEUDO/g" $MY_PATH/.profile
|
||||||
sed -i s/_PIN/$PIN/g $MY_PATH/.profile
|
sed -i "s/_PIN/$PIN/g" $MY_PATH/.profile
|
||||||
|
sed -i "s/_OS/$OS/g" $MY_PATH/.profile
|
||||||
|
sed -i "s/_ARM/$ARM/g" $MY_PATH/.profile
|
||||||
|
sed -i "s/_GPATH/$MY_PATH/g" $MY_PATH/.profile
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
|
@ -111,6 +129,8 @@ if [[ $repOption =~ ^(o|1|yes|options|a|all)$ ]]; then $MY_PATH/.install/3-insta
|
||||||
if [[ $repOption =~ ^(o|1|yes|options|a|all)$ ]]; then isKalkun=1; $MY_PATH/.install/4a-install_kalkun.sh || err+=1; fi; repOption=$repOld
|
if [[ $repOption =~ ^(o|1|yes|options|a|all)$ ]]; then isKalkun=1; $MY_PATH/.install/4a-install_kalkun.sh || err+=1; fi; repOption=$repOld
|
||||||
[[ -z $repOption && -z $isKalkun ]] && echo -e "${c_yellow}Voulez-vous installer l'interface web playSMS ? (o/n)$c_" && read repOption
|
[[ -z $repOption && -z $isKalkun ]] && echo -e "${c_yellow}Voulez-vous installer l'interface web playSMS ? (o/n)$c_" && read repOption
|
||||||
if [[ $repOption =~ ^(o|1|yes|options|a|all)$ ]]; then $MY_PATH/.install/4b-install_playsms.sh || err+=1; fi; repOption=$repOld
|
if [[ $repOption =~ ^(o|1|yes|options|a|all)$ ]]; then $MY_PATH/.install/4b-install_playsms.sh || err+=1; fi; repOption=$repOld
|
||||||
|
[[ -z $repOption ]] && echo -e "${c_yellow}Voulez-vous installer BBOT ? (o/n)$c_" && read repOption
|
||||||
|
if [[ $repOption =~ ^(o|1|yes|options|a|all)$ ]]; then $MY_PATH/.install/6-install-bbot.sh || err+=1; fi; repOption=$repOld
|
||||||
|
|
||||||
if [[ $err ]]; then
|
if [[ $err ]]; then
|
||||||
echo -e "---\n${c_red}L'installation générale n'est mal déroulé =($c_"
|
echo -e "---\n${c_red}L'installation générale n'est mal déroulé =($c_"
|
||||||
|
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 253 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
@ -3,7 +3,7 @@
|
||||||
# Author: Fred (support@qo-op.com)
|
# Author: Fred (support@qo-op.com)
|
||||||
# Version: 0.1
|
# Version: 0.1
|
||||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||||
# BACKUP G1sms+ current Devlt code and push it with NODE_G1PRIVKEYFILE encryption to IPFS
|
# BACKUP G1sms+ current Devlt code and push it with NODE_G1AUTHFILE encryption to IPFS
|
||||||
################################################################################
|
################################################################################
|
||||||
source ./shell/init.sh
|
source ./shell/init.sh
|
||||||
source ./shell/functions.sh
|
source ./shell/functions.sh
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
# Author: Fred (support@qo-op.com)
|
# Author: Fred (support@qo-op.com)
|
||||||
# Version: 0.1
|
# Version: 0.1
|
||||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||||
# BACKUP G1sms+ current Devlt code and push it with NODE_G1PRIVKEYFILE encryption to IPFS
|
# BACKUP G1sms+ current Devlt code and push it with NODE_G1AUTHFILE encryption to IPFS
|
||||||
################################################################################
|
################################################################################
|
||||||
## GET LATEST DEV $ROOT
|
## GET LATEST DEV $ROOT
|
||||||
source ./shell/init.sh
|
source ./shell/init.sh
|
||||||
|
|
|
@ -63,7 +63,7 @@ for tag in ./wallets/.$IPFSNODEID/TAG/*; do
|
||||||
echo "__SUB:cron_G1TAG_REFRESH.sh: GET PUBLISHKEY for that G1TAG";
|
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"
|
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
|
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_G1PRIVKEYFILE" -i /home/$YOU/.ipfs/keystore/${RR}.crypt -o /home/$YOU/.ipfs/keystore/$RR
|
./shell/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
|
rm /home/$YOU/.ipfs/keystore/${RR}.crypt
|
||||||
fi
|
fi
|
||||||
echo "__SUB:cron_G1TAG_REFRESH.sh: G1Tag PUBLISHKEY OK : /home/$YOU/.ipfs/keystore/${RR}"
|
echo "__SUB:cron_G1TAG_REFRESH.sh: G1Tag PUBLISHKEY OK : /home/$YOU/.ipfs/keystore/${RR}"
|
||||||
|
|
|
@ -7,14 +7,27 @@
|
||||||
# Activate SUPPORT MODE: open ssh over IPFS
|
# Activate SUPPORT MODE: open ssh over IPFS
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
if [[ -f $MY_PATH/.install/.GPATH ]]; then source $MY_PATH/.install/.GPATH; fi
|
if [[ -f $MY_PATH/.profile ]]; then
|
||||||
if [[ -f $MY_PATH/../.install/.GPATH ]]; then source $MY_PATH/../.install/.GPATH; fi
|
source $MY_PATH/.profile
|
||||||
|
elif [[ -f $MY_PATH/../.profile ]]; then
|
||||||
YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
|
source $MY_PATH/../.profile
|
||||||
if [[ "$USER" != "root" ]]; then echo "Hey, $USER you must at least be admin of your system (sudo $0)"; exit; fi
|
else
|
||||||
if [[ "$YOU" == "" || "$YOU" == "root" ]]; then echo "BAD IPFS. Aucune installation IPFS satisfaisante ici... Ciao $YOU !"; exit; fi
|
echo -e "${c_red}Le .profile n'existe pas$c_"
|
||||||
IPFSNODEID=$(su $YOU -c "ipfs id -f='<id>\n'")
|
exit 1
|
||||||
|
fi
|
||||||
cd $GPATH
|
cd $GPATH
|
||||||
|
|
||||||
su $YOU -c ipfs p2p close --all
|
if [[ "$USER" != "root" ]]; then echo "Hey, $USER you must at least be admin of your system (sudo $0)"; exit; fi
|
||||||
su $YOU -c ipfs p2p listen /x/ssh /ip4/127.0.0.1/tcp/22
|
YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
|
||||||
|
|
||||||
|
su $YOU -c "ipfs p2p close --all"
|
||||||
|
su $YOU -c "ipfs p2p listen /x/ssh /ip4/127.0.0.1/tcp/22"
|
||||||
|
su $YOU -c "ipfs p2p listen /x/http /ip4/127.0.0.1/tcp/80"
|
||||||
|
su $YOU -c "ipfs p2p listen /x/https /ip4/127.0.0.1/tcp/443"
|
||||||
|
$(su $YOU -c "ipfs p2p ls")
|
||||||
|
|
||||||
|
echo "==================================
|
||||||
|
CONNECT TO XPORT = ssh, http, https
|
||||||
|
XPORT=ssh
|
||||||
|
LOCALPORT=$((10000 + RANDOM % 64000))
|
||||||
|
ipfs p2p forward /x/$XPORT /ip4/127.0.0.1/tcp/$LOCALPORT /ipfs/$IPFSNODEID"
|
||||||
|
|
|
@ -10,8 +10,14 @@
|
||||||
|
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
if [[ -f $MY_PATH/.install/.GPATH ]]; then source $MY_PATH/.install/.GPATH; fi
|
if [[ -f $MY_PATH/.profile ]]; then
|
||||||
if [[ -f $MY_PATH/../.install/.GPATH ]]; then source $MY_PATH/../.install/.GPATH; fi
|
source $MY_PATH/.profile
|
||||||
|
elif [[ -f $MY_PATH/../.profile ]]; then
|
||||||
|
source $MY_PATH/../.profile
|
||||||
|
else
|
||||||
|
echo -e "${c_red}Le .profile n'existe pas$c_"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
|
YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
|
||||||
if [[ "$USER" != "root" ]]; then echo "Hey, $USER you must at least be admin of your system (sudo $0)"; exit; fi
|
if [[ "$USER" != "root" ]]; then echo "Hey, $USER you must at least be admin of your system (sudo $0)"; exit; fi
|
||||||
|
@ -51,7 +57,7 @@ if [[ "$1" == "PRINT" ]]; then
|
||||||
rr=$(echo $qrrtag | cut -d '/' -f 5 | cut -d '.' -f 1)
|
rr=$(echo $qrrtag | cut -d '/' -f 5 | cut -d '.' -f 1)
|
||||||
if [[ ! -f "./wallets/.$IPFSNODEID/PRINT/done.$rr" ]]; then
|
if [[ ! -f "./wallets/.$IPFSNODEID/PRINT/done.$rr" ]]; then
|
||||||
log "__SUB:cron_MINUTE.sh: PRINT G1Tag $rr - START: $(date)"
|
log "__SUB:cron_MINUTE.sh: PRINT G1Tag $rr - START: $(date)"
|
||||||
./shell/natools.py decrypt -k "$NODE_G1PRIVKEYFILE" -i "${qrrtag}" -o "/tmp/G1Tag.png"
|
./shell/natools.py decrypt -k "$NODE_G1AUTHFILE" -i "${qrrtag}" -o "/tmp/G1Tag.png"
|
||||||
log "__SUB:cron_MINUTE.sh: natools.py decrypt - $(date)"
|
log "__SUB:cron_MINUTE.sh: natools.py decrypt - $(date)"
|
||||||
brother_ql_create --model QL-700 "/tmp/G1Tag.png" --label-size 62 > "/tmp/G1Tag.bin"
|
brother_ql_create --model QL-700 "/tmp/G1Tag.png" --label-size 62 > "/tmp/G1Tag.bin"
|
||||||
log "__SUB:cron_MINUTE.sh: brother_ql_create - $(date)"
|
log "__SUB:cron_MINUTE.sh: brother_ql_create - $(date)"
|
||||||
|
|
|
@ -42,7 +42,7 @@ while read line
|
||||||
|
|
||||||
sms_INIT_ACCOUNT "$PHONE" "NOSMS"
|
sms_INIT_ACCOUNT "$PHONE" "NOSMS"
|
||||||
# echo -salt="$PHONE" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] VIR $REF / $NB"
|
# 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)
|
PAY=$(./silkaj/silkaj transaction --auth-scrypt -salt="$UIDNA" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] VIR $REF / $NB" -y)
|
||||||
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" ]]; then
|
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" ]]; then
|
||||||
new=$(./shell/checknodes.sh "BAN")
|
new=$(./shell/checknodes.sh "BAN")
|
||||||
sms_ERROR "$PHONE" "Il est survenu un problème avec votre virement. Retour silkaj: $PAY ... $new";
|
sms_ERROR "$PHONE" "Il est survenu un problème avec votre virement. Retour silkaj: $PAY ... $new";
|
||||||
|
|
|
@ -17,23 +17,33 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
function sms_SEND () {
|
function sms_SEND () {
|
||||||
# sms_SEND ($1=phone, $2=message)
|
# sms_SEND ($1=phone, $2=message)
|
||||||
local dest="$1"
|
local dest="$1"
|
||||||
|
local dhash=$(echo -n $dest | sha256sum | cut -d ' ' -f 1)
|
||||||
local mess="$2"
|
local mess="$2"
|
||||||
|
|
||||||
|
# IF $dest looks like a phone number
|
||||||
if [[ ${#dest} -eq 10 || ${#dest} -eq 12 ]]; then
|
if [[ ${#dest} -eq 10 || ${#dest} -eq 12 ]]; then
|
||||||
if [[ -d ./wallets/$dest ]]; then
|
# Search it in wallets_swarm
|
||||||
# TEST IF $dest IS ON CURRENT NODE
|
if [[ -d ./wallets_swarm/PHONE/$dhash ]]; then
|
||||||
gammu-smsd-inject TEXT "$dest" -text "$mess" 1>&2
|
DESTNODEID=$(cat ./wallets_swarm/PHONE/$dhash/MASTERPHONE.ipfsid)
|
||||||
|
# Other Node is managing wallet, write SMS task to it
|
||||||
|
if [[ "$DESTNODEID" != "" && "$DESTNODEID" != "$IPFSNODEID" ]]; then
|
||||||
|
log "$dest is managed by NODE: $DESTNODEID)"
|
||||||
|
mkdir -p "./wallets/.$DESTNODEID/SMS"
|
||||||
|
echo $mess > "./wallets/.$DESTNODEID/SMS/$dest.sms2send"
|
||||||
|
# Push changes to IPFS
|
||||||
|
I=$(ipfs_node_wallets_add)
|
||||||
|
else
|
||||||
|
# Send SMS from here
|
||||||
|
gammu-smsd-inject TEXT "$dest" -text "$mess" 1>&2
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
# Send SMS through $dest NODE (TODO: send it like PRINT, TASK, ...)
|
# Send SMS from here
|
||||||
DESTNODEID=$(cat ./wallets_swarm/$dest/MASTERPHONE.ipfsid)
|
gammu-smsd-inject TEXT "$dest" -text "$mess" 1>&2
|
||||||
log "$dest is managed by NODE: $DESTNODEID)"
|
|
||||||
mkdir "./wallets/.$DESTNODEID/SMS"
|
|
||||||
echo $mess > "./wallets/.$DESTNODEID/SMS/$dest.sms2send"
|
|
||||||
I=$(ipfs_node_wallets_add)
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
log ">>>>>>>>>>SMS ERROR BAD DESTINATION $dest"
|
log "${c_red}>>>>>>>>>>SMS ERROR BAD DESTINATION $dest$c_"
|
||||||
fi
|
fi
|
||||||
log ">>>>>>>>>> SENDING SMS $mess TO $dest ($DESTNODEID)"
|
log "${c_green}>>>>>>>>>> SENDING SMS$c_ \n$mess TO $dest via $DESTNODEID"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,9 +56,9 @@ $2"
|
||||||
if [[ ${#dest} -eq 10 || ${#dest} -eq 12 ]]; then
|
if [[ ${#dest} -eq 10 || ${#dest} -eq 12 ]]; then
|
||||||
gammu-smsd-inject TEXT "$dest" -text "$mess" 1>&2
|
gammu-smsd-inject TEXT "$dest" -text "$mess" 1>&2
|
||||||
else
|
else
|
||||||
log ">>>>>>>>>>SMS ERROR BAD DESTINATION $dest"
|
log "${c_red}>>>>>>>>>>SMS ERROR BAD DESTINATION$c_ $dest"
|
||||||
fi
|
fi
|
||||||
log ">>>>>>>>>> SENDING SMS $mess TO $dest"
|
log "${c_red}>>>>>>>>>> SENDING SMS$c_ \n$mess TO $dest"
|
||||||
# SEND ERROR COPY TO ADMINPHONE
|
# SEND ERROR COPY TO ADMINPHONE
|
||||||
if [[ "$CPERROR" == "YES" ]]; then sms_SEND "$ADMINPHONE" "ADMIN! ERROR ($dest): $mess"; fi
|
if [[ "$CPERROR" == "YES" ]]; then sms_SEND "$ADMINPHONE" "ADMIN! ERROR ($dest): $mess"; fi
|
||||||
}
|
}
|
||||||
|
@ -69,11 +79,11 @@ function security () {
|
||||||
|
|
||||||
if [[ "$G1SMS" == "YES" ]]; then # ONLY OF gammu is really sending SMS on that NODE
|
if [[ "$G1SMS" == "YES" ]]; then # ONLY OF gammu is really sending SMS on that NODE
|
||||||
# No Reply to MySelf (or enjoy SMS LOOP of the death) Nobody neither
|
# No Reply to MySelf (or enjoy SMS LOOP of the death) Nobody neither
|
||||||
if [[ "$PHONE" == "$MASTERPHONE" || "$PHONE" == "" ]]; then log "__SUB:security: SMS REJECTED !! $PHONE $TEXT"; exit; fi
|
if [[ "$PHONE" == "$MASTERPHONE" || "$PHONE" == "" ]]; then log "${c_red}__SUB:security: SMS REJECTED !!$c_ $PHONE $TEXT"; exit; fi
|
||||||
|
|
||||||
# ADAPT TO YOUR PHONE COMPANY / ADVERT ANNOYANCE
|
# ADAPT TO YOUR PHONE COMPANY / ADVERT ANNOYANCE
|
||||||
if [[ "$PHONE" == "Orange Info" ]]; then log "__SUB:security: SMS REJECTED !! $PHONE ADVERT $TEXT"; exit; fi
|
if [[ "$PHONE" == "Orange Info" ]]; then log "${c_red}__SUB:security: SMS REJECTED !! $PHONE ADVERT$c_ $TEXT"; exit; fi
|
||||||
if [[ ${#PHONE} -ne 12 && ${#PHONE} -ne 46 ]]; then log "!! SMS REJECTED !! $PHONE BAD $TEXT"; exit; fi
|
if [[ ${#PHONE} -ne 12 && ${#PHONE} -ne 46 ]]; then log "${c_red}!! SMS REJECTED !! $PHONE BAD$c_ $TEXT"; exit; fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ANTI SPAM SMS (1 mn entre chaque commande)
|
# ANTI SPAM SMS (1 mn entre chaque commande)
|
||||||
|
@ -88,7 +98,7 @@ if [[ "$CMD" != "DELIVERED" && "$CMD" != "PENDING" ]]; then
|
||||||
echo $(date) > "/tmp/sms_SPAM_$PHONE"
|
echo $(date) > "/tmp/sms_SPAM_$PHONE"
|
||||||
fi
|
fi
|
||||||
log "__SUB:security: ################################"
|
log "__SUB:security: ################################"
|
||||||
log "__SUB:security: $PHONE COMMAND REJECTED: $TEXT"
|
log "${c_red}__SUB:security: $PHONE COMMAND REJECTED:$c_ $TEXT"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
echo "$TEXT" > "/tmp/sms_received_$PHONE"
|
echo "$TEXT" > "/tmp/sms_received_$PHONE"
|
||||||
|
@ -97,7 +107,7 @@ if [[ "$CMD" != "DELIVERED" && "$CMD" != "PENDING" ]]; then
|
||||||
else
|
else
|
||||||
# THIS IS AN AKNOWLEGEMENT
|
# THIS IS AN AKNOWLEGEMENT
|
||||||
log "__SUB:security: ################################"
|
log "__SUB:security: ################################"
|
||||||
log "__SUB:security: $PHONE COMMAND REJECTED: $TEXT"
|
log "${c_red}__SUB:security: $PHONE COMMAND REJECTED:$c_ $TEXT"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
# Remove SPAM flag older than one day
|
# Remove SPAM flag older than one day
|
||||||
|
@ -115,27 +125,29 @@ I=$(ipfs_node_wallets_add)
|
||||||
# REFRESH SWARM MEMORY
|
# REFRESH SWARM MEMORY
|
||||||
mkdir -p "./wallets_swarm"
|
mkdir -p "./wallets_swarm"
|
||||||
chown -R $YOU "./wallets_swarm"
|
chown -R $YOU "./wallets_swarm"
|
||||||
log "__SUB:ipfs_swarm_wallets_refresh: REFRESHING SWARM $PHONE shared memory..."
|
|
||||||
if [[ $PHONE ]]; then rm -Rf ./wallets_swarm/$PHONE; fi
|
log "${yellow}__SUB:ipfs_swarm_wallets_refresh: REFRESHING SWARM $HASHLINK ($PHONE) shared memory...$c_"
|
||||||
|
if [[ $HASHLINK ]]; then rm -Rf ./wallets_swarm/PHONE/$HASHLINK; fi
|
||||||
|
|
||||||
# GET IPNS published wallets from ALL SWARM NODES / TODO: IF NODES MISSING, check ./wallets_swarm/.QmNODES...
|
# 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"
|
#log "__SUB:ipfs_swarm_wallets_refresh: IPFS: ipfs get --output=./wallets_swarm/ /ipns/$IPFSNODEID"
|
||||||
su $YOU -c "ipfs get --output=./wallets_swarm/ /ipns/$IPFSNODEID"
|
su $YOU -c "ipfs get --output=./wallets_swarm/ /ipns/$IPFSNODEID"
|
||||||
count=1
|
count=1
|
||||||
# Search for All peers Nodes. TODO: To be changed when Swarm is too bug or not expendanding
|
# Search for All peers Nodes. TODO: To be changed when Swarm is too big and stable
|
||||||
for id in ./wallets_swarm/.Qm*/;
|
for id in ./wallets_swarm/.Qm*/;
|
||||||
#for id in $(su $YOU -c "ipfs swarm peers" | awk -F '/' '{print $7}');
|
#for id in $(su $YOU -c "ipfs swarm peers" | awk -F '/' '{print $7}');
|
||||||
do
|
do
|
||||||
count=$((count+1))
|
count=$((count+1))
|
||||||
id=$(echo $id | cut -d '.' -f 3 | cut -d '/' -f 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"
|
log "__SUB:ipfs_swarm_wallets_refresh: IPFS REFRESHING ./wallets_swarm/.$id"
|
||||||
rm -Rf ./wallets_swarm/.$id
|
rm -Rf ./wallets_swarm/.$id
|
||||||
su $YOU -c "ipfs get --output=./wallets_swarm/ /ipns/$id"
|
su $YOU -c "ipfs get --output=./wallets_swarm/ /ipns/$id"
|
||||||
done
|
done
|
||||||
log "__SUB:ipfs_swarm_wallets_refresh: ./wallets_swarm/ RENEW from $count peers .........OK!!!"
|
log "${c_green}__SUB:ipfs_swarm_wallets_refresh: ./wallets_swarm/ RENEW from $count peers .........OK!!!$c_"
|
||||||
|
|
||||||
|
|
||||||
############################################################################"
|
############################################################################"
|
||||||
|
# TODO: MOVE AS GENERIC IPFS NODE DIALOG FUNCTION
|
||||||
# TREAT move_g1cents Tasks in ./wallets/.$IPFSNODEID
|
# 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 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
|
if [[ "$1" != "SIMPLE" && -d ./wallets_swarm/.$IPFSNODEID/TASK && -f "./wallets/.$IPFSNODEID/$IPFSNODEID.authfile.GPGPASS.gpg" ]]; then
|
||||||
|
@ -146,7 +158,9 @@ do
|
||||||
TNANO=$( echo $FTASK | cut -d '.' -f 1) # $NANODATE
|
TNANO=$( echo $FTASK | cut -d '.' -f 1) # $NANODATE
|
||||||
TTYPE=$( echo $FTASK | cut -d '.' -f 2) # move_g1cents
|
TTYPE=$( echo $FTASK | cut -d '.' -f 2) # move_g1cents
|
||||||
TDEST=$( echo $FTASK | cut -d '.' -f 3) # $DESTPHONE
|
TDEST=$( echo $FTASK | cut -d '.' -f 3) # $DESTPHONE
|
||||||
log "__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) FOUND TASK $TNANO:$TTYPE:$TDEST "
|
HDEST=$(echo -n $TDEST | sha256sum | cut -d ' ' -f 1)
|
||||||
|
|
||||||
|
log "${c_yellow}__SUB:ipfs_swarm_wallets_refresh:$c_ .$IPFSNODEID($FTASK) FOUND TASK $TNANO:$TTYPE:$TDEST"
|
||||||
# MAKE LOCAL .$IPFSNODEID directory
|
# MAKE LOCAL .$IPFSNODEID directory
|
||||||
mkdir -p ./wallets/.$IPFSNODEID/TASK/
|
mkdir -p ./wallets/.$IPFSNODEID/TASK/
|
||||||
# TODO: CHECK BETTER NOT DONE YET and $NANODATE > $TNANO (=> detect NODES writing in the future!!)
|
# TODO: CHECK BETTER NOT DONE YET and $NANODATE > $TNANO (=> detect NODES writing in the future!!)
|
||||||
|
@ -161,30 +175,30 @@ do
|
||||||
log "__SUB:ipfs_swarm_wallets_refresh: tdiff=$tdiff .$IPFSNODEID G1 = ./NODEG1Wallet.authfile :decrypt: Found $ZENVAL Zen to ADD"
|
log "__SUB:ipfs_swarm_wallets_refresh: tdiff=$tdiff .$IPFSNODEID G1 = ./NODEG1Wallet.authfile :decrypt: Found $ZENVAL Zen to ADD"
|
||||||
rm -f "./NODEG1Wallet.authfile"
|
rm -f "./NODEG1Wallet.authfile"
|
||||||
if [[ $ZENVAL -gt 0 ]]; then
|
if [[ $ZENVAL -gt 0 ]]; then
|
||||||
curvalue=$(cat ./wallets/$TDEST/$TDEST.g1cents)
|
curvalue=$(cat ./wallets/PHONE/$HDEST/_g1cents)
|
||||||
newvalue=$(bc -l <<< "$curvalue + $ZENVAL")
|
newvalue=$(bc -l <<< "$curvalue + $ZENVAL")
|
||||||
echo $newvalue > ./wallets/$TDEST/$TDEST.g1cents
|
echo $newvalue > ./wallets/PHONE/$HDEST/_g1cents
|
||||||
echo "OK.$tdiff" > ./wallets/.$IPFSNODEID/TASK/done.$TNANO
|
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"
|
log "${c_green}__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) DONE!$c_ OPERATION: ($curvalue + $ZENVAL) = $newvalue Zen <=> ./wallets/PHONE/$HDEST/_g1cents:: OK"
|
||||||
# REFRESH ./wallets and PUBLISH
|
# REFRESH ./wallets and PUBLISH
|
||||||
I=$(ipfs_node_wallets_add)
|
I=$(ipfs_node_wallets_add)
|
||||||
else
|
else
|
||||||
echo "KO.$tdiff" > ./wallets/.$IPFSNODEID/TASK/done.$TNANO
|
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"
|
log "${red}__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) ERROR!$c_ BAD: ($curvalue + $ZENVAL) = $newvalue Zen <=> ./wallets/PHONE/$HDEST/_g1cents :: ${red}KO$c_"
|
||||||
I=$(ipfs_node_wallets_add)
|
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 <=> ./wallets/PHONE/$HDEST/_g1cents :: KO"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# TODO: Bad NODE in the Future task !!! Make better BAD Node detection = Swarm Banish?
|
# 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" > ./wallets/.$IPFSNODEID/TASK/done.$TNANO
|
||||||
log "__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) ERROR! DATE PROBLEM: $NANODATE < $TNANO :: KO"
|
log "${red}__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID($FTASK) ERROR!$c_ DATE PROBLEM: $NANODATE < $TNANO :: ${red}KO$c_"
|
||||||
I=$(ipfs_node_wallets_add)
|
I=$(ipfs_node_wallets_add)
|
||||||
sms_SEND "$ADMINPHONE" "ADMIN! .$IPFSNODEID($FTASK) ERROR! DATE PROBLEM: $NANODATE < $TNANO :: KO"
|
sms_SEND "$ADMINPHONE" "ADMIN! .$IPFSNODEID($FTASK) ERROR! DATE PROBLEM: $NANODATE < $TNANO :: KO"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
log "__SUB:ipfs_swarm_wallets_refresh: REMOVE OLD TASK MARKED AS DONE"
|
log "${c_yellow}__SUB:ipfs_swarm_wallets_refresh:$c_ REMOVE OLD TASK MARKED AS DONE"
|
||||||
for scan in ./wallets_swarm/.Qm*/TASK/done.*; do
|
for scan in ./wallets_swarm/.Qm*/TASK/done.*; do
|
||||||
lscan=$(echo $scan | sed s/_swarm//g )
|
lscan=$(echo $scan | sed s/_swarm//g )
|
||||||
lid=$(echo $scan | cut -d '/' -f 3 | cut -d '.' -f 2 )
|
lid=$(echo $scan | cut -d '/' -f 3 | cut -d '.' -f 2 )
|
||||||
|
@ -196,7 +210,7 @@ done
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
log "__SUB:ipfs_swarm_wallets_refresh: .$IPFSNODEID :: NO TASK ! "
|
log "${c_yellow}__SUB:ipfs_swarm_wallets_refresh:$c_ .$IPFSNODEID :: NO TASK !"
|
||||||
############################################################################"
|
############################################################################"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -210,146 +224,158 @@ function ipfs_node_wallets_add (){
|
||||||
|
|
||||||
# CHAIN STATE FOR $IPFSNODEID
|
# CHAIN STATE FOR $IPFSNODEID
|
||||||
echo $IWALLETS > ./wallets/.$IPFSNODEID.wallets.chain
|
echo $IWALLETS > ./wallets/.$IPFSNODEID.wallets.chain
|
||||||
log "__SUB:ipfs_node_wallets_add: NEW './wallets' HASH ipfs ls $IWALLETS"
|
log "${c_yellow}__SUB:ipfs_node_wallets_add:$c_ NEW './wallets' HASH ipfs ls /ipfs/$IWALLETS"
|
||||||
|
|
||||||
# PUBLISH IPNS NODE WALLETS
|
# PUBLISH IPNS NODE WALLETS
|
||||||
NODEWALLETS=$(su $YOU -c "ipfs name publish --quieter /ipfs/$IWALLETS")
|
NODEWALLETS=$(su $YOU -c "ipfs name publish --quieter /ipfs/$IWALLETS")
|
||||||
log "__SUB:ipfs_node_wallets_add: G1smsWallet = ipfs cat /ipns/$NODEWALLETS/$PHONE/$PHONE.g1cents Zen"
|
log "__SUB:ipfs_node_wallets_add: G1smsWallet = ipfs cat /ipns/$NODEWALLETS/PHONE/$HASHLINK/_g1cents Zen"
|
||||||
|
|
||||||
echo $IWALLETS
|
echo $IWALLETS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#################################################################################################################################
|
#################################################################################################################################
|
||||||
function sms_uid2key (){
|
function sms_uid2pubkey (){
|
||||||
RIBFILE="./wallets/$PHONE/$PHONE.uidrib"
|
## USE $PHONE link instead of real local $HASHLINK directory
|
||||||
NAMEFILE="./wallets/$PHONE/$PHONE.uidname"
|
RIBFILE="./wallets/PHONE/$PHONE/_uidrib"
|
||||||
UIDNAFILE="./wallets/$PHONE/$PHONE.uidna"
|
NAMEFILE="./wallets/PHONE/$PHONE/_uidname"
|
||||||
# New related wallet asked
|
UIDNAFILE="./wallets/PHONE/$PHONE/_uidna"
|
||||||
|
|
||||||
|
# ASKWALLET is
|
||||||
ASKWALLET="$1"
|
ASKWALLET="$1"
|
||||||
#For micro payement
|
|
||||||
|
#For Micro Payement to DESTRIB (for easy G1sms wallet find in Cesium wallet History)
|
||||||
PHONE="$2"
|
PHONE="$2"
|
||||||
PIN="$3"
|
PIN="$3"
|
||||||
if -f "$UIDNAFILE"; then UIDNA=$(cat "$UIDNAFILE"); else UIDNA=""; fi
|
|
||||||
log "__SUB:sms_uid2key: $UIDNA Try to associate $ASKWALLET with $PHONE... SEARCHING..."
|
|
||||||
|
|
||||||
|
# Get PHONE wallet UIDNA name
|
||||||
|
if [[ -f "$UIDNAFILE" ]]; then UIDNA=$(cat "$UIDNAFILE"); else UIDNA=""; fi
|
||||||
|
log "__SUB:sms_uid2pubkey: $UIDNA Wallet ($PHONE) is trying to associate to $ASKWALLET... SEARCHING..."
|
||||||
|
|
||||||
|
# Link to itSelf
|
||||||
if [[ $UIDNA && "$ASKWALLET" == "$UIDNA" ]]; then
|
if [[ $UIDNA && "$ASKWALLET" == "$UIDNA" ]]; then
|
||||||
log "__SUB:sms_uid2key: "$ASKWALLET" == "$UIDNA" !!"
|
log "__SUB:sms_uid2pubkey: "$ASKWALLET" == "$UIDNA" !!"
|
||||||
sms_SEND "$PHONE" "[G1sms+] $UIDNA est le nom de votre porte monnaie libre pour $PHONE. Il ne peut également être compte maître!"
|
sms_SEND "$PHONE" "[G1sms+] $UIDNA est le nom de portefeuille G1sms. Il ne peut pas être associé à lui même!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Test if member files exists
|
# Test if _uidname file exists
|
||||||
if [ -f "$NAMEFILE" ]; then
|
if [ -f "$NAMEFILE" ]; then
|
||||||
|
# Actuel related wallet
|
||||||
UIDNAME=$(cat "$NAMEFILE")
|
UIDNAME=$(cat "$NAMEFILE")
|
||||||
log "__SUB:sms_uid2key: ALREADY $UIDNAME related Wallet for $PHONE Wallet change to $ASKWALLET !!"
|
log "__SUB:sms_uid2pubkey: Actual $UIDNA Wallet Related to $UIDNAME. Ask change to $ASKWALLET"
|
||||||
if [["$UIDNAME" != "$ASKWALLET" ]]; then
|
if [["$UIDNAME" != "$ASKWALLET" ]]; then
|
||||||
sms_SEND "$ADMINPHONE" "ADMIN! INFO: $PHONE Wallet associé à $UIDNAME change en $ASKWALLET !!"
|
sms_SEND "$ADMINPHONE" "ADMIN! INFO: $PHONE Wallet associé à $UIDNAME change en $ASKWALLET !!"
|
||||||
sms_SEND "$PHONE" "[G1sms+] Votre portefeuille maitre va passer de $UIDNAME à $ASKWALLET!"
|
sms_SEND "$PHONE" "[G1sms+] Votre portefeuille associé va passer de $UIDNAME à $ASKWALLET!"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Search fo duplicate
|
# Search fo duplicate (TODO: choose $PHONE result
|
||||||
DUP=$(grep -Rwl "$ASKWALLET" ./wallets/*/*.uidname | cut -f 3 -d '/')
|
DUP=$(grep -Rwl "$ASKWALLET" ./wallets/PHONE/*/_uidname | tail -n 1 | cut -f 4 -d '/')
|
||||||
if [[ "$DUP" != "" ]]; then
|
if [[ "$DUP" != "" ]]; then
|
||||||
sms_SEND "$ADMINPHONE" "ADMIN! INFO: $PHONE prend le même $ASKWALLET, que $DUP"
|
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!"
|
sms_SEND "$DUP" "Votre portefeuille associé $ASKWALLET vient d'être associé à $PHONE également!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
# FIND ASKWALLET into wallets, wallest_swarm OR duniter (silkaj)
|
# FIND ASKWALLET into wallets, wallest_swarm OR duniter (silkaj)
|
||||||
DESTMEM="$VIRDEST"
|
DESTMEM="$VIRDEST"
|
||||||
# SEARCH IN WALLETS
|
# SEARCH IN WALLETS
|
||||||
LOCAL=$(grep -Rwl "$ASKWALLET" ./wallets/*/*.uidna | cut -f 3 -d '/')
|
LOCAL=$(grep -Rwl "$ASKWALLET" ./wallets/PHONE/*/_uidna | tail -n 1 | cut -f 4 -d '/')
|
||||||
if [[ "$LOCAL" != "" ]]; then
|
if [[ "$LOCAL" != "" ]]; then
|
||||||
# LOCAL G1sms account
|
# LOCAL G1sms account
|
||||||
DESTRIB=$(cat ./wallets/$LOCAL/$LOCAL.pub)
|
DESTRIB=$(cat ./wallets/PHONE/$LOCAL/_pub)
|
||||||
DESTPHONE=$LOCAL
|
DESTPHONE=$LOCAL
|
||||||
log "__SUB:sms_uid2key: FOUND LOCAL ($MASTERPHONE) G1sms+ wallet: $DESTRIB ($LOCAL)"
|
log "${c_yellow}__SUB:sms_uid2pubkey:$c_ FOUND LOCAL ($MASTERPHONE) G1sms Wallet: $DESTRIB ($DESTPHONE)"
|
||||||
else
|
else
|
||||||
# SEARCH IN WALLETS SWARM
|
# SEARCH IN WALLETS SWARM
|
||||||
INSWARM=$(grep -Rwl "$ASKWALLET" ./wallets_swarm/*/*.uidna | cut -f 3 -d '/')
|
INSWARM=$(grep -Rwl "$ASKWALLET" ./wallets_swarm/PHONE/*/_uidna | tail -n 1 | cut -f 4 -d '/')
|
||||||
if [[ "$INSWARM" != "" ]]; then
|
if [[ "$INSWARM" != "" ]]; then
|
||||||
REMOTENODE=$(cat ./wallets_swarm/$INSWARM/MASTERPHONE.sms)
|
REMOTENODE=$(cat ./wallets_swarm/PHONE/$INSWARM/MASTERPHONE.sms)
|
||||||
DESTRIB=$(cat ./wallets_swarm/$INSWARM/$INSWARM.pub)
|
REMOTENODEIPFSID=$(cat ./wallets_swarm/PHONE/$INSWARM/MASTERPHONE.ipfsid)
|
||||||
|
DESTRIB=$(cat ./wallets_swarm/PHONE/$INSWARM/_pub)
|
||||||
DESTPHONE=$INSWARM
|
DESTPHONE=$INSWARM
|
||||||
log "__SUB:sms_uid2key: FOUND SWARM ($REMOTENODE) G1sms+ wallet: $DESTRIB ($INSWARM)"
|
log "${c_green}__SUB:sms_uid2pubkey: FOUND SWARM ($REMOTENODE) G1sms+ wallet: $DESTRIB ($DESTPHONE)$c_"
|
||||||
else
|
else
|
||||||
# SEARCH WITH SILKAJ
|
# SEARCH FOR DUNITER MEMBER WITH SILKAJ
|
||||||
log "__SUB:sms_uid2key: GETTING FROM SILKAJ MEMBER ID"
|
log "__SUB:sms_uid2pubkey: GETTING FROM SILKAJ MEMBER ID"
|
||||||
DESTRIB=$(./silkaj/silkaj id "$ASKWALLET" | grep -w "$ASKWALLET" | awk '{print $2}')
|
DESTRIB=$(./silkaj/silkaj id "$ASKWALLET" | grep -w "$ASKWALLET" | awk '{print $2}')
|
||||||
log "__SUB:sms_uid2key: OUT OFF SWARM MEMBER wallet: $DESTRIB"
|
log "__SUB:sms_uid2pubkey: OUT OFF SWARM MEMBER wallet: $DESTRIB"
|
||||||
# GET CESIUM+ geoPoint DATA (TODO: cron for GCHANGE SMS Alert)
|
# GET CESIUM+ geoPoint DATA (TODO: cron for GCHANGE SMS Alert)
|
||||||
curl -s ${CESIUM}/user/profile/${DESTRIB} | jq '._source.geoPoint' > "./wallets/$PHONE/$PHONE.uidgeo.json"
|
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)"
|
log "__SUB:sms_uid2pubkey: 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.avatar._content' | sed 's/\"//g' | base64 -d > "./wallets/PHONE/$PHONE/_avatar.png"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$DESTRIB" != "" ]; then
|
if [ "$DESTRIB" != "" ]; then
|
||||||
echo "$DESTRIB" > "$RIBFILE"
|
echo "$DESTRIB" > "$RIBFILE"
|
||||||
echo "$ASKWALLET" > "$NAMEFILE"
|
echo "$ASKWALLET" > "$NAMEFILE"
|
||||||
log "__SUB:sms_uid2key: NEW EXTERNAL RELATED $DESTRIB / FOR MEMBER OR WALLET = $ASKWALLET - INIT 0.1 TX"
|
log "${c_yellow}__SUB:sms_uid2pubkey:$c_ NEW RELATED $DESTRIB FOR G1sms WALLET = $ASKWALLET - INIT 0.1 TX"
|
||||||
INIT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="0.1" --output=$DESTRIB --comment="[G1sms+] Porte Monnaie $(cat $UIDNAFILE) -> $(cat $NAMEFILE)" -y)
|
INIT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$UIDNA" -password="$PIN" --amount="0.1" --output=$DESTRIB --comment="[G1sms+] Porte Monnaie $(cat $UIDNAFILE) -> $(cat $NAMEFILE)" -y)
|
||||||
log "__SUB:sms_uid2key: INIT = $INIT | Create Connection with related Wallet."
|
log "__SUB:sms_uid2pubkey: INIT = $INIT | Create Connection with related Wallet."
|
||||||
log_history "$PHONE" "MEMBER, $ASKWALLET"
|
log_history "$PHONE" "MEMBER, $ASKWALLET"
|
||||||
sms_SEND "$ADMINPHONE" "ADMIN! LOG: $PHONE Nouveau compte lié $UIDNA -- $ASKWALLET ($INIT)"
|
sms_SEND "$ADMINPHONE" "ADMIN! LOG: $PHONE ($UIDNA) Compte relié >> $ASKWALLET ($INIT)"
|
||||||
else
|
else
|
||||||
sms_SEND "$ADMINPHONE" "ADMIN! LOG: $PHONE / $ASKWALLET ABSENT"
|
sms_SEND "$ADMINPHONE" "ADMIN! LOG: $PHONE ($UIDNA) RELIER A $ASKWALLET INCONNU"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log "__SUB:sms_uid2key: $MEMBER($DESTRIB)"
|
log "__SUB:sms_uid2pubkey: $MEMBER($DESTRIB)"
|
||||||
echo "$DESTRIB"
|
echo "$DESTRIB"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#################################################################################################################################
|
#################################################################################################################################
|
||||||
function sms_INIT_ACCOUNT () {
|
function sms_INIT_ACCOUNT () {
|
||||||
log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
|
log "${c_yellow}__SUB:sms_INIT_ACCOUNT:$c_ ($1=phone, $2=NOSMS)"
|
||||||
PHONE="$1"
|
PHONE="$1"
|
||||||
UNKNOWN=0
|
UNKNOWN=0
|
||||||
# TODO Optimize GLOBAL/local variables use, use more function array output ?!
|
|
||||||
# Initiate PHONE settings files and values
|
# 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" # TEST!!! crypt with $PHONE wallet keypair
|
|
||||||
PUBKEYFILE="./wallets/$PHONE/$PHONE.pub" # Contains phone wallet public key (RIB)
|
|
||||||
UNITFILE="./wallets/$PHONE/$PHONE.unit" # Contains phone wallet prefered unit (LOVE,G1,DU)
|
|
||||||
|
|
||||||
RIBFILE="./wallets/$PHONE/$PHONE.uidrib" # Contains phone wallet related UID Pubkey
|
# WALLETS INTO ./wallets/CHANNEL/sha256sum(PHONE)
|
||||||
NAMEFILE="./wallets/$PHONE/$PHONE.uidname" # Contains the member UID related to wallet
|
HASHLINK=$(echo -n $PHONE | sha256sum | cut -d ' ' -f 1)
|
||||||
MAILFILE="./wallets/$PHONE/$PHONE.email" # Contains the member EMAIL (Send BILLET)
|
# WALLETS INTO ./wallets/CHANNEL/sha256sum(PHONE)
|
||||||
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
|
|
||||||
|
|
||||||
RECFILE="./wallets/$PHONE/VIREMENTS" # File showing recurrent payements are left to be done with this G1sms Wallet
|
IPFSNODEIDFILE="./wallets/PHONE/$PHONE/MASTERPHONE.ipfsid" # Contains G1sms+ NODE IPFS id
|
||||||
GPGRECFILE="./wallets/$PHONE/VIREMENTS.gpg" # Cypher file with GPGPASS (Node .Identity.PrivKey)
|
SMSNODE="./wallets/PHONE/$PHONE/MASTERPHONE.sms" # Contains G1sms+ SMS phone number
|
||||||
G1COUNTFILE="./wallets/$PHONE/$PHONE.g1cents" # Last sms_COUNT.sh call value
|
PINFILE="./wallets/PHONE/$PHONE/_pin" # Contains phone wallet diceware password
|
||||||
CHAINFILE="./wallets/$PHONE/$PHONE.chain" # Contains wallet last IPFS hash before ZEN value change
|
GPGPINFILE="./wallets/PHONE/$PHONE/_pin.gpg" # Contains g1smsnode cypher phone wallet diceware password
|
||||||
|
AUTHCRYPTFILE="./wallets/PHONE/$PHONE/_authfile.node.crypt" # authfile backup cyphered by Node G1 Pubkey
|
||||||
|
PUBKEYFILE="./wallets/PHONE/$PHONE/_pub" # Contains phone wallet public key (RIB)
|
||||||
|
UNITFILE="./wallets/PHONE/$PHONE/_unit" # Contains phone wallet prefered unit (LOVE,G1,DU)
|
||||||
|
|
||||||
DABUIDF="./wallets/$PHONE/uidna.G1TAGNODE" # Contains G1Dab Name
|
RIBFILE="./wallets/PHONE/$PHONE/_uidrib" # Contains phone wallet related UID Pubkey
|
||||||
|
NAMEFILE="./wallets/PHONE/$PHONE/_uidname" # Contains Related MEMBER UID or Wallet UIDNA
|
||||||
|
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
|
||||||
|
|
||||||
|
RECFILE="./wallets/PHONE/$PHONE/VIREMENTS" # File showing recurrent payements are left to be done with this G1sms Wallet
|
||||||
|
GPGRECFILE="./wallets/PHONE/$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
|
||||||
|
NNFILE="./wallets/PHONE/$PHONE/_n" # Contains Changes Number
|
||||||
|
|
||||||
|
DABUIDF="./wallets/PHONE/$PHONE/uidna.G1TAGNODE" # Contains G1Dab Name
|
||||||
# GET CURRENT NODE UIDNA (default DABUID)
|
# GET CURRENT NODE UIDNA (default DABUID)
|
||||||
NODEUIDNA=$(cat "./wallets/.$IPFSNODEID/$IPFSNODEID.uidna")
|
NODEUIDNA=$(cat "./wallets/.$IPFSNODEID/_uidna")
|
||||||
######################################################################
|
|
||||||
# (NO PIN) = FIRST ACCOUNT: Create wallet
|
######################################################################
|
||||||
|
######################################################################
|
||||||
|
# (NO $PINFILE) = FIRST ACCOUNT: Create wallet
|
||||||
|
######################################################################
|
||||||
if [ ! -f "$PINFILE" ]; then
|
if [ ! -f "$PINFILE" ]; then
|
||||||
# NOSMS mode?
|
# NOSMS mode? = DO NOT CREATE
|
||||||
if [[ $2 == "NOSMS" ]]; then UNKNOWN="unknown"; return; fi
|
if [[ $2 == "NOSMS" ]]; then UNKNOWN="unknown"; return; fi
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
# Create Account Files
|
# Create Account Files
|
||||||
#######################
|
#######################
|
||||||
mkdir -p "./wallets/$PHONE/"
|
if [[ ! -d ./wallets/PHONE/$HASHLINK ]]; then
|
||||||
PIN=$(./shell/diceware.sh | xargs)
|
mkdir -p ./wallets/PHONE/$HASHLINK
|
||||||
PUBKEY=$(./silkaj/silkaj generate_auth_file --auth-scrypt -salt="$PHONE" -password="$PIN")
|
ln -s ./wallets/PHONE/$HASHLINK ./wallets/PHONE/$PHONE
|
||||||
|
fi
|
||||||
# BACKUP authfile available to authfile or PIN owner (DOUBLON AVEC PIN) TEST
|
# LINKS ARE NOT REPLICATED INTO IPFS ;)
|
||||||
log "__SUB:sms_INIT_ACCOUNT: ./shell/natools.py encrypt -p $PUBKEY -i ""./authfile"" -o ""$AUTHCRYPTFILE"""
|
|
||||||
./shell/natools.py encrypt -p $PUBKEY -i "./authfile" -o "$AUTHCRYPTFILE"
|
|
||||||
rm -f ./authfile
|
|
||||||
log "__SUB:sms_INIT_ACCOUNT: !! G1 Wallet CREATED: $PHONE $PIN : $PUBKEY"
|
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
# GIVE NAME TO WALLET
|
# GIVE NAME TO WALLET
|
||||||
|
@ -357,94 +383,64 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
|
||||||
# 4 derniers chiffres du numéro de téléphone
|
# 4 derniers chiffres du numéro de téléphone
|
||||||
TAIL=${PHONE:8:4}
|
TAIL=${PHONE:8:4}
|
||||||
# No UIDNA yet. Create new
|
# No UIDNA yet. Create new
|
||||||
UIDNA=$(./shell/diceware.sh 1 | xargs)
|
UID=$(./shell/diceware.sh 1 | xargs)
|
||||||
# Check if already existing among all swarm wallets
|
# 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 $UID$TAIL ./wallets_swarm/*/*.uidna) ]]; do UID=$(./shell/diceware.sh 1 | xargs); done
|
||||||
echo "$UIDNA$TAIL" > "$UIDNAFILE"
|
UIDNA=$UIDNA$TAIL
|
||||||
|
echo "$UIDNA" > "$UIDNAFILE"
|
||||||
|
|
||||||
|
PIN=$(./shell/diceware.sh | xargs)
|
||||||
|
PUBKEY=$(./silkaj/silkaj generate_auth_file --auth-scrypt -salt="$UIDNA" -password="$PIN")
|
||||||
|
|
||||||
|
# BACKUP authfile available to authfile or PIN owner (DOUBLON AVEC PIN) TEST
|
||||||
|
log "__SUB:sms_INIT_ACCOUNT: ./shell/natools.py encrypt -p $NODE_G1PUBKEY -i ""./authfile"" -o ""$AUTHCRYPTFILE"""
|
||||||
|
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "./authfile" -o "$AUTHCRYPTFILE"
|
||||||
|
rm -f ./authfile
|
||||||
|
log "__SUB:sms_INIT_ACCOUNT: !! G1 Wallet CREATED: $PHONE $PIN : $PUBKEY (HASHLINK=$HASHLINK)"
|
||||||
#######################
|
#######################
|
||||||
# ACTIVATE G1SMS WALLET
|
# ACTIVATE G1SMS WALLET
|
||||||
#######################
|
#######################
|
||||||
# log "$NODE_G1PRIVKEYFILE $PUBKEY THIRD_PARTY_MANAGER:$NODE_G1PUBKEY"
|
# log "$NODE_G1AUTHFILE $PUBKEY THIRD_PARTY_MANAGER:$NODE_G1PUBKEY"
|
||||||
TX_IN=$(./silkaj/silkaj transaction --auth-file -file="$NODE_G1PRIVKEYFILE" --amount=3.24 --output=$PUBKEY --comment="[G1sms+] $UIDNA$TAIL 3RD:$NODE_G1PUBKEY " -y)
|
TX_IN=$(./silkaj/silkaj transaction --auth-file -file="$NODE_G1AUTHFILE" --amount=3.24 --output=$PUBKEY --comment="[G1sms+] $UIDNA 3RD:$NODE_G1PUBKEY " -y)
|
||||||
log "__SUB:sms_INIT_ACCOUNT: G1 Wallet TX IN: $TX_IN"
|
log "__SUB:sms_INIT_ACCOUNT: G1 Wallet TX IN: $TX_IN"
|
||||||
sleep 2
|
sleep 2
|
||||||
TX_OUT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount=0.1 --output=$NODE_G1PUBKEY --comment="[G1sms+] $UIDNA$TAIL 3RD:$NODE_G1PUBKEY:ACK" -y)
|
TX_OUT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$UIDNA" -password="$PIN" --amount=0.1 --output=$NODE_G1PUBKEY --comment="[G1sms+] $UIDNA 3RD:$NODE_G1PUBKEY:ACK" -y)
|
||||||
log "__SUB:sms_INIT_ACCOUNT: G1 Wallet TX OUT: $TX_OUT"
|
log "__SUB:sms_INIT_ACCOUNT: G1 Wallet TX OUT: $TX_OUT"
|
||||||
|
|
||||||
################
|
################
|
||||||
# GPG cypher PIN (ONLY CREATOR NODE CAN ACCESS IT !)
|
# GPG cypher PIN (ONLY CREATOR NODE CAN ACCESS IT !)
|
||||||
################
|
################
|
||||||
echo "$PIN" > "$PINFILE"
|
echo "$PIN" > "$PINFILE"
|
||||||
echo "${GPGPASS}" | gpg -q --output "$GPGPINFILE" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "$PINFILE"
|
# echo "${GPGPASS}" | gpg -q --output "$GPGPINFILE" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "$PINFILE"
|
||||||
PIN=$(cat "$PINFILE" | xargs)
|
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "$PINFILE" -o "$PINFILE.node.crypt"
|
||||||
|
./shell/natools.py encrypt -p $SWARM_G1PUBKEY -i "$PINFILE" -o "$PINFILE.swarm.crypt"
|
||||||
|
# EMPTY CLEAR PIN
|
||||||
echo "" > "$PINFILE"
|
echo "" > "$PINFILE"
|
||||||
|
|
||||||
echo "114" > "$G1COUNTFILE"
|
# WRITE G1sms WALLET FILES
|
||||||
|
echo "314" > "$G1COUNTFILE"
|
||||||
|
echo "0" > "$NNFILE"
|
||||||
echo "$PUBKEY" > "$PUBKEYFILE"
|
echo "$PUBKEY" > "$PUBKEYFILE"
|
||||||
echo "$COIN" > "$UNITFILE"
|
echo "$COIN" > "$UNITFILE"
|
||||||
echo "$MASTERPHONE" > "$SMSNODE"
|
echo "$MASTERPHONE" > "$SMSNODE"
|
||||||
log_history "$PHONE" "NEW, $PUBKEY"
|
log_history "$PHONE" "NEW, $PUBKEY"
|
||||||
|
|
||||||
# ADD WALLET TO IPFS
|
# PUSH WALLET TO IPFS
|
||||||
I=$(ipfs_node_wallets_add)
|
I=$(ipfs_node_wallets_add)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
#################################################
|
#################################################
|
||||||
# PUBLISH G1sms+ WALLET PROPERTIES MAIN PROCESS
|
# PUBLISH G1sms+ WALLET PROPERTIES MAIN PROCESS
|
||||||
#################################################
|
#################################################
|
||||||
######################################################################
|
######################################################################
|
||||||
if [[ ! -f "$GPGPINFILE" ]]
|
log "__SUB:sms_INIT_ACCOUNT: decrypting PIN..."
|
||||||
then
|
# GPG decypher PIN
|
||||||
# ------------8<------------------
|
# TODO make decypher less stress on filesystem, use /tmp and ramdisk
|
||||||
# WALLET MIGRATION -> CRYPT PIN (For Old G1sms clear PIN WALLETs...)
|
# echo "${GPGPASS}" | gpg -d -q --output "$PINFILE" --yes --pinentry-mode loopback --passphrase-fd 0 "$GPGPINFILE"
|
||||||
# ADD NEW PARAMS TO WALLET
|
[[ "$PIN" == "" ]] && ./shell/natools.py decrypt -k "$NODE_G1AUTHFILE" -i "$PINFILE.node.crypt" -o "$PINFILE" && PIN=$(cat "$PINFILE" | xargs) && echo "" > "$PINFILE";
|
||||||
#######################
|
|
||||||
# 4 derniers chiffres du numéro de téléphone
|
|
||||||
echo "$MASTERPHONE" > "$SMSNODE"
|
|
||||||
TAIL=${PHONE:8:4}
|
|
||||||
# No UIDNA yet. Create new
|
|
||||||
UIDNA=$(./shell/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
|
|
||||||
echo "$UIDNA$TAIL" > "$UIDNAFILE"
|
|
||||||
|
|
||||||
PIN=$(cat "$PINFILE" | xargs)
|
# DECYPHER MAIL
|
||||||
log "__SUB:sms_INIT_ACCOUNT: Old G1sms wallet ;) SECURITY HOLE... Chiffrage PGP du PIN !!!"
|
[[ -f "$MAILFILE.node.crypt" ]] && ./shell/natools.py decrypt -k "$NODE_G1AUTHFILE" -i "$MAILFILE.node.crypt" -o "$MAILFILE" && MAIL=$(cat "$MAILFILE") && echo "" > "$MAILFILE";
|
||||||
echo "${GPGPASS}" | gpg -q --output "$GPGPINFILE" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "$PINFILE";
|
|
||||||
else
|
|
||||||
# ------------>8------------------
|
|
||||||
log "__SUB:sms_INIT_ACCOUNT: Déchiffrage PGP PIN..."
|
|
||||||
# GPG decypher PIN
|
|
||||||
# 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)
|
|
||||||
echo "" > "$PINFILE";
|
|
||||||
fi
|
|
||||||
|
|
||||||
# CYPHER EMAIL FILE
|
|
||||||
if [[ ! -f "$GPGMAILFILE" ]]; then
|
|
||||||
# ------------8<------------------
|
|
||||||
# NO .gpg file, CREATING it (OLD G1sms accounts)
|
|
||||||
if [ -f "$MAILFILE" ]; then
|
|
||||||
MAIL=$(cat "$MAILFILE");
|
|
||||||
echo "${GPGPASS}" | gpg -q --output "$GPGMAILFILE" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "$MAILFILE";
|
|
||||||
else
|
|
||||||
MAIL="";
|
|
||||||
fi
|
|
||||||
# ------------>8------------------
|
|
||||||
else
|
|
||||||
# Already existing gpg DECODING IT
|
|
||||||
echo "${GPGPASS}" | gpg -d -q --output "$MAILFILE" --yes --pinentry-mode loopback --passphrase-fd 0 "$GPGMAILFILE"
|
|
||||||
MAIL=$(cat "$MAILFILE");
|
|
||||||
echo "" > "$MAILFILE";
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ------------8<------------------
|
|
||||||
# REMOVE OLD HISTORY FILES
|
|
||||||
rm -f ./wallets/$PHONE/$PHONE.hist
|
|
||||||
# ------------>8------------------
|
|
||||||
|
|
||||||
# PUBLISH GLOBAL VARS FROM ACCOUNT FILES
|
# PUBLISH GLOBAL VARS FROM ACCOUNT FILES
|
||||||
echo $IPFSNODEID > $IPFSNODEIDFILE
|
echo $IPFSNODEID > $IPFSNODEIDFILE
|
||||||
|
@ -474,9 +470,9 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
|
||||||
log "__SUB:sms_INIT_ACCOUNT: $AMOUNTG1 = $AMOUNT $UNIT"
|
log "__SUB:sms_INIT_ACCOUNT: $AMOUNTG1 = $AMOUNT $UNIT"
|
||||||
|
|
||||||
# LOG # TODO REMOVE PIN LOG!!
|
# LOG # TODO REMOVE PIN LOG!!
|
||||||
log "#####################"
|
log "${c_yellow}#####################$c_"
|
||||||
log "PHONE: $PHONE"
|
log "PHONE: $PHONE"
|
||||||
log "PIN: $PIN"
|
# log "PIN: $PIN"
|
||||||
log "PUBKEY: $PUBKEY"
|
log "PUBKEY: $PUBKEY"
|
||||||
log "G1: $AMOUNTG1"
|
log "G1: $AMOUNTG1"
|
||||||
log "AMOUNT: $AMOUNT $UNIT"
|
log "AMOUNT: $AMOUNT $UNIT"
|
||||||
|
@ -485,10 +481,10 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
|
||||||
log "MEMRIB: $MEMRIB"
|
log "MEMRIB: $MEMRIB"
|
||||||
log "MAIL: $MAIL"
|
log "MAIL: $MAIL"
|
||||||
log "DABID: $DABID"
|
log "DABID: $DABID"
|
||||||
log "#####################"
|
log "${c_yellow}#####################$c_"
|
||||||
|
|
||||||
|
|
||||||
log "__SUB:sms_INIT_ACCOUNT: END"
|
log "${c_green}__SUB:sms_INIT_ACCOUNT: END$c_"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -515,30 +511,31 @@ G1cents=$(echo "$AMOUNTG1*100" | bc -l | awk '{print int($0)}')
|
||||||
log "__SUB:check_account: $PHONE: $AMOUNTG1 = $AMOUNT $UNIT ($G1cents) - $PUBKEY"
|
log "__SUB:check_account: $PHONE: $AMOUNTG1 = $AMOUNT $UNIT ($G1cents) - $PUBKEY"
|
||||||
|
|
||||||
if [[ "$G1cents" != "" ]]; then
|
if [[ "$G1cents" != "" ]]; then
|
||||||
NN=$(cat "./wallets/$PHONE/$PHONE.n")
|
NN=$(cat "./wallets/PHONE/$PHONE/_n") || NN=0
|
||||||
((NN++))
|
((NN++))
|
||||||
echo "$NN" > "./wallets/$PHONE/$PHONE.n"
|
echo "$NN" > "./wallets/PHONE/$PHONE/_n"
|
||||||
echo $G1cents > "./wallets/$PHONE/$PHONE.g1cents"
|
echo $G1cents > "./wallets/PHONE/$PHONE/_g1cents"
|
||||||
|
echo "$NANODATE" > "./wallets/PHONE/$PHONE/_nanodate"
|
||||||
# REFRESH NODE IPFS wallets & PUBLISH
|
# REFRESH NODE IPFS wallets & PUBLISH
|
||||||
I=$(ipfs_node_wallets_add)
|
I=$(ipfs_node_wallets_add)
|
||||||
# Register modification
|
# Register modification
|
||||||
echo "$I" > "./wallets/$PHONE/$PHONE.chain"
|
echo "$I" > "./wallets/PHONE/$PHONE/_chain"
|
||||||
else
|
else
|
||||||
# BAN actual Duniter Node in case of silkaj timeout.
|
# BAN actual Duniter Node in case of silkaj timeout.
|
||||||
export NEWDUNITER=$(./shell/checknodes.sh 'BAN')
|
export NEWDUNITER=$(./shell/checknodes.sh 'BAN')
|
||||||
log "__SUB:check_account: !!! SILKAJ IS TOO SLOW !!! => NEW DUNITER SERVER: $NEWDUNITER"
|
log "${c_red}__SUB:check_account: !!! SILKAJ IS TOO SLOW !!!$c_ => NEW DUNITER SERVER: $NEWDUNITER"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
declare -a aaa
|
declare -a walletvalues
|
||||||
aaa=( "$AMOUNTG1" "$AMOUNT" "$UNIT" )
|
walletvalues=( "$AMOUNTG1" "$AMOUNT" "$UNIT" )
|
||||||
log "__SUB:check_account: $(declare -p aaa)"
|
log "__SUB:check_account: $(declare -p walletvalues)"
|
||||||
echo ${aaa[@]}
|
echo ${walletvalues[@]}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#################################################################################################################################
|
#################################################################################################################################
|
||||||
function make_accounting (){
|
function make_accounting (){
|
||||||
# CONVERT AMOUNT UNIT to VIR G1
|
# CONVERT $AMOUNT $UNIT to $VIR G1
|
||||||
case "$UNIT" in
|
case "$UNIT" in
|
||||||
G1)
|
G1)
|
||||||
VIR=$AMOUNT;
|
VIR=$AMOUNT;
|
||||||
|
@ -550,22 +547,25 @@ LOVE)
|
||||||
VIR=$(bc -l <<< "scale=2; $AMOUNT * $DUFACTOR / 100")
|
VIR=$(bc -l <<< "scale=2; $AMOUNT * $DUFACTOR / 100")
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
VIR=$(bc -l <<< "scale=2; $AMOUNT * $DUFACTOR / 100")
|
VIR=$AMOUNT;
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
log "${c_yellow}__SUB:make_accounting:$c_ $VIR G1 CHECKING FOR $PHONE / PUBKEY = $PUBKEY"
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
# GET G1sms wallet AMOUNTG1 and CHECK for right balance
|
# GET G1sms wallet AMOUNTG1 and CHECK for right balance
|
||||||
log "__SUB:make_accounting: LOCAL $VIR amount for $PHONE : $PUBKEY"
|
# Ask silkaj. If timeout, use last known $PHONE _g1cents value
|
||||||
# Try to ask silkaj. If timeout, use SWARM last known $PHONE.g1cents value
|
|
||||||
AMOUNTG1=$(./shell/timeout.sh -t 20 ./silkaj/silkaj amount "$PUBKEY")
|
AMOUNTG1=$(./shell/timeout.sh -t 20 ./silkaj/silkaj amount "$PUBKEY")
|
||||||
if [[ ! $AMOUNTG1 ]]; then AMOUNTG1=$(bc -l <<< "scale=2; $(cat ./wallets_swarm/$PHONE/$PHONE.g1cents) / 100"); fi
|
[[ ! $AMOUNTG1 ]] && AMOUNTG1=$(bc -l <<< "scale=2; $(cat ./wallets/PHONE/$PHONE/_g1cents) / 100")
|
||||||
if [[ "$AMOUNTG1" == "" ]]; then AMOUNTG1=0; fi
|
[[ "$AMOUNTG1" == "" ]] && AMOUNTG1=0
|
||||||
|
|
||||||
# TAX AND MINIMUM WALLET ACCOUNT CALCULATION
|
# TAX AND MINIMUM WALLET ACCOUNT CALCULATION
|
||||||
PERCENT=0$(bc -l <<< "scale=2; $VIR / $SWARMCOMM")
|
PERCENT=0$(bc -l <<< "scale=2; $VIR / $SWARMCOMM")
|
||||||
MIN=$(bc -l <<< "$AMOUNTG1 - $PERCENT - $LIMIT")
|
MIN=$(bc -l <<< "$AMOUNTG1 - $PERCENT - $LIMIT")
|
||||||
CHARGE=$(bc -l <<< "scale=2; $VIR + $PERCENT + $LIMIT")
|
CHARGE=$(bc -l <<< "scale=2; $VIR + $PERCENT + $LIMIT")
|
||||||
TESTMIN=$( echo "${VIR} < ${MIN}" | bc -l )
|
TESTMIN=$( echo "${VIR} < ${MIN}" | bc -l )
|
||||||
|
|
||||||
log "__SUB:make_accounting: TEST $AMOUNT $UNIT :: $VIR + $PERCENT + $LIMIT = $CHARGE < $AMOUNTG1 ? $TESTMIN"
|
log "__SUB:make_accounting: TEST $AMOUNT $UNIT :: $VIR + $PERCENT + $LIMIT = $CHARGE < $AMOUNTG1 ? $TESTMIN"
|
||||||
|
|
||||||
declare -a myarray
|
declare -a myarray
|
||||||
|
@ -582,7 +582,7 @@ function move_g1cents (){
|
||||||
phonesrc=$1
|
phonesrc=$1
|
||||||
pubkeydest=$2
|
pubkeydest=$2
|
||||||
zenvalue=$3
|
zenvalue=$3
|
||||||
log "__SUB:move_g1cents: $phonesrc ($zenvalue) -> $pubkeydest :: $G1COUNTFILE ::"
|
log "${c_yellow}__SUB:move_g1cents:$c_ $phonesrc ($zenvalue) -> $pubkeydest :: $G1COUNTFILE ::"
|
||||||
|
|
||||||
### CHANGE INPUT VALUE ####
|
### CHANGE INPUT VALUE ####
|
||||||
curvalue=$(cat ./wallets/$phonesrc/$phonesrc.g1cents | cut -d '.' -f 1)
|
curvalue=$(cat ./wallets/$phonesrc/$phonesrc.g1cents | cut -d '.' -f 1)
|
||||||
|
@ -610,13 +610,13 @@ function move_g1cents (){
|
||||||
# USE natools with NODEPUB crypt
|
# USE natools with NODEPUB crypt
|
||||||
echo "$zenvalue" > "/tmp/move_g1cents.$winnerphone"
|
echo "$zenvalue" > "/tmp/move_g1cents.$winnerphone"
|
||||||
# GET NODE G1sms Wallet PUBKEY
|
# GET NODE G1sms Wallet PUBKEY
|
||||||
NODEPUB=$(cat ./wallets_swarm/.$NODEID/$NODEID.pub)
|
NODEPUB=$(cat ./wallets_swarm/.$NODEID/_pub)
|
||||||
./shell/natools.py encrypt -p $NODEPUB -i "/tmp/move_g1cents.$winnerphone" -o "./wallets/.$NODEID/TASK/$NANODATE.move_g1cents.$winnerphone.NODEPUB.crypt"
|
./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 "
|
log "__SUB:move_g1cents: CREDIT: WRITE TASK TO ./wallets/.$NODEID/$NANODATE.move_g1cents.$winnerphone.NODEPUB.crypt "
|
||||||
rm -f /tmp/move_g1cents.$winnerphone
|
rm -f /tmp/move_g1cents.$winnerphone
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
log "__SUB:move_g1cents: ERROR: NO $pubkeydest WALLET FOUND"
|
log "${c_red}__SUB:move_g1cents: ERROR: NO $pubkeydest WALLET FOUND$c_"
|
||||||
fi
|
fi
|
||||||
# UPDATE MY new ./wallet STATUS to SWARM
|
# UPDATE MY new ./wallet STATUS to SWARM
|
||||||
I=$(ipfs_node_wallets_add)
|
I=$(ipfs_node_wallets_add)
|
||||||
|
@ -626,6 +626,7 @@ function move_g1cents (){
|
||||||
#################################################################################################################################
|
#################################################################################################################################
|
||||||
# Contact database management
|
# Contact database management
|
||||||
function add_contact(){
|
function add_contact(){
|
||||||
|
log "${c_yellow}Add user contact$c_"
|
||||||
userDB="gammu"
|
userDB="gammu"
|
||||||
pwdDB=$(cat /etc/gammu-smsdrc | grep "password =" | awk '{ print $3 }' || exit 1)
|
pwdDB=$(cat /etc/gammu-smsdrc | grep "password =" | awk '{ print $3 }' || exit 1)
|
||||||
local sql="mysql -N -u$userDB -p$pwdDB gammu -e"
|
local sql="mysql -N -u$userDB -p$pwdDB gammu -e"
|
||||||
|
@ -641,6 +642,7 @@ function add_contact(){
|
||||||
$sql "INSERT INTO pbk (GroupID, Name, Number, id_user, is_public) VALUES ('1', '$MEMBERUID', '$PHONE', '1', 'false')" || exit 1
|
$sql "INSERT INTO pbk (GroupID, Name, Number, id_user, is_public) VALUES ('1', '$MEMBERUID', '$PHONE', '1', 'false')" || exit 1
|
||||||
local id_user=$($sql "SELECT ID FROM pbk WHERE Number=$PHONE" || exit 1)
|
local id_user=$($sql "SELECT ID FROM pbk WHERE Number=$PHONE" || exit 1)
|
||||||
$sql "INSERT INTO user_group (id_group, id_pbk, id_pbk_groups, id_user) VALUES ('$id_user', '$id_user', '1', '1')" || exit 1
|
$sql "INSERT INTO user_group (id_group, id_pbk, id_pbk_groups, id_user) VALUES ('$id_user', '$id_user', '1', '1')" || exit 1
|
||||||
|
log "${c_green}Done$c_"
|
||||||
else
|
else
|
||||||
log "${red}Contact already exist$c_"
|
log "${red}Contact already exist$c_"
|
||||||
fi
|
fi
|
||||||
|
@ -648,6 +650,7 @@ function add_contact(){
|
||||||
}
|
}
|
||||||
|
|
||||||
function rm_contact(){
|
function rm_contact(){
|
||||||
|
log "${c_yellow}Remove user contact$c_"
|
||||||
userDB="gammu"
|
userDB="gammu"
|
||||||
pwdDB=$(cat /etc/gammu-smsdrc | grep "password =" | awk '{ print $3 }' || exit 1)
|
pwdDB=$(cat /etc/gammu-smsdrc | grep "password =" | awk '{ print $3 }' || exit 1)
|
||||||
local sql="mysql -N -u$userDB -p$pwdDB gammu -e"
|
local sql="mysql -N -u$userDB -p$pwdDB gammu -e"
|
||||||
|
@ -661,6 +664,7 @@ function rm_contact(){
|
||||||
local id_user=$($sql "SELECT ID FROM pbk WHERE Number=$PHONE" || exit 1)
|
local id_user=$($sql "SELECT ID FROM pbk WHERE Number=$PHONE" || exit 1)
|
||||||
$sql "DELETE FROM pbk WHERE Number=$PHONE" || exit 1
|
$sql "DELETE FROM pbk WHERE Number=$PHONE" || exit 1
|
||||||
$sql "DELETE FROM user_group WHERE id_group='$id_user'" || exit 1
|
$sql "DELETE FROM user_group WHERE id_group='$id_user'" || exit 1
|
||||||
|
log "${c_green}Done$c_"
|
||||||
else
|
else
|
||||||
log "${red}Contact doesn't exist$c_"
|
log "${red}Contact doesn't exist$c_"
|
||||||
fi
|
fi
|
||||||
|
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
@ -1,6 +1,4 @@
|
||||||
duniter.dethegeek.eu.org:443
|
duniter.moul.re:443
|
||||||
g1.duniter.fr:443
|
g1.duniter.fr:443
|
||||||
g1.duniter.org:443
|
g1.duniter.org:443
|
||||||
g1.le-sou.org:443
|
g1.le-sou.org:443
|
||||||
g1.monnaielibreoccitanie.org:443
|
|
||||||
g1.presles.fr:443
|
|
||||||
|
|
|
@ -7,7 +7,14 @@
|
||||||
|
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
source $MY_PATH/.install/.GPATH
|
if [[ -f $MY_PATH/.profile ]]; then
|
||||||
|
source $MY_PATH/.profile
|
||||||
|
elif [[ -f $MY_PATH/../.profile ]]; then
|
||||||
|
source $MY_PATH/../.profile
|
||||||
|
else
|
||||||
|
echo -e "${c_red}Le .profile n'existe pas$c_"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Adapter les valeurs au contexte spatio-temporel du NODE G1SMS
|
# Adapter les valeurs au contexte spatio-temporel du NODE G1SMS
|
||||||
function log () {
|
function log () {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
##################################################################
|
##################################################################
|
||||||
# Author: Fred (support@qo-op.com)
|
# Author: Fred (support@qo-op.com)
|
||||||
# Version: 0.1
|
# Version: 0.2
|
||||||
# License: GPL (http://www.google.com/search?q=GPL)
|
# License: GPL (http://www.google.com/search?q=GPL)
|
||||||
##################################################################
|
##################################################################
|
||||||
# CHECK & WARN | CREATE Keys (gpg encrypt, G1wallet, IPNS publish)
|
# CHECK & WARN | CREATE Keys (gpg encrypt, G1wallet, IPNS publish)
|
||||||
|
@ -13,143 +13,135 @@ if [[ -f $MY_PATH/.install/.GPATH ]]; then source $MY_PATH/.install/.GPATH; fi
|
||||||
if [[ -f $MY_PATH/../.install/.GPATH ]]; then source $MY_PATH/../.install/.GPATH; fi
|
if [[ -f $MY_PATH/../.install/.GPATH ]]; then source $MY_PATH/../.install/.GPATH; fi
|
||||||
|
|
||||||
YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
|
YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
|
||||||
# TODO Make it directory independant. (for now it is tested for pi running ipfs and code in $HOME/G1sms+
|
IPFSNODEID=$(su $YOU -c "ipfs id -f='<id>\n'")
|
||||||
|
NANODATE=$(date -u +%s%N) #1569692075385428020
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# G1sms+ Node KEYS (G1wallet, gpg, IPNS)
|
# G1sms+ Node KEYS (G1wallet, gpg, IPNS)
|
||||||
##################################################################
|
##################################################################
|
||||||
export GPGPASS=$(cat "/home/$YOU/.ipfs/config" | jq '.Identity.PrivKey' | sed s/\"//g)
|
export GPGPASS=$(cat "/home/$YOU/.ipfs/config" | jq '.Identity.PrivKey' | sed s/\"//g) #"
|
||||||
if [ ! $GPGPASS ]; then echo "FATAL ERROR:: IPFS Node.Identity.PrivKey GPGPASS EMPTY"; exit; fi
|
if [ ! $GPGPASS ]; then echo "FATAL ERROR:: IPFS Node.Identity.PrivKey GPGPASS EMPTY"; exit; fi
|
||||||
|
|
||||||
|
# GET SWARM KEY G1sms+ .ipfs/swarm.key
|
||||||
|
export SWARMKEY=$(cat "/home/$YOU/.ipfs/swarm.key" | tail -n 1)
|
||||||
|
if [ ! $SWARMKEY ]; then echo "FATAL ERROR:: .ipfs/swarm.key EMPTY"; exit; fi
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# G1sms+ Swarm KEYS
|
# G1sms+ Swarm KEYS
|
||||||
##################################################################
|
##################################################################
|
||||||
# G1sms Service - G1Wallet
|
# G1sms Service - G1Wallet
|
||||||
if [[ -f "${GPATH}/g1sms.pub.key" && -f "${GPATH}/g1sms.priv.key" ]]; then
|
#
|
||||||
chown root:root ${GPATH}/g1sms.priv.key
|
# CLEF G1 DU SWARM
|
||||||
chmod 600 ${GPATH}/g1sms.priv.key
|
SWARM_G1PUBKEY=$(cat "${GPATH}/g1sms.pub.key")
|
||||||
export NODE_G1PUBKEY=$(cat "${GPATH}/g1sms.pub.key")
|
SWARM_G1AUTHFILE="${GPATH}/g1sms.priv.key"
|
||||||
export NODE_G1PRIVKEYFILE="${GPATH}/g1sms.priv.key"
|
|
||||||
|
# CLEF G1 NODE = CLEF G1 SWARM !!
|
||||||
|
if [[ ! -e "./g1sms.preoni.pub.key" && -f "./g1sms.priv.key" ]]; then
|
||||||
|
log "__SUB:initkeys.sh: Linking preoni Keys to SWARM G1 Keys"
|
||||||
|
ln -s ./g1sms.priv.key ./g1sms.preoni.priv.key
|
||||||
|
ln -s ./g1sms.pub.key ./g1sms.preoni.pub.key
|
||||||
else
|
else
|
||||||
echo "ATTENTION!! Vous devez posséder la clef du G1 Wallet utilisé par le SWARM G1sms!!"
|
# CREATE NODE G1 KEYS AND FILES
|
||||||
./shell/parle.sh "Les clefs du portefeuille essaim G1 SMS sont absente. Au revoir."
|
mkdir -p ./wallets/.$IPFSNODEID/TASK
|
||||||
echo "Fichiers manquants:"
|
################################################
|
||||||
echo "${GPATH}/g1sms.pub.key"
|
# GIVE NAME TO NODE G1 WALLET: "0000diceware"
|
||||||
echo "${GPATH}/g1sms.priv.key"
|
# CREATE "preoni" KeyS & ./wallets/.Qm***/_files
|
||||||
echo "Contactez nous sur https://g1sms.fr"
|
################################################
|
||||||
log "${GPATH}/g1sms.pub.key"
|
# 4 derniers chiffres du MASTERPHONE + diceware
|
||||||
log "${GPATH}/g1sms.priv.key"
|
PRE=${MASTERPHONE:8:4}
|
||||||
gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "Clef de G1Wallet du SWARM g1sms.priv.key manquante! contactez-nous pour la recevoir https://g1sms.fr" 1>&2
|
UID=$(./shell/diceware.sh 1 | xargs)
|
||||||
gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "Debug: ${GPATH}/g1sms.pub.key et ${GPATH}/g1sms.priv.key" 1>&2
|
# Check if already existing among all swarm wallets
|
||||||
exit
|
while [[ $(grep -Rwl "$PRE$UID" ./wallets_swarm/.*/_uidna) ]]; do UID=$(./shell/diceware.sh 1 | xargs); done
|
||||||
|
NODE_UIDNA="$PRE$UID"
|
||||||
|
NODE_PIN=$(./shell/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
|
||||||
|
|
||||||
|
############ SYSTEM MODIFY hosts & hostname ################
|
||||||
|
# WRITE NODE uidna NAME TO /etc/hosts & .Qm*/_uidna file
|
||||||
|
echo "127.0.0.101 $NODE_UIDNA" >> "/etc/hosts"
|
||||||
|
echo $NODE_UIDNA > "/etc/hostname"
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
# BACKUP AUTHFILE FOR FOR SWARM USE (TODO: Refine Swarm, Node access)
|
||||||
|
./shell/natools.py encrypt -p $SWARM_G1PUBKEY -i "./authfile" -o "./wallets/.$IPFSNODEID/_authfile.swarm.crypt"
|
||||||
|
|
||||||
|
echo $NODE_G1PUBKEY > "./wallets/.$IPFSNODEID/_pub" ################# _pub
|
||||||
|
echo $IPFSNODEID > "./wallets/.$IPFSNODEID/_ipfsid" ################# _ipfsid
|
||||||
|
log "__SUB:initkeys.sh: [ADMIN] G1sms+ CREATE G1WALLET FOR: $IPFSNODEID: _pub = $NODE_G1PUBKEY "
|
||||||
|
|
||||||
|
# BACKUP $IPFSNODEID config ################# _ipfsconfig.swarm.crypt
|
||||||
|
./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"
|
||||||
|
|
||||||
|
# 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 "314" > "./wallets/.$IPFSNODEID/_g1cents" ################# _g1cents
|
||||||
|
echo $NANODATE > "./wallets/.$IPFSNODEID/_nanodate" ################# _nanodate
|
||||||
|
|
||||||
|
# SILKAJ INIT G1 NODE WALLET
|
||||||
|
TX_IN=$(./silkaj/silkaj transaction --auth-file -file="$NODE_G1AUTHFILE" --amount=3.24 --output=$NODEG1WALLET --comment="[G1sms+] G1NODE ($ADMINPSEUDO) $UIDNA $IPFSNODEID" -y)
|
||||||
|
TX_OUT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$IPFSNODEID" -password="$GPGPASS" --amount=0.1 --output=$NODE_G1PUBKEY --comment="[G1sms+] G1NODE $IPFSNODEID:ACK" -y)
|
||||||
|
|
||||||
|
log "__SUB:initkeys.sh: [ADMIN] NODE G1sms+ $UIDNA : ls ./wallet/.$IPFSNODEID"
|
||||||
|
gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "[ADMIN] G1sms+ NODE $UIDNA ($IPFSNODEID)" 1>&2
|
||||||
|
gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "$NODE_G1PUBKEY" 1>&2
|
||||||
|
|
||||||
|
# CREATE preoni FILES
|
||||||
|
mv ./authfile ./g1sms.preoni.priv.key
|
||||||
|
echo $NODE_G1PUBKEY > ./g1sms.preoni.pub.key
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
##################################################################
|
## INIT NODE G1 PUB & PRIV KEY
|
||||||
# NODE KEYS (SCRIPT CALLED BY ROOT !!! gammu is root)
|
NODE_G1PUBKEY=$(cat "${GPATH}/g1sms.preoni.pub.key")
|
||||||
##################################################################
|
NODE_G1AUTHFILE="${GPATH}/g1sms.preoni.priv.key"
|
||||||
export IPFSNODEID=$(su $YOU -c "ipfs id -f='<id>\n'")
|
|
||||||
export NANODATE=$(date -u +%s%N) #1569692075385428020
|
|
||||||
|
|
||||||
# CHECK LAST TIME NODE HAD ACTION
|
##########################################################
|
||||||
if [[ -f ./wallets/.$IPFSNODEID/$IPFSNODEID.nanodate ]]; then
|
# MEMORIZE NODE NANODATE EXECUTION TIME (for ntpdate regular sync)
|
||||||
last=$(cat ./wallets/.$IPFSNODEID/$IPFSNODEID.nanodate)
|
if [[ -f ./wallets/.$IPFSNODEID/_nanodate ]]; then
|
||||||
|
last=$(cat ./wallets/.$IPFSNODEID/_nanodate)
|
||||||
timediff=$( echo "${NANODATE} - ${last}" | bc -l )
|
timediff=$( echo "${NANODATE} - ${last}" | bc -l )
|
||||||
# Get median nanodate before
|
# NODE TIME SYNC 600 milliards de nanosecondes = 600 s = 10 mn
|
||||||
# NODE TIME SYNC 120 milliards de nanosecondes = 120s
|
if [[ $timediff -gt 600000000000 ]]; then
|
||||||
if [[ $timediff -gt 120000000000 ]]; then
|
# RUN & LOG ntpdate
|
||||||
log "__SUB:ntpdate pool.ntp.org: $timediff $(ntpdate pool.ntp.org)"
|
log "__SUB:ntpdate pool.ntp.org: $timediff $(ntpdate pool.ntp.org)"
|
||||||
export NANODATE=$(date -u +%s%N)
|
export NANODATE=$(date -u +%s%N)
|
||||||
fi
|
fi
|
||||||
|
echo $NANODATE > ./wallets/.$IPFSNODEID/_nanodate
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#################################################################
|
|
||||||
# CREATE NODE .$IPFSNODEID SPACE (G1Wallet + TASK + NODE DETAILS)
|
|
||||||
#################################################################
|
|
||||||
# Create G1sms Wallet with that NODE G1 wallet as member reference
|
|
||||||
if [[ ! -f "./wallets/.$IPFSNODEID/$IPFSNODEID.pub" ]]; then
|
|
||||||
mkdir -p ./wallets/.$IPFSNODEID/TASK
|
|
||||||
# TODO @poka ?? Place in install sequence: Create Node G1 Wallet (login=ipfsID pass=ipfsPrivKey)
|
|
||||||
NODEG1WALLET=$(./silkaj/silkaj generate_auth_file --auth-scrypt -salt="$IPFSNODEID" -password="$GPGPASS")
|
|
||||||
if [[ ! $NODEG1WALLET ]]; then echo "PROBLEME CREATION DU WALLET G1 DE $IPFSNODEID"; exit; fi
|
|
||||||
|
|
||||||
# Backup authfile GPG with IPFS NODE PRIVATE KEY
|
|
||||||
echo "${GPGPASS}" | gpg -q --output "./wallets/.$IPFSNODEID/$IPFSNODEID.authfile.GPGPASS.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./authfile"
|
|
||||||
# Backup authfile CYPHER with NODE G1 WALLET PUB KEY
|
|
||||||
./shell/natools.py encrypt -p $NODEG1WALLET -i "./authfile" -o "./wallets/.$IPFSNODEID/$IPFSNODEID.authfile.crypt"
|
|
||||||
|
|
||||||
# TODO ADD ACCESS TO OTHER SWARM NODES CYPHERING WITH ALL ACTUAL NODES G1WALLET PUB KEYS
|
|
||||||
# USEFUL TO OPERATE G1TAG WITHOUT SHARING NODE_G1PRIVKEYFILE...
|
|
||||||
# for nodepubfile in ./wallets_swarm/.Qm*/*.pub; do
|
|
||||||
# nodeG1pub=$(cat $nodepubfile)
|
|
||||||
# nodeID=$(echo $all | cut -d '/' -f 3)
|
|
||||||
# ./shell/natools.py encrypt -p $nodeG1pub -i "./authfile" -o "./wallets/.$IPFSNODEID/$nodeID.authfile.crypt"
|
|
||||||
# done
|
|
||||||
|
|
||||||
# Keep Node G1 wallet authfile in G1sms+ root
|
|
||||||
mv -f ./authfile ../
|
|
||||||
|
|
||||||
echo $NODEG1WALLET > "./wallets/.$IPFSNODEID/$IPFSNODEID.pub"
|
|
||||||
echo $IPFSNODEID > "./wallets/.$IPFSNODEID/$IPFSNODEID.ipfsid"
|
|
||||||
log "__SUB:initkeys.sh: [ADMIN] G1sms+ CREATE G1WALLET FOR: $IPFSNODEID: pub = $NODEG1WALLET "
|
|
||||||
|
|
||||||
# BACKUP $IPFSNODEID config
|
|
||||||
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "/home/$YOU/.ipfs/config" -o "./wallets/.$IPFSNODEID/$IPFSNODEID.ipfsconfig.crypt"
|
|
||||||
log "__SUB:initkeys.sh: [ADMIN] BACKUP $IPFSNODEID NODE CONFIG to ./wallets/.$IPFSNODEID/$IPFSNODEID.ipfsconfig.crypt "
|
|
||||||
|
|
||||||
#######################
|
|
||||||
# GIVE NAME TO WALLET
|
|
||||||
#######################
|
|
||||||
# 4 derniers chiffres du numéro de téléphone
|
|
||||||
TAIL=${MASTERPHONE:8:4}
|
|
||||||
# No UIDNA yet. Create new
|
|
||||||
UIDNA=$(./shell/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
|
|
||||||
# WRITE NODE uidna NAME TO /etc/hosts & .Qm*/Qm*.uidna file
|
|
||||||
echo "127.0.0.101 $UIDNA$TAIL" >> "/etc/hosts"
|
|
||||||
echo "$UIDNA$TAIL" > "./wallets/.$IPFSNODEID/$IPFSNODEID.uidna"
|
|
||||||
|
|
||||||
# TODO: MAYBE REMOVE THAT CREATE NODE WALLET LIKE A PHONE (Stored in wallets/.$IPFSNODEID) BUT CREATE & ATTACH G1TAG INSTEAD
|
|
||||||
echo "${GPGPASS}" > "./wallets/.$IPFSNODEID/$IPFSNODEID.pin"
|
|
||||||
echo "${GPGPASS}" | gpg -q --output "./wallets/.$IPFSNODEID/$IPFSNODEID.pin.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./wallets/.$IPFSNODEID/$IPFSNODEID.pin"
|
|
||||||
echo "" > "./wallets/.$IPFSNODEID/$IPFSNODEID.pin"
|
|
||||||
echo "$UIDNA$TAIL" > "./wallets/.$IPFSNODEID/$IPFSNODEID.uidna"
|
|
||||||
echo "314" > "./wallets/.$IPFSNODEID/$IPFSNODEID.g1cents"
|
|
||||||
echo $NODEG1WALLET > "./wallets/.$IPFSNODEID/$IPFSNODEID.pub"
|
|
||||||
|
|
||||||
# SILKAJ INIT G1 NODE WALLET
|
|
||||||
TX_IN=$(./silkaj/silkaj transaction --auth-file -file="$NODE_G1PRIVKEYFILE" --amount=3.24 --output=$NODEG1WALLET --comment="[G1sms+] G1NODE ($ADMINPSEUDO) $UIDNA$TAIL $IPFSNODEID" -y)
|
|
||||||
TX_OUT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$IPFSNODEID" -password="$GPGPASS" --amount=0.1 --output=$NODE_G1PUBKEY --comment="[G1sms+] G1NODE $IPFSNODEID:ACK" -y)
|
|
||||||
log "__SUB:initkeys.sh: [ADMIN] G1sms+ $ADMINPSEUDO-$UIDNA$TAIL OUVERT POUR NODE: ls ./wallet/.$IPFSNODEID"
|
|
||||||
gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "[ADMIN] G1sms+ $ADMINPSEUDO-$UIDNA$TAIL OUVERT POUR NODE: ls ./wallets/.$IPFSNODEID" 1>&2
|
|
||||||
gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "$NODEG1WALLET" 1>&2
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo $NANODATE > ./wallets/.$IPFSNODEID/$IPFSNODEID.nanodate
|
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
#INFORM ABOUT NODE CAPACITIES
|
#INFORM ABOUT NODE CAPACITIES
|
||||||
export NODEPUB=$(cat "./wallets/.$IPFSNODEID/$IPFSNODEID.pub")
|
export NODEPUB=$(cat "./wallets/.$IPFSNODEID/_pub")
|
||||||
|
|
||||||
## IS IT A SMS NODE (gammu-smsd is installed)??
|
## IS IT A SMS NODE (gammu-smsd is installed)??
|
||||||
if [[ $G1SMS ]]; then
|
if [[ $G1SMS ]]; then
|
||||||
echo $MASTERPHONE > "./wallets/.$IPFSNODEID/$IPFSNODEID.sms"
|
echo $MASTERPHONE > "./wallets/.$IPFSNODEID/_sms"
|
||||||
else
|
else
|
||||||
if [ -f "./wallets/.$IPFSNODEID/$IPFSNODEID.sms" ]; then rm -f "./wallets/.$IPFSNODEID/$IPFSNODEID.sms"; fi
|
if [ -f "./wallets/.$IPFSNODEID/_sms" ]; then rm -f "./wallets/.$IPFSNODEID/_sms"; fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## IS THERE USB PRINTER CONNECTED?
|
## IS THERE USB PRINTER CONNECTED?
|
||||||
if [[ -e "/dev/usb/lp0" ]]; then
|
if [[ -e "/dev/usb/lp0" ]]; then
|
||||||
log "G1CORE: IMPRESSION G1Tag ACTIF .............."
|
log "G1CORE: IMPRESSION G1Tag ACTIF .............."
|
||||||
echo $ADRESSE > "./wallets/.$IPFSNODEID/$IPFSNODEID.where"
|
echo $ADRESSE > "./wallets/.$IPFSNODEID/_where"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## IS THERE SERIAL QR CODE READER CONNECTED?
|
## IS THERE SERIAL QR CODE READER CONNECTED?
|
||||||
if [[ -e "/dev/ttyACM0" ]]; then
|
if [[ -e "/dev/ttyACM0" ]]; then
|
||||||
log "G1CORE: SCAN G1Tag ACTIF .............."
|
log "G1CORE: SCAN G1Tag ACTIF .............."
|
||||||
export G1TX="YES"
|
export G1TX="YES"
|
||||||
echo "/dev/ttyACM0" > "./wallets/.$IPFSNODEID/$IPFSNODEID.scan"
|
echo "/dev/ttyACM0" > "./wallets/.$IPFSNODEID/_scan"
|
||||||
else
|
else
|
||||||
if [ -f "./wallets/.$IPFSNODEID/$IPFSNODEID.scan" ]; then rm -f "./wallets/.$IPFSNODEID/$IPFSNODEID.scan"; fi
|
if [ -f "./wallets/.$IPFSNODEID/_scan" ]; then rm -f "./wallets/.$IPFSNODEID/_scan"; fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -4,27 +4,41 @@
|
||||||
# Version: 0.1
|
# Version: 0.1
|
||||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||||
################################################################################
|
################################################################################
|
||||||
source ./shell/init.sh
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
source ./shell/functions.sh
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
|
if [[ -f $MY_PATH/.profile ]]; then
|
||||||
|
source $MY_PATH/.profile
|
||||||
|
elif [[ -f $MY_PATH/../.profile ]]; then
|
||||||
|
source $MY_PATH/../.profile
|
||||||
|
else
|
||||||
|
echo -e "${c_red}Le .profile n'existe pas$c_"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#source $GPATH/shell/tata.sh || echo "pas trouvé"
|
||||||
|
|
||||||
|
source $GPATH/shell/init.sh
|
||||||
|
source $GPATH/shell/functions.sh
|
||||||
|
[[ $1 == "chat" ]] && echo "Bonjours chat" && exit 0
|
||||||
log "X sms_AIDE.sh ($1=phone)"
|
log "X sms_AIDE.sh ($1=phone)"
|
||||||
|
|
||||||
sms_INIT_ACCOUNT "$1" "NOSMS"
|
sms_INIT_ACCOUNT "$1" "NOSMS"
|
||||||
|
|
||||||
MESS="[Aide]
|
MESS="N Pseudo : Création Portefeuille rattaché à Pseudo
|
||||||
N Pseudo (membre ou nom de portefeuille) : Création portefeuille
|
S : Synchro Solde
|
||||||
|
P 06nnnnnnnn 300 : Payer 300 à 06nnnnnnnn
|
||||||
U G1/DU/LOVE : Unité
|
U G1/DU/LOVE : Unité
|
||||||
S : Solde
|
"
|
||||||
P 06nnnnnnnn 300 : Payer 300 à 06nnnnnnnn"
|
|
||||||
# Send response SMS
|
# Send response SMS
|
||||||
sms_SEND "$1" "$MESS"
|
sms_SEND "$1" "$MESS"
|
||||||
|
|
||||||
MESS="EMAIL moi@email : Indiquer son email
|
MESS="EMAIL moi@email : Email pour commande G1Billets
|
||||||
VIR 50 Pseudo : Virer 50 à Pseudo (membre ou Portefeuille SMS)"
|
BILL n : Recevoir 6 G1Billets remplis de n LOVE"
|
||||||
sms_SEND "$1" "$MESS"
|
sms_SEND "$1" "$MESS"
|
||||||
|
|
||||||
MESS="REC 50 Dest S 4 : Virer 50 à Dest pendant 4 Semaines (J/S/M/A)
|
MESS="VIR 50 Pseudo : Virer 50 à Pseudo (membre ou Portefeuille SMS)
|
||||||
BILL n : Recevoir 6 G1Billets remplis de n LOVE par email!
|
REC 50 Dest S 4 : Virer 50 à Dest, 4 Semaines (J/S/M/A)
|
||||||
https://g1sms.fr - $ADMINPSEUDO ($ADMINPHONE)"
|
Contact : $ADMINPSEUDO ($ADMINPHONE) - https://g1sms.fr"
|
||||||
sms_SEND "$1" "$MESS"
|
sms_SEND "$1" "$MESS"
|
||||||
|
|
||||||
log "END sms_AIDE.sh"
|
log "END sms_AIDE.sh"
|
||||||
|
|
|
@ -101,7 +101,7 @@ then
|
||||||
log_history $PHONE "G1BILLET, $TRANSAC, $BILLETPUBKEY"
|
log_history $PHONE "G1BILLET, $TRANSAC, $BILLETPUBKEY"
|
||||||
sleep 3
|
sleep 3
|
||||||
# Fill BILLET with TRANSAC amount
|
# Fill BILLET with TRANSAC amount
|
||||||
PAY=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$TRANSAC" --output="$BILLETPUBKEY" --comment="G1Billet $NUMBER" -y)
|
PAY=$(./silkaj/silkaj transaction --auth-scrypt -salt="$UIDNA" -password="$PIN" --amount="$TRANSAC" --output="$BILLETPUBKEY" --comment="G1Billet $NUMBER" -y)
|
||||||
if [[ "$(echo $PAY | cut -d '|' -f 1)" != "KO" ]]; then
|
if [[ "$(echo $PAY | cut -d '|' -f 1)" != "KO" ]]; then
|
||||||
# NOTES ARE FILES STORED IN DICEWARE COMPOSED SUBDIR
|
# NOTES ARE FILES STORED IN DICEWARE COMPOSED SUBDIR
|
||||||
echo "$(date +%Y%m%d)" > "./billets/$bpath/note.creationdate"
|
echo "$(date +%Y%m%d)" > "./billets/$bpath/note.creationdate"
|
||||||
|
@ -136,7 +136,7 @@ then
|
||||||
|
|
||||||
# + G1SMS Commission
|
# + G1SMS Commission
|
||||||
sleep 2
|
sleep 2
|
||||||
COM=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$BILLCOM" --output="$NODE_G1PUBKEY" --comment="[G1sms+] Achat G1Billets" -y)
|
COM=$(./silkaj/silkaj transaction --auth-scrypt -salt="$UIDNA" -password="$PIN" --amount="$BILLCOM" --output="$NODE_G1PUBKEY" --comment="[G1sms+] Achat G1Billets" -y)
|
||||||
|
|
||||||
# POUR IMPRIMER LES BILLETS! Brancher votre imprimante, configurer cups, activer code lp ;)
|
# POUR IMPRIMER LES BILLETS! Brancher votre imprimante, configurer cups, activer code lp ;)
|
||||||
num=$(date +%Y%m%d)
|
num=$(date +%Y%m%d)
|
||||||
|
|
|
@ -12,10 +12,10 @@ PHONE="$1"
|
||||||
MEMBERUID="$2"
|
MEMBERUID="$2"
|
||||||
TODAY=$(date '+%Y%m%d')
|
TODAY=$(date '+%Y%m%d')
|
||||||
|
|
||||||
if [[ -f "./wallets/$PHONE/VIREMENTS" ]]; then
|
if [[ -f "./wallets/PHONE/$PHONE/VIREMENTS" ]]; then
|
||||||
# CHECK IF ALL DONE.
|
# CHECK IF ALL DONE.
|
||||||
log "__SUB:sms_DESTROY.sh: FOUND "./wallets/$PHONE/VIREMENTS" decrypting with Node key"
|
log "__SUB:sms_DESTROY.sh: FOUND "./wallets/PHONE/$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"
|
echo "${GPGPASS}" | gpg -d -q --output "/tmp/VIREMENTS.$PHONE" --yes --pinentry-mode loopback --passphrase-fd 0 "./wallets/PHONE/$PHONE/VIREMENTS.gpg"
|
||||||
for next in $(cat /tmp/VIREMENTS.$PHONE | cut -d ' ' -f 1); do
|
for next in $(cat /tmp/VIREMENTS.$PHONE | cut -d ' ' -f 1); do
|
||||||
if [[ $next -ge $TODAY ]]; then
|
if [[ $next -ge $TODAY ]]; then
|
||||||
log "__SUB:sms_DESTROY.sh: VIREMENT $next >= $TODAY"
|
log "__SUB:sms_DESTROY.sh: VIREMENT $next >= $TODAY"
|
||||||
|
@ -36,9 +36,9 @@ if [[ "$MEMBERUID" == "DON" || "$MEMBERUID" == "" || "$MEMBERUID" == "$MEMBER" ]
|
||||||
|
|
||||||
AMOUNTG1=$(./silkaj/silkaj amount "$PUBKEY")
|
AMOUNTG1=$(./silkaj/silkaj amount "$PUBKEY")
|
||||||
GETLIMIT=$(bc <<< "$AMOUNTG1 - $LIMIT")
|
GETLIMIT=$(bc <<< "$AMOUNTG1 - $LIMIT")
|
||||||
PAY=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$GETLIMIT" --output="$MEMRIB" --comment="[G1sms+] Wallet DESTROY $MEMBER $MEMBERUID" -y)
|
PAY=$(./silkaj/silkaj transaction --auth-scrypt -salt="$UIDNA" -password="$PIN" --amount="$GETLIMIT" --output="$MEMRIB" --comment="[G1sms+] Wallet DESTROY $MEMBER $MEMBERUID" -y)
|
||||||
sleep 5
|
sleep 5
|
||||||
back=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$LIMIT" --output="$NODEPUB" --comment="[G1sms+] Wallet DESTROY Send $LIMIT To NODE" -y)
|
back=$(./silkaj/silkaj transaction --auth-scrypt -salt="$UIDNA" -password="$PIN" --amount="$LIMIT" --output="$NODEPUB" --comment="[G1sms+] Wallet DESTROY Send $LIMIT To NODE" -y)
|
||||||
|
|
||||||
if [[ "$(echo $PAY | cut -d '|' -f 1)" != "KO" && "$PAY" != "" && "$(echo $back | cut -d '|' -f 1)" != "KO" ]]; then
|
if [[ "$(echo $PAY | cut -d '|' -f 1)" != "KO" && "$PAY" != "" && "$(echo $back | cut -d '|' -f 1)" != "KO" ]]; then
|
||||||
# DESTROY FILESYSTEM AND G1sms WALLET SWARM REFERENCE
|
# DESTROY FILESYSTEM AND G1sms WALLET SWARM REFERENCE
|
||||||
|
@ -54,8 +54,8 @@ $ADMINPSEUDO @ $NODEUIDNA
|
||||||
$back"
|
$back"
|
||||||
sms_SEND "$PHONE" "$mess"
|
sms_SEND "$PHONE" "$mess"
|
||||||
|
|
||||||
rm -Rf ./wallets/$PHONE;
|
rm -Rf ./wallets/PHONE/$PHONE;
|
||||||
rm -Rf ./wallets_swarm/$PHONE;
|
rm -Rf ./wallets_swarm/PHONE/$HASHLINK;
|
||||||
cents=$(echo $(bc -l <<< "scale=0; $GETLIMIT * 100") | cut -d '.' -f 1)
|
cents=$(echo $(bc -l <<< "scale=0; $GETLIMIT * 100") | cut -d '.' -f 1)
|
||||||
move_g1cents "$PHONE" "$MEMRIB" "$cents"
|
move_g1cents "$PHONE" "$MEMRIB" "$cents"
|
||||||
cents=$(echo $(bc -l <<< "scale=0; $LIMIT * 100") | cut -d '.' -f 1)
|
cents=$(echo $(bc -l <<< "scale=0; $LIMIT * 100") | cut -d '.' -f 1)
|
||||||
|
|
|
@ -16,7 +16,7 @@ log "__SUB:sms_EMAIL.sh.sh: START ($1=phone, $2=mail)"
|
||||||
phone="$1"
|
phone="$1"
|
||||||
mail="$2"
|
mail="$2"
|
||||||
|
|
||||||
MAILFILE="./wallets/$phone/$phone.email" # Contains the member EMAIL (Send BILLET)
|
MAILFILE="./wallets/PHONE/$phone/_email" # Contains the member EMAIL (Send BILLET)
|
||||||
|
|
||||||
# Initialise PHONE, PIN, PUBKEY, UNIT ...
|
# Initialise PHONE, PIN, PUBKEY, UNIT ...
|
||||||
sms_INIT_ACCOUNT "$phone" "NOSMS"
|
sms_INIT_ACCOUNT "$phone" "NOSMS"
|
||||||
|
@ -27,7 +27,10 @@ Envoyez N suivi de votre pseudo membre (en respectant Majuscule et minuscule)."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$mail" != "" ]]; then
|
if [[ "$mail" != "" ]]; then
|
||||||
|
# STORE EMAIL AND NODE CYPHER IT BEFORE PUSH TO IPFS
|
||||||
echo "$mail" > "$MAILFILE"
|
echo "$mail" > "$MAILFILE"
|
||||||
|
./shell/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"
|
log "__SUB:sms_EMAIL.sh.sh: EMAIL $MEMBER ($PHONE) NOUVEAU: $mail... Publishing to IPFS"
|
||||||
ipfs_node_wallets_add
|
ipfs_node_wallets_add
|
||||||
else
|
else
|
||||||
|
|
|
@ -79,8 +79,8 @@ fi
|
||||||
|
|
||||||
##### IS G1DAB NODE?
|
##### IS G1DAB NODE?
|
||||||
if [[ ! $PASSENGER && ! $G1DAB ]]; then
|
if [[ ! $PASSENGER && ! $G1DAB ]]; then
|
||||||
if [[ -f ./wallets/$PHONE/ipfsid.G1TAGNODE ]]; then
|
if [[ -f ./wallets/PHONE/$PHONE/MASTERPHONE.ipfsid ]]; then
|
||||||
DABnode=$(cat ./wallets/$PHONE/ipfsid.G1TAGNODE)
|
DABnode=$(cat ./wallets/PHONE/$PHONE/MASTERPHONE.ipfsid)
|
||||||
if [[ "$DABnode" == "$IPFSNODEID" ]]; then
|
if [[ "$DABnode" == "$IPFSNODEID" ]]; then
|
||||||
sms_ERROR "$PHONE" "IMPRIMANTE G1Tag non détectée!! Choisissez un autre G1Dab... $spot"
|
sms_ERROR "$PHONE" "IMPRIMANTE G1Tag non détectée!! Choisissez un autre G1Dab... $spot"
|
||||||
log "__SUB:sms_G1TAG.sh: IMPRIMANTE G1Tag non détectée!!"
|
log "__SUB:sms_G1TAG.sh: IMPRIMANTE G1Tag non détectée!!"
|
||||||
|
@ -100,7 +100,7 @@ fi
|
||||||
###########################################
|
###########################################
|
||||||
# PAY VIR + PERCENT G1
|
# PAY VIR + PERCENT G1
|
||||||
ML=$(bc -l <<< "scale=2; $VIR + $PERCENT")
|
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=$(./shell/timeout.sh -t 29 ./silkaj/silkaj transaction --auth-scrypt -salt="$UIDNA" -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
|
if [[ "$PAY" == "" || "$(echo $PAY | cut -d '|' -f 1)" == "KO" ]]; then
|
||||||
new=$(./shell/checknodes.sh "BAN")
|
new=$(./shell/checknodes.sh "BAN")
|
||||||
sms_ERROR "$PHONE" "Il est survenu un problème lors de votre virement: $PAY / Silkaj: $new";
|
sms_ERROR "$PHONE" "Il est survenu un problème lors de votre virement: $PAY / Silkaj: $new";
|
||||||
|
@ -217,8 +217,8 @@ TAGCHAIN="./TAG/${RR}/TAG_chain" # contains IPFS current ipfs hash
|
||||||
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" "./shell/g1tag.png" "./TAG/${RR}/${RR}.png"
|
||||||
composite -compose Over -gravity SouthEast "./TAG/${RR}/TAG_WRITE.png" "./TAG/${RR}/${RR}.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
|
# ADD Avatar in the Center
|
||||||
# if [[ $(file "./wallets/$PHONE/$PHONE.avatar.png" | grep 'PNG') ]]; then
|
# 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"
|
# composite -compose Over -resize 150% -gravity Center "./wallets/PHONE/$PHONE/_avatar.png" "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png"
|
||||||
# else
|
# 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 "./shell/G1Anar.png" "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png"
|
||||||
# fi
|
# fi
|
||||||
|
@ -234,22 +234,23 @@ TAGCHAIN="./TAG/${RR}/TAG_chain" # contains IPFS current ipfs hash
|
||||||
# ROTATION (FIXE AVATAR & CHIFFRE)?
|
# ROTATION (FIXE AVATAR & CHIFFRE)?
|
||||||
# convert "./TAG/${RR}/${RR}.png" -rotate -180 "./TAG/${RR}/${RR}.png"
|
# convert "./TAG/${RR}/${RR}.png" -rotate -180 "./TAG/${RR}/${RR}.png"
|
||||||
# QL-700 PRINT PREPARE
|
# QL-700 PRINT PREPARE
|
||||||
if [[ -f "./wallets/$PHONE/ipfsid.G1TAGNODE" ]]; then
|
if [[ -f "./wallets/PHONE/$PHONE/MASTERPHONE.ipfsid" ]]; then
|
||||||
destnode=$(cat "./wallets/$PHONE/ipfsid.G1TAGNODE")
|
destnode=$(cat "./wallets/PHONE/$PHONE/MASTERPHONE.ipfsid")
|
||||||
if [[ "$destnode" == "" || "$destnode" == "$IPFSNODEID" ]]; then
|
if [[ "$destnode" == "" || "$destnode" == "$IPFSNODEID" ]]; then
|
||||||
log "__SUB:sms_G1TAG.sh: Local PRINT ${RR} # ipfs ls /ipns/${J}"
|
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_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
|
brother_ql_print "./TAG/${RR}/${RR}.bin" /dev/usb/lp0
|
||||||
else
|
else
|
||||||
# PRINT ON ANOTHER G1Dab. Send files to G1Tag Printer TODO: Could use DESTNODEPUB instead of NODE_G1PUBKEY ?
|
# PRINT ON ANOTHER G1Dab. Send files to G1Tag Printer Use .$destnode/_pub CRYPTINGKEY ?
|
||||||
log "__SUB:sms_G1TAG.sh: Remote PRINT :: ./wallets/.$destnode/PRINT/${RR}.bin "
|
CRYPTINGKEY=$(cat ./wallets_swarm/.$destnode/_pub)
|
||||||
|
log "__SUB:sms_G1TAG.sh: Remote PRINT :: ./wallets/.$destnode/PRINT/${RR}.png.node.crypt ($CRYPTINGKEY)"
|
||||||
mkdir -p "./wallets/.$destnode/PRINT/"
|
mkdir -p "./wallets/.$destnode/PRINT/"
|
||||||
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "./TAG/${RR}/${RR}.png" -o "./wallets/.$destnode/PRINT/${RR}.bin"
|
./shell/natools.py encrypt -p $CRYPTINGKEY -i "./TAG/${RR}/${RR}.png" -o "./wallets/.$destnode/PRINT/${RR}.png.node.crypt"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
#
|
#
|
||||||
log "__SUB:sms_G1TAG.sh: Becoming default PRINTER :: $IPFSNODEID"
|
log "__SUB:sms_G1TAG.sh: Becoming default PRINTER :: $IPFSNODEID"
|
||||||
echo "$IPFSNODEID" > "./wallets/$PHONE/ipfsid.G1TAGNODE"
|
echo "$IPFSNODEID" > "./wallets/PHONE/$PHONE/ipfsid.G1TAGNODE"
|
||||||
brother_ql_create --model QL-700 "./TAG/${RR}/${RR}.png" --label-size 62 > "./TAG/${RR}/${RR}.bin"
|
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
|
brother_ql_print "./TAG/${RR}/${RR}.bin" /dev/usb/lp0
|
||||||
destnode="$IPFSNODEID"
|
destnode="$IPFSNODEID"
|
||||||
|
@ -259,14 +260,14 @@ done
|
||||||
|
|
||||||
if [[ "$destnode" == "" || "$destnode" == "$IPFSNODEID" ]]; then
|
if [[ "$destnode" == "" || "$destnode" == "$IPFSNODEID" ]]; then
|
||||||
# PRINT $PHONE WALLET PUBKEY
|
# PRINT $PHONE WALLET PUBKEY
|
||||||
qrencode -s 5 -o "/tmp/G1PubQR.$PHONE.png" "$(cat ./wallets/$PHONE/$PHONE.pub)"
|
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"
|
composite -compose Over -gravity West "/tmp/G1PubQR.$PHONE.png" "./shell/g1tag.png" "/tmp/G1PubQR.$PHONE.png"
|
||||||
|
|
||||||
if [[ $(file "./wallets/$PHONE/$PHONE.avatar.png" | grep 'PNG') ]]; then
|
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"
|
composite -compose Over -gravity Center "./wallets/PHONE/$PHONE/_avatar.png" "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png"
|
||||||
fi
|
fi
|
||||||
if [[ -f ./wallets/$PHONE/$PHONE.uidrib ]]; then
|
if [[ -f ./wallets/PHONE/$PHONE/_uidrib ]]; then
|
||||||
qrencode -s 6 -o "/tmp/G1MemQR.$PHONE.png" "$(cat ./wallets/$PHONE/$PHONE.uidrib)";
|
qrencode -s 6 -o "/tmp/G1MemQR.$PHONE.png" "$(cat ./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
|
composite -compose Over -gravity SouthEast "/tmp/G1MemQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png" && rm /tmp/G1MemQR.$PHONE.png
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
################################################################################
|
################################################################################
|
||||||
# Author: Fred (support@qo-op.com)
|
# Author: Fred (support@qo-op.com)
|
||||||
# Version: 0.1
|
# Version: 0.2
|
||||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||||
################################################################################
|
################################################################################
|
||||||
|
# CREATE NEW G1 ./wallets/PHONE/sha256_ID ACCOUNT
|
||||||
source ./shell/init.sh
|
source ./shell/init.sh
|
||||||
source ./shell/functions.sh
|
source ./shell/functions.sh
|
||||||
log "${c_yellow}X sms_NEW.sh ($1=phone, $2=uid)$c_"
|
log "${c_yellow}X sms_NEW.sh ($1=phone, $2=uid)$c_"
|
||||||
|
@ -16,11 +17,14 @@ sms_INIT_ACCOUNT "$PHONE"
|
||||||
if [[ "$MEMBERUID" != "" && "$MEMBERUID" != "N" && "$MEMBERUID" != "D" && "$MEMBERUID" != "NOUV" ]]; then
|
if [[ "$MEMBERUID" != "" && "$MEMBERUID" != "N" && "$MEMBERUID" != "D" && "$MEMBERUID" != "NOUV" ]]; then
|
||||||
# UID RECEIVED in SMS
|
# UID RECEIVED in SMS
|
||||||
VIRDEST=$MEMBERUID
|
VIRDEST=$MEMBERUID
|
||||||
MEMRIB=$(sms_uid2key "$MEMBERUID" "$PHONE" "$PIN")
|
# GET ASSOCIATED MEMBER OR UIDNA G1 PUB KEY
|
||||||
|
MEMRIB=$(sms_uid2pubkey "$MEMBERUID" "$PHONE" "$PIN")
|
||||||
|
# No related wallet found
|
||||||
if [[ $MEMRIB == "" ]]; then exit; fi
|
if [[ $MEMRIB == "" ]]; then exit; fi
|
||||||
MEMBER="$MEMBERUID"
|
MEMBER="$MEMBERUID"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# TODO Replace "NOSMS" mode with .profile READ, or similar...
|
||||||
sms_INIT_ACCOUNT "$PHONE" "NOSMS"
|
sms_INIT_ACCOUNT "$PHONE" "NOSMS"
|
||||||
# Check account amount
|
# Check account amount
|
||||||
countvalues=($(check_account))
|
countvalues=($(check_account))
|
||||||
|
@ -29,26 +33,19 @@ AMOUNTG1=${countvalues[0]}
|
||||||
AMOUNT=${countvalues[1]}
|
AMOUNT=${countvalues[1]}
|
||||||
UNIT=${countvalues[2]}
|
UNIT=${countvalues[2]}
|
||||||
|
|
||||||
mess="[G1sms+]
|
mess="[G1sms+] Portefeuille G1
|
||||||
Id: $UIDNA
|
$UIDNA
|
||||||
Solde: $AMOUNT $UNIT
|
$PIN
|
||||||
DAB: $DABID
|
|
||||||
---
|
---
|
||||||
https://cesium.app
|
Solde: $AMOUNT $UNIT
|
||||||
* Identifiant ="
|
https://cesium.app"
|
||||||
sms_SEND "$PHONE" "$mess"
|
sms_SEND "$PHONE" "$mess"
|
||||||
sleep 2
|
sleep 2
|
||||||
sms_SEND "$PHONE" "$PHONE"
|
sms_SEND "$PHONE" "* Clef Publique G1 (RIB) ="
|
||||||
sleep 2
|
|
||||||
sms_SEND "$PHONE" "* Mot de passe ="
|
|
||||||
sleep 2
|
|
||||||
sms_SEND "$PHONE" "$PIN"
|
|
||||||
sleep 2
|
|
||||||
sms_SEND "$PHONE" "* Clef Publique (RIB) ="
|
|
||||||
sleep 2
|
sleep 2
|
||||||
sms_SEND "$PHONE" "$PUBKEY"
|
sms_SEND "$PHONE" "$PUBKEY"
|
||||||
sleep 2
|
sleep 2
|
||||||
sms_SEND "$PHONE" "Compte relié? $MEMBER $MAIL
|
[[ $MEMBER || $MAIL ]] && sms_SEND "$PHONE" "Compte relié: $MEMBER $MAIL
|
||||||
$MEMRIB"
|
$MEMRIB"
|
||||||
|
|
||||||
# Add contact to database
|
# Add contact to database
|
||||||
|
|
|
@ -14,9 +14,12 @@ PHONEDEST="$2"
|
||||||
# Initialise PHONE, PIN, PUBKEY, UNIT
|
# Initialise PHONE, PIN, PUBKEY, UNIT
|
||||||
sms_INIT_ACCOUNT "$phone" "NOSMS"
|
sms_INIT_ACCOUNT "$phone" "NOSMS"
|
||||||
pin=$PIN
|
pin=$PIN
|
||||||
|
uidna=$UIDNA
|
||||||
if [[ $UNKNOWN == "unknown" ]]; then
|
if [[ $UNKNOWN == "unknown" ]]; then
|
||||||
sms_ERROR "$phone" "Porte-monnaie inconnu. Envoyez N (suivi de votre Pseudo membre) pour le créer."
|
sms_ERROR "$phone" "Porte-monnaie inconnu. Envoyez N (suivi de votre Pseudo membre) pour le créer."
|
||||||
exit
|
exit
|
||||||
|
else
|
||||||
|
log "PIN: $pin"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
|
@ -34,14 +37,17 @@ fi
|
||||||
|
|
||||||
# Add COUNTRY code to PHONEDEST + PHONEDEST INIT
|
# Add COUNTRY code to PHONEDEST + PHONEDEST INIT
|
||||||
PHONEDEST="$COUNTRY${PHONEDEST:1:10}"
|
PHONEDEST="$COUNTRY${PHONEDEST:1:10}"
|
||||||
|
HASHLINKDEST=$(echo -n $PHONEDEST | sha256sum | cut -d ' ' -f 1)
|
||||||
|
|
||||||
# CHECK if PHONEDEST have an account in IPFS G1sms+ SWARM
|
# CHECK if PHONEDEST have an account in IPFS G1sms+ SWARM
|
||||||
if [[ -f "./wallets_swarm/$PHONEDEST/$PHONEDEST.pub" ]]
|
if [[ -f "./wallets_swarm/PHONE/$HASHLINKDEST/_pub" ]]
|
||||||
then
|
then
|
||||||
PUBKEYDEST=$(cat "./wallets_swarm/$PHONEDEST/$PHONEDEST.pub")
|
PUBKEYDEST=$(cat "./wallets_swarm/PHONE/$HASHLINKDEST/_pub")
|
||||||
UNITDEST=$(cat "./wallets_swarm/$PHONEDEST/$PHONEDEST.unit")
|
UNITDEST=$(cat "./wallets_swarm/PHONE/$HASHLINKDEST/_unit")
|
||||||
|
log "__SUB:sms_PAY.sh: PUBKEYDEST found in swarn... $PUBKEYDEST"
|
||||||
else
|
else
|
||||||
# NO, then create NEW Wallet
|
# NO, then create NEW Wallet
|
||||||
|
log "__SUB:sms_PAY.sh: Creating Account for... $PHONEDEST"
|
||||||
sms_INIT_ACCOUNT "$PHONEDEST"
|
sms_INIT_ACCOUNT "$PHONEDEST"
|
||||||
# Refreshed new values
|
# Refreshed new values
|
||||||
PUBKEYDEST="$PUBKEY"
|
PUBKEYDEST="$PUBKEY"
|
||||||
|
@ -49,11 +55,13 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Payement
|
# Payement
|
||||||
PAY=$(./shell/timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt="$phone" -password="$pin" --amount="$VIR" --output="$PUBKEYDEST" --comment="[G1sms+] PAY $AMOUNT $UNIT" -y)
|
log "./silkaj/silkaj transaction --auth-scrypt -salt="$uidna" -password="$pin" --amount="$VIR" --output="$PUBKEYDEST""
|
||||||
|
PAY=$(./shell/timeout.sh -t 30 ./silkaj/silkaj transaction --auth-scrypt -salt="$uidna" -password="$pin" --amount="$VIR" --output="$PUBKEYDEST" --comment="[G1sms+] PAY $AMOUNT $UNIT" -y)
|
||||||
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" || "$PAY" == "" ]]; then
|
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" || "$PAY" == "" ]]; then
|
||||||
new=$(./shell/checknodes.sh "BAN")
|
sms_ERROR "$phone" "PIN : $PAY ? Voyez vous votre code secret: $pin?
|
||||||
sms_ERROR "$phone" "Problème de payement avec silkaj (changement de serveur $new): $PAY";
|
NON, Reinitaliser Compte. Envoyer: RAZ
|
||||||
log "__SUB:sms_PAY.sh: Problème de payement avec silkaj $new : $PAY"
|
OUI, Bourage Blockchain. Envoyer: S";
|
||||||
|
log "__SUB:sms_PAY.sh: Problème de payement avec silkaj : $PAY"
|
||||||
exit
|
exit
|
||||||
else
|
else
|
||||||
# OK: Sync g1cents TODO check move_g1cents function and generalize on all silkaj transactions
|
# OK: Sync g1cents TODO check move_g1cents function and generalize on all silkaj transactions
|
||||||
|
@ -64,11 +72,11 @@ fi
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|
||||||
# + G1SMS Commission
|
# + 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)
|
log "./silkaj/silkaj transaction --auth-scrypt -salt="$uidna" -password="$pin" --amount="$PERCENT" --output="$NODE_G1PUBKEY""
|
||||||
if [[ "$(echo $COM | cut -d '|' -f 1)" == "KO" || "$PAY" == "" ]]; then
|
COM=$(./shell/timeout.sh -t 30 ./silkaj/silkaj transaction --auth-scrypt -salt="$uidna" -password="$pin" --amount="$PERCENT" --output="$NODE_G1PUBKEY" --comment="[G1sms+] P Commission" -y)
|
||||||
new=$(./shell/checknodes.sh "BAN")
|
if [[ "$(echo $COM | cut -d '|' -f 1)" == "KO" || "$COM" == "" ]]; then
|
||||||
sms_ERROR "$phone" "Problème de payement avec silkaj (changement de serveur $new): $COM";
|
sms_ERROR "$phone" "Problème de bourrage blockchain : $COM";
|
||||||
log "__SUB:sms_PAY.sh: Problème de payement avec silkaj $new : $COM"
|
log "__SUB:sms_PAY.sh: Problème de payement avec silkaj : $COM"
|
||||||
exit
|
exit
|
||||||
else
|
else
|
||||||
# OK: Sync g1cents
|
# OK: Sync g1cents
|
||||||
|
|
|
@ -41,7 +41,7 @@ esac
|
||||||
###########################################################
|
###########################################################
|
||||||
# Initialise PHONE, PIN, PUBKEY, UNIT
|
# Initialise PHONE, PIN, PUBKEY, UNIT
|
||||||
sms_INIT_ACCOUNT "$PHONE" "NOSMS"
|
sms_INIT_ACCOUNT "$PHONE" "NOSMS"
|
||||||
if [[ $MEMBER == "" ]]; then MEMBER=$UIDNA; fi
|
[[ $MEMBER == "" ]] && MEMBER=$UIDNA # Wallet self UIDNA??
|
||||||
###########################################################
|
###########################################################
|
||||||
# CHECK FOR ERRORS
|
# CHECK FOR ERRORS
|
||||||
if [[ $UNKNOWN == "unknown" ]]; then
|
if [[ $UNKNOWN == "unknown" ]]; then
|
||||||
|
@ -79,20 +79,20 @@ else
|
||||||
log "__SUB:sms_REC.sh: SEARCH $VIRDEST related wallet!!! $DESTRIB "
|
log "__SUB:sms_REC.sh: SEARCH $VIRDEST related wallet!!! $DESTRIB "
|
||||||
DESTMEM="$VIRDEST"
|
DESTMEM="$VIRDEST"
|
||||||
# SEARCH IN WALLETS
|
# SEARCH IN WALLETS
|
||||||
LOCAL=$(grep -Rwl "$DESTMEM" ./wallets/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
|
LOCALPHONE=$(grep -Rwl "$DESTMEM" ./wallets/PHONE/*/_uidname | tail -n 1 | cut -f 4 -d '/')
|
||||||
if [[ "$LOCAL" == "" ]]; then LOCAL=$(grep -Rwl "$DESTMEM" ./wallets/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
|
[[ ! $LOCALPHONE ]] && LOCALPHONE=$(grep -Rwl "$DESTMEM" ./wallets/PHONE/*/_uidna | tail -n 1 | cut -f 4 -d '/')
|
||||||
if [[ "$LOCAL" != "" ]]; then
|
if [[ "$LOCALPHONE" != "" ]]; then
|
||||||
# LOCAL G1sms account
|
# LOCALPHONE G1sms account
|
||||||
DESTRIB=$(cat ./wallets/$LOCAL/$LOCAL.pub)
|
DESTRIB=$(cat ./wallets/PHONE/$LOCALPHONE/_pub)
|
||||||
DESTPHONE=$LOCAL
|
DESTPHONE=$LOCALPHONE
|
||||||
log "__SUB:sms_REC.sh: FOUND LOCAL ($MASTERPHONE) G1sms+ wallet: $DESTRIB ($LOCAL)"
|
log "__SUB:sms_REC.sh: FOUND LOCALPHONE ($MASTERPHONE) G1sms+ wallet: $DESTRIB ($LOCALPHONE)"
|
||||||
else
|
else
|
||||||
# SEARCH IN WALLETS SWARM (MEMBER THEN UIDNA)
|
# SEARCH IN WALLETS SWARM (MEMBER THEN UIDNA)
|
||||||
INSWARM=$(grep -Rwl "$DESTMEM" ./wallets_swarm/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
|
INSWARMHASH=$(grep -Rwl "$DESTMEM" ./wallets_swarm/PHONE/*/_uidname | tail -n 1 | cut -f 4 -d '/')
|
||||||
if [[ "$INSWARM" == "" ]]; then INSWARM=$(grep -Rwl "$DESTMEM" ./wallets_swarm/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
|
[[ ! $INSWARMHASH ]] && INSWARMHASH=$(grep -Rwl "$DESTMEM" ./wallets_swarm/PHONE/*/_uidna | tail -n 1 | cut -f 4 -d '/')
|
||||||
if [[ "$INSWARM" != "" ]]; then
|
if [[ "$INSWARM" != "" ]]; then
|
||||||
REMOTENODE=$(cat ./wallets_swarm/$INSWARM/MASTERPHONE.sms)
|
REMOTENODE=$(cat ./wallets_swarm/PHONE/$INSWARM/MASTERPHONE.sms)
|
||||||
DESTRIB=$(cat ./wallets_swarm/$INSWARM/$INSWARM.pub)
|
DESTRIB=$(cat ./wallets_swarm/PHONE/$INSWARM/_pub)
|
||||||
DESTPHONE=$INSWARM
|
DESTPHONE=$INSWARM
|
||||||
log "__SUB:sms_REC.sh: FOUND SWARM ($REMOTENODE) G1sms+ wallet: $DESTRIB ($INSWARM)"
|
log "__SUB:sms_REC.sh: FOUND SWARM ($REMOTENODE) G1sms+ wallet: $DESTRIB ($INSWARM)"
|
||||||
else
|
else
|
||||||
|
@ -106,7 +106,7 @@ fi
|
||||||
# ADD DATES TO VIREMENTS
|
# ADD DATES TO VIREMENTS
|
||||||
if [[ "$DESTRIB" != "" ]]; then
|
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..."
|
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=$(./shell/timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt="$UIDNA" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] REC 1/$TIME ($PERIOD)" -y)
|
||||||
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" || "$PAY" == "" ]]; then
|
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" || "$PAY" == "" ]]; then
|
||||||
new=$(./shell/checknodes.sh "BAN")
|
new=$(./shell/checknodes.sh "BAN")
|
||||||
sms_ERROR "$PHONE" "Problème de payement avec silkaj (changement de serveur $new): $PAY";
|
sms_ERROR "$PHONE" "Problème de payement avec silkaj (changement de serveur $new): $PAY";
|
||||||
|
|
|
@ -73,7 +73,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$DESTRIB" != "" ]]; then
|
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=$(./shell/timeout.sh -t 30 ./silkaj/silkaj transaction --auth-scrypt -salt="$UIDNA" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] VIR $VIR G1" -y)
|
||||||
if [[ "$(echo $PAY | cut -d '|' -f 1)" != "KO" && "$PAY" != "" ]]; then
|
if [[ "$(echo $PAY | cut -d '|' -f 1)" != "KO" && "$PAY" != "" ]]; then
|
||||||
log "__SUB:sms_VIR.sh: VIREMENT VERS $DESTMEM OK"
|
log "__SUB:sms_VIR.sh: VIREMENT VERS $DESTMEM OK"
|
||||||
mess="[G1sms+] $MEMBER
|
mess="[G1sms+] $MEMBER
|
||||||
|
|
|
@ -21,19 +21,19 @@ Envoyez N pour créer votre portefeuille G1sms"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$askeduidna" == "" ]]; then #SELF
|
if [[ "$askeduidna" == "" ]]; then #SELF
|
||||||
if [[ -f "./wallets/.$IPFSNODEID/$IPFSNODEID.uidna" ]]; then
|
if [[ -f "./wallets/.$IPFSNODEID/_uidna" ]]; then
|
||||||
nodeuidnafile="./wallets/.$IPFSNODEID/$IPFSNODEID.uidna"
|
nodeuidnafile="./wallets/.$IPFSNODEID/_uidna"
|
||||||
uidna=$(cat $nodeuidnafile)
|
uidna=$(cat $nodeuidnafile)
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
nodeuidnafile=$(grep -Rwl "$askeduidna" ./wallets_swarm/.*/*.uidna)
|
nodeuidnafile=$(grep -Rwl "$askeduidna" ./wallets_swarm/.Qm*/_uidna | tail -n 1)
|
||||||
uidna=$(cat $nodeuidnafile)
|
uidna=$(cat $nodeuidnafile)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -f $nodeuidnafile && "$uidna" != "" ]]; then
|
if [[ -f $nodeuidnafile && "$uidna" != "" ]]; then
|
||||||
ipfsnodeid=$(echo $nodeuidnafile | cut -d '/' -f 3 | cut -d '.' -f 2 )
|
ipfsnodeid=$(echo $nodeuidnafile | cut -d '/' -f 3 | cut -d '.' -f 2 )
|
||||||
echo $uidna > ./wallets/$PHONE/uidna.G1TAGNODE
|
echo $uidna > ./wallets/PHONE/$PHONE/uidna.G1TAGNODE
|
||||||
echo $ipfsnodeid > ./wallets/$PHONE/ipfsid.G1TAGNODE
|
echo $ipfsnodeid > ./wallets/PHONE/$PHONE/ipfsid.G1TAGNODE
|
||||||
log "__SUB:sms_WHERE.sh: Distributeur de G1Tag $uidna : $ipfsnodeid "
|
log "__SUB:sms_WHERE.sh: Distributeur de G1Tag $uidna : $ipfsnodeid "
|
||||||
I=$(ipfs_node_wallets_add)
|
I=$(ipfs_node_wallets_add)
|
||||||
log_history $PHONE "G1TagNode, $uidna, $ipfsnodeid"
|
log_history $PHONE "G1TagNode, $uidna, $ipfsnodeid"
|
||||||
|
@ -47,7 +47,7 @@ fi
|
||||||
mess="[G1sms+] $MEMBER
|
mess="[G1sms+] $MEMBER
|
||||||
Votre distributeur de G1Tag par défaut est
|
Votre distributeur de G1Tag par défaut est
|
||||||
$uidna ($ipfsnodeid), situé:
|
$uidna ($ipfsnodeid), situé:
|
||||||
$(cat ./wallets_swarm/.$ipfsnodeid/$ipfsnodeid.where)"
|
$(cat ./wallets_swarm/.$ipfsnodeid/_where)"
|
||||||
|
|
||||||
sms_SEND "$PHONE" "$mess"
|
sms_SEND "$PHONE" "$mess"
|
||||||
|
|
||||||
|
|
|
@ -155,8 +155,8 @@ cat /dev/ttyACM0 | while read line; do
|
||||||
|
|
||||||
# Make Silkaj TX
|
# Make Silkaj TX
|
||||||
G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1)
|
G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1)
|
||||||
log "__SUB:tag_READ.sh: Silkaj TX $NODE_G1PRIVKEYFILE ($G1VAL) -> $CASHBACK"
|
log "__SUB:tag_READ.sh: Silkaj TX $NODE_G1AUTHFILE ($G1VAL) -> $CASHBACK"
|
||||||
PAY=$(./silkaj/silkaj transaction --auth-file -file="$NODE_G1PRIVKEYFILE" --amount=$G1VAL --output=$CASHBACK --comment="[G1sms+] CAPTURE G1Tag $RR" -y)
|
PAY=$(./silkaj/silkaj transaction --auth-file -file="$NODE_G1AUTHFILE" --amount=$G1VAL --output=$CASHBACK --comment="[G1sms+] CAPTURE G1Tag $RR" -y)
|
||||||
|
|
||||||
log "__SUB:tag_READ.sh: Silkaj output = $PAY"
|
log "__SUB:tag_READ.sh: Silkaj output = $PAY"
|
||||||
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" ]]; then
|
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" ]]; then
|
||||||
|
@ -221,7 +221,7 @@ cat /dev/ttyACM0 | while read line; do
|
||||||
else
|
else
|
||||||
log "__SUB:tag_READ.sh: Transfert de G1 Tag à G1 Tag. $BVALUE $CUR"
|
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}"
|
./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]} $NODE_G1PRIVKEYFILE)"
|
log "__SUB:tag_READ.sh: $(./shell/tag_OP.sh ${obj[1]} ${obj[0]} ${val[1]} $NODE_G1AUTHFILE)"
|
||||||
fi
|
fi
|
||||||
CASHBACK=""
|
CASHBACK=""
|
||||||
fi
|
fi
|
||||||
|
@ -234,7 +234,7 @@ cat /dev/ttyACM0 | while read line; do
|
||||||
else
|
else
|
||||||
log "__SUB:tag_READ.sh: Transformation du G1 Tag en Rec Tag. ${val[0]} = ${val[1]}"
|
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}..."
|
./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 $NODE_G1PRIVKEYFILE)"
|
log "__SUB:tag_READ.sh: $(./shell/tag_OP.sh ${obj[0]} ${obj[0]} 0 $NODE_G1AUTHFILE)"
|
||||||
fi
|
fi
|
||||||
CASHBACK=""
|
CASHBACK=""
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -20,9 +20,9 @@ function log () {
|
||||||
$1" >> /tmp/tag_READ_X.log
|
$1" >> /tmp/tag_READ_X.log
|
||||||
}
|
}
|
||||||
|
|
||||||
NODE_G1PRIVKEYFILE="${MY_PATH}/../g1sms.priv.key"
|
NODE_G1AUTHFILE="${MY_PATH}/../g1sms.priv.key"
|
||||||
if [ ! -f $NODE_G1PRIVKEYFILE ]; then echo "ERREUR CLEF DECHIFFRAGE!"; exit; fi
|
if [ ! -f $NODE_G1AUTHFILE ]; then echo "ERREUR CLEF DECHIFFRAGE!"; exit; fi
|
||||||
# TODO G1TAG: USE CREATOR NODE KEY FILE INSTEAD OF NODE_G1PRIVKEYFILE SWARM KEY
|
# TODO G1TAG: USE CREATOR NODE KEY FILE INSTEAD OF NODE_G1AUTHFILE SWARM KEY
|
||||||
|
|
||||||
# DOUCHETTE ES TU LA?
|
# DOUCHETTE ES TU LA?
|
||||||
if [ ! $G1TX ]; then echo "Branchez votre lecteur de QR code!"; exit; fi
|
if [ ! $G1TX ]; then echo "Branchez votre lecteur de QR code!"; exit; fi
|
||||||
|
@ -177,8 +177,8 @@ cat /dev/ttyACM0 | while read line; do
|
||||||
|
|
||||||
# Make Silkaj TX
|
# Make Silkaj TX
|
||||||
G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1)
|
G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1)
|
||||||
log "__SUB:tag_READ_X.sh: Silkaj TX $NODE_G1PRIVKEYFILE ($G1VAL) -> $CASHBACK"
|
log "__SUB:tag_READ_X.sh: Silkaj TX $NODE_G1AUTHFILE ($G1VAL) -> $CASHBACK"
|
||||||
PAY=$(./silkaj/silkaj transaction --auth-file -file="$NODE_G1PRIVKEYFILE" --amount=$G1VAL --output=$CASHBACK --comment="[G1sms+] G1Tag $RR ZEN -> G1" -y)
|
PAY=$(./silkaj/silkaj transaction --auth-file -file="$NODE_G1AUTHFILE" --amount=$G1VAL --output=$CASHBACK --comment="[G1sms+] G1Tag $RR ZEN -> G1" -y)
|
||||||
|
|
||||||
log "__SUB:tag_READ_X.sh: Silkaj output = $PAY"
|
log "__SUB:tag_READ_X.sh: Silkaj output = $PAY"
|
||||||
# Stop 1LETTER.spinner.py
|
# Stop 1LETTER.spinner.py
|
||||||
|
@ -251,8 +251,8 @@ cat /dev/ttyACM0 | while read line; do
|
||||||
COMBIENZEN=$(bc -l <<< "$COMBIEN * 100")
|
COMBIENZEN=$(bc -l <<< "$COMBIEN * 100")
|
||||||
log "__SUB:tag_READ_X.sh: Transfert de G1 Tag à G1 Tag. $COMBIEN"
|
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"
|
./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 $NODE_G1PRIVKEYFILE"
|
log "__SUB:tag_READ_X.sh: ./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN $NODE_G1AUTHFILE"
|
||||||
./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN "$NODE_G1PRIVKEYFILE"
|
./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN "$NODE_G1AUTHFILE"
|
||||||
else
|
else
|
||||||
./shell/tools/4LETTER.scroll.py "ERREUR $COMBIEN > VALEUR DE ${FID} *** ${val[1]} ZEN"
|
./shell/tools/4LETTER.scroll.py "ERREUR $COMBIEN > VALEUR DE ${FID} *** ${val[1]} ZEN"
|
||||||
fi
|
fi
|
||||||
|
@ -268,7 +268,7 @@ cat /dev/ttyACM0 | while read line; do
|
||||||
else
|
else
|
||||||
log "__SUB:tag_READ_X.sh: Transformation du G1 Tag en Rec Tag. ${val[0]} = ${val[1]}"
|
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}";
|
./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 $NODE_G1PRIVKEYFILE)"
|
log "__SUB:tag_READ_X.sh: $(./shell/tag_OP.sh ${obj[0]} ${obj[0]} 0 $NODE_G1AUTHFILE)"
|
||||||
fi
|
fi
|
||||||
CASHBACK=""
|
CASHBACK=""
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo yoyoyo
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
|
pwd=$(pwd)
|
||||||
|
|
||||||
|
if [[ -f $MY_PATH/.profile ]]; then
|
||||||
|
source $MY_PATH/.profile
|
||||||
|
elif [[ -f $MY_PATH/../.profile ]]; then
|
||||||
|
source $MY_PATH/../.profile
|
||||||
|
else
|
||||||
|
echo -e "${c_red}Le .profile n'existe pas$c_"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source $GPATH/shell/tata.sh || echo "pas trouvé"
|
||||||
|
|
||||||
|
echo "je suis là: $GPATH/shell !"
|
||||||
|
|
||||||
|
#$GPATH/shell/sms_AIDE.sh $1
|
||||||
|
|
||||||
|
exit 0
|
|
@ -37,6 +37,7 @@ export YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
|
||||||
cd $MY_PATH
|
cd $MY_PATH
|
||||||
source $MY_PATH/shell/init.sh
|
source $MY_PATH/shell/init.sh
|
||||||
source $MY_PATH/shell/functions.sh
|
source $MY_PATH/shell/functions.sh
|
||||||
|
date=$(date '+%D à %H:%M')
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
# Get global variables from gammu-smsd
|
# Get global variables from gammu-smsd
|
||||||
|
@ -46,13 +47,12 @@ TEXT="$SMS_1_TEXT"
|
||||||
CMD=$(echo "$TEXT" | awk '{print toupper($1)}')
|
CMD=$(echo "$TEXT" | awk '{print toupper($1)}')
|
||||||
|
|
||||||
log "##########################################################################################"
|
log "##########################################################################################"
|
||||||
|
log "#################################### ${c_yellow}$date$c_ ####################################"
|
||||||
|
log "##########################################################################################\n"
|
||||||
|
log "${c_green}SMS received $PHONE $TEXT$c_"
|
||||||
log "#############################################"
|
log "#############################################"
|
||||||
log "#############################################"
|
log "${$c_yellow}NODE: ALL WALLETS: ipfs ls /ipns/$IPFSNODEID$c_"
|
||||||
log "$(date)"
|
log "${$c_yellow}NODE: G1wallet: cat ./wallets/.$IPFSNODEID/NODE.pub$c_"
|
||||||
log "SMS received $PHONE $TEXT"
|
|
||||||
log "#############################################"
|
|
||||||
log "NODE: ALL WALLETS: ipfs ls /ipns/$IPFSNODEID"
|
|
||||||
log "NODE: G1wallet: cat ./wallets/.$IPFSNODEID/NODE.pub"
|
|
||||||
log "#############################################"
|
log "#############################################"
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
|
@ -73,7 +73,7 @@ then
|
||||||
NODEPHONE=$(cat "./wallets_swarm/$PHONE/MASTERPHONE.sms")
|
NODEPHONE=$(cat "./wallets_swarm/$PHONE/MASTERPHONE.sms")
|
||||||
if [[ "$NODEPHONE" != "$MASTERPHONE" && "$NODEPHONE" != "" ]]; then
|
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)"
|
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)"
|
log "${c_red}ALERT!! $PHONE compte existant sur le NODE G1sms+ ($NODEPHONE)$c_"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
@ -203,7 +203,7 @@ case "$CMD" in
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
#./shell/sms_ERROR.sh "$PHONE" "$TEXT" &
|
#./shell/sms_ERROR.sh "$PHONE" "$TEXT" &
|
||||||
log "SMS forward to $ADMINPHONE"
|
log "${$c_yellow}SMS forward to $ADMINPHONE$c_"
|
||||||
sms_SEND "$ADMINPHONE" "ADMIN! BAD SMS FROM $PHONE
|
sms_SEND "$ADMINPHONE" "ADMIN! BAD SMS FROM $PHONE
|
||||||
$TEXT"
|
$TEXT"
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
toto
|