Skip to content
This repository was archived by the owner on Sep 1, 2025. It is now read-only.

Commit 7d0ec01

Browse files
gorangalinecoktalz
authored andcommitted
MEDIUM: add missing global keywords
1 parent b6a0a98 commit 7d0ec01

File tree

6 files changed

+339
-0
lines changed

6 files changed

+339
-0
lines changed

parsers/unix-bind.go

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
/*
2+
Copyright 2019 HAProxy Technologies
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package parsers
18+
19+
import (
20+
"io"
21+
"strings"
22+
23+
"github.com/haproxytech/config-parser/v4/common"
24+
"github.com/haproxytech/config-parser/v4/errors"
25+
"github.com/haproxytech/config-parser/v4/types"
26+
)
27+
28+
type UnixBind struct {
29+
data *types.UnixBind
30+
preComments []string // comments that appear before the the actual line
31+
}
32+
33+
func (p *UnixBind) Parse(line string, parts []string, comment string) (changeState string, err error) {
34+
if len(parts) < 3 {
35+
return "", &errors.ParseError{Parser: "UnixBind", Line: line}
36+
}
37+
if parts[0] != "unix-bind" {
38+
return "", &errors.ParseError{Parser: "UnixBind", Line: line}
39+
}
40+
41+
data := &types.UnixBind{}
42+
43+
for i := 1; i < len(parts); i++ {
44+
element := parts[i]
45+
switch element {
46+
case "prefix":
47+
CheckParsePair(parts, &i, &data.Prefix)
48+
case "mode":
49+
CheckParsePair(parts, &i, &data.Mode)
50+
case "user":
51+
CheckParsePair(parts, &i, &data.User)
52+
case "uid":
53+
CheckParsePair(parts, &i, &data.UID)
54+
case "group":
55+
CheckParsePair(parts, &i, &data.Group)
56+
case "gid":
57+
CheckParsePair(parts, &i, &data.GID)
58+
}
59+
}
60+
p.data = data
61+
return "", nil
62+
}
63+
64+
func (p *UnixBind) Result() ([]common.ReturnResultLine, error) {
65+
if p.data == nil {
66+
return nil, errors.ErrFetch
67+
}
68+
69+
sb := &strings.Builder{}
70+
71+
sb.WriteString("unix-bind")
72+
73+
CheckWritePair(sb, "prefix", p.data.Prefix)
74+
CheckWritePair(sb, "mode", p.data.Mode)
75+
CheckWritePair(sb, "user", p.data.User)
76+
CheckWritePair(sb, "uid", p.data.UID)
77+
CheckWritePair(sb, "group", p.data.Group)
78+
CheckWritePair(sb, "gid", p.data.GID)
79+
80+
return []common.ReturnResultLine{
81+
{
82+
Data: sb.String(),
83+
Comment: p.data.Comment,
84+
},
85+
}, nil
86+
}
87+
88+
func CheckParsePair(parts []string, i *int, str *string) {
89+
if (*i + 1) < len(parts) {
90+
*str = parts[*i+1]
91+
*i++
92+
}
93+
}
94+
95+
func CheckWritePair(sb io.StringWriter, key string, value string) {
96+
if value != "" {
97+
_, _ = sb.WriteString(" ")
98+
if key != "" {
99+
_, _ = sb.WriteString(key)
100+
_, _ = sb.WriteString(" ")
101+
}
102+
_, _ = sb.WriteString(value)
103+
}
104+
}

parsers/unix-bind_generated.go

Lines changed: 99 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

section-parsers.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,12 @@ func (p *configParser) getGlobalParser() *Parsers {
249249
addParser(parser, &sequence, &simple.String{Name: "ssl-default-server-options"})
250250
addParser(parser, &sequence, &simple.Word{Name: "ssl-default-server-ciphers"})
251251
addParser(parser, &sequence, &simple.Word{Name: "ssl-default-server-ciphersuites"})
252+
addParser(parser, &sequence, &simple.Word{Name: "ssl-default-bind-curves"})
253+
// ssl-default-bind-options TODO
252254
addParser(parser, &sequence, &simple.Word{Name: "ssl-dh-param-file"})
253255
addParser(parser, &sequence, &simple.Enabled{Name: "ssl-load-extra-del-ext"})
254256
addParser(parser, &sequence, &simple.Word{Name: "ssl-server-verify"})
257+
addParser(parser, &sequence, &simple.Enabled{Name: "ssl-skip-self-issued-ca"})
255258
addParser(parser, &sequence, &simple.Time{Name: "hard-stop-after"})
256259
addParser(parser, &sequence, &parsers.Log{})
257260
addParser(parser, &sequence, &parsers.LogSendHostName{})
@@ -274,6 +277,29 @@ func (p *configParser) getGlobalParser() *Parsers {
274277
addParser(parser, &sequence, &simple.Enabled{Name: "noreuseport"})
275278
addParser(parser, &sequence, &simple.AutoOnOff{Name: "profiling.tasks"})
276279
addParser(parser, &sequence, &simple.Number{Name: "spread-checks"})
280+
addParser(parser, &sequence, &simple.String{Name: "wurfl-data-file"})
281+
addParser(parser, &sequence, &simple.String{Name: "wurfl-information-list"})
282+
addParser(parser, &sequence, &simple.String{Name: "wurfl-information-list-separator"})
283+
addParser(parser, &sequence, &simple.String{Name: "wurfl-patch-file"})
284+
addParser(parser, &sequence, &simple.Number{Name: "wurfl-cache-size"})
285+
addParser(parser, &sequence, &simple.String{Name: "default-path"})
286+
addParser(parser, &sequence, &simple.String{Name: "description"})
287+
addParser(parser, &sequence, &simple.Enabled{Name: "expose-experimental-directives"})
288+
addParser(parser, &sequence, &simple.String{Name: "grace"})
289+
addParser(parser, &sequence, &simple.Enabled{Name: "insecure-fork-wanted"})
290+
addParser(parser, &sequence, &simple.Enabled{Name: "insecure-setuid-wanted"})
291+
addParser(parser, &sequence, &simple.String{Name: "issuers-chain-path"})
292+
addParser(parser, &sequence, &simple.Enabled{Name: "h2-workaround-bogus-websocket-clients"})
293+
addParser(parser, &sequence, &simple.String{Name: "lua-load-per-thread"})
294+
addParser(parser, &sequence, &simple.Number{Name: "mworker-max-reloads"})
295+
addParser(parser, &sequence, &simple.String{Name: "node"})
296+
addParser(parser, &sequence, &simple.Enabled{Name: "numa-cpu-mapping"})
297+
addParser(parser, &sequence, &simple.Enabled{Name: "pp2-never-send-local"})
298+
addParser(parser, &sequence, &simple.Number{Name: "ulimit-n"})
299+
addParser(parser, &sequence, &simple.Enabled{Name: "set-dumpable"})
300+
addParser(parser, &sequence, &simple.Enabled{Name: "strict-limits"})
301+
addParser(parser, &sequence, &parsers.UnixBind{})
302+
// set-var TODO
277303
// the ConfigSnippet must be at the end to parsers load order to ensure
278304
// the overloading of any option has been declared previously
279305
addParser(parser, &sequence, &parsers.ConfigSnippet{})

tests/configs/haproxy_generated.cfg.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/unix-bind_generated_test.go

Lines changed: 87 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

types/types.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,3 +1116,23 @@ type ForcePersist struct {
11161116
CondTest string
11171117
Comment string
11181118
}
1119+
1120+
//sections:global
1121+
//name:unix-bind
1122+
//is-multiple:false
1123+
//test:ok:unix-bind prefix pre
1124+
//test:ok:unix-bind prefix pre mode test
1125+
//test:ok:unix-bind prefix pre mode test user ggalinec
1126+
//test:ok:unix-bind prefix pre mode test user ggalinec uid 12345
1127+
//test:ok:unix-bind prefix pre mode test user ggalinec uid 12345 group haproxy
1128+
//test:ok:unix-bind prefix pre mode test user ggalinec uid 12345 group haproxy gid 6789
1129+
//test:fail:unix-bind
1130+
type UnixBind struct {
1131+
Prefix string
1132+
Mode string
1133+
User string
1134+
UID string
1135+
Group string
1136+
GID string
1137+
Comment string
1138+
}

0 commit comments

Comments
 (0)