Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6b9b1be

Browse files
committed
seperate type for web port forwarding
1 parent154bec5 commit6b9b1be

File tree

7 files changed

+54
-41
lines changed

7 files changed

+54
-41
lines changed

‎coderd/database/dump.sql

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/migrations/000336_connection_logs.up.sqlrenamed to‎coderd/database/migrations/000341_connection_logs.up.sql

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ CREATE TYPE connection_status AS ENUM (
44
);
55

66
CREATETYPEconnection_typeAS ENUM (
7-
-- SSHactions
7+
-- SSHevents
88
'ssh',
99
'vscode',
1010
'jetbrains',
1111
'reconnecting_pty',
12-
-- Workspace Apps or Web Port Forwarding
13-
'web'
12+
-- Web events
13+
'workspace_app',
14+
'port_forwarding'
1415
);
1516

1617
CREATETABLEconnection_logs (
@@ -25,12 +26,12 @@ CREATE TABLE connection_logs (
2526
codeinteger,
2627
ipinet,
2728

28-
-- Only set for'web' logs.
29+
-- Only set for web events
2930
user_agenttext,
3031
user_id uuid,
3132
slug_or_porttext,
3233

33-
-- Null for'web' logs.
34+
-- Null for web events
3435
connection_id uuid,
3536
close_timetimestamp with time zone,-- Null until we upsert a disconnect log for the same connection_id.
3637
close_reasontext,
@@ -41,11 +42,11 @@ CREATE TABLE connection_logs (
4142

4243
COMMENT ON COLUMN connection_logs.code IS'Either the HTTP status code of the web request, or the exit code of an SSH connection. For non-web connections, this is Null until we receive a disconnect event for the same connection_id.';
4344

44-
COMMENT ON COLUMN connection_logs.user_agent IS'Null for SSHactions. For web connections, this is the User-Agent header from the request.';
45+
COMMENT ON COLUMN connection_logs.user_agent IS'Null for SSHevents. For web connections, this is the User-Agent header from the request.';
4546

46-
COMMENT ON COLUMN connection_logs.user_id IS'uuid.Nil for SSHactions. For web connections, this is the ID of the user that made the request.';
47+
COMMENT ON COLUMN connection_logs.user_id IS'uuid.Nil for SSHevents. For web connections, this is the ID of the user that made the request.';
4748

48-
COMMENT ON COLUMN connection_logs.slug_or_port IS'Null for SSHactions. For web connections, this is the slug of the app or the port number being forwarded.';
49+
COMMENT ON COLUMN connection_logs.slug_or_port IS'Null for SSHevents. For web connections, this is the slug of the app or the port number being forwarded.';
4950

5051
COMMENT ON COLUMN connection_logs.connection_id IS'The SSH connection ID. Used to correlate connections and disconnections. As it originates from the agent, it is not guaranteed to be unique.';
5152

‎coderd/database/migrations/testdata/fixtures/000336_connection_logs.up.sqlrenamed to‎coderd/database/migrations/testdata/fixtures/000341_connection_logs.up.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ INSERT INTO connection_logs (
4141
'3a9a1feb-e89d-457c-9d53-ac751b198ebe',-- workspace id
4242
'Test Workspace',-- workspace name
4343
'test-agent',-- agent name
44-
'web',-- type
44+
'workspace_app',-- type
4545
200,-- code
4646
'127.0.0.1',
4747
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36',

‎coderd/database/models.go

Lines changed: 9 additions & 6 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/workspaceapps/db.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -418,12 +418,19 @@ func (p *DBTokenProvider) connLogInitRequest(ctx context.Context, w http.Respons
418418
statusCode=http.StatusOK
419419
}
420420

421-
varslugOrPortstring
421+
var (
422+
connType database.ConnectionType
423+
slugOrPort=aReq.dbReq.AppSlugOrPort
424+
)
425+
422426
switch {
423427
caseaReq.dbReq.AccessMethod==AccessMethodTerminal:
428+
connType=database.ConnectionTypeWorkspaceApp
424429
slugOrPort="terminal"
430+
caseaReq.dbReq.App.ID==uuid.Nil:
431+
connType=database.ConnectionTypePortForwarding
425432
default:
426-
slugOrPort=aReq.dbReq.AppSlugOrPort
433+
connType=database.ConnectionTypeWorkspaceApp
427434
}
428435

429436
// If we end up logging, ensure relevant fields are set.
@@ -479,6 +486,7 @@ func (p *DBTokenProvider) connLogInitRequest(ctx context.Context, w http.Respons
479486
}
480487

481488
connLogger:=*p.ConnectionLogger.Load()
489+
482490
err=connLogger.Upsert(ctx, database.UpsertConnectionLogParams{
483491
ID:uuid.New(),
484492
Time:aReq.time,
@@ -487,7 +495,7 @@ func (p *DBTokenProvider) connLogInitRequest(ctx context.Context, w http.Respons
487495
WorkspaceID:aReq.dbReq.Workspace.ID,
488496
WorkspaceName:aReq.dbReq.Workspace.Name,
489497
AgentName:aReq.dbReq.Agent.Name,
490-
Type:database.ConnectionTypeWeb,
498+
Type:connType,
491499
Code: sql.NullInt32{
492500
Int32:statusCode,
493501
Valid:true,

‎coderd/workspaceapps/db_test.go

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ func Test_ResolveRequest(t *testing.T) {
318318
require.Equal(t,codersdk.SignedAppTokenCookie,cookie.Name)
319319
require.Equal(t,req.BasePath,cookie.Path)
320320

321-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,me.ID)
321+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,database.ConnectionTypeWorkspaceApp,me.ID)
322322
require.Len(t,connLogger.ConnectionLogs(),1)
323323

324324
varparsedToken workspaceapps.SignedToken
@@ -398,7 +398,7 @@ func Test_ResolveRequest(t *testing.T) {
398398
require.NotNil(t,token)
399399
require.Zero(t,w.StatusCode)
400400

401-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,secondUser.ID)
401+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,database.ConnectionTypeWorkspaceApp,secondUser.ID)
402402
require.Len(t,connLogger.ConnectionLogs(),1)
403403
}
404404
})
@@ -438,7 +438,7 @@ func Test_ResolveRequest(t *testing.T) {
438438
require.NotZero(t,rw.Code)
439439
require.NotEqual(t,http.StatusOK,rw.Code)
440440

441-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,uuid.Nil)
441+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,database.ConnectionTypeWorkspaceApp,uuid.Nil)
442442
require.Len(t,connLogger.ConnectionLogs(),1)
443443
}else {
444444
if!assert.True(t,ok) {
@@ -452,7 +452,7 @@ func Test_ResolveRequest(t *testing.T) {
452452
t.Fatalf("expected 200 (or unset) response code, got %d",rw.Code)
453453
}
454454

455-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,uuid.Nil)
455+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,database.ConnectionTypeWorkspaceApp,uuid.Nil)
456456
require.Len(t,connLogger.ConnectionLogs(),1)
457457
}
458458
_=w.Body.Close()
@@ -577,7 +577,7 @@ func Test_ResolveRequest(t *testing.T) {
577577
require.Equal(t,token.AgentNameOrID,c.agent)
578578
require.Equal(t,token.WorkspaceID,workspace.ID)
579579
require.Equal(t,token.AgentID,agentID)
580-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,token.AppSlugOrPort,me.ID)
580+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,token.AppSlugOrPort,database.ConnectionTypeWorkspaceApp,me.ID)
581581
require.Len(t,connLogger.ConnectionLogs(),1)
582582
}else {
583583
require.Nil(t,token)
@@ -662,7 +662,7 @@ func Test_ResolveRequest(t *testing.T) {
662662
require.NoError(t,err)
663663
require.Equal(t,appNameOwner,parsedToken.AppSlugOrPort)
664664

665-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,appNameOwner,me.ID)
665+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,appNameOwner,database.ConnectionTypeWorkspaceApp,me.ID)
666666
require.Len(t,connLogger.ConnectionLogs(),1)
667667
})
668668

@@ -735,7 +735,7 @@ func Test_ResolveRequest(t *testing.T) {
735735
require.True(t,ok)
736736
require.Equal(t,req.AppSlugOrPort,token.AppSlugOrPort)
737737
require.Equal(t,"http://127.0.0.1:9090",token.AppURL)
738-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,"9090",me.ID)
738+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,"9090",database.ConnectionTypePortForwarding,me.ID)
739739
require.Len(t,connLogger.ConnectionLogs(),1)
740740
})
741741

@@ -808,7 +808,7 @@ func Test_ResolveRequest(t *testing.T) {
808808
})
809809
require.True(t,ok)
810810
require.Equal(t,req.AppSlugOrPort,token.AppSlugOrPort)
811-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,appNameEndsInS,me.ID)
811+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,appNameEndsInS,database.ConnectionTypeWorkspaceApp,me.ID)
812812
require.Len(t,connLogger.ConnectionLogs(),1)
813813
})
814814

@@ -845,7 +845,7 @@ func Test_ResolveRequest(t *testing.T) {
845845
require.Equal(t,req.AgentNameOrID,token.Request.AgentNameOrID)
846846
require.Empty(t,token.AppSlugOrPort)
847847
require.Empty(t,token.AppURL)
848-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,"terminal",me.ID)
848+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,"terminal",database.ConnectionTypeWorkspaceApp,me.ID)
849849
require.Len(t,connLogger.ConnectionLogs(),1)
850850
})
851851

@@ -879,7 +879,7 @@ func Test_ResolveRequest(t *testing.T) {
879879
})
880880
require.False(t,ok)
881881
require.Nil(t,token)
882-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,appNameOwner,secondUser.ID)
882+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,appNameOwner,database.ConnectionTypeWorkspaceApp,secondUser.ID)
883883
require.Len(t,connLogger.ConnectionLogs(),1)
884884
})
885885

@@ -953,7 +953,7 @@ func Test_ResolveRequest(t *testing.T) {
953953
require.Equal(t,http.StatusSeeOther,w.StatusCode)
954954
// Note that we don't capture the owner UUID here because the apiKey
955955
// check/authorization exits early.
956-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,appNameOwner,uuid.Nil)
956+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,appNameOwner,database.ConnectionTypeWorkspaceApp,uuid.Nil)
957957
require.Len(t,connLogger.ConnectionLogs(),1)
958958

959959
loc,err:=w.Location()
@@ -1015,7 +1015,7 @@ func Test_ResolveRequest(t *testing.T) {
10151015
w:=rw.Result()
10161016
deferw.Body.Close()
10171017
require.Equal(t,http.StatusBadGateway,w.StatusCode)
1018-
assertConnLogContains(t,rw,r,connLogger,workspace,agentNameUnhealthy,appNameAgentUnhealthy,me.ID)
1018+
assertConnLogContains(t,rw,r,connLogger,workspace,agentNameUnhealthy,appNameAgentUnhealthy,database.ConnectionTypeWorkspaceApp,me.ID)
10191019
require.Len(t,connLogger.ConnectionLogs(),1)
10201020

10211021
body,err:=io.ReadAll(w.Body)
@@ -1074,7 +1074,7 @@ func Test_ResolveRequest(t *testing.T) {
10741074
})
10751075
require.True(t,ok,"ResolveRequest failed, should pass even though app is initializing")
10761076
require.NotNil(t,token)
1077-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,token.AppSlugOrPort,me.ID)
1077+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,token.AppSlugOrPort,database.ConnectionTypeWorkspaceApp,me.ID)
10781078
require.Len(t,connLogger.ConnectionLogs(),1)
10791079
})
10801080

@@ -1132,7 +1132,7 @@ func Test_ResolveRequest(t *testing.T) {
11321132
})
11331133
require.True(t,ok,"ResolveRequest failed, should pass even though app is unhealthy")
11341134
require.NotNil(t,token)
1135-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,token.AppSlugOrPort,me.ID)
1135+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,token.AppSlugOrPort,database.ConnectionTypeWorkspaceApp,me.ID)
11361136
require.Len(t,connLogger.ConnectionLogs(),1)
11371137
})
11381138

@@ -1169,7 +1169,7 @@ func Test_ResolveRequest(t *testing.T) {
11691169
AppRequest:req,
11701170
})
11711171
require.True(t,ok)
1172-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,me.ID)
1172+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,database.ConnectionTypeWorkspaceApp,me.ID)
11731173
require.Len(t,connLogger.ConnectionLogs(),1)
11741174

11751175
// Second request, no audit log because the session is active.
@@ -1205,7 +1205,7 @@ func Test_ResolveRequest(t *testing.T) {
12051205
AppRequest:req,
12061206
})
12071207
require.True(t,ok)
1208-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,me.ID)
1208+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,database.ConnectionTypeWorkspaceApp,me.ID)
12091209
require.Len(t,connLogger.ConnectionLogs(),2,"two connection logs, session timed out")
12101210

12111211
// Fourth request, new IP produces new audit log.
@@ -1224,7 +1224,7 @@ func Test_ResolveRequest(t *testing.T) {
12241224
AppRequest:req,
12251225
})
12261226
require.True(t,ok)
1227-
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,me.ID)
1227+
assertConnLogContains(t,rw,r,connLogger,workspace,agentName,app,database.ConnectionTypeWorkspaceApp,me.ID)
12281228
require.Len(t,connLogger.ConnectionLogs(),3,"three connection logs, new IP")
12291229
}
12301230
})
@@ -1257,7 +1257,7 @@ func signedTokenProviderWithConnLogger(t testing.TB, provider workspaceapps.Sign
12571257
return&shallowCopy
12581258
}
12591259

1260-
funcassertConnLogContains(t*testing.T,rr*httptest.ResponseRecorder,r*http.Request,connLogger*connectionlog.MockConnectionLogger,workspace codersdk.Workspace,agentNamestring,slugOrPortstring,userID uuid.UUID) {
1260+
funcassertConnLogContains(t*testing.T,rr*httptest.ResponseRecorder,r*http.Request,connLogger*connectionlog.MockConnectionLogger,workspace codersdk.Workspace,agentNamestring,slugOrPortstring,typ database.ConnectionType,userID uuid.UUID) {
12611261
t.Helper()
12621262

12631263
resp:=rr.Result()
@@ -1269,7 +1269,7 @@ func assertConnLogContains(t *testing.T, rr *httptest.ResponseRecorder, r *http.
12691269
WorkspaceID:workspace.ID,
12701270
WorkspaceName:workspace.Name,
12711271
AgentName:agentName,
1272-
Type:database.ConnectionTypeWeb,
1272+
Type:typ,
12731273
Ip:database.ParseIP(r.RemoteAddr),
12741274
UserAgent: sql.NullString{Valid:r.UserAgent()!="",String:r.UserAgent()},
12751275
Code: sql.NullInt32{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp