File tree 6 files changed +139
-0
lines changed
6 files changed +139
-0
lines changed Original file line number Diff line number Diff line change
1
+ global
2
+ chroot /var/lib/haproxy
3
+ user haproxy
4
+ group haproxy
5
+ maxconn 4000
6
+ pidfile /var/run/haproxy.pid
7
+ stats socket /var/lib/haproxy/stats level admin
8
+ log 127.0.0.1 local2
9
+
10
+ defaults
11
+ mode http
12
+ maxconn 3000
13
+ log global
14
+ option httplog
15
+ option redispatch
16
+ option dontlognull
17
+ option http-server-close
18
+ option forwardfor except 127.0.0.0 /8
19
+ timeout http-request 10s
20
+ timeout check 10s
21
+ timeout connect 10s
22
+ timeout client 1m
23
+ timeout queue 1m
24
+ timeout server 1m
25
+ timeout http-keep-alive 10s
26
+ retries 3
27
+
28
+ backend test_backend
29
+ mode http
30
+ balance roundrobin
31
+ option forwardfor
32
+ server server_01 10.1.1.1:8080 check weight 80
33
+ server server_02 10.1.1.2:8080 check weight 80
34
+ server server_03 10.1.1.2:8080 check weight 80
Original file line number Diff line number Diff line change
1
+ " global\n chroot /var/lib/haproxy\n user haproxy\n group haproxy\n maxconn 4000\n pidfile /var/run/haproxy.pid\n stats socket /var/lib/haproxy/stats level admin\n log 127.0.0.1 local2\n\n defaults\n mode http\n maxconn 3000\n log global\n option httplog\n option redispatch\n option dontlognull\n option http-server-close\n option forwardfor except 127.0.0.0/8\n timeout http-request 10s\n timeout check 10s\n timeout connect 10s\n timeout client 1m\n timeout queue 1m\n timeout server 1m\n timeout http-keep-alive 10s\n retries 3\n\n backend test_backend\n mode http\n balance roundrobin\n option forwardfor\n server server_01 10.1.1.1:8080 check weight 80\n server server_02 10.1.1.2:8080 check weight 80\n server server_03 10.1.1.2:8080 check weight 80\n "
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bats
2
+ #
3
+ # Copyright 2023 HAProxy Technologies
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http:#www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ load ' ../../libs/dataplaneapi'
19
+ load " ../../libs/get_json_path"
20
+ load ' ../../libs/haproxy_config_setup'
21
+ load ' ../../libs/resource_client'
22
+
23
+ load ' utils/_helpers'
24
+
25
+ @test " raw: Download configuration" {
26
+ resource_get " $_RAW_BASE_PATH "
27
+ assert_equal " $SC " 200
28
+ test -n " $( get_json_path " $BODY " .data) " ||
29
+ fail " failed to download raw config. BODY: '$BODY '"
30
+ }
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bats
2
+ #
3
+ # Copyright 2023 HAProxy Technologies
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http:#www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ load ' ../../libs/dataplaneapi'
19
+ load ' ../../libs/debug'
20
+ load " ../../libs/get_json_path"
21
+ load ' ../../libs/haproxy_config_setup'
22
+ load ' ../../libs/resource_client'
23
+ load ' ../../libs/version'
24
+
25
+ load ' utils/_helpers'
26
+
27
+ @test " raw: Post new configuration" {
28
+ resource_post " $_RAW_BASE_PATH " ' data/haproxy.cfg.json'
29
+ assert_equal " $SC " 202
30
+ }
31
+
32
+ @test " raw: Post new configuration incorrectly (bug 1219)" {
33
+ resource_post_text " $_RAW_BASE_PATH " ' data/haproxy.cfg.json'
34
+ assert_equal " $SC " 400
35
+ assert_equal " $( get_json_path " $BODY " ' .message' ) " " invalid configuration: no newline character found"
36
+ }
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ #
3
+ # Copyright 2023 HAProxy Technologies
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http:#www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ _RAW_BASE_PATH=" /services/haproxy/configuration/raw"
19
+
20
+ # Identical to resource_post() but with the text/plain content type.
21
+ function resource_post_text() {
22
+ local endpoint=" $1 " data=" @${BATS_TEST_DIRNAME} /$2 " qs_params=" $3 "
23
+
24
+ run curl -m 10 -s -H ' content-type: text/plain' --user dataplaneapi:mypassword \
25
+ " -XPOST" -w " \n%{http_code}" " -d${data} " \
26
+ " http://${LOCAL_IP_ADDRESS} :${E2E_PORT}${BASE_PATH}${endpoint} ?$qs_params &version=$( version) "
27
+ assert_success
28
+ dpa_curl_status_body ' $output'
29
+ }
Original file line number Diff line number Diff line change @@ -95,6 +95,15 @@ func (h *PostRawConfigurationHandlerImpl) Handle(params configuration.PostHAProx
95
95
onlyValidate = * params .OnlyValidate
96
96
}
97
97
98
+ // Check for a common error where the user ran `curl -d @haproxy.cfg` without
99
+ // converting the file to json, which removes all the \n from the configuration.
100
+ if len (params .Data ) > 0 && ! strings .ContainsRune (params .Data , '\n' ) {
101
+ code := misc .ErrHTTPBadRequest
102
+ msg := "invalid configuration: no newline character found"
103
+ e := & models.Error {Code : & code , Message : & msg }
104
+ return configuration .NewPostHAProxyConfigurationBadRequest ().WithPayload (e )
105
+ }
106
+
98
107
cfg , err := h .Client .Configuration ()
99
108
if err != nil {
100
109
e := misc .HandleError (err )
You can’t perform that action at this time.
0 commit comments