Centralized network visibility and continuous asset discovery. Monitor devices, detect change, and stay aware across distributed networks.
This report summarizes scanner evidence for netalertx/NetAlertX, a Python project with 7,264 GitHub stars. SynthScan examined 277,401 lines of code across 939 source files, recording 2993 pattern matches distributed across 22 syntactic categories. The legacy adjusted pattern signal is 20.8 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1641 finding(s).
Are imports declared and package/API names verified? 104 finding(s).
Are wrappers, guards, and repeated structures necessary? 2472 finding(s).
Which changes need focused human review? 2993 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2993 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | install/index.html | 6 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | install/production-filesystem/services/start-nginx.sh | 45 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | install/production-filesystem/services/start-nginx.sh | 47 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …oduction-filesystem/services/scripts/update_vendors.sh | 4 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …oduction-filesystem/services/scripts/update_vendors.sh | 9 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …oduction-filesystem/services/scripts/update_vendors.sh | 11 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …oduction-filesystem/services/scripts/update_vendors.sh | 13 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …oduction-filesystem/services/scripts/update_vendors.sh | 16 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | back/update_vendors.sh | 3 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | back/update_vendors.sh | 8 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | back/update_vendors.sh | 10 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | back/update_vendors.sh | 12 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | back/update_vendors.sh | 15 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | back/update_vendors.sh | 23 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 25 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 27 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 138 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | test/db_test_helpers.py | 140 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | test/db_test_helpers.py | 202 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | test/db_test_helpers.py | 204 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | test/db_test_helpers.py | 217 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 219 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 332 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 335 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 425 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 427 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 509 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 511 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 527 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/db_test_helpers.py | 529 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/docker_tests/test_container_environment.py | 658 | # ┌─────────────────────────────────────────────────────────────────────────────────────────┐ | STRING |
| MEDIUM⚡ | test/docker_tests/test_container_environment.py | 661 | # └─────────────────────────────────────────────────────────────────────────────────────────┘ | STRING |
| MEDIUM⚡ | test/docker_tests/test_container_environment.py | 679 | # ┌─────────────────────────────────────────────────────────────────────────────────────────┐ | STRING |
| MEDIUM⚡ | test/docker_tests/test_container_environment.py | 682 | # └─────────────────────────────────────────────────────────────────────────────────────────┘ | STRING |
| MEDIUM⚡ | test/docker_tests/test_docker_compose_scenarios.py | 651 | # ┌─────────────────────────────────────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | test/docker_tests/test_docker_compose_scenarios.py | 655 | # └─────────────────────────────────────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | test/ui/test_ui_translations.py | 52 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/ui/test_ui_translations.py | 54 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/ui/test_ui_xss_devname.py | 46 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/ui/test_ui_xss_devname.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/ui/test_ui_xss_devname.py | 76 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/ui/test_ui_xss_devname.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/ui/test_ui_xss_devname.py | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/ui/test_ui_xss_devname.py | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/ui/test_ui_xss_devname.py | 205 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/ui/test_ui_xss_devname.py | 207 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/plugins/test_fritzbox.py | 73 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | test/plugins/test_fritzbox.py | 75 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | test/plugins/test_fritzbox.py | 162 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | test/plugins/test_fritzbox.py | 164 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | test/plugins/test_fritzbox.py | 285 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | test/plugins/test_fritzbox.py | 287 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | test/plugins/test_fritzbox.py | 318 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | test/plugins/test_fritzbox.py | 320 | # =========================================================================== | COMMENT |
| MEDIUM | test/plugins/test_fritzbox.py | 18 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/plugins/test_fritzbox.py | 20 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/plugins/test_fritzbox.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/plugins/test_fritzbox.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/plugins/test_fritzbox.py | 45 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/plugins/test_fritzbox.py | 47 | # --------------------------------------------------------------------------- | COMMENT |
| 935 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/db_test_helpers.py | 486 | def insert_current_scan_row_from_dict(conn: sqlite3.Connection, row: dict) -> None: | CODE |
| LOW | test/test_mcp_disablement.py | 16 | def test_disable_tool_management(): | CODE |
| LOW | test/test_mcp_disablement.py | 78 | def test_openapi_spec_injection(): | CODE |
| LOW | test/test_mcp_disablement.py | 111 | def test_execute_disabled_tool(mock_get, mock_setting): | CODE |
| LOW | test/test_plugin_helper.py | 4 | def test_is_mac_accepts_wildcard(): | CODE |
| LOW | test/test_plugin_helper.py | 13 | def test_normalize_mac_preserves_wildcard(): | CODE |
| LOW⚡ | test/test_plugin_helper.py | 26 | def test_normalize_mac_preserves_internet_root(): | CODE |
| LOW⚡ | test/test_plugin_helper.py | 33 | def test_per_item_timeout_unchanged_for_zero_or_one_items(): | CODE |
| LOW⚡ | test/test_plugin_helper.py | 39 | def test_per_item_timeout_divides_budget_across_items(): | CODE |
| LOW⚡ | test/test_plugin_helper.py | 44 | def test_per_item_timeout_never_goes_below_floor(): | CODE |
| LOW⚡ | test/test_plugin_helper.py | 50 | def test_helpval_preserves_real_zero_and_false(): | CODE |
| LOW⚡ | test/test_plugin_helper.py | 61 | def test_watched_columns_unaffected_by_helpval_fix(): | CODE |
| LOW⚡ | test/test_plugin_helper.py | 70 | def test_sanitize_plugin_text_strips_tag_delimiters(): | CODE |
| LOW⚡ | test/test_plugin_helper.py | 74 | def test_sanitize_plugin_text_strips_control_chars_but_keeps_tab_and_newline(): | CODE |
| LOW⚡ | test/test_plugin_helper.py | 78 | def test_sanitize_plugin_text_passes_through_clean_text_unchanged(): | CODE |
| LOW⚡ | test/test_plugin_helper.py | 83 | def test_sanitize_plugin_text_passes_none_through(): | CODE |
| LOW | test/verify_runtime_validation.py | 51 | def test_search_invalid_schema(): | CODE |
| LOW⚡ | test/test_device_atomicity.py | 65 | def test_create_new_device_atomicity(self): | CODE |
| LOW | test/test_device_atomicity.py | 103 | def test_update_device_with_source_tracking_atomicity(self): | CODE |
| LOW | test/test_device_atomicity.py | 148 | def test_source_tracking_failure_rolls_back_device(self): | STRING |
| LOW | test/docker_tests/test_puid_pgid.py | 109 | def test_default_puid_pgid_ok() -> None: | CODE |
| LOW | test/docker_tests/test_puid_pgid.py | 123 | def test_invalid_puid_pgid_rejected(env: dict[str, str], expected: str) -> None: | CODE |
| LOW | test/docker_tests/test_puid_pgid.py | 139 | def test_legacy_user_mode_skips_puid_pgid() -> None: | CODE |
| LOW | test/docker_tests/test_puid_pgid.py | 153 | def test_synology_like_fresh_volume_is_primed() -> None: | CODE |
| LOW | test/docker_tests/test_puid_pgid.py | 238 | def test_aufs_explicit_root_no_warning() -> None: | CODE |
| LOW | test/docker_tests/test_puid_pgid.py | 331 | def test_missing_cap_chown_fails_priming() -> None: | CODE |
| LOW | test/docker_tests/conftest.py | 58 | def build_netalertx_test_image(request: pytest.FixtureRequest, cleanup_artifacts: None) -> None: | CODE |
| LOW⚡ | test/docker_tests/test_container_environment.py | 1383 | def test_restrictive_permissions_handling(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 240 | def _build_volume_args_for_keys( | CODE |
| LOW | test/docker_tests/test_container_environment.py | 442 | def test_nonroot_custom_uid_logs_note( | CODE |
| LOW | test/docker_tests/test_container_environment.py | 858 | def test_missing_capabilities_triggers_warning(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 891 | def test_missing_host_network_warns(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 922 | def test_missing_app_conf_triggers_seed(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 965 | def test_first_run_dynamic_subnet(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 1007 | def test_missing_app_db_triggers_seed(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 1051 | def test_custom_port_without_writable_conf(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 1086 | def test_excessive_capabilities_warning(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 1111 | def test_appliance_integrity_read_write_mode(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 1136 | def test_zero_permissions_app_db_dir(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 1162 | def test_zero_permissions_app_config_dir(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 1188 | def test_mandatory_folders_creation(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 1227 | def test_writable_config_validation(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 1269 | def test_mount_analysis_ram_disk_performance(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 1326 | def test_mount_analysis_dataloss_risk(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_docker_compose_unit.py | 4 | def test_run_docker_compose_returns_output(monkeypatch, tmp_path): | CODE |
| LOW | test/docker_tests/test_mount_diagnostics_pytest.py | 67 | def capture_project_mandatory_required_audit_stream(container_name: str) -> subprocess.Popen[str]: | CODE |
| LOW | test/docker_tests/test_mount_diagnostics_pytest.py | 168 | def assert_has_troubleshooting_url(output: str) -> None: | CODE |
| LOW | test/docker_tests/test_mount_diagnostics_pytest.py | 436 | def validate_scenario_table_output(output: str, test_scenario: TestScenario) -> None: | CODE |
| LOW | test/docker_tests/test_mount_diagnostics_pytest.py | 744 | def test_cap_chown_required_when_caps_dropped(): | STRING |
| LOW | test/docker_tests/test_ports_available.py | 196 | def test_ports_available_normal_case(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_ports_available.py | 216 | def test_ports_conflict_same_number(tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_ports_available.py | 241 | def test_ports_in_use_warning(dummy_container, tmp_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_entrypoint.py | 54 | def test_app_conf_override_from_graphql_port(): | CODE |
| LOW | test/docker_tests/test_entrypoint.py | 66 | def test_app_conf_override_file_written_from_graphql_port(tmp_path): | CODE |
| LOW | test/docker_tests/test_entrypoint.py | 115 | def test_app_conf_override_not_overridden(): | CODE |
| LOW | test/docker_tests/test_entrypoint.py | 130 | def test_no_app_conf_override_when_no_graphql_port(): | CODE |
| LOW | test/docker_tests/test_entrypoint.py | 138 | def test_skip_startup_checks_env_var(): | CODE |
| LOW | test/docker_tests/test_entrypoint.py | 149 | def test_host_optimization_warning_matches_sysctl(): | CODE |
| LOW | test/docker_tests/test_docker_compose_scenarios.py | 45 | def capture_project_mandatory_required_audit_stream(container_names: list[str], compose_cwd: pathlib.Path, env: dict[str | CODE |
| LOW | test/docker_tests/test_docker_compose_scenarios.py | 245 | def _extract_conflict_container_name(output: str) -> str | None: | CODE |
| 1154 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …uction-filesystem/entrypoint.d/30-mandatory-folders.sh | 107 | # Create the folders and files. | COMMENT |
| MEDIUM | …uction-filesystem/entrypoint.d/30-mandatory-folders.sh | 108 | # Create a log message for observability if any fail. | COMMENT |
| MEDIUM | install/proxmox/proxmox-install-netalertx.sh | 309 | # Create the execution_queue.log file if it doesn't exist | COMMENT |
| MEDIUM | install/ubuntu24/install.sh | 24 | OUI_FILE="/usr/share/arp-scan/ieee-oui.txt" # Define the path to ieee-oui.txt and ieee-iab.txt | CODE |
| MEDIUM | install/debian12/start.debian12.sh | 18 | OUI_FILE="/usr/share/arp-scan/ieee-oui.txt" # Define the path to ieee-oui.txt and ieee-iab.txt | CODE |
| MEDIUM | install/debian12/start.debian12.sh | 112 | # Create an empty log files | COMMENT |
| MEDIUM | install/debian12/start.debian12.sh | 114 | # Create the execution_queue.log file if it doesn't exist | COMMENT |
| MEDIUM⚡ | back/update_vendors.sh | 27 | # Define the URL of the IEEE OUI file | COMMENT |
| MEDIUM | test/test_mcp_disablement.py | 115 | # Create a dummy app for context | COMMENT |
| MEDIUM⚡ | test/test_device_atomicity.py | 75 | # Create a new device | COMMENT |
| MEDIUM | test/docker_tests/test_container_environment.py | 834 | # Create a dummy file for other directories | COMMENT |
| MEDIUM | test/docker_tests/test_ports_available.py | 35 | # Create a simple docker-compose file for the dummy container | COMMENT |
| MEDIUM | test/docker_tests/test_docker_compose_scenarios.py | 238 | # Create a minimal SQLite database | COMMENT |
| MEDIUM | test/ui/test_ui_login.py | 158 | # Create a deep link to devices.php#device-123 | COMMENT |
| MEDIUM | test/ui/test_ui_login.py | 193 | # Create a deep link to network.php#settings-panel | COMMENT |
| MEDIUM | test/ui/test_ui_xss_devname.py | 183 | # Create an event so events.php actually renders this device's name. | COMMENT |
| MEDIUM⚡ | test/api_endpoints/test_devices_endpoints.py | 89 | # Create a device first | COMMENT |
| MEDIUM | test/api_endpoints/test_devices_endpoints.py | 103 | # Create a device first | COMMENT |
| MEDIUM | server/plugin.py | 467 | # Create the file path | STRING |
| MEDIUM | server/plugin.py | 541 | # Create a tuple containing values to be inserted into the database. | STRING |
| MEDIUM | server/plugin.py | 569 | # Create a base tuple containing values to be inserted into the database. | STRING |
| MEDIUM | server/plugin.py | 657 | # Create a base tuple containing values to be inserted into the database. | STRING |
| MEDIUM | server/initialise.py | 142 | # Create the tuples | COMMENT |
| MEDIUM | server/initialise.py | 882 | # Create a backup file with the suffix "_old_setting_names" and timestamp | COMMENT |
| MEDIUM | server/plugins/omada_sdn_imp/omada_sdn.py | 33 | # Define the installation path and extend the system path for plugin imports | COMMENT |
| MEDIUM | server/plugins/omada_sdn_imp/omada_sdn.py | 54 | # Define the current path and log file paths | COMMENT |
| MEDIUM | server/plugins/omada_sdn_imp/omada_sdn.py | 262 | # Create a DeviceInstance instance | COMMENT |
| MEDIUM | server/plugins/wake_on_lan/wake_on_lan.py | 8 | # Define the installation path and extend the system path for plugin imports | COMMENT |
| MEDIUM | server/plugins/wake_on_lan/wake_on_lan.py | 27 | # Define the current path and log file paths | COMMENT |
| MEDIUM | server/plugins/wake_on_lan/wake_on_lan.py | 46 | # Create a DeviceInstance instance | COMMENT |
| MEDIUM⚡ | server/plugins/_publisher_mqtt/mqtt.py | 63 | # Create a database connection | COMMENT |
| MEDIUM | server/plugins/_publisher_mqtt/mqtt.py | 44 | # Create an MD5 hash object | COMMENT |
| MEDIUM | server/plugins/_publisher_mqtt/mqtt.py | 328 | # Create a generic device for overal stats | COMMENT |
| MEDIUM | server/plugins/_publisher_mqtt/mqtt.py | 346 | # Create the HA sensor config if a new device is discovered | COMMENT |
| MEDIUM | server/plugins/_publisher_mqtt/mqtt.py | 502 | # Create a generic device for overal stats | COMMENT |
| MEDIUM | server/plugins/_publisher_mqtt/mqtt.py | 504 | # Create a new device representing overall stats | COMMENT |
| MEDIUM | server/plugins/csv_backup/script.py | 70 | # Create a CSV file in the specified location | COMMENT |
| MEDIUM | server/plugins/__test/test.py | 27 | # Create an MD5 hash object | COMMENT |
| MEDIUM⚡ | server/plugins/_publisher_email/email_smtp.py | 50 | # Create a database connection | COMMENT |
| MEDIUM⚡ | server/plugins/_publisher_email/email_smtp.py | 57 | # Create a NotificationInstance instance | COMMENT |
| MEDIUM | server/plugins/omada_sdn_openapi/script.py | 37 | # Define the installation path and extend the system path for plugin imports | COMMENT |
| MEDIUM | server/plugins/omada_sdn_openapi/script.py | 55 | # Define the current path and log file paths | COMMENT |
| MEDIUM | server/plugins/omada_sdn_openapi/script.py | 606 | # Initialize the Plugin object output file | COMMENT |
| MEDIUM⚡ | server/plugins/_publisher_pushsafer/pushsafer.py | 42 | # Create a database connection | COMMENT |
| MEDIUM⚡ | server/plugins/_publisher_pushsafer/pushsafer.py | 49 | # Create a NotificationInstance instance | COMMENT |
| MEDIUM | server/plugins/adguard_import/adguard_import.py | 8 | # Define the installation path and extend the system path for plugin imports | COMMENT |
| MEDIUM | server/plugins/adguard_export/script.py | 21 | # Define the installation path and extend the system path for plugin imports | COMMENT |
| MEDIUM⚡ | server/plugins/_publisher_webhook/webhook.py | 46 | # Create a database connection | COMMENT |
| MEDIUM⚡ | server/plugins/_publisher_webhook/webhook.py | 53 | # Create a NotificationInstance instance | COMMENT |
| MEDIUM | server/plugins/icmp_scan/icmp.py | 69 | # Create a DeviceInstance instance | COMMENT |
| MEDIUM | server/plugins/fritzbox/fritzbox.py | 7 | # Define the installation path and extend the system path for plugin imports | COMMENT |
| MEDIUM | server/plugins/fritzbox/fritzbox.py | 34 | # Define the current path and log file paths | COMMENT |
| MEDIUM | server/plugins/dig_scan/digscan.py | 6 | # Define the installation path and extend the system path for plugin imports | COMMENT |
| MEDIUM | server/plugins/dig_scan/digscan.py | 26 | # Define the current path and log file paths | COMMENT |
| MEDIUM | server/plugins/dig_scan/digscan.py | 43 | # Create a DeviceInstance instance | COMMENT |
| MEDIUM | server/plugins/nslookup_scan/nslookup.py | 44 | # Create a DeviceInstance instance | COMMENT |
| MEDIUM⚡ | server/plugins/_publisher_pushover/pushover.py | 42 | # Create a database connection | COMMENT |
| MEDIUM⚡ | server/plugins/_publisher_pushover/pushover.py | 49 | # Create a NotificationInstance instance | COMMENT |
| MEDIUM | server/plugins/asuswrt_import/script.py | 66 | # Create a new event loop | COMMENT |
| MEDIUM⚡ | server/plugins/_publisher_telegram/tg.py | 43 | # Create a database connection | COMMENT |
| 26 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | install/production-filesystem/entrypoint.d/15-mounts.py | 84 | print("Error: /proc/mounts not found. Not a Linux system?", file=sys.stderr) | CODE |
| LOW⚡ | test/docker_tests/test_container_environment.py | 519 | except Exception: | CODE |
| LOW⚡ | test/docker_tests/test_container_environment.py | 528 | except Exception: | CODE |
| LOW⚡ | test/docker_tests/test_container_environment.py | 535 | except Exception: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 110 | except Exception: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 567 | except Exception: | CODE |
| LOW⚡ | test/docker_tests/test_container_environment.py | 690 | except Exception: | STRING |
| LOW | test/docker_tests/test_mount_diagnostics_pytest.py | 702 | except Exception: | CODE |
| LOW⚡ | test/docker_tests/test_docker_compose_scenarios.py | 641 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | test/docker_tests/test_docker_compose_scenarios.py | 694 | except Exception: | CODE |
| LOW⚡ | test/ui/test_ui_waits.py | 42 | except Exception: | CODE |
| LOW⚡ | test/ui/test_ui_waits.py | 49 | except Exception: | CODE |
| LOW⚡ | test/ui/test_ui_waits.py | 54 | except Exception: | CODE |
| LOW | test/ui/test_chromium_setup.py | 71 | except Exception as e: | CODE |
| LOW | test/ui/test_ui_maintenance.py | 52 | except Exception: | CODE |
| LOW | test/ui/test_ui_maintenance.py | 70 | except Exception: | CODE |
| LOW⚡ | test/ui/test_ui_maintenance.py | 93 | except Exception: | CODE |
| LOW⚡ | test/ui/test_ui_maintenance.py | 95 | except Exception as e: | CODE |
| LOW⚡ | test/ui/test_ui_maintenance.py | 102 | except Exception: | CODE |
| LOW | test/ui/test_ui_settings.py | 144 | except Exception as e: | CODE |
| LOW | test/ui/test_ui_settings.py | 168 | except Exception: | CODE |
| LOW | test/ui/test_helpers.py | 104 | except Exception as e: | CODE |
| LOW | test/ui/test_helpers.py | 149 | except Exception: | CODE |
| MEDIUM | test/ui/test_helpers.py | 144 | def _get_val(d): | CODE |
| LOW | test/ui/run_all_tests.py | 41 | except Exception as e: | CODE |
| LOW | test/ui/test_ui_devices.py | 89 | except Exception: | CODE |
| LOW | test/backend/sql_safe_builder.py | 173 | except Exception: | CODE |
| LOW | test/backend/sql_safe_builder.py | 592 | except Exception: | CODE |
| LOW | test/scan/test_device_field_lock.py | 50 | except Exception as e: | CODE |
| LOW | test/scan/test_device_field_lock.py | 58 | except Exception as e: | CODE |
| LOW | server/database.py | 97 | except Exception: | CODE |
| LOW | server/database.py | 270 | except Exception as e: | CODE |
| LOW⚡ | server/database.py | 295 | except Exception as e: | CODE |
| LOW | server/database.py | 404 | except Exception: | CODE |
| LOW⚡ | server/helper.py | 397 | except Exception: | CODE |
| LOW⚡ | server/helper.py | 403 | except Exception: | CODE |
| MEDIUM | server/plugin.py | 370 | def run_plugin(command, set_RUN_TIMEOUT, plugin): | CODE |
| LOW | server/plugin.py | 993 | except Exception as e: | STRING |
| LOW | server/app_state.py | 195 | except Exception as e: | CODE |
| LOW⚡ | server/__main__.py | 209 | except Exception: | CODE |
| LOW⚡ | server/initialise.py | 46 | except Exception as e: | CODE |
| LOW | server/plugins/omada_sdn_imp/omada_sdn.py | 120 | except Exception as e: | CODE |
| LOW | server/plugins/omada_sdn_imp/omada_sdn.py | 144 | except Exception: | CODE |
| LOW | server/plugins/dhcp_servers/script.py | 101 | except Exception as e: | CODE |
| LOW | server/plugins/wake_on_lan/wake_on_lan.py | 104 | except Exception as e: | CODE |
| LOW⚡ | server/plugins/_publisher_mqtt/mqtt.py | 643 | except Exception as e: | CODE |
| LOW | server/plugins/_publisher_mqtt/mqtt.py | 388 | except Exception as err: | CODE |
| LOW | server/plugins/_publisher_mqtt/mqtt.py | 616 | except Exception as e: | CODE |
| LOW | server/plugins/omada_sdn_openapi/script.py | 107 | except Exception as ex: | CODE |
| LOW | server/plugins/omada_sdn_openapi/script.py | 124 | except Exception as ex: | CODE |
| LOW | server/plugins/omada_sdn_openapi/script.py | 227 | except Exception as ex: | CODE |
| LOW⚡ | server/plugins/internet_ip/script.py | 156 | except Exception as e: | CODE |
| LOW⚡ | server/plugins/adguard_import/adguard_import.py | 51 | except Exception as e: | CODE |
| LOW⚡ | server/plugins/adguard_export/script.py | 207 | except Exception as exc: | CODE |
| LOW | server/plugins/adguard_export/script.py | 443 | except Exception as exc: | CODE |
| LOW | server/plugins/pihole_monitor/pihole_monitor.py | 126 | except Exception as e: | CODE |
| LOW | server/plugins/pihole_monitor/pihole_monitor.py | 132 | except Exception: | CODE |
| LOW | server/plugins/pihole_monitor/pihole_monitor.py | 158 | except Exception: | CODE |
| LOW | server/plugins/pihole_monitor/pihole_monitor.py | 188 | except Exception as e: | CODE |
| LOW | server/plugins/pihole_monitor/pihole_monitor.py | 224 | except Exception as e: | CODE |
| 148 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/verify_runtime_validation.py | 28 | except requests.RequestException: | CODE |
| HIGH | test/test_wol_validation.py | 24 | except requests.RequestException: | CODE |
| HIGH | test/docker_tests/test_container_environment.py | 98 | except PermissionError: | CODE |
| HIGH | test/docker_tests/test_container_environment.py | 110 | except Exception: | CODE |
| HIGH | test/docker_tests/test_container_environment.py | 198 | except PermissionError: | CODE |
| HIGH | test/docker_tests/test_container_environment.py | 690 | except Exception: | CODE |
| HIGH | test/docker_tests/test_container_environment.py | 519 | except Exception: | CODE |
| HIGH | test/docker_tests/test_container_environment.py | 528 | except Exception: | CODE |
| HIGH | test/docker_tests/test_container_environment.py | 535 | except Exception: | CODE |
| HIGH | test/docker_tests/test_mount_diagnostics_pytest.py | 702 | except Exception: | CODE |
| HIGH | test/docker_tests/test_docker_compose_scenarios.py | 694 | except Exception: | CODE |
| HIGH | test/ui/test_ui_maintenance.py | 52 | except Exception: | CODE |
| HIGH | test/ui/test_ui_maintenance.py | 93 | except Exception: | CODE |
| HIGH | test/plugins/test_sync_protocol.py | 65 | except requests.RequestException: | CODE |
| HIGH | test/plugins/test_sync_protocol.py | 63 | except json.JSONDecodeError: | CODE |
| HIGH | test/backend/test_compound_conditions.py | 243 | except ValueError: | CODE |
| HIGH | test/backend/test_safe_builder_unit.py | 147 | except ValueError: | CODE |
| HIGH | test/backend/test_sql_security.py | 368 | except ValueError: | CODE |
| HIGH | test/api_endpoints/test_events_endpoints.py | 240 | except (ValueError, TypeError): | CODE |
| HIGH | server/api.py | 307 | except: | CODE |
| HIGH | server/helper.py | 397 | except Exception: | CODE |
| HIGH | server/plugins/pihole_monitor/pihole_monitor.py | 158 | except Exception: | CODE |
| HIGH | server/plugins/pihole_api_scan/pihole_api_scan.py | 118 | except Exception: | CODE |
| HIGH | server/plugins/_publisher_telegram/tg.py | 154 | except json.JSONDecodeError: | CODE |
| HIGH | server/plugins/avahi_scan/avahi_scan.py | 76 | except Exception: | CODE |
| HIGH | server/api_server/sse_broadcast.py | 27 | except ImportError: | CODE |
| HIGH | server/api_server/sse_broadcast.py | 45 | except ImportError: | CODE |
| HIGH | server/api_server/openapi/spec_generator.py | 75 | except (ImportError, AttributeError): | CODE |
| HIGH | server/api_server/openapi/spec_generator.py | 112 | except Exception: | CODE |
| HIGH | server/api_server/openapi/spec_generator.py | 95 | except Exception: | CODE |
| HIGH | server/api_server/openapi/schemas.py | 565 | except ValueError: | CODE |
| HIGH | server/api_server/openapi/introspection.py | 157 | except Exception: | CODE |
| HIGH | server/db/authoritative_handler.py | 333 | except Exception: | CODE |
| HIGH | server/db/authoritative_handler.py | 376 | except Exception: | CODE |
| HIGH | server/db/authoritative_handler.py | 442 | except Exception: | CODE |
| HIGH | server/db/db_upgrade.py | 1135 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …tion-filesystem/entrypoint.d/95-appliance-integrity.sh | 11 | # Check if the root filesystem is mounted as read-only | COMMENT |
| LOW | …ction-filesystem/entrypoint.d/10-capabilities-audit.sh | 47 | # Check if bit is set in cap_bnd_dec | COMMENT |
| LOW | …tion-filesystem/entrypoint.d/35-apply-conf-override.sh | 15 | # Check if APP_CONF_OVERRIDE is set | COMMENT |
| LOW | …oduction-filesystem/entrypoint.d/99-ports-available.sh | 16 | # Check if ports are configured to be the same | COMMENT |
| LOW | …/production-filesystem/services/scripts/cron_script.sh | 6 | # Check if there are any entries with cron_restart_backend | COMMENT |
| LOW | install/proxmox/proxmox-install-netalertx.sh | 44 | # Check if script is run as root | COMMENT |
| LOW | install/proxmox/proxmox-install-netalertx.sh | 266 | # Check if ieee-oui.txt or ieee-iab.txt exist | COMMENT |
| LOW | install/ubuntu24/install.sh | 35 | # Check if script is run as root | COMMENT |
| LOW | install/ubuntu24/install.sh | 246 | # Check if ieee-oui.txt or ieee-iab.txt exist | COMMENT |
| LOW | install/ubuntu24/install.sh | 313 | # Check if buildtimestamp.txt doesn't exist | COMMENT |
| LOW | install/debian12/install.debian12.sh | 13 | # Check if script is run as root | COMMENT |
| LOW | install/debian12/start.debian12.sh | 33 | # Check if script is run as root | COMMENT |
| LOW | install/debian12/start.debian12.sh | 98 | # Check if ieee-oui.txt or ieee-iab.txt exist | COMMENT |
| LOW | install/debian12/start.debian12.sh | 159 | # Check if buildtimestamp.txt doesn't exist | COMMENT |
| LOW | install/debian12/install_dependencies.debian12.sh | 18 | # Check if script is run as root | COMMENT |
| LOW | test/docker_tests/test_mount_diagnostics_pytest.py | 257 | # Check if image exists | COMMENT |
| LOW | test/ui/test_chromium_setup.py | 8 | # Check if chromium and chromedriver are installed | COMMENT |
| LOW | test/ui/run_ui_tests.sh | 16 | # Check if chromium is installed, install if missing | COMMENT |
| LOW | test/ui/test_ui_maintenance.py | 138 | # Check if response looks like CSV | COMMENT |
| LOW | test/ui/test_helpers.py | 51 | # Check if chromedriver exists | COMMENT |
| LOW | test/backend/sql_safe_builder.py | 197 | # Check if this is a compound condition (multiple clauses) | COMMENT |
| LOW | test/backend/sql_safe_builder.py | 342 | # Check if we're at a word boundary (start of string or after whitespace) | COMMENT |
| LOW | server/database.py | 64 | # Check if DB is open | COMMENT |
| LOW | server/api.py | 145 | # Check if the endpoint needs to be updated | COMMENT |
| LOW⚡ | server/helper.py | 639 | # Check if second character matches "2", "6", "A", "E" (case insensitive) | COMMENT |
| LOW | server/helper.py | 668 | # Check if it's an IPv6 address | COMMENT |
| LOW | server/plugin.py | 88 | # Check if schedule overdue | COMMENT |
| LOW | server/plugin.py | 737 | # Check if watched values changed for the given plugin | STRING |
| LOW | server/plugin.py | 1093 | # Check if there's a default value specified for this column in the JSON. | STRING |
| LOW | server/plugin.py | 1205 | # Check if self.status is valid | STRING |
| LOW | server/app_state.py | 82 | # Check if the file exists and recover previous values | COMMENT |
| LOW⚡ | server/__main__.py | 221 | # Check if new devices found (created by process_scan) | COMMENT |
| LOW | server/__main__.py | 181 | # Check if any plugins need to run on schedule | COMMENT |
| LOW | server/initialise.py | 763 | # Check if app was upgraded | COMMENT |
| LOW | server/initialise.py | 866 | # Check if the file contains any of the old setting code names | COMMENT |
| LOW | server/plugins/plugin_helper.py | 143 | # Check if a valid MAC address | COMMENT |
| LOW | server/plugins/omada_sdn_imp/omada_sdn.py | 230 | # Assign port to switch | COMMENT |
| LOW⚡ | server/plugins/_publisher_mqtt/mqtt.py | 59 | # Check if basic config settings supplied | COMMENT |
| LOW | server/plugins/_publisher_mqtt/mqtt.py | 226 | # Check if the plugin object is new | COMMENT |
| LOW⚡ | server/plugins/_publisher_email/email_smtp.py | 45 | # Check if basic config settings supplied | COMMENT |
| LOW | server/plugins/omada_sdn_openapi/script.py | 287 | # Check if a parameter is required and if it's value is non-empty | COMMENT |
| LOW | server/plugins/omada_sdn_openapi/script.py | 291 | # Check if a parameter has a correct datatype | COMMENT |
| LOW | server/plugins/omada_sdn_openapi/script.py | 332 | # Check if the response contains an error code and determine the function response type | COMMENT |
| LOW | server/plugins/omada_sdn_openapi/script.py | 462 | if first_available_site[0]: # Check if there's an available site | CODE |
| LOW⚡ | server/plugins/_publisher_pushsafer/pushsafer.py | 37 | # Check if basic config settings supplied | COMMENT |
| LOW | server/plugins/_publisher_pushsafer/pushsafer.py | 113 | # Check if the request was successful (status code 200) | COMMENT |
| LOW⚡ | server/plugins/_publisher_webhook/webhook.py | 41 | # Check if basic config settings supplied | COMMENT |
| LOW⚡ | server/plugins/_publisher_pushover/pushover.py | 37 | # Check if basic config settings supplied | COMMENT |
| LOW | server/plugins/_publisher_pushover/pushover.py | 101 | # Check if the request was successful (status code 200) | COMMENT |
| LOW⚡ | server/plugins/_publisher_telegram/tg.py | 37 | # Check if basic config settings supplied | COMMENT |
| LOW | server/plugins/arp_scan/script.py | 63 | # Check if the decoded subnet information contains multiple subnets separated by commas. | COMMENT |
| LOW⚡ | server/plugins/_publisher_ntfy/ntfy.py | 40 | # Check if basic config settings supplied | COMMENT |
| LOW | server/plugins/_publisher_ntfy/ntfy.py | 196 | # Check if the request was successful (status code 200) | COMMENT |
| LOW | server/plugins/maintenance/maintenance.py | 40 | # Check if set | COMMENT |
| LOW | server/plugins/maintenance/maintenance.py | 78 | # Check if set | COMMENT |
| LOW | server/plugins/sync/sync.py | 61 | # Check if api_token set | COMMENT |
| LOW | server/plugins/dhcp_leases/script.py | 62 | # Check if the path exists | COMMENT |
| LOW⚡ | server/plugins/_publisher_apprise/apprise.py | 37 | # Check if basic config settings supplied | COMMENT |
| LOW⚡ | server/utils/plugin_utils.py | 321 | # Check if the file exists | COMMENT |
| LOW⚡ | server/utils/plugin_utils.py | 323 | # Check if the file name contains "encoded" | COMMENT |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install/production-filesystem/entrypoint.d/15-mounts.py | 72 | CODE | |
| LOW | install/production-filesystem/entrypoint.d/15-mounts.py | 89 | CODE | |
| LOW | install/production-filesystem/entrypoint.d/15-mounts.py | 294 | CODE | |
| LOW | test/docker_tests/test_puid_pgid.py | 22 | CODE | |
| LOW | test/docker_tests/test_container_environment.py | 115 | CODE | |
| LOW | test/docker_tests/test_container_environment.py | 190 | CODE | |
| LOW | test/docker_tests/test_container_environment.py | 468 | CODE | |
| LOW | test/docker_tests/test_container_environment.py | 730 | CODE | |
| LOW | test/docker_tests/test_docker_compose_unit.py | 4 | CODE | |
| LOW | test/docker_tests/test_docker_compose_unit.py | 18 | CODE | |
| LOW | test/docker_tests/test_mount_diagnostics_pytest.py | 108 | CODE | |
| LOW | test/docker_tests/test_mount_diagnostics_pytest.py | 288 | CODE | |
| LOW | test/docker_tests/test_mount_diagnostics_pytest.py | 436 | CODE | |
| LOW | test/docker_tests/test_docker_compose_scenarios.py | 263 | CODE | |
| LOW | test/docker_tests/test_docker_compose_scenarios.py | 402 | CODE | |
| LOW | test/ui/test_ui_login.py | 20 | CODE | |
| LOW | test/ui/test_helpers.py | 20 | CODE | |
| LOW | test/plugins/test_dockerdisc.py | 91 | CODE | |
| LOW | test/plugins/test_dockerdisc.py | 491 | CODE | |
| LOW | test/plugins/test_plugin_conventions.py | 254 | CODE | |
| LOW | test/plugins/test_plugin_conventions.py | 281 | CODE | |
| LOW | test/plugins/test_plugin_conventions.py | 307 | CODE | |
| LOW | test/backend/sql_safe_builder.py | 307 | CODE | |
| LOW | test/api_endpoints/test_mcp_openapi_spec.py | 179 | CODE | |
| LOW | test/api_endpoints/test_events_endpoints.py | 214 | CODE | |
| LOW | test/api_endpoints/test_mcp_disabled_tools.py | 16 | CODE | |
| LOW | test/api_endpoints/test_mcp_disabled_tools.py | 42 | CODE | |
| LOW | server/logger.py | 99 | CODE | |
| LOW | server/api.py | 283 | CODE | |
| LOW | server/api.py | 129 | CODE | |
| LOW | server/helper.py | 200 | CODE | |
| LOW | server/helper.py | 265 | CODE | |
| LOW | server/helper.py | 434 | CODE | |
| LOW | server/helper.py | 456 | CODE | |
| LOW | server/plugin.py | 389 | CODE | |
| LOW | server/plugin.py | 738 | CODE | |
| LOW | server/plugin.py | 67 | CODE | |
| LOW | server/plugin.py | 123 | CODE | |
| LOW | server/plugin.py | 295 | CODE | |
| LOW | server/plugin.py | 1151 | CODE | |
| LOW | server/app_state.py | 36 | CODE | |
| LOW | server/__main__.py | 67 | CODE | |
| LOW | server/initialise.py | 56 | CODE | |
| LOW | server/initialise.py | 227 | CODE | |
| LOW | server/initialise.py | 865 | CODE | |
| LOW | server/plugins/plugin_helper.py | 186 | CODE | |
| LOW | server/plugins/omada_sdn_imp/omada_sdn.py | 416 | CODE | |
| LOW | server/plugins/dhcp_servers/script.py | 34 | CODE | |
| LOW | server/plugins/nmap_scan/script.py | 151 | CODE | |
| LOW | server/plugins/wake_on_lan/wake_on_lan.py | 36 | CODE | |
| LOW | server/plugins/_publisher_mqtt/mqtt.py | 652 | CODE | |
| LOW | server/plugins/omada_sdn_openapi/script.py | 130 | CODE | |
| LOW | server/plugins/omada_sdn_openapi/script.py | 432 | CODE | |
| LOW | server/plugins/adguard_export/script.py | 249 | CODE | |
| LOW | server/plugins/pihole_monitor/pihole_monitor.py | 446 | CODE | |
| LOW | server/plugins/_publisher_webhook/webhook.py | 93 | CODE | |
| LOW | server/plugins/icmp_scan/icmp.py | 94 | CODE | |
| LOW | server/plugins/icmp_scan/icmp.py | 171 | CODE | |
| LOW | server/plugins/icmp_scan/icmp.py | 205 | CODE | |
| LOW | server/plugins/icmp_scan/icmp.py | 214 | CODE | |
| 63 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | front/lib/datatables/datatables.js | 7977 | jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { | CODE |
| CRITICAL | front/lib/datatables/datatables.js | 13919 | * $.fn.dataTable.ext.type.detect.push( | COMMENT |
| CRITICAL | front/lib/datatables/datatables.min.js | 14 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f | CODE |
| CRITICAL | front/lib/jquery/jquery.min.js | 2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f | CODE |
| CRITICAL | front/lib/datatables.net/js/jquery.dataTables.js | 14199 | * $.fn.dataTable.ext.type.detect.push( | COMMENT |
| CRITICAL⚡ | front/lib/jquery-ui/jquery-ui.min.js | 6 | (function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e= | CODE |
| CRITICAL⚡ | front/lib/jquery-ui/jquery-ui.min.js | 9 | }},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install/index.html | 1 | <!-- --------------------------------------------------------------------------- | COMMENT |
| LOW | install/production-filesystem/root-entrypoint.sh | 1 | #!/bin/bash | COMMENT |
| LOW | install/production-filesystem/root-entrypoint.sh | 21 | # - PUID/PGID env vars are ignored (cannot switch users). | COMMENT |
| LOW | install/production-filesystem/entrypoint.sh | 1 | #!/bin/bash | COMMENT |
| LOW | install/production-filesystem/entrypoint.sh | 21 | # container will wait for all to exit naturally (development mode). | COMMENT |
| LOW | install/production-filesystem/entrypoint.sh | 241 | COMMENT | |
| LOW | install/production-filesystem/entrypoint.sh | 281 | COMMENT | |
| LOW | …roduction-filesystem/entrypoint.d/05-data-migration.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …oduction-filesystem/services/scripts/update_vendors.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | back/update_vendors.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …r_tests/configurations/docker-compose.missing-caps.yml | 41 | # - Normal operation: container starts all services after passing checks | COMMENT |
| LOW | test/ui/test_ui_settings.py | 201 | # # Extract backend API URL from BASE_URL | COMMENT |
| LOW | test/ui/test_ui_settings.py | 221 | # except requests.exceptions.RequestException as e: | COMMENT |
| LOW | server/conf.py | 41 | # ------------------------------------------- | COMMENT |
| LOW | server/__main__.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | server/__main__.py | 141 | COMMENT | |
| LOW | server/__main__.py | 241 | COMMENT | |
| LOW | server/plugins/omada_sdn_imp/omada_sdn.py | 61 | # Initialize the Plugin obj output file | COMMENT |
| LOW | server/plugins/adguard_export/script.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | server/plugins/pihole_monitor/pihole_monitor.py | 461 | # source of truth) instead of being a second, easily stale copy of it. | COMMENT |
| LOW | server/plugins/pihole_monitor/pihole_monitor.py | 581 | # reference point at all (every source bootstraps fresh) rather | COMMENT |
| LOW | server/plugins/ddns_update/script.py | 81 | COMMENT | |
| LOW | server/plugins/__template/rename_me.py | 121 | # Skip instances the user unchecked rather than deleted. | COMMENT |
| LOW | server/plugins/sync/sync.py | 181 | mylog('verbose', [f'[{pluginName}] Devices files to process: "{files_to_process}"']) | COMMENT |
| LOW | server/plugins/sync/sync.py | 281 | # | COMMENT |
| LOW | server/workflows/app_events.py | 41 | # "objectPrimaryId": "NEW.plugin", | COMMENT |
| LOW | server/api_server/mcp_endpoint.py | 201 | test_mode = os.getenv("MCP_TEST_MODE", "").lower() in ("1", "true", "yes") | COMMENT |
| LOW | server/api_server/api_server_start.py | 1241 | return jsonify({"success": True, "message": "Scans resumed", "pause_until": ""}), 200 | COMMENT |
| LOW | server/messaging/reporting.py | 1 | # ---------------------------------------------------------------------------------# | COMMENT |
| LOW | docs/AUTHELIA.md | 161 | - openid | COMMENT |
| LOW | docs/DOCKER_COMPOSE.md | 61 | target: /etc/localtime | COMMENT |
| LOW | .devcontainer/scripts/setup.sh | 1 | #!/bin/bash | COMMENT |
| LOW | front/settings.php | 641 | if (saveSucceeded) { | COMMENT |
| LOW | front/devices.php | 1 | <!-- | COMMENT |
| LOW | front/deviceDetails.php | 1 | <!-- | COMMENT |
| LOW | front/systeminfo.php | 1 | <?php | COMMENT |
| LOW | front/presence.php | 1 | <!-- | COMMENT |
| LOW | front/css/app.css | 2821 | #tab_DBTools, #tab_BackupRestore, #tab_Logging, #tab_multiEdit { position: relative; min-height: 320px; } | COMMENT |
| LOW | front/js/devices-table.js | 1 | // ============================================================================= | COMMENT |
| LOW | front/js/cache.js | 21 | // Central registry of all localStorage cache keys. | COMMENT |
| LOW | front/js/cache.js | 141 | COMMENT | |
| LOW | front/js/devices-init.js | 1 | // ============================================================================= | COMMENT |
| LOW | front/js/devices-custom-props.js | 1 | // ============================================================================= | COMMENT |
| LOW | front/js/settings_utils.js | 1241 | // if override value is considered empty initialize from setting defaults | COMMENT |
| LOW | front/js/db_methods.js | 1 | // ----------------------------------------------------------------------------- | COMMENT |
| LOW | front/js/ui_components.js | 1 | /* ----------------------------------------------------------------------------- | COMMENT |
| LOW | front/js/device-columns.js | 1 | // ============================================================================= | COMMENT |
| LOW | front/js/device-columns.js | 81 | ]; | COMMENT |
| LOW | front/js/graph_resource_history.js | 1 | // Chart.js instances, kept so a range switch destroys the old chart before | COMMENT |
| LOW | front/js/devices-filters.js | 1 | // ============================================================================= | COMMENT |
| LOW | front/php/server/db.php | 1 | <?php | COMMENT |
| LOW | front/php/templates/version.php | 1 | <?php | COMMENT |
| LOW | front/php/templates/footer.php | 1 | <!-- | COMMENT |
| LOW | front/lib/chart.js/Chart.js | 7301 | var padding = helpers$1.options.toPadding(layoutOptions.padding); | COMMENT |
| LOW | front/lib/chart.js/Chart.js | 7321 | // | |----|-------------------------------------|----| | COMMENT |
| LOW | front/lib/chart.js/Chart.js | 7761 | if (item && item.canvas) { | COMMENT |
| LOW | front/lib/chart.js/Chart.js | 13481 | end: pos + size | COMMENT |
| LOW | front/lib/chart.js/Chart.js | 13501 | // | COMMENT |
| LOW | front/lib/datatables/datatables.js | 4041 | // In cases where either: | COMMENT |
| LOW | front/lib/datatables/datatables.js | 5641 | }, | COMMENT |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/docker_tests/test_puid_pgid.py | 167 | "chown -R 0:0 /data && chmod -R 0755 /data && " | CODE |
| HIGH | test/docker_tests/test_puid_pgid.py | 345 | "chown -R 1000:1000 /data && chmod -R 0755 /data" | CODE |
| HIGH⚡ | test/docker_tests/test_container_environment.py | 1401 | "-c", "chown -R 0:0 /mnt && chmod 755 /mnt", | CODE |
| HIGH | test/docker_tests/test_container_environment.py | 1455 | "-c", "ls -ldn /data/db && touch /data/db/test_write_after_fix" | CODE |
| HIGH⚡ | test/docker_tests/test_container_environment.py | 653 | "if kill -0 $pid >/dev/null 2>&1; then kill -TERM $pid >/dev/null 2>&1 || true; fi; ", | STRING |
| HIGH | test/docker_tests/test_ports_available.py | 44 | f.write(" command: sh -c \"while true; do nc -l -p 20211 < /dev/null > /dev/null; done & while true; do nc -l | CODE |
| HIGH | test/docker_tests/test_ports_available.py | 149 | script = f"printf '%s\\n' '{script_cont.replace(chr(39), chr(39) + chr(92) + chr(39) + chr(39))}' > /tmp/ports-check | CODE |
| HIGH | test/ui/test_ui_translations.py | 37 | "return (typeof getString === 'function') ? getString(arguments[0]) : null;", | CODE |
| HIGH | test/ui/test_ui_xss_devname.py | 131 | return bool(driver.execute_script("return window.__xss_canary || false;")) | CODE |
| HIGH | test/ui/test_ui_xss_devname.py | 284 | assert not driver.execute_script("return window.__xss_canary || false"), ( | CODE |
| HIGH | test/scan/test_ip_format_and_locking.py | 62 | """Invalid IP values like (unknown), null, empty should be rejected.""" | STRING |
| HIGH⚡ | test/api_endpoints/test_health_endpoints.py | 129 | """cpu_temp should be optional (int or null).""" | STRING |
| HIGH | server/plugins/freebox/freebox.py | 203 | # key present but explicitly null, and dict.get()'s default only | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/test_device_atomicity.py | 80 | "devOwner": "John Doe", | CODE |
| LOW | server/initialise.py | 464 | '{"dataType":"array","elements":[{"elementType":"input","elementOptions":[{"placeholder":"Enter value"},{"suffix | CODE |
| LOW | server/initialise.py | 304 | """{"dataType": "array","elements": [{"elementType": "input","elementOptions": [{"placeholder": "192.168.1.0/24 | STRING |
| LOW | server/plugins/omada_sdn_imp/config.json | 163 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/custom_props/config.json | 40 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/custom_props/config.json | 126 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/custom_props/config.json | 330 | "placeholder": "<i class=\"far fa-trash-alt\"></i>" | CODE |
| LOW | server/plugins/custom_props/config.json | 345 | "placeholder": "<i class=\"far fa-clone\"></i>" | CODE |
| LOW | server/plugins/wake_on_lan/config.json | 156 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/wake_on_lan/config.json | 232 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/omada_sdn_openapi/config.json | 226 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/unifi_import/config.json | 791 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/wificanary/config.json | 592 | "placeholder": "wlan0" | CODE |
| LOW | server/plugins/wificanary/config.json | 668 | "placeholder": "HomeWiFi" | CODE |
| LOW | server/plugins/wificanary/config.json | 706 | "placeholder": "aa:bb:cc:dd:ee:ff" | CODE |
| LOW | server/plugins/wificanary/config.json | 788 | "placeholder": "optional note" | CODE |
| LOW | server/plugins/snmp_discovery/config.json | 416 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/newdev_template/config.json | 42 | "placeholder": "Enter value" | CODE |
| LOW | server/plugins/newdev_template/config.json | 167 | "placeholder": "Enter value" | CODE |
| LOW | server/plugins/newdev_template/config.json | 292 | "placeholder": "Enter value" | CODE |
| LOW | server/plugins/rest_import/config.json | 252 | "placeholder": "e.g. OPNsense DHCP" | CODE |
| LOW | server/plugins/rest_import/config.json | 290 | "placeholder": "https://host/api/endpoint" | CODE |
| LOW | server/plugins/rest_import/config.json | 440 | "placeholder": "Username or API Key" | CODE |
| LOW | server/plugins/rest_import/config.json | 478 | "placeholder": "Password or API Secret" | CODE |
| LOW | server/plugins/rest_import/config.json | 516 | "placeholder": "Bearer token" | CODE |
| LOW | server/plugins/rest_import/config.json | 554 | "placeholder": "Accept: application/json" | CODE |
| LOW | server/plugins/rest_import/config.json | 592 | "placeholder": "Optional JSON body for POST requests" | CODE |
| LOW | server/plugins/rest_import/config.json | 630 | "placeholder": "rows" | CODE |
| LOW | server/plugins/rest_import/config.json | 668 | "placeholder": "e.g. hwaddr" | CODE |
| LOW | server/plugins/rest_import/config.json | 706 | "placeholder": "e.g. address" | CODE |
| LOW | server/plugins/rest_import/config.json | 744 | "placeholder": "e.g. hostname" | CODE |
| LOW | server/plugins/rest_import/config.json | 782 | "placeholder": "e.g. mac_info" | CODE |
| LOW | server/plugins/rest_import/config.json | 820 | "placeholder": "e.g. wlan" | CODE |
| LOW | server/plugins/rest_import/config.json | 858 | "placeholder": "e.g. device_type" | CODE |
| LOW | server/plugins/rest_import/config.json | 896 | "placeholder": "e.g. parent_mac" | CODE |
| LOW | server/plugins/rest_import/config.json | 934 | "placeholder": "e.g. port" | CODE |
| LOW | server/plugins/rest_import/config.json | 972 | "placeholder": "e.g. site" | CODE |
| LOW | server/plugins/rest_import/config.json | 1010 | "placeholder": "e.g. vlan" | CODE |
| LOW | server/plugins/_publisher_ntfy/config.json | 707 | "placeholder": "Enter value" | CODE |
| LOW | server/plugins/__template/config.json | 181 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/__template/config.json | 314 | { "placeholder": "e.g. Site A" }, | CODE |
| LOW | server/plugins/__template/config.json | 337 | { "placeholder": "https://host:port" }, | CODE |
| LOW | server/plugins/website_monitor/config.json | 624 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/sync/config.json | 214 | "placeholder": "Enter full url" | CODE |
| LOW | server/plugins/dockerdisc/config.json | 585 | "placeholder": "http://docker-socket-proxy:2375" | CODE |
| LOW | server/plugins/dockerdisc/config.json | 623 | "placeholder": "aa:bb:cc:dd:ee:ff" | CODE |
| LOW | server/plugins/dhcp_leases/config.json | 502 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/unifi_api_import/config.json | 252 | "placeholder": "Enter value" | CODE |
| LOW | server/plugins/unifi_api_import/config.json | 290 | "placeholder": "https://host_ip/proxy/network/integration/" | CODE |
| LOW | server/plugins/unifi_api_import/config.json | 328 | "placeholder": "v1" | CODE |
| LOW | server/plugins/unifi_api_import/config.json | 366 | "placeholder": "Enter value" | CODE |
| LOW | server/plugins/ui_settings/config.json | 65 | { "placeholder": "Enter value" }, | CODE |
| LOW | server/plugins/ui_settings/config.json | 140 | { "placeholder": "Enter value" }, | CODE |
| LOW | front/lib/datatables/datatables.js | 26224 | .attr( 'placeholder', opts.placeholder ) | CODE |
| LOW | front/lib/datatables/datatables.min.js | 28 | !function(n){"use strict";var a;"function"==typeof define&&define.amd?define(["jquery"],function(t){return n(t,window,do | CODE |
| LOW | front/lib/select2/select2.full.min.js | 2 | !function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.e | CODE |
| LOW | front/lib/datatables.net/js/jquery.dataTables.min.js | 41 | g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!th | CODE |
| LOW | front/lib/datatables.net/js/jquery.dataTables.js | 4222 | .attr( 'placeholder', language.sSearchPlaceholder ) | CODE |
| LOW | front/lib/datatables.net/js/jquery.dataTables.js | 12552 | * // { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" } | COMMENT |
| LOW⚡ | front/lib/jquery-ui/jquery-ui.min.js | 6 | (function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e= | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/docker_tests/test_container_environment.py | 916 | # NOTE: The following runtime-behavior tests depended on the entrypoint continuing even when | COMMENT |
| LOW⚡ | test/ui/TESTING_GUIDE.md | 115 | # Step 1: Navigate to devices page | COMMENT |
| LOW⚡ | test/ui/TESTING_GUIDE.md | 119 | # Step 2: Click first device | COMMENT |
| LOW⚡ | test/ui/TESTING_GUIDE.md | 124 | # Step 3: Edit device name | COMMENT |
| LOW⚡ | test/ui/TESTING_GUIDE.md | 130 | # Step 4: Save changes | COMMENT |
| LOW⚡ | test/ui/TESTING_GUIDE.md | 135 | # Step 5: Verify save succeeded | COMMENT |
| LOW⚡ | test/ui/TESTING_GUIDE.md | 138 | # Step 6: Restore original name | COMMENT |
| LOW⚡ | test/api_endpoints/test_device_endpoints.py | 95 | # Step 1: Create the source device | COMMENT |
| LOW⚡ | test/api_endpoints/test_device_endpoints.py | 102 | # Step 2: Generate a target MAC (lowercase to match DB trigger normalisation) | COMMENT |
| LOW⚡ | test/api_endpoints/test_device_endpoints.py | 107 | # Step 3: Copy device | COMMENT |
| LOW⚡ | test/api_endpoints/test_device_endpoints.py | 114 | # Step 4: Verify new device exists | COMMENT |
| LOW⚡ | server/utils/plugin_utils.py | 367 | # Step 1: Initialize the setting value as an empty string | COMMENT |
| LOW⚡ | server/utils/plugin_utils.py | 370 | # Step 2: Get the default setting object for the plugin's specified key | COMMENT |
| LOW | server/utils/plugin_utils.py | 381 | # Step 3: Check for user-defined setting value in the dictionary | COMMENT |
| LOW⚡ | server/scan/device_handling.py | 1410 | # Step 3: Execute batch update | COMMENT |
| LOW | server/scan/device_handling.py | 1361 | # Step 1: Load all devices from the DB | COMMENT |
| LOW | server/scan/device_handling.py | 1375 | # Step 2: For each non-NIC device, determine new devPresentLastScan | COMMENT |
| LOW⚡ | server/api_server/nettools_endpoint.py | 81 | # Step 1: Validate IP address | COMMENT |
| LOW⚡ | server/api_server/nettools_endpoint.py | 90 | # Step 2: Execute traceroute | COMMENT |
| LOW⚡ | server/api_server/nettools_endpoint.py | 103 | # Step 3: Handle command errors | COMMENT |
| LOW⚡ | docs/PLUGINS_DEV.md | 73 | ### Step 1: Understand the Basics | COMMENT |
| LOW⚡ | docs/PLUGINS_DEV.md | 78 | ### Step 2: Create Your Plugin | COMMENT |
| LOW⚡ | docs/PLUGINS_DEV.md | 84 | ### Step 3: Configure & Display | COMMENT |
| LOW⚡ | docs/PLUGINS_DEV.md | 89 | ### Step 4: Deploy & Test | COMMENT |
| LOW⚡ | front/js/common.js | 283 | // Step 1: Replace double quotes within single-quoted strings | COMMENT |
| LOW⚡ | front/js/common.js | 289 | // Step 2: Replace all single quotes with double quotes | COMMENT |
| LOW⚡ | front/js/common.js | 292 | // Step 3: Restore escaped double quotes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/backend/sql_safe_builder.py | 147 | Parse and build a safe SQL condition from a user-provided string. This method attempts to parse common | STRING |
| HIGH | server/database.py | 341 | Retrieve device statistics from the database. Args: db: A database connection or handler object that p | STRING |
| HIGH | server/helper.py | 435 | Reverse applied transformers on a value or list of values. This function iterates through a list of transforme | STRING |
| HIGH | server/utils/datetime_utils.py | 28 | Return the current time in UTC. This is the ONLY function that calls datetime.datetime.now() in the entire cod | STRING |
| HIGH | server/utils/datetime_utils.py | 92 | Check if a datetime is strictly in the future. Utility for validating that a datetime hasn't already passed. | STRING |
| HIGH | server/utils/datetime_utils.py | 119 | Ensure a schedule's next() call returns a datetime strictly in the future. Keeps calling .next() until a futur | STRING |
| HIGH | server/db/sql_safe_builder.py | 156 | Parse and build a safe SQL condition from a user-provided string. This method attempts to parse common | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/api_endpoints/test_device_endpoints.py | 95 | # Step 1: Create the source device | COMMENT |
| LOW⚡ | test/api_endpoints/test_device_endpoints.py | 102 | # Step 2: Generate a target MAC (lowercase to match DB trigger normalisation) | COMMENT |
| LOW⚡ | test/api_endpoints/test_device_endpoints.py | 107 | # Step 3: Copy device | COMMENT |
| LOW⚡ | test/api_endpoints/test_device_endpoints.py | 114 | # Step 4: Verify new device exists | COMMENT |
| LOW⚡ | server/utils/plugin_utils.py | 367 | # Step 1: Initialize the setting value as an empty string | COMMENT |
| LOW⚡ | server/utils/plugin_utils.py | 370 | # Step 2: Get the default setting object for the plugin's specified key | COMMENT |
| LOW | server/utils/plugin_utils.py | 381 | # Step 3: Check for user-defined setting value in the dictionary | COMMENT |
| LOW⚡ | server/scan/device_handling.py | 1410 | # Step 3: Execute batch update | COMMENT |
| LOW | server/scan/device_handling.py | 1361 | # Step 1: Load all devices from the DB | COMMENT |
| LOW | server/scan/device_handling.py | 1375 | # Step 2: For each non-NIC device, determine new devPresentLastScan | COMMENT |
| LOW⚡ | server/api_server/nettools_endpoint.py | 81 | # Step 1: Validate IP address | COMMENT |
| LOW⚡ | server/api_server/nettools_endpoint.py | 90 | # Step 2: Execute traceroute | COMMENT |
| LOW⚡ | server/api_server/nettools_endpoint.py | 103 | # Step 3: Handle command errors | COMMENT |
| LOW⚡ | front/js/common.js | 283 | // Step 1: Replace double quotes within single-quoted strings | COMMENT |
| LOW⚡ | front/js/common.js | 289 | // Step 2: Replace all single quotes with double quotes | COMMENT |
| LOW⚡ | front/js/common.js | 292 | // Step 3: Restore escaped double quotes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/docker_tests/test_puid_pgid.py | 7 | CODE | |
| LOW | test/plugins/test_adguard_export.py | 16 | CODE | |
| LOW | test/plugins/test_adguard_export.py | 18 | CODE | |
| LOW | test/plugins/test_rest_import.py | 11 | CODE | |
| LOW | test/plugins/test_rest_import.py | 13 | CODE | |
| LOW | test/backend/test_skip_repeated_notifications.py | 12 | CODE | |
| LOW | test/backend/test_device_history.py | 20 | CODE | |
| LOW | test/backend/test_device_history.py | 20 | CODE | |
| LOW | test/backend/test_device_history.py | 20 | CODE | |
| LOW | test/api_endpoints/test_mcp_disabled_tools.py | 4 | CODE | |
| LOW | test/api_endpoints/test_mcp_disabled_tools.py | 5 | CODE | |
| LOW | server/config_paths.py | 8 | CODE | |
| LOW | server/plugins/unifi_import/script.py | 4 | CODE | |
| LOW | server/plugins/snmp_discovery/script.py | 3 | CODE | |
| LOW | server/plugins/dhcp_leases/script.py | 3 | CODE | |
| LOW | server/models/parameters_instance.py | 11 | CODE | |
| LOW | server/api_server/graphql_types.py | 1 | CODE | |
| LOW | server/api_server/mcp_endpoint.py | 24 | CODE | |
| LOW | server/api_server/openapi/registry.py | 1 | CODE | |
| LOW | server/api_server/openapi/schema_converter.py | 1 | CODE | |
| LOW | server/api_server/openapi/spec_generator.py | 31 | CODE | |
| LOW | server/api_server/openapi/schemas.py | 14 | CODE | |
| LOW | server/api_server/openapi/introspection.py | 1 | CODE | |
| LOW | server/api_server/openapi/validation.py | 1 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/scan/test_resource_history.py | 0 | create table if not exists resource_history ( "index" integer primary key autoincrement, resdatetime text not null, resc | STRING |
| HIGH | test/db/test_resource_history_rollup.py | 0 | create table if not exists resource_history ( "index" integer primary key autoincrement, resdatetime text not null, resc | STRING |
| HIGH | test/db/test_db_cleanup.py | 0 | create table if not exists resource_history ( "index" integer primary key autoincrement, resdatetime text not null, resc | STRING |
| HIGH | server/db/db_upgrade.py | 0 | create table if not exists resource_history ( "index" integer primary key autoincrement, resdatetime text not null, resc | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | server/api_server/mcp_endpoint.py | 398 | # 2. Prefer POST methods over GET for the same logic (usually more robust body validation). | COMMENT |
| LOW | server/api_server/mcp_endpoint.py | 259 | # if multiple prefixes are used, so we just return it. | COMMENT |
| MEDIUM | front/lib/chart.js/Chart.js | 7309 | // Essentially we now have any number of boxes on each of the 4 sides. | COMMENT |
| MEDIUM | front/lib/datatables/datatables.js | 10670 | // understands anonymous AMD modules. A named AMD is safest and most robust | COMMENT |
| MEDIUM | front/lib/datatables/datatables.js | 33566 | // Note that DataTables 2.1 has more robust type detection, but we retain | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/db_test_helpers.py | 663 | CODE | |
| LOW | test/docker_tests/test_container_environment.py | 541 | CODE | |
| LOW | test/backend/sql_safe_builder.py | 108 | CODE | |
| LOW | server/app_state.py | 203 | CODE | |
| LOW | server/app_state.py | 36 | CODE | |
| LOW | server/plugins/plugin_helper.py | 321 | CODE | |
| LOW | server/plugins/plugin_helper.py | 391 | CODE | |
| LOW | server/api_server/openapi/registry.py | 86 | CODE | |
| LOW | server/api_server/openapi/validation.py | 36 | CODE | |
| LOW | server/db/sql_safe_builder.py | 117 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | server/plugin.py | 805 | # compare hash of the changed watched columns for uniqueness - make sure you compare the values wit | STRING |
| LOW | server/plugins/_publisher_mqtt/mqtt.py | 424 | # If you intend to run multiple instances simultaneously, make sure to set unique client IDs for each instance. | COMMENT |
| MEDIUM | server/plugins/asuswrt_import/script.py | 89 | # Now you can use the router object to call methods | COMMENT |
| MEDIUM | server/plugins/__template/rename_me.py | 140 | # Sample data for testing purposes, you can adjust the processing in main() as needed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | test/plugins/test_pihole_monitor.py | 386 | # main() - orchestration, with PiholeSource's network methods stubbed | COMMENT |
| MEDIUM | docs/gen_plugin_pages.py | 54 | continue # dev scaffolding (e.g. __template), not a real plugin | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/docker_tests/test_container_environment.py | 1393 | def _setup_restrictive_dir(host_path: pathlib.Path) -> None: | CODE |
| LOW | test/docker_tests/test_container_environment.py | 828 | def _setup_zero_perm_dir(paths: dict[str, pathlib.Path], key: str) -> None: | STRING |
| LOW | server/config_paths.py | 14 | __all__ = [ | CODE |
| LOW | server/plugins/adguard_export/script.py | 157 | def update_client(self, old_name: str, client: dict) -> None: | CODE |
| LOW⚡ | server/plugins/unifi_import/script.py | 262 | def set_lock_file_value(config_value: str, lock_file_value: bool) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | front/lib/datatables/datatables.js | 4141 | function getData( data ) { | CODE |