def render_GET(self, request): tr = re.compile('.*/(\d*)$') m = re.match(tr, request.path) if len(m.groups()) == 0: request.setResponseCode(400) # Bad request return "Error: Bad request." update_id = m.groups()[0] macdb = DbHelper() upd = macdb.fetch_by_id(int(update_id)) if upd == None: request.setResponseCode(404) # Bad request return "Error: Not found." macdb.delete(int(update_id)) try: activeStream = open(Config.macActiveVersionFile, 'r') try: vt = activeStream.readline().strip(' \t\n\r') finally: activeStream.close() if vt == upd['version']: newLatest = macdb.fetch_latest() if newLatest == None: #delete file os.remove(Config.macActiveVersionFile) else: activeStream = open(Config.macActiveVersionFile, 'w') try: activeStream.write(newLatest['version'] + '\n') finally: activeStream.close() except IOError: pass macdb.cleanup() return """<!DOCTYPE html>
def render_GET(self, request): tr = re.compile('.*/(\d*)$') m = re.match(tr, request.path) if len(m.groups()) == 0: request.setResponseCode(400) # Bad request return "Error: Bad request." update_id = m.groups()[0] macdb = DbHelper() upd = macdb.fetch_by_id(int(update_id)) if upd == None: request.setResponseCode(404) # Bad request return "Error: Not found." macdb.delete(int(update_id)) try: activeStream = open(Config.macActiveVersionFile, 'r') try: vt = activeStream.readline().strip(' \t\n\r') finally: activeStream.close() if vt == upd['version']: newLatest = macdb.fetch_latest() if newLatest == None: #delete file os.remove(Config.macActiveVersionFile) else: activeStream = open(Config.macActiveVersionFile, 'w') try: activeStream.write(newLatest['version'] + '\n') finally: activeStream.close() except IOError: pass macdb.cleanup() return """<!DOCTYPE html>
def render_POST(self, request): macdb = DbHelper() versionRegex = re.compile('^\d+\.\d+\.\d+\.\d+$') if not versionRegex.match(request.args['newVersion'][0]): request.setResponseCode(400) # Bad request return "Error: malformed version number." latest = macdb.fetch_latest() if latest != None and versionCompare(latest['version'], request.args['newVersion'][0]) != -1: request.setResponseCode(400) # Bad request return "Error: version number invalid. Supply version number greater than old version." newRecord = {}; newRecord['version'] = request.args['newVersion'][0] newRecord['dmg_path'] = os.path.join(Config.bitpopDirectory, 'mac', 'BitPop-' + newRecord['version'] + '.dmg') newRecord['dmg_size'] = str(len(request.args['fileToUpload'][0])) outDir = os.path.join(Config.bitpopDirectory, 'mac') if not os.path.exists(outDir): os.mkdir(outDir, 0755) elif not os.path.isdir(outDir): os.remove(outDir) os.mkdir(outDir, 0755) filename = newRecord['dmg_path'] try: outputStream = open(filename, 'wb') try: outputStream.write(request.args['fileToUpload'][0]) finally: outputStream.close() # sha = hashlib.new('sha1') # sha.update(request.args['fileToUpload'][0]) # hash = base64.b64encode(sha.digest()) os.system('openssl dgst -sha1 -binary < "{0}" | openssl dgst -dss1 -sign "dsa_priv.pem" | \ openssl enc -base64 > sig.txt'.format(filename)) sig = open('sig.txt', 'r') try: tsig = sig.readline() finally: sig.close() # md = EVP.MessageDigest('sha1') # md.update(request.args['fileToUpload'][0]) # digest = md.final() # # dsa = DSA.load_key(Config.dsaPrivateKeyFile) # sig = dsa.sign_asn1(digest) newRecord['dsa_signature'] = tsig.strip('\n\r\t ') newRecord['rel_notes'] = request.args['releaseNotes'][0]; macdb.insert(newRecord) activeStream = open(Config.macActiveVersionFile, 'w') try: activeStream.write(newRecord['version'] + "\n") finally: activeStream.close() except IOError: request.setResponseCode(500) # Internal server error return "Error: Internal Server Error. Failed to do some file operation." macdb.cleanup() return "OK. File was successfully uploaded to server."
def render_POST(self, request): macdb = DbHelper() versionRegex = re.compile('^\d+\.\d+\.\d+\.\d+$') if not versionRegex.match(request.args['newVersion'][0]): request.setResponseCode(400) # Bad request return "Error: malformed version number." latest = macdb.fetch_latest() if latest != None and versionCompare( latest['version'], request.args['newVersion'][0]) != -1: request.setResponseCode(400) # Bad request return "Error: version number invalid. Supply version number greater than old version." newRecord = {} newRecord['version'] = request.args['newVersion'][0] newRecord['dmg_path'] = os.path.join( Config.bitpopDirectory, 'mac', 'BitPop-' + newRecord['version'] + '.dmg') newRecord['dmg_size'] = str(len(request.args['fileToUpload'][0])) outDir = os.path.join(Config.bitpopDirectory, 'mac') if not os.path.exists(outDir): os.mkdir(outDir, 0755) elif not os.path.isdir(outDir): os.remove(outDir) os.mkdir(outDir, 0755) filename = newRecord['dmg_path'] try: outputStream = open(filename, 'wb') try: outputStream.write(request.args['fileToUpload'][0]) finally: outputStream.close() # sha = hashlib.new('sha1') # sha.update(request.args['fileToUpload'][0]) # hash = base64.b64encode(sha.digest()) os.system( 'openssl dgst -sha1 -binary < "{0}" | openssl dgst -dss1 -sign "dsa_priv.pem" | \ openssl enc -base64 > sig.txt'.format(filename)) sig = open('sig.txt', 'r') try: tsig = sig.readline() finally: sig.close() # md = EVP.MessageDigest('sha1') # md.update(request.args['fileToUpload'][0]) # digest = md.final() # # dsa = DSA.load_key(Config.dsaPrivateKeyFile) # sig = dsa.sign_asn1(digest) newRecord['dsa_signature'] = tsig.strip('\n\r\t ') newRecord['rel_notes'] = request.args['releaseNotes'][0] macdb.insert(newRecord) activeStream = open(Config.macActiveVersionFile, 'w') try: activeStream.write(newRecord['version'] + "\n") finally: activeStream.close() except IOError: request.setResponseCode(500) # Internal server error return "Error: Internal Server Error. Failed to do some file operation." macdb.cleanup() return "OK. File was successfully uploaded to server."