astrXbian/zen/ipfs_P2P_forward.sh

81 lines
4.3 KiB
Bash
Raw Normal View History

2021-06-03 02:53:56 +02:00
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# 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
########################################################################
YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) || er+=" ipfs daemon not running"
IPFSNODEID=$(ipfs --timeout=5s id -f='<id>\n') || er+=" ipfs id problem"
[[ "$YOU" == "" || "$IPFSNODEID" == "" ]] && echo "ERROR : $er " && exit 1
########################################################################
# TODO ESTABLISH A PORT FORWARD STRATEGY (depending on Node Flavour)
IPFSADMINID=$(cat ~/.zen/astrXbian/A_swarm_admin.txt)
## OASIS acts as nginx proxy WITH localhost:2443 => taurus:443 (NextCloud)
# OASIS : /etc/nginx/sites-available/taurus.copylaradio.com.conf
# server {
2021-08-16 02:55:16 +02:00
# server_name taurus.copylaradio.com;
#
2021-06-03 02:53:56 +02:00
# access_log /var/log/nginx/taurus-access.log;
# error_log /var/log/nginx/taurus-error.log;
2021-08-16 02:55:16 +02:00
#
2021-06-03 02:53:56 +02:00
# location / {
# proxy_pass https://127.0.0.1:2443;
# }
2021-06-03 02:53:56 +02:00
# }
# + sudo certbot !!
2021-08-16 02:55:16 +02:00
# _____
#|_ _|_ _ _ _ _ __ _ _ ___
# | |/ _` | | | | '__| | | / __|
# | | (_| | |_| | | | |_| \__ \
# |_|\__,_|\__,_|_| \__,_|___/ NextCloud
#
2021-08-16 02:55:16 +02:00
# 12D3KooWRstYPJSakosgnvvGpxDdUJd2xAncJB7fbBwLBaTAEJxp
2021-06-03 02:53:56 +02:00
if [[ "$IPFSNODEID" == "12D3KooWRstYPJSakosgnvvGpxDdUJd2xAncJB7fbBwLBaTAEJxp" ]]; then
2021-08-16 02:55:16 +02:00
[[ ! $(ipfs p2p ls | grep '/x/https-taurus') ]] && ipfs p2p listen /x/https-taurus /ip4/127.0.0.1/tcp/443
[[ ! $(ipfs p2p ls | grep '/x/ssh-taurus') ]] && ipfs p2p listen /x/ssh-taurus /ip4/127.0.0.1/tcp/22
2021-06-03 02:53:56 +02:00
fi
# BRING TO OASIS /etc/nginx/sites-available/taurus.copylaradio.com.conf
2021-06-03 02:53:56 +02:00
if [[ "$IPFSNODEID" == "12D3KooWBYme2BsNUrtx4mEdNX6Yioa9AV7opWzQp6nrPs6ZKabN" ]]; then
2021-06-04 05:13:24 +02:00
# CHECK CONNECTIVITY ipfs --timeout=5s ping /p2p/12D3KooWRstYPJSakosgnvvGpxDdUJd2xAncJB7fbBwLBaTAEJxp
2021-08-16 02:55:16 +02:00
[[ ! $(ipfs p2p ls | grep '/x/https-taurus') ]] && ipfs --timeout=5s ping -n 1 /p2p/12D3KooWRstYPJSakosgnvvGpxDdUJd2xAncJB7fbBwLBaTAEJxp && ipfs p2p forward /x/https-taurus /ip4/127.0.0.1/tcp/2443 /p2p/12D3KooWRstYPJSakosgnvvGpxDdUJd2xAncJB7fbBwLBaTAEJxp
[[ ! $(ipfs p2p ls | grep '/x/ssh-taurus') ]] && ipfs --timeout=5s ping -n 1 /p2p/12D3KooWRstYPJSakosgnvvGpxDdUJd2xAncJB7fbBwLBaTAEJxp && ipfs p2p forward /x/ssh-taurus /ip4/127.0.0.1/tcp/2022 /p2p/12D3KooWRstYPJSakosgnvvGpxDdUJd2xAncJB7fbBwLBaTAEJxp
2021-06-03 02:53:56 +02:00
fi
2021-08-16 02:55:16 +02:00
# Every Station publish SSH port "/x/ssh-$zuid"
zuid="$(cat ~/.zen/ipfs/.$IPFSNODEID/_xbian.zuid)"
2021-08-16 21:02:44 +02:00
if [[ $zuid ]]
then
2021-08-16 02:55:16 +02:00
if [[ ! $(cat ~/.ssh/authorized_keys | grep "fred@ONELOVE") ]]
then
# ADD fred@ONELOVE to ~/.ssh/authorized_keys
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFLHW8P88C/B7622yXzdAn1ZcTBfE1A4wMqajBwAoHwUVTOUaYfvkiSxbzb5H9dPTAXhQU6ZfuLa70kTo1m2b9TKH0tD6hR3RiKJ0NIjCHYEypcPGpLmHaZWnBKPq3IUU24qFVdUJxnTkDdFUszYMNoV4nqlXY/ZYdNpic8L1jPPyfOLLfPFkuSxagyQj4FGJq77UQE5j+skMJS3ISkazNTLqOCGLFJ5qtBC11BvQaCJ4cQ2Ss7ejPYhpx16NLJfg9VtG4dv9ZebEIl2pf7niiQGSPrDMFWHuQcGAuHt/patr0BcvfvD3Gv+qNsVfAJCNZ2U5NHEMKIhgj1ilNPEw7 fred@ONELOVE" >> ~/.ssh/authorized_keys
fi
[[ ! $(ipfs p2p ls | grep "/x/ssh-$zuid") ]] && ipfs p2p listen /x/ssh-$zuid /ip4/127.0.0.1/tcp/22
# echo "echo \"ssh-$zuid local port please?\"; read lport; ipfs p2p forward /x/ssh-$zuid /ip4/127.0.0.1/tcp/$lport /p2p/$IPFSNODEID" >> ~/.zen/ipfs/.$IPFSNODEID/astroport/port
fi
2021-06-03 02:53:56 +02:00
ipfs p2p ls
## CONNECT WITH COMMAND
## ipfs cat /ipns/$IPFSNODEID/.$IPFSNODEID/x_ssh-$zuid.sh | bash
if [[ ! -f ~/.zen/ipfs/.$IPFSNODEID/x_ssh-$zuid.sh ]]; then
echo "PORT=$1; [[ ! $PORT ]] && echo 'PORT LOCAL pour ssh-$zuid ?'; read PORT"
echo "[[ ! $(ipfs p2p ls | grep '/x/ssh-$zuid') ]] && ipfs --timeout=5s ping -n 1 /p2p/$IPFSNODEID && ipfs p2p forward /x/ssh-$zuid /ip4/127.0.0.1/tcp/$PORT/p2p/$IPFSNODEID" > ~/.zen/ipfs/.$IPFSNODEID/x_ssh-$zuid.sh
echo "ssh $YOU@127.0.0.1 -p $PORT" >> ~/.zen/ipfs/.$IPFSNODEID/x_ssh-$zuid.sh
fi
## THIS PORT FORWARDING HUB COULD BE MADE MORE CONTROLABLE USING FRIENDSHIP LEVEL & IPFS BALISES