From f4742bdc7163e96cbb2b4459fe8daf41798690ca Mon Sep 17 00:00:00 2001 From: qo-op Date: Sat, 12 Dec 2020 01:43:01 +0100 Subject: [PATCH] Astroport layer for Xbian --- .../.config/autostart/Astroport_X_config.desktop | 2 +- .install/ipfs_alone.sh | 4 +- .install/loveland.sh | 20 +- .install/mpd_rompr.sh | 8 +- .install/nextcloud/install.sh | 4 +- .install/update_bashrc.sh | 2 +- 1stRUNconfig.sh | 12 +- ISOconfig.sh | 28 +- cron_MINUTE.sh | 2 +- install.sh | 2 +- zen/README.md | 6 +- zen/cesium_INIT.sh | 2 +- zen/gchange_INIT.sh | 2 +- zen/gchange_IPFS_swarm.sh | 6 +- zen/pkg/make_G1SSB_secret.tar.gz | Bin 39879 -> 0 bytes zen/ssb_INIT.sh | 2 +- zen/ssb_IPFS_swarm.sh | 2 +- zen/tools/dunikey2secret.sh | 42 --- zen/tools/init_IPFS_with_cesium_loginKEY.sh | 44 +-- zen/tools/make_G1SSB_secret.sh | 400 --------------------- zen/tools/sbotc_check_invite.sh | 26 -- zen/tools/sbotc_send_private.sh | 14 - zen/tools/secret2dunikey.sh | 27 -- zen/tools/switch_ssb_identity.sh | 41 --- zen/xbian_vstream.sh | 2 +- 25 files changed, 75 insertions(+), 625 deletions(-) delete mode 100644 zen/pkg/make_G1SSB_secret.tar.gz delete mode 100755 zen/tools/dunikey2secret.sh delete mode 100755 zen/tools/make_G1SSB_secret.sh delete mode 100755 zen/tools/sbotc_check_invite.sh delete mode 100755 zen/tools/sbotc_send_private.sh delete mode 100755 zen/tools/secret2dunikey.sh delete mode 100755 zen/tools/switch_ssb_identity.sh diff --git a/.install/.config/autostart/Astroport_X_config.desktop b/.install/.config/autostart/Astroport_X_config.desktop index 6c86468..fe2ed37 100644 --- a/.install/.config/autostart/Astroport_X_config.desktop +++ b/.install/.config/autostart/Astroport_X_config.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Type=Application -Exec=~/.zen/astroport/1stRUNconfig.sh +Exec=~/.zen/astrXbian/1stRUNconfig.sh X-GNOME-Autostart-enabled=true NoDisplay=false Hidden=false diff --git a/.install/ipfs_alone.sh b/.install/ipfs_alone.sh index 3b6eef9..dee4473 100755 --- a/.install/ipfs_alone.sh +++ b/.install/ipfs_alone.sh @@ -83,8 +83,8 @@ sudo systemctl daemon-reload || err "Restart IPFS" sudo systemctl enable ipfs || err "Enable IPFS daemon" ## Special Xbian init.d config -if [[ $USER == "xbian" && -f ~/.zen/astroport/.install/templates/ipfs/ipfs-initV.sh ]]; then - sudo cp ~/.zen/astroport/.install/templates/ipfs/ipfs-initV.sh /etc/init.d/ipfs +if [[ $USER == "xbian" && -f ~/.zen/astrXbian/.install/templates/ipfs/ipfs-initV.sh ]]; then + sudo cp ~/.zen/astrXbian/.install/templates/ipfs/ipfs-initV.sh /etc/init.d/ipfs sudo chmod 755 /etc/init.d/ipfs sudo touch /var/log/ipfs.log && chown xbian /var/log/ipfs.log sudo service ipfs enable diff --git a/.install/loveland.sh b/.install/loveland.sh index 8ea3d87..19df204 100755 --- a/.install/loveland.sh +++ b/.install/loveland.sh @@ -67,7 +67,7 @@ if [[ ! $(which mpd) ]]; then sudo apt-get install ca-certificates git-core binutils rsync alsa-utils bc espeak mpg321 fuse atomicparsley -y || err=1 ## CONFIG MPD - sudo cp -f /home/$YOU/.zen/astroport/.install/templates/copylaradio/mpd.conf /etc/mpd.conf + sudo cp -f /home/$YOU/.zen/astrXbian/.install/templates/copylaradio/mpd.conf /etc/mpd.conf sudo sed -i "s/_USER_/$YOU/g" /etc/mpd.conf || err=1 mkdir ~/.config/mpd && sudo cp -f /etc/mpd.conf ~/.config/mpd/mpd.conf && sudo chown $YOU ~/.config/mpd/mpd.conf @@ -105,7 +105,7 @@ myIP=$(hostname -I | awk '{print $1}' | head -n 1) isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/") # Ask to the router its name (BOX DNS or system defined) -[[ -f /home/$YOU/.zen/astroport/zen/tools/nodename ]] && NODENAME=$(/home/$YOU/.zen/astroport/zen/tools/nodename) \ +[[ -f /home/$YOU/.zen/astrXbian/zen/tools/nodename ]] && NODENAME=$(/home/$YOU/.zen/astrXbian/zen/tools/nodename) \ || NODENAME=$(curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/zen/tools/nodename | bash) ## RUNNING ALONE !! echo $NODENAME @@ -151,7 +151,7 @@ Portal ### echo "INSTALL LOVELand WebSite. Linking to /var/www ..." if [[ ! -L /var/www/loveland ]]; then - sudo ln -s /home/$YOU/.zen/astroport/www/LOVELand /var/www/loveland + sudo ln -s /home/$YOU/.zen/astrXbian/www/LOVELand /var/www/loveland fi echo "JUKEBOX init" @@ -167,7 +167,7 @@ echo "$NODENAME" > /home/$YOU/.zen/ipfs/.$IPFSNODEID/G1SSB/_nodename PHPVERSION=$(ps auxf | grep php-fpm | grep -v -E 'color=auto|grep' | head -n 1 | grep -oP '(?<=\().*(?=\))' | awk -F '/' '{print $4}') ### ASTROPORT STATION LOVELAND PORTAL -sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/loveland.conf +sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astrXbian/www/loveland.conf > /tmp/loveland.conf sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/loveland.conf sudo sed -i "s/_PORT_/10010/g" /tmp/loveland.conf sudo sed -i "s/_APPLI_//g" /tmp/loveland.conf @@ -175,14 +175,14 @@ sudo cp -f /tmp/loveland.conf /etc/nginx/conf.d/loveland.conf ### GCHANGE G1 Zen sudo rm -f /etc/nginx/conf.d/gchange.conf -sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/gchange.conf +sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astrXbian/www/loveland.conf > /tmp/gchange.conf sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/gchange.conf sudo sed -i "s/_PORT_/10020/g" /tmp/gchange.conf sudo sed -i "s/_APPLI_/gchange/g" /tmp/gchange.conf sudo cp -f /tmp/gchange.conf /etc/nginx/conf.d/gchange.conf ### CESIUM G1 Zen -sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/cesium.conf +sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astrXbian/www/loveland.conf > /tmp/cesium.conf sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/cesium.conf sudo sed -i "s/_PORT_/10030/g" /tmp/cesium.conf sudo sed -i "s/_APPLI_/cesium/g" /tmp/cesium.conf @@ -190,7 +190,7 @@ sudo cp -f /tmp/cesium.conf /etc/nginx/conf.d/cesium.conf ### JUKEBOX RompR CopyLaRadio if [[ $(which mpd) ]]; then - sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/jukebox.conf + sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astrXbian/www/loveland.conf > /tmp/jukebox.conf sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/jukebox.conf sudo sed -i "s/_PORT_/10011/g" /tmp/jukebox.conf sudo sed -i "s/_APPLI_/jukebox/g" /tmp/jukebox.conf @@ -199,7 +199,7 @@ fi ### SSB OASIS Zen (PROXY MODE 10040 -> 3000) if [[ $(which oasis) ]]; then - sudo sed "s/_MY_NODE_NAME_/$NODENAME/g" /home/$YOU/.zen/astroport/www/oasis.conf > /tmp/oasis.conf + sudo sed "s/_MY_NODE_NAME_/$NODENAME/g" /home/$YOU/.zen/astrXbian/www/oasis.conf > /tmp/oasis.conf sudo sed -i "s/_PORT_/10040/g" /tmp/oasis.conf sudo sed -i "s/_LHOST_/$NODENAME:3000/g" /tmp/oasis.conf sudo sed -i "s/_APPLI_//g" /tmp/oasis.conf @@ -212,14 +212,14 @@ fi ### G1SMS propagation to localhost:10099 / 10097 ("ipfs p2p" forwarded) if [[ $(which gammu) ]]; then # DIRECT MODE - sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/g1sms.conf + sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astrXbian/www/loveland.conf > /tmp/g1sms.conf sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/g1sms.conf sudo sed -i "s/_PORT_/10099/g" /tmp/g1sms.conf sudo sed -i "s/_APPLI_/g1sms/g" /tmp/g1sms.conf sudo cp -f /tmp/g1sms.conf /etc/nginx/conf.d/g1sms.conf else # PROXY MODE (10099 -> 10097) ### ipfs p2p PROPAGATION WITH 'zen/ipfs_OPEN_ports.sh' - sudo sed "s/_MY_NODE_NAME_/$NODENAME/g" /home/$YOU/.zen/astroport/www/oasis.conf > /tmp/g1sms_proxy.conf + sudo sed "s/_MY_NODE_NAME_/$NODENAME/g" /home/$YOU/.zen/astrXbian/www/oasis.conf > /tmp/g1sms_proxy.conf sudo sed -i "s/_PORT_/10099/g" /tmp/g1sms_proxy.conf sudo sed -i "s/_LHOST_/127\.0\.0\.1\:10097/g" /tmp/g1sms_proxy.conf sudo sed -i "s/_APPLI_/g1sms/g" /tmp/g1sms_proxy.conf diff --git a/.install/mpd_rompr.sh b/.install/mpd_rompr.sh index 4ee6f6a..8f3875e 100755 --- a/.install/mpd_rompr.sh +++ b/.install/mpd_rompr.sh @@ -73,7 +73,7 @@ if [[ ! $(which mpd) ]]; then sudo apt-get install ca-certificates git-core binutils rsync alsa-utils bc espeak mpg321 fuse atomicparsley -y || err=1 ## CONFIG MPD - sudo cp -f /home/$YOU/.zen/astroport/.install/templates/copylaradio/mpd.conf /etc/mpd.conf + sudo cp -f /home/$YOU/.zen/astrXbian/.install/templates/copylaradio/mpd.conf /etc/mpd.conf sudo sed -i "s/_USER_/$YOU/g" /etc/mpd.conf || err=1 mkdir ~/.config/mpd && sudo cp -f /etc/mpd.conf ~/.config/mpd/mpd.conf && sudo chown $YOU ~/.config/mpd/mpd.conf @@ -111,7 +111,7 @@ myIP=$(hostname -I | awk '{print $1}' | head -n 1) isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/") # Ask to the router its name (BOX DNS or system defined) -[[ -f /home/$YOU/.zen/astroport/zen/tools/nodename ]] && NODENAME=$(/home/$YOU/.zen/astroport/zen/tools/nodename) \ +[[ -f /home/$YOU/.zen/astrXbian/zen/tools/nodename ]] && NODENAME=$(/home/$YOU/.zen/astrXbian/zen/tools/nodename) \ || NODENAME=$(curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/zen/tools/nodename | bash) ## RUNNING ALONE !! echo $NODENAME @@ -130,7 +130,7 @@ Portal ### echo "INSTALL LOVELand WebSite. Linking to /var/www ..." if [[ ! -L /var/www/loveland ]]; then - sudo ln -s /home/$YOU/.zen/astroport/www/LOVELand /var/www/loveland + sudo ln -s /home/$YOU/.zen/astrXbian/www/LOVELand /var/www/loveland fi echo "JUKEBOX init" @@ -148,7 +148,7 @@ PHPVERSION=$(ps auxf | grep php-fpm | grep -v -E 'color=auto|grep' | head -n 1 | ### JUKEBOX RompR CopyLaRadio if [[ $(which mpd) ]]; then - sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/jukebox.conf + sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astrXbian/www/loveland.conf > /tmp/jukebox.conf sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/jukebox.conf sudo sed -i "s/_PORT_/80/g" /tmp/jukebox.conf sudo sed -i "s/_APPLI_/jukebox/g" /tmp/jukebox.conf diff --git a/.install/nextcloud/install.sh b/.install/nextcloud/install.sh index ee5ade7..ab2da4b 100755 --- a/.install/nextcloud/install.sh +++ b/.install/nextcloud/install.sh @@ -28,8 +28,8 @@ fi ## Atroport config echo -e "${c_yellow}Getting local hostname...$c_" -nc_domain=$(/home/$YOU/.zen/astroport/zen/tools/nodename) -templates="/home/$YOU/.zen/astroport/.install/nextcloud/templates" +nc_domain=$(/home/$YOU/.zen/astrXbian/zen/tools/nodename) +templates="/home/$YOU/.zen/astrXbian/.install/nextcloud/templates" ## Set var [[ -z $nc_domain ]] && nc_domain=$1 diff --git a/.install/update_bashrc.sh b/.install/update_bashrc.sh index b8c8c6b..ca322b2 100755 --- a/.install/update_bashrc.sh +++ b/.install/update_bashrc.sh @@ -24,7 +24,7 @@ echo "YOU=$YOU" >> ~/.bashrc echo "G1PUB=$G1PUB" >> ~/.bashrc echo "IPFSNODEID=$IPFSNODEID" >> ~/.bashrc ## Add jaklis/.env ? -# cat ~/.zen/astroport/zen/jaklis/.env >> ~/.bashrc +# cat ~/.zen/astrXbian/zen/jaklis/.env >> ~/.bashrc source ~/.bashrc diff --git a/1stRUNconfig.sh b/1stRUNconfig.sh index 31ccf6a..3b5430f 100755 --- a/1stRUNconfig.sh +++ b/1stRUNconfig.sh @@ -28,9 +28,9 @@ zenity --question --width 300 --text "Initialiser votre station Astroport?" 2> > ######################################################################## # LOGIN (=SALT) -salt="$(~/.zen/astroport/zen/tools/diceware.sh 3 | xargs)" +salt="$(~/.zen/astrXbian/zen/tools/diceware.sh 3 | xargs)" # PASS (=PEPPER) -pepper="$(~/.zen/astroport/zen/tools/diceware.sh 3 | xargs)" +pepper="$(~/.zen/astrXbian/zen/tools/diceware.sh 3 | xargs)" g1_profil=$(zenity --entry --width 300 --text "Nom de votre machine" --title "Astroport -- Profil" --entry-text="$(hostname)" 2> >(grep -v 'GtkDialog' >&2)); g1_salt=$(zenity --entry --width 300 --text "Identifiant gchange/cesium (sel)" --title "Astroport - Sel" --entry-text="$salt" 2> >(grep -v 'GtkDialog' >&2)); @@ -47,7 +47,7 @@ cat /tmp/secret.june >> /tmp/secret.all ######################################################################## echo "CREATING /tmp/secret.dunikey" -python3 ~/.zen/astroport/zen/tools/key_create_dunikey.py "$g1_salt" "$g1_pepper" +python3 ~/.zen/astrXbian/zen/tools/key_create_dunikey.py "$g1_salt" "$g1_pepper" g1pub=$(cat /tmp/secret.dunikey | grep "pub" | cut -d ' ' -f 2) g1sec=$(cat /tmp/secret.dunikey | grep "sec" | cut -d ' ' -f 2) @@ -60,7 +60,7 @@ echo "" >> /tmp/secret.all ######################################################################## echo "CREATING /tmp/config.ipfs" -ipfs_ID=$(python3 ~/.zen/astroport/zen/tools/create_ipfsnodeid_from_tmp_secret.dunikey.py) +ipfs_ID=$(python3 ~/.zen/astrXbian/zen/tools/create_ipfsnodeid_from_tmp_secret.dunikey.py) echo $ipfs_ID > /tmp/secret.ipfs && source /tmp/secret.ipfs jq -r --arg PeerID "$PeerID" '.Identity.PeerID=$PeerID' ~/.ipfs/config > /tmp/config.tmp @@ -103,8 +103,8 @@ rm /tmp/secret.all echo "IPFS_SYNC_DIR=$IPFS_sync_directory" > ~/.zen/ipfs.sync # CREATE gchange+ profile -# cd ~/.zen/astroport/zen/jaklis -# ./jaklis.py --key "~/.zen/secret.dunikey" --node "https://data.gchange.fr" set --name "$g1_profil" --avatar "~/.zen/astroport/logo.png" +# cd ~/.zen/astrXbian/zen/jaklis +# ./jaklis.py --key "~/.zen/secret.dunikey" --node "https://data.gchange.fr" set --name "$g1_profil" --avatar "~/.zen/astrXbian/logo.png" # ERROR echo "OK. Restart now" diff --git a/ISOconfig.sh b/ISOconfig.sh index 4a2d15c..168e974 100755 --- a/ISOconfig.sh +++ b/ISOconfig.sh @@ -20,7 +20,7 @@ if [[ -f ~/.zen/ipfs.sync ]]; then echo "CONFIG ALREADY DONE" source ~/.zen/ipfs.sync # NEW BOOT! SEND ipfstryme message to my friends... - cd ~/.zen/astroport/zen/jaklis + cd ~/.zen/astrXbian/zen/jaklis # GET LIST of issuer(s) who likes me for liking_me in $(./jaklis.py like | jq -r '.likes[].issuer'); do @@ -40,9 +40,9 @@ ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` > /dev/null && echo ok ######################################################################## echo "CREATING Gchange credentials" ######################################################################## -salt="$(~/.zen/astroport/zen/tools/diceware.sh 3 | xargs)" +salt="$(~/.zen/astrXbian/zen/tools/diceware.sh 3 | xargs)" [[ $salt == "" ]] && echo "ERROR" && exit 1 -pepper="$(~/.zen/astroport/zen/tools/diceware.sh 3 | xargs)" +pepper="$(~/.zen/astrXbian/zen/tools/diceware.sh 3 | xargs)" g1_profil=$(hostname) g1_salt="$salt" @@ -56,7 +56,7 @@ echo "$g1_pepper" >> /tmp/secret.june ######################################################################## echo "CREATING /tmp/secret.dunikey" ######################################################################## -python3 ~/.zen/astroport/zen/tools/key_create_dunikey.py "$g1_salt" "$g1_pepper" +python3 ~/.zen/astrXbian/zen/tools/key_create_dunikey.py "$g1_salt" "$g1_pepper" g1pub=$(cat /tmp/secret.dunikey | grep "pub" | cut -d ' ' -f 2) g1sec=$(cat /tmp/secret.dunikey | grep "sec" | cut -d ' ' -f 2) @@ -65,7 +65,7 @@ g1sec=$(cat /tmp/secret.dunikey | grep "sec" | cut -d ' ' -f 2) ######################################################################## echo "CREATING /tmp/config.ipfs" ######################################################################## -ipfs_ID=$(python3 ~/.zen/astroport/zen/tools/create_ipfsnodeid_from_tmp_secret.dunikey.py) +ipfs_ID=$(python3 ~/.zen/astrXbian/zen/tools/create_ipfsnodeid_from_tmp_secret.dunikey.py) echo $ipfs_ID > /tmp/secret.ipfs && source /tmp/secret.ipfs [[ $PrivKEY == "" ]] && echo "ERROR" && exit 1 jq -r --arg PeerID "$PeerID" '.Identity.PeerID=$PeerID' ~/.ipfs/config > /tmp/config.tmp @@ -106,7 +106,7 @@ mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/G1SSB # Give $XZUID to your (gchange friends) to add in Vstream Astroport and access your sharings # IPNS link to "pastebin list" http://localhost:8080/ipns/$IPNSKEY/xbian/$XZUID ######################################################################## -XZUID=$(~/.zen/astroport/zen/tools/diceware.sh 1 | xargs)-$(~/.zen/astroport/zen/tools/diceware.sh 1 | xargs)$(hostname -I | cut -d ' ' -f 1 | cut -d "." -f 4 ) +XZUID=$(~/.zen/astrXbian/zen/tools/diceware.sh 1 | xargs)-$(~/.zen/astrXbian/zen/tools/diceware.sh 1 | xargs)$(hostname -I | cut -d ' ' -f 1 | cut -d "." -f 4 ) echo "CREATE ~/.zen/ipfs/xbian/$XZUID" touch ~/.zen/ipfs/xbian/$XZUID # https://github.com/Kodi-vStream/venom-xbmc-addons/wiki/Voir-et-partager-sa-biblioth%C3%A8que-priv%C3%A9e#d%C3%A9clarer-des-films @@ -116,8 +116,8 @@ echo "$XZUID" > ~/.zen/ipfs/.${IPFSNODEID}/_xbian.zuid ######################################################################## echo "CREATE gchange+ profile" ######################################################################## -cd ~/.zen/astroport/zen/jaklis -./jaklis.py set --name "$XZUID" --avatar "$HOME/.zen/astroport/logo.png" +cd ~/.zen/astrXbian/zen/jaklis +./jaklis.py set --name "$XZUID" --avatar "$HOME/.zen/astrXbian/logo.png" ######################################################################## ######################################################################## @@ -137,10 +137,10 @@ ipfs swarm peers ######################################################################## echo 'EXTEND ~/.bashrc' ######################################################################## -~/.zen/astroport/.install/update_bashrc.sh +~/.zen/astrXbian/.install/update_bashrc.sh echo "Configure .kodi/addons/plugin.video.vstream/resources/sites/astroport.py" -cp -f ~/.zen/astroport/.install/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py \ +cp -f ~/.zen/astrXbian/.install/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py \ ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py # CREATE xbian IPNSKEY used to publish ~/.zen/ipfs_swarm/xbian (contains all XZUID pastebin files) @@ -151,8 +151,8 @@ sed -i s/_PROFIL_/$XZUID/g ~/.kodi/addons/plugin.video.vstream/resources/sites/a sed -i s/_LOGIN_/$salt/g ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py sed -i s/_MDP_/$pepper/g ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py -~/.zen/astroport/zen/gchange_IPFS_swarm.sh -~/.zen/astroport/zen/ipfs_SWARM_refresh.sh +~/.zen/astrXbian/zen/gchange_IPFS_swarm.sh +~/.zen/astrXbian/zen/ipfs_SWARM_refresh.sh # Optionnal PUBLISH actual (later done by cron_MINUTE.sh) IXBIAN=$(ipfs add -qr ~/.zen/ipfs_swarm/xbian | tail -n 1) @@ -174,9 +174,9 @@ echo 'SEND ipfstryme to oasis' # Add your bootstrap Pub here ######################################################################## echo 'INSTALL Astroport cron_MINUTE' ######################################################################## -~/.zen/astroport/zen/tools/cron_VRFY.sh +~/.zen/astrXbian/zen/tools/cron_VRFY.sh -# Run only once: comment /etc/rc.local (su - xbian -c "~/.zen/astroport/ISOconfig.sh") +# Run only once: comment /etc/rc.local (su - xbian -c "~/.zen/astrXbian/ISOconfig.sh") # sudo sed -i s/su/\#su/g /etc/rc.local # BETTER NOT: Send new 'ipfstryme' message on each boot is done instead diff --git a/cron_MINUTE.sh b/cron_MINUTE.sh index ac94ef9..1e7b198 100755 --- a/cron_MINUTE.sh +++ b/cron_MINUTE.sh @@ -148,7 +148,7 @@ echo ' if [[ $dayoftheweek == 0 ]]; then $MY_PATH/zen/gchange_INIT.sh & # ACTIVATE IF CRON LOGGING - #tar cvzf ~/.zen/astroport.$weeknumber.log.tgz /tmp/astroport.log # LOG BACKUP FOR 1 YEAR !! + #tar cvzf ~/.zen/astrXbian.$weeknumber.log.tgz /tmp/astroport.log # LOG BACKUP FOR 1 YEAR !! fi #### DESYNC sleep $((1 + RANDOM % 5)) diff --git a/install.sh b/install.sh index 513b93a..5b5d003 100755 --- a/install.sh +++ b/install.sh @@ -40,7 +40,7 @@ curl -s $gitpath/.install/loveland.sh | bash || exit 1 # Customs install ## Nextcloud -[[ $args =~ nextcloud ]] && cd /home/$USER/.zen/astroport && sudo -E bash .install/nextcloud/install.sh +[[ $args =~ nextcloud ]] && cd /home/$USER/.zen/astrXbian && sudo -E bash .install/nextcloud/install.sh echo -e "${c_green}Installation complete$c_" diff --git a/zen/README.md b/zen/README.md index a8c3aee..1941b11 100644 --- a/zen/README.md +++ b/zen/README.md @@ -3,7 +3,7 @@ ``` ~/.zen # Astroport Metaverse Files - ~/.zen/astroport # CODE + ~/.zen/astrXbian # CODE ~/.zen/secret.astroport.key # MULTI UNIVERSE KEY ~/.zen/cache/g1_TX_inputs/ # G1 Wallet INPUT Tx cache @@ -124,6 +124,6 @@ IPFS SWARM : # natools CRYPT/DECRYPT a FILE ``` g1pub=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) -~/.zen/astroport/zen/tools/natools.py encrypt -p $g1pub -i file -o file.crypt -~/.zen/astroport/zen/tools/natools.py decrypt -f pubsec -k ~/.ssb/secret.dunikey -i file.crypt -o file +~/.zen/astrXbian/zen/tools/natools.py encrypt -p $g1pub -i file -o file.crypt +~/.zen/astrXbian/zen/tools/natools.py decrypt -f pubsec -k ~/.ssb/secret.dunikey -i file.crypt -o file ``` diff --git a/zen/cesium_INIT.sh b/zen/cesium_INIT.sh index 24058aa..4171c0e 100644 --- a/zen/cesium_INIT.sh +++ b/zen/cesium_INIT.sh @@ -102,7 +102,7 @@ NODEIPNS=$(ipfs name publish --allow-offline --quieter /ipfs/$IWALLETS) ### # GET ALL MY CESIUMPLUS FRIENDS AND SEND THEM my IPFS Address -cd ~/.zen/astroport/zen/jaklis +cd ~/.zen/astrXbian/zen/jaklis # GET LIST of issuer(s) who likes me for liking_me in $(./jaklis.py like | jq -r '.likes[].issuer'); do diff --git a/zen/gchange_INIT.sh b/zen/gchange_INIT.sh index 29e3d72..b124388 100755 --- a/zen/gchange_INIT.sh +++ b/zen/gchange_INIT.sh @@ -103,7 +103,7 @@ NODEIPNS=$(ipfs name publish --allow-offline --quieter /ipfs/$IWALLETS) ### # GET ALL MY GCHANGE FRIENDS AND SEND THEM my IPFS Address -cd ~/.zen/astroport/zen/jaklis +cd ~/.zen/astrXbian/zen/jaklis # GET LIST of issuer(s) who likes me for liking_me in $(./jaklis.py like | jq -r '.likes[].issuer'); do diff --git a/zen/gchange_IPFS_swarm.sh b/zen/gchange_IPFS_swarm.sh index 4bb70e6..f0fead9 100755 --- a/zen/gchange_IPFS_swarm.sh +++ b/zen/gchange_IPFS_swarm.sh @@ -42,7 +42,7 @@ friend_of_mine_count=0 ######################################################################## # Let's look for Friends and "IPFS swarm connect" with them ######################################################################## -cd ~/.zen/astroport/zen/jaklis +cd ~/.zen/astrXbian/zen/jaklis # 1. Get Gchange "liking_me" people list for liking_me in $(./jaklis.py like | jq -r '.likes[].issuer'); do @@ -66,7 +66,7 @@ do ipfsadd=$((ipfsadd+1)) done; - #g1id=$(~/.zen/astroport/zen/tools/ipfs_to_g1.py "$ipfsnodeid") + #g1id=$(~/.zen/astrXbian/zen/tools/ipfs_to_g1.py "$ipfsnodeid") #echo "G1 ID : $g1id" if [[ $friend_of_mine != null ]]; then @@ -106,7 +106,7 @@ echo ## Could send message to friends with 'ipfstryme' message for line in $(cat ~/.zen/A_liking_me_NO_ipfstryme.txt | uniq); do echo "Liking each other, but no ipfstryme received..." - echo "cd ~/.zen/astroport/zen/jaklis" + echo "cd ~/.zen/astrXbian/zen/jaklis" echo "./jaklis.py send -d $line -t 'Astroport' -m 'Rejoins mon #Swarm0 https://copylaradio.com'" done diff --git a/zen/pkg/make_G1SSB_secret.tar.gz b/zen/pkg/make_G1SSB_secret.tar.gz deleted file mode 100644 index 3e87e4e6e8a64976f82397282363ca3e5df0a87b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39879 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 /tmp/secret.ssb < ~/.zen/secret.ipfs source ~/.zen/secret.ipfs cat ~/.zen/secret.ipfs @@ -110,6 +110,6 @@ echo "jq -r --arg PeerID \"\$PeerID\" '.Identity.PeerID=\$PeerID' ~/.ipfs/config echo "jq -r --arg PrivKEY \"\$PrivKEY\" '.Identity.PrivKey=\$PrivKEY' /tmp/config.tmp > ~/.ipfs/config" echo "" -[[ -f /tmp/init_IPFS_with_cesium_loginKEY.sh ]] && cp -f /tmp/init_IPFS_with_cesium_loginKEY.sh ~/.zen/astroport/zen/tools/ +[[ -f /tmp/init_IPFS_with_cesium_loginKEY.sh ]] && cp -f /tmp/init_IPFS_with_cesium_loginKEY.sh ~/.zen/astrXbian/zen/tools/ rm -f /tmp/secret.dunikey } diff --git a/zen/tools/make_G1SSB_secret.sh b/zen/tools/make_G1SSB_secret.sh deleted file mode 100755 index e5c9bf8..0000000 --- a/zen/tools/make_G1SSB_secret.sh +++ /dev/null @@ -1,400 +0,0 @@ -#!/bin/bash -{ -######################################################################## -MY_PATH="`dirname \"$0\"`" # relative -MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized -ME="${0##*/}" - -#### ARM / X64 NOT USED THERE -MACHINE_TYPE=`uname -m` -[ ${MACHINE_TYPE:0:3} == 'arm' ] && isARM="YES" - -if [[ "$1" == "RAZ" ]]; then - echo "~/.SSB_ORIGIN is made for $(whoami)" - [[ -d ~/.ssb_$(whoami) ]] && mv ~/.ssb_$(whoami) ~/.SSB_ORIGIN - rm -Rf ~/.ssb* -else -echo ' -######################################################################## -# \\/// -# qo-op -############# '$MY_PATH/$ME' -######################################################################## -# Make Astroport Station Account -# -# You should already be runing ipfs daemon - -######################################################################## -# - Install silkaj youtube-dl & sbotc -# - Backup any ~/.ssb to ~/.ssb_$USER -# - Creates ~/.ssb_astroport and link it to ~/.ssb -# - Ask for credentials (or auto) -# - CREATE "~/.ssb/secret" & "~/.ssb/secret.dunikey" of you -# !!! KEEP CREDENTIALS IN ~/.zen/secret.astroport.key -######################################################################## -# UnInstall and Recover your ~/.ssb_$USER -# cd && rm -Rf ~/.zen && rm ~/.ssb && mv ~/.ssb_$USER ~/.ssb -######################################################################## -I encourage you to read any code you download. -This one is not perfect, but will not harm your system... - -Install IPFS (compatible with ARM and X64) -curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/.install/ipfs_alone.sh | bash - -HIT ENTER TO CONTINUE -' -read letsgo -fi -# "ipfs daemon" MUST be RUNNING -YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) -[[ "$YOU" == "" ]] && echo "EXIT! PLEASE INSTALL & RUN ipfs daemon WITH curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/.install/ipfs_alone.sh | bash " && exit 1 - -# ~/.zen is ASTROPORT living place. -[[ ! -d ~/.zen/astroport ]] && mkdir -p ~/.zen/astroport - -# IS git THERE ? -[[ ! $(which git) ]] && sudo apt install git -y -[[ ! $(which figlet) ]] && sudo apt install figlet -y -[[ ! $(which lolcat) ]] && sudo apt install lolcat -y - -# USE git pull OR git clone -if [[ -f ~/.zen/astroport/install.sh ]]; then - cd ~/.zen/astroport && git pull -else - cd ~/.zen - git clone https://git.p2p.legal/axiom-team/astroport.git -fi - -cd ~/.zen/astroport -# LETS GO -# Install nvm -echo ' - __ _ - ____ ____ ____/ /__ (_)____ - / __ \/ __ \/ __ / _ \ / / ___/ - / / / / /_/ / /_/ / __/ / (__ ) -/_/ /_/\____/\__,_/\___/ __/ /____/ - /___/ - -' | lolcat -if [[ ! $(which node) ]]; then - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash - source ~/.bashrc - export NVM_DIR="$HOME/.nvm" - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm - [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion - source ~/.bashrc - nvm install 12 - nvm use 12 -fi - -echo ' - ____ ___ _____ _________ - / __ \/ | / ___// _/ ___/ - / / / / /| | \__ \ / / \__ \ -/ /_/ / ___ |___/ // / ___/ / -\____/_/ |_/____/___//____/ - -' | lolcat - -nodename=$(curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/zen/tools/nodename | bash) - -if [[ ! $(which oasis) ]]; then - echo "INSTALL.... http://$nodename" -# echo "ENTER Station accessible Network name !!! Suggestion : $nodename" -# read nodename - # Install nvm - if [[ ! $(which node) || ! $(which npm) ]]; then - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash - source ~/.bashrc - export NVM_DIR="$HOME/.nvm" - nvm install --lts - fi - npm -g install sodium-native ssb-backlinks ssb-ws ssb-links ssb-query ssb-secret-blob ssb-private - npm -g install fraction/oasis#semver: - npm -g install ssb-server ## ADD SSB-SERVER FOR PRIVATE SSB MESSAGING (TODO: integrate Feedless modules on LOVELand Portal) -else - echo "Stopping OASIS" - ssbD=$(ps auxf --sort=+utime | grep -w oasis | grep -v -E 'color=auto|grep' | awk '{print $2}') - ssbD+=$(ps auxf --sort=+utime | grep -w ssb-server | grep -v -E 'color=auto|grep' | awk '{print $2}') - - for tokill in $ssbD; do - kill -9 $tokill - done - - -fi - - - -# INSTALL Silkaj, CLI for Duniter -echo '************************************************************** - __ ___ -(_ | | |/ /\ | -__) _|_ |_ |\ /--\ \_| - -#Duniter communication client... -' | lolcat - -sudo apt update || true -sudo apt install ssmtp mpack libffi-dev build-essential qrencode jq bc gawk -y - -export PATH=$PATH:~/.local/bin -if [[ ! $(which silkaj) ]]; then - libzzz=$(sudo apt-cache search libsodium | awk '{print $1}' | grep libsodium2) - [[ $libzzz == "" ]] && libzzz=$(sudo apt-cache search libsodium | awk '{print $1}' | grep libsodium1) - sudo apt install $libzzz -y - sudo apt install python3-pip python3-setuptools python3-wheel -y - pip3 install base58 - pip3 install silkaj --user - echo 'PATH=$PATH:$HOME/.local/bin' >> ~/.bashrc && source ~/.bashrc -fi - -# INSTALL sbotc -echo ' - __ __ - _____/ /_ ____ / /______ - / ___/ __ \/ __ \/ __/ ___/ - (__ ) /_/ / /_/ / /_/ /__ -/____/_.___/\____/\__/\___/ - -ScuttleButt communication client... -' | lolcat -if [[ ! $(which sbotc) ]]; then - sudo apt install libsodium-dev build-essential imagemagick -y - cd /tmp/ - git clone https://git.scuttlebot.io/%25133ulDgs%2FoC1DXjoK04vDFy6DgVBB%2FZok15YJmuhD5Q%3D.sha256 sbotc - cd sbotc - make - sudo make install - cd ~/.zen/astroport -fi - - -echo ' - __ __ - ____ ______/ /__________ ____ ____ _____/ /_ - / __ `/ ___/ __/ ___/ __ \/ __ \/ __ \/ ___/ __/ -/ /_/ (__ ) /_/ / / /_/ / /_/ / /_/ / / / /_ -\__,_/____/\__/_/ \____/ .___/\____/_/ \__/ - /_/ - -ONBOARDING activation... linking ~/.ssb to ~/.ssb_astroport - -' | lolcat -# CREATE ~/.ssb_astroport -[[ ! -d ~/.ssb_astroport ]] && mkdir -p ~/.ssb_astroport - -# If exists backup ~/.ssb to ~/.ssb_$USER SSB (one time only !) -[[ -d ~/.ssb_$USER ]] && echo "BACKUP already existing... Restore it : rm -Rf ~/.ssb && mv ~/.ssb_$USER ~/.ssb # and Try again..." && exit 1 - -if [[ -d ~/.ssb ]]; then - [[ -f ~/.ssb/manifest.json ]] && cp -f ~/.ssb/manifest.json ~/.ssb_astroport/ - [[ -f ~/.ssb/conn.json ]] && cp -f ~/.ssb/conn.json ~/.ssb_astroport/ - [[ -f ~/.ssb/gossip.json ]] && cp -f ~/.ssb/gossip.json ~/.ssb_astroport/ -fi - -# BACKUP ACTUAL SSB ACCOUNT -[[ -d ~/.ssb ]] && mv ~/.ssb ~/.ssb_$USER - -# Symlink ~/.ssb -> ~/.ssb_astroport -[[ -L ~/.ssb ]] && rm ~/.ssb -[[ -d ~/.ssb_astroport ]] && ln -s ~/.ssb_astroport ~/.ssb - -cd ~/.ssb/ - -[[ ! -f ~/.ssb/manifest.json ]] && cp ~/.zen/astroport/.install/templates/ssb/manifest.json ~/.ssb/ && echo "manifest.json OK" - -echo '>>>>>>> METAVERSE KEY CREATION <<<<<<<< - - __ __ ____ - __/ // /_______ ______ __________ ___ / __ \ - /_ _ __/ ___/ | /| / / __ `/ ___/ __ `__ \/ / / / -/_ _ __(__ )| |/ |/ / /_/ / / / / / / / / /_/ / - /_//_/ /____/ |__/|__/\__,_/_/ /_/ /_/ /_/\____/ - -KEY - -CHOOSE YOU LOGIN (min 8 car. best is more than 6 words!!)... -or LEAVE BLANK and HIT ENTER FOR diceware AUTO GENERATION -' | lolcat -read salt -[[ $salt != "" ]] && echo "CHOOSE PASSWORD?" && read pepper && [[ $pepper == "" ]] && exit 1 - -if [[ "$salt" == "" && "$pepper" == "" ]]; then - -echo ' -._ _ ._ _ ._ _ _ ._ o _ -| | | | | (/_ | | | (_) | | | (_ - -diceware passphrase generator...' | lolcat -# INSTALL diceware files ## TODO REPLACE WITH ipfs links - -[[ ! -f ~/.zen/astroport/zen/tools/diceware.sh ]] \ -&& mkdir -p ~/.zen/astroport/zen/tools/ \ -&& curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/zen/tools/diceware.sh -o ~/.zen/astroport/zen/tools/diceware.sh \ -&& chmod +x ~/.zen/astroport/zen/tools/diceware.sh - -[[ ! -f ~/.zen/astroport/zen/tools/diceware-wordlist.txt ]] \ -&& curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/zen/tools/diceware-wordlist.txt -o ~/.zen/astroport/zen/tools/diceware-wordlist.txt - -# LOGIN (=SALT) -salt="$(~/.zen/astroport/zen/tools/diceware.sh 6 | xargs)" -# PASS (=PEPPER) -pepper="$(~/.zen/astroport/zen/tools/diceware.sh 4 | xargs)" - -fi -echo "........." - -rm -f ~/.zen/secret.astroport.key -echo "#20200606 ASTROPORT METAVERSE #SWARM0 IDENTITY -ZENID=\"$salt\" -ZENPWD=\"$pepper\"" > ~/.zen/secret.astroport.key -sleep 1 - -# CREATE ~/.ssb/secret.dunikey -python3 ~/.zen/astroport/zen/tools/key_create_dunikey.py "$salt" "$pepper" -sleep 1 -[[ ! -f /tmp/secret.dunikey ]] && echo "AARRRRGGG problem happens making your secret.dunikey" && exit 1 -[[ -f /tmp/secret.dunikey ]] && rm -f ~/.ssb/secret.dunikey && mv /tmp/secret.dunikey ~/.ssb/secret.dunikey - -# CREATE SSB secret -g1pub=$(cat ~/.ssb/secret.dunikey | grep "pub" | cut -d ' ' -f 2) -echo "G1PUB=\"$g1pub\"" >> ~/.zen/secret.astroport.key - -g1priv=$(cat ~/.ssb/secret.dunikey | grep "sec" | cut -d ' ' -f 2) -ssbpub=$(echo $g1pub | base58 -d | base64) -ssbpriv=$(echo $g1priv | base58 -d | base64 | tr -d "\n" ) - -rm -f ~/.ssb/secret -cat > ~/.ssb/secret <> ~/.zen/secret.astroport.key - -echo " - _ -|__|_ \ / _ o | _. -|_ |_ \/ (_) | | (_| - -Your Identity is created !! -REMEMBER TO KEEP your secret files SECRET !!! - -Your public name : @${ssbpub}.ed25519 -Your G1 WALLET : $g1pub - -" - -chmod 400 ~/.ssb/secret -chmod 400 ~/.ssb/secret.dunikey - -echo ' - __ - __________/ /_ - / ___/ ___/ __ \ - (__ |__ ) /_/ / -/____/____/_.___/ - -NEW IDENTITY ACTIVATED in ~/.ssb/secret - -' | lolcat - -echo ' - _________ - / ____< / - / / __ / / -/ /_/ // / -\____//_/ - -IDENTITY CREATED in ~/.ssb/secret.dunikey - -Install https://cesium.app to use it !! - -' | lolcat - -cat ~/.zen/secret.astroport.key - -echo ' - -Now you are going to join #Swarm0 IPFS Metaverse -ACTIVATE METAVERSE #SWARM0 INIT SEQUENCE... -ALPHA - ALPHA - ALPHA - ALPHA - -' -echo "Starting SSB SERVER... wait 10 seconds..." -ssb-server start & - -sleep 10 - -if [[ $isARM ]]; then - echo "Starting OASIS..." - oasis --allow-host $nodename --host $nodename & - sleep 7 -else -# Intall Patchwork - if [[ ! $(which ssb-patchwork) ]]; then - wget https://github.com/ssbc/patchwork/releases/download/v3.18.0/ssb-patchwork_3.18.0_amd64.deb -O /tmp/patchwork.deb - sudo dpkg -i /tmp/patchwork.deb - sleep 1 - rm /tmp/patchwork.deb - - ## npm install way - ##npm install --global ssb-patchwork - sleep 2 - - # Start Patchwork - #[[ $(which ssb-patchwork) ]] && ssb-patchwork || echo -e "${c_red}Patchwork is not installed$c_" - fi -fi - -~/.zen/astroport/zen/ssb_INIT.sh -~/.zen/astroport/zen/cron_VRFY.sh - -echo -e "Finished... - -######################################################################## -${c_light}IF SOMETHING WENT WRONG REPORT AN ISSUE -https://git.p2p.legal/axiom-team/astroport/issues$c_ -######################################################################## -MAKE SOME TEST - -1. Test IPFS Layer -ipfs id - -2. Test SSB Layer -sbotc whoami - -3. Test G1 Layer -silkaj balance $g1pub - -4. Test #Swarm0 Activation -crontab -l - -5. Test OASIS -WARNING: If tour installation is working on Pathwork, Oasis is disabled -http://$nodename:3000 - -IF EVERYTHING IS OK -ADD oasis TO YOUR system AUTOSTART !!! -oasis --allow-host $nodename --host $nodename - -THANK YOU. Now it is time to connect to your friends... - -6. ADD ScuttleButt PUB Invitation (With Oasis: http://$nodename:3000/settings) -${c_light}oasis.astroport.com:8008:@UeiA9iqZ0/XTjmYBht230KGr44bsr+Tl5BXSUDFv8vo=.ed25519~xfUSq/J2zLeFwrvvHie4iXI/GAzybUu7Zs9T7/PgZ+w= $c_ - -" -exit 0 -} diff --git a/zen/tools/sbotc_check_invite.sh b/zen/tools/sbotc_check_invite.sh deleted file mode 100755 index 9cf33b6..0000000 --- a/zen/tools/sbotc_check_invite.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Author @f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519 - -invite="${1?invite}" -code="${invite##*~}" -addr="${invite%%~*}" -feed="${addr##*:}" -hostname="${addr%:*}" -host="${hostname%:*}" -port="${hostname##*:}" - -out="$(sbotc -s "$host" -p "$port" -k "$feed" -K "$code" -t async invite.use {} 2>&1)" -if echo "$out" | grep -q 'feed to follow is missing' -then - echo success -elif echo "$out" | grep -q 'method:invite,use is not in list of allowed methods' -then - echo invalid/expired - exit 1 -else - echo fail - echo "$out" - echo trying another method: - sbotc -s "$host" -p "$port" -k "$feed" -K "$code" -t source blobs.get '' - exit 1 -fi diff --git a/zen/tools/sbotc_send_private.sh b/zen/tools/sbotc_send_private.sh deleted file mode 100755 index 9768108..0000000 --- a/zen/tools/sbotc_send_private.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -#recps='@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519 @5XaVcAJ5DklwuuIkjGz4lwm2rOnMHHovhNg7BFFnyJ8=.ed25519' -recps=$1 -file=$2 - -name=${file##*/} -link="$(sblob encrypt "$file")" -type="$(file -b --mime-type "$file")" -id=${link%?unbox=*} -key=${link#*?unbox=} -size="$(sbotc -e blobs.size "$id")" -recps_array="[$(for recp in $recps; do printf '"%s"\n' "$recp"; done | paste -sd,)]" -sbotc private.publish '{"type":"post","text":"['"$name"']('"$link"')","mentions":[{"link":"'"$id"'","name":"'"$name"'","size":'"$size"',"type":"'"$type"'","query":{"unbox":"'"$key"'"}}],"recps":'"$recps_array"'}' "$recps_array" - diff --git a/zen/tools/secret2dunikey.sh b/zen/tools/secret2dunikey.sh deleted file mode 100755 index 2fb7a49..0000000 --- a/zen/tools/secret2dunikey.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -######################################################################## -# Author: Fred (support@qo-op.com) -# Version: 1.0 -# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) -######################################################################## -# This script creates ~/.ssb/secret.dunikey from SSB secret -######################################################################## -MY_PATH="`dirname \"$0\"`" # relative -MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized -######################################################################## -# \\/// -# qo-op -############# -[[ ! -f ~/.ssb/secret ]] && echo "ERROR Your SSB secret is missing... EXIT" && exit 1 -rm -f ~/.ssb/secret.dunikey -ssbpub=$(cat ~/.ssb/secret | grep public\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g) -ssbpriv=$(cat ~/.ssb/secret | grep private\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g) -g1pub=$(echo $ssbpub | base64 -d | base58) -g1priv=$(echo $ssbpriv | base64 -d | base58) -cat > ~/.ssb/secret.dunikey <