Мы пытаемся запустить скрипт 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
Apache Lua_Mod Setup: "lua: невозможно найти функцию fetch_token_hook в <сценарии каталога>" ⇐ Apache
1756812247
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 вручную (он работает)
Подробнее здесь: [url]https://stackoverflow.com/questions/79753434/apache-lua-mod-setup-lua-unable-to-find-function-fetch-token-hook-in-script[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия