From 78e8dedf8e853eed9e1d4df5db59ed070b748b85 Mon Sep 17 00:00:00 2001 From: michael Date: Fri, 5 Sep 2025 17:44:42 +0200 Subject: [PATCH] fix(json): add multi-platform JSON library compatibility - Add flexible JSON detection (cjson preferred, dkjson fallback) - Update main.lua and mail.lua with found_cjson detection - Update start.sh to check both JSON libraries - Enables furt to run on Arch Linux without manual patches - Maintains API compatibility with existing cjson usage Fixes #108 --- scripts/start.sh | 8 +++++--- src/main.lua | 5 ++++- src/routes/mail.lua | 5 ++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/scripts/start.sh b/scripts/start.sh index 354f528..07a0df8 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -59,10 +59,12 @@ $LUA_COMMAND -e "require('socket')" 2>/dev/null || { exit 1 } -$LUA_COMMAND -e "require('cjson')" 2>/dev/null || { - echo -e "${RED}Error: lua-cjson not found${NC}" +# JSON library check (cjson preferred, dkjson fallback) +if ! ($LUA_COMMAND -e "require('cjson')" 2>/dev/null || $LUA_COMMAND -e "require('dkjson')" 2>/dev/null); then + echo -e "${RED}Error: No JSON library found${NC}" + echo "Install lua-cjson or lua-dkjson" exit 1 -} +fi cd "$PROJECT_DIR" diff --git a/src/main.lua b/src/main.lua index 8ee7281..5773714 100644 --- a/src/main.lua +++ b/src/main.lua @@ -3,7 +3,10 @@ -- Dragons@Work Digital Sovereignty Project local socket = require("socket") -local cjson = require("cjson") +local found_cjson, cjson = pcall(require, 'cjson') +if not found_cjson then + cjson = require('dkjson') +end -- Load modules local Auth = require("src.auth") diff --git a/src/routes/mail.lua b/src/routes/mail.lua index d7cd93f..8e59b03 100644 --- a/src/routes/mail.lua +++ b/src/routes/mail.lua @@ -3,7 +3,10 @@ -- API-Key determines mail configuration and recipient -- Dragons@Work Digital Sovereignty Project -local cjson = require("cjson") +local found_cjson, cjson = pcall(require, 'cjson') +if not found_cjson then + cjson = require('dkjson') +end local MailRoute = {}