mirror of https://github.com/CIRCL/lookyloo
				
				
				
			fix: Pre-sort entries on index
							parent
							
								
									6d66bb858b
								
							
						
					
					
						commit
						da85aa0fb7
					
				|  | @ -18,6 +18,7 @@ from typing import Union, Dict, List, Tuple, Optional, Any, MutableMapping, Set, | ||||||
| from urllib.parse import urlsplit | from urllib.parse import urlsplit | ||||||
| from uuid import uuid4 | from uuid import uuid4 | ||||||
| from zipfile import ZipFile | from zipfile import ZipFile | ||||||
|  | import operator | ||||||
| 
 | 
 | ||||||
| import dns.resolver | import dns.resolver | ||||||
| import dns.rdatatype | import dns.rdatatype | ||||||
|  | @ -448,6 +449,18 @@ class Lookyloo(): | ||||||
|     def capture_uuids(self): |     def capture_uuids(self): | ||||||
|         return self.redis.hkeys('lookup_dirs') |         return self.redis.hkeys('lookup_dirs') | ||||||
| 
 | 
 | ||||||
|  |     @property | ||||||
|  |     def sorted_cache(self): | ||||||
|  |         all_cache = [] | ||||||
|  |         for capture_uuid in self.capture_uuids: | ||||||
|  |             try: | ||||||
|  |                 cache = self.capture_cache(capture_uuid) | ||||||
|  |                 if cache and 'timestamp' in cache: | ||||||
|  |                     all_cache.append(cache) | ||||||
|  |             except Exception: | ||||||
|  |                 pass | ||||||
|  |         return sorted(all_cache, key=operator.itemgetter('timestamp'), reverse=True) | ||||||
|  | 
 | ||||||
|     def capture_cache(self, capture_uuid: str) -> Dict[str, Union[str, Path]]: |     def capture_cache(self, capture_uuid: str) -> Dict[str, Union[str, Path]]: | ||||||
|         capture_dir = self.lookup_capture_dir(capture_uuid) |         capture_dir = self.lookup_capture_dir(capture_uuid) | ||||||
|         if not capture_dir: |         if not capture_dir: | ||||||
|  |  | ||||||
|  | @ -378,8 +378,7 @@ def index_generic(show_hidden: bool=False): | ||||||
|         cut_time = datetime.now() - timedelta(**time_delta_on_index) |         cut_time = datetime.now() - timedelta(**time_delta_on_index) | ||||||
|     else: |     else: | ||||||
|         cut_time = None  # type: ignore |         cut_time = None  # type: ignore | ||||||
|     for capture_uuid in lookyloo.capture_uuids: |     for cached in lookyloo.sorted_cache: | ||||||
|         cached = lookyloo.capture_cache(capture_uuid) |  | ||||||
|         if not cached: |         if not cached: | ||||||
|             continue |             continue | ||||||
|         if show_hidden: |         if show_hidden: | ||||||
|  | @ -388,9 +387,6 @@ def index_generic(show_hidden: bool=False): | ||||||
|                 continue |                 continue | ||||||
|         elif 'no_index' in cached: |         elif 'no_index' in cached: | ||||||
|             continue |             continue | ||||||
|         if 'timestamp' not in cached: |  | ||||||
|             # this is a buggy capture, skip |  | ||||||
|             continue |  | ||||||
|         if cut_time and datetime.fromisoformat(cached['timestamp'][:-1]) < cut_time:  # type: ignore |         if cut_time and datetime.fromisoformat(cached['timestamp'][:-1]) < cut_time:  # type: ignore | ||||||
|             continue |             continue | ||||||
|         titles.append((cached['uuid'], cached['title'], cached['timestamp'], cached['url'], |         titles.append((cached['uuid'], cached['title'], cached['timestamp'], cached['url'], | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Raphaël Vinot
						Raphaël Vinot