diff --git a/backend/localcommand/factory.go b/backend/localcommand/factory.go index 4b43e96..8c15ea3 100644 --- a/backend/localcommand/factory.go +++ b/backend/localcommand/factory.go @@ -5,6 +5,7 @@ import ( "time" "github.com/ghthor/gotty/v2/server" + "github.com/gorilla/websocket" ) type Options struct { @@ -37,7 +38,7 @@ func (factory *Factory) Name() string { return "local command" } -func (factory *Factory) New(params map[string][]string) (server.Slave, error) { +func (factory *Factory) New(params map[string][]string, conn *websocket.Conn) (server.Slave, error) { argv := make([]string, len(factory.argv)) copy(argv, factory.argv) if params["arg"] != nil && len(params["arg"]) > 0 { diff --git a/server/handlers.go b/server/handlers.go index 0a8e6ca..cd964c9 100644 --- a/server/handlers.go +++ b/server/handlers.go @@ -115,8 +115,9 @@ func (server *Server) processWSConn(ctx context.Context, conn *websocket.Conn) e return errors.Wrapf(err, "failed to parse arguments") } params := query.Query() + var slave Slave - slave, err = server.factory.New(params) + slave, err = server.factory.New(params, conn) if err != nil { return errors.Wrapf(err, "failed to create backend") } diff --git a/server/slave.go b/server/slave.go index 424c241..def2cda 100644 --- a/server/slave.go +++ b/server/slave.go @@ -2,6 +2,8 @@ package server import ( "github.com/ghthor/gotty/v2/webtty" + + "github.com/gorilla/websocket" ) // Slave is webtty.Slave with some additional methods. @@ -13,5 +15,5 @@ type Slave interface { type Factory interface { Name() string - New(params map[string][]string) (Slave, error) + New(params map[string][]string, conn *websocket.Conn) (Slave, error) }