from datetime import datetime, timedelta
-import logging
import re
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib import messages
from django import http
from django.shortcuts import get_object_or_404
from django.utils.timezone import now
-from django.utils.translation import ugettext as _
+from django.utils.translation import gettext as _
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import ListView, CreateView, DeleteView
from services.models import Service
@csrf_exempt
def ssh_keys_seen(request):
- logger = logging.getLogger('django.request')
key = request.GET.get('key')
service = get_object_or_404(Service, key=key)
n = now()
continue
data = parse_log_line(line)
if data is None:
- logger.error('Unparsed: ' + line)
- break
+ continue
dt = data['datetime']
- key = data['algo'], data['md5']
+ algo = data['algo']
+ if 'md5' in data:
+ hash_type = 'md5'
+ hash_value = data['md5']
+ else:
+ hash_type = 'sha256'
+ hash_value = data['sha256']
+ key = algo, hash_type, hash_value
last_seen[key] = max(last_seen.get(key, dt), dt)
for key, dt in last_seen.items():
- algo, md5 = key
+ algo, hash_type, hash_value = key
SSHKey.objects.filter(
Q(last_seen_at=None) | Q(last_seen_at__lt=dt),
algorithm=algo,
- md5_hash=md5
+ **{f'{hash_type}_hash': hash_value}
).update(
last_seen_at=dt
)