Detect someone bypassing trotec computer

This commit is contained in:
Tanner Collin 2022-04-25 20:33:46 +00:00
parent e9d210e846
commit 4c1752c07d

View File

@ -673,6 +673,7 @@ class StatsViewSet(viewsets.ViewSet, List):
return Response(200) return Response(200)
# TODO: keep track of last report to ensure PS internet didn't cut out
@action(detail=False, methods=['post']) @action(detail=False, methods=['post'])
def usage(self, request): def usage(self, request):
if 'device' not in request.data: if 'device' not in request.data:
@ -681,12 +682,15 @@ class StatsViewSet(viewsets.ViewSet, List):
device = request.data['device'] device = request.data['device']
data = request.data.get('data', None) data = request.data.get('data', None)
username_isfrom_track = False
if 'username' in request.data: if 'username' in request.data:
username = request.data['username'] username = request.data['username']
else: else:
track = cache.get('track', {}) track = cache.get('track', {})
try: try:
username = track[device]['username'] username = track[device]['username']
username_isfrom_track = True
except KeyError: except KeyError:
msg = 'Usage tracker problem finding username for device: {}'.format(device) msg = 'Usage tracker problem finding username for device: {}'.format(device)
utils.alert_tanner(msg) utils.alert_tanner(msg)
@ -708,6 +712,12 @@ class StatsViewSet(viewsets.ViewSet, List):
if should_count: if should_count:
start_new_use = not last_use or last_use.finished_at or last_use.username != username start_new_use = not last_use or last_use.finished_at or last_use.username != username
if start_new_use: if start_new_use:
if username_isfrom_track and time.time() - track[device]['time'] > 300:
msg = 'Usage tracker problem expired username {} for device: {}'.format(username, device)
utils.alert_tanner(msg)
logger.error(msg)
username = ''
try: try:
user = User.objects.get(username__iexact=username) user = User.objects.get(username__iexact=username)
except User.DoesNotExist: except User.DoesNotExist: