Mercurial Hosting > linkmystyle
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