Beispiel #1
0
    def HandlePong(self, sPong, sOrigin):
        """Handle incoming Pong

        Called by CRPCRequestHandler.Pong().
        Reset LastNetAction-time.
        Pass PONG to cOwlManager.Answer().

        """

        try:
            # reset WatchDog
            pManager.manager.ResetWatchdog(self.WatchDogID)

            # create cDOM from ascii-Pong
            domPong = cDOM.cDOM()
            domPong.ParseString(sPong)
            # create cNetPackage from DOM-Pong
            cPong = cNetPackage.cPong()
            cPong.ParseDOM(domPong)

            # check if i am the first hop of this pong (answerer ip set to 127.0.0.1)
            # -> set answerer ip!
            if cPong.GetAnswerer()[0]=='127.0.0.1':
                pManager.manager.DebugStr('cNetManager '+ __version__ +': First hop. Setting Answerer IP to %s' % (sOrigin), 3)
                cPong.SetAnswererIP(sOrigin)

            # set originator ip
            cPong.SetOriginatorIP(sOrigin)

            # log incoming pong
            pManager.manager.DebugStr('cNetManager '+ __version__ +': Incoming Pong from %s:%s' % (str(cPong.GetAnswerer()[0]), str(cPong.GetAnswerer()[1])), 2)

            # extract PONG-source and add to own list of owls
            self.ExtractPongSource(cPong)

            # pass to cOwlManager
            pManager.manager.DebugStr('cNetManager '+ __version__ +': Passing Pong to cOwlManager.Answer()', 3)
            self.cOwlManager.Answer(cPong)
        except:
            # unknown error. log and forget.
            # get exception
            eType, eValue, eTraceback = sys.exc_info()

            # build stacktrace string
            tb = ''
            for line in traceback.format_tb(eTraceback, 15):
                tb = tb + line

            pManager.manager.DebugStr('pNetwork '+ __version__ +': Unhandled error in thread HandlePong(): Type: '+str(eType)+', value: '+str(eValue), 2)
            pManager.manager.DebugStr('pNetwork '+ __version__ +': Traceback:\n'+str(tb), 3)
Beispiel #2
0
    def GeneratePong(self, cPing):
        """Generate and return a cPong Object"""

        # generate pong
        cPong = cNetPackage.cPong()
        # set id from ping
        cPong.SetID(cPing.GetID())
        # set originator
        cPong.SetOriginatorPort(self.cNetServer.GetListenPort())
        # set iOwl-Version
        cPong.SetOwlVersion(pManager.manager.GetVersion())
        # set network protocol version
        cPong.SetProtocolVersion(self.sProtocol)
        # set answererPort
        cPong.SetAnswererPort(self.cNetServer.GetListenPort())

        return cPong