import simplejson as json from django.http import HttpResponse from pyi2phosts.postkey.models import i2phost from pyi2phosts.lib.utils import get_b32 def all(request): """Return all hosts in { "b32": "last seen timestamp" } form. Implemented by zzz request. """ # all hosts seen at least once queryset = i2phost.objects.exclude(last_seen=None) json_dict = {} for host in queryset: # pass last_seen to json in unixtime json_dict[get_b32(host.b64hash)] = host.last_seen.strftime("%s") return HttpResponse(json.dumps(json_dict), content_type="application/json") def status(request): """ Return all hosts in { "hostname": hostname, "b64": b64, "b32": b32, "last-seen": timestamp } form. Implemented by MXPLRS|Kirill request. """ # host status if 'q' in request.GET and request.GET['q'] is not None and request.GET['q'] != '': hostname = request.GET['q'] else: json_dict = { 'error': 'Bad request', } return HttpResponse(json.dumps(json_dict), content_type="application/json") try: host = i2phost.objects.get(name=hostname) except: host = None if host and host.last_seen: json_dict = { 'hostname': host.name, 'b64': host.b64hash, 'b32': get_b32(host.b64hash), 'last-seen': host.last_seen.strftime("%s"), } elif host and not host.last_seen: json_dict = { 'hostname': host.name, 'b64': host.b64hash, 'b32': get_b32(host.b64hash), 'error': 'Never seen', } else: json_dict = { 'hostname': hostname, 'error': 'Not found', } return HttpResponse(json.dumps(json_dict), content_type="application/json")