Beispiel #1
0
    def l(self, uuid):
        mindex = index.manage(sharedir=forbanshareroot, forbanglobal=forbanpath)
        dloot = loot.loot(dynpath=os.path.join(forbanpath,"var"))
        html = htmlheader

        html += """<br/> <br/> <br /> <div class="left inner"> <h2>Files available in loot %s </h2>""" % dloot.getname(uuid)
        html += htmlnav
        html += "<table>"
        html += "<tr><td>Filename</td><td>Fetch</td></tr>"

        for fileinindex in mindex.search("^((?!forban).)*$", uuid):
            filei = fileinindex.rsplit(",",1)[0]
            if re.search('/\.',filei):
                continue
            if re.search('^\+\.',filei):
                continue
            html += "<tr>"
            sourcev4 = dloot.getipv4(uuid)
            sourcev6 = dloot.getipv6(uuid)
            size = tools.convertbytes(mindex.getfilesize(filename=filei,uuid=uuid))
            html += """<td>%s (%s)</td><td><a href="/s/?g=%s&f=b64e">get</a></td> """ % (filei,size,base64e.encode(filei))
            html += "</tr>"

        html += "</table>"
        html += htmlfooter
        return html
Beispiel #2
0
    def q(self, v=None, r=None):
        querystring = v
        mindex = index.manage(sharedir=forbanshareroot, forbanglobal=forbanpath)
        discoveredloot = loot.loot(dynpath=os.path.join(forbanpath,"var"))
        searchresult = []
        for name in discoveredloot.listall():
            if (discoveredloot.exist(name) and discoveredloot.lastannounced(name)):
               fileavailable = mindex.search( uuid=name, query=querystring)
               for filefound in fileavailable:
                   searchresult.append((filefound,name))
        searchresult.sort()
        html = htmlheader
        html += "<title>search results of %s</title>" % (querystring)
        if r is not None:
            html += """<meta http-equiv="refresh" content="%s">""" % (r)
        html += "</head>"
        html += htmlnav
        html += """<br/> <br/> <div class="left inner">"""
        previousfile = None
        html += "<table><tr><th>Filename</th><th>Available on</th></tr>"
        for foundfiles in searchresult:

            if foundfiles[0] == previousfile:
                html += """<a href="%s">%s</a> """ % (forban_geturl(uuid=foundfiles[1],filename=filename),discoveredloot.getname(foundfiles[1]))
            elif previousfile == None:
                filename = foundfiles[0].rsplit(",",1)[0]
                html += """<td>%s</td> <td><a href="%s">%s</a> """ % (foundfiles[0].rsplit(",",1)[0],forban_geturl(uuid=foundfiles[1],filename=filename),discoveredloot.getname(foundfiles[1]))
            else:
                filename = foundfiles[0].rsplit(",",1)[0]
                html += """</td></tr><td>%s</td> <td><a href="%s">%s</a> """ % (foundfiles[0].rsplit(",",1)[0],forban_geturl(uuid=foundfiles[1],filename=filename),discoveredloot.getname(foundfiles[1]))

            previousfile=foundfiles[0]
        html += "</td></tr></table></div>"
        return html
Beispiel #3
0
    def v(self, uuid):
        mindex = index.manage(sharedir=forbanshareroot, forbanglobal=forbanpath)
        dloot = loot.loot(dynpath=os.path.join(forbanpath,"var"))
        missingfiles = mindex.howfar(uuid)
        html = htmlheader
        html += """<br/> <br/> <br/> <div class="left inner"> <h2>Missing files on your loot from %s </h2>""" % dloot.getname(uuid)
        html += htmlnav
        html += "<table>"

        if missingfiles is None:

                html += "You are not missing any files with %s " % dloot.getname(uuid)
        else:

            for filemissed in missingfiles:
                html += "<tr>"
                sourcev4 = dloot.getipv4(uuid)
                sourcev6 = dloot.getipv6(uuid)
                html += """<td>%s</td><td><a
                href="http://%s:12555/s/?g=%s&f=b64e">v4</a></td> """ % (filemissed,sourcev4,base64e.encode(filemissed))
                if sourcev6 is not None:
                    html += """<td><a href="http://[%s]:12555/s/?g=%s&f=b64e">v6</a></td>""" % (sourcev6, base64e.encode(filemissed))
                html += "</tr>"

        html += "</table>"
        html += htmlfooter
        return html
Beispiel #4
0
    def l(self, uuid):
        mindex = index.manage(sharedir=forbanshareroot,
                              forbanglobal=forbanpath)
        dloot = loot.loot(dynpath=os.path.join(forbanpath, "var"))
        html = htmlheader

        html += """<br/> <br/> <br /> <div class="left inner"> <h2>Files available in loot %s </h2>""" % dloot.getname(
            uuid)
        html += htmlnav
        html += "<table>"
        html += "<tr><td>Filename</td><td>Fetch</td></tr>"
        tempindex = mindex.search("^((?!forban).)*$", uuid)
        tempindex.sort(key=string.lower)
        for fileinindex in tempindex:
            filei = fileinindex.rsplit(",", 1)[0]
            if re.search('/\.', filei):
                continue
            if re.search('^\+\.', filei):
                continue
            html += "<tr>"
            sourcev4 = dloot.getipv4(uuid)
            sourcev6 = dloot.getipv6(uuid)
            size = tools.convertbytes(
                mindex.getfilesize(filename=filei, uuid=uuid))
            html += """<td>%s (%s)</td><td><a href="/s/?g=%s&f=b64e">get</a></td> """ % (
                filei, size, base64e.encode(filei))
            html += "</tr>"

        html += "</table>"
        html += htmlfooter
        return html
Beispiel #5
0
    def v(self, uuid):
        mindex = index.manage(sharedir=forbanshareroot,
                              forbanglobal=forbanpath)
        dloot = loot.loot(dynpath=os.path.join(forbanpath, "var"))
        missingfiles = mindex.howfar(uuid)
        html = htmlheader
        html += """<br/> <br/> <br/> <div class="left inner"> <h2>Missing files on your loot from %s </h2>""" % dloot.getname(
            uuid)
        html += htmlnav
        html += "<table>"

        if missingfiles is None:

            html += "You are not missing any files with %s " % dloot.getname(
                uuid)
        else:

            for filemissed in missingfiles:
                html += "<tr>"
                sourcev4 = dloot.getipv4(uuid)
                sourcev6 = dloot.getipv6(uuid)
                html += """<td>%s</td><td><a
                href="http://%s:12555/s/?g=%s&f=b64e">v4</a></td> """ % (
                    filemissed, sourcev4, base64e.encode(filemissed))
                if sourcev6 is not None:
                    html += """<td><a href="http://[%s]:12555/s/?g=%s&f=b64e">v6</a></td>""" % (
                        sourcev6, base64e.encode(filemissed))
                html += "</tr>"

        html += "</table>"
        html += htmlfooter
        return html
Beispiel #6
0
    def q(self, v=None, r=None):
        querystring = v
        mindex = index.manage(sharedir=forbanshareroot,
                              forbanglobal=forbanpath)
        discoveredloot = loot.loot(dynpath=os.path.join(forbanpath, "var"))
        searchresult = []
        for name in discoveredloot.listall():
            if (discoveredloot.exist(name)
                    and discoveredloot.lastannounced(name)):
                fileavailable = mindex.search(uuid=name, query=querystring)
                for filefound in fileavailable:
                    searchresult.append((filefound, name))
        searchresult.sort()
        html = htmlheader
        html += "<title>search results of %s</title>" % (querystring)
        if r is not None:
            html += """<meta http-equiv="refresh" content="%s">""" % (r)
        html += "</head>"
        html += htmlnav
        html += """<br/> <br/> <div class="left inner">"""
        previousfile = None
        html += "<table><tr><th>Filename</th><th>Available on</th></tr>"
        for foundfiles in searchresult:

            if foundfiles[0] == previousfile:
                html += """<a href="%s">%s</a> """ % (forban_geturl(
                    uuid=foundfiles[1],
                    filename=filename), discoveredloot.getname(foundfiles[1]))
            elif previousfile == None:
                filename = foundfiles[0].rsplit(",", 1)[0]
                html += """<td>%s</td> <td><a href="%s">%s</a> """ % (
                    foundfiles[0].rsplit(",", 1)[0],
                    forban_geturl(uuid=foundfiles[1], filename=filename),
                    discoveredloot.getname(foundfiles[1]))
            else:
                filename = foundfiles[0].rsplit(",", 1)[0]
                html += """</td></tr><td>%s</td> <td><a href="%s">%s</a> """ % (
                    foundfiles[0].rsplit(",", 1)[0],
                    forban_geturl(uuid=foundfiles[1], filename=filename),
                    discoveredloot.getname(foundfiles[1]))

            previousfile = foundfiles[0]
        html += "</td></tr></table></div>"
        return html
Beispiel #7
0
except ConfigParser.Error:
    efilter = None

refilter = re.compile(ofilter, re.I)
if efilter is not None:
    exfilter = re.compile(efilter, re.I)
else:
    exfilter = re.compile("", re.I)

try:
    maxsize = config.get('opportunistic','maxsize')
except ConfigParser.Error:
    maxsize = 0

discoveredloot = loot.loot(dynpath=os.path.join(forbanpath,"var"))
allindex = index.manage(sharedir=forbanshareroot, forbanglobal=forbanpath)
allindex.build()

flogger.info("forban_opportunistic starting...")
flogger.info("applied including regexp filter: %s" % ofilter)
flogger.info("applied excluding regexp filter: %s" % efilter)
while(1):

    for uuid in discoveredloot.listall():

        # check if my loot is not exceeding the maxsize
        mysize = allindex.totalfilesize(discoveredloot.whoami())
        if float(maxsize) != 0:
            if mysize is False:
                continue
            if float(mysize[:-2])>float(maxsize):
Beispiel #8
0
    def index(self, directory=forbanshareroot):
        html = htmlheader
        html += htmlnav
        html += """<br/> <br/> <br/> <div class="right inner">"""
        html += """ <h2>Search the loot...</h2> """
        html += """ <form method=get action="q/"><input type="text" name="v" value=""> <input
        type="submit" value="search"></form> """
        html += """</div> <div class="left inner">"""
        html += """ <h2>Discovered link-local Forban available with their loot in the last 3 minutes</h2> """
        html += "<table>"
        html += "<th><td>Access</td><td>Name</td><td>Last seen</td><td>Size</td><td>How many files are missing from yourself?</td><td></td></th>"
        discoveredloot = loot.loot(dynpath=os.path.join(forbanpath,"var"))
        mysourcev4 = discoveredloot.getipv4(discoveredloot.whoami())
        allindex =  index.manage(sharedir=forbanshareroot, forbanglobal=forbanpath)
        for name in discoveredloot.listall():
            if (discoveredloot.exist(name) and discoveredloot.lastannounced(name)):
                allindex.cache(name)
            if discoveredloot.lastannounced(name):
                html += "<tr>"
                rname = discoveredloot.getname(name)
                sourcev4 = discoveredloot.getipv4(name)
                if sourcev4 is not None:
                    html += """<td><a href="http://%s:12555/">v4</a></td> """ % sourcev4
                else:
                    html += """<td></td>"""
                sourcev6 = discoveredloot.getipv6(name)
            
                if sourcev6 is not None:
                    html += """<td><a href="http://[%s]:12555/">v6</a></td> """ % sourcev6
                else:
                    html += """<td></td>"""

                html += "<td>"+rname+"</td>"

                lastseen = discoveredloot.lastannounced(name)

                if lastseen is not None:
                    html += """<td>%s secs ago</td>""" % lastseen
                else:
                    html += "<td>never seen</td>"
                missingfiles = allindex.howfar(name)

                totalsize = allindex.totalfilesize(name)
                html +="<td>%s</td>" % str(totalsize)

                if type(missingfiles) is bool:
                    html += "<td><b>Missing index</b> from this loot"
                elif missingfiles is not None:
                    html += "<td>Missing %s files from this loot" % len(missingfiles)
                else:
                    html += "<td>Missing no files from this loot"

                if name != discoveredloot.whoami():
                    html += """ <a href="http://%s:12555/v/%s">[missing?]</a> """ % (mysourcev4,name)
                    html += """ <a href="http://%s:12555/l/%s">[browse]</a> """ % (mysourcev4,name)
                if name == discoveredloot.whoami():
                    html += """ <a href="/l/%s">[browse]</a> """ % (name)
                    html += "<td><i>yourself</i></td>"
                else:
                    html += "<td></td>"
                html += "</tr>"

        html += "</table></div>"
        html += htmlfooter
        return html
Beispiel #9
0
    def debug(self, directory=forbanshareroot):
        html = htmlheader
        html += htmlnav
        html += """<br/> <br/> <br/> <div class="right inner">"""
        html += """ <h2>Search the loot...</h2> """
        html += """ <form method=get action="q/"><input type="text" name="v" value=""> <input
        type="submit" value="search"></form> """
        html += """</div> <div class="left inner">"""
        html += """ <h2>Discovered link-local Forban available with their loot in the last 3 minutes</h2> """
        html += "<table>"
        html += "<th><td>Access</td><td>Name</td><td>Last seen</td><td>Size</td><td>How many files are missing from yourself?</td><td></td></th>"
        discoveredloot = loot.loot(dynpath=os.path.join(forbanpath, "var"))
        mysourcev4 = discoveredloot.getipv4(discoveredloot.whoami())
        allindex = index.manage(sharedir=forbanshareroot,
                                forbanglobal=forbanpath)
        for name in discoveredloot.listall():
            if (discoveredloot.exist(name)
                    and discoveredloot.lastannounced(name)):
                allindex.cache(name)
            if discoveredloot.lastannounced(name):
                html += "<tr>"
                rname = discoveredloot.getname(name)
                sourcev4 = discoveredloot.getipv4(name)
                if sourcev4 is not None:
                    html += """<td><a href="http://%s:12555/">v4</a></td> """ % sourcev4
                else:
                    html += """<td></td>"""
                sourcev6 = discoveredloot.getipv6(name)

                if sourcev6 is not None:
                    html += """<td><a href="http://[%s]:12555/">v6</a></td> """ % sourcev6
                else:
                    html += """<td></td>"""

                html += "<td>" + rname + "</td>"

                lastseen = discoveredloot.lastannounced(name)

                if lastseen is not None:
                    html += """<td>%s secs ago</td>""" % lastseen
                else:
                    html += "<td>never seen</td>"
                missingfiles = allindex.howfar(name)

                totalsize = allindex.totalfilesize(name)
                html += "<td>%s</td>" % str(totalsize)

                if type(missingfiles) is bool:
                    html += "<td><b>Missing index</b> from this loot"
                elif missingfiles is not None:
                    html += "<td>Missing %s files from this loot" % len(
                        missingfiles)
                else:
                    html += "<td>Missing no files from this loot"

                if name != discoveredloot.whoami():
                    html += """ <a href="http://%s:12555/v/%s">[missing?]</a> """ % (
                        mysourcev4, name)
                    html += """ <a href="http://%s:12555/l/%s">[browse]</a> """ % (
                        mysourcev4, name)
                if name == discoveredloot.whoami():
                    html += """ <a href="/l/%s">[browse]</a> """ % (name)
                    html += "<td><i>yourself</i></td>"
                else:
                    html += "<td></td>"
                html += "</tr>"

        html += "</table></div>"
        html += htmlfooter
        return html