refs #786 implement process_ConsolaRemota()
parent
62a2514569
commit
e28094ec1b
|
@ -1,3 +1,9 @@
|
|||
ogagent (1.3.8-1) stable; urgency=medium
|
||||
|
||||
* Add more functionality to the ogAdmClient module
|
||||
|
||||
-- OpenGnsys developers <info@opengnsys.es> Tue, 01 Oct 2024 13:41:48 +0200
|
||||
|
||||
ogagent (1.3.7-1) stable; urgency=medium
|
||||
|
||||
* CloningEngine: RESTfully keep a list of long-running jobs
|
||||
|
|
|
@ -167,6 +167,11 @@ def disponibilidad_comandos():
|
|||
|
||||
return jsonify({})
|
||||
|
||||
@app.route('/opengnsys/rest/ogAdmClient/recibeArchivo', methods=['POST'])
|
||||
def oac_recibe_archivo():
|
||||
logging.info(f'{request.get_json()}')
|
||||
return jsonify({'anything':'anything'}) ## if we return {}, then we trigger "if not {}" which happens to be true
|
||||
|
||||
@app.route('/opengnsys/rest/ogAdmClient/<cucu>', methods=['GET', 'POST'])
|
||||
def oac_cucu(cucu):
|
||||
#j = request.get_json(force=True)
|
||||
|
@ -181,7 +186,7 @@ def oac_cucu(cucu):
|
|||
## agente oglive: modulo CloningEngine
|
||||
|
||||
@app.route('/opengnsys/rest/CloningEngine/recibeArchivo', methods=['POST'])
|
||||
def recibe_archivo():
|
||||
def ce_recibe_archivo():
|
||||
logging.info(f'{request.get_json()}')
|
||||
return jsonify({'anything':'anything'}) ## if we return {}, then we trigger "if not {}" which happens to be true
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
1.3.7
|
||||
1.3.8
|
||||
|
|
|
@ -50,21 +50,6 @@ class CloningEngineWorker (ogLiveWorker):
|
|||
def onDeactivation (self):
|
||||
logger.debug ('onDeactivation')
|
||||
|
||||
## en C, esto envia una trama de respuesta al servidor. Devuelve un boolean
|
||||
## en python, simplemente termina de construir la respuesta y la devuelve; no envía nada por la red. El caller la usa en return() para enviar implícitamente la respuesta
|
||||
def respuestaEjecucionComando (self, cmd, herror, ids):
|
||||
if ids: ## Existe seguimiento
|
||||
cmd['ids'] = ids ## Añade identificador de la sesión
|
||||
|
||||
if 0 == herror: ## el comando terminó con resultado satisfactorio
|
||||
cmd['res'] = 1
|
||||
cmd['der'] = ''
|
||||
else: ## el comando tuvo algún error
|
||||
cmd['res'] = 2
|
||||
cmd['der'] = self.tbErroresScripts[herror] ## XXX
|
||||
|
||||
return cmd
|
||||
|
||||
def InventariandoSoftware (self, dsk, par, sw, nfn):
|
||||
sft_src = f'/tmp/CSft-{self.IPlocal}-{par}'
|
||||
try:
|
||||
|
|
|
@ -36,6 +36,8 @@ import base64
|
|||
#import threading
|
||||
#import time
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
from urllib.parse import unquote
|
||||
|
||||
#from opengnsys import operations
|
||||
from opengnsys.log import logger
|
||||
|
@ -421,7 +423,36 @@ class ogAdmClientWorker (ogLiveWorker):
|
|||
return {} ## ogAdmClient.c:920
|
||||
|
||||
def process_ConsolaRemota (self, path, get_params, post_params, server):
|
||||
logger.warning ('in process_ConsolaRemota')
|
||||
logger.debug ('in process_ConsolaRemota, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
|
||||
|
||||
for k in ['nfn', 'scp']:
|
||||
if k not in post_params:
|
||||
logger.error (f'required parameter ({k}) not in POST params')
|
||||
return {}
|
||||
|
||||
nfn = unquote (post_params['nfn'])
|
||||
scp = unquote (post_params['scp'])
|
||||
filescript = f'/tmp/_script_{self.IPlocal}'
|
||||
ecosrc = f'/tmp/_econsola_{self.IPlocal}'
|
||||
ecodst = f'/tmp/_Seconsola_{self.IPlocal}' ## Nombre que tendra el archivo en el Servidor
|
||||
|
||||
with open (filescript, 'w') as fd:
|
||||
fd.write (scp)
|
||||
|
||||
try:
|
||||
self.interfaceAdmin (nfn, [filescript, ecosrc])
|
||||
ecosrc_contents = Path (ecosrc).read_bytes()
|
||||
except:
|
||||
logger.error ('Error al ejecutar el comando')
|
||||
return {}
|
||||
|
||||
logger.debug ('sending recibeArchivo to server')
|
||||
res = self.enviaMensajeServidor ('recibeArchivo', { 'nfl': ecodst, 'contents': base64.b64encode (ecosrc_contents).decode ('utf-8') })
|
||||
logger.debug (res)
|
||||
if not res:
|
||||
logger.error ('Ha ocurrido algún problema al enviar un archivo por la red')
|
||||
|
||||
return {}
|
||||
|
||||
def process_Arrancar (self, path, get_params, post_params, server):
|
||||
logger.warning ('in process_Arrancar')
|
||||
|
|
|
@ -114,6 +114,21 @@ class ogLiveWorker(ServerWorker):
|
|||
|
||||
return res
|
||||
|
||||
## en C, esto envia una trama de respuesta al servidor. Devuelve un boolean
|
||||
## en python, simplemente termina de construir la respuesta y la devuelve; no envía nada por la red. El caller la usa en return() para enviar implícitamente la respuesta
|
||||
def respuestaEjecucionComando (self, cmd, herror, ids=None):
|
||||
if ids: ## Existe seguimiento
|
||||
cmd['ids'] = ids ## Añade identificador de la sesión
|
||||
|
||||
if 0 == herror: ## el comando terminó con resultado satisfactorio
|
||||
cmd['res'] = 1
|
||||
cmd['der'] = ''
|
||||
else: ## el comando tuvo algún error
|
||||
cmd['res'] = 2
|
||||
cmd['der'] = self.tbErroresScripts[herror] ## XXX
|
||||
|
||||
return cmd
|
||||
|
||||
def cargaPaginaWeb (self, url=None):
|
||||
if (not url): url = self.urlMenu
|
||||
os.system ('pkill -9 browser')
|
||||
|
|
Loading…
Reference in New Issue