summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ogClient.py9
-rw-r--r--src/ogProcess.py17
-rw-r--r--src/ogRest.py14
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'