comparison src/init.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 substring = String.sub 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 Time = require "luan:Time.luan"
10 local Thread = require "luan:Thread.luan"
11 local Http = require "luan:http/Http.luan"
12 local Hosted = require "luan:host/Hosted.luan"
13 local User = require "site:/lib/User.luan"
14 local get_user_by_name = User.get_by_name or error()
15 local name_regex = User.name_regex
16 local main_html = require "site:/lib/main_html.luan"
17 local Logging = require "luan:logging/Logging.luan"
18 local logger = Logging.logger "init"
19
20
21 Hosted.set_https and Hosted.set_https(true)
22
23 local bad_bots = {
24 [[facebookexternalhit]]
25 [[VivoBrowser]]
26 [[\QFirefox/3.\E]]
27 [[\QFirefox/50.\E]]
28 [[SemrushBot]]
29 [[LightspeedSystemsCrawler]]
30 [[bingbot]]
31 [[PetalBot]]
32 [[\QChrome/83.\E]]
33 }
34 local bad_bots_ptn = regex(concat(bad_bots,"|"))
35
36 function Http.error_priority(e)
37 local request = Http.request or error()
38 local agent = request.headers["user-agent"]
39 local referrer = request.headers.referer
40 if agent~=nil and bad_bots_ptn.matches(agent) then return "info" end
41 if e.priority ~= nil then return e.priority end
42 if referrer==nil or contains(referrer,"baidu.com") or contains(referrer,"google.com") then return "warn" end
43 return "error"
44 end
45
46 function Http.not_found_handler()
47 local s = substring(Http.request.path,2)
48 --logger.info(s)
49 if not name_regex.matches(s) then
50 return false
51 end
52 local user = get_user_by_name(s)
53 if user == nil then
54 return false
55 end
56 main_html(user)
57 return true
58 end
59
60 logger.error "init"
61 local function log_day()
62 logger.error("day")
63 end
64 Thread.schedule( log_day, { repeating_delay=Time.period{days=1} } )
65
66 local Uploadcare = require "site:/lib/Uploadcare.luan"
67 Thread.schedule( Uploadcare.gc, { repeating_delay=Time.period{days=1} } )
68
69 return true