Apache Lua_Mod Setup: "lua: невозможно найти функцию fetch_token_hook в <сценарии каталога>"Apache

Ответить
Anonymous
 Apache Lua_Mod Setup: "lua: невозможно найти функцию fetch_token_hook в <сценарии каталога>"

Сообщение Anonymous »

Мы пытаемся запустить скрипт LUA, чтобы зацепить фазу исправлений запроса в приложении Apache Server, но мы продолжаем получать следующее: < /p>
»[Thu Aug 28 09: 55: 37.099004 2025] fetch_token_hook in/var/www/html/>/lua/fetch_token.lua, Реферат: https: // >/?
## Vhost docroot
DocumentRoot "/var/www/html/"

## Directories, there should at least be a declaration for /var/www/html/


AllowOverride None
Require all granted


## Custom fragment
# Lua config
LoadModule lua_module modules/mod_lua.so
LuaHookFixups /var/www/html//lua/fetch_token.lua fetch_token_hook

SetHandler lua-script

< /code>
И это то, как выглядит скрипт Lua: < /p>
local http = require "socket.http"
local ltn12 = require "ltn12"
local cjson = require "cjson"

local token_endpoint = ""
local client_id = ""
local client_secret = ""
local scope = ""

local cached_token = nil
local expires_at = 0

local function get_new_token(r)
local body = string.format(
"grant_type=client_credentials&client_id=%s&client_secret=%s&scope=%s",
client_id, client_secret, scope:gsub(" ", "%%20"))

local resp_chunks = {}
local _, code = http.request{
url = token_endpoint,
method = "POST",
headers = {
["Content-Type"] = "application/x-www-form-urlencoded",
["Content-Length"] = #body
},
source = ltn12.source.string(body),
sink = ltn12.sink.table(resp_chunks)
}

if code ~= 200 then
r:err("[lua] token endpoint returned status "..tostring(code))
return nil
end

local token_json = table.concat(resp_chunks)
local t = cjson.decode(token_json)

if not t.access_token or not t.expires_in then
r:err("[lua] token endpoint did not return access_token / expires_in")
return nil
end

cached_token = t.access_token
expires_at = os.time() + tonumber(t.expires_in)
return cached_token
end

function fetch_token_hook(r)
file = io.open("/var/www/html//lua/lualog.txt","a")
file:write("Start of log \n")
file:write(r.uri)
file:write("\n ")
file:close()

if not r.uri:match("^<
>") then
return apache2.DECLINED
end

if (not cached_token) or (os.time() > expires_at - 30) then
if not get_new_token(r) then
return apache2.HTTP_INTERNAL_SERVER_ERROR
end
end

r.headers_in["Authorization"] = "Bearer "..cached_token

return apache2.DECLINED
end
< /code>
Мы удваиваем, и тройной проверяли путь и имен, и мы смогли получить эту точную настройку на локальном уровне, поэтому мы знаем, что это не опечатка. На данный момент мы почти убеждены, что это какая -то проблема безопасности, но мы тоже не видим никаких дыр. Это разрешения, предоставленные файлу fetch_token.lua: < /p>
»-Rwxr-xr-x. 1 > www 1834 август 29 09:33 fetch_token.lua» < /p>
Мы также попробовали:

-Пробое. указывать на то, что директива не может найти скрипт даже с правильным путем)
- попытка удалить Lua_module Modules/mod_lua.so (как и ожидалось, дает ошибку. разница)
- попытался запустить сценарий Lua вручную (он работает)

Подробнее здесь: https://stackoverflow.com/questions/797 ... -in-script
Ответить

Быстрый ответ

"" class="inputbox autowidth" />
"" />
Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»