1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
|
varnishtest "Misuses of defaults section defining TCP/HTTP rules"
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev0)'"
feature ignore_unknown_macro
#
# anonymous defaults section cannot define TCP/HTTP rules
#
haproxy h1 -conf-BAD {} {
defaults
http-request set-header X-Hdr 1
}
haproxy h2 -conf-BAD {} {
defaults
http-response set-header X-Hdr 1
}
haproxy h3 -conf-BAD {} {
defaults
http-after-request set-header X-Hdr 1
}
haproxy h4 -conf-BAD {} {
defaults
tcp-request connection accept
}
haproxy h5 -conf-BAD {} {
defaults
tcp-request session accept
}
haproxy h6 -conf-BAD {} {
defaults
tcp-request inspect-delay 5s
tcp-request content accept
}
haproxy h7 -conf-BAD {} {
defaults
tcp-response inspect-delay 5s
tcp-response content accept
}
#
# defaults section defining TCP/HTTP rules cannot be used to init another
# defaults section
#
haproxy h8 -conf-BAD {} {
defaults invalid
tcp-response inspect-delay 5s
tcp-response content accept
defaults from invalid
mode tcp
}
#
# defaults section defining TCP/HTTP rules cannot be used to init a listen
# section
#
haproxy h9 -conf-BAD {} {
defaults invalid
tcp-request inspect-delay 5s
tcp-request content accept
listen li from invalid
mode tcp
bind "fd@${lih9}"
server www 127.0.0.1:80
}
#
# defaults section defining TCP/HTTP rules cannot be used to init frontend and
# backend sections at the same time
#
#
haproxy h10 -conf-BAD {} {
defaults invalid
tcp-request inspect-delay 5s
tcp-request content accept
frontend fe from invalid
mode tcp
bind "fd@${feh10}"
default_backend be1
backend be from invalid
mode tcp
server www 127.0.0.1:80
}
#
# defaults section defining 'tcp-request connection' or 'tcp-request session'
# rules cannot be used to init backend sections
#
haproxy h11 -conf-BAD {} {
defaults invalid
tcp-request connection accept
backend be from invalid
mode tcp
server www 127.0.0.1:80
}
haproxy h12 -conf-BAD {} {
defaults invalid
tcp-request session accept
backend be from invalid
mode tcp
server www 127.0.0.1:80
}
#
# defaults section defining 'tcp-response content' rules cannot be used to init
# a frontend section
#
haproxy h13 -conf-BAD {} {
defaults invalid
tcp-response inspect-delay 5s
tcp-response content accept
frontend fe from invalid
mode tcp
bind "fd@${feh10}"
}
haproxy h14 -arg -V -conf-OK {
defaults tcp
timeout client 30s
timeout server 30s
timeout connect 30s
tcp-response inspect-delay 5s
tcp-response content accept
backend be from tcp
mode tcp
server www 127.0.0.1:80
}
#
# Check arguments resolutions in rules. FE/BE arguments must be resolved, but
# SRV/TAB arguments without an explicit proxy name are not allowed.
#
haproxy h15 -conf-BAD {} {
defaults invalid
mode http
http-request set-header x-test "%[srv_conn(www)]"
backend be from invalid
server www 127.0.0.1:80
}
haproxy h16 -conf-BAD {} {
defaults invalid
mode http
http-request track-sc0 src
http-request deny deny_status 429 if { sc_http_req_rate(0) gt 20 }
backend be
stick-table type ip size 100k expire 30s store http_req_rate(10s)
server www 127.0.0.1:80
}
haproxy h17 -arg -V -conf-OK {
defaults common
timeout client 30s
timeout server 30s
timeout connect 30s
mode http
defaults def_front from common
http-request set-header x-test1 "%[fe_conn]"
defaults def_back from common
http-request track-sc0 src table be
http-request deny deny_status 429 if { sc_http_req_rate(0,be) gt 20 }
http-request set-header x-test2 "%[be_conn]"
http-request set-header x-test3 "%[srv_conn(be/www)]"
frontend fe from def_front
bind "fd@${feh15}"
default_backend be
backend be from def_back
stick-table type ip size 100k expire 30s store http_req_rate(10s)
server www 127.0.0.1:80
}
|