2021/10/18

Piping-server

piping-server 可透過 http/https 在 devices 之間傳遞任意資料,可單獨傳送文字或是檔案。也可以使用串流的方式,無限制一直傳送資料。透過這個機制,能夠進一步實現 Text stream chat, screen share, dawing share, E2E encryption file transfer, Web ssh, WebVNC。經過實驗,可持續傳送 64 天的資料,大約傳送了 1PB。

public servers

如果不自行安裝,目前有這些 public servers 可直接測試使用

測試

傳送文字

# Send
echo 'hello, world' | curl -T - https://ppng.io/hello

# Get
curl https://ppng.io/hello > hello.txt

server url (/hello) 路徑可任意指定,將資料透過 PUT/POST,然後用 GET 取得資料,傳送或接收任一方都可以先發起。

傳送檔案

# send
curl -T file https://ppng.io/file
# send with linux pipe
cat file | curl -T - https://ppng.io/file

# receive
curl https://ppng.io/file > file

傳送資料夾

# send with tar
tar zfcp - ~/mydirectory | curl -T - https://ppng.io/dir

# receive
curl https://ppng.io/dir > dir.tar

##########
# send with zip
zip -q -r - ~/mydirctory | curl -T - https://ppng.io/dir

# receive
curl https://ppng.io/dir > dir.zip

傳送檔案並加密

# send
cat file | openssl aes-256-cbc | curl -T - https://ppng.io/encfile

# receive
curl https://ppng.io/encfile | openssl aes-256-cbc -d > file2

指定多個接收端

注意發送端會等待兩個接收端都連上,才會開始進行資料傳輸,否則,當第一個接收端連上時,還是會在等待的狀態

#send
seq 10 | curl -T - https://ppng.io/seq?n=2

# 在兩個 terminal receive
curl https://ppng.io/seq?n=2
curl https://ppng.io/seq?n=2

portable execution

piping-server-pkg/releases 可下載平台的 binary package 執行檔,然後就能直接使用

以下是用 piping-server-linux 搭配 Let's Encrypt 的 SSL 憑證的啟動方式

./piping-server-linux --http-port 9000 --enable-https --https-port 9001 --key-path /etc/letsencrypt/live/testserver.com.tw/privkey.pem --crt-path /etc/letsencrypt/live/testserver.com.tw/fullchain.pem

線上直接查詢 server 的版本及 help

curl https://ppng.io/help

curl https://ppng.io/version

applications

screen share

draw web

References

Piping Server:實現設備間通過純 HTTP 無限傳輸數據

Transfer Files Between Any Devices Using Piping Server

piping-server-streaming-upload-htmls

沒有留言:

張貼留言