Skip to content

Commit fb99a9f

Browse files
iQQBotroboquat
authored andcommitted
[ide] add user-agent header to ws connection to server
1 parent f31b008 commit fb99a9f

File tree

5 files changed

+23
-2
lines changed

5 files changed

+23
-2
lines changed

components/gitpod-protocol/go/gitpod-service.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ type ConnectToServerOpts struct {
218218
Log *logrus.Entry
219219
ReconnectionHandler func()
220220
CloseHandler func(error)
221+
ExtraHeaders map[string]string
221222
}
222223

223224
// ConnectToServer establishes a new websocket connection to the server
@@ -241,6 +242,9 @@ func ConnectToServer(endpoint string, opts ConnectToServerOpts) (*APIoverJSONRPC
241242

242243
reqHeader := http.Header{}
243244
reqHeader.Set("Origin", origin)
245+
for k, v := range opts.ExtraHeaders {
246+
reqHeader.Set(k, v)
247+
}
244248
if opts.Token != "" {
245249
reqHeader.Set("Authorization", "Bearer "+opts.Token)
246250
}

components/local-app/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,10 @@ func tryConnectToServer(gitpodUrl string, tkn string, reconnectionHandler func()
261261
Log: logrus.NewEntry(logrus.StandardLogger()),
262262
ReconnectionHandler: reconnectionHandler,
263263
CloseHandler: closeHandler,
264+
ExtraHeaders: map[string]string{
265+
"User-Agent": "gitpod/local-companion",
266+
"X-Client-Version": Version,
267+
},
264268
})
265269
if err != nil {
266270
return nil, err

components/server/src/websocket/websocket-connection-manager.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const EVENT_CLIENT_CONTEXT_CREATED = "EVENT_CLIENT_CONTEXT_CREATED";
3030
const EVENT_CLIENT_CONTEXT_CLOSED = "EVENT_CLIENT_CONTEXT_CLOSED";
3131

3232
/** TODO(gpl) Refine this list */
33-
export type WebsocketClientType = "browser" | "go-client" | "vs-code";
33+
export type WebsocketClientType = "browser" | "go-client" | "vs-code" | "supervisor" | "local-companion";
3434
namespace WebsocketClientType {
3535
export function getClientType(req: express.Request): WebsocketClientType | undefined {
3636
const userAgent = req.headers["user-agent"];
@@ -47,7 +47,13 @@ namespace WebsocketClientType {
4747
if (userAgent.startsWith("VS Code")) {
4848
return "vs-code";
4949
}
50-
log.debug("API client without 'User-Agent'", { headers: req.headers });
50+
if (userAgent.startsWith("gitpod/supervisor")) {
51+
return "supervisor";
52+
}
53+
if (userAgent.startsWith("gitpod/local-companion")) {
54+
return "local-companion";
55+
}
56+
log.debug("API client with unknown 'User-Agent'", userAgent);
5157
return undefined;
5258
}
5359
}

components/supervisor/cmd/run.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var runCmd = &cobra.Command{
1919
Run: func(cmd *cobra.Command, args []string) {
2020
log.Init(ServiceName, Version, true, false)
2121
common_grpc.SetupLogging()
22+
supervisor.Version = Version
2223
supervisor.Run()
2324
},
2425
}

components/supervisor/pkg/supervisor/supervisor.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ const (
6565
var (
6666
additionalServices []RegisterableService
6767
apiEndpointOpts []grpc.ServerOption
68+
Version = ""
6869
)
6970

7071
// RegisterAdditionalService registers additional services for the API endpoint
@@ -387,6 +388,11 @@ func createGitpodService(cfg *Config, tknsrv api.TokenServiceServer) *gitpod.API
387388
gitpodService, err := gitpod.ConnectToServer(endpoint, gitpod.ConnectToServerOpts{
388389
Token: tknres.Token,
389390
Log: log.Log,
391+
ExtraHeaders: map[string]string{
392+
"User-Agent": "gitpod/supervisor",
393+
"X-Workspace-Instance-Id": cfg.WorkspaceInstanceID,
394+
"X-Client-Version": Version,
395+
},
390396
})
391397
if err != nil {
392398
log.WithError(err).Error("cannot connect to Gitpod API")

0 commit comments

Comments
 (0)