UPDATE
This commit is contained in:
parent
57310a38f2
commit
cb036b7cb8
93
Server.py
93
Server.py
@ -27,7 +27,6 @@ class APICore(object):
|
|||||||
self.Log(addr[0],addr[1],"SEND",Result)
|
self.Log(addr[0],addr[1],"SEND",Result)
|
||||||
sock.send(str(Result).encode("utf-8"))
|
sock.send(str(Result).encode("utf-8"))
|
||||||
def SunAzEl(self,sock,addr):
|
def SunAzEl(self,sock,addr):
|
||||||
sock.send(self.HTTPHead['200'].encode("utf-8"))
|
|
||||||
Result=json.dumps(Astronomy().calcSunAzEl())
|
Result=json.dumps(Astronomy().calcSunAzEl())
|
||||||
self.Log(addr[0],addr[1],"SEND",Result)
|
self.Log(addr[0],addr[1],"SEND",Result)
|
||||||
sock.send(str(Result).encode("utf-8"))
|
sock.send(str(Result).encode("utf-8"))
|
||||||
@ -42,16 +41,26 @@ def socket(sock,addr):
|
|||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
data = sock.recv(1024)
|
data = sock.recv(1024)
|
||||||
API.Log(addr[0],addr[1],"RECV","Received a request.")
|
|
||||||
#print(data.decode("utf-8"))
|
#print(data.decode("utf-8"))
|
||||||
if("HTTP/" in data.decode("utf-8")):
|
if("HTTP/" in data.decode("utf-8")):
|
||||||
|
API.Log(addr[0],addr[1],"RECV","Received a HTTP request.")
|
||||||
#HTTP Request.
|
#HTTP Request.
|
||||||
HTTPRequestHead=data.decode("utf-8").split("\r\n")[0].split(" ")[1].split("/")
|
try:
|
||||||
del HTTPRequestHead[0]
|
Heada=data.decode("utf-8").split("\r\n")[0].split(" ")[1].split("/")
|
||||||
for i in range(0,len(HTTPRequestHead)):
|
del Heada[0]
|
||||||
HTTPRequestHead[i]=urllib.parse.unquote(HTTPRequestHead[i])
|
except:
|
||||||
|
API.Error400(sock,addr)
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
Headb=data.decode("utf-8").split("\r\n\r\n")[1]
|
||||||
|
except:
|
||||||
|
Headb=""
|
||||||
|
HTTPRequestHead=(Heada,Headb)
|
||||||
|
for i in range(0,len(HTTPRequestHead[0])):
|
||||||
|
HTTPRequestHead[0][i]=urllib.parse.unquote(HTTPRequestHead[0][i])
|
||||||
API.Log(addr[0],addr[1],"RECV",HTTPRequestHead)
|
API.Log(addr[0],addr[1],"RECV",HTTPRequestHead)
|
||||||
if(" / " in data.decode("utf-8")):
|
if(" / " in data.decode("utf-8")):
|
||||||
|
#Help Command
|
||||||
sock.send(API.HTTPHead['200'].encode("utf-8"))
|
sock.send(API.HTTPHead['200'].encode("utf-8"))
|
||||||
Result=json.dumps({"wikis":"https://gitee.com/ghink/api/wikis"})
|
Result=json.dumps({"wikis":"https://gitee.com/ghink/api/wikis"})
|
||||||
API.Log(addr[0],addr[1],"SEND",Result)
|
API.Log(addr[0],addr[1],"SEND",Result)
|
||||||
@ -59,38 +68,92 @@ def socket(sock,addr):
|
|||||||
break
|
break
|
||||||
elif(" /SunAzEl" in data.decode("utf-8")):
|
elif(" /SunAzEl" in data.decode("utf-8")):
|
||||||
if("GET " in data.decode("utf-8")):
|
if("GET " in data.decode("utf-8")):
|
||||||
|
#GET Request
|
||||||
try:
|
try:
|
||||||
HTTPRequestHead[1]
|
#Exist Parameter
|
||||||
if(API.IsJson(HTTPRequestHead[1])):
|
HTTPRequestHead[0][1]
|
||||||
API.SunAzEl(sock,addr)
|
if(API.IsJson(HTTPRequestHead[0][1])):
|
||||||
|
#Is Json,Return Result
|
||||||
|
try:
|
||||||
|
Para=json.loads(HTTPRequestHead[0][1])
|
||||||
|
Result=json.dumps(Astronomy().calcSunAzEl(Para['Stamp'],Para['Lon'],Para['Lat'],Para['TimeZone'],Para['ZeroAzimuth']))
|
||||||
|
sock.send(API.HTTPHead['200'].encode("utf-8"))
|
||||||
|
API.Log(addr[0],addr[1],"SEND",Result)
|
||||||
|
sock.send(str(Result).encode("utf-8"))
|
||||||
|
except:
|
||||||
|
API.Error400(sock,addr)
|
||||||
else:
|
else:
|
||||||
|
#Not Json,Return Bad Request
|
||||||
API.Error400(sock,addr)
|
API.Error400(sock,addr)
|
||||||
except:
|
except:
|
||||||
|
#No Parameter
|
||||||
|
sock.send(API.HTTPHead['200'].encode("utf-8"))
|
||||||
API.SunAzEl(sock,addr)
|
API.SunAzEl(sock,addr)
|
||||||
elif("POST " in data.decode("utf-8")):
|
elif("POST " in data.decode("utf-8")):
|
||||||
|
#POST Request
|
||||||
try:
|
try:
|
||||||
HTTPRequestHead[1]
|
#Exist GET Parameter,Return Bad Request
|
||||||
|
HTTPRequestHead[0][1]
|
||||||
API.Error400(sock,addr)
|
API.Error400(sock,addr)
|
||||||
except:
|
except:
|
||||||
API.SunAzEl(sock,addr)
|
#No GET Parameter,Continue
|
||||||
|
if(API.IsJson(HTTPRequestHead[1])):
|
||||||
|
#If POST Parameter is Json
|
||||||
|
try:
|
||||||
|
Para=json.loads(HTTPRequestHead[1])
|
||||||
|
Result=json.dumps(Astronomy().calcSunAzEl(Para['Stamp'],Para['Lon'],Para['Lat'],Para['TimeZone'],Para['ZeroAzimuth']))
|
||||||
|
sock.send(API.HTTPHead['200'].encode("utf-8"))
|
||||||
|
API.Log(addr[0],addr[1],"SEND",Result)
|
||||||
|
sock.send(str(Result).encode("utf-8"))
|
||||||
|
except:
|
||||||
|
API.Error400(sock,addr)
|
||||||
|
elif(HTTPRequestHead[1]==""):
|
||||||
|
#If No POST Parameter
|
||||||
|
sock.send(API.HTTPHead['200'].encode("utf-8"))
|
||||||
|
API.SunAzEl(sock,addr)
|
||||||
|
else:
|
||||||
|
#Wrong POST Parameter,Return Bad Request
|
||||||
|
API.Error400(sock,addr)
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
|
#No Such Command
|
||||||
sock.send(API.HTTPHead['404'].encode("utf8"))
|
sock.send(API.HTTPHead['404'].encode("utf8"))
|
||||||
Result=json.dumps({"info":"not found","code":404})
|
Result=json.dumps({"info":"not found","code":404})
|
||||||
API.Log(addr[0],addr[1],"SEND",Result)
|
API.Log(addr[0],addr[1],"SEND",Result)
|
||||||
sock.send(Result.encode("utf-8"))
|
sock.send(Result.encode("utf-8"))
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
|
API.Log(addr[0],addr[1],"RECV","Received a TCP request.")
|
||||||
#TCP Request.
|
#TCP Request.
|
||||||
if(data.decode("utf-8")=="Help" or data.decode("utf-8")=="HELP" or data.decode("utf-8")=="help" or data.decode("utf-8")=="WIKI" or data.decode("utf-8")=="wiki" or data.decode("utf-8")=="wikis" or data.decode("utf-8")=="WIKIS" or data.decode("utf-8")=="?"):
|
if(data.decode("utf-8")=="Help" or data.decode("utf-8")=="HELP" or data.decode("utf-8")=="help" or data.decode("utf-8")=="WIKI" or data.decode("utf-8")=="wiki" or data.decode("utf-8")=="wikis" or data.decode("utf-8")=="WIKIS" or data.decode("utf-8")=="?"):
|
||||||
|
#Help Command
|
||||||
Result=json.dumps({"wikis":"https://gitee.com/ghink/api/wikis"})
|
Result=json.dumps({"wikis":"https://gitee.com/ghink/api/wikis"})
|
||||||
API.Log(addr[0],addr[1],"SEND",Result)
|
API.Log(addr[0],addr[1],"SEND",Result)
|
||||||
sock.send(str(Result).encode("utf8"))
|
sock.send(str(Result).encode("utf8"))
|
||||||
elif(data.decode("utf-8")=="SunAzEl"):
|
elif("SunAzEl" in data.decode("utf-8")):
|
||||||
Result=json.dumps(Astronomy().calcSunAzEl())
|
if(API.IsJson(data.decode("utf-8"))):
|
||||||
API.Log(addr[0],addr[1],"SEND",Result)
|
#Is Json
|
||||||
sock.send(str(Result).encode("utf-8"))
|
try:
|
||||||
|
#Check whether is right json
|
||||||
|
Para=json.loads(data.decode("utf-8"))['Parameter']
|
||||||
|
Result=json.dumps(Astronomy().calcSunAzEl(Para['Stamp'],Para['Lon'],Para['Lat'],Para['TimeZone'],Para['ZeroAzimuth']))
|
||||||
|
API.Log(addr[0],addr[1],"SEND",Result)
|
||||||
|
sock.send(str(Result).encode("utf-8"))
|
||||||
|
except:
|
||||||
|
#Not right json
|
||||||
|
Result=json.dumps({"info":"bad request","code":400})
|
||||||
|
API.Log(addr[0],addr[1],"SEND",Result)
|
||||||
|
sock.send(Result.encode("utf-8"))
|
||||||
|
elif(data.decode("utf-8")=="SunAzEl"):
|
||||||
|
#Not Json
|
||||||
|
API.SunAzEl(sock,addr)
|
||||||
|
else:
|
||||||
|
#Wrong Command
|
||||||
|
Result=json.dumps({"info":"bad request","code":400})
|
||||||
|
API.Log(addr[0],addr[1],"SEND",Result)
|
||||||
|
sock.send(Result.encode("utf-8"))
|
||||||
else:
|
else:
|
||||||
|
#No Such Command
|
||||||
Result=json.dumps({"info":"not found","code":404})
|
Result=json.dumps({"info":"not found","code":404})
|
||||||
API.Log(addr[0],addr[1],"SEND",Result)
|
API.Log(addr[0],addr[1],"SEND",Result)
|
||||||
sock.send(Result.encode("utf-8"))
|
sock.send(Result.encode("utf-8"))
|
||||||
|
Binary file not shown.
Reference in New Issue
Block a user