skynet

package module
v0.0.0-...-5d360e8 Latest Latest
Warning

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

Go to latest
Published: Sep 24, 2022 License: MIT Imports: 13 Imported by: 0

README

skynet

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, skynet 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 := skynet.Listen("https://skynet.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.skynet.k0s.io

deploy server:

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

install client:

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

example apps:

$ skynet client
$ skynet gos
$ skynet echo

TODO

  • reverseproxy WebTransport requests
  • support user specified hostname, requiring netrc authentication
  • support custom root domain, for example HOST=usesthis.app
  • support concurrent rw on session manager map

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Listen

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

Types

type Conn

type Conn interface {
	io.Reader
	io.Writer
	io.Closer
	SetDeadline(time.Time) error
	SetReadDeadline(time.Time) error
	SetWriteDeadline(time.Time) error
}

type Listener

type Listener interface {
	Accept() (net.Conn, error)
	Close() error
	Addr() net.Addr
}

type StreamConn

type StreamConn struct {
	webtransport.Stream
	LA net.Addr
	RA net.Addr
}

func (StreamConn) LocalAddr

func (sc StreamConn) LocalAddr() net.Addr

func (StreamConn) RemoteAddr

func (sc StreamConn) RemoteAddr() net.Addr

Directories

Path Synopsis
cmd
client command
echo command
gos command
skynet command

Jump to

Keyboard shortcuts

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