Merge pull request #169 from boringproxy/client-override-ssh-port

Implement overriding SSH server per tunnel
This commit is contained in:
Anders Pitman
2022-02-24 14:35:41 -07:00
committed by GitHub
4 changed files with 28 additions and 2 deletions

18
api.go
View File

@@ -378,6 +378,22 @@ func (a *Api) CreateTunnel(tokenData TokenData, params url.Values) (*Tunnel, err
return nil, errors.New("Invalid tls-termination parameter") return nil, errors.New("Invalid tls-termination parameter")
} }
sshServerAddr := a.db.GetAdminDomain()
sshServerAddrParam := params.Get("ssh-server-addr")
if sshServerAddrParam != "" {
sshServerAddr = sshServerAddrParam
}
sshServerPort := a.config.SshServerPort
sshServerPortParam := params.Get("ssh-server-port")
if sshServerPortParam != "" {
var err error
sshServerPort, err = strconv.Atoi(sshServerPortParam)
if err != nil {
return nil, errors.New("Invalid ssh-server-port parameter")
}
}
request := Tunnel{ request := Tunnel{
Domain: domain, Domain: domain,
Owner: owner, Owner: owner,
@@ -389,6 +405,8 @@ func (a *Api) CreateTunnel(tokenData TokenData, params url.Values) (*Tunnel, err
AuthUsername: username, AuthUsername: username,
AuthPassword: password, AuthPassword: password,
TlsTermination: tlsTerm, TlsTermination: tlsTerm,
ServerAddress: sshServerAddr,
ServerPort: sshServerPort,
} }
tunnel, err := a.tunMan.RequestCreateTunnel(request) tunnel, err := a.tunMan.RequestCreateTunnel(request)

View File

@@ -276,6 +276,7 @@ func (c *Client) BoreTunnel(ctx context.Context, tunnel Tunnel) error {
} }
sshHost := fmt.Sprintf("%s:%d", tunnel.ServerAddress, tunnel.ServerPort) sshHost := fmt.Sprintf("%s:%d", tunnel.ServerAddress, tunnel.ServerPort)
fmt.Println(sshHost)
client, err := ssh.Dial("tcp", sshHost, config) client, err := ssh.Dial("tcp", sshHost, config)
if err != nil { if err != nil {
return errors.New(fmt.Sprintf("Failed to dial: ", err)) return errors.New(fmt.Sprintf("Failed to dial: ", err))

View File

@@ -59,6 +59,15 @@
</div> </div>
</div> </div>
<div class='input'>
<label for="ssh-server-addr">Override SSH Server Address:</label>
<input type="text" id="ssh-server-addr" name="ssh-server-addr">
</div>
<div class='input'>
<label for="ssh-server-port">Override SSH Server Port:</label>
<input type="text" id="ssh-server-port" name="ssh-server-port">
</div>
<button class='button' type="submit">Submit</button> <button class='button' type="submit">Submit</button>
</form> </form>

View File

@@ -98,8 +98,6 @@ func (m *TunnelManager) RequestCreateTunnel(tunReq Tunnel) (Tunnel, error) {
return Tunnel{}, err return Tunnel{}, err
} }
tunReq.ServerAddress = m.db.GetAdminDomain()
tunReq.ServerPort = m.config.SshServerPort
tunReq.ServerPublicKey = "" tunReq.ServerPublicKey = ""
tunReq.Username = m.user.Username tunReq.Username = m.user.Username
tunReq.TunnelPrivateKey = privKey tunReq.TunnelPrivateKey = privKey