mirror of
https://github.com/netbirdio/netbird.git
synced 2026-07-22 00:11:29 +02:00
36 lines
979 B
Go
36 lines
979 B
Go
package server
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"strconv"
|
|
|
|
"github.com/gliderlabs/ssh"
|
|
)
|
|
|
|
// prepareSSHEnv prepares SSH protocol-specific environment variables
|
|
// These variables provide information about the SSH connection itself
|
|
func prepareSSHEnv(session ssh.Session) []string {
|
|
remoteAddr := session.RemoteAddr()
|
|
localAddr := session.LocalAddr()
|
|
|
|
remoteHost, remotePort, err := net.SplitHostPort(remoteAddr.String())
|
|
if err != nil {
|
|
remoteHost = remoteAddr.String()
|
|
remotePort = "0"
|
|
}
|
|
|
|
localHost, localPort, err := net.SplitHostPort(localAddr.String())
|
|
if err != nil {
|
|
localHost = localAddr.String()
|
|
localPort = strconv.Itoa(InternalSSHPort)
|
|
}
|
|
|
|
return []string{
|
|
// SSH_CLIENT format: "client_ip client_port server_port"
|
|
fmt.Sprintf("SSH_CLIENT=%s %s %s", remoteHost, remotePort, localPort),
|
|
// SSH_CONNECTION format: "client_ip client_port server_ip server_port"
|
|
fmt.Sprintf("SSH_CONNECTION=%s %s %s %s", remoteHost, remotePort, localHost, localPort),
|
|
}
|
|
}
|