Notiz zum Thema lua:
In der Konfig kann man nun zwei scripts angeben:
Diese Skripte müssen jeweils eine Funktion bereitstellen, die bei jedem Paket, das verteilt wird aufgerufen wird.Code:?>Monitord screen DEBUG1 socketfilter.lua pluginfilter.lua
Für die Sockets ist das die function filter() - z.B. so:
für die plugins ( bisher nur das mysql plugin ) es es die function pluginfilter. Der Name des plugins wird in der monitord.xml definiert (name="mysql", name="mysql1", ...). Man kann also auch mehrere mysql Plugins laden um die Daten in einzelne DBs zu schreiben. Anhand des Namen kann man dann unterschiedliche Daten sperren oder passieren lassen.Code:-- SocketFilter.lua -- -- Filter für den SocketServer - wird pro aktiven Client aufgerufen -- -- Globales Array "arg" enthält die Daten vom Auswertermodul -- -- Zusätzliche Werte im Array: -- -- client_authenticated: 0/1 (1=angemeldet) -- client_ip: IP-Adresse des Clients -- client_loginname: Anmeldename -- client_type: fms32, crusader, monitord -- -- Rückgabewert: 0 = an Client senden, 1= nicht an Client senden, alle anderen = an Client senden -- local sperrliste = {"1111111", "2222222"} ; function myfilterFMS32() for index,testwert in pairs(sperrliste) do if (testwert==arg["ric"]) then return 1 end end return 0 ; end function filter() local dummyValue=1 ; -- wird für jedes Telegramm (pocsag, fms, zvei) aufgerufen if (arg["client_type"]=="fms32") then return myfilterFMS32() ; end if (arg["client_type"]=="crusader") then -- nix dummyValue=2 ; end if (arg["client_type"]=="monitord") then -- nix dummyValue=3 ; end return 0; end
den Inhalt des arg Array kann man einsehen, wenn man sich im Debugmodus das Protokoll anschaut. Ich schreibe das hier, damit ich später selbst noch weiss, was ich getan habe :)Code:-- pluginfilter.lua -- -- Filter für den SocketServer - wird pro aktiven Client aufgerufen -- -- Globales Array "arg" enthält die Daten vom Auswertermodul -- -- Zusätzliche Werte im Array: -- -- plugin_name: z.B. mysql (aus monitord.xml) -- -- Rückgabewert: 0 = an Client senden, 1= nicht an Client senden, alle anderen = an Client senden -- local sperrliste = {"1111111", "2222222"} ; function pluginFilter() if (arg["plugin_name"]=="mysql1") then for index,testwert in pairs(sperrliste) do if (testwert==arg["ric"]) then return 1 end end end return 0 ; end
Wichtig: Es muss LUA Version 5.1 oder höher sein !




Zitieren