--- BitTorrent/track.py 3 Nov 2004 17:06:25 -0000 1.1.1.11.2.14 +++ BitTorrent/track.py 4 Feb 2006 22:12:48 -0000 @@ -12,7 +12,7 @@ from os import rename from os.path import exists, isfile from cStringIO import StringIO -from time import time, gmtime, strftime +from time import time, gmtime, strftime, ctime from random import shuffle from sha import sha from types import StringType, IntType, LongType, ListType, DictType @@ -165,15 +165,62 @@ self.ips_autentificadas=mydict(default=(0,'-')) self.usuarios_autentificados=mydict(default=None) self.ips_autentificadas_timeout=0 + self.ips_historico=mydict(default=None) + + def publica_ips(cola) : + while True : + ips=cola.get() + while True : + while True : + try : + ips=cola.get_nowait() + except : + break + import time + data=time.ctime()+"\n\n" + i=ips.items() + i.sort(lambda x,y : cmp((x[1][0].lower(),-x[1][1]),(y[1][0].lower(),-y[1][1]))) + for i,j in i : + j,k=j + if k : + data+="%15s : %-40s%s\n" %(i,j,ctime(k)) + else : + data+="%15s : %s\n" %(i,j) + try : + import base64 + import httplib + + http=httplib.HTTPConnection("**SERVIDOR**",**PUERTO**) + http.request("PUT","**PATH**", data, \ + {"Authorization":"Basic %s" %base64.encodestring("%s:%s" \ + %("tracker-actualizacion_ip_dinamica","**CLAVE**"))}) + assert (http.getresponse().status // 100) == 2 + except : + import time + time.sleep(15) + else : + break + + import threading + import Queue + self.queue_ips_historico=Queue.Queue() + t=threading.Thread(target=publica_ips,args=(self.queue_ips_historico,)) + t.setDaemon(True) + t.start() + del t import sys f=open("z-usuarios-ip-fija.txt") for i in f : i,j=i.split() self.ips_autentificadas[i]=(sys.maxint,j) + self.ips_historico[i]=(j,0) self.usuarios_autentificados[j]=i f.close() + import copy + self.queue_ips_historico.put(copy.copy(self.ips_historico)) + self.usuarios={} f=open("z-usuarios-claves.txt") for i in f : @@ -408,6 +455,11 @@ self.usuarios_autentificados[usuario]=ip_nueva_usuario self.ips_autentificadas[ip_nueva_usuario]=(t+300,usuario) self.ips_autentificadas_timeout=min(self.ips_autentificadas_timeout,60+t) + if not self.ips_historico[ip_nueva_usuario] : + self.ips_historico[ip_nueva_usuario]=(usuario,t) + import copy + self.queue_ips_historico.put(copy.copy(self.ips_historico)) + return (200, 'OK', {'Content-Type': 'text/plain', "x-jcea-autentificacion-tiempo": "60", 'Pragma': 'no-cache'}, 'OK\n',usuario)