blob: 979f911fb2fef8c3fd3b2da7475aed69a3af10a8 [file] [log] [blame]
#!/usr/bin/env python3
import os
import sys
import tempfile
import time
file = __file__.split(':/cygwin')[-1]
http_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(os.path.dirname(file)))))
sys.path.insert(0, http_root)
from resources.portabilityLayer import get_request
def extensive_strip(text):
# Sometimes the string ends with \x00
# and .strip() does not remove it
text = text.strip()
while text[-1].encode() == b'\x00':
text = text[:-1]
return text
request = get_request()
beacon_filename = os.path.join(tempfile.gettempdir(), 'beacon{}.txt'.format(request.get('name', '')))
max_attempts = 700
retries = int(request.get('retries', max_attempts))
while not os.path.isfile(beacon_filename) and retries != 0:
time.sleep(0.01)
retries -= 1
sys.stdout.write(
'Content-Type: text/plain\r\n'
'Access-Control-Allow-Origin: *\r\n\r\n'
)
if os.path.isfile(beacon_filename):
with open(beacon_filename, 'r') as beacon_file:
sys.stdout.write('Beacon sent successfully\n')
for line in beacon_file.readlines():
trimmed = extensive_strip(line)
if trimmed != '':
sys.stdout.write('{}\n'.format(trimmed))
os.remove(beacon_filename)
else:
sys.stdout.write('Beacon not sent\n')