WhatIETF / goRIPT

Implementation of RIPT in golang
BSD 2-Clause "Simplified" License
11 stars 3 forks source link

GoRIPT

WIP and in hack mode (except few landmines and no-so optimized code)

Components

Server

Client

Note: At present, self-signed certs are used to quic tls setup.

Note: Current code shows how h3 POST can be used to send/recv media for h3 transport.

Build and Run

Prerequisites

  1. Install go 1.14 or later

  2. pkg-config, portaudio, opus, opusfile

On OSX you might work

brew install pkg-config portaudio  opus  opusfile
  1. GO packages - install with
go get github.com/lucas-clemente/quic-go
go get github.com/gordonklaus/portaudio
go get gopkg.in/hraban/opus.v2

go get github.com/bifurcation/mint/syntax
go get github.com/google/uuid
go get github.com/gorilla/mux
go get github.com/gorilla/websocket
go get github.com/labstack/gommon/log
go get github.com/marten-seemann/qpack
go get golang.org/x/net/http/httpguts
go get golang.org/x/net/http2/hpack
go get golang.org/x/net/idna
  1. you will need this package in your gopath so it is found

Run server:

go run server/main.go

The program takes few optional arguments

 -certfile string
        Full path for server cert file
  -h3port int
        H3 port on which to listen (default 2399)
  -host string
        server address. (default "")
  -keyfile string
        Full path for server key file
  -wssport int
        WSS port on which to listen (default 8080)

 For running locally certfile from (common/cert.pem) and keyfile(common/priv.key) 
 will be used.      

Run Clients

cd ript_client
go build .

 When running locally CA certfile form (commom/ca.pem) will be used by default. 

H3 Sender -> H3 Receiver

Receiver:

./ript_client --server=https://localhost:2399 --mode=pull  --xport=h3 --dev

Sender:

./ript_client --server=https://localhost:2399  --mode=push --xport=h3 --dev

Note: "--dev" option is needed when clients are talking to server run locally.