Skip to content

Commit dd61f8b

Browse files
committed
Disable port forwarding by default
Fixes #68
1 parent 465d1bd commit dd61f8b

File tree

4 files changed

+23
-12
lines changed

4 files changed

+23
-12
lines changed

server.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ func (f RequestHandlerFunc) HandleSSHRequest(ctx Context, srv *Server, req *goss
6565
return f(ctx, srv, req)
6666
}
6767

68+
var DefaultRequestHandlers = map[string]RequestHandler{}
69+
6870
type ChannelHandler interface {
6971
HandleSSHChannel(srv *Server, conn *gossh.ServerConn, newChan gossh.NewChannel, ctx Context)
7072
}
@@ -75,6 +77,10 @@ func (f ChannelHandlerFunc) HandleSSHChannel(srv *Server, conn *gossh.ServerConn
7577
f(srv, conn, newChan, ctx)
7678
}
7779

80+
var DefaultChannelHandlers = map[string]ChannelHandler{
81+
"session": ChannelHandlerFunc(DefaultSessionHandler),
82+
}
83+
7884
func (srv *Server) ensureHostSigner() error {
7985
if len(srv.HostSigners) == 0 {
8086
signer, err := generateSigner()
@@ -90,15 +96,15 @@ func (srv *Server) ensureHandlers() {
9096
srv.mu.Lock()
9197
defer srv.mu.Unlock()
9298
if srv.RequestHandlers == nil {
93-
srv.RequestHandlers = map[string]RequestHandler{
94-
"tcpip-forward": forwardedTCPHandler{},
95-
"cancel-tcpip-forward": forwardedTCPHandler{},
99+
srv.RequestHandlers = map[string]RequestHandler{}
100+
for k, v := range DefaultRequestHandlers {
101+
srv.RequestHandlers[k] = v
96102
}
97103
}
98104
if srv.ChannelHandlers == nil {
99-
srv.ChannelHandlers = map[string]ChannelHandler{
100-
"session": ChannelHandlerFunc(sessionHandler),
101-
"direct-tcpip": ChannelHandlerFunc(directTcpipHandler),
105+
srv.ChannelHandlers = map[string]ChannelHandler{}
106+
for k, v := range DefaultChannelHandlers {
107+
srv.ChannelHandlers[k] = v
102108
}
103109
}
104110
}

session.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ type Session interface {
7777
// when there is no signal channel specified
7878
const maxSigBufSize = 128
7979

80-
func sessionHandler(srv *Server, conn *gossh.ServerConn, newChan gossh.NewChannel, ctx Context) {
80+
func DefaultSessionHandler(srv *Server, conn *gossh.ServerConn, newChan gossh.NewChannel, ctx Context) {
8181
ch, reqs, err := newChan.Accept()
8282
if err != nil {
8383
// TODO: trigger event callback

session_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ func (srv *Server) serveOnce(l net.Listener) error {
2020
return e
2121
}
2222
srv.ChannelHandlers = map[string]ChannelHandler{
23-
"session": ChannelHandlerFunc(sessionHandler),
24-
"direct-tcpip": ChannelHandlerFunc(directTcpipHandler),
23+
"session": ChannelHandlerFunc(DefaultSessionHandler),
24+
"direct-tcpip": ChannelHandlerFunc(DirectTCPIPHandler),
2525
}
2626
srv.handleConn(conn)
2727
return nil

tcpip.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ type localForwardChannelData struct {
2323
OriginPort uint32
2424
}
2525

26-
func directTcpipHandler(srv *Server, conn *gossh.ServerConn, newChan gossh.NewChannel, ctx Context) {
26+
// DirectTCPIPHandler can be enabled by adding it to the server's
27+
// ChannelHandlers under direct-tcpip.
28+
func DirectTCPIPHandler(srv *Server, conn *gossh.ServerConn, newChan gossh.NewChannel, ctx Context) {
2729
d := localForwardChannelData{}
2830
if err := gossh.Unmarshal(newChan.ExtraData(), &d); err != nil {
2931
newChan.Reject(gossh.ConnectionFailed, "error parsing forward data: "+err.Error())
@@ -84,12 +86,15 @@ type remoteForwardChannelData struct {
8486
OriginPort uint32
8587
}
8688

87-
type forwardedTCPHandler struct {
89+
// ForwardedTCPHandler can be enabled by creating a ForwardedTCPHandler and
90+
// adding it to the server's RequestHandlers under tcpip-forward and
91+
// cancel-tcpip-forward.
92+
type ForwardedTCPHandler struct {
8893
forwards map[string]net.Listener
8994
sync.Mutex
9095
}
9196

92-
func (h forwardedTCPHandler) HandleSSHRequest(ctx Context, srv *Server, req *gossh.Request) (bool, []byte) {
97+
func (h ForwardedTCPHandler) HandleSSHRequest(ctx Context, srv *Server, req *gossh.Request) (bool, []byte) {
9398
h.Lock()
9499
if h.forwards == nil {
95100
h.forwards = make(map[string]net.Listener)

0 commit comments

Comments
 (0)