tunnel

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2026 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	*cio.Logger
	Inbound               bool
	Outbound              bool
	Socks                 bool
	KeepAlive             time.Duration
	SessionID             string
	OnEndpointStateChange func(EndpointStateChange)
	OnStreamEvent         func(StreamEvent)
}

Config a Tunnel

type EndpointState

type EndpointState string
const (
	EndpointStatePending EndpointState = "pending"
	EndpointStateActive  EndpointState = "active"
	EndpointStateFailed  EndpointState = "failed"
	EndpointStateClosed  EndpointState = "closed"
)

type EndpointStateChange

type EndpointStateChange struct {
	SessionID  string
	Descriptor string
	State      EndpointState
	Error      string
}

type Proxy

type Proxy struct {
	*cio.Logger
	// contains filtered or unexported fields
}

Proxy is the inbound portion of a Tunnel

func NewProxy

func NewProxy(
	logger *cio.Logger, sshTun sshTunnel, index int, remote *settings.Remote,
	sessionID string, onState func(EndpointStateChange), onStream func(StreamEvent),
) (*Proxy, error)

NewProxy creates a Proxy

func (*Proxy) Run

func (p *Proxy) Run(ctx context.Context) error

Run enables the proxy and blocks while its active, close the proxy by cancelling the context.

type StreamEvent

type StreamEvent struct {
	SessionID  string
	Descriptor string
	Protocol   string
	ConnID     int
	State      StreamState
	Error      string
	Time       time.Time
}

type StreamState

type StreamState string
const (
	StreamStateAccepted StreamState = "accepted"
	StreamStateOpen     StreamState = "open"
	StreamStateError    StreamState = "error"
	StreamStateClosed   StreamState = "closed"
)

type Tunnel

type Tunnel struct {
	Config
	// contains filtered or unexported fields
}

Tunnel represents an SSH tunnel with proxy capabilities. Both chisel client and server are Tunnels. chisel client has a single set of remotes, whereas chisel server has multiple sets of remotes (one set per client). Each remote has a 1:1 mapping to a proxy. Proxies listen, send data over ssh, and the other end of the ssh connection communicates with the endpoint and returns the response.

func New

func New(c Config) *Tunnel

New Tunnel from the given Config

func (*Tunnel) BindRemotes

func (t *Tunnel) BindRemotes(ctx context.Context, remotes []*settings.Remote) error

BindRemotes converts the given remotes into proxies, and blocks until the caller cancels the context or there is a proxy error.

func (*Tunnel) BindSSH

func (t *Tunnel) BindSSH(ctx context.Context, c ssh.Conn, reqs <-chan *ssh.Request, chans <-chan ssh.NewChannel) error

BindSSH provides an active SSH for use for tunnelling

Jump to

Keyboard shortcuts

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