Skip to content

wangw469/outline-sdk

 
 

Repository files navigation

Outline SDK (Beta)

Build Status Go Report Card Go Reference

⚠️ Warning: This code is in early stages and is not guaranteed to be stable. If you are interested in integrating with it, we'd love your feedback.

The Outline SDK allows you to:

  • Create tools to protect against network-level interference.
  • Add network-level interference protection to existing apps, such as content or communication apps.

Advantages

Multi-Platform Proven Technology Composable
Supports Android, iOS, Windows, macOS and Linux. Field-tested in the Outline Client and Server, helping millions to access the internet under harsh conditions. Designed for modularity and reuse, allowing you to craft custom transports.

Interoperable and Reusable

The Outline SDK is built upon a simple basic concepts, defined as interoperable interfaces that allow for composition and easy reuse.

Connections enable communication between two endpoints over an abstract transport. There are two types of connections:

  • transport.StreamConn: stream-based connection, like TCP and the SOCK_STREAM Posix socket type.
  • transport.PacketConn: datagram-based connection, like UDP and the SOCK_DGRAM Posix socket type. We use "Packet" instead of "Datagram" because that is the convention in the Go standard library.

Connections can be wrapped to create nested connections over a new transport. For example, a StreamConn could be over TCP, over TLS over TCP, over HTTP over TLS over TCP, over QUIC, among oter optio