forked from STI/Astroport.ONE
/| /\\ /^^^/ |^\Z / | | \Z / | / @ \Z / / \_______ ( \ _ / \Z / / / ( ---- /G |\ |Z / / / ( / ---- \ /---'/\ |Z / / / \/--' /--/ /Z / / | /--/ |Z / / \_______ / /--/ |Z \ / / --/ /--/ \Z | / / / /--/ \Z / / |--| \Z/ / |---| / /----' \---| /^^^^^^^^^^^^\Z \-/ \Z / / | \Z \---' |\________| |_______ |Z \--' /\/ \|_|_|_|| |_|_|_|_|\_ |Z '------' / / / |_ /Z \---' | / `````` /Z \--' /\/ \ _____________/Z '------' \ "
118 lines
4.6 KiB
Bash
Executable File
118 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
################################################################################
|
|
# Author: Fred (support@qo-op.com)
|
|
# Version: 0.2
|
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
|
################################################################################
|
|
# Activate SUPPORT MODE: open ssh over IPFS
|
|
MY_PATH="`dirname \"$0\"`" # relative
|
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|
. "$MY_PATH/../tools/my.sh"
|
|
########################################################################
|
|
YOU=$(myIpfsApi) || er+=" ipfs daemon not running"
|
|
[[ "$YOU" == "" || "${IPFSNODEID}" == "" ]] && echo "ERROR : $er " && exit 1
|
|
########################################################################
|
|
## THIS SCRIPT COPY BOOSTRAP PUBKEY
|
|
### AND OPEN IPFS P2P SSH FORWARD ON CHANNEL
|
|
# Make Station publish SSH port on "/x/ssh-$(IPFSNODEID)"
|
|
########################################################################
|
|
## use STOP or OFF to finish forwarding
|
|
|
|
PARAM="$1"
|
|
if [[ "${PARAM,,}" == "off" || "${PARAM,,}" == "stop" ]]; then
|
|
ipfs p2p close --all
|
|
rm ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh 2>/dev/null
|
|
rm ~/.zen/tmp/${IPFSNODEID}/y_ssh.pub 2>/dev/null
|
|
echo "STOP" && exit 0
|
|
fi
|
|
|
|
############################################
|
|
## DISTRIBUTE DRAGON SSH WOT SEED
|
|
# A_boostrap_ssh.txt
|
|
############################################
|
|
while IFS= read -r line
|
|
do
|
|
LINE=$(echo "$line" | grep "ssh-ed25519" | grep -Ev "#") # Remove # & not ssh-ed25519
|
|
[[ ! ${LINE} ]] && continue
|
|
if [[ ! $(cat ~/.ssh/authorized_keys | grep "${LINE}") ]]
|
|
then
|
|
echo "# ADDING ${LINE} to ~/.ssh/authorized_keys"
|
|
mkdir -p ~/.ssh && echo "${LINE}" >> ~/.ssh/authorized_keys
|
|
else
|
|
echo "TRUSTING ${LINE}"
|
|
fi
|
|
done < ${MY_PATH}/../A_boostrap_ssh.txt
|
|
|
|
############################################
|
|
## PUBLISH SSH PUBKEY OVER IPFS
|
|
## KITTY ssh-keygen style
|
|
[[ -s ~/.ssh/id_ed25519.pub ]] && cp ~/.ssh/id_ed25519.pub ~/.zen/tmp/${IPFSNODEID}/y_ssh.pub
|
|
## DRAGONz PGP/SSH style (https://pad.p2p.legal/keygen)
|
|
gpg --export-ssh-key $(cat ~/.zen/game/players/.current/.player) 2>/dev/null > ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub
|
|
[[ -z ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub ]] && rm ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub # remove empty file
|
|
|
|
############################################
|
|
### FORWARD SSH PORT over /x/ssh-${IPFSNODEID}
|
|
############################################
|
|
echo "Lanching /x/ssh-${IPFSNODEID}"
|
|
|
|
[[ ! $(ipfs p2p ls | grep "/x/ssh-${IPFSNODEID}") ]] \
|
|
&& ipfs p2p listen /x/ssh-${IPFSNODEID} /ip4/127.0.0.1/tcp/22
|
|
|
|
ipfs p2p ls
|
|
|
|
echo
|
|
############################################
|
|
## PREPARE x_ssh.sh
|
|
## REMOTE ACCESS COMMAND FROM DRAGONS
|
|
############################################
|
|
PORT=22000
|
|
PORT=$((PORT+${RANDOM:0:3}))
|
|
|
|
echo '#!/bin/bash
|
|
if [[ ! $(ipfs p2p ls | grep x/ssh-'${IPFSNODEID}') ]]; then
|
|
ipfs --timeout=10s ping -n 4 /p2p/'${IPFSNODEID}'
|
|
[[ $? == 0 ]] \
|
|
&& ipfs p2p forward /x/ssh-'${IPFSNODEID}' /ip4/127.0.0.1/tcp/'${PORT}' /p2p/'${IPFSNODEID}' \
|
|
&& ssh '${USER}'@127.0.0.1 -p '${PORT}'
|
|
|| echo "CONTACT IPFSNODEID FAILED - ERROR -"
|
|
fi
|
|
' > ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh
|
|
|
|
cat ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh
|
|
|
|
echo "
|
|
|
|
/| /\\
|
|
/^^^/ |^\Z / |
|
|
| \Z / |
|
|
/ @ \Z / / \_______
|
|
( \ _ / \Z / / /
|
|
( ---- /G |\ |Z / / /
|
|
( / ---- \ /---'/\ |Z / / /
|
|
\/--' /--/ /Z / /
|
|
| /--/ |Z / / \_______
|
|
/ /--/ |Z \ / /
|
|
--/ /--/ \Z | / /
|
|
/ /--/ \Z / /
|
|
|--| \Z/ /
|
|
|---| / /----'
|
|
\---| /^^^^^^^^^^^^\Z
|
|
\-/ \Z
|
|
/ / | \Z
|
|
\---' |\________| |_______ |Z
|
|
\--' /\/ \|_|_|_|| |_|_|_|_|\_ |Z
|
|
'------' / / / |_ /Z
|
|
\---' | / `````` /Z
|
|
\--' /\/ \ _____________/Z
|
|
'------' \
|
|
|
|
"
|
|
|
|
############################################
|
|
echo "CONNECT WITH THIS COMMAND"
|
|
echo "ipfs cat /ipns/${IPFSNODEID}/x_ssh.sh | bash"
|
|
############################################
|
|
|
|
exit 0
|