comparison pythonServer.py @ 1243:9cf727420c29

Python 2.x server can perform intermediate saves.
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Wed, 09 Mar 2016 13:12:02 +0000
parents a4ad9e55b5b8
children ba6b9e1aaef5
comparison
equal deleted inserted replaced
1242:987ccc04250b 1243:9cf727420c29
5 from os import path 5 from os import path
6 from os import listdir 6 from os import listdir
7 import inspect 7 import inspect
8 import os 8 import os
9 import urllib2 9 import urllib2
10 import urlparse
10 import pickle 11 import pickle
11 import datetime 12 import datetime
12 13
13 # Go to right folder. 14 # Go to right folder.
14 scriptdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # script directory 15 scriptdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # script directory
56 s.send_header("Content-type", 'application/octet-stream') 57 s.send_header("Content-type", 'application/octet-stream')
57 s.send_header("Content-Length", size) 58 s.send_header("Content-Length", size)
58 s.end_headers() 59 s.end_headers()
59 s.wfile.write(fileDump.read()) 60 s.wfile.write(fileDump.read())
60 fileDump.close() 61 fileDump.close()
61 62
63 def keygen(s):
64 reply = ""
65 options = s.path.rsplit('?')
66 options = options[1].rsplit('=')
67 key = options[1]
68 print key
69 if os.path.isfile("saves/save-"+key+".xml"):
70 reply = "<response><state>NO</state><key>"+key+"</key></response>"
71 else:
72 reply = "<response><state>OK</state><key>"+key+"</key></response>"
73 s.send_response(200)
74 s.send_header("Content-type", "application/xml")
75 s.end_headers()
76 s.wfile.write(reply)
77 file = open("saves/save-"+key+".xml",'w')
78 file.write("<waetresult key="+key+"/>")
79 file.close();
80
62 def saveFile(self): 81 def saveFile(self):
63 global curFileName 82 global curFileName
64 global curSaveIndex 83 global curSaveIndex
84 options = self.path.rsplit('?')
85 options = options[1].rsplit('=')
86 key = options[1]
87 print key
65 varLen = int(self.headers['Content-Length']) 88 varLen = int(self.headers['Content-Length'])
66 postVars = self.rfile.read(varLen) 89 postVars = self.rfile.read(varLen)
67 print curFileName 90 print "Saving file key "+key
68 file = open('saves/'+curFileName,'w') 91 file = open('saves/save-'+key+'.xml','w')
69 file.write(postVars) 92 file.write(postVars)
70 file.close() 93 file.close()
71 try: 94 try:
72 wbytes = os.path.getsize('saves/'+curFileName) 95 wbytes = os.path.getsize('saves/save-'+key+'.xml')
73 except OSError: 96 except OSError:
74 self.send_response(200) 97 self.send_response(200)
75 self.send_header("Content-type", "text/xml") 98 self.send_header("Content-type", "text/xml")
76 self.end_headers() 99 self.end_headers()
77 self.wfile.write('<response state="error"><message>Could not open file</message></response>') 100 self.wfile.write('<response state="error"><message>Could not open file</message></response>')
92 global pseudo_files 115 global pseudo_files
93 global PSEUDO_PATH 116 global PSEUDO_PATH
94 if(request.client_address[0] == "127.0.0.1"): 117 if(request.client_address[0] == "127.0.0.1"):
95 if (request.path == "/favicon.ico"): 118 if (request.path == "/favicon.ico"):
96 send404(request) 119 send404(request)
120 elif (request.path.split('?',1)[0] == "/keygen.php"):
121 keygen(request);
97 else: 122 else:
98 if (request.path == '/'): 123 if (request.path == '/'):
99 request.path = '/index.html' 124 request.path = '/index.html'
100 elif (request.path == '/pseudo.xml'): 125 elif (request.path == '/pseudo.xml'):
101 request.path = '/'+PSEUDO_PATH + pseudo_files[pseudo_index] 126 request.path = '/'+PSEUDO_PATH + pseudo_files[pseudo_index]
106 else: 131 else:
107 send404(request) 132 send404(request)
108 133
109 def do_POST(request): 134 def do_POST(request):
110 if(request.client_address[0] == "127.0.0.1"): 135 if(request.client_address[0] == "127.0.0.1"):
111 if (request.path == "/save" or request.path == "/save.php"): 136 if (request.path.rsplit('?',1)[0] == "/save" or request.path.rsplit('?',1)[0] == "/save.php"):
112 saveFile(request) 137 saveFile(request)
113 else: 138 else:
114 send404(request) 139 send404(request)
115 140
116 def run(server_class=BaseHTTPServer.HTTPServer, 141 def run(server_class=BaseHTTPServer.HTTPServer,