feat: implement ssh forwarding

This commit is contained in:
2024-11-17 18:10:35 +00:00
parent a7933f8b06
commit 45bfbe093a
21 changed files with 1175 additions and 296 deletions

View File

@@ -0,0 +1,37 @@
package sshproxy
type SSHProxy struct {
// internalPorts maps internal docker ssh ports to the corresponding external ssh ports
// that users use to ssh into workspaces
internalPorts map[int]int
connections map[int]*proxyConnection
}
func New() *SSHProxy {
return &SSHProxy{
internalPorts: map[int]int{},
connections: map[int]*proxyConnection{},
}
}
func (p *SSHProxy) NewProxyEntryTo(toPort int) error {
c, err := newProxyConnection(toPort)
if err != nil {
return err
}
go c.start()
p.connections[toPort] = c
p.internalPorts[toPort] = c.externalPort
return nil
}
func (p *SSHProxy) FindExternalPort(internalPort int) int {
if port, ok := p.internalPorts[internalPort]; ok {
return port
}
return -1
}