A remote monitoring & management tool, built with Django, Vue and Go.
This report summarizes scanner evidence for amidaware/tacticalrmm, a Python project with 4,496 GitHub stars. SynthScan examined 69,969 lines of code across 335 source files, recording 738 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 14.4 (Moderate 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? 534 finding(s).
Are imports declared and package/API names verified? 82 finding(s).
Are wrappers, guards, and repeated structures necessary? 555 finding(s).
Which changes need focused human review? 738 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 738 distinct pattern matches across 13 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 |
|---|---|---|---|---|
| LOW | api/tacticalrmm/clients/models.py | 14 | def _default_failing_checks_data() -> Dict[str, bool]: | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 470 | def test_get_clients_permissions(self): | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 523 | def test_add_clients_permissions(self, save, delete): | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 544 | def test_get_edit_delete_clients_permissions(self, delete): | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 582 | def test_get_sites_permissions(self): | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 631 | def test_add_sites_permissions(self, delete, save): | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 662 | def test_get_edit_delete_sites_permissions(self, delete): | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 708 | def test_get_pendingactions_permissions(self): | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 754 | def test_add_deployments_permissions(self, save): | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 795 | def test_delete_deployments_permissions(self, delete): | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 846 | def test_restricted_user_creating_clients(self): | CODE |
| LOW | api/tacticalrmm/clients/tests.py | 862 | def test_restricted_user_creating_sites(self): | CODE |
| LOW | api/tacticalrmm/apiv3/tests/tests.py | 71 | def test_checkrunner_interval(self, mock_randint): | CODE |
| LOW | api/tacticalrmm/core/tasks.py | 77 | def remove_orphaned_history_results() -> int: | CODE |
| LOW | api/tacticalrmm/core/models.py | 491 | def get_or_create_field_value(self, instance): | CODE |
| LOW | api/tacticalrmm/core/utils.py | 266 | def find_and_replace_db_values_str(*, text: str, instance): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 45 | def test_edit_codesign_timeout(self, mock_post): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 86 | def test_core_maintenance_tasks(self): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 143 | def test_hosted_edit_coresettings(self): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 175 | def test_ui_maintenance_actions(self, remove_orphaned_win_tasks, reload_nats): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 231 | def test_get_custom_fields_by_model(self): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 460 | # def test_resolved_pending_agentupdate_task(self): | COMMENT |
| LOW | api/tacticalrmm/core/tests.py | 505 | def test_custom_port_nats_standard(self): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 514 | def test_custom_connect_host_env(self): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 538 | def test_standard_install_custom_port(self, mock_token): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 577 | def test_get_meshagent_url_standard(self): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 602 | def test_get_meshagent_url_docker(self): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 626 | def test_get_meshagent_url_external_mesh(self): | CODE |
| LOW | api/tacticalrmm/core/tests.py | 650 | def test_get_meshagent_url_mesh_port(self): | CODE |
| LOW⚡ | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 26 | def test_should_run_daily_exact_time(time_machine, run_time_10am, est_timezone): | CODE |
| LOW⚡ | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 35 | def test_should_not_run_daily_off_time(time_machine, run_time_10am, est_timezone): | CODE |
| LOW⚡ | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 45 | def test_should_run_weekly_correct_day_and_time( | CODE |
| LOW | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 57 | def test_should_not_run_weekly_incorrect_day(time_machine, run_time_10am, est_timezone): | CODE |
| LOW | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 68 | def test_should_run_monthly_correct_day(time_machine, run_time_10am, est_timezone): | CODE |
| LOW | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 79 | def test_should_not_run_monthly_incorrect_month( | CODE |
| LOW | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 92 | def test_should_run_monthly_last_day_of_month( | CODE |
| LOW | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 105 | def test_should_run_monthly_last_day_of_leap_year_february( | CODE |
| LOW | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 119 | def test_should_run_monthly_dow_correct_week_and_day( | CODE |
| LOW | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 133 | def test_should_run_monthly_dow_last_week_of_month( | CODE |
| LOW | api/tacticalrmm/core/tests_pytest/test_scheduler.py | 147 | def test_should_not_run_monthly_dow_incorrect_week( | CODE |
| LOW | api/tacticalrmm/winupdate/tasks.py | 18 | def auto_approve_updates_task() -> None: | CODE |
| LOW | api/tacticalrmm/winupdate/tasks.py | 49 | def check_agent_update_schedule_task() -> None: | CODE |
| LOW | api/tacticalrmm/winupdate/tasks.py | 125 | def bulk_install_updates_task(pks: list[int]) -> None: | CODE |
| LOW | api/tacticalrmm/winupdate/tasks.py | 145 | def bulk_check_for_updates_task(pks: list[int]) -> None: | CODE |
| LOW | api/tacticalrmm/winupdate/tests.py | 81 | def test_get_scan_install_permissions(self, nats_cmd): | CODE |
| LOW | api/tacticalrmm/winupdate/tests.py | 120 | def test_edit_winupdate_permissions(self): | CODE |
| LOW | api/tacticalrmm/autotasks/tasks.py | 90 | def remove_orphaned_win_tasks(self) -> str: | CODE |
| LOW | api/tacticalrmm/autotasks/tasks.py | 224 | def handle_resolved_task_sms_alert(pk: int) -> str: | CODE |
| LOW | api/tacticalrmm/autotasks/tasks.py | 244 | def handle_resolved_task_email_alert(pk: int) -> str: | CODE |
| LOW | api/tacticalrmm/autotasks/models.py | 52 | def default_task_supported_platforms() -> list[str]: | CODE |
| LOW | api/tacticalrmm/autotasks/models.py | 237 | def fields_that_trigger_task_update_on_agent(self) -> List[str]: | CODE |
| LOW | api/tacticalrmm/autotasks/models.py | 262 | def generate_nats_task_payload(self) -> Dict[str, Any]: | CODE |
| LOW | api/tacticalrmm/autotasks/models.py | 541 | def get_or_create_alert_if_needed( | CODE |
| LOW | api/tacticalrmm/autotasks/tests/test_autotasks.py | 397 | def test_create_win_task_schedule(self, nats_cmd): | CODE |
| LOW | api/tacticalrmm/autotasks/tests/test_autotasks.py | 683 | def test_get_tasks_permissions(self): | CODE |
| LOW | api/tacticalrmm/autotasks/tests/test_autotasks.py | 743 | def test_add_task_permissions(self): | CODE |
| LOW | api/tacticalrmm/autotasks/tests/test_autotasks.py | 813 | def test_task_get_edit_delete_permissions(self, delete_task): | CODE |
| LOW | api/tacticalrmm/autotasks/tests/test_autotasks.py | 860 | def test_task_action_permissions(self): | CODE |
| LOW | api/tacticalrmm/checks/tasks.py | 15 | def handle_check_email_alert_task( | CODE |
| LOW | api/tacticalrmm/checks/tasks.py | 49 | def handle_check_sms_alert_task(pk: int, alert_interval: Optional[float] = None) -> str: | CODE |
| 365 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | api/tacticalrmm/ee/__init__.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/models.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/constants.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/__init__.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/apps.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/admin.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/utils.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/storage.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/settings.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/urls.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/views.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/markdown/config.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/markdown/__init__.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …i/tacticalrmm/ee/reporting/markdown/ignorejinja_ext.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …/tacticalrmm/ee/reporting/tests/test_util_functions.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …alrmm/ee/reporting/tests/test_report_template_views.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …e/reporting/tests/test_import_export_template_views.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …ticalrmm/ee/reporting/tests/test_report_asset_views.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …tacticalrmm/ee/reporting/tests/test_dataquery_views.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/tests/test_data_queries.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/tests/__init__.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/tests/test_storage.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …icalrmm/ee/reporting/tests/test_base_template_views.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …icalrmm/ee/reporting/tests/test_template_generation.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …i/tacticalrmm/ee/reporting/tests/test_mgmt_commands.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …ticalrmm/ee/reporting/tests/test_template_variables.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/management/__init__.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …cticalrmm/ee/reporting/management/commands/__init__.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …reporting/management/commands/generate_json_schemas.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | …rmm/ee/reporting/management/commands/get_webtar_url.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/reporting/serializers.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/sso/adapter.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/sso/__init__.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/sso/permissions.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/sso/urls.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/sso/middleware.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/sso/views.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| HIGH | api/tacticalrmm/ee/sso/sso_settings.py | 0 | copyright (c) 2024-present amidaware inc. this file is subject to the ee license agreement. for details, see: https://li | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/tacticalrmm/clients/tests.py | 470 | CODE | |
| LOW | api/tacticalrmm/apiv3/views.py | 300 | CODE | |
| LOW | api/tacticalrmm/apiv3/views.py | 623 | CODE | |
| LOW | api/tacticalrmm/core/tasks.py | 185 | CODE | |
| LOW | api/tacticalrmm/core/tasks.py | 206 | CODE | |
| LOW | api/tacticalrmm/core/tasks.py | 366 | CODE | |
| LOW | api/tacticalrmm/core/tasks.py | 435 | CODE | |
| LOW | api/tacticalrmm/core/tasks.py | 608 | CODE | |
| LOW | api/tacticalrmm/core/models.py | 276 | CODE | |
| LOW | api/tacticalrmm/core/models.py | 491 | CODE | |
| LOW | api/tacticalrmm/core/serializers.py | 107 | CODE | |
| LOW | api/tacticalrmm/core/mesh_utils.py | 64 | CODE | |
| LOW | api/tacticalrmm/core/mesh_utils.py | 94 | CODE | |
| LOW | api/tacticalrmm/core/mesh_utils.py | 97 | CODE | |
| LOW | api/tacticalrmm/core/views.py | 407 | CODE | |
| LOW | api/tacticalrmm/core/views.py | 466 | CODE | |
| LOW | …ticalrmm/core/management/commands/server_maint_mode.py | 18 | CODE | |
| LOW | …ticalrmm/core/management/commands/post_update_tasks.py | 18 | CODE | |
| LOW | api/tacticalrmm/winupdate/tasks.py | 49 | CODE | |
| LOW | api/tacticalrmm/autotasks/models.py | 159 | CODE | |
| LOW | api/tacticalrmm/autotasks/models.py | 201 | CODE | |
| LOW | api/tacticalrmm/autotasks/models.py | 262 | CODE | |
| LOW | api/tacticalrmm/autotasks/serializers.py | 76 | CODE | |
| LOW | api/tacticalrmm/autotasks/serializers.py | 212 | CODE | |
| LOW | api/tacticalrmm/autotasks/tests/test_scheduler.py | 19 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 193 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 269 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 363 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 536 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 612 | CODE | |
| LOW | api/tacticalrmm/checks/serializers.py | 58 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/custom_filters.py | 11 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/tasks.py | 29 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/utils.py | 160 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/utils.py | 213 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/utils.py | 265 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/utils.py | 432 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/utils.py | 646 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/utils.py | 857 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/views.py | 537 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/views.py | 680 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/views.py | 799 | CODE | |
| LOW | …reporting/management/commands/generate_json_schemas.py | 31 | CODE | |
| LOW | api/tacticalrmm/ee/sso/views.py | 171 | CODE | |
| LOW | api/tacticalrmm/agents/tasks.py | 219 | CODE | |
| LOW | api/tacticalrmm/agents/models.py | 656 | CODE | |
| LOW | api/tacticalrmm/agents/models.py | 811 | CODE | |
| LOW | api/tacticalrmm/agents/models.py | 951 | CODE | |
| LOW | api/tacticalrmm/agents/models.py | 1066 | CODE | |
| LOW | api/tacticalrmm/agents/models.py | 986 | CODE | |
| LOW | api/tacticalrmm/agents/consumers.py | 87 | CODE | |
| LOW | api/tacticalrmm/agents/consumers.py | 273 | CODE | |
| LOW | api/tacticalrmm/agents/consumers.py | 327 | CODE | |
| LOW | api/tacticalrmm/agents/consumers.py | 357 | CODE | |
| LOW | api/tacticalrmm/agents/utils.py | 145 | CODE | |
| LOW | api/tacticalrmm/agents/views.py | 691 | CODE | |
| LOW | api/tacticalrmm/agents/views.py | 876 | CODE | |
| LOW | api/tacticalrmm/agents/views.py | 1081 | CODE | |
| LOW | …/tacticalrmm/agents/management/commands/fake_agents.py | 79 | CODE | |
| LOW | …nts/management/commands/fix_dupe_agent_customfields.py | 11 | CODE | |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/tacticalrmm/clients/views.py | 316 | except Exception: | CODE |
| LOW | api/tacticalrmm/apiv3/views.py | 473 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/apiv3/views.py | 511 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/tasks.py | 91 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/tasks.py | 351 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/tasks.py | 603 | except Exception: | CODE |
| MEDIUM | api/tacticalrmm/core/tasks.py | 77 | def remove_orphaned_history_results() -> int: | CODE |
| LOW | api/tacticalrmm/core/models.py | 395 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/consumers.py | 113 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/consumers.py | 224 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/utils.py | 169 | except Exception: | CODE |
| LOW | api/tacticalrmm/core/utils.py | 299 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/utils.py | 305 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/utils.py | 336 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/utils.py | 377 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/utils.py | 432 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/mesh_utils.py | 59 | except Exception: | CODE |
| LOW | api/tacticalrmm/core/mesh_utils.py | 84 | except Exception: | CODE |
| LOW | api/tacticalrmm/core/views.py | 297 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/views.py | 789 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/management/commands/check_mesh.py | 31 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/management/commands/check_mesh.py | 41 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/core/management/commands/check_mesh.py | 56 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/autotasks/tasks.py | 116 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/autotasks/tasks.py | 141 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/ee/reporting/tasks.py | 48 | except Exception: | CODE |
| LOW | api/tacticalrmm/ee/reporting/tasks.py | 110 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/ee/reporting/utils.py | 296 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/ee/reporting/utils.py | 777 | except Exception as error: | CODE |
| LOW | api/tacticalrmm/ee/reporting/views.py | 248 | except Exception as error: | CODE |
| LOW | api/tacticalrmm/ee/reporting/views.py | 353 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/ee/reporting/views.py | 510 | except Exception as error: | CODE |
| LOW | api/tacticalrmm/ee/reporting/views.py | 582 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/ee/reporting/views.py | 617 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/ee/sso/adapter.py | 27 | except Exception: | CODE |
| LOW | api/tacticalrmm/agents/tasks.py | 214 | except Exception as e: | CODE |
| MEDIUM | api/tacticalrmm/agents/models.py | 519 | def hex_mesh_node_id(self) -> str: | CODE |
| MEDIUM | api/tacticalrmm/agents/models.py | 986 | def message_handler(msg): | CODE |
| LOW | api/tacticalrmm/agents/models.py | 301 | except Exception: | CODE |
| LOW | api/tacticalrmm/agents/models.py | 522 | except Exception: | CODE |
| LOW | api/tacticalrmm/agents/models.py | 940 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/agents/models.py | 974 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/agents/models.py | 1004 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/agents/models.py | 1022 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/agents/models.py | 1036 | except Exception: | CODE |
| LOW | api/tacticalrmm/agents/models.py | 1055 | except Exception: | CODE |
| LOW | api/tacticalrmm/agents/models.py | 1061 | except Exception: | CODE |
| LOW | api/tacticalrmm/agents/consumers.py | 319 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/agents/consumers.py | 361 | except Exception: | CODE |
| LOW | api/tacticalrmm/agents/consumers.py | 422 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/agents/consumers.py | 465 | except Exception as e: | CODE |
| MEDIUM | api/tacticalrmm/agents/consumers.py | 357 | def message_handler(msg): | CODE |
| LOW | api/tacticalrmm/agents/utils.py | 108 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/agents/views.py | 341 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/agents/views.py | 640 | except Exception: | CODE |
| LOW | api/tacticalrmm/agents/views.py | 1390 | except Exception as e: | CODE |
| LOW | …alrmm/agents/management/commands/bulk_delete_agents.py | 96 | except Exception as e: | CODE |
| LOW | api/tacticalrmm/software/views.py | 40 | except Exception: | CODE |
| LOW | api/tacticalrmm/logs/models.py | 70 | except Exception: | CODE |
| LOW | api/tacticalrmm/tacticalrmm/utils.py | 98 | except Exception as e: | CODE |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | api/tacticalrmm/core/mesh_utils.py | 77 | except KeyError: | CODE |
| HIGH | …cticalrmm/core/management/commands/pre_update_tasks.py | 16 | except: | CODE |
| HIGH | api/tacticalrmm/checks/views.py | 89 | except KeyError: | CODE |
| HIGH | api/tacticalrmm/ee/reporting/utils.py | 75 | except ReportHTMLTemplate.DoesNotExist: | CODE |
| HIGH | api/tacticalrmm/ee/reporting/utils.py | 81 | except ReportTemplate.DoesNotExist: | CODE |
| HIGH | api/tacticalrmm/ee/reporting/utils.py | 148 | except ReportHTMLTemplate.DoesNotExist: | CODE |
| HIGH | api/tacticalrmm/ee/reporting/utils.py | 541 | except ReportAsset.DoesNotExist: | CODE |
| HIGH | api/tacticalrmm/ee/reporting/views.py | 731 | except ReportAsset.DoesNotExist: | CODE |
| HIGH | api/tacticalrmm/agents/models.py | 1036 | except Exception: | CODE |
| HIGH | api/tacticalrmm/tacticalrmm/test.py | 137 | except KeyError: | CODE |
| HIGH | api/tacticalrmm/tacticalrmm/test.py | 147 | except KeyError: | CODE |
| HIGH | api/tacticalrmm/tacticalrmm/test.py | 171 | except KeyError: | CODE |
| HIGH | api/tacticalrmm/tacticalrmm/utils.py | 372 | except CustomField.DoesNotExist: | CODE |
| HIGH | api/tacticalrmm/accounts/permissions.py | 21 | except User.DoesNotExist: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/tacticalrmm/core/tasks.py | 73 | CODE | |
| LOW | api/tacticalrmm/core/tasks.py | 74 | CODE | |
| LOW | api/tacticalrmm/core/models.py | 38 | CODE | |
| LOW | api/tacticalrmm/core/utils.py | 23 | CODE | |
| LOW | api/tacticalrmm/core/mesh_utils.py | 16 | CODE | |
| LOW | api/tacticalrmm/autotasks/tasks.py | 22 | CODE | |
| LOW | api/tacticalrmm/autotasks/models.py | 6 | CODE | |
| LOW | api/tacticalrmm/autotasks/models.py | 31 | CODE | |
| LOW | api/tacticalrmm/autotasks/models.py | 32 | CODE | |
| LOW | api/tacticalrmm/autotasks/models.py | 33 | CODE | |
| LOW | api/tacticalrmm/autotasks/models.py | 34 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 2 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 2 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 2 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 26 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 27 | CODE | |
| LOW | api/tacticalrmm/checks/models.py | 28 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/utils.py | 45 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/utils.py | 55 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/markdown/config.py | 7 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/markdown/config.py | 7 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/markdown/config.py | 7 | CODE | |
| LOW | …rmm/ee/reporting/management/commands/get_webtar_url.py | 8 | CODE | |
| LOW | api/tacticalrmm/agents/tasks.py | 25 | CODE | |
| LOW | api/tacticalrmm/agents/models.py | 56 | CODE | |
| LOW | api/tacticalrmm/agents/models.py | 58 | CODE | |
| LOW | api/tacticalrmm/agents/tests/test_recovery.py | 10 | CODE | |
| LOW | api/tacticalrmm/agents/tests/test_recovery.py | 10 | CODE | |
| LOW | api/tacticalrmm/agents/tests/test_agents.py | 34 | CODE | |
| LOW | api/tacticalrmm/agents/tests/test_agents.py | 34 | CODE | |
| LOW | api/tacticalrmm/alerts/models.py | 1 | CODE | |
| LOW | api/tacticalrmm/alerts/models.py | 27 | CODE | |
| LOW | api/tacticalrmm/alerts/models.py | 28 | CODE | |
| LOW | api/tacticalrmm/alerts/models.py | 29 | CODE | |
| LOW | api/tacticalrmm/alerts/models.py | 29 | CODE | |
| LOW | api/tacticalrmm/alerts/permissions.py | 10 | CODE | |
| LOW | api/tacticalrmm/logs/models.py | 3 | CODE | |
| LOW | api/tacticalrmm/logs/models.py | 23 | CODE | |
| LOW | api/tacticalrmm/logs/apps.py | 8 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/models.py | 6 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/__init__.py | 1 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/__init__.py | 1 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/__init__.py | 3 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/__init__.py | 6 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/test.py | 2 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/test.py | 10 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/test.py | 17 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/test.py | 18 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/test.py | 18 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/test.py | 19 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/test.py | 20 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/utils.py | 46 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/utils.py | 47 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/utils.py | 47 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/celery.py | 1 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/celery.py | 1 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/settings.py | 133 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/settings.py | 136 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/nats_utils.py | 12 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/permissions.py | 10 | CODE | |
| 6 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | api/tacticalrmm/core/models.py | 14 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …cticalrmm/core/management/commands/initial_db_setup.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | api/tacticalrmm/ee/sso/views.py | 12 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | api/tacticalrmm/accounts/views.py | 8 | from django.core.exceptions import ValidationError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | troubleshoot_server.sh | 80 | # Check if resolvconf command is available | COMMENT |
| LOW | troubleshoot_server.sh | 218 | # Check if services are running | COMMENT |
| LOW | troubleshoot_server.sh | 354 | #Check if HTTPs Port is open | COMMENT |
| LOW⚡ | …ticalrmm/ee/reporting/tests/test_template_variables.py | 253 | # Check if the generate_chart function was called correctly | STRING |
| LOW⚡ | …ticalrmm/ee/reporting/tests/test_template_variables.py | 262 | # Check if the returned data has the chart in place | STRING |
| LOW | api/tacticalrmm/automation/models.py | 289 | # Check if drive letter was already added | COMMENT |
| LOW | api/tacticalrmm/automation/models.py | 299 | # Check if IP/host was already added | COMMENT |
| LOW | api/tacticalrmm/automation/models.py | 312 | # Check if cpuload list is empty | COMMENT |
| LOW | api/tacticalrmm/automation/models.py | 324 | # Check if memory check list is empty | COMMENT |
| LOW | api/tacticalrmm/automation/models.py | 336 | # Check if service name was already added | COMMENT |
| LOW | api/tacticalrmm/automation/models.py | 348 | # Check if script id was already added | COMMENT |
| LOW | api/tacticalrmm/automation/models.py | 361 | # Check if events were already added | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 423 | git config user.email "admin@example.com" | CODE |
| LOW | install.sh | 431 | git config user.email "admin@example.com" | CODE |
| LOW | restore.sh | 373 | git config user.email "admin@example.com" | CODE |
| LOW | restore.sh | 381 | git config user.email "admin@example.com" | CODE |
| LOW | update.sh | 498 | git config user.email "admin@example.com" | CODE |
| LOW | update.sh | 512 | git config user.email "admin@example.com" | CODE |
| LOW | update.sh | 516 | git config user.email "admin@example.com" | CODE |
| LOW | docker/containers/tactical/entrypoint.sh | 156 | echo "from accounts.models import User; User.objects.create_superuser('${TRMM_USER}', 'admin@example.com', '${TRMM_PAS | CODE |
| LOW | .devcontainer/entrypoint.sh | 131 | echo "from accounts.models import User; User.objects.create_superuser('${TRMM_USER}', 'admin@example.com', '${TRMM_PAS | CODE |
| LOW | api/tacticalrmm/core/models.py | 63 | max_length=255, blank=True, default="admin@example.com" | CODE |
| LOW | api/tacticalrmm/agents/tests/test_agents.py | 572 | "emails": ["admin@example.com", "bob@example.com"], | CODE |
| LOW | api/tacticalrmm/agents/tests/test_agents.py | 600 | emails=["admin@example.com", "bob@example.com"], | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/tacticalrmm/apiv3/views.py | 519 | CODE | |
| LOW | api/tacticalrmm/core/mesh_utils.py | 132 | CODE | |
| LOW | api/tacticalrmm/ee/reporting/tasks.py | 118 | CODE | |
| LOW | api/tacticalrmm/agents/models.py | 656 | CODE | |
| LOW | api/tacticalrmm/agents/utils.py | 186 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/utils.py | 478 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/middleware.py | 48 | CODE | |
| LOW | api/tacticalrmm/tacticalrmm/middleware.py | 112 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/tacticalrmm/core/tests.py | 461 | # online = baker.make_recipe("agents.online_agent", version="2.0.0", _quantity=20) | COMMENT |
| LOW | api/tacticalrmm/winupdate/tests.py | 161 | ) | COMMENT |
| LOW | api/tacticalrmm/winupdate/tests.py | 181 | # ), | COMMENT |
| LOW | api/tacticalrmm/agents/tests/test_agent_update.py | 301 | COMMENT | |
| LOW | api/tacticalrmm/tacticalrmm/utils.py | 301 | return "error" | COMMENT |
| LOW | api/tacticalrmm/tacticalrmm/settings.py | 41 | COMMENT | |
| LOW | api/tacticalrmm/tacticalrmm/settings.py | 61 | # True: --config and --env-config options are added to the command line and point to the Agent's directory. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/tacticalrmm/core/tasks.py | 229 | # TODO can we just use agent?? | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/tacticalrmm/core/mesh_utils.py | 155 | def update_mesh_displayname(self, *, user_info: dict[str, Any]) -> None: | CODE |