import os
import shutil
import stat

# Si está configurado OpenGnsys ...
if os.getenv("OPENGNSYS"):
    print(os.getenv("MSG_MAKELINKS", "."))

    # Shell BASH por defecto (para usar "runtest")
    try:
        os.symlink('/bin/bash', '/bin/sh')
    except FileExistsError:
        pass

    # Crear directorio de bloqueos
    os.makedirs('/var/lock', exist_ok=True)
    if not os.path.exists('/var/lock'):
        os.makedirs('/run/lock', exist_ok=True)

    # Crear ficheros temporales.
    oglogcommand = os.getenv("OGLOGCOMMAND")
    oglogsession = os.getenv("OGLOGSESSION")
    temp_files = [oglogcommand, f"{oglogcommand}.tmp", oglogsession, "/tmp/menu.tmp"]
    for temp_file in temp_files:
        with open(temp_file, 'a'):
            os.utime(temp_file, None)
        os.chmod(temp_file, 0o777)

    # Enlaces para Qt Embeded.
    qtdir = "/usr/local"
    os.makedirs(os.path.join(qtdir, 'etc'), exist_ok=True)
    os.makedirs(os.path.join(qtdir, 'lib'), exist_ok=True)
    os.makedirs(os.path.join(qtdir, 'plugins'), exist_ok=True)

    oglib = os.getenv("OGLIB")
    for i in os.listdir(os.path.join(oglib, 'qtlib')) + [os.path.join(oglib, 'fonts')]:
        src = os.path.join(oglib, 'qtlib', i)
        dst = os.path.join(qtdir, 'lib', i)
        if not os.path.exists(dst):
            try:
                os.symlink(src, dst)
            except FileExistsError:
                pass

    for i in os.listdir(os.path.join(oglib, 'qtplugins')):
        src = os.path.join(oglib, 'qtplugins', i)
        dst = os.path.join(qtdir, 'plugins', i)
        if not os.path.exists(dst):
            try:
                os.symlink(src, dst)
            except FileExistsError:
                pass

    ogetc = os.getenv("OGETC")
    for i in os.listdir(ogetc):
        if i.endswith('.qmap'):
            src = os.path.join(ogetc, i)
            dst = os.path.join(qtdir, 'etc', i)
            if not os.path.exists(dst):
                try:
                    os.symlink(src, dst)
                except FileExistsError:
                    pass

    # Autenticación con clave pública para SSH
    if os.path.isfile('/scripts/ssl/authorized_keys'):
        for file in os.listdir('/scripts/ssl'):
            shutil.copy(os.path.join('/scripts/ssl', file), '/root/.ssh')

else:
    # FIXME Error: entorno de OpenGnsys no configurado.
    print("Error: OpenGnsys environment is not configured.")   # FIXME: definir mensaje.
    exit(1)