diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/init.luan	Fri Jul 11 20:57:49 2025 -0600
@@ -0,0 +1,69 @@
+local Luan = require "luan:Luan.luan"
+local error = Luan.error
+local String = require "luan:String.luan"
+local substring = String.sub or error()
+local regex = String.regex or error()
+local contains = String.contains or error()
+local Table = require "luan:Table.luan"
+local concat = Table.concat or error()
+local Time = require "luan:Time.luan"
+local Thread = require "luan:Thread.luan"
+local Http = require "luan:http/Http.luan"
+local Hosted = require "luan:host/Hosted.luan"
+local User = require "site:/lib/User.luan"
+local get_user_by_name = User.get_by_name or error()
+local name_regex = User.name_regex
+local main_html = require "site:/lib/main_html.luan"
+local Logging = require "luan:logging/Logging.luan"
+local logger = Logging.logger "init"
+
+
+Hosted.set_https and Hosted.set_https(true)
+
+local bad_bots = {
+	[[facebookexternalhit]]
+	[[VivoBrowser]]
+	[[\QFirefox/3.\E]]
+	[[\QFirefox/50.\E]]
+	[[SemrushBot]]
+	[[LightspeedSystemsCrawler]]
+	[[bingbot]]
+	[[PetalBot]]
+	[[\QChrome/83.\E]]
+}
+local bad_bots_ptn = regex(concat(bad_bots,"|"))
+
+function Http.error_priority(e)
+	local request = Http.request or error()
+	local agent = request.headers["user-agent"]
+	local referrer = request.headers.referer
+	if agent~=nil and bad_bots_ptn.matches(agent) then return "info" end
+	if e.priority ~= nil then return e.priority end
+	if referrer==nil or contains(referrer,"baidu.com") or contains(referrer,"google.com") then return "warn" end
+	return "error"
+end
+
+function Http.not_found_handler()
+	local s = substring(Http.request.path,2)
+	--logger.info(s)
+	if not name_regex.matches(s) then
+		return false
+	end
+	local user = get_user_by_name(s)
+	if user == nil then
+		return false
+	end
+	main_html(user)
+	return true
+end
+
+logger.error "init"
+local function log_day()
+	logger.error("day")
+end
+Thread.schedule( log_day, { repeating_delay=Time.period{days=1} } )
+
+local Uploadcare = require "site:/lib/Uploadcare.luan"
+Thread.schedule( Uploadcare.gc, { repeating_delay=Time.period{days=1} } )
+
+return true