Libraryless. Click here for Pure Java version (4731L/31K).
1 | sclass HTTPSpamBlocker1 { |
2 | Set<S> blockedIPs = expiringSet(10*60.0); // 10 minutes |
3 | |
4 | bool isBadRequest(S uri, S ip) { |
5 | ret pairB(checkRequest(uri, ip)); |
6 | } |
7 | |
8 | // pair(count, bad) |
9 | Pair<Int, Bool> checkRequest(S uri, S ip) { |
10 | bool bad = eq(uri, "/simulate-bad-client"); |
11 | Pair<Int, Bool> pair = simpleSpamClientDetect2(ip, uri); |
12 | if (pair.b) { |
13 | if (eq(ip, pcall_myFirewallIP())) |
14 | print("Not blocking myself."); |
15 | else { |
16 | print("Blocking IP " + ip); |
17 | blockedIPs.add(ip); |
18 | } |
19 | } |
20 | |
21 | if (blockedIPs.contains(ip)) { |
22 | bad = true; |
23 | print(t3("an HTTP request from a blocked IP", "came in at", dateWithTimeGMT())); |
24 | } |
25 | |
26 | ret pair(pair.a, bad); |
27 | } |
28 | |
29 | void markNoSpam(S uri, S ip) { |
30 | simpleSpamClientDetect2_markNoSpam(ip, uri); |
31 | } |
32 | } |
download show line numbers debug dex old transpilations
Travelled to 7 computer(s): bhatertpkbcr, cfunsshuasjs, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1023394 |
Snippet name: | HTTPSpamBlocker1 |
Eternal ID of this version: | #1023394/4 |
Text MD5: | 7be6e35e2e911233b6000b50c01edfbb |
Transpilation MD5: | 56789a30cb865a8991974937d1e9a7a7 |
Author: | stefan |
Category: | javax |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2020-10-27 13:04:36 |
Source code size: | 840 bytes / 32 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 365 / 810 |
Version history: | 3 change(s) |
Referenced in: | [show references] |