MCPcopy
hub / github.com/1Panel-dev/KubePi / processWSConn

Method processWSConn

thirdparty/gotty/server/handlers.go:100–188  ·  view source on GitHub ↗
(ctx context.Context, conn *websocket.Conn)

Source from the content-addressed store, hash-verified

98}
99
100func (server *Server) processWSConn(ctx context.Context, conn *websocket.Conn) error {
101 typ, initLine, err := conn.ReadMessage()
102 if err != nil {
103 return errors.Wrapf(err, "failed to authenticate websocket connection")
104 }
105 if typ != websocket.TextMessage {
106 return errors.New("failed to authenticate websocket connection: invalid message type")
107 }
108
109 var init InitMessage
110 err = json.Unmarshal(initLine, &init)
111 if err != nil {
112 return errors.Wrapf(err, "failed to authenticate websocket connection")
113 }
114 if init.AuthToken != server.options.Credential {
115 return errors.New("failed to authenticate websocket connection")
116 }
117
118 queryPath := "?"
119 if server.options.PermitArguments && init.Arguments != "" {
120 queryPath = init.Arguments
121 }
122
123 query, err := url.Parse(queryPath)
124 if err != nil {
125 return errors.Wrapf(err, "failed to parse arguments")
126 }
127 windowTitle := "Webkubectl"
128 params := query.Query()
129 params.Del("arg")
130 arg := params.Get("token")
131 params.Add("arg", arg)
132 log.Println("arg: " + arg)
133 var slave Slave
134 slave, err = server.factory.New(params)
135 if err != nil {
136 return errors.Wrapf(err, "failed to create backend")
137 }
138 defer slave.Close()
139
140 titleVars := server.titleVariables(
141 []string{"server", "master", "slave"},
142 map[string]map[string]interface{}{
143 "server": server.options.TitleVariables,
144 "master": {
145 "remote_addr": conn.RemoteAddr(),
146 },
147 "slave": slave.WindowTitleVariables(),
148 },
149 )
150
151 titleBuf := new(bytes.Buffer)
152
153 err = server.titleTemplate.Execute(titleBuf, titleVars)
154 if err != nil {
155 return errors.Wrapf(err, "failed to fill window title template")
156 }
157 if len(windowTitle) > 0 {

Callers 1

generateHandleWSMethod · 0.95

Calls 7

CloseMethod · 0.95
titleVariablesMethod · 0.95
WindowTitleVariablesMethod · 0.95
NewMethod · 0.65
GetMethod · 0.65
AddMethod · 0.65
RunMethod · 0.45

Tested by

no test coverage detected