refs #523 implement inclusionCliente()
parent
bf061b13db
commit
886bf5e616
|
@ -94,7 +94,7 @@ class Logger(object):
|
|||
except Exception:
|
||||
tb = '(could not get traceback!)'
|
||||
|
||||
self.log(DEBUG, tb)
|
||||
self.log(DEBUG, 'traceback follows: "{}"'.format(tb))
|
||||
|
||||
def flush(self):
|
||||
pass
|
||||
|
|
|
@ -51,8 +51,6 @@ from opengnsys.log import logger
|
|||
from opengnsys.scriptThread import ScriptExecutorThread
|
||||
from opengnsys.workers import ServerWorker
|
||||
|
||||
pathinterface = None
|
||||
|
||||
# Check authorization header decorator
|
||||
def check_secret(fnc):
|
||||
"""
|
||||
|
@ -94,27 +92,21 @@ def interfaceAdmin (exe, parametros=[]):
|
|||
logger.debug ('subprocess.run ("{}", capture_output=True)'.format (proc))
|
||||
return subprocess.run (proc, capture_output=True).stdout.strip().decode ('utf-8')
|
||||
|
||||
def tomaIPlocal():
|
||||
logger.debug (__name__)
|
||||
interface = '{}/getIpAddress'.format (pathinterface)
|
||||
try:
|
||||
IPlocal = interfaceAdmin (interface);
|
||||
logger.info (IPlocal)
|
||||
except Exception as e:
|
||||
logger.error (e)
|
||||
logger.error ('No se ha podido recuperar la dirección IP del cliente')
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
class ogAdmClientWorker(ServerWorker):
|
||||
name = 'ogAdmClient' # Module name
|
||||
interface = None # Bound interface for OpenGnsys
|
||||
REST = None # REST object
|
||||
#user = [] # User sessions
|
||||
#session_type = '' # User session type
|
||||
random = None # Random string for secure connections
|
||||
length = 32 # Random string length
|
||||
name = 'ogAdmClient' # Module name
|
||||
interface = None # Bound interface for OpenGnsys
|
||||
REST = None # REST object
|
||||
random = None # Random string for secure connections
|
||||
length = 32 # Random string length
|
||||
|
||||
pathinterface = None
|
||||
IPlocal = None
|
||||
idordenador = None
|
||||
nombreordenador = None
|
||||
cache = None
|
||||
idproautoexec = None
|
||||
idcentro = None
|
||||
idaula = None
|
||||
|
||||
def onActivation(self):
|
||||
"""
|
||||
|
@ -125,12 +117,11 @@ class ogAdmClientWorker(ServerWorker):
|
|||
self.random = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(self.length))
|
||||
# Ensure cfg has required configuration variables or an exception will be thrown
|
||||
try:
|
||||
global pathinterface
|
||||
url = self.service.config.get('ogAdmClient', 'remote')
|
||||
loglevel = self.service.config.get('ogAdmClient', 'log')
|
||||
#servidorAdm = self.service.config.get('ogAdmClient', 'servidorAdm')
|
||||
#puerto = self.service.config.get('ogAdmClient', 'puerto')
|
||||
pathinterface = self.service.config.get('ogAdmClient', 'pathinterface')
|
||||
self.pathinterface = self.service.config.get('ogAdmClient', 'pathinterface')
|
||||
urlMenu = self.service.config.get('ogAdmClient', 'urlMenu')
|
||||
urlMsg = self.service.config.get('ogAdmClient', 'urlMsg')
|
||||
logger.setLevel(loglevel)
|
||||
|
@ -162,7 +153,7 @@ class ogAdmClientWorker(ServerWorker):
|
|||
init_retries = 100
|
||||
for t in range(0, init_retries):
|
||||
try:
|
||||
self.REST.sendMessage('ogagent/started', {'mac': self.interface.mac, 'ip': self.interface.ip,
|
||||
self.REST.sendMessage('started', {'mac': self.interface.mac, 'ip': self.interface.ip,
|
||||
'secret': self.random, 'ostype': operations.os_type,
|
||||
'osversion': operations.os_version,
|
||||
'agent_version': VERSION})
|
||||
|
@ -176,14 +167,18 @@ class ogAdmClientWorker(ServerWorker):
|
|||
elif t == init_retries-1:
|
||||
raise Exception('Initialization error: Cannot connect to remote server')
|
||||
|
||||
tomaIPlocal()
|
||||
if (not self.tomaIPlocal()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
if (not self.inclusionCliente()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
def onDeactivation(self):
|
||||
"""
|
||||
Sends OGAgent stopping notification to OpenGnsys server
|
||||
"""
|
||||
logger.debug('onDeactivation')
|
||||
self.REST.sendMessage('ogagent/stopped', {'mac': self.interface.mac, 'ip': self.interface.ip,
|
||||
self.REST.sendMessage('stopped', {'mac': self.interface.mac, 'ip': self.interface.ip,
|
||||
'ostype': operations.os_type, 'osversion': operations.os_version})
|
||||
|
||||
def processClientMessage(self, message, data):
|
||||
|
@ -318,6 +313,61 @@ with open (subprocs_log, 'ab') as fd: ## TODO improve this logging
|
|||
## process_client_* are invoked from opengnsys/service.py:123 "v.processClientMessage(message, json.loads(data))" (via opengnsys/workers/server_worker.py)
|
||||
|
||||
|
||||
def tomaIPlocal(self):
|
||||
logger.debug (__name__)
|
||||
interface = '{}/getIpAddress'.format (self.pathinterface)
|
||||
try:
|
||||
self.IPlocal = interfaceAdmin (interface);
|
||||
logger.info (self.IPlocal)
|
||||
except Exception as e:
|
||||
logger.error (e)
|
||||
logger.error ('No se ha podido recuperar la dirección IP del cliente')
|
||||
return False
|
||||
return True
|
||||
|
||||
def LeeConfiguracion(self):
|
||||
parametroscfg = interfaceAdmin ('{}/getConfiguration'.format (self.pathinterface)) ## Configuración de los Sistemas Operativos del cliente
|
||||
logger.debug ('parametroscfg ({})'.format (parametroscfg))
|
||||
return (parametroscfg)
|
||||
|
||||
def enviaMensajeServidor(self, path, obj):
|
||||
obj['iph'] = self.IPlocal ## Ip del ordenador
|
||||
obj['ido'] = self.idordenador ## Identificador del ordenador
|
||||
obj['npc'] = self.nombreordenador ## Nombre del ordenador
|
||||
obj['idc'] = self.idcentro ## Identificador del centro
|
||||
obj['ida'] = self.idaula ## Identificador del aula
|
||||
|
||||
res = self.REST.sendMessage (path, obj)
|
||||
|
||||
if (not res): ## TODO
|
||||
#logger.error ('No se ha podido establecer conexión con el Servidor de Administración') ## Error de conexión con el servidor
|
||||
logger.error ('Error al enviar trama ***send() fallo')
|
||||
return False
|
||||
|
||||
return res
|
||||
|
||||
def inclusionCliente(self):
|
||||
cfg = self.LeeConfiguracion()
|
||||
res = self.enviaMensajeServidor ('InclusionCliente', { 'cfg': cfg })
|
||||
logger.debug ('res ({})'.format (res))
|
||||
|
||||
if (not res or 0 == res['res']) :
|
||||
logger.error ('Ha ocurrido algún problema en el proceso de inclusión del cliente')
|
||||
return False
|
||||
|
||||
if (not res['ido'] or not res['npc']):
|
||||
logger.error ('Se han recibido parámetros con valores no válidos')
|
||||
return False
|
||||
|
||||
self.idordenador = res['ido'] ## Identificador del ordenador
|
||||
self.nombreordenador = res['npc'] ## Nombre del ordenador
|
||||
self.cache = res['che'] ## Tamaño de la caché reservada al cliente
|
||||
self.idproautoexec = res['exe'] ## Procedimento de inicio (Autoexec)
|
||||
self.idcentro = res['idc'] ## Identificador de la Unidad Organizativa
|
||||
self.idaula = res['ida'] ## Identificador del aula
|
||||
|
||||
return True
|
||||
|
||||
def process_RESPUESTA_AutoexecCliente(self, path, get_params, post_params, server):
|
||||
logger.warn('in process_RESPUESTA_AutoexecCliente')
|
||||
|
||||
|
|
Loading…
Reference in New Issue