diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ogClient.py | 9 | ||||
-rw-r--r-- | src/ogProcess.py | 17 | ||||
-rw-r--r-- | src/ogRest.py | 14 |
3 files changed, 31 insertions, 9 deletions
diff --git a/src/ogClient.py b/src/ogClient.py index 4fbdfab..c1a911d 100644 --- a/src/ogClient.py +++ b/src/ogClient.py @@ -12,6 +12,7 @@ from enum import Enum class State(Enum):
CONNECTING = 0
RECEIVING = 1
+ FORCE_DISCONNECTED = 2
class ogClient:
def __init__(self, ip, port):
@@ -84,10 +85,8 @@ class ogClient: if self.trailer and len(self.data) >= self.content_len:
httpparser.parser(self.data)
- if not ogprocess.processOperation(httpparser.getRequestOP(), httpparser.getURI()):
- self.sock.send(bytes('HTTP/1.0 400 Bad request\r\n\r\n', 'utf-8'))
- else:
- self.sock.send(bytes('HTTP/1.0 200 OK\r\n\r\n', 'utf-8'))
+ if not ogprocess.processOperation(httpparser.getRequestOP(), httpparser.getURI(), self.sock):
+ self.state = State.FORCE_DISCONNECTED
# Cleanup state information from request
self.data = ""
@@ -102,6 +101,8 @@ class ogClient: if state == State.CONNECTING:
readset = [ sock ]
writeset = [ sock ]
+ elif state == State.FORCE_DISCONNECTED:
+ return 0
else:
readset = [ sock ]
writeset = [ ]
diff --git a/src/ogProcess.py b/src/ogProcess.py index 6601b8c..def76f1 100644 --- a/src/ogProcess.py +++ b/src/ogProcess.py @@ -1,22 +1,29 @@ import threading import platform import time +from src import ogRest if platform.system() == 'Linux': from src.linux import ogOperations class ogProcess(): - def processOperation(self, op, URI): + def processOperation(self, op, URI, sock): if ("poweroff" in URI): + sock.send(bytes(ogRest.getResponse(ogRest.ogResponses.IN_PROGRESS), 'utf-8')) + sock.close() self.process_poweroff() - return 1 + return 0 elif ("reboot" in URI): + sock.send(bytes(ogRest.getResponse(ogRest.ogResponses.IN_PROGRESS), 'utf-8')) + sock.close() self.process_reboot() - return 1 + return 0 elif ("probe" in URI): - return 1 + sock.send(bytes(ogRest.getResponse(ogRest.ogResponses.OK), 'utf-8')) + else: + sock.send(bytes(ogRest.getResponse(ogRest.ogResponses.BAD_REQUEST), 'utf-8')) - return 0 + return 1 def process_reboot(self): # Rebooting thread diff --git a/src/ogRest.py b/src/ogRest.py new file mode 100644 index 0000000..dfc382c --- /dev/null +++ b/src/ogRest.py @@ -0,0 +1,14 @@ +from enum import Enum + +class ogResponses(Enum): + BAD_REQUEST=0 + IN_PROGRESS=1 + OK=2 + +def getResponse(response): + if response == ogResponses.BAD_REQUEST: + return 'HTTP/1.0 400 Bad request\r\n\r\n' + if response == ogResponses.IN_PROGRESS: + return 'HTTP/1.0 202 Accepted\r\n\r\n' + if response == ogResponses.OK: + return 'HTTP/1.0 200 OK\r\n\r\n' |