Ergebnis 1 bis 8 von 8

Thema: LUA-Scripting und MySQL (Filterung)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registriert seit
    07.09.2003
    Beiträge
    694

    Fehler

    Hallo Forum,

    inzwischen habe ich lua-Unterstützung mit im monitord. Leider funktioniert das Scripting nicht. Ich habe lediglich ein pluginfilter.lua eingebunden.
    Dieses ist gemäß Forumeintrag entstanden:
    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 = {"1680000", "1680004"} ;
    
    function pluginFilter()
            if (arg["plugin_name"]=="mysql") then
                    for index,testwert in pairs(sperrliste) do
                            if (testwert==arg["ric"]) then
                                    return 1
                            end
                    end
            end
            return 0 ;
    end
    Ich bekomme beim Start von monitord folgende Fehlermeldung:
    Code:
    16:27:48.814 ERROR: monitord/PluginThread.cpp(342) Fehler beim Aufruf lua dispatcher POST script:attempt to call a nil value
     16:27:48.814 ERROR: monitord/PluginThread.cpp(349) nicht-numerische Antwort vom lua dispatcher script
    Diese taucht immer auf, wenn eine Auswertung erfolgt. In die Datenbank wird immer eingetragen, egal ob das Script hätte wegfiltern sollen oder nicht.
    Hat jemand das Problem auch schon gehabt und behoben? Wenn ja, wie?

    Danke und Gruß,
    Funkwart

  2. #2
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    Es wird noch eine zweite LUA Funktion aufgerufen

    "pluginFilterPost" - Das sind die Fehlermeldungen, daß ein NIL Wert aufgerufen wurde (weil es nicht da ist) und kein numerischer Wert zurückgegeben wurde (weil es immer noch nicht da ist :) )

    Ich könnte mich spontan nicht dran erinnern, daß ich die damals schon vorgesehen hatte. Aber ist schon lange her. Auf jeden Fall wird die Funktion nachdem pluginFilter aufgerufen. Unabhängig, ob die lua Funktion "pluginFilter" entscheidet das Datenpaket an die Dispatcher zu geben oder nicht.

    Im einfachsten Fall also eine zweite Funktion "pluginFilterPost" in die gleiche LUA-Datei packen. Rückgabewert des lua filters wird zwei erwartet (numerisch) - also "return 0". Der Wert wird eh nicht verarbeitet.

    Als ersten Test bitte mal die Prüfung auf "arg[plugin_name]==mysql" rausnehmen. Ggf. stimmt hier etwas nicht. Gibt eh nur das eine Plugin.

  3. #3
    Registriert seit
    07.09.2003
    Beiträge
    694
    Prima, es klappt. Ich habe
    Code:
    function pluginFilterPost()
            return 0 ;
    end
    in der pluginfilter.lua ergänzt. Keine Fehlermeldungen mehr!

    Danke für Eure Hilfe.

    Gruß,
    Funkwart

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
  •