ufo

package module
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 25, 2022 License: MIT Imports: 14 Imported by: 0

README

ufo

Listening on TCP port 0 makes the system allocate a random port for you.

...
  ln, err := net.Listen("tcp", ":0")
  if err != nil {
          return err
  }
  log.Println("listening on", ln.Addr().String())
  return http.Serve(ln, http.FileServer(http.Dir(".")))
...

2022/09/24 23:09:17 listening on ::48982

Taking inspiration from that, ufo is a Golang service that allocates random subdomains to clients with automatic SSL, HTTP/3 for free.

The programming interface is the almost the same as [net.Listen]

...
  ln, err := ufo.Listen("https://ufo.k0s.io")
  if err != nil {
          return err
  }
  log.Println("listening on", ln.URL())
  return http.Serve(ln, http.FileServer(http.Dir(".")))
...

2022/09/24 23:09:17 listening on https://1.ufo.k0s.io

deploy server:

$ kubectl apply -f https://raw.githubusercontent.com/btwiuse/ufo/main/deploy.yaml

install client:

$ go install github.com/btwiuse/ufo/cmd/ufo@latest

example apps:

$ ufo hello
$ ufo gos
$ ufo sse
$ ufo echo

TODO

  • support concurrent rw on session manager map
  • support custom root domain, for example HOST=ufo.dev
  • support user specified hostname
  • authentication plugins: netrc, basic auth, environment variable
  • reverseproxy WebTransport requests

Documentation

Index

Constants

View Source
const EnableDatagrams = true
View Source
const MaxIncomingStreams int64 = 1 << 60

2^60 == 1152921504606846976

View Source
const MaxIncomingUniStreams int64 = 1 << 60

2^60 == 1152921504606846976

Variables

This section is empty.

Functions

func Dial added in v0.0.3

func Dial(ctx context.Context, u *url.URL, hdr http.Header) (*webtransport.Session, error)

Dial is a wrapper around webtransport.Dial with automatic HTTP/3 service discovery

func Listen

func Listen(u string) (*listener, error)

func Serve added in v0.0.3

func Serve(u string, handler http.Handler) error

Types

type StreamConn

type StreamConn struct {
	webtransport.Stream
	Session *webtransport.Session
}

func (*StreamConn) LocalAddr

func (sc *StreamConn) LocalAddr() net.Addr

func (*StreamConn) RemoteAddr

func (sc *StreamConn) RemoteAddr() net.Addr

Directories

Path Synopsis
cmd
echo command
gos command
hello command
idna command
sse command
ufo command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL