Das Skript in den PluginFilter legen. Im Normalfall heißt das "pluginfilter.lua". Dann muss nur noch ein plugin Aktiv sein. Sonst wird der Filter nicht aufgerufen. Das gleiche gilt auch for den socketfilter. Solange kein Client verbunden ist wird auch die lua nicht aufgerufen.
Das ist vermutlich der Grund, warum Reissdorf sich mit dem miniclient verbunden muss: Sein Skript liegt im socketfilter.lua. Und wenn kein Client verbunden ist gibt's auch keinen Grund etwas zu filtern :)
Deshalb z.B. das mySQL-Plugin laden. Dann wird der pluginfilter immer aufgerufen wenn etwas ankommt, da jedesmal geprüft wird, ob die Daten an dies Plugin gehen sollen oder nicht.
Im pluginfilter.lua kannst du dann die Daten auswerten und per os.execute() auch programme aufrufen.
In der pluginfilter.lua muss es dann eine Funktion pluginFilter() geben. Das ist der Einstiegspunkt.
Beispiel - ungetestet. Hab keinen monitord mehr aktiv. Sollte aber so in der Art passen.
Code:
-- PluginFilter.lua
--
-- Filter für den PluginThread - wird pro aktiven Plugin aufgerufen
--
-- Globales Array "arg" enthält die Daten vom Auswertermodul
--
-- Zusätzliche Werte im Array:
--
-- plugin_name: Name des Plugins, das aufgerufen werden soll
--
-- Rückgabewert:
-- 1= nicht ans Plugin geben (wird NICHT aufgerufen)
-- alle anderen = Plugin wird aufgerufen
--
function pluginFilter()
-- Beispiel aus http://monitord.de/?article=5
-- aufruf eines PHP Skriptes
--
if(arg["typ"] == "zvei" and string.sub(arg["zvei"], 0, 3) == "007" and arg["channelnum"] == "0") then
toexecute = "cmd /c c:\\xampp\\php\\php.exe ";
toexecute = toexecute .. "c:\\programme\\monitord\\sendsms.php ";
toexecute = toexecute .. arg["zvei"] ;
os.execute(toexecute);
end
-- default: alles anzeigen; ändern auf "1" um nichts ans plugin geben!
-- wer keine mySQL Datenbank hat sondern nur das os.execute() will kann hier dann eine 1 zurückgeben.
return 0;
end