Exemple #1
0
    def get(self):
        ## remove any old peers
        plist = Peer.all().filter('datetime <',datetime.now() - timedelta(days=1))
        peercount = plist.count()
        for p in plist:
            p.delete()

        ## remove any empty trackers
        trackers = Tracker.all()
        trackercount = 0
        for tracker in trackers:
            p = Peer.all().filter('tracker =',tracker).order('-datetime').get()
            if p == None:
                tracker.delete()
                trackercount += 1

        ## some simple stats
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write("Cleaned %d trackers and %d peers"%(trackercount,peercount))
        if trackercount and peercount:
            logging.info("Cleaned %d trackers and %d peers"%(trackercount,peercount))
Exemple #2
0
    def get(self,key):
        self.response.headers['Content-Type'] = 'text/plain'
        if re.match(r"\w{3,25}",key): ## check if a tracker is valid
            ## Check if the tracker exists, if not create it
            tracker = GetTracker(key)
            ## Check if the peer making the request is already in the DB, if not add them
            Tick(tracker,self.request.remote_addr)

            ## try getting a given tick if not set the default
            try:
                tick = int(self.request.get('tick'))
            except:
                tick = 60

            ## Get and echo the relevant peers
            plist = Peer.all().filter('tracker =',tracker).filter('datetime >',datetime.now() - timedelta(seconds=tick))
            for peer in plist:
                if peer.address != self.request.remote_addr:
                    self.response.out.write(peer.address+"\n")
        else:
            self.response.out.write('Tracker must contain only numbers, letters and the underscore, it must also be between 3 and 25 charachters')
Exemple #3
0
def Tick(tracker,address):
    p = Peer.all().filter('address =',address).filter('tracker =',tracker).get()
    if p != None:
        p.put()
    else:
        Peer(address=address,tracker=tracker).put()