def compareTwoFile(request, revOne, revTwo, altName, cloudItem, tokenID): """ Compare two file by using two revisions """ dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem, request.user.id) tkn = checkAccessToken(t, ci) #compute the diff c = Comparator(tkn) info = c.compareTwo(str(revOne), str(revTwo), altName) imgMimeList = ['image/jpeg', 'image/png', 'image/gif', 'image/bmp'] table = render_to_string( "dashboard/timeliner/diffViewer.html", { 'fileName': info["filename"], 'revOne': strip_tags(strip_entities(revOne)), 'revTwo': strip_tags(strip_entities(revTwo)), 'info': info, 'imgMimes': imgMimeList }) dajax.assign("#comparator", "innerHTML", table) dajax.assign("#comparatorError", "innerHTML", "") except Exception as e: dajax.assign("#comparatorError", "innerHTML", formatException(e)) return dajax.json()
def importer(request, cloudItem): """ Display the home page of the importer """ form = None status = None rep = None cloudItemQuery = CloudItem.objects.get( reporterID=User.objects.get(id=request.user.id), id=cloudItem) try: if request.method == "POST": form = UploadForm(request.POST, request.FILES) if form.is_valid(): manageReportUpload(request, cloudItem) # get all report imported for this clouditem rep = Upload.objects.filter(cloudItemID=cloudItemQuery) form = UploadForm() if rep.count() == 0 else None except Exception as e: status = formatException(e) return render_to_response("dashboard/imp.html", { 'parseStatus': status, 'objID': cloudItem, 'form': form, 'repList': rep }, context_instance=RequestContext(request))
def download(downloadDB, uname, pwd): """ This function is used to start an asynchrounous download with celery """ downloader = None if downloadDB.tokenID.serviceType == constConfig.CSP_GOOGLE: downloader = GoogleDownloader(downloadDB, uname, pwd) elif downloadDB.tokenID.serviceType == constConfig.CSP_DROPBOX: downloader = DropboxDownloader(downloadDB, uname, pwd) if downloader is not None: try: #reset downloadDB.threadMessage = "-" downloadDB.save() #do not mess up the order of these call downloader.verfiyCredentials() downloader.createService() downloader.downloadMetaData() downloader.computeDownload() with transaction.atomic(): downloader.downloadFileHistory() downloader.verificationProcess() except Exception as e: downloadDB.threadStatus = constConfig.THREAD_STOP downloadDB.threadMessage = formatException(e) downloadDB.save()
def fileTimeLine(request,formHistory,profileForm,ci): """ Call the timeline generator """ dajax = Dajax() try: #check that the import belong to the clouditem cloudQuery = checkCloudItem(ci,request.user.id) jsonReport = openReport(cloudQuery) f = HistoryTimeLineForm(deserialize_form(formHistory)) fProfile = ProfileSelectorForm(deserialize_form(profileForm)) fProfile.setChoices(jsonReport) if f.is_valid() and fProfile.is_valid(): bc = BrowserFileController(cloudQuery,fProfile.cleaned_data['choices']) res = bc.generateTimeLine(f.cleaned_data['domainFilter']) print type(f.cleaned_data['startDate']) print type(f.cleaned_data['endDate']) table = render_to_string("clouditem/browserTimeLine.html", {'events':res}) dajax.assign("#historyShow","innerHTML",table) dajax.assign("#historyError","innerHTML","") dajax.remove_css_class("#historyError",['alert','alert-danger']) else: dajax.assign("#historyShow","innerHTML","") dajax.assign("#historyError","innerHTML","Invalid Form") dajax.add_css_class("#historyError",['alert','alert-danger']) except Exception as e: dajax.add_css_class("#historyError",['alert','alert-danger']) dajax.assign("#historyError","innerHTML",formatException(e)) return dajax.json()
def fileHistoryTimeliner(request, cloudItem, tokenID, altName): dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem, request.user.id) tkn = checkAccessToken(t, ci) tc = TimelinerController(tkn) data = tc.fileHistoryTimeLine(altName) #check that we have at least one item if len(data) > 0: ft = FileDownload.objects.get(alternateName=altName, tokenID=t).fileName table = render_to_string( "dashboard/timeliner/filehistorytimeline.html", { 'events': data, 'fileTitle': ft, 'altName': altName }) dajax.assign("#fileHistory", "innerHTML", table) dajax.assign("#formHistoryError", "innerHTML", "") else: raise Exception("No history for this file") except Exception as e: dajax.assign("#formHistoryError", "innerHTML", formatException(e)) return dajax.json()
def download(downloadDB,uname,pwd): """ This function is used to start an asynchrounous download with celery """ downloader = None if downloadDB.tokenID.serviceType == constConfig.CSP_GOOGLE: downloader = GoogleDownloader(downloadDB,uname,pwd) elif downloadDB.tokenID.serviceType == constConfig.CSP_DROPBOX: downloader = DropboxDownloader(downloadDB,uname,pwd) if downloader is not None: try: #reset downloadDB.threadMessage = "-" downloadDB.save() #do not mess up the order of these call downloader.verfiyCredentials() downloader.createService() downloader.downloadMetaData() downloader.computeDownload() with transaction.atomic(): downloader.downloadFileHistory() downloader.verificationProcess() except Exception as e: downloadDB.threadStatus = constConfig.THREAD_STOP downloadDB.threadMessage = formatException(e) downloadDB.save()
def listdevices(request,clouditem,tokenID,form): """ Call the timeline generator """ dajax = Dajax() print "ciao" try: cloudQuery = checkCloudItem(clouditem,request.user.id) tkn = checkAccessToken(tokenID,cloudQuery) dc = DeviceListController(tkn,None,None) dc.listDevices() print "test" except Exception as e: print formatException(e) return dajax.json()
def listdevices(request, clouditem, tokenID, form): """ Call the timeline generator """ dajax = Dajax() print "ciao" try: cloudQuery = checkCloudItem(clouditem, request.user.id) tkn = checkAccessToken(tokenID, cloudQuery) dc = DeviceListController(tkn, None, None) dc.listDevices() print "test" except Exception as e: print formatException(e) return dajax.json()
def showDownloadDash(request,cloudItem,t): """ Displays the dashboard of the download """ data = {} try: ci = checkCloudItem(cloudItem,request.user.id) at = checkAccessToken(t,ci) data['showToken'] = True data['credVerified'] = "Not started" data['metaWait'] = "Not started" data['downSize'] = "Not started" data['fileWait'] = "Not started" data['verificationWait'] = "Not started" data['objID'] = ci.id data['tokenID'] = at.id data['form'] = TSCredentialsForm() #button has been clicked if request.method == "POST": subForm = TSCredentialsForm(request.POST) if subForm.is_valid(): down = Download.objects.get(tokenID=at) down.threadStatus = constConfig.THREAD_CLICKED down.save() pwd = subForm.cleaned_data['pwd'] account = subForm.cleaned_data['uname'] #start the celery asynchronous task download.delay(down,account,pwd) else: raise Exception("Invalid form") #default check to start the periodically ajax function try: # check to start down = Download.objects.get(tokenID=at) except Download.DoesNotExist: #store a new download that has not been clicked yet down = Download(threadStatus=constConfig.THREAD_NOTCLICKED,tokenID=at,folder=sessionName(t)) down.save() if down: data['down'] = down data['downStatus'] = down.threadStatus data['downMessage'] = down.threadMessage except Exception as e: data['errors'] = formatException(e) return render_to_response("dashboard/down.html", data, context_instance=RequestContext(request))
def checkDownload(request, t, i): """ Check the download status """ dajax = Dajax() try: tokenID = parseAjaxParam(t) cloudItem = checkCloudItem(i, request.user.id) tokenQuery = checkAccessToken(t, cloudItem) downloadToken = Download.objects.get(tokenID=tokenQuery) #check the status s = downloadToken.threadStatus dajax.assign("#thStatus", "innerHTML", s) dajax.assign("#thMessage", "innerHTML", downloadToken.threadMessage) if s != constConfig.THREAD_NOTCLICKED and s != constConfig.THREAD_STOP: mask = { constConfig.THREAD_VERIFY_CRED: False, constConfig.THREAD_DOWN_META: False, constConfig.THREAD_COMPUTING: False, constConfig.THREAD_DOWN_FH: False, constConfig.THREAD_TS: False } #set the icons that have to use accept.png as icon for key, value in mask.iteritems(): if key <= s: mask[key] = True #now that states for icon are set, assign to dajax for key, value in mask.iteritems(): if value is True: dajax.assign("#status" + str(key), "innerHTML", "<img src='/static/icons/accept.png' />") if key >= constConfig.THREAD_COMPUTING: computeSize = float( downloadToken.downloadSize) / math.pow(2, 20) dajax.assign("#fileSize", "innerHTML", computeSize) else: dajax.assign("#status" + str(key), "innerHTML", "<img src='/static/loadersmall.gif' />") dajax.assign("#errors", "innerHTML", "") except Exception as e: dajax.assign("#errors", "innerHTML", formatException(e)) return dajax.json()
def devicelister(request,cloudItem,tokenID): """ Displays the browser file page """ historyForm = None error = None try: ci = checkCloudItem(cloudItem,request.user.id) tkn = checkAccessToken(tokenID,ci) credForm = DeviceCredentialsForm() except Exception as e: error = formatException(e) return render_to_response("dashboard/devicelister/devicelisterHome.html", {'tokenID':tkn.id,'objID':ci.id,'showToken':True,'credForm':credForm}, context_instance=RequestContext(request))
def formTimeliner(request, cloudItem, tokenID, form): dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem, request.user.id) tkn = checkAccessToken(t, ci) f = MetaSearch(deserialize_form(form)) if f.is_valid(): tc = TimelinerController(tkn) data = tc.formTimeLine( int(f.cleaned_data['formType'][0]), f.cleaned_data['email'], f.cleaned_data['filename'], f.cleaned_data['givenname'], int(f.cleaned_data['resType'][0]), f.cleaned_data['mimeType'], f.cleaned_data['startDate'], f.cleaned_data['endDate']) if len(data) > 0: if len(data) > 500: dajax.assign( "#formHistoryError", "innerHTML", "Your query returned more than 500 elements. Please refine your search to avoid performance problems with your browser." ) dajax.add_css_class("#formHistoryError", ["alert", "alert-danger"]) else: table = render_to_string( "dashboard/timeliner/historytimeline.html", {'events': data}) dajax.assign("#formHistory", "innerHTML", table) dajax.assign("#formHistoryError", "innerHTML", "") dajax.remove_css_class("#formHistoryError", ["alert", "alert-danger"]) else: dajax.assign("#formHistoryError", "innerHTML", "No data found.") dajax.add_css_class("#formHistoryError", ["alert", "alert-danger"]) else: dajax.assign("#formHistoryError", "innerHTML", "Invalid Form") dajax.add_css_class("#formHistoryError", ["alert", "alert-danger"]) except Exception as e: dajax.assign("#formHistoryError", "innerHTML", formatException(e)) dajax.add_css_class("#formHistoryError", ["alert", "alert-danger"]) return dajax.json()
def verifyFile(request, cloudItem, tokenID, form): """ Verify file and metadata """ dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem, request.user.id) tkn = checkAccessToken(t, ci) f = VerifyForm(deserialize_form(form)) if f.is_valid(): verType = parseAjaxParam(f.cleaned_data['verificationType']) metaVerification = None downVerification = None dtaVerification = None v = Verifier(tkn) if verType == constConfig.VERIFY_CHOICE_METADATA: metaVerification = v.verifyMetadata() elif verType == constConfig.VERIFY_CHOICE_FILES or verType == constConfig.VERIFY_CHOICE_FILESHISTORY: downVerification = v.verifyFileDownload(verType) elif verType == constConfig.VERIFY_CHOICE_DTA_SIGNATURE: dtaVerification = v.verifyZIP() else: raise Exception("Invalid Verification Type") table = render_to_string( "dashboard/comparator/comparatorVerify.html", { "meta": metaVerification, 'file': downVerification, 'dta': dtaVerification }) dajax.assign("#verifyer", "innerHTML", table) dajax.assign("#verifyerError", "innerHTML", "") dajax.remove_css_class("#verifyerError", ['alert', 'alert-danger']) else: dajax.assign("#verifyer", "innerHTML", "") dajax.assign("#verifyerError", "innerHTML", "Invalid Form") dajax.add_css_class("#verifyerError", ['alert', 'alert-danger']) except Exception as e: dajax.assign("#verifyerError", "innerHTML", formatException(e)) dajax.add_css_class("#verifyerError", ['alert', 'alert-danger']) return dajax.json()
def browserfiles(request,cloudItem): """ Displays the browser file page """ browser = None historyForm = None error = None try: ci = checkCloudItem(cloudItem,request.user.id) report = openReport(ci) profileForm = ProfileSelectorForm() profileForm.setChoices(report) historyForm = HistoryTimeLineForm() except Exception as e: error = formatException(e) return render_to_response("clouditem/browserHome.html", {'browser':browser,'form':historyForm,'profileForm': profileForm,'objID':ci.id,'error':error}, context_instance=RequestContext(request))
def formTimeliner(request,cloudItem,tokenID,form): dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem,request.user.id) tkn = checkAccessToken(t,ci) f = MetaSearch(deserialize_form(form)) if f.is_valid(): tc = TimelinerController(tkn) data = tc.formTimeLine( int(f.cleaned_data['formType'][0]), f.cleaned_data['email'], f.cleaned_data['filename'], f.cleaned_data['givenname'], int(f.cleaned_data['resType'][0]), f.cleaned_data['mimeType'], f.cleaned_data['startDate'], f.cleaned_data['endDate'] ) if len(data) > 0: if len(data) > 500: dajax.assign("#formHistoryError","innerHTML","Your query returned more than 500 elements. Please refine your search to avoid performance problems with your browser.") dajax.add_css_class("#formHistoryError",["alert","alert-danger"]) else: table = render_to_string("dashboard/timeliner/historytimeline.html",{'events':data}) dajax.assign("#formHistory","innerHTML",table) dajax.assign("#formHistoryError","innerHTML","") dajax.remove_css_class("#formHistoryError",["alert","alert-danger"]) else: dajax.assign("#formHistoryError","innerHTML","No data found.") dajax.add_css_class("#formHistoryError",["alert","alert-danger"]) else: dajax.assign("#formHistoryError","innerHTML","Invalid Form") dajax.add_css_class("#formHistoryError",["alert","alert-danger"]) except Exception as e: dajax.assign("#formHistoryError","innerHTML",formatException(e)) dajax.add_css_class("#formHistoryError",["alert","alert-danger"]) return dajax.json()
def showTokens(request,ci): """ Show the tokens """ dajax = Dajax() try: data = dict() cloudItemObj = checkCloudItem(ci,request.user.id) data['tknTable'] = DbInterface.getAccessTokenList(cloudItemObj) data['id'] = cloudItemObj.id table = render_to_string("dashboard/tokenTable.html",data) dajax.assign("#tokenTable", "innerHTML", table) dajax.assign("#tokenError", "innerHTML","") dajax.add_css_class("#tokenError",[]) except Exception as e: dajax.assign("#tokenError", "innerHTML",formatException(e)) dajax.add_css_class("#tokenError",['alert','alert-danger']) return dajax.json()
def showReport(request,up,ci): dajax = Dajax() try: #check that the import belong to the clouditem uploadID = parseAjaxParam(up) cloudQuery = checkCloudItem(ci,request.user.id) jsonReport = openReport(cloudQuery,uploadID) data = {'attributes': jsonReport[0]['objects'],'browser':jsonReport[1]['objects'],'cloud':jsonReport[2]['objects']} table = render_to_string("dashboard/impReportView.html", data) dajax.assign("#reportTable","innerHTML",table) dajax.assign("#repStatus","innerHTML","") except Exception as e: dajax.assign("#repStatus","innerHTML",formatException(e)) return dajax.json()
def showTokens(request, ci): """ Show the tokens """ dajax = Dajax() try: data = dict() cloudItemObj = checkCloudItem(ci, request.user.id) data['tknTable'] = DbInterface.getAccessTokenList(cloudItemObj) data['id'] = cloudItemObj.id table = render_to_string("dashboard/tokenTable.html", data) dajax.assign("#tokenTable", "innerHTML", table) dajax.assign("#tokenError", "innerHTML", "") dajax.add_css_class("#tokenError", []) except Exception as e: dajax.assign("#tokenError", "innerHTML", formatException(e)) dajax.add_css_class("#tokenError", ['alert', 'alert-danger']) return dajax.json()
def verifyFile(request,cloudItem,tokenID,form): """ Verify file and metadata """ dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem,request.user.id) tkn = checkAccessToken(t,ci) f = VerifyForm(deserialize_form(form)) if f.is_valid(): verType = parseAjaxParam(f.cleaned_data['verificationType']) metaVerification = None downVerification = None dtaVerification = None v = Verifier(tkn) if verType == constConfig.VERIFY_CHOICE_METADATA: metaVerification = v.verifyMetadata() elif verType == constConfig.VERIFY_CHOICE_FILES or verType == constConfig.VERIFY_CHOICE_FILESHISTORY: downVerification = v.verifyFileDownload(verType) elif verType == constConfig.VERIFY_CHOICE_DTA_SIGNATURE: dtaVerification = v.verifyZIP() else: raise Exception ("Invalid Verification Type") table = render_to_string("dashboard/comparator/comparatorVerify.html",{"meta":metaVerification,'file': downVerification,'dta':dtaVerification}) dajax.assign("#verifyer","innerHTML",table) dajax.assign("#verifyerError","innerHTML","") dajax.remove_css_class("#verifyerError",['alert','alert-danger']) else: dajax.assign("#verifyer","innerHTML","") dajax.assign("#verifyerError","innerHTML","Invalid Form") dajax.add_css_class("#verifyerError",['alert','alert-danger']) except Exception as e: dajax.assign("#verifyerError","innerHTML",formatException(e)) dajax.add_css_class("#verifyerError",['alert','alert-danger']) return dajax.json()
def fileRevision(request,fId,tokenID,cloudItem): dajax = Dajax() try: parsedTable = None t = parseAjaxParam(tokenID) ciChk = checkCloudItem(cloudItem,request.user.id) tknObj = checkAccessToken(t,ciChk) mc = MetadataController(tknObj) parsedTable = mc.fileHistory(fId) dajax.assign("#revisionHistory","innerHTML",parsedTable) dajax.assign("#searchError","innerHTML","") except Exception as e: dajax.assign("#searchError","innerHTML",formatException(e)) return dajax.json()
def metadataAnalysis(request,tokenID,cloudItem): """ Analyise the metadata of services """ dajax = Dajax() try: parsedTable = None t = parseAjaxParam(tokenID) ciChk = checkCloudItem(cloudItem,request.user.id) tknObj = checkAccessToken(t,ciChk) mc = MetadataController(tknObj) parsedTable = mc.metadataAnalysis() dajax.assign("#metaAnalysis","innerHTML", parsedTable) dajax.assign("#metaAnalysisError","innerHTML","") except Exception as e: dajax.assign("#metaAnalysisError","innerHTML",formatException(e)) return dajax.json()
def fileInfo(request,tokenID,id,cloudItem): """ Get the information of a file """ dajax = Dajax() try: parsedTable = None t = parseAjaxParam(tokenID) ciChk = checkCloudItem(cloudItem,request.user.id) tknObj = checkAccessToken(t,ciChk) mc = MetadataController(tknObj) parsedTable = mc.fileInfo(id) dajax.assign("#fileRevisionContainer","innerHTML",parsedTable) dajax.assign("#searchError","innerHTML","") except Exception as e: dajax.assign("#searchError","innerHTML",formatException(e)) return dajax.json()
def exifMap(request, cloudItem, tokenID): dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem, request.user.id) tkn = checkAccessToken(t, ci) mc = MapsController(tkn) r = mc.findExif() table = render_to_string("dashboard/maps/exifMap.html", {"exif": r}) dajax.assign("#exif", "innerHTML", table) dajax.assign("#exifError", "innerHTML", "") except Exception as e: dajax.assign("#exifError", "innerHTML", formatException(e)) return dajax.json()
def devicelister(request, cloudItem, tokenID): """ Displays the browser file page """ historyForm = None error = None try: ci = checkCloudItem(cloudItem, request.user.id) tkn = checkAccessToken(tokenID, ci) credForm = DeviceCredentialsForm() except Exception as e: error = formatException(e) return render_to_response("dashboard/devicelister/devicelisterHome.html", { 'tokenID': tkn.id, 'objID': ci.id, 'showToken': True, 'credForm': credForm }, context_instance=RequestContext(request))
def mailRelation(request, cloudItem, tokenID): dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem, request.user.id) tkn = checkAccessToken(t, ci) mc = MapsController(tkn) res = mc.mailFinder() table = render_to_string("dashboard/maps/mailRelation.html", {'relation': res}) dajax.assign("#relation", "innerHTML", table) dajax.assign("#relationError", "innerHTML", "") except Exception as e: dajax.assign("#relationError", "innerHTML", formatException(e)) return dajax.json()
def displaySingle(request,cloudItem,tokenID,title,altName,downAltName,fileType): """ Compare files using the previously imported report """ dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem,request.user.id) tkn = checkAccessToken(t,ci) c = Comparator(tkn) res = c.displaySingle(title,altName,downAltName,fileType) res.update({'imgMimes':constConfig.ALLOWED_MIME_TYPE[1:-1]}) table = render_to_string("dashboard/timeliner/singleViewer.html",res) dajax.assign("#comparator","innerHTML",table) dajax.assign("#comparatorError","innerHTML","") except Exception as e: dajax.assign("#comparatorError","innerHTML",formatException(e)) dajax.add_css_class("#comparator",['alert','alert-danger']) return dajax.json()
def importer(request,cloudItem): """ Display the home page of the importer """ form = None status = None rep = None cloudItemQuery = CloudItem.objects.get(reporterID=User.objects.get(id=request.user.id),id=cloudItem) try: if request.method == "POST": form = UploadForm(request.POST, request.FILES) if form.is_valid(): manageReportUpload(request,cloudItem) # get all report imported for this clouditem rep = Upload.objects.filter(cloudItemID=cloudItemQuery) form = UploadForm() if rep.count() == 0 else None except Exception as e: status = formatException(e) return render_to_response("dashboard/imp.html", {'parseStatus': status,'objID': cloudItem,'form': form, 'repList': rep}, context_instance=RequestContext(request))
def displaySingle(request, cloudItem, tokenID, title, altName, downAltName, fileType): """ Compare files using the previously imported report """ dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem, request.user.id) tkn = checkAccessToken(t, ci) c = Comparator(tkn) res = c.displaySingle(title, altName, downAltName, fileType) res.update({'imgMimes': constConfig.ALLOWED_MIME_TYPE[1:-1]}) table = render_to_string("dashboard/timeliner/singleViewer.html", res) dajax.assign("#comparator", "innerHTML", table) dajax.assign("#comparatorError", "innerHTML", "") except Exception as e: dajax.assign("#comparatorError", "innerHTML", formatException(e)) dajax.add_css_class("#comparator", ['alert', 'alert-danger']) return dajax.json()
def fileHistoryTimeliner(request,cloudItem,tokenID,altName): dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem,request.user.id) tkn = checkAccessToken(t,ci) tc = TimelinerController(tkn) data = tc.fileHistoryTimeLine(altName) #check that we have at least one item if len(data) > 0: ft = FileDownload.objects.get(alternateName=altName,tokenID=t).fileName table = render_to_string("dashboard/timeliner/filehistorytimeline.html",{'events':data,'fileTitle':ft,'altName': altName}) dajax.assign("#fileHistory","innerHTML",table) dajax.assign("#formHistoryError","innerHTML","") else: raise Exception("No history for this file") except Exception as e: dajax.assign("#formHistoryError","innerHTML",formatException(e)) return dajax.json()
def compareFromReport(request,cloudItem,tokenID): """ Compare files using the previously imported report """ dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem,request.user.id) tkn = checkAccessToken(t,ci) c = Comparator(tkn) res = c.compareFromReport() table = render_to_string("dashboard/comparator/comparatorCompare.html",{'files':res}) dajax.assign("#comparator","innerHTML",table) dajax.assign("#comparatorError","innerHTML","") dajax.remove_css_class("#comparatorError",['alert','alert-danger']) except Exception as e: dajax.assign("#comparatorError","innerHTML",formatException(e)) dajax.add_css_class("#comparator",['alert','alert-danger']) return dajax.json()
def compareTwoFile(request,revOne,revTwo,altName,cloudItem,tokenID): """ Compare two file by using two revisions """ dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem,request.user.id) tkn = checkAccessToken(t,ci) #compute the diff c = Comparator(tkn) info = c.compareTwo(str(revOne),str(revTwo),altName) imgMimeList = ['image/jpeg','image/png','image/gif','image/bmp'] table = render_to_string("dashboard/timeliner/diffViewer.html",{'fileName': info["filename"],'revOne': strip_tags(strip_entities(revOne)),'revTwo': strip_tags(strip_entities(revTwo)),'info': info,'imgMimes': imgMimeList}) dajax.assign("#comparator","innerHTML",table) dajax.assign("#comparatorError","innerHTML","") except Exception as e: dajax.assign("#comparatorError","innerHTML",formatException(e)) return dajax.json()
def fileTimeLine(request, formHistory, profileForm, ci): """ Call the timeline generator """ dajax = Dajax() try: #check that the import belong to the clouditem cloudQuery = checkCloudItem(ci, request.user.id) jsonReport = openReport(cloudQuery) f = HistoryTimeLineForm(deserialize_form(formHistory)) fProfile = ProfileSelectorForm(deserialize_form(profileForm)) fProfile.setChoices(jsonReport) if f.is_valid() and fProfile.is_valid(): bc = BrowserFileController(cloudQuery, fProfile.cleaned_data['choices']) res = bc.generateTimeLine(f.cleaned_data['domainFilter']) print type(f.cleaned_data['startDate']) print type(f.cleaned_data['endDate']) table = render_to_string("clouditem/browserTimeLine.html", {'events': res}) dajax.assign("#historyShow", "innerHTML", table) dajax.assign("#historyError", "innerHTML", "") dajax.remove_css_class("#historyError", ['alert', 'alert-danger']) else: dajax.assign("#historyShow", "innerHTML", "") dajax.assign("#historyError", "innerHTML", "Invalid Form") dajax.add_css_class("#historyError", ['alert', 'alert-danger']) except Exception as e: dajax.add_css_class("#historyError", ['alert', 'alert-danger']) dajax.assign("#historyError", "innerHTML", formatException(e)) return dajax.json()
def browserfiles(request, cloudItem): """ Displays the browser file page """ browser = None historyForm = None error = None try: ci = checkCloudItem(cloudItem, request.user.id) report = openReport(ci) profileForm = ProfileSelectorForm() profileForm.setChoices(report) historyForm = HistoryTimeLineForm() except Exception as e: error = formatException(e) return render_to_response("clouditem/browserHome.html", { 'browser': browser, 'form': historyForm, 'profileForm': profileForm, 'objID': ci.id, 'error': error }, context_instance=RequestContext(request))
def compareFromReport(request, cloudItem, tokenID): """ Compare files using the previously imported report """ dajax = Dajax() try: t = parseAjaxParam(tokenID) ci = checkCloudItem(cloudItem, request.user.id) tkn = checkAccessToken(t, ci) c = Comparator(tkn) res = c.compareFromReport() table = render_to_string("dashboard/comparator/comparatorCompare.html", {'files': res}) dajax.assign("#comparator", "innerHTML", table) dajax.assign("#comparatorError", "innerHTML", "") dajax.remove_css_class("#comparatorError", ['alert', 'alert-danger']) except Exception as e: dajax.assign("#comparatorError", "innerHTML", formatException(e)) dajax.add_css_class("#comparator", ['alert', 'alert-danger']) return dajax.json()
def generateReport(request, cloudItemID, tokenID): ci = None token = None error = False try: ci = checkCloudItem(cloudItemID, request.user.id) token = checkAccessToken(tokenID, ci) if request.method == 'POST': rg = ReportGenerator(token.id) return rg.genPDF() except Exception as e: error = formatException(e) return render_to_response("dashboard/reporter/reporterHome.html", { 'showToken': True, 'objID': ci.id, 'tokenID': token.id, 'error': error }, context_instance=RequestContext(request))
def searchMetaData(request,form,tokenID,cloudItem,start): """ Make a search through the metadata """ dajax = Dajax() try: t = parseAjaxParam(tokenID) ciChk = checkCloudItem(cloudItem,request.user.id) tknObj = checkAccessToken(t,ciChk) searchStep = 100 f = MetaSearch(deserialize_form(form)) if f.is_valid(): startResTime = time.time() #compute hash of the search form for the cache searchHash = crypto.sha256(form).hexdigest() """searchHash = crypto.sha256(f.cleaned_data['formType'][0]+crypto.HASH_SEPARATOR+ f.cleaned_data['email']+crypto.HASH_SEPARATOR+ f.cleaned_data['filename']+crypto.HASH_SEPARATOR+ f.cleaned_data['givenname']+crypto.HASH_SEPARATOR+ f.cleaned_data['resType'][0]+crypto.HASH_SEPARATOR+ f.cleaned_data['mimeType']+crypto.HASH_SEPARATOR+ str(f.cleaned_data['startDate'])+crypto.HASH_SEPARATOR+ str(f.cleaned_data['endDate']) ).hexdigest()""" if "searchCache" in request.session and request.session['searchCacheID'] == searchHash: res = json.loads(request.session["searchCache"]) else: mc = MetadataController(tknObj) res = mc.metadataSearch( int(f.cleaned_data['formType'][0]), f.cleaned_data['email'], f.cleaned_data['filename'], f.cleaned_data['givenname'], int(f.cleaned_data['resType'][0]), int(f.cleaned_data['mimeType']), f.cleaned_data['startDate'], f.cleaned_data['endDate'] ) request.session["searchCacheID"] = searchHash request.session["searchCache"] = json.dumps(res) #computation for pager totalPages = int(math.ceil(float(len(res))/100.0)) resultsSlice = res[start:(start+searchStep)] stopResTime = time.time() parsedTable = render_to_string("dashboard/cloudservice/searchTable.html", {'data': resultsSlice,'totalPages':range(totalPages),'totalRes':len(res),'resTime': stopResTime-startResTime,'platform':tknObj.serviceType}) dajax.assign("#searchRes","innerHTML",parsedTable) dajax.assign("#searchError","innerHTML","") dajax.remove_css_class("#searchError",['alert','alert-danger']) else: dajax.assign("#searchError","innerHTML","Please fill all fields") dajax.add_css_class("#searchError",['alert','alert-danger']) except Exception as e: dajax.assign("#searchError","innerHTML",formatException(e)) dajax.add_css_class("#searchError",['alert','alert-danger']) return dajax.json()