Lua ist eine einfache aber mächtige Scriptsprache (siehe http://www.lua.org). Die meisten Funktionen, in denen LiveConfig mit anderen Programmen interagiert oder Konfigurationsdateien erzeugt sind in Lua programmiert. Diese Scripte liegen im Quelltext vor, so dass Anpassungen an spezielle Anforderungen ziemlich einfach sind.
Die Lua-Programme liegen unter /usr/lib/liveconfig/lua/
(bzw. <library_path>/lua/
- siehe library_path
), sowohl bei einem LiveConfig-Server als auch bei einem LiveConfig-Client (lcclient).
When LiveConfig starts, multiple threads for system management are started. Each of these threads contains its own Lua environment. Each Lua environment first loads its internal libraries (like LC.expect
, LC.sys
, and so on), then the main script liveconfig.lua
is run. This loads all other Lua modules (LC.web
, LC.dns
etc.), all files in /etc/liveconfig/lua.d/*.lua
and finally a file called custom.lua
(if existing).
Wenn Sie Lua-Funktionen modifizieren müssen, empfehlen wir dringend diese Änderungen nicht direkt in den vorhandenen Lua-Scripten vorzunehmen, da diese beim nächsten LiveConfig-Update überschrieben werden. Erzeugen Sie statt dessen eine Datei namens custom.lua
(unter /usr/lib/liveconfig/lua
oder unter /etc/liveconfig/lua.d/
).
Wichtig
Nach Änderungen an der custom.lua
oder irgendeinem anderen Lua-Script muss LiveConfig neu gestartet werden, damit die Änderungen wirksam werden.
Vorsicht
Wenn Sie irgendwelche Änderungen an den Lua-Programmen vornehmen (auch durch Erstellung einer eigenen custom.lua
), übernehmen wir keine Verantwortung für eventuelle Fehler.
Bitte prüfen Sie Ihre eigenen Funktionen äußerst sorgfältig bevor Sie diese in Produktivbetrieb nehmen!
Zum Testen eigener Lua-Scripte können Sie das Programm lclua
verwenden (wird mit LiveConfig installiert, normalerweise unter /usr/lib/luveconfig/lclue
). Dieser Lua-Interpreter enthält alle Lua-Module von LiveConfig.
Wenn Sie beispielsweise die Erkennung der Linux-Distribution anpassen möchten, könnte die Datei custom.lua
etwa so aussehen:
-- introduce namespace "MY":
MY = { }
-- keep original function "LC.distribution.detect"
MY.orig_detect = LC.distribution.detect
-- redirect function for distribution detection:
function LC.distribution.detect()
if (LC.fs.is_file("/etc/exampLinux")) then
-- we have an "ExampleLinux"...
LC.distribution.name = "ExampLinux"
LC.distribution.codename = "example"
LC.distribution.family = "Debian"
LC.distribution.version = "1.0"
LC.distribution.description = "Example Linux 1.0 (example)"
return true
else
-- call original function for distribution detection:
return MY.orig_detect()
end
end
Die folgenden Module werden von LiveConfig bereitgestellt: