Wie schon
angekündgt, hab ich siginfo-ng praktisch von Grund auf neu geschrieben, jetzt mit
Lua für Plugins, anstelle statisch einkompilierter C-Funktionen.
Ich bin allerdings mit der Plugin-Architektur noch nicht so ganz zufrieden, daher veröffentliche ich meinen Status-Quo (der abgesehen vom noch nicht zufriedenstellenden Plugin-System aber robust sein sollte) als Pre-Release. Das Ding bietet nicht alle Features der 0.1.xer-Serie, ist daher viel mehr zum ausprobieren und Feedback geben gedacht, wie man dass dann in der "finalen" 0.2.0er machen soll.
Dokumentation ist praktisch nicht existent zur Zeit. Für Plugins gilt grundsätzlich folgendes:
Es sind gewöhnliche .lua-Dateien, die an sich keine besonderen Anforderungen erfüllen müssen. Diese werden von siginfo-ng geladen und ausgeführt. Alle aus sicht des Plugisn globalen Variabeln befinden sich allerdings in einer separaten Table, und können in der Config-Datei dann so angesprochen werden. Beispiel:
Code:
-- Datei "plugin.lua"
local tmp = 21
illuminaten = tmp + 2
function random()
return math.random(0, 100)
end
Lädt man diese Datei in der Konfigurationsdatei (config.lua) mit
load_plugin("plugin", "plugin.lua"), dann kann man in der Konfigurationsdatei im Layout diese wie folgt verwenden:
Code:
siginfo.layout = {} -- neues, leeres Layout
siginfo.layout.row1 = { "Zahl der Illuminaten: ", plugin.illuminaten }
siginfo.layout.row2 = { "Zufallszahl: ", plugin.random }
Während
plugin.tmp via Konfigurationsdatei nicht ansprechbar ist. Hoffe, das ist einigermassen verständlich.
Problem an der Architektur ist, dass zwar ständig ändernde Werte möglich sind (siehe plugin.random, diese Funktion wird bei jedem Update frisch aufgerufen), aber das bei vielen kleinen Werten sehr mühsam wird (siehe mem.lua). Daher wäre ich um Feedback froh.
Auch ein ungelöstes Problem ist es, wie und wo man die Plugins lädt. Zur Zeit gibt es in der Config-File zwei Funktionen: load_plugin(ns, file) und load_plugin_dir(file), erstere lässt einem bestimmen, wie das Plugin angesprochen wird, zweitere lädt einfach alle Plugins in einem Verzeichnis und gibt ihnen den Dateinamen als Namespace.
Grundsätzliche Lua-Kenntnisse sind allerdings schon von nöten, daher empfehle ich folgende Seiten:
Lua für Anfänger:
Lua fr Anfnger
Programming in Lua (Buch, englisch):
Programming in Lua, Second Edition
Lua 5.1 Sprachrefrenz (englisch):
Lua 5.1 Reference Manual - contents
Der Rest sollte einigermassen fertig sein. HTTP-Support wurde komplett überarbeitet und fehlerbereinigt, auch wenn der HTTP-Parser nicht immer ganz standardkonform arbeitet, so reicht es wenigstens für siginfo.de. Die Portabilität wird vorerst etwas zurückgegangen sein, weil ich 2-3 POSIX-Funktionen mehr verwendet habe, und sogar eine GNU-Funktion, auf einem Linux mit dynamischer glibc wird es aber funktionieren. Während statisches reinkompilieren des Lua-Interpreteres unter
Arch zwar funktioniert hat, aber das Binarie danach nich lief. Daher auch Pre-Release.
Download wie immer auf GitHub:
gandro's siginfo-ng at master - GitHub