Commit da563ca
authored
feat(rules): edge.* filter fields for the validator's client class (#481) (#69)
Matching the edge tag already worked on a stock install: collect_request_headers()
forwards the whole $_SERVER['HTTP_*'] set into the rule context, so
req.header("x-wd-class") == "script" has always been a valid expression. Nobody
knew, because nothing said so — the header was documented as "watch it in your
logs" and the Fields line in the settings screen never mentioned it.
So this is discoverability, not capability: edge.class, edge.clearance,
edge.present, plus edge.verified / edge.crawler / edge.script / edge.browser. One
spelling instead of one per site owner, and it survives us renaming a header. The
raw-header form still works and has a test pinning that.
ABSENCE IS NOT A CLASS
A rule using this decides whether to serve someone less, so:
- edge.class is null when the validator did not classify, making a comparison
against it false rather than accidentally true
- a value outside the closed set is DROPPED — outside it means version skew or
something that is not our worker
- edge.present false means "no information", not "human", and the settings screen
says so in those words
Derived from the headers already on RuleContext rather than added as a constructor
argument, so a released plugin's RuleContext signature does not change under
anyone.
THE CACHE CAVEAT IS IN THE UI, NOT ONLY THE DOCS
The settings screen now states that these fields are safe for blocking,
throttling, logging and metering, and that serving different page CONTENT on a
cacheable URL is not: Cloudflare's cache key ignores this header below Enterprise,
so the first cached variant is served to everyone including Googlebot, and on a
cache hit the site never runs at all. A site owner reading the field list is
exactly the person about to make that mistake.
No version bump — releasing is a separate decision, and goes through
bin/release-all.sh.
Refs WebDecoy/app#481, WebDecoy/app#4771 parent 6056e3c commit da563ca
3 files changed
Lines changed: 100 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
367 | 367 | | |
368 | 368 | | |
369 | 369 | | |
| 370 | + | |
370 | 371 | | |
371 | 372 | | |
372 | | - | |
| 373 | + | |
373 | 374 | | |
374 | 375 | | |
375 | 376 | | |
376 | 377 | | |
377 | 378 | | |
378 | 379 | | |
379 | 380 | | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
380 | 389 | | |
381 | 390 | | |
382 | 391 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
160 | 160 | | |
161 | 161 | | |
162 | 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 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
163 | 200 | | |
164 | 201 | | |
165 | 202 | | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
166 | 221 | | |
167 | 222 | | |
168 | 223 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
118 | 118 | | |
119 | 119 | | |
120 | 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 | + | |
121 | 156 | | |
122 | 157 | | |
123 | 158 | | |
| |||
0 commit comments