lanscape 1.3.6b1__tar.gz → 1.3.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of lanscape might be problematic. Click here for more details.

Files changed (85) hide show
  1. {lanscape-1.3.6b1/lanscape.egg-info → lanscape-1.3.8}/PKG-INFO +9 -10
  2. {lanscape-1.3.6b1 → lanscape-1.3.8}/README.md +8 -9
  3. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/device_alive.py +5 -3
  4. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/scan_config.py +3 -3
  5. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/blueprints/api/tools.py +23 -4
  6. {lanscape-1.3.6b1 → lanscape-1.3.8/lanscape.egg-info}/PKG-INFO +9 -10
  7. {lanscape-1.3.6b1 → lanscape-1.3.8}/pyproject.toml +1 -1
  8. {lanscape-1.3.6b1 → lanscape-1.3.8}/tests/test_api.py +25 -0
  9. {lanscape-1.3.6b1 → lanscape-1.3.8}/LICENSE +0 -0
  10. {lanscape-1.3.6b1 → lanscape-1.3.8}/MANIFEST.in +0 -0
  11. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/__init__.py +0 -0
  12. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/__main__.py +0 -0
  13. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/__init__.py +0 -0
  14. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/app_scope.py +0 -0
  15. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/decorators.py +0 -0
  16. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/errors.py +0 -0
  17. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/ip_parser.py +0 -0
  18. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/logger.py +0 -0
  19. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/mac_lookup.py +0 -0
  20. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/net_tools.py +0 -0
  21. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/port_manager.py +0 -0
  22. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/runtime_args.py +0 -0
  23. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/service_scan.py +0 -0
  24. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/subnet_scan.py +0 -0
  25. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/version_manager.py +0 -0
  26. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/libraries/web_browser.py +0 -0
  27. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/resources/mac_addresses/convert_csv.py +0 -0
  28. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/resources/mac_addresses/mac_db.json +0 -0
  29. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/resources/ports/convert_csv.py +0 -0
  30. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/resources/ports/full.json +0 -0
  31. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/resources/ports/large.json +0 -0
  32. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/resources/ports/medium.json +0 -0
  33. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/resources/ports/small.json +0 -0
  34. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/resources/services/definitions.jsonc +0 -0
  35. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/__init__.py +0 -0
  36. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/app.py +0 -0
  37. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/blueprints/__init__.py +0 -0
  38. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/blueprints/api/__init__.py +0 -0
  39. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/blueprints/api/port.py +0 -0
  40. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/blueprints/api/scan.py +0 -0
  41. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/blueprints/web/__init__.py +0 -0
  42. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/blueprints/web/routes.py +0 -0
  43. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/main.py +0 -0
  44. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/shutdown_handler.py +0 -0
  45. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/css/style.css +0 -0
  46. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/img/ico/android-chrome-192x192.png +0 -0
  47. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/img/ico/android-chrome-512x512.png +0 -0
  48. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/img/ico/apple-touch-icon.png +0 -0
  49. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/img/ico/favicon-16x16.png +0 -0
  50. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/img/ico/favicon-32x32.png +0 -0
  51. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/img/ico/favicon.ico +0 -0
  52. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/img/ico/site.webmanifest +0 -0
  53. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/js/core.js +0 -0
  54. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/js/layout-sizing.js +0 -0
  55. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/js/main.js +0 -0
  56. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/js/on-tab-close.js +0 -0
  57. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/js/quietReload.js +0 -0
  58. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/js/scan-config.js +0 -0
  59. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/js/shutdown-server.js +0 -0
  60. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/js/subnet-info.js +0 -0
  61. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/js/subnet-selector.js +0 -0
  62. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/static/lanscape.webmanifest +0 -0
  63. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/base.html +0 -0
  64. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/core/head.html +0 -0
  65. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/core/scripts.html +0 -0
  66. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/error.html +0 -0
  67. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/info.html +0 -0
  68. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/main.html +0 -0
  69. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/scan/config.html +0 -0
  70. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/scan/export.html +0 -0
  71. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/scan/ip-table-row.html +0 -0
  72. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/scan/ip-table.html +0 -0
  73. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/scan/overview.html +0 -0
  74. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/scan/scan-error.html +0 -0
  75. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/scan.html +0 -0
  76. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape/ui/templates/shutdown.html +0 -0
  77. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape.egg-info/SOURCES.txt +0 -0
  78. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape.egg-info/dependency_links.txt +0 -0
  79. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape.egg-info/requires.txt +0 -0
  80. {lanscape-1.3.6b1 → lanscape-1.3.8}/lanscape.egg-info/top_level.txt +0 -0
  81. {lanscape-1.3.6b1 → lanscape-1.3.8}/setup.cfg +0 -0
  82. {lanscape-1.3.6b1 → lanscape-1.3.8}/tests/test_env.py +0 -0
  83. {lanscape-1.3.6b1 → lanscape-1.3.8}/tests/test_library.py +0 -0
  84. {lanscape-1.3.6b1 → lanscape-1.3.8}/tests/test_logging.py +0 -0
  85. {lanscape-1.3.6b1 → lanscape-1.3.8}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lanscape
