Compare commits
2 commits
c15abe3c05
...
374871578d
Author | SHA1 | Date | |
---|---|---|---|
374871578d | |||
d16e31c675 |
8 changed files with 64 additions and 12 deletions
6
Makefile
Normal file
6
Makefile
Normal file
|
@ -0,0 +1,6 @@
|
|||
testdeps:
|
||||
luarocks-5.1 install --local luaunit
|
||||
luarocks-5.1 install --local lrexlib-PCRE2
|
||||
|
||||
test:
|
||||
luajit test.lua
|
|
@ -13,9 +13,10 @@ on top of ActivityPub implementations.
|
|||
|
||||
## Testing
|
||||
|
||||
```
|
||||
luarocks-5.1 install --local luaunit
|
||||
luarocks-5.1 install --local lrexlib-PCRE2
|
||||
requires luajit
|
||||
|
||||
```sh
|
||||
make testdeps
|
||||
eval (luarocks-5.1 path --bin)
|
||||
lua5.1 test.lua
|
||||
make test
|
||||
```
|
||||
|
|
6
conf.lua
Normal file
6
conf.lua
Normal file
|
@ -0,0 +1,6 @@
|
|||
return {
|
||||
version = 1,
|
||||
wantedScripts = {
|
||||
['webfinger_allowlist'] = {accounts = {"example@example.com"}}
|
||||
}
|
||||
}
|
36
config.lua
Normal file
36
config.lua
Normal file
|
@ -0,0 +1,36 @@
|
|||
local env_config_path = os.getenv('APROXY_CONFIG_PATH')
|
||||
local DEFAULT_CONFIG_PATH = ".;/etc/aproxy"
|
||||
local config_path = env_config_path or DEFAULT_CONFIG_PATH
|
||||
|
||||
function mysplit (inputstr, sep)
|
||||
if sep == nil then
|
||||
sep = "%s"
|
||||
end
|
||||
local t={}
|
||||
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
|
||||
table.insert(t, str)
|
||||
end
|
||||
return t
|
||||
end
|
||||
|
||||
local function findConfigFile()
|
||||
for _, config_directory in ipairs(mysplit(config_path, ";")) do
|
||||
local possible_config_path = config_directory .. "/" .. "conf.lua"
|
||||
local fd = io.open(possible_config_path, "rb")
|
||||
if fd then
|
||||
local data = fd:read("*a")
|
||||
fd:close()
|
||||
return data
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
local function loadConfigFile()
|
||||
local config_file_data = assert(findConfigFile(), 'no config file found, config path: ' .. config_path)
|
||||
local config_file_function = assert(loadstring(config_file_data))
|
||||
return config_file_function()
|
||||
end
|
||||
|
||||
return loadConfigFile()
|
7
ctx.lua
7
ctx.lua
|
@ -8,10 +8,15 @@ function ctx:setWantedScripts(graph)
|
|||
self._wanted_scripts = graph
|
||||
end
|
||||
|
||||
function ctx:loadFromConfig(conf)
|
||||
ctx:setWantedScripts(conf.wantedScripts)
|
||||
ctx:loadChain()
|
||||
end
|
||||
|
||||
function ctx:loadChain()
|
||||
self.compiled_chain = {}
|
||||
for module_name, module_config in pairs(self._wanted_scripts) do
|
||||
local module = require(module_name)
|
||||
local module = require('scripts.' .. module_name)
|
||||
local module_state = module.init(module_config)
|
||||
-- TODO is it possible to make module_config readonly?
|
||||
table.insert(self.compiled_chain, {module, module_config, module_state})
|
||||
|
|
|
@ -8,4 +8,5 @@ services:
|
|||
- 'LUA_PATH=/?.lua;/aproxy/?.lua'
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
- ./conf.lua:/etc/aproxy/conf.lua:ro
|
||||
- .:/aproxy:ro
|
||||
|
|
7
main.lua
7
main.lua
|
@ -1,4 +1,3 @@
|
|||
local CONFIG_PATH = ".;/etc/aproxy"
|
||||
|
||||
-- function loadConfig()
|
||||
-- -- TODO load config_path
|
||||
|
@ -8,11 +7,9 @@ local CONFIG_PATH = ".;/etc/aproxy"
|
|||
-- local config = loadConfig()
|
||||
|
||||
local ctx = require('ctx')
|
||||
local conf = require('config')
|
||||
|
||||
ctx:setWantedScripts({
|
||||
['scripts.webfinger_allowlist'] = {accounts = {"example@example.com"}}
|
||||
})
|
||||
ctx:loadChain()
|
||||
ctx:loadFromConfig(conf)
|
||||
|
||||
return function()
|
||||
ctx:onRequest()
|
||||
|
|
|
@ -25,12 +25,12 @@ return {
|
|||
author='luna@l4.pm',
|
||||
title='Webfinger Allowlist',
|
||||
description=[[
|
||||
Prevent unecessary DB load by discarding requests to users that we know
|
||||
Prevent unnecessary DB load by discarding requests to users that we know
|
||||
won't exist.
|
||||
|
||||
Useful for small instances.
|
||||
]],
|
||||
apiVersion=1,
|
||||
version=1,
|
||||
init=webfingerInit,
|
||||
callbacks = {
|
||||
['/.well-known/webfinger'] = webfingerCallback
|
||||
|
|
Loading…
Reference in a new issue