(WIP)
Radiance is a pilot PoC of Lantern core SDK (flashlight) utilizing the outline-sdk. What's the "core" idea behind a lantern, and I guess a flashlight? Light, or synonymously, radiance.
radiance
runs a local server that proxies requests to a remote Lantern proxy. Requests are proxied over a transport.StreamDialer
, which uses a specific protocol to communicate with the remote proxy, i.e. shadowsocks. radiance
will automatically fetch the proxy and protocol information and configure the dialer. Currently, not all protocols are supported.
- shadowsocks
- multiplexing
- algeneva
New transports/protocols can be added by implementing transport.StreamDialer and creating a BuilderFn. Create a new package in transport
(e.g. transport/myTransport
) and add the necessary code to run the transport here, including the StreamDialer
and BuilderFn
. Then add registerDialerBuilder("myTransportName", myTransport.MyBuilderFn)
to init
in register.go to enable it. myTransportName
must match protocol in the proxy config as this is what's used to configure the dialer.
Note
You should not need to make any other modifications to register.go
or modify any other file.
go run cmd/main.go -addr localhost:8080
- Create an Outline transport StreamDialer using a proxy config.
- Connect to and route requests to backend proxy using a StreamDialer.
- Retrieve proxy config from backend.
- Implement remaining protocols
- tls w/ frag
- algeneva
- tlsmasq
- water
- starbridge
- vmess
- broflake?
- Add socks5 support
- Implement VPN TUN
- Add way to manage multiple proxies. MAB?
- Switch from getlantern/golog to slog
- Add PacketDialer (UDP) support
- Add support for split tunneling, using v2ray's routing rule syntax