3
- Version: 1.3.6b1
3
+ Version: 1.3.8
4
4
  Summary: A python based local network scanner
5
5
  Author-email: Michael Dennis <michael@dipduo.com>
6
6
  License-Expression: MIT
@@ -30,6 +30,7 @@ A python based local network scanner.
30
30
 
31
31
  PyPi Stats:
32
32
 
33
+ ![Version](https://img.shields.io/pypi/v/lanscape)
33
34
  ![Monthly Downloads](https://img.shields.io/pypi/dm/lanscape)
34
35
 
35
36
  Latest release:
@@ -38,14 +39,14 @@ Latest release:
38
39
  ![Beta](https://img.shields.io/github/v/tag/mdennis281/LANScape?filter=pre-releases%2F*b*&label=Beta)
39
40
  ![Alpha](https://img.shields.io/github/v/tag/mdennis281/LANScape?filter=pre-releases%2F*a*&label=Alpha)
40
41
 
41
- Tests:
42
+ Health:
42
43
 
43
44
  ![pytest](https://img.shields.io/github/actions/workflow/status/mdennis281/LANscape/test.yml?branch=main&label=pytest)
44
45
  ![packaging](https://img.shields.io/github/actions/workflow/status/mdennis281/LANscape/test-package.yml?label=packaging)
45
46
  ![pylint](https://img.shields.io/github/actions/workflow/status/mdennis281/LANscape/pylint.yml?branch=main&label=pylint)
46
47
 
47
48
 
48
- ## Local Run
49
+ ## Installation
49
50
  ```sh
50
51
  pip install lanscape
51
52
  python -m lanscape
@@ -73,16 +74,14 @@ The program does an ARP lookup to determine the MAC address. This lookup
73
74
  can sometimes require admin-level permissions to retrieve accurate results.
74
75
  *Try elevating your shell before execution.*
75
76
 
76
- ### Message "WARNING: No libpcap provider available ! pcap won't be used"
77
- This is a missing dependency related to the ARP lookup. This is handled in the code, but you would get marginally faster/better results with this installed: [npcap download](https://npcap.com/#download)
78
-
79
77
  ### The accuracy of the devices found is low
80
- I use a combination of ARP and Ping to determine if a device is online. This method drops in stability when used in many threads.
78
+ I use a combination of ARP, ICMP & port testing to determine if a device is online. Sometimes the scan settings can use some tuning to maximize both speed and accuracy.
79
+
81
80
  Recommendations:
82
81
 
83
- - Drop parallelism value (advanced dropdown)
84
- - Use python > 3.10 im noticing threadpool improvements after this version
85
- - Create a bug - I'm curious
82
+ - Adjust scan configuration
83
+ - Configure ARP lookup [ARP lookup setup](./support/arp-issues.md)
84
+ - Create a bug
86
85
 
87
86
 
88
87
  ### Something else
@@ -6,6 +6,7 @@ A python based local network scanner.
6
6
 
7
7
  PyPi Stats:
8
8
 
9
+ ![Version](https://img.shields.io/pypi/v/lanscape)
9
10
  ![Monthly Downloads](https://img.shields.io/pypi/dm/lanscape)
10
11
 
11
12
  Latest release:
@@ -14,14 +15,14 @@ Latest release:
14
15
  ![Beta](https://img.shields.io/github/v/tag/mdennis281/LANScape?filter=pre-releases%2F*b*&label=Beta)
15
16
  ![Alpha](https://img.shields.io/github/v/tag/mdennis281/LANScape?filter=pre-releases%2F*a*&label=Alpha)
16
17
 
17
- Tests:
18
+ Health:
18
19
 
19
20
  ![pytest](https://img.shields.io/github/actions/workflow/status/mdennis281/LANscape/test.yml?branch=main&label=pytest)
20
21
  ![packaging](https://img.shields.io/github/actions/workflow/status/mdennis281/LANscape/test-package.yml?label=packaging)
21
22
  ![pylint](https://img.shields.io/github/actions/workflow/status/mdennis281/LANscape/pylint.yml?branch=main&label=pylint)
22
23
 
23
24
 
24
- ## Local Run
25
+ ## Installation
25
26
  ```sh
26
27
  pip install lanscape
27
28
  python -m lanscape
@@ -49,16 +50,14 @@ The program does an ARP lookup to determine the MAC address. This lookup
49
50
  can sometimes require admin-level permissions to retrieve accurate results.
50
51
  *Try elevating your shell before execution.*
51
52
 
52
- ### Message "WARNING: No libpcap provider available ! pcap won't be used"
53
- This is a missing dependency related to the ARP lookup. This is handled in the code, but you would get marginally faster/better results with this installed: [npcap download](https://npcap.com/#download)
54
-
55
53
  ### The accuracy of the devices found is low
56
- I use a combination of ARP and Ping to determine if a device is online. This method drops in stability when used in many threads.
54
+ I use a combination of ARP, ICMP & port testing to determine if a device is online. Sometimes the scan settings can use some tuning to maximize both speed and accuracy.
55
+
57
56
  Recommendations:
58
57
 
59
- - Drop parallelism value (advanced dropdown)
60
- - Use python > 3.10 im noticing threadpool improvements after this version
61
- - Create a bug - I'm curious
58
+ - Adjust scan configuration
59
+ - Configure ARP lookup [ARP lookup setup](./support/arp-issues.md)
60
+ - Create a bug
62
61
 
63
62
 
64
63
  ### Something else
@@ -6,7 +6,6 @@ import re
6
6
  import socket
7
7
  import subprocess
8
8
  import time
9
- import random
10
9
  from typing import List
11
10
  import psutil
12
11
 
@@ -218,10 +217,13 @@ class Poker():
218
217
 
219
218
  @timeout_enforcer(enforcer_timeout, raise_on_timeout=True)
220
219
  def do_poke():
221
- for _ in range(cfg.attempts):
220
+ # Use a small set of common ports likely to be filtered but still trigger ARP
221
+ common_ports = [80, 443, 22]
222
+ for i in range(cfg.attempts):
222
223
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
223
224
  sock.settimeout(cfg.timeout)
224
- sock.connect_ex((device.ip, random.randint(1024, 65535))) # port shouldn't matter
225
+ port = common_ports[i % len(common_ports)]
226
+ sock.connect_ex((device.ip, port))
225
227
  sock.close()
226
228
 
227
229
  do_poke()
@@ -178,9 +178,9 @@ class ScanConfig(BaseModel):
178
178
  subnet: str
179
179
  port_list: str
180
180
  t_multiplier: float = 1.0
181
- t_cnt_port_scan: int = os.cpu_count()
182
- t_cnt_port_test: int = os.cpu_count() * 4
183
- t_cnt_isalive: int = os.cpu_count() * 6
181
+ t_cnt_port_scan: int = os.cpu_count() or 4
182
+ t_cnt_port_test: int = (os.cpu_count() or 4) * 4
183
+ t_cnt_isalive: int = (os.cpu_count() or 4) * 6
184
184
 
185
185
  task_scan_ports: bool = True
186
186
  # below wont run if above false
@@ -5,7 +5,7 @@ API endpoints for subnet testing and listing.
5
5
  import traceback
6
6
  from flask import request, jsonify
7
7
  from lanscape.ui.blueprints.api import api_bp
8
- from lanscape.libraries.net_tools import get_all_network_subnets
8
+ from lanscape.libraries.net_tools import get_all_network_subnets, is_arp_supported
9
9
  from lanscape.libraries.ip_parser import parse_ip_input
10
10
  from lanscape.libraries.errors import SubnetTooLargeError
11
11
  from lanscape.libraries.scan_config import DEFAULT_CONFIGS
@@ -46,7 +46,26 @@ def list_subnet():
46
46
  def get_default_configs():
47
47
  """
48
48
  Get default scan configurations.
49
+
50
+ When active ARP lookups are not supported on the host system, adjust any
51
+ presets that rely on ``ARP_LOOKUP`` to use the ``POKE_THEN_ARP`` fallback
52
+ instead. This keeps presets such as ``accurate`` usable without requiring
53
+ frontend overrides.
49
54
  """
50
- return jsonify(
51
- {key: config.to_dict() for key, config in DEFAULT_CONFIGS.items()}
52
- )
55
+ arp_supported = is_arp_supported()
56
+
57
+ configs = {}
58
+ for key, config in DEFAULT_CONFIGS.items():
59
+ config_dict = config.to_dict()
60
+
61
+ if not arp_supported:
62
+ lookup_types = list(config_dict.get('lookup_type') or [])
63
+ if 'ARP_LOOKUP' in lookup_types:
64
+ lookup_types = [lt for lt in lookup_types if lt != 'ARP_LOOKUP']
65
+ if 'POKE_THEN_ARP' not in lookup_types:
66
+ lookup_types.append('POKE_THEN_ARP')
67
+ config_dict['lookup_type'] = lookup_types
68
+
69
+ configs[key] = config_dict
70
+
71
+ return jsonify(configs)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lanscape
3
- Version: 1.3.6b1
3
+ Version: 1.3.8
4
4
  Summary: A python based local network scanner
5
5
  Author-email: Michael Dennis <michael@dipduo.com>
6
6
  License-Expression: MIT
@@ -30,6 +30,7 @@ A python based local network scanner.
30
30
 
31
31
  PyPi Stats:
32
32
 
33
+ ![Version](https://img.shields.io/pypi/v/lanscape)
33
34
  ![Monthly Downloads](https://img.shields.io/pypi/dm/lanscape)
34
35
 
35
36
  Latest release:
@@ -38,14 +39,14 @@ Latest release:
38
39
  ![Beta](https://img.shields.io/github/v/tag/mdennis281/LANScape?filter=pre-releases%2F*b*&label=Beta)
39
40
  ![Alpha](https://img.shields.io/github/v/tag/mdennis281/LANScape?filter=pre-releases%2F*a*&label=Alpha)
40
41
 
41
- Tests:
42
+ Health:
42
43
 
43
44
  ![pytest](https://img.shields.io/github/actions/workflow/status/mdennis281/LANscape/test.yml?branch=main&label=pytest)
44
45
  ![packaging](https://img.shields.io/github/actions/workflow/status/mdennis281/LANscape/test-package.yml?label=packaging)
45
46
  ![pylint](https://img.shields.io/github/actions/workflow/status/mdennis281/LANscape/pylint.yml?branch=main&label=pylint)
46
47
 
47
48
 
48
- ## Local Run
49
+ ## Installation
49
50
  ```sh
50
51
  pip install lanscape
51
52
  python -m lanscape
@@ -73,16 +74,14 @@ The program does an ARP lookup to determine the MAC address. This lookup
73
74
  can sometimes require admin-level permissions to retrieve accurate results.
74
75
  *Try elevating your shell before execution.*
75
76
 
76
- ### Message "WARNING: No libpcap provider available ! pcap won't be used"
77
- This is a missing dependency related to the ARP lookup. This is handled in the code, but you would get marginally faster/better results with this installed: [npcap download](https://npcap.com/#download)
78
-
79
77
  ### The accuracy of the devices found is low
80
- I use a combination of ARP and Ping to determine if a device is online. This method drops in stability when used in many threads.
78
+ I use a combination of ARP, ICMP & port testing to determine if a device is online. Sometimes the scan settings can use some tuning to maximize both speed and accuracy.
79
+
81
80
  Recommendations:
82
81
 
83
- - Drop parallelism value (advanced dropdown)
84
- - Use python > 3.10 im noticing threadpool improvements after this version
85
- - Create a bug - I'm curious
82
+ - Adjust scan configuration
83
+ - Configure ARP lookup [ARP lookup setup](./support/arp-issues.md)
84
+ - Create a bug
86
85
 
87
86
 
88
87
  ### Something else
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lanscape"
3
- version = "1.3.6b1"
3
+ version = "1.3.8"
4
4
  authors = [
5
5
  { name="Michael Dennis", email="michael@dipduo.com" },
6
6
  ]
@@ -5,6 +5,7 @@ Tests REST API endpoints for port management, subnet validation, and scan operat
5
5
  import json
6
6
  import time
7
7
  import unittest
8
+ from unittest.mock import patch
8
9
 
9
10
  from lanscape.ui.app import app
10
11
  from lanscape.libraries.net_tools import get_network_subnet
@@ -157,12 +158,36 @@ class ApiTestCase(unittest.TestCase):
157
158
  if count == -1:
158
159
  self.assertFalse(data.get('valid'))
159
160
 
161
+ def test_default_scan_configs_adjust_for_arp_support(self):
162
+ """Accurate preset should fall back when ARP lookup is unavailable."""
163
+ with patch('lanscape.ui.blueprints.api.tools.is_arp_supported', return_value=False):
164
+ response = self.app.get('/api/tools/config/defaults')
165
+
166
+ self.assertEqual(response.status_code, 200)
167
+ configs = json.loads(response.data)
168
+
169
+ accurate_lookup = configs['accurate']['lookup_type']
170
+ self.assertNotIn('ARP_LOOKUP', accurate_lookup)
171
+ self.assertIn('POKE_THEN_ARP', accurate_lookup)
172
+
173
+ def test_default_scan_configs_keep_arp_when_supported(self):
174
+ """Accurate preset should retain ARP lookup when supported."""
175
+ with patch('lanscape.ui.blueprints.api.tools.is_arp_supported', return_value=True):
176
+ response = self.app.get('/api/tools/config/defaults')
177
+
178
+ self.assertEqual(response.status_code, 200)
179
+ configs = json.loads(response.data)
180
+
181
+ accurate_lookup = configs['accurate']['lookup_type']
182
+ self.assertIn('ARP_LOOKUP', accurate_lookup)
183
+
160
184
  def _render_scan_ui(self, scanid):
161
185
  uris = [
162
186
  '/info',
163
187
  f'/?scan_id={scanid}',
164
188
  f'/scan/{scanid}/overview',
165
189
  f'/scan/{scanid}/table',
190
+ f'/scan/{scanid}/table?filter=test',
166
191
  f'/export/{scanid}'
167
192
  ]
168
193
  for uri in uris:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes