Add session command to init the opengnsys session

ogAdmClient has a support for initializing the session in the machine. This new
command allows the new ogClient to execute the same script to init the session.
The arguments will be received from the server as a json message. Format:

{ "disk" : "0", "partition" : "1"}
more_events
Alvaro Neira Ayuso 2020-01-02 19:48:14 +01:00 committed by Alvaro Neira Ayuso
parent f566579f8e
commit 2fa8aa4ff7
4 changed files with 36 additions and 3 deletions

View File

@ -13,6 +13,8 @@ class HTTPParser:
self.operation = None
self.URI = None
self.cmd = None
self.partition = None
self.disk = None
def parser(self,data):
self.requestLine, self.headersAlone = data.split('\n', 1)
@ -43,6 +45,12 @@ class HTTPParser:
if "run" in cmd:
self.cmd = jsoncmd["run"]
if "disk" in cmd:
self.disk = jsoncmd["disk"]
if "partition" in cmd:
self.partition = jsoncmd["partition"]
def getHeaderLine(self):
return self.headersAlone
@ -69,3 +77,9 @@ class HTTPParser:
def getCMD(self):
return self.cmd
def getDisk(self):
return self.disk
def getPartition(self):
return self.partition

View File

@ -23,3 +23,7 @@ def execCMD(cmd):
raise ValueError('Error: Incorrect command value')
return result.decode('utf-8')
def procsession(disk, partition):
result = subprocess.check_output([OG_PATH + 'interfaceAdm/IniciarSesion', disk, partition], shell=True)
return result.decode('utf-8')

View File

@ -89,7 +89,7 @@ class ogClient:
if self.trailer and len(self.data) >= self.content_len:
httpparser.parser(self.data)
self.ogrest.processOperation(httpparser.getRequestOP(), httpparser.getURI(), httpparser.getCMD(), self)
self.ogrest.processOperation(httpparser, self)
# Cleanup state information from request
self.data = ""

View File

@ -5,6 +5,8 @@ from enum import Enum
import json
import queue
from src.HTTPParser import *
if platform.system() == 'Linux':
from src.linux import ogOperations
@ -33,6 +35,11 @@ class ogThread():
def reboot():
ogOperations.reboot()
# Process session
def procsession(msgqueue, disk, partition):
msgqueue.queue.clear()
msgqueue.put(ogOperations.procsession(disk, partition))
class ogResponses(Enum):
BAD_REQUEST=0
IN_PROGRESS=1
@ -61,7 +68,9 @@ class ogRest():
msg = msg + '\r\n\r\n'
return msg
def processOperation(self, op, URI, cmd, client):
def processOperation(self, httpparser, client):
op = httpparser.getRequestOP()
URI = httpparser.getURI()
if ("GET" in op):
if ("probe" in URI):
self.process_probe(client)
@ -75,7 +84,9 @@ class ogRest():
elif ("reboot" in URI):
self.process_reboot(client)
elif ("shell/run" in URI):
self.process_shellrun(client, cmd)
self.process_shellrun(client, httpparser.getCMD())
elif ("session" in URI):
self.process_session(client, httpparser.getDisk(), httpparser.getPartition())
else:
client.send(self.getResponse(ogResponses.BAD_REQUEST))
else:
@ -118,3 +129,7 @@ class ogRest():
else:
jsonResp.addElement('out', self.msgqueue.get())
client.send(self.getResponse(ogResponses.OK, jsonResp))
def process_session(self, client, disk, partition):
threading.Thread(target=ogThread.procsession, args=(self.msgqueue, disk, partition,)).start()
client.send(self.getResponse(ogResponses.OK))