view src/init.luan @ 1:2776f06236b4

add source.html
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 11 Jul 2025 21:17:19 -0600
parents 8f4df159f06b
children
line wrap: on
line source

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