Skip to content

Commit 9808860

Browse files
committed
feat: add support for 'always' value in ssh check period
1 parent 2bc03b8 commit 9808860

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

internal/domain/acl_ssh_policy.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,9 @@ func (a ACLPolicy) BuildSSHPolicy(srcs []Machine, dst *Machine) *tailcfg.SSHPoli
3939
AllowLocalPortForwarding: true,
4040
}
4141

42-
if rule.Action == "check" && rule.CheckPeriod == "" {
42+
if rule.Action == "check" {
4343
action = &tailcfg.SSHAction{
44-
HoldAndDelegate: "https://unused/machine/ssh/action/$SRC_NODE_ID/to/$DST_NODE_ID",
45-
}
46-
}
47-
48-
if rule.Action == "check" && rule.CheckPeriod != "" {
49-
action = &tailcfg.SSHAction{
50-
HoldAndDelegate: "https://unused/machine/ssh/action/$SRC_NODE_ID/to/$DST_NODE_ID/" + rule.CheckPeriod,
44+
HoldAndDelegate: "https://unused/machine/ssh/action/$SRC_NODE_ID/to/$DST_NODE_ID/" + safeCheckPeriod(rule.CheckPeriod),
5145
}
5246
}
5347

@@ -157,3 +151,10 @@ func buildSSHUsers(users []string) map[string]string {
157151

158152
return m
159153
}
154+
155+
func safeCheckPeriod(period string) string {
156+
if period == "" {
157+
return "always"
158+
}
159+
return period
160+
}

internal/handlers/ssh_action.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,11 @@ func (h *SSHActionHandlers) StartAuth(c echo.Context) error {
4545
return logError(err)
4646
}
4747

48-
if data.CheckPeriod != "" {
48+
if data.CheckPeriod != "" && data.CheckPeriod != "always" {
4949
checkPeriod, err := time.ParseDuration(data.CheckPeriod)
5050
if err != nil {
51-
return logError(err)
51+
_ = logError(err)
52+
goto check
5253
}
5354

5455
machine, err := h.repository.GetMachine(ctx, data.SrcMachineID)
@@ -71,6 +72,7 @@ func (h *SSHActionHandlers) StartAuth(c echo.Context) error {
7172
}
7273
}
7374

75+
check:
7476
key := util.RandStringBytes(8)
7577
request := &domain.SSHActionRequest{
7678
Key: key,

0 commit comments

Comments
 (0)