This commit is contained in:
fred 2023-12-18 15:32:45 +01:00
parent 7888472307
commit d4ddfd15d3
5 changed files with 75 additions and 192 deletions

View File

@ -24,7 +24,7 @@ LOWMODE=$(sudo systemctl status ipfs | grep disabled) ## IPFS DISABLED - START O
# echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl')
sudo systemctl restart ipfs && sleep 10
espeak "CODE git pull" > /dev/null 2>&1
# espeak "CODE git pull" > /dev/null 2>&1
## PROCESS TW BACKOFFICE TREATMENT
[[ -s ~/.zen/G1BILLET/G1BILLETS.sh ]] \
@ -36,7 +36,7 @@ git pull
## SOON /ipns/ Address !!!
espeak "20 HOURS 12 MINUTES. ASTROBOT RUNNING." > /dev/null 2>&1
# espeak "20 HOURS 12 MINUTES. ASTROBOT RUNNING." > /dev/null 2>&1
## Updating yt-dlp
$MY_PATH/youtube-dl.sh
sudo youtube-dl -U
@ -44,14 +44,14 @@ sudo youtube-dl -U
# Refresh ~/.zen/game/world/G1VOEU
# NOW RUN FROM PLAYER.refresh.sh !! ~/.zen/Astroport.ONE/RUNTIME/VOEUX.refresh.sh
espeak "Players refresh" > /dev/null 2>&1
# espeak "Players refresh" > /dev/null 2>&1
# Refresh ~/.zen/game/players/PLAYER
~/.zen/Astroport.ONE/RUNTIME/PLAYER.refresh.sh
espeak "REFRESHING UPLANET" > /dev/null 2>&1
# espeak "REFRESHING UPLANET" > /dev/null 2>&1
~/.zen/Astroport.ONE/RUNTIME/UPLANET.refresh.sh
espeak "REFRESHING NODE" > /dev/null 2>&1
# espeak "REFRESHING NODE" > /dev/null 2>&1
~/.zen/Astroport.ONE/RUNTIME/NODE.refresh.sh
@ -71,7 +71,11 @@ espeak "REFRESHING NODE" > /dev/null 2>&1
########################################################################
end=`date +%s`
dur=`expr $end - $start`
echo "20H12 (♥‿‿♥) Execution time was $dur" seconds.
hours=$((dur / 3600))
minutes=$(( (dur % 3600) / 60 ))
seconds=$((dur % 60))
echo "DURATION ${hours} hours ${minutes} minutes ${seconds} seconds"
echo "20H12 (♥‿‿♥) Execution time was $dur seconds."
# ~/.zen/Astroport.ONE/tools/ipfs_P2P_forward.sh ## COULD FORWARD LOCAL TCP PORT TO SWARM
rm ~/.zen/game/players/localhost/latest
@ -79,9 +83,9 @@ rm ~/.zen/game/players/localhost/latest
## MAIL LOG : support@qo-op.com ##
$MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log"
espeak "duration was $dur seconds" > /dev/null 2>&1
espeak "DURATION ${hours} hours ${minutes} minutes ${seconds} seconds" > /dev/null 2>&1
espeak "Restarting Astroport Services" > /dev/null 2>&1
# espeak "Restarting Astroport Services" > /dev/null 2>&1
## CLOSING API PORT
[[ -s ~/.zen/.pid ]] && kill -9 $(cat ~/.zen/.pid) > /dev/null 2>&1
## KILL ALL REMAINING nc
@ -95,7 +99,6 @@ if [[ ! -f /etc/systemd/system/astroport.service ]]; then
else
sudo systemctl restart astroport
[[ -s ~/.zen/G1BILLET/G1BILLETS.sh ]] && sudo systemctl restart g1billet
sudo systemctl restart ipfs
echo "Astroport processes systemd restart"
fi
@ -103,9 +106,9 @@ fi
echo "IPFS LOW MODE ?"
## IPFS DISABLED : STOP IT
[[ $LOWMODE != "" ]] \
&& echo "$LOWMODE" \
&& echo "ON. $LOWMODE" \
&& sleep 360 \
&& sudo systemctl stop ipfs \
|| sudo systemctl restart ipfs
|| { echo "OFF. RESTART IPFS" && sudo systemctl restart ipfs; }
exit 0

View File

@ -7,6 +7,7 @@ ARG DOCKER_SYSTEM=Linux
RUN apt-get update \
&& apt-get -fy upgrade \
&& DEBIAN_FRONTEND=noninteractive apt-get -fy install \
argon2 \
basez \
bash \
bc \

View File

@ -44,7 +44,7 @@ echo "#############################################"
echo "######### INSTALL BASE & PYTHON3 PACKAGE ####"
echo "#############################################"
for i in git make cmake fail2ban npm netcat-traditional ncdu chromium* miller inotify-tools curl net-tools libsodium* libcurl4-openssl-dev python3-pip python3-setuptools python3-wheel python3-dotenv python3-gpg python3-jwcrypto python3-brotli mpack; do
for i in git make cmake fail2ban npm argon2 netcat-traditional ncdu chromium* miller inotify-tools curl net-tools libsodium* libcurl4-openssl-dev python3-pip python3-setuptools python3-wheel python3-dotenv python3-gpg python3-jwcrypto python3-brotli mpack; do
if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo ">>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
sudo apt install -y $i

View File

@ -1,154 +0,0 @@
#!/bin/bash
########################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.3
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
# COPY ~/Astroport/${PLAYER}/mp3/artist/song files to IPFS
######## #### ### ## #
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
. "$MY_PATH/my.sh"
ME="${0##*/}"
YOU=$(myIpfsApi)
G1PUB=$(cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
# GET XZUID
[[ -f ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title ]] && XZUID=$(cat ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title) || XZUID=$(hostname -f)
########################################################################
path="$1"
# Add trailing / if needed
length=${#path}
last_char=${path:length-1:1}
[[ $last_char != "/" ]] && path="$path/"; :
file="$2"
echo "$0 PATH/ \"$path\" FILE \"$file\""
[[ ! -f "${path}${file}" ]] && echo "Fichier introuvable ... EXIT" && exit 1
echo '#### NEED REWRITING #####' && exit 0
read
YTEMP="/tmp/$(date -u +%s%N | cut -b1-13)"
mkdir -p ${YTEMP}
YID=$(echo "${file}" | cut -d "_" -f 1)
YNAME=$(echo "${file}" | cut -d "_" -f 2-)
TITLE="${YNAME%.*}"
FILE_EXT="${file##*.}"
[[ "$FILE_EXT" != "mp3" ]] && echo "Extension inconnue. Seul le format mp3 est accepté ... EXIT" && exit 1
[[ ! $(echo "$path" | cut -d '/' -f 4 | grep 'astroport') ]] && echo "Les fichiers sont à placer dans ~/Astroport/${PLAYER}/mp3/ MERCI" && exit 1
CAT=$(echo "$path" | cut -d '/' -f 5 ) # mp3
ARTIST=$(echo "$path" | cut -d '/' -f 6 ) # artist || YID
ALBUM=$(echo "$path" | cut -d '/' -f 7 ) # album || _o-o_ || EMPTY
[[ "$ALBUM" == "" ]] && echo "ARTIST = YID = $ARTIST"
CAT=$(echo "$CAT" | awk '{ print tolower($0) }')
########################################################################
########################################################################
# MOVE SECTION in new_mp3_in_astroport.sh
DURATION=$(mp3info -p "%S" "${path}${file}")
float=$(echo "$DURATION/1.618" | bc -l) && GOLDENTIME=${float%.*}
## EXTRACT 5 seconds from GOLDENTIME
ffmpeg -loglevel quiet -ss $GOLDENTIME -t 5 -i "${path}${file}" /tmp/5s_${YID}.mp3
## TRY TO RECOGNIZE WITH mazash
## CHECK if 8600 port is active
## ipfs p2p forward /x/oasis-mazash /ip4/127.0.0.1/tcp/8600 /p2p/12D3KooWBYme2BsNUrtx4mEdNX6Yioa9AV7opWzQp6nrPs6ZKabN
SAMPLEID=$(ipfs add -q /tmp/5s_${YID}.mp3)
RECOG=$(curl -sX POST "http://localhost:8600/api/v1/mazash/recognize" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"cid\":\"${SAMPLEID}\",\"extension\":\".mp3\"}")
CONFIANCE=$(echo $RECOG | jq .results[].input_confidence | tail -n 1)
MAZASHID=$(echo $RECOG | jq .results[].file_sha1 | tail -n 1)
IPNSID=$(echo $RECOG | jq .results[].song_name | tail -n 1)
echo "$CONFIANCE MATCHING $MAZASHID ($IPNSID)"
## NEEDED TO CREATE IPNS KEY
INDEXPREFIX="MP3_"
REFERENCE="${YID}"
########################################################################
########################################################################
########################################################################
echo "-----------------------------------------------------------------"
IPFSREPFILEID=$(ipfs add -wq "${path}${file}" | tail -n 1)
[[ $IPFSREPFILEID == "" ]] && echo "ipfs add ERROR" && exit 1
echo "-----------------------------------------------------------------"
echo "IPFS: $file : ipfs ls /ipfs/$IPFSREPFILEID"
echo "-----------------------------------------------------------------"
URLENCODE_FILE_NAME=$(echo ${file} | jq -Rr @uri)
########################################################################
## CREATE NEW ipns KEY : ${INDEXPREFIX}${REFERENCE}
########################################################################
########################################################################
[[ ! -d ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB} ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB} && KEY=$(ipfs key gen "${INDEXPREFIX}${REFERENCE}") && KEYFILE=$(ls -t ~/.ipfs/keystore/ | head -n 1)
## INIT ipns
if [[ $KEY ]]; then
# memorize IPNS key filename for easiest exchange
echo "$KEYFILE" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.key.keystore_filename
# Publishing IPNS key
echo "$KEY" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link
# .zen could contain ZEN for economic value
touch ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.zen
################ ENCRYPT keystore/$KEYFILE
$MY_PATH/tools/natools.py encrypt -p $G1PUB -i ~/.ipfs/keystore/$KEYFILE -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.key.natools.encrypt
else
KEY=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link)
KEYFILE=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.key.keystore_filename)
fi
# CLEAR ipfs link (then encrypted to manage exchange regulation)
echo "/ipfs/$IPFSREPFILEID/${file}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink
################ ENCRYPT .ipfs.filelink
$MY_PATH/tools/natools.py encrypt -p $G1PUB -i ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink.natools.encrypt
rm ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink
echo "${file}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filename
echo "${TITLE}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.title
echo "$(date -u +%s%N | cut -b1-13)" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.timestamp
# IPNS index.html Redirect to ipfs streaming link (could be contract or anything else !!)
echo "<meta http-equiv=\"Refresh\" content=\"0;URL=http://127.0.0.1:8080/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME\">" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/index.html
IPNSLINK=$(ipfs key list -l | grep ${INDEXPREFIX}${REFERENCE} | cut -d ' ' -f 1)
echo "<meta http-equiv=\"Refresh\" content=\"10;URL=https://aries.copylaradio.com/ipns/$IPNSLINK/${G1PUB}/\">
<h1><a href='https://astroport.com'>ASTROPORT</a>/MP3</h1>
Pour écouter ${TITLE}, connectons nos stations et devenons amis...<br><br>
Installez <a href='https://copylaradio.com'>astrXbian</a>" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/index.html
NEWIPFS=$(ipfs add -rHq ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/ | tail -n 1 )
IPNS=$(ipfs name publish --quieter --key="${INDEXPREFIX}${REFERENCE}" $NEWIPFS)
########################################################################
## CHECK CONFIANCE and decide to fingerprint
if (( $(echo "$CONFIANCE < 0.9" | bc -l) )); then
# fingerprint track & USE IPNS KEY for "song_name"
NEWCOG=$(curl -X POST "http://localhost:8600/api/v1/mazash/fingerprint" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"cid\":\"${IPFSREPFILEID}\",\"extension\":\".mp3\",\"song\":\"${IPNS}\"}")
echo "$NEWCOG" | jq
fi
# MEMORIZE NEW PIN
mkdir -p ~/.zen/PIN/${IPFSREPFILEID}/${IPNS}/
touch "~/.zen/PIN/${IPFSREPFILEID}/${IPNS}/${TITLE}"
echo "${file}" > ~/.zen/PIN/${IPFSREPFILEID}/${IPNS}/.ipfs.filename
echo "${TITLE}" > ~/.zen/PIN/${IPFSREPFILEID}/${IPNS}/.title
########################################################################
# REFRESH IPNS SELF PUBLISH
########################################################################
~/.zen/astrXbian/zen/ipns_self_publish.sh
########################################################################
rm -Rf ${YTEMP}
echo "NEW ($file) ADDED."
echo "IPNS LINK : http://127.0.0.1:8080/ipns/$KEY/$G1PUB/"
exit 0

View File

@ -23,23 +23,31 @@ mail="$1" # EMAIL DESTINATAIRE
messfile="$2" # FICHIER A AJOUTER AU CORPS MESSAGE
SUBJECT="[(♥‿‿♥)] Station Astroport : $(myHostName)"
MESSAGE="( ◕‿◕)\n\n Bonjour $PLAYER\n\n UN MESSAGE POUR VOUS.\n\nAstroport\n/ipns/$IPFSNODEID"
SUBJECT="[UPlanet] Astroport : $(myHostName)"
MESSAGE="Bonjour $PLAYER
UN MESSAGE POUR VOUS.
Astroport
/ipns/$IPFSNODEID
"
echo "
########################################################################
# $SUBJECT + $messfile -> $mail
########################################################################"
### SMTP RELAY
#~ echo "From: support@g1sms.fr
#~ To: EMAIL
#~ Bcc: support@qo-op.com
#~ Subject: SUBJECT
#~ MESSAGE
#~ $MESSAGE
#~ " > ~/.zen/tmp/email.txt
#~ [[ -s $messfile ]] && cat $messfile >> ~/.zen/tmp/email.txt \
#~ || echo "$messfile" >> ~/.zen/tmp/email.txt
#~ cat ~/.zen/tmp/email.txt | sed "s~EMAIL~${mail}~g" | sed "s~SUBJECT~${SUBJECT}~g" | sed "s~MESSAGE~${MESSAGE}~g" | /usr/sbin/ssmtp ${mail}
#~ cat ~/.zen/tmp/email.txt | sed "s~EMAIL~${mail}~g" | sed "s~SUBJECT~${SUBJECT}~g" | /usr/sbin/ssmtp ${mail}
############# USING MAILJET API ###############
@ -52,31 +60,56 @@ echo "$MESSAGE" > ~/.zen/tmp/email.txt
[[ -s $messfile ]] && cat $messfile >> ~/.zen/tmp/email.txt \
|| echo "$messfile" >> ~/.zen/tmp/email.txt
EMAILZ=$(ipfs add -q ~/.zen/tmp/email.txt)
echo "/ipfs/${EMAILZ}"
TEXTPART=$(cat ~/.zen/tmp/email.txt | sed ':a;N;$!ba;s/\n/\\n/g' | tr '"' '\\\"')
HTMLPART=$(cat ~/.zen/tmp/email.txt | sed ':a;N;$!ba;s/\n/<br>/g' | tr '"' '\\\"')
export TEXTPART="${myIPFS}/ipfs/${EMAILZ}"
json_payload='{
"Messages": [
{
"From": {
"Email": "'${SENDER_EMAIL}'",
"Name": "UPlanet"
},
"To": [
{
"Email": "'${RECIPIENT_EMAIL}'",
"Name": "Astronaut"
}
],
"Subject": "'${SUBJECT}'",
"TextPart": "'${myIPFS}/ipfs/${EMAILZ}'",
"HTMLPart": "<h3>You have a message <br><a href=\"'${myIPFS}'/ipfs/'${EMAILZ}'\">READ ME</a>!</h3><br />May the good vibes be with you!<br>Astroport Station "
}
]
}'
# Verify the JSON structure with jq
echo "$json_payload" | jq .
# Run:
# POSSIBLE ! "HTMLPart": "<h3>Dear member, you have a message for you on <a href=\"https://qo-op.com/\">UPlanet</a>!</h3><br />May the good vibes be with you!"
# POSSIBLE ! "HTMLPart": "<h3>You have a message <br><a href=\"https://qo-op.com/\">UPlanet</a>!</h3><br />May the good vibes be with you!"
curl -s \
-X POST \
--user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE" \
--user "${MJ_APIKEY_PUBLIC}:${MJ_APIKEY_PRIVATE}" \
https://api.mailjet.com/v3.1/send \
-H 'Content-Type: application/json' \
-d '{
"Messages":[
{
"From": {
"Email": "'$SENDER_EMAIL'",
"Name": "UPlanet support"
},
"To": [
{
"Email": "'$RECIPIENT_EMAIL'",
"Name": "Astronaut TW"
}
],
"Subject": "'$SUBJECT'",
"TextPart": "'$(cat ~/.zen/tmp/email.txt)'"
}
]
}'
-d "$json_payload"
# This call sends an email to one recipient.
#~ curl -s \
#~ -X POST \
#~ --user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE" \
#~ https://api.mailjet.com/v3/send \
#~ -H 'Content-Type: application/json' \
#~ -d '{
#~ "FromEmail":"'${SENDER_EMAIL}'",
#~ "FromName":"UPlanet Support Team",
#~ "Subject":"Message from Astroport",
#~ "Text-part":"'${TEXTPART}'",
#~ "Html-part":"'${HTMLPART}'",
#~ "Recipients":[{"Email":"'${RECIPIENT_EMAIL}'"}]
#~ }'