#!/usr/bin/python3 import sys import os import os.path import locale import importlib.util ## required for defining OGLOGFILE import NetLib ip = NetLib.ogGetIpAddress() def load_lang (name): global lang if name in sys.modules: return True elif (spec := importlib.util.find_spec (name)) is not None: lang = importlib.util.module_from_spec (spec) sys.modules[name] = lang spec.loader.exec_module (lang) return True else: #print(f"can't find the {name!r} module") return False l = locale.getlocale()[0] if not l: print (f"couldn't set locale") if not l or not load_lang (f'lang_{l}'): if not load_lang ('lang_en_GB'): raise ModuleNotFoundError (f"can't find the default language module", name=name) TZ='Europe/Madrid' ## engine.cfg OGLOGSESSION='/tmp/session.log' OGLOGCOMMAND='/tmp/command.log' #OGWINCHKDISK=True #Hacer chkdisk tras la clonacion ACTIONCACHEFULL='NONE' #Que hacer cuando la cache no tenga espacio libre. [ NONE | FORMAT ] ] RESTOREPROTOCOLNOTCACHE=None #Que protocolo de restauracion usar en el caso de que no exista cache o no exista espacio sufiente. [NONE | UNICAST | MULTICAST].NONE retorna error IMGPROG='partclone' IMGCOMP='lzop' IMGEXT='img' IMGREDUCE=True #OGWINREDUCE=True #Al enviar particion reducir el sistema de archivos previamente. MCASTERRORSESSION=120 #timeout (segundos) para abortar la sesion de multicast si no contacta con el servidor de multicast. Valor asignado a 0, utiliza los valores por defecto de udp-cast MCASTWAIT=30 # timeout (segundos) para abortar la la transferencia si se interrumpe. Valor asignado a 0, utiliza los valores por defecto de udp-cast #CREATESPEED=100000*4 # Factor para calcular el time-out al crear la imagen. 100000k -> 4s #FACTORSYNC=120 # Factor de compresion para las imagenes (windos en ext4). #BACKUP=False # Realizar copia de seguridad antes de crear la imagen. #IMGFS='EXT4' # Sistema de archivo de la imagenes sincronizadas. EXT4 o BTRFS #OGSLEEP=20 # Tiempo de sleep antes de realizar el reboot NODEBUGFUNCTIONS=['ogCreateImageSyntax', 'ogGetHivePath', 'ogGetOsType', 'ogRestoreImageSyntax', 'ogUnmountAll', 'ogUnmountCache'] # Funciones que no deben mostrar salida de avisos si son llamadas por otras funciones. #DEFAULTSPEED='' ## /engine.cfg ## loadenviron.sh OPENGNSYS = '/opt/opengnsys' OGBIN = os.path.join (OPENGNSYS, 'bin') OGETC = os.path.join (OPENGNSYS, 'etc') OGLIB = os.path.join (OPENGNSYS, 'lib') OGAPI = os.path.join (OGLIB, 'engine', 'bin') OGPYFUNCS = os.path.join (OPENGNSYS, 'functions') OGSCRIPTS = os.path.join (OPENGNSYS, 'scripts') OGIMG = os.path.join (OPENGNSYS, 'images') OGCAC = os.path.join (OPENGNSYS, 'cache') OGLOG = os.path.join (OPENGNSYS, 'log') OGLOGFILE = f'{OGLOG}/{ip}.log' DEBUG = 'yes' _path = os.environ['PATH'] + ':/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin:/opt/oglive/rootfs/opt/drbl/sbin' os.environ['PATH'] = ':'.join ([OGSCRIPTS, _path, OGAPI, OGBIN]) if os.path.exists ('/tmp/initrd.cfg'): with open ('/tmp/initrd.cfg', 'r') as fd: initrd_cfg = fd.read() for l in initrd_cfg.splitlines(): if not l.startswith ('DEVICECFG='): continue ## eg. "DEVICECFG=/run/net-enp0s3.conf" device_cfg = l.split ('=')[1] if os.path.exists (device_cfg): with open (device_cfg, 'r') as fd: contents = fd.read() exec (contents) ## !!! ## example contents: #DEVICE='enp0s3' #PROTO='none' #IPV4ADDR='192.168.2.11' #IPV4BROADCAST='192.168.2.255' #IPV4NETMASK='255.255.255.0' #IPV4GATEWAY='192.168.2.1' #IPV4DNS0='0.0.0.0' #IPV4DNS1='0.0.0.0' #HOSTNAME='pc1' #DNSDOMAIN='' #NISDOMAIN='' #ROOTSERVER='10.0.2.15' #ROOTPATH='' #filename='' #UPTIME='161' #DHCPLEASETIME='0' #DOMAINSEARCH='' break ## /loadenviron.sh # Declaración de códigos de error. OG_ERR_FORMAT=1 # Formato de ejecución incorrecto. OG_ERR_NOTFOUND=2 # Fichero o dispositivo no encontrado. OG_ERR_PARTITION=3 # Error en partición de disco. OG_ERR_LOCKED=4 # Partición o fichero bloqueado. OG_ERR_IMAGE=5 # Error al crear o restaurar una imagen. OG_ERR_NOTOS=6 # Sin sistema operativo. OG_ERR_NOTEXEC=7 # Programa o función no ejecutable. # Códigos 8-13 reservados por ogAdmClient.h OG_ERR_NOTWRITE=14 # No hay acceso de escritura OG_ERR_NOTCACHE=15 # No hay particion cache en cliente OG_ERR_CACHESIZE=16 # No hay espacio en la cache para almacenar fichero-imagen OG_ERR_REDUCEFS=17 # Error al reducir sistema archivos OG_ERR_EXTENDFS=18 # Error al expandir el sistema de archivos OG_ERR_OUTOFLIMIT=19 # Valor fuera de rango o no válido. OG_ERR_FILESYS=20 # Sistema de archivos desconocido o no se puede montar OG_ERR_CACHE=21 # Error en partición de caché local OG_ERR_NOGPT=22 # El disco indicado no contiene una particion GPT OG_ERR_REPO=23 # Error al montar el repositorio de imagenes OG_ERR_NOMSDOS=24 # El disco indicado no contienen una particion MSDOS OG_ERR_IMGSIZEPARTITION=30 # Error al restaurar partición más pequeña que la imagen OG_ERR_UPDATECACHE=31 # Error al realizar el comando updateCache OG_ERR_DONTFORMAT=32 # Error al formatear OG_ERR_IMAGEFILE=33 # Archivo de imagen corrupto o de otra versión de $IMGPROG OG_ERR_GENERIC=40 # Error imprevisto no definido OG_ERR_UCASTSYNTAXT=50 # Error en la generación de sintaxis de transferenica UNICAST OG_ERR_UCASTSENDPARTITION=51 # Error en envío UNICAST de partición OG_ERR_UCASTSENDFILE=52 # Error en envío UNICAST de un fichero OG_ERR_UCASTRECEIVERPARTITION=53 # Error en la recepcion UNICAST de una particion OG_ERR_UCASTRECEIVERFILE=54 # Error en la recepcion UNICAST de un fichero OG_ERR_MCASTSYNTAXT=55 # Error en la generacion de sintaxis de transferenica Multicast. OG_ERR_MCASTSENDFILE=56 # Error en envio MULTICAST de un fichero OG_ERR_MCASTRECEIVERFILE=57 # Error en la recepcion MULTICAST de un fichero OG_ERR_MCASTSENDPARTITION=58 # Error en envio MULTICAST de una particion OG_ERR_MCASTRECEIVERPARTITION=59 # Error en la recepcion MULTICAST de una particion OG_ERR_PROTOCOLJOINMASTER=60 # Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER OG_ERR_DONTMOUNT_IMAGE=70 # Error al montar una imagen sincronizada. OG_ERR_DONTSYNC_IMAGE=71 # Imagen no sincronizable (es monolitica) OG_ERR_DONTUNMOUNT_IMAGE=72 # Error al desmontar la imagen OG_ERR_NOTDIFFERENT=73 # No se detectan diferencias entre la imagen basica y la particion. OG_ERR_SYNCHRONIZING=74 # Error al sincronizar, puede afectar la creacion/restauracion de la imagen OG_ERR_NOTUEFI=80 # La interfaz UEFI no está activa OG_ERR_NOTBIOS=81 # La interfaz BIOS legacy no está activa