36 lines
1.1 KiB
Bash
Executable file
36 lines
1.1 KiB
Bash
Executable file
#!/bin/sh
|
|
# Example P2P network transit program for git-annex.
|
|
#
|
|
# This simulates a multi-node P2P network using unix
|
|
# socket files in /tmp.
|
|
#
|
|
# Copyright 2025 Joey Hess; icenced under the GNU GPL version 3 or higher.
|
|
|
|
set -e
|
|
|
|
if [ "$1" = address ]; then
|
|
# Output the local P2P network address.
|
|
#
|
|
# For the purposes of this example, a new address is made up each
|
|
# time this is run. Using the current unix second to get a fairly
|
|
# unique address.
|
|
myaddress=$(date +%s)
|
|
echo "$myaddress"
|
|
else
|
|
socketfile="$2"
|
|
if [ -z "$socketfile" ]; then
|
|
# Connect to the peer's address and relay stdin and stdout.
|
|
peeraddress="$1"
|
|
# For the purposes of this demo, socat is used, and simply
|
|
# connects stdio to the unix socket file in /tmp.
|
|
socat - UNIX-CONNECT:"/tmp/$peeraddress"
|
|
else
|
|
# Arrange for incoming connections from peers to connect to
|
|
# the unix socket provided by git-annex. The local
|
|
# P2P network address is also available to use.
|
|
myaddress="$1"
|
|
# For the purposes of this demo, the socket file provided
|
|
# by git-annex is symlinked to the location in /tmp.
|
|
ln -sf $(realpath "$socketfile") "/tmp/$myaddress"
|
|
fi
|
|
fi
|