Skip to content

Commit f81348a

Browse files
committed
util/syspolicy/source: put EnvPolicyStore env keys in their own namespace
... all prefixed with TS_DEBUGSYSPOLICY_*. Updates tailscale#13193 Updates tailscale#12687 Updates tailscale#13855 Change-Id: Ia8024946f53e2b3afda4456a7bb85bbcf6d12bfc Signed-off-by: Brad Fitzpatrick <[email protected]>
1 parent 540e4c8 commit f81348a

File tree

2 files changed

+46
-41
lines changed

2 files changed

+46
-41
lines changed

util/syspolicy/source/env_policy_store.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func keyToEnvVarName(key setting.Key) (string, error) {
114114
isDigit := func(c byte) bool { return '0' <= c && c <= '9' }
115115

116116
words := make([]string, 0, 8)
117-
words = append(words, "TS")
117+
words = append(words, "TS_DEBUGSYSPOLICY")
118118
var currentWord strings.Builder
119119
for i := 0; i < len(key); i++ {
120120
c := key[i]

util/syspolicy/source/env_policy_store_test.go

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ import (
1414
"tailscale.com/util/syspolicy/setting"
1515
)
1616

17-
func TestKeyToVariableName(t *testing.T) {
17+
func TestKeyToEnvVarName(t *testing.T) {
1818
tests := []struct {
1919
name string
2020
key setting.Key
21-
want string
21+
want string // suffix after "TS_DEBUGSYSPOLICY_"
2222
wantErr error
2323
}{
2424
{
@@ -29,87 +29,87 @@ func TestKeyToVariableName(t *testing.T) {
2929
{
3030
name: "lowercase",
3131
key: "tailnet",
32-
want: "TS_TAILNET",
32+
want: "TAILNET",
3333
},
3434
{
3535
name: "CamelCase",
3636
key: "AuthKey",
37-
want: "TS_AUTH_KEY",
37+
want: "AUTH_KEY",
3838
},
3939
{
4040
name: "LongerCamelCase",
4141
key: "ManagedByOrganizationName",
42-
want: "TS_MANAGED_BY_ORGANIZATION_NAME",
42+
want: "MANAGED_BY_ORGANIZATION_NAME",
4343
},
4444
{
4545
name: "UPPERCASE",
4646
key: "UPPERCASE",
47-
want: "TS_UPPERCASE",
47+
want: "UPPERCASE",
4848
},
4949
{
5050
name: "WithAbbrev/Front",
5151
key: "DNSServer",
52-
want: "TS_DNS_SERVER",
52+
want: "DNS_SERVER",
5353
},
5454
{
5555
name: "WithAbbrev/Middle",
5656
key: "ExitNodeAllowLANAccess",
57-
want: "TS_EXIT_NODE_ALLOW_LAN_ACCESS",
57+
want: "EXIT_NODE_ALLOW_LAN_ACCESS",
5858
},
5959
{
6060
name: "WithAbbrev/Back",
6161
key: "ExitNodeID",
62-
want: "TS_EXIT_NODE_ID",
62+
want: "EXIT_NODE_ID",
6363
},
6464
{
6565
name: "WithDigits/Single/Front",
6666
key: "0TestKey",
67-
want: "TS_0_TEST_KEY",
67+
want: "0_TEST_KEY",
6868
},
6969
{
7070
name: "WithDigits/Multi/Front",
7171
key: "64TestKey",
72-
want: "TS_64_TEST_KEY",
72+
want: "64_TEST_KEY",
7373
},
7474
{
7575
name: "WithDigits/Single/Middle",
7676
key: "Test0Key",
77-
want: "TS_TEST_0_KEY",
77+
want: "TEST_0_KEY",
7878
},
7979
{
8080
name: "WithDigits/Multi/Middle",
8181
key: "Test64Key",
82-
want: "TS_TEST_64_KEY",
82+
want: "TEST_64_KEY",
8383
},
8484
{
8585
name: "WithDigits/Single/Back",
8686
key: "TestKey0",
87-
want: "TS_TEST_KEY_0",
87+
want: "TEST_KEY_0",
8888
},
8989
{
9090
name: "WithDigits/Multi/Back",
9191
key: "TestKey64",
92-
want: "TS_TEST_KEY_64",
92+
want: "TEST_KEY_64",
9393
},
9494
{
9595
name: "WithDigits/Multi/Back",
9696
key: "TestKey64",
97-
want: "TS_TEST_KEY_64",
97+
want: "TEST_KEY_64",
9898
},
9999
{
100100
name: "WithPathSeparators/Single",
101101
key: "Key/Subkey",
102-
want: "TS_KEY_SUBKEY",
102+
want: "KEY_SUBKEY",
103103
},
104104
{
105105
name: "WithPathSeparators/Multi",
106106
key: "Root/Level1/Level2",
107-
want: "TS_ROOT_LEVEL_1_LEVEL_2",
107+
want: "ROOT_LEVEL_1_LEVEL_2",
108108
},
109109
{
110110
name: "Mixed",
111111
key: "Network/DNSServer/IPAddress",
112-
want: "TS_NETWORK_DNS_SERVER_IP_ADDRESS",
112+
want: "NETWORK_DNS_SERVER_IP_ADDRESS",
113113
},
114114
{
115115
name: "Non-Alphanumeric/NonASCII/1",
@@ -142,8 +142,12 @@ func TestKeyToVariableName(t *testing.T) {
142142
got, err := keyToEnvVarName(tt.key)
143143
checkError(t, err, tt.wantErr, true)
144144

145-
if got != tt.want {
146-
t.Fatalf("got %q; want %q", got, tt.want)
145+
want := tt.want
146+
if want != "" {
147+
want = "TS_DEBUGSYSPOLICY_" + want
148+
}
149+
if got != want {
150+
t.Fatalf("got %q; want %q", got, want)
147151
}
148152
})
149153
}
@@ -152,6 +156,7 @@ func TestKeyToVariableName(t *testing.T) {
152156
func TestEnvPolicyStore(t *testing.T) {
153157
blankEnv := func(string) (string, bool) { return "", false }
154158
makeEnv := func(wantName, value string) func(string) (string, bool) {
159+
wantName = "TS_DEBUGSYSPOLICY_" + wantName
155160
return func(gotName string) (string, bool) {
156161
if gotName != wantName {
157162
return "", false
@@ -176,13 +181,13 @@ func TestEnvPolicyStore(t *testing.T) {
176181
{
177182
name: "Configured/String/Empty",
178183
key: "AuthKey",
179-
lookup: makeEnv("TS_AUTH_KEY", ""),
184+
lookup: makeEnv("AUTH_KEY", ""),
180185
want: "",
181186
},
182187
{
183188
name: "Configured/String/NonEmpty",
184189
key: "AuthKey",
185-
lookup: makeEnv("TS_AUTH_KEY", "ABC123"),
190+
lookup: makeEnv("AUTH_KEY", "ABC123"),
186191
want: "ABC123",
187192
},
188193
{
@@ -195,39 +200,39 @@ func TestEnvPolicyStore(t *testing.T) {
195200
{
196201
name: "Configured/UInt64/Empty",
197202
key: "IntegerSetting",
198-
lookup: makeEnv("TS_INTEGER_SETTING", ""),
203+
lookup: makeEnv("INTEGER_SETTING", ""),
199204
wantErr: setting.ErrNotConfigured,
200205
want: uint64(0),
201206
},
202207
{
203208
name: "Configured/UInt64/Zero",
204209
key: "IntegerSetting",
205-
lookup: makeEnv("TS_INTEGER_SETTING", "0"),
210+
lookup: makeEnv("INTEGER_SETTING", "0"),
206211
want: uint64(0),
207212
},
208213
{
209214
name: "Configured/UInt64/NonZero",
210215
key: "IntegerSetting",
211-
lookup: makeEnv("TS_INTEGER_SETTING", "12345"),
216+
lookup: makeEnv("INTEGER_SETTING", "12345"),
212217
want: uint64(12345),
213218
},
214219
{
215220
name: "Configured/UInt64/MaxUInt64",
216221
key: "IntegerSetting",
217-
lookup: makeEnv("TS_INTEGER_SETTING", strconv.FormatUint(math.MaxUint64, 10)),
222+
lookup: makeEnv("INTEGER_SETTING", strconv.FormatUint(math.MaxUint64, 10)),
218223
want: uint64(math.MaxUint64),
219224
},
220225
{
221226
name: "Configured/UInt64/Negative",
222227
key: "IntegerSetting",
223-
lookup: makeEnv("TS_INTEGER_SETTING", "-1"),
228+
lookup: makeEnv("INTEGER_SETTING", "-1"),
224229
wantErr: setting.ErrTypeMismatch,
225230
want: uint64(0),
226231
},
227232
{
228233
name: "Configured/UInt64/Hex",
229234
key: "IntegerSetting",
230-
lookup: makeEnv("TS_INTEGER_SETTING", "0xDEADBEEF"),
235+
lookup: makeEnv("INTEGER_SETTING", "0xDEADBEEF"),
231236
want: uint64(0xDEADBEEF),
232237
},
233238
{
@@ -240,38 +245,38 @@ func TestEnvPolicyStore(t *testing.T) {
240245
{
241246
name: "Configured/Bool/Empty",
242247
key: "LogSCMInteractions",
243-
lookup: makeEnv("TS_LOG_SCM_INTERACTIONS", ""),
248+
lookup: makeEnv("LOG_SCM_INTERACTIONS", ""),
244249
wantErr: setting.ErrNotConfigured,
245250
want: false,
246251
},
247252
{
248253
name: "Configured/Bool/True",
249254
key: "LogSCMInteractions",
250-
lookup: makeEnv("TS_LOG_SCM_INTERACTIONS", "true"),
255+
lookup: makeEnv("LOG_SCM_INTERACTIONS", "true"),
251256
want: true,
252257
},
253258
{
254259
name: "Configured/Bool/False",
255260
key: "LogSCMInteractions",
256-
lookup: makeEnv("TS_LOG_SCM_INTERACTIONS", "False"),
261+
lookup: makeEnv("LOG_SCM_INTERACTIONS", "False"),
257262
want: false,
258263
},
259264
{
260265
name: "Configured/Bool/1",
261266
key: "LogSCMInteractions",
262-
lookup: makeEnv("TS_LOG_SCM_INTERACTIONS", "1"),
267+
lookup: makeEnv("LOG_SCM_INTERACTIONS", "1"),
263268
want: true,
264269
},
265270
{
266271
name: "Configured/Bool/0",
267272
key: "LogSCMInteractions",
268-
lookup: makeEnv("TS_LOG_SCM_INTERACTIONS", "0"),
273+
lookup: makeEnv("LOG_SCM_INTERACTIONS", "0"),
269274
want: false,
270275
},
271276
{
272277
name: "Configured/Bool/Invalid",
273278
key: "IntegerSetting",
274-
lookup: makeEnv("TS_INTEGER_SETTING", "NotABool"),
279+
lookup: makeEnv("INTEGER_SETTING", "NotABool"),
275280
wantErr: setting.ErrTypeMismatch,
276281
want: false,
277282
},
@@ -285,31 +290,31 @@ func TestEnvPolicyStore(t *testing.T) {
285290
{
286291
name: "Configured/StringArray/Empty",
287292
key: "AllowedSuggestedExitNodes",
288-
lookup: makeEnv("TS_ALLOWED_SUGGESTED_EXIT_NODES", ""),
293+
lookup: makeEnv("ALLOWED_SUGGESTED_EXIT_NODES", ""),
289294
want: []string(nil),
290295
},
291296
{
292297
name: "Configured/StringArray/Spaces",
293298
key: "AllowedSuggestedExitNodes",
294-
lookup: makeEnv("TS_ALLOWED_SUGGESTED_EXIT_NODES", " \t "),
299+
lookup: makeEnv("ALLOWED_SUGGESTED_EXIT_NODES", " \t "),
295300
want: []string{},
296301
},
297302
{
298303
name: "Configured/StringArray/Single",
299304
key: "AllowedSuggestedExitNodes",
300-
lookup: makeEnv("TS_ALLOWED_SUGGESTED_EXIT_NODES", "NodeA"),
305+
lookup: makeEnv("ALLOWED_SUGGESTED_EXIT_NODES", "NodeA"),
301306
want: []string{"NodeA"},
302307
},
303308
{
304309
name: "Configured/StringArray/Multi",
305310
key: "AllowedSuggestedExitNodes",
306-
lookup: makeEnv("TS_ALLOWED_SUGGESTED_EXIT_NODES", "NodeA,NodeB,NodeC"),
311+
lookup: makeEnv("ALLOWED_SUGGESTED_EXIT_NODES", "NodeA,NodeB,NodeC"),
307312
want: []string{"NodeA", "NodeB", "NodeC"},
308313
},
309314
{
310315
name: "Configured/StringArray/WithBlank",
311316
key: "AllowedSuggestedExitNodes",
312-
lookup: makeEnv("TS_ALLOWED_SUGGESTED_EXIT_NODES", "NodeA,\t,, ,NodeB"),
317+
lookup: makeEnv("ALLOWED_SUGGESTED_EXIT_NODES", "NodeA,\t,, ,NodeB"),
313318
want: []string{"NodeA", "NodeB"},
314319
},
315320
}

0 commit comments

Comments
 (0)