Ergebnis 1 bis 12 von 12

Thema: monitord - LUA als Skriptsprache ?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    Notiz zum Thema lua:

    In der Konfig kann man nun zwei scripts angeben:

    Code:
    ?>
    
     Monitord 
     screen 
     DEBUG1 
     socketfilter.lua 
     pluginfilter.lua 
    Diese Skripte müssen jeweils eine Funktion bereitstellen, die bei jedem Paket, das verteilt wird aufgerufen wird.

    Für die Sockets ist das die function filter() - z.B. so:

    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
    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:
    -- 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
    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 :)

    Wichtig: Es muss LUA Version 5.1 oder höher sein !
    Geändert von Buebchen (17.08.2009 um 13:39 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •