From cb036b7cb8d678eca788d887c5ffd5b79c865cbf Mon Sep 17 00:00:00 2001 From: Bigsk Date: Sun, 27 Dec 2020 14:17:58 +0800 Subject: [PATCH] UPDATE --- Server.py | 93 +++++++++++++++--- .../__pycache__/Astronomy.cpython-36.pyc | Bin 7984 -> 0 bytes 2 files changed, 78 insertions(+), 15 deletions(-) delete mode 100644 libraries/__pycache__/Astronomy.cpython-36.pyc diff --git a/Server.py b/Server.py index 57c19df..16bdea9 100644 --- a/Server.py +++ b/Server.py @@ -27,7 +27,6 @@ class APICore(object): self.Log(addr[0],addr[1],"SEND",Result) sock.send(str(Result).encode("utf-8")) def SunAzEl(self,sock,addr): - sock.send(self.HTTPHead['200'].encode("utf-8")) Result=json.dumps(Astronomy().calcSunAzEl()) self.Log(addr[0],addr[1],"SEND",Result) sock.send(str(Result).encode("utf-8")) @@ -42,16 +41,26 @@ def socket(sock,addr): while True: try: data = sock.recv(1024) - API.Log(addr[0],addr[1],"RECV","Received a request.") #print(data.decode("utf-8")) if("HTTP/" in data.decode("utf-8")): + API.Log(addr[0],addr[1],"RECV","Received a HTTP request.") #HTTP Request. - HTTPRequestHead=data.decode("utf-8").split("\r\n")[0].split(" ")[1].split("/") - del HTTPRequestHead[0] - for i in range(0,len(HTTPRequestHead)): - HTTPRequestHead[i]=urllib.parse.unquote(HTTPRequestHead[i]) + try: + Heada=data.decode("utf-8").split("\r\n")[0].split(" ")[1].split("/") + del Heada[0] + 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) if(" / " in data.decode("utf-8")): + #Help Command sock.send(API.HTTPHead['200'].encode("utf-8")) Result=json.dumps({"wikis":"https://gitee.com/ghink/api/wikis"}) API.Log(addr[0],addr[1],"SEND",Result) @@ -59,38 +68,92 @@ def socket(sock,addr): break elif(" /SunAzEl" in data.decode("utf-8")): if("GET " in data.decode("utf-8")): + #GET Request try: - HTTPRequestHead[1] - if(API.IsJson(HTTPRequestHead[1])): - API.SunAzEl(sock,addr) + #Exist Parameter + HTTPRequestHead[0][1] + 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: + #Not Json,Return Bad Request API.Error400(sock,addr) except: + #No Parameter + sock.send(API.HTTPHead['200'].encode("utf-8")) API.SunAzEl(sock,addr) elif("POST " in data.decode("utf-8")): + #POST Request try: - HTTPRequestHead[1] + #Exist GET Parameter,Return Bad Request + HTTPRequestHead[0][1] API.Error400(sock,addr) 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 else: + #No Such Command sock.send(API.HTTPHead['404'].encode("utf8")) Result=json.dumps({"info":"not found","code":404}) API.Log(addr[0],addr[1],"SEND",Result) sock.send(Result.encode("utf-8")) break else: + API.Log(addr[0],addr[1],"RECV","Received a 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")=="?"): + #Help Command Result=json.dumps({"wikis":"https://gitee.com/ghink/api/wikis"}) API.Log(addr[0],addr[1],"SEND",Result) sock.send(str(Result).encode("utf8")) - elif(data.decode("utf-8")=="SunAzEl"): - Result=json.dumps(Astronomy().calcSunAzEl()) - API.Log(addr[0],addr[1],"SEND",Result) - sock.send(str(Result).encode("utf-8")) + elif("SunAzEl" in data.decode("utf-8")): + if(API.IsJson(data.decode("utf-8"))): + #Is Json + 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: + #No Such Command Result=json.dumps({"info":"not found","code":404}) API.Log(addr[0],addr[1],"SEND",Result) sock.send(Result.encode("utf-8")) diff --git a/libraries/__pycache__/Astronomy.cpython-36.pyc b/libraries/__pycache__/Astronomy.cpython-36.pyc deleted file mode 100644 index 41491c9e4241dd49eb165dc80311dace505ecec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7984 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 Bx@!Oc