# HG changeset patch # User Nicholas Jillings # Date 1477301960 -3600 # Node ID 8536e978ab6f695a93e017bfa9fa8c1daedf860f # Parent 9b536838a962568bf5442fd16082db66f8e4d8be Work for #158 diff -r 9b536838a962 -r 8536e978ab6f js/core.js --- a/js/core.js Tue Oct 18 10:33:17 2016 +0100 +++ b/js/core.js Mon Oct 24 10:39:20 2016 +0100 @@ -3101,7 +3101,7 @@ this.initialise = function (existingStore) { if (existingStore == undefined) { // We need to get the sessionKey - this.SessionKey.generateKey(); + this.SessionKey.requestKey(); this.document = document.implementation.createDocument(null, "waetresult", null); this.root = this.document.childNodes[0]; var projectDocument = specification.projectXML; @@ -3159,6 +3159,18 @@ this.request.addEventListener("load", this); this.request.send(); }, + requestKey: function () { + // For new servers, request a new key from the server + var returnURL = ""; + if (typeof specification.projectReturn == "string") { + if (specification.projectReturn.substr(0, 4) == "http") { + returnURL = specification.projectReturn; + } + } + this.request.open("GET", returnURL + "php/requestKey.php", true); + this.request.addEventListener("load", this); + this.request.send(); + }, update: function () { if (this.key == null) { console.log("Cannot save as key == null"); diff -r 9b536838a962 -r 8536e978ab6f php/keygen.php --- a/php/keygen.php Tue Oct 18 10:33:17 2016 +0100 +++ b/php/keygen.php Mon Oct 24 10:39:20 2016 +0100 @@ -26,7 +26,12 @@ } } } - echo $xml_good; + $filename = "saves/save-".$key_requested.".xml"; + $fileHandle = fopen($filename, 'w'); + if ($fileHandle == FALSE) { + echo $xml_error; + } + fclose($fileHandle); // TODO: // Generate the XML Base file and save it $doc_struct = new SimpleXMLElement(''); @@ -34,10 +39,11 @@ // Add start time // Add IP Address information // Save the file - $doc_struct->asXML("saves/save-".$key_requested.".xml"); + $doc_struct->asXML($filename); + echo $xml_good; return; } else { echo $xml_error; return; } -?> \ No newline at end of file +?> diff -r 9b536838a962 -r 8536e978ab6f php/requestKey.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/php/requestKey.php Mon Oct 24 10:39:20 2016 +0100 @@ -0,0 +1,60 @@ +ERROR".$key.""; +} +fclose($fileHandle); +// TODO: +// Generate the XML Base file and save it +$doc_struct = new SimpleXMLElement(''); +$doc_struct->addAttribute("key",$key); +// Add start time +// Add IP Address information +// Save the file +$doc_struct->asXML($filename); +echo "OK".$key.""; +return; +?> diff -r 9b536838a962 -r 8536e978ab6f python/pythonServer.py --- a/python/pythonServer.py Tue Oct 18 10:33:17 2016 +0100 +++ b/python/pythonServer.py Mon Oct 24 10:39:20 2016 +0100 @@ -11,6 +11,8 @@ import operator import xml.etree.ElementTree as ET import copy +import string +import random if sys.version_info[0] == 2: # Version 2.x @@ -130,6 +132,26 @@ file = open("../saves/save-"+key+".xml",'w') file.write("") file.close(); + +def requestKey(s): + reply = "" + key = '' + while key == '': + tempKey = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(32)); + if (os.path.isfile("saves/save-"+tempKey+".xml") == False): + key = tempKey + s.send_response(200) + s.send_header("Content-type", "application/xml"); + s.end_headers() + reply = "OK"+key+"" + if sys.version_info[0] == 2: + s.wfile.write(reply) + elif sys.version_info[0] == 3: + s.wfile.write(bytes(reply, "utf-8")) + file = open("../saves/save-"+key+".xml",'w') + file.write("") + file.close() + def saveFile(self): global curFileName @@ -228,6 +250,8 @@ send404(request) elif (request.path.split('?',1)[0] == "/php/keygen.php"): keygen(request); + elif (request.path.split('?',1)[0] == "/php/requestKey.php"): + requestKey(request); elif (request.path.split('?',1)[0] == "/php/pool.php"): poolXML(request); else: