Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Tom Bombadil
    @Tom-Bom-badil
    Ich bastel das shNG-Kommando bereits im ESP zusammen
    psilo909
    @psilo909
    aber woher weiss das plugin, dass der in receiver_port_2423 soll?
    Tom Bombadil
    @Tom-Bom-badil
    geb es dann per UDP rüber ans NAS, auf dem shNG läuft
    und dort wird der Wert durch das Receiver-Item per eval gesetzt
    Weil der receiver auf den Port eingestellt ist?
    psilo909
    @psilo909
    das item hoert konkret auf dem port?
    und nur das
    Tom Bombadil
    @Tom-Bom-badil
    ja
    psilo909
    @psilo909
    genau
    ich bin nicht sicher ob dann die methode überhaupt richtig ist, die den fehler wirft
    kenne das plugin aber auch nicht soo gut
    dispatcher = UDPDispatcher(self.parse_input, ip, port)
    hmm
    Tom Bombadil
    @Tom-Bom-badil
    Ich hatte mich eingangs gewundert (2018, als ich den obigen Versuch aus dem Forum gestartet habe) - bei TCP war in der Doku ein festes Format vorgegeben, bei UDP nicht. Deshalb hatte ich den String probiert und mich gefreut, dass es lief.
    psilo909
    @psilo909
            if 'nw_udp_listen' in obj.conf:
                ip, sep, port = obj.conf['nw_udp_listen'].rpartition(':')
                if not ip:
                    ip = '0.0.0.0'
                dest = 'udp:' + ip + ':' + port
                if dest not in self.special_listeners:
                    if self.add_listener('udp', ip, port):
                        self.special_listeners[dest][obj_type + 's'][oid] = {obj_type: obj, 'acl': acl}
                    else:
                        self.logger.warning("Could not add listener {} for {}".format(dest, oid))
                else:
                    self.special_listeners[dest][obj_type + 's'][oid] = {obj_type: obj, 'acl': acl}
    das ist dein item
    ist das ein special listener
    weil offenbar läuft er in if dest not in self.special_listeners:
    und hängt den generischen udp listener rein
    der dann in die methode mit dem split delegiert
            if generic:
                self.generic_listeners[dest] = {'items': {}, 'logics': {}, 'acl': acl}
            else:
                self.special_listeners[dest] = {'items': {}, 'logics': {}, 'acl': acl}
    Tom Bombadil
    @Tom-Bom-badil
    Die Parsing-Probleme, von denen Martin gestern sprach, betreffen nur yaml, richtig? Oder könnte das auch hier Auswirkungen haben?
    Ich kann das problem umgehen, indem ich ihm liefere, was er will (1|2|3) - dauert ne halbe Stunde, alle ESP's umzukonfigurieren. Dann ein split in's eval und schon müsste es wieder laufen ...
    psilo909
    @psilo909
    eigentlich nur yaml
    Tom Bombadil
    @Tom-Bom-badil
    Die jetzige Arbeitsweise des Plugins hätte den Vorteil, dass UDP nun so arbeitet wie TCP.
    psilo909
    @psilo909
    aus meiner sicht ist die listener zuordnung falsch
    bei dfir
    logge mal raus wo das item drinhaengt
    Tom Bombadil
    @Tom-Bom-badil
    siehe mein Beispiel von gestern
    psilo909
    @psilo909
    wobei es auch nur einen udpdispatcher gibt
    und der geht immer auf diese methode
    dispatcher = UDPDispatcher(self.parse_input, ip, port)
    wobei ne
      if dest in self.generic_listeners:
            inp = data.split(self.input_seperator, 2)  # max 3 elements
    elif dest in self.special_listeners:
            proto, t1, t2 = dest.partition(':')
            if proto == 'udp':
                gacl = self.udp_acl
    also check mal ob dein ding in den special listeners ist
    und nicht gleichzeitig in den generic_listeners
    das müsste eigentlich aufgerufen werden:
            for entry in self.special_listeners[dest]['items']:
                lacl = self.special_listeners[dest]['items'][entry]['acl']
                item = self.special_listeners[dest]['items'][entry]['item']
                if lacl:
                    if source not in lacl:
                        self.logger.error("Item {0} acl doesn't permit triggering from {1}.".format(item.id(), source))
                        return False
                elif gacl:
                    if source not in gacl:
                        self.logger.error("Generic network acl doesn't permit triggering from {0}.".format(source))
                        return False
                item(data, 'network', source)
    dann würde genau das passieren was du willst
    offenbar zweigt er aber im ersten if schon ab
    ich adde mal dein item bei mir
    Tom Bombadil
    @Tom-Bom-badil
    ok, ich check auch mal ... kann es sein, dass durch die yaml-Problematik vielleicht die configs anders geparsed werden?
    Wobei, die hab ich schon hoch und runter geprüft
    psilo909
    @psilo909
    2019-05-13 19:22:12 ERROR plugins.network add_listener udp:0.0.0.0:2423
    das ist zweig:
        else:
            self.logger.error(dest)
            self.special_listeners[dest] = {'items': {}, 'logics': {}, 'acl': acl}
        return True
    also da drin ist es schon mal