#!/bin/bash ################################################################## # Author: Fred (support@qo-op.com) # Version: 0.2 # License: GPL (http://www.google.com/search?q=GPL) ################################################################## # CHECK & WARN | CREATE Keys (gpg encrypt, G1wallet, IPNS publish) ################################################################## MY_PATH="`dirname \"$0\"`" # relative 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/../.install/.GPATH ]]; then source $MY_PATH/../.install/.GPATH; fi YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1) IPFSNODEID=$(su $YOU -c "ipfs id -f='\n'") NANODATE=$(date -u +%s%N) #1569692075385428020 ################################################################## # G1sms+ Node KEYS (G1wallet, gpg, IPNS) ################################################################## 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 # 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 Service - G1Wallet # # CLEF G1 DU SWARM SWARM_G1PUBKEY=$(cat "${GPATH}/g1sms.pub.key") SWARM_G1AUTHFILE="${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 elif [[ ! -f ./g1sms.preoni.priv.key ]]; then # CREATE NODE G1 KEYS AND FILES mkdir -p ./wallets/.$IPFSNODEID/TASK ################################################ # GIVE NAME TO NODE G1 WALLET: "0000diceware" # CREATE "preoni" KeyS & ./wallets/.Qm***/_files ################################################ # 4 derniers chiffres du MASTERPHONE + diceware PRE=${MASTERPHONE:8:4} ZUID=$(./shell/diceware.sh 1 | xargs) # Check if already existing among all swarm wallets while [[ $(grep -Rwl "$PRE$ZUID" ./wallets_swarm/.*/_uidna) ]]; do ZUID=$(./shell/diceware.sh 1 | xargs); done NODE_UIDNA="$PRE$ZUID" 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): GIVES SMARM WITHDRAW ACTION ./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 : GIVES SMARM NODE RESTORE ACTION ./shell/natools.py encrypt -p $SWARM_G1PUBKEY -i "/home/$YOU/.ipfs/config" -o "./wallets/.$IPFSNODEID/_ipfsconfig.swarm.crypt" log "__SUB:initkeys.sh: [ADMIN] BACKUP IPFS NODE CONFIG to ./wallets/.$IPFSNODEID/_ipfsconfig.swarm.crypt" # 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="$SWARM_G1AUTHFILE" --amount=3.24 --output=$NODE_G1PUBKEY --comment="[G1sms+] G1NODE ($ADMINPSEUDO) $NODE_UIDNA $IPFSNODEID" -y) TX_OUT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$NODE_UIDNA" -password="$NODE_PIN" --amount=0.1 --output=$SWARM_G1PUBKEY --comment="[G1sms+] G1NODE ($ADMINPSEUDO) $NODE_UIDNA $IPFSNODEID:ACK" -y) log "__SUB:initkeys.sh: [ADMIN] NODE G1sms+ $NODE_UIDNA : ls ./wallets/.$IPFSNODEID" gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "[ADMIN] G1sms+ NODE $NODE_UIDNA ($IPFSNODEID)" 1>&2 gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "$NODE_G1PUBKEY" 1>&2 # CREATE preoni FILES mv ./authfile ./g1sms.preoni.priv.key echo $NODE_G1PUBKEY > ./g1sms.preoni.pub.key fi NODE_UIDNA=$(cat "./wallets/.$IPFSNODEID/_uidna") ## INIT NODE G1 PUB & PRIV KEY NODE_G1PUBKEY=$(cat "${GPATH}/g1sms.preoni.pub.key") NODE_G1AUTHFILE="${GPATH}/g1sms.preoni.priv.key" ########################################################## # MEMORIZE NODE NANODATE EXECUTION TIME (for ntpdate regular sync) if [[ -f ./wallets/.$IPFSNODEID/_nanodate ]]; then last=$(cat ./wallets/.$IPFSNODEID/_nanodate) timediff=$( echo "${NANODATE} - ${last}" | bc -l ) # NODE TIME SYNC 600 milliards de nanosecondes = 600 s = 10 mn if [[ $timediff -gt 600000000000 ]]; then # RUN & LOG ntpdate log "__SUB:ntpdate pool.ntp.org: $timediff $(ntpdate pool.ntp.org)" export NANODATE=$(date -u +%s%N) fi echo $NANODATE > ./wallets/.$IPFSNODEID/_nanodate fi ################################################################ #INFORM ABOUT NODE CAPACITIES export NODEPUB=$(cat "./wallets/.$IPFSNODEID/_pub") ## IS IT A SMS NODE (gammu-smsd is installed)?? if [[ $G1SMS ]]; then echo $MASTERPHONE > "./wallets/.$IPFSNODEID/_sms" else if [ -f "./wallets/.$IPFSNODEID/_sms" ]; then rm -f "./wallets/.$IPFSNODEID/_sms"; fi fi ## IS THERE USB PRINTER CONNECTED? if [[ -e "/dev/usb/lp0" ]]; then log "G1CORE: IMPRESSION G1Tag ACTIF .............." echo $ADRESSE > "./wallets/.$IPFSNODEID/_where" fi ## IS THERE SERIAL QR CODE READER CONNECTED? if [[ -e "/dev/ttyACM0" ]]; then log "G1CORE: SCAN G1Tag ACTIF .............." export G1TX="YES" echo "/dev/ttyACM0" > "./wallets/.$IPFSNODEID/_scan" else if [ -f "./wallets/.$IPFSNODEID/_scan" ]; then rm -f "./wallets/.$IPFSNODEID/_scan"; fi fi