blob: 7ee8972dd0926b965370bfa99d5d5d858602fcb0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
import email
from io import StringIO
import json
class HTTPParser:
def __init__(self):
self.requestLine = None
self.headersAlone = None
self.headers = None
self.host = None
self.contentType = None
self.contentLen = None
self.operation = None
self.URI = None
self.cmd = None
self.partition = None
self.disk = None
self.cache = None
self.cache_size = None
self.partition_setup = None
def parser(self,data):
self.requestLine, self.headersAlone = data.split('\n', 1)
self.headers = email.message_from_file(StringIO(self.headersAlone))
if 'Host' in self.headers.keys():
self.host = self.headers['Host']
if 'Content-Type' in self.headers.keys():
self.contentType = self.headers['Content-Type']
if 'Content-Length' in self.headers.keys():
self.contentLen = int(self.headers['Content-Length'])
if (not self.requestLine == None or not self.requestLine == ''):
self.operation = self.requestLine.split('/', 1)[0]
self.URI = self.requestLine.split('/', 1)[1]
if not self.contentLen == 0:
msgs = self.headersAlone.rstrip().split('\n')
cmd = msgs[len(msgs) - 1]
try:
jsoncmd = json.loads(cmd)
except ValueError as e:
print ("Error: Json message incomplete")
return
if "run" in cmd:
self.cmd = jsoncmd["run"]
if "disk" in cmd:
self.disk = jsoncmd["disk"]
if "partition" in cmd:
if not "partition_setup" in cmd:
self.partition = jsoncmd["partition"]
if "cache" in cmd:
self.cache = jsoncmd["cache"]
if "cache_size" in cmd:
self.cache_size = jsoncmd["cache_size"]
if "partition_setup" in cmd:
self.partition_setup = jsoncmd["partition_setup"]
def getHeaderLine(self):
return self.headersAlone
def getRequestLine(self):
return self.requestLine
def getHeaderParsed(self):
return self.headers
def getHost(self):
return self.host
def getContentType(self):
return self.contentType
def getContentLen(self):
return self.contentLen
def getRequestOP(self):
return self.operation
def getURI(self):
return self.URI
def getCMD(self):
return self.cmd
def getDisk(self):
return self.disk
def getPartition(self):
return self.partition
def getCache(self):
return self.cache
def getCacheSize(self):
return self.cache_size
def getPartitionSetup(self):
return self.partition_setup
|