Prechádzať zdrojové kódy

enhance: error handling

0xJacky 1 rok pred
rodič
commit
21a6acb95b
5 zmenil súbory, kde vykonal 17 pridanie a 19 odobranie
  1. 2 1
      go.mod
  2. 4 0
      go.sum
  3. 1 2
      server/api/pty.go
  4. 5 13
      server/internal/pty/pipeline.go
  5. 5 3
      server/server.go

+ 2 - 1
go.mod

@@ -175,7 +175,8 @@ require (
 	golang.org/x/mod v0.10.0 // indirect
 	golang.org/x/net v0.10.0 // indirect
 	golang.org/x/oauth2 v0.8.0 // indirect
-	golang.org/x/sys v0.8.0 // indirect
+	golang.org/x/sys v0.11.0 // indirect
+	golang.org/x/term v0.11.0 // indirect
 	golang.org/x/text v0.9.0 // indirect
 	golang.org/x/time v0.3.0 // indirect
 	golang.org/x/tools v0.9.1 // indirect

+ 4 - 0
go.sum

@@ -911,6 +911,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
 golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -920,6 +922,8 @@ golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
 golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
 golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
+golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0=
+golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=

+ 1 - 2
server/api/pty.go

@@ -38,8 +38,7 @@ func Pty(c *gin.Context) {
 
 	err = <-errorChan
 
-	if err != nil && websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseNoStatusReceived,
-		websocket.CloseNormalClosure) {
+	if err != nil {
 		logger.Error(err)
 	}
 

+ 5 - 13
server/internal/pty/pipeline.go

@@ -43,13 +43,9 @@ func NewPipeLine(conn *websocket.Conn) (p *Pipeline, err error) {
 func (p *Pipeline) ReadWsAndWritePty(errorChan chan error) {
 	for {
 		msgType, payload, err := p.ws.ReadMessage()
-		if err != nil {
-			if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseNoStatusReceived,
-				websocket.CloseNormalClosure) {
-				errorChan <- errors.Wrap(err, "Error ReadWsAndWritePty unexpected close")
-				return
-			}
-			errorChan <- err
+		if err != nil && websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseNoStatusReceived,
+			websocket.CloseNormalClosure) {
+			errorChan <- errors.Wrap(err, "Error ReadWsAndWritePty unexpected close")
 			return
 		}
 		if msgType != websocket.TextMessage {
@@ -118,12 +114,8 @@ func (p *Pipeline) ReadPtyAndWriteWs(errorChan chan error) {
 		}
 		processedOutput := validString(string(buf[:n]))
 		err = p.ws.WriteMessage(websocket.TextMessage, []byte(processedOutput))
-		if err != nil {
-			if websocket.IsUnexpectedCloseError(err, websocket.CloseNormalClosure) {
-				errorChan <- errors.Wrap(err, "Error ReadPtyAndWriteWs websocket write")
-				return
-			}
-			errorChan <- err
+		if err != nil && websocket.IsUnexpectedCloseError(err, websocket.CloseNormalClosure) {
+			errorChan <- errors.Wrap(err, "Error ReadPtyAndWriteWs websocket write")
 			return
 		}
 	}

+ 5 - 3
server/server.go

@@ -21,9 +21,11 @@ func Program(state overseer.State) {
 
 	boot.Kernel()
 
-	err := http.Serve(state.Listener, router.InitRouter())
-	if err != nil {
-		logger.Error(err)
+	if state.Listener != nil {
+		err := http.Serve(state.Listener, router.InitRouter())
+		if err != nil {
+			logger.Error(err)
+		}
 	}
 
 	logger.Info("Server exiting")