intertwingly

It’s just data

Wiki Spam Throttle


def isForbidden(self):
   """ only allow two anonymous posts per hour per ip address"""
   if self.request_method == 'POST' and not self.user.name:
     lasthour=str(time.time()-3600)
     log=os.path.join(config.data_dir, 'event.log')
     file=open(log)
     pages={}
     for line in file:
       if line>lasthour and line.find("SAVEPAGE")>=0:
         if self.remote_addr == line.split('&')[1].split('=')[1]:
           pages[line.split('&')[0].split('=')[1]]='1'
           if len(pages) >= 2: return True
     file.close()

Update: I've changed it to allow only two pages to be updated per hour. A single page may be updated multiple times without penalty.