Exemple #1
0
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()
Exemple #2
0
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))
Exemple #3
0
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()
Exemple #4
0
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()
Exemple #5
0
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()
Exemple #6
0
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()
Exemple #7
0
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()
Exemple #8
0
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()
Exemple #9
0
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))
Exemple #10
0
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()
Exemple #11
0
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))
Exemple #12
0
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()
Exemple #13
0
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()
Exemple #14
0
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))
Exemple #15
0
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()
Exemple #16
0
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()
Exemple #17
0
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()
Exemple #18
0
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()
Exemple #19
0
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()
Exemple #20
0
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()
Exemple #21
0
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()
Exemple #22
0
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()
Exemple #23
0
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()
Exemple #24
0
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))
Exemple #25
0
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()
Exemple #26
0
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()
Exemple #27
0
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))
Exemple #28
0
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()
Exemple #29
0
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()
Exemple #30
0
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()
Exemple #31
0
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()
Exemple #32
0
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()
Exemple #33
0
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))
Exemple #34
0
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()
Exemple #35
0
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))
Exemple #36
0
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()