Commit 91bd373b authored by Pieter-Jan Moreels's avatar Pieter-Jan Moreels
Browse files

link bugfix

parent c4e634a4
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -74,10 +74,11 @@ class Database(metaclass=Singleton):
        return connect

    def sanitize(self, x):
        if type(x)==pymongo.cursor.Cursor:
        if isinstance(x, pymongo.cursor.Cursor):
            x=list(x)
        if type(x)==list:
        if isinstance(x, list):
            for y in x: self.sanitize(y)
        if isinstance(x, dict):
            if x and  "_id" in x: x.pop("_id")
        return x

@@ -226,11 +227,12 @@ class Database(metaclass=Singleton):
                self.sanitize(self.colCVE.find({"vulnerable_configuration": {"$regex": cpe}}).sort("Modified", -1))]

    def cve_query(self, limit=False, skip=0, sort=None, query={}):
        if not sort: sort = ("Modified", "desc")
        if isinstance(query, list): query = {"$and": query}
        if isinstance(sort, (list, tuple)) and len(sort) == 2:
            if sort[1].lower() == "asc": sort = (sort[0], 1)
            else:                        sort = (sort[0], -1) # Default Descending
        cves = self.colCVE.find(query).sort(sort[0], sort[1]).limit(limit).skip(skip)
        cves = list(self.colCVE.find(query).sort(sort[0], sort[1]).limit(limit).skip(skip))
        return [CVE.fromDict(x) for x in self.sanitize(cves)]

    def cve_textSearch(self, text):
@@ -341,7 +343,7 @@ class Database(metaclass=Singleton):

    def via4_link(self, key, val):
        cveList=[x['id'] for x in self.colVIA4.find({key: val})]
        return self.sanitize(self.cve_query(query={'id':{'$in':cveList}}))
        return self.cve_query(query={'id':{'$in':cveList}})

    def via4_drop(self):
        self.colVIA4.drop()
+0 −1
Original line number Diff line number Diff line
@@ -239,7 +239,6 @@ class CVEs:
        return cve

    def query(self, limit=False, skip=0, sort=None,  query={}, **kwargs):
        if not sort: sort = ("Modified", "desc")
        cves = self.db.cve_query(limit=limit, skip=skip, sort=sort, query=query)
        self._enhance(cves, **kwargs)
        return cves
+1 −1
Original line number Diff line number Diff line
@@ -296,7 +296,7 @@ class API():
        value=self.htmlDecode(value)
        regex = re.compile(re.escape(value), re.I)
        data = {'cves': self.db.VIA4.link(key, regex)}
        cvssList=[float(x['cvss']) for x in data['cves'] if 'cvss' in x]
        cvssList=[float(x.cvss) for x in data['cves'] if x.cvss]
        if cvssList:
            data['stats']={'maxCVSS': max(cvssList), 'minCVSS': min(cvssList),'count':len(data['cves'])}
        else:
+1 −0
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ class Minimal(API):
    def link(self, key=None,value=None):
        cve   = self.api_link(key, value)
        stats = cve.pop("stats")
        cve = cve['cves']
        return render_template('linked.html', via4map=key.split(".")[0], field='.'.join(key.split(".")[1:]),
                               value=value, cve=cve, stats=stats, minimal=self.minimal)