Oups, add a lot of missing files

This commit is contained in:
Némunaire 2012-06-30 04:06:59 +02:00
commit 061e73722f
21 changed files with 937 additions and 2 deletions

View file

@ -0,0 +1,5 @@
# coding=utf-8
class Delayed:
def __init__(self):
self.names = dict()

View file

@ -0,0 +1,57 @@
# coding=utf-8
import socket
from datetime import datetime
from datetime import timedelta
from .User import User
class UpdatedStorage:
def __init__(self, url, port):
sock = connect_to_ns(url, port)
self.users = dict()
if sock != None:
users = list_users(sock)
if users is not None:
for l in users:
u = User(l)
if u.login not in self.users:
self.users[u.login] = list()
self.users[u.login].append(u)
self.lastUpdate = datetime.now ()
else:
self.users = None
sock.close()
else:
self.users = None
def update(self):
if datetime.now () - self.lastUpdate < timedelta(minutes=10):
return self
else:
return None
def connect_to_ns(server, port):
try:
s = socket.socket()
s.settimeout(3)
s.connect((server, port))
except socket.error:
return None
s.recv(8192)
return s
def list_users(sock):
try:
sock.send('list_users\n'.encode())
buf = ''
while True:
tmp = sock.recv(8192).decode()
buf += tmp
if '\nrep 002' in tmp or tmp == '':
break
return buf.split('\n')[:-2]
except socket.error:
return None

35
modules/whereis/User.py Normal file
View file

@ -0,0 +1,35 @@
# coding=utf-8
class User(object):
def __init__(self, line):
fields = line.split()
self.login = fields[1]
self.ip = fields[2]
self.location = fields[8]
self.promo = fields[9]
@property
def sm(self):
for sm in CONF.getNodes("sm"):
if self.ip.startswith(sm["ip"]):
return sm["name"]
return None
@property
def poste(self):
if self.sm is None:
if self.ip.startswith('10.'):
return 'quelque part sur le PIE (%s)'%self.ip
else:
return "chez lui"
else:
if self.ip.startswith('10.247') or self.ip.startswith('10.248') or self.ip.startswith('10.249') or self.ip.startswith('10.250'):
return "en " + self.sm + " rangée " + self.ip.split('.')[2] + " poste " + self.ip.split('.')[3]
else:
return "en " + self.sm
def __cmp__(self, other):
return cmp(self.login, other.login)
def __hash__(self):
return hash(self.login)