#!/bin/python

"""
Enable se_linux permission to socket.

Script enable se_linux fscreate and socketcreate
"""

import selinux
import socket
import os
import os.path
import shutil
import sys


socket_dir = "/run/asilservice"
socket_path = socket_dir + "/asilservice.sock"
if os.path.exists(socket_dir):
    shutil.rmtree(socket_dir)

try:
    selinux.setfscreatecon("system_u:object_r:qm_file_t:s0")
    selinux.setsockcreatecon("system_u:system_r:qm_t:s0")
except BaseException as see:
    # selinux is disabled
    print("\nSELinux is disabled, such environment is not recommended\n")
    print("\nSELinux Exception occured:", see)
    pass

server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
os.mkdir(socket_dir)
server.bind(socket_path)
server.listen(1)
conn, addr = server.accept()
try:
    while True:
        data = conn.recv(1024)
        conn.send("ASIL reply: ".encode())
        conn.send(data)
        if data.decode().strip() == "goodbye" or \
                data.decode().strip() == "quit":
            break
except Exception as error:
    print("Exception occured:", error)

print(sys.argv[0] + ": exited\n")
conn.close()
