Exemple #1
0
 def test_find(self):
     path = "/home/test/downloads"
     size_filter = core.algorithm.SizeFilter()
     char_filter = core.algorithm.CharacterFilter()
     filters = [
         size_filter,
         char_filter
     ]
     dup_finder = core.dup_finder.DupFinder([path], filters)
     file_a = File("/home/test/downloads/a")
     file_b = File("/home/test/downloads/b")
     file_insts = [file_a, file_b]
     when(core.dup_finder.Walker).walk([path]).thenReturn(file_insts)
     when(size_filter).find().thenReturn(None)
     size_filter.filtered_files = file_insts
     when(size_filter).set_files().thenReturn(None)
     when(char_filter).set_files().thenReturn(None)
     when(char_filter).find().thenReturn(None)
     char_filter.filtered_files = []
     dup_finder.find()
     verify(core.dup_finder.Walker).walk([path])
     verify(size_filter).set_files(file_insts)
     verify(size_filter).find()
     verify(char_filter).set_files(file_insts)
     verify(char_filter).find()
     self.assertEqual([], dup_finder.dup_files)
Exemple #2
0
    def put(self, path):
        try:
            context = g.context
            connection = context.get_connection()
            result = []
            for f in request.files.getlist('file'):
                file = File()
                file.update_file(context, f, path)
                result.append({
                    "status": "OK",
                    "file_id": file.get_file_id(),
                    "remote_path": path
                })

            return make_response(dict({
                "results": result,
                "status": "ok"
            }), 200)

        except FileNotFoundInDatabase as err:
            logger.exception(f"FileNotFoundInDatabase: {err}")
            return make_response({"status": "Err", "error": str(err)}, 404)
        except Exception as err:
            logger.exception(f"Exception: {err}")
            return make_response({"status": "Err", "error": str(err)}, 500)
Exemple #3
0
    def get(self, path):
        try:
            context = g.context
            connection = context.get_connection()

            file = File()
            result = file.read_file(context, path)

            if result == None:
                return make_response(
                    {
                        "status": "Err",
                        "error": f"File not found: {path}"
                    }, 404)

            response = make_response(result['file'])
            response.headers.set('Content-Type', result['mime_type'])
            #response.headers.set('Content-Disposition', 'attachment', filename='test.jpg')
            response.headers.set('Content-Disposition',
                                 'inline',
                                 filename=result['name'])
            return response

        except Exception as err:
            logger.exception(f"Exception: {err}")
            return make_response({"status": "Err", "error": str(err)}, 500)
Exemple #4
0
 def __path_walk(self, path):
     file_instances = list()
     for (root, dirs, files) in os.walk(path):
         #            LOG.debug("{0} {1} {2}".format(root, dirs, files))
         for _file in files:
             filepath = os.path.join(root, _file)
             if os.path.exists(filepath):
                 file_instance = File(filepath)
                 file_instances.append(file_instance)
                 self.progress = self.progress + 1
     return file_instances
Exemple #5
0
    def __init__(self, opts):
        """ constructor"""

        self.opts = opts  # all nullscan options
        self.logger = Logger()
        self.log = self.logger.log
        self.file = File()
        self.misc = Misc()

        # tmp stupid fix to strip bad chars out of options
        self.bad_chars = '<>()[]{}:;.,="\'*&^%$#@!+-_/?°²³´`'

        return
Exemple #6
0
def main():
    path = sys.argv[1]
    LOG.info("Start to find duplicated files on {0}".format(path))

    if os.path.isfile(path):
        start_time = time.time()
        print (File(path).md5sum)
        print (File(path).size)
        end_time = time.time()
        print (end_time - start_time)
    else:
        start_time = time.time()
        filters = [
            core.algorithm.SizeFilter(),
            core.algorithm.CharacterFilter()
        ]
        dup_finder = core.dup_finder.DupFinder([path], filters)
        dup_finder.find()
        end_time = time.time()
        #dup_finder.dump2file("output.txt")
        dup_finder.dump2csv("output.csv")
        print (end_time - start_time)
        print (utils.size_renderer(dup_finder.dup_size))
Exemple #7
0
    def __init__(self, target, opts):
        """ init """

        Helper.__init__(self, target, opts)
        ToolsHelper.__init__(self)
        Tools.__init__(self, target, opts)
        Parser.__init__(self)

        self.logger = Logger()
        self.log = self.logger.log
        self.file = File()
        self.logfile = None  # logfile for command

        return
Exemple #8
0
  def __init__(self):
    """ constructor """

    # logger
    self.logger = Logger()
    self.log = self.logger.log

    # file i/o
    self.file = File()

    # original terminal state
    self.term_fd = sys.stdin.fileno()
    self.term_state = termios.tcgetattr(self.term_fd)

    return
Exemple #9
0
    def __init__(self, date, opts, template_dir, report_dir, logs_dir):
        """ constructor """

        self.date = date
        self.opts = opts
        self.res = {}  # holds the results out of log dirs

        self.template_dir = template_dir
        self.report_dir = report_dir
        self.logs_dir = logs_dir

        self.file = File()

        self.file.copy_dirs(self.template_dir, self.report_dir)
        self.index_html = f'{self.report_dir}/index.html'
        self.res_html = f'{self.report_dir}/results.html'
        self.index_html_data = self.file.read_file(self.index_html)
        self.res_html_data = self.file.read_file(self.res_html)

        return
Exemple #10
0
    def __init__(self):
        """ constructor """

        # options and modules
        self.opt = None
        self.mod = Module(MOD_PATH)

        # logger
        self.logger = Logger()
        self.log = self.logger.log

        # rest we need
        self.file = File()
        self.check = Check()
        self.misc = Misc()
        self.parser = None

        # nullscan working dir
        self.nullscan_dir = None

        return
Exemple #11
0
  def __init__(self, mod_path):
    """ constructor """

    # logger
    self.logger = Logger()
    self.log = self.logger.log

    # file i/o
    self.file = File()

    # get all modules
    self.mod_path = mod_path
    self.mods = []
    self.get_modules()

    # all loaded module
    self.lmod = {}

    # docstrings for all tools
    self.docstrings = {}

    return
Exemple #12
0
 def get(self, **kwargs):
     args = self.parser.parse_args()
     path = args['path']
     if os.path.isfile(path):
         return File(path)
     raise UnprocessableEntity