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 可直接測試使用
- https://ppng.io (alias for now: https://piping.ml)
- https://piping.glitch.me
- https://piping-47q675ro2guv.runkit.sh
- https://piping.nwtgck.repl.co
- https://ppng.herokuapp.com
測試
傳送文字
# 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
References
Piping Server:實現設備間通過純 HTTP 無限傳輸數據
沒有留言:
張貼留言