2025-02-19 18:10:37 -03:00
|
|
|
local weblit = require('weblit')
|
2025-02-27 13:10:42 -03:00
|
|
|
local json = require("json")
|
2025-02-26 14:39:07 -03:00
|
|
|
local radon = require("./radon")
|
2025-02-27 13:10:42 -03:00
|
|
|
local foppy = require("./foppy")
|
|
|
|
local config = require("./config")
|
2025-03-01 01:12:00 -03:00
|
|
|
local authors = require("./authors")
|
|
|
|
local utils = require("./utils")
|
2025-02-27 13:10:42 -03:00
|
|
|
|
|
|
|
local templater = function(template)
|
|
|
|
return function(req, res)
|
|
|
|
local func = dofile("template/" .. template .. ".lua")
|
|
|
|
|
|
|
|
res.code = 200
|
|
|
|
res.body = radon.compile(func, {
|
|
|
|
request = req,
|
2025-03-01 01:12:00 -03:00
|
|
|
response = res
|
2025-02-27 13:10:42 -03:00
|
|
|
})
|
|
|
|
res.headers["Content-Type"] = "text/html"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2025-02-19 18:10:37 -03:00
|
|
|
weblit.app
|
2025-02-27 13:10:42 -03:00
|
|
|
.bind({ host = "0.0.0.0", port = 1337 })
|
2025-02-19 18:10:37 -03:00
|
|
|
|
|
|
|
-- Configure weblit server
|
|
|
|
.use(weblit.logger)
|
|
|
|
.use(weblit.autoHeaders)
|
2025-03-01 01:12:00 -03:00
|
|
|
.use(utils.cookies)
|
2025-02-19 18:10:37 -03:00
|
|
|
|
2025-02-26 14:39:07 -03:00
|
|
|
.route(
|
|
|
|
{ path = "/static/:path:" },
|
|
|
|
weblit.static("static")
|
|
|
|
)
|
|
|
|
|
2025-03-01 01:12:00 -03:00
|
|
|
.route(
|
|
|
|
{ path = "/media/:path:" },
|
|
|
|
weblit.static("database/media")
|
|
|
|
)
|
|
|
|
|
|
|
|
-- TODO: CLONE ALL OF THIS AS A REST API EVENTUALLY,
|
|
|
|
.route({ path = "/signup" }, templater("signup"))
|
|
|
|
.route({ path = "/signup2" }, templater("signup2"))
|
|
|
|
.route({ path = "/login" }, templater("login"))
|
|
|
|
.route({ path = "/logout" }, templater("logout"))
|
|
|
|
|
|
|
|
.route({ path = "/@:blog" }, templater("blog"))
|
|
|
|
.route({ path = "/@:blog/:post" }, templater("post"))
|
|
|
|
.route({ path = "/p/:path" }, function(req, res)
|
|
|
|
local path = req.params.path
|
|
|
|
if #path == 0 then
|
|
|
|
res.code = 301
|
|
|
|
res.headers["Location"] = "/"
|
|
|
|
return
|
|
|
|
end
|
2025-02-26 14:39:07 -03:00
|
|
|
|
2025-03-01 01:12:00 -03:00
|
|
|
local func = dofile("template/error.lua")
|
|
|
|
local redirects = foppy.open("database/redirects.json")
|
|
|
|
assert(redirects)
|
|
|
|
|
|
|
|
local redirect = redirects[path]
|
|
|
|
if redirect then
|
|
|
|
res.code = 301
|
|
|
|
res.headers["Location"] = redirect
|
2025-02-27 13:10:42 -03:00
|
|
|
return
|
|
|
|
end
|
2025-02-26 14:39:07 -03:00
|
|
|
|
2025-03-01 01:12:00 -03:00
|
|
|
return func(404, "post", "/p/" .. path)
|
2025-02-26 14:39:07 -03:00
|
|
|
end)
|
|
|
|
|
2025-02-27 13:10:42 -03:00
|
|
|
.route({ path = "/" }, templater("index"))
|
2025-02-19 18:10:37 -03:00
|
|
|
|
|
|
|
-- Start the server
|
|
|
|
.start()
|