diff --git a/lookyloo/lookyloo.py b/lookyloo/lookyloo.py index 56eee85c..6b4c1349 100644 --- a/lookyloo/lookyloo.py +++ b/lookyloo/lookyloo.py @@ -345,7 +345,7 @@ class Lookyloo(): return self.redis.get(f'error_{capture_uuid}') def capture_cache(self, capture_uuid: str, /) -> Optional[CaptureCache]: - """Get the cache from redis.""" + """Get the cache from redis, rebuild the tree if the internal UUID changed => slow""" try: return self._captures_index[capture_uuid] except MissingCaptureDirectory as e: @@ -641,6 +641,9 @@ class Lookyloo(): captures_list['same_url'].append((h_capture_uuid, url_uuid, cache.title, cache.timestamp.isoformat(), url_hostname)) else: captures_list['different_url'].append((h_capture_uuid, url_uuid, cache.title, cache.timestamp.isoformat(), url_hostname)) + # Sort by timestamp by default + captures_list['same_url'].sort(key=lambda y: y[3]) + captures_list['different_url'].sort(key=lambda y: y[3]) return total_captures, captures_list def get_ressource(self, tree_uuid: str, /, urlnode_uuid: str, h: Optional[str]) -> Optional[Tuple[str, BytesIO, str]]: diff --git a/poetry.lock b/poetry.lock index a331b8e0..1397b891 100644 --- a/poetry.lock +++ b/poetry.lock @@ -72,17 +72,17 @@ python-versions = ">=3.6" [[package]] name = "attrs" -version = "21.4.0" +version = "22.1.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.5" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] [[package]] name = "backcall" @@ -1211,7 +1211,7 @@ types-urllib3 = "<1.27" [[package]] name = "types-setuptools" -version = "63.2.1" +version = "63.2.2" description = "Typing stubs for setuptools" category = "dev" optional = false @@ -1391,7 +1391,7 @@ misp = ["python-magic", "pydeep2"] [metadata] lock-version = "1.1" python-versions = ">=3.8,<3.11" -content-hash = "f3f02419df2a7962424ef429c83526964b734bc6524abaa4ce6b207884a30779" +content-hash = "7e09622171c396fb616322d9f73dea9433d2b479137f13ec40abc9666c71a92e" [metadata.files] aiohttp = [ @@ -1489,8 +1489,8 @@ async-timeout = [ {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, ] attrs = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, + {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, + {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] backcall = [ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, @@ -2430,8 +2430,8 @@ types-requests = [ {file = "types_requests-2.28.5-py3-none-any.whl", hash = "sha256:98ab647ae88b5e2c41d6d20cfcb5117da1bea561110000b6fdeeea07b3e89877"}, ] types-setuptools = [ - {file = "types-setuptools-63.2.1.tar.gz", hash = "sha256:2957a40addfca5c7125fd8d386a9efda5379098c6e66a08e02257fd1cea42131"}, - {file = "types_setuptools-63.2.1-py3-none-any.whl", hash = "sha256:eca7cbdd8db15e0ec37174a7dcfc9c8cbc87106f453066340e31729ec853cd63"}, + {file = "types-setuptools-63.2.2.tar.gz", hash = "sha256:a9aa0c01d5f3443cd544026d5ffc97b95ddadf731dab13419c393d43fd8617c0"}, + {file = "types_setuptools-63.2.2-py3-none-any.whl", hash = "sha256:a370df7a1e0dc856af9d998234f6e2ab04f30f25b8e1410f6db65910979f6252"}, ] types-urllib3 = [ {file = "types-urllib3-1.26.17.tar.gz", hash = "sha256:73fd274524c3fc7cd8cd9ceb0cb67ed99b45f9cb2831013e46d50c1451044800"}, diff --git a/pyproject.toml b/pyproject.toml index 3f4ef21c..206b4e4c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,7 +81,7 @@ types-pkg-resources = "^0.1.3" types-Deprecated = "^1.2.9" types-python-dateutil = "^2.8.19" types-beautifulsoup4 = "^4.11.4" -types-setuptools = "^63.2.1" +types-setuptools = "^63.2.2" types-Pillow = "^9.2.0" [build-system] diff --git a/website/web/templates/macros.html b/website/web/templates/macros.html index 115ec6bf..ca6f8f70 100644 --- a/website/web/templates/macros.html +++ b/website/web/templates/macros.html @@ -185,12 +185,12 @@ {# Lists of other captures loading the same content... #}
- Note that only the most recent captures are displayed here. + Note that only the most recent 20 captures are displayed here. {% if other_captures['different_url']|length > 0 %} {# ... on other URLs #}

The following captures get the same file from a different URL

- {{ other_captures_table(other_captures['different_url']) }} + {{ other_captures_table(other_captures['different_url'], 20) }}
{% endif %}
@@ -198,7 +198,7 @@ {# ... on the same URL #}

The following captures get the same file from the same URL

- {{ other_captures_table(other_captures['same_url']) }} + {{ other_captures_table(other_captures['same_url'], 20) }}
{% endif %}
@@ -206,7 +206,7 @@ {% endif %} {% endmacro %} -{% macro other_captures_table(entries) %} +{% macro other_captures_table(entries, max_entries) %}
@@ -217,7 +217,7 @@ - {% for capture_uuid, urlnode_uuid, title, timestamp, hostname in entries %} + {% for capture_uuid, urlnode_uuid, title, timestamp, hostname in entries[:max_entries] %}
{{ title }}