comparison src/error_log.js.luan @ 0:8f4df159f06b

start public repo
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 11 Jul 2025 20:57:49 -0600
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:8f4df159f06b
1 local Luan = require "luan:Luan.luan"
2 local error = Luan.error
3 local String = require "luan:String.luan"
4 local trim = String.trim or error()
5 local regex = String.regex or error()
6 local contains = String.contains or error()
7 local Table = require "luan:Table.luan"
8 local concat = Table.concat or error()
9 local Http = require "luan:http/Http.luan"
10 local Logging = require "luan:logging/Logging.luan"
11 local logger = Logging.logger "error_log.js"
12
13
14 local bad_agents = {
15 [[Googlebot]]
16 [[GSA/]]
17 [[Mobile/15E148 Instagram]]
18 [[Firefox/]]
19 [[VivoBrowser/]]
20 [[Chrome/(4\d|5\d|70|83|86|87|94)\.]]
21 [[musical_ly_2\d\.]]
22 }
23 local bad_agents_ptn = regex(concat(bad_agents,"|"))
24
25 local bad_contents = {
26 [[\Qchrome-extension://\E]]
27 [[\Q@webkit-masked-url://hidden/\E]]
28 [[\Qanalytics.tiktok.com\E]]
29 [[\QStrict mode does not allow function declarations in a lexically nested statement.\E]]
30 [[\QFailed to set the 'currentTime' property on 'HTMLMediaElement': The provided double value is non-finite.\E]]
31 [[\QThe element has no supported sources.\E]]
32 [[\QThe play() request was interrupted by a call to pause().\E]]
33 [[\QReferenceError: Can't find variable: _AutofillCallbackHandler\E]]
34 [[\QUtilityScript\E]]
35 [[\QscrollReadRandom\E]]
36 [[\QdoGameClick\E]]
37 [[\Qurl = undefined\E]]
38 [[\QFailed to set remote answer sdp: The order of m-lines in answer doesn't match order in offer. Rejecting answer.\E]]
39 }
40 local bad_contents_ptn = regex(concat(bad_contents,"|"))
41
42 local function priority(err)
43 local agent = Http.request.headers["user-agent"]
44 if agent~=nil and bad_agents_ptn.matches(agent) then return "info" end
45 if bad_contents_ptn.matches(err) then return "info" end
46 local x_requested_with = Http.request.headers["X-Requested-With"]
47 if x_requested_with ~= nil then
48 return "info"
49 end
50 return "error"
51 end
52
53 return function()
54 local err = Http.request.parameters.err
55 if err == nil then
56 return -- stupid bots
57 end
58 local call = priority(err)
59 logger[call](trim(err).."\n"..trim(Http.request.raw_head).."\n")
60 end