Skip to content

Commit da43f03

Browse files
Merge pull request #9 from discoverygarden/fix-stalled-response
Fix: stalled response
2 parents 275008a + 8e2dcfe commit da43f03

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

botblocker.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,8 @@ func (b *BotBlocker) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
181181
}
182182
startTime := time.Now()
183183
log.Debugf("Checking request: CIDR: \"%v\" user agent: \"%s\"", req.RemoteAddr, req.UserAgent())
184-
timer := func() {
185-
log.Debugf("Checked request in %v", time.Since(startTime))
186-
}
184+
// Using an external plugin to avoid https://github.com/traefik/yaegi/issues/1697
185+
timer := getTimer(startTime)
187186
defer timer()
188187

189188
remoteAddrPort, err := netip.ParseAddrPort(req.RemoteAddr)
@@ -225,3 +224,9 @@ func (b *BotBlocker) shouldBlockAgent(userAgent string) bool {
225224
}
226225
return false
227226
}
227+
228+
func getTimer(startTime time.Time) func() {
229+
return func() {
230+
log.Debugf("Checked request in %v", time.Since(startTime))
231+
}
232+
}

docker-compose.yml

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: traefik-bad-bot-blocker
22
services:
33
traefik:
4-
image: traefik:3.0
4+
image: traefik:v3.4
55
command:
66
- "--providers.docker=true"
77
- "--providers.docker.exposedbydefault=false"
@@ -15,6 +15,8 @@ services:
1515
- "./:/plugins-local/src/github.com/discoverygarden/traefik-ultimate-bad-bot-blocker"
1616
networks:
1717
test:
18+
depends_on:
19+
- lists
1820
whoami:
1921
image: traefik/whoami
2022
labels:
@@ -24,7 +26,7 @@ services:
2426
- "traefik.http.routers.whoami.middlewares=botblocker@docker"
2527
- "traefik.http.middlewares.botblocker.plugin.botblocker.ipblocklisturls[0]=https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/_generator_lists/bad-ip-addresses.list"
2628
- "traefik.http.middlewares.botblocker.plugin.botblocker.ipblocklisturls[1]=http://lists/ip-blocklist"
27-
- "traefik.http.middlewares.botblocker.plugin.botblocker.loglevel=INFO"
29+
- "traefik.http.middlewares.botblocker.plugin.botblocker.loglevel=DEBUG"
2830
- "traefik.http.middlewares.botblocker.plugin.botblocker.useragentblocklisturls[0]=https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/_generator_lists/bad-user-agents.list"
2931
- "traefik.http.middlewares.botblocker.plugin.botblocker.useragentblocklisturls[1]=http://lists/useragent-blocklist"
3032
networks:
@@ -38,12 +40,16 @@ services:
3840
- -c
3941
- |
4042
while true; do
41-
curl whoami.example.com 2>/dev/null | grep X-Real-Ip
43+
curl -m 5s whoami.example.com 2>/dev/null | grep X-Real-Ip
4244
sleep 5
4345
done
4446
networks:
4547
test:
4648
ipv4_address: 10.10.10.1
49+
depends_on:
50+
- whoami
51+
- traefik
52+
stop_grace_period: 0s
4753
blocked-ip:
4854
image: quay.io/curl/curl
4955
external_links:
@@ -53,12 +59,16 @@ services:
5359
- -c
5460
- |
5561
while true; do
56-
curl whoami.example.com 2>/dev/null
62+
curl -m 5s whoami.example.com 2>/dev/null
5763
sleep 5
5864
done
5965
networks:
6066
test:
6167
ipv4_address: 10.10.10.2
68+
depends_on:
69+
- whoami
70+
- traefik
71+
stop_grace_period: 0s
6272
blocked-agent:
6373
image: quay.io/curl/curl
6474
external_links:
@@ -68,12 +78,16 @@ services:
6878
- -c
6979
- |
7080
while true; do
71-
curl -A 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.30 (KHTML, like Gecko) NX/3.0.4.2.12 NintendoBrowser/4.3.1.11264.US' whoami.example.com 2>/dev/null
81+
curl -m 5s -A 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.30 (KHTML, like Gecko) NX/3.0.4.2.12 NintendoBrowser/4.3.1.11264.US' whoami.example.com 2>/dev/null
7282
sleep 5
7383
done
7484
networks:
7585
test:
7686
ipv4_address: 10.10.10.3
87+
depends_on:
88+
- whoami
89+
- traefik
90+
stop_grace_period: 0s
7791
blocked-cidr:
7892
image: quay.io/curl/curl
7993
external_links:
@@ -83,12 +97,16 @@ services:
8397
- -c
8498
- |
8599
while true; do
86-
curl whoami.example.com 2>/dev/null
100+
curl -m 5s whoami.example.com 2>/dev/null
87101
sleep 5
88102
done
89103
networks:
90104
test:
91105
ipv4_address: 10.10.20.2
106+
depends_on:
107+
- whoami
108+
- traefik
109+
stop_grace_period: 0s
92110
lists:
93111
image: nginx
94112
volumes:

0 commit comments

Comments
 (0)