import os
import subprocess
import socket

#!/usr/bin/env python3


def get_ip_address():
    return socket.gethostbyname(socket.gethostname())

# Fichero de registro de incidencias (en el servidor; si no, en local).
OPENGNSYS = os.getenv('OPENGNSYS', '/opt/opengnsys')
OGLOGFILE = os.getenv('OGLOGFILE', f'{OPENGNSYS}/log/{get_ip_address()}.log')

try:
    with open(OGLOGFILE, 'a'):
        pass
except IOError:
    OGLOGFILE = '/var/log/opengnsys.log'

LOGLEVEL = 5

# Matando plymount para iniciar browser o shell
subprocess.run(['pkill', '-9', 'plymouthd'])

# Arranque de OpenGnsys Client daemon (socket).
print(os.getenv('MSG_LAUNCHCLIENT', '.'))

# Indicar fichero de teclado de Qt para el idioma especificado (tipo "es.qmap").
lang = os.getenv('LANG', '')
if os.path.isfile(f'/usr/local/etc/{lang.split("_")[0]}.qmap'):
    os.environ['QWS_KEYBOARD'] = f'TTY:keymap=/usr/local/etc/{lang.split("_")[0]}.qmap'

ogstatus = os.getenv('ogstatus', '')

if os.path.isfile(f'{OPENGNSYS}/bin/ogAdmClient') and ogstatus != 'offline':
    # Ejecutar servicio cliente.
    subprocess.run([f'{OPENGNSYS}/bin/ogAdmClient', '-f', f'{OPENGNSYS}/etc/ogAdmClient.cfg', '-l', OGLOGFILE, '-d', str(LOGLEVEL)])
else:
    OGMENU = None
    for FILE in ['index', os.getenv('OGGROUP', ''), get_ip_address()]:
        if os.path.isfile(f'{OPENGNSYS}/menus/{FILE}.html'):
            OGMENU = f'{OPENGNSYS}/menus/{FILE}.html'
            break
    if OGMENU:
        subprocess.run([f'{OPENGNSYS}/bin/browser', '-qws', OGMENU])

# Si fallo en cliente y modo "admin", cargar shell; si no, salir.
if os.getenv('ogactiveadmin') == 'true':
    subprocess.run(['bash'])