A simple CalDAV (calendar) and CardDAV (contact) server.
This report summarizes scanner evidence for Kozea/Radicale, a Python project with 5,104 GitHub stars. SynthScan examined 55,223 lines of code across 175 source files, recording 891 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 22.4 (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? 738 finding(s).
Are imports declared and package/API names verified? 21 finding(s).
Are wrappers, guards, and repeated structures necessary? 522 finding(s).
Which changes need focused human review? 891 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 891 distinct pattern matches across 16 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 | radicale/httputils.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/pathutils.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/server.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/config.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/log.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/types.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/utils.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/__main__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/__main__.py | 228 | # Create a socket pair to notify the server of program shutdown | COMMENT |
| MEDIUM | radicale/xmlutils.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/sharing/files.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| MEDIUM | radicale/sharing/none.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| MEDIUM | radicale/sharing/__init__.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| MEDIUM | radicale/sharing/common.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| MEDIUM | radicale/sharing/csv.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| MEDIUM | radicale/app/put.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/delete.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/mkcol.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/options.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/post.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/propfind.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/proppatch.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/head.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/move.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/get.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/base.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/report.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/app/mkcalendar.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/auth/none.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/auth/ldap.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/auth/pam.py | 3 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| MEDIUM | radicale/auth/http_x_remote_user.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/auth/oauth2.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| MEDIUM | radicale/auth/htpasswd.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/auth/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/auth/dovecot.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| MEDIUM | radicale/auth/denyall.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/auth/http_remote_user.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/auth/remote_user.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/group/none.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/group/from_auth.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/group/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/group/htgroup.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/web/internal.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/web/none.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/web/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_rights.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_sharing.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_group.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_auth.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_web.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_expand.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_hook_email.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_storage.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_hook_rabbitmq.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_server.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| MEDIUM | radicale/tests/test_auth_servers.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| 62 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | radicale/pathutils.py | 255 | def is_safe_filesystem_path_component(path: str) -> bool: | CODE |
| LOW | radicale/pathutils.py | 365 | def path_permissions_as_string(path): | CODE |
| LOW | radicale/pathutils.py | 404 | def path_is_collision_free_case_sensitive(path): | CODE |
| LOW | radicale/pathutils.py | 428 | def path_is_collision_free_no_short_filename(path): | CODE |
| LOW | radicale/pathutils.py | 476 | def path_supports_trailing_whitespace(path): | CODE |
| LOW | radicale/pathutils.py | 500 | def path_supports_problematic_chars(path): | CODE |
| LOW | radicale/server.py | 239 | class RequestHandler(wsgiref.simple_server.WSGIRequestHandler): | CODE |
| LOW | radicale/__init__.py | 44 | def _get_application_instance(config_path: str, wsgi_errors: types.ErrorStream | CODE |
| LOW | radicale/utils.py | 230 | def ssl_context_options_by_protocol(protocol: str, ssl_context_options): | STRING |
| LOW | radicale/utils.py | 300 | def ssl_context_minimum_version_by_options(ssl_context_options): | STRING |
| LOW | radicale/utils.py | 318 | def ssl_context_maximum_version_by_options(ssl_context_options): | STRING |
| LOW | radicale/sharing/none.py | 29 | def get_sharing_collection_by_token(self, token: str) -> Union[dict, None]: | CODE |
| LOW | radicale/sharing/none.py | 35 | def get_sharing_collection_by_map(self, path) -> Union[dict, None]: | CODE |
| LOW | radicale/sharing/__init__.py | 174 | def check_template_alarm_trigger(data: Any) -> str: | CODE |
| LOW | radicale/sharing/__init__.py | 493 | def sharing_collection_resolver(self, path: str, user: str) -> Union[dict, None]: | CODE |
| LOW | radicale/sharing/__init__.py | 588 | def sharing_collection_update(self, ShareType: str, PathOrToken: str, OwnerOrUser: str, Properties: dict) -> None: | CODE |
| LOW | radicale/sharing/__init__.py | 608 | def sharing_collection_by_token_resolver(self, path) -> Union[dict, None]: | CODE |
| LOW | radicale/sharing/__init__.py | 648 | def sharing_collection_by_map_resolver(self, path: str, user: str) -> Union[dict, None]: | CODE |
| LOW | radicale/sharing/common.py | 23 | def database_common_check_row_match( | CODE |
| LOW | radicale/sharing/common.py | 121 | def database_common_filter_resolved_duplicate_shares(rows_unfiltered: list[dict]) -> list[dict]: | CODE |
| LOW | radicale/app/__init__.py | 225 | def _profiler_per_request_method(self, shutdown: bool = False) -> None: | CODE |
| LOW | radicale/app/get.py | 68 | def _parse_freebusy_view_time(value: str) -> datetime.datetime: | CODE |
| LOW | radicale/app/get.py | 81 | def share_forces_freebusy_view(share: Union[dict, None]) -> bool: | CODE |
| LOW | radicale/app/get.py | 96 | def _content_disposition_attachment(self, filename: str) -> str: | CODE |
| LOW | radicale/app/report.py | 778 | def _split_overridden_vevents( | CODE |
| LOW | radicale/auth/__init__.py | 218 | def _sleep_for_constant_exec_time(self, time_ns_begin: int): | CODE |
| LOW | radicale/web/internal_data/js/utils/collection_utils.js | 31 | export function extractUsernameFromPrincipalCollection(principal_collection) { | CODE |
| LOW | radicale/web/internal_data/js/utils/permissions.js | 58 | export function displayPermissionsOrConversion(conversion, permissions, node) { | CODE |
| LOW | radicale/tests/test_rights.py | 69 | def test_owner_only_without_auth(self) -> None: | CODE |
| LOW | radicale/tests/test_rights.py | 87 | def test_owner_write_without_auth(self) -> None: | CODE |
| LOW | radicale/tests/test_rights.py | 105 | def test_authenticated_without_auth(self) -> None: | CODE |
| LOW | radicale/tests/test_rights.py | 140 | def test_from_file_limited_get(self): | CODE |
| LOW | radicale/tests/test_rights.py | 319 | def test_from_file_freebusy_parent_rights(self) -> None: | CODE |
| LOW | radicale/tests/test_rights.py | 399 | def test_from_file_freebusy_write(self) -> None: | CODE |
| LOW | radicale/tests/test_rights.py | 507 | def test_from_file_freebusy_listing(self) -> None: | CODE |
| LOW | radicale/tests/test_rights.py | 639 | def test_from_file_freebusy_view(self) -> None: | CODE |
| LOW | radicale/tests/test_rights.py | 714 | def test_collections_and_items(self) -> None: | CODE |
| LOW | radicale/tests/test_rights.py | 731 | def test_put_collections_and_items(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 144 | def _proppatch_calendar_color(self, path, login, color, check=207) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 163 | def _proppatch_calendar_color_remove(self, path, login) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 180 | def _propfind_calendar_description(self, path, login): | CODE |
| LOW | radicale/tests/test_sharing.py | 196 | def _proppatch_calendar_description(self, path, login, description) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 213 | def _proppatch_calendar_description_remove(self, path, login) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 231 | def test_sharing_api_base_csv_custom(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 240 | def test_sharing_api_base_no_auth_basic(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 296 | def test_sharing_api_base_no_auth_delay(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 329 | def test_sharing_api_base_with_auth(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 460 | def test_sharing_api_list_with_auth(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 562 | def test_sharing_api_token_basic(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 773 | def test_sharing_api_token_usage_proxy(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 844 | def test_sharing_api_token_usage_basic(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 1005 | def test_sharing_api_token_usage_delay(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 1102 | def test_sharing_api_map_basic(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 1186 | def test_sharing_api_map_basic_email(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 1248 | def test_sharing_api_map_usage(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 1526 | def test_sharing_api_map_update_delete_permissions(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 1696 | def test_sharing_api_map_usercheck(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 1788 | def test_sharing_api_map_permissions(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 2017 | def test_sharing_api_token_freebusy(self) -> None: | CODE |
| LOW | radicale/tests/test_sharing.py | 2255 | def test_sharing_api_map_freebusy(self) -> None: | CODE |
| 319 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | radicale/pathutils.py | 86 | except AttributeError: | CODE |
| HIGH | radicale/app/__init__.py | 615 | except AttributeError: | CODE |
| HIGH | radicale/app/report.py | 764 | except AttributeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 5627 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 5637 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 5647 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 5657 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 5667 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 5677 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 5687 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 5697 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 5707 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 5717 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 6102 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_sharing.py | 6112 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_group.py | 223 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_group.py | 239 | except ModuleNotFoundError: | CODE |
| HIGH | radicale/tests/test_auth.py | 185 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_auth.py | 387 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_server.py | 81 | except RuntimeError: # Thread never started | CODE |
| HIGH | radicale/tests/test_base.py | 3396 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_base.py | 3409 | except RuntimeError: | CODE |
| HIGH | radicale/tests/test_base.py | 3422 | except RuntimeError: | CODE |
| HIGH | radicale/storage/multifilesystem/sync.py | 101 | except PermissionError: | CODE |
| HIGH | radicale/storage/multifilesystem/move.py | 55 | except FileNotFoundError: | CODE |
| HIGH | radicale/rights/from_file.py | 115 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | radicale/httputils.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/pathutils.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/server.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/config.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/log.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/types.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/utils.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/__main__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/xmlutils.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/sharing/files.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| LOW | radicale/sharing/none.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| LOW | radicale/sharing/__init__.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| LOW | radicale/sharing/__init__.py | 41 | # User: <user> (user of database entry) | COMMENT |
| LOW | radicale/sharing/common.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| LOW | radicale/sharing/csv.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| LOW | radicale/app/put.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/delete.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/mkcol.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/options.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/post.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/propfind.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/proppatch.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/head.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/move.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/get.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/base.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/report.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/app/mkcalendar.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/auth/none.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/auth/ldap.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/auth/pam.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | radicale/auth/http_x_remote_user.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/auth/oauth2.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| LOW | radicale/auth/htpasswd.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/auth/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/auth/dovecot.py | 1 | # This file is part of Radicale Server - Calendar Server | COMMENT |
| LOW | radicale/auth/dovecot.py | 81 | # Upon the initial connection we only care about the | COMMENT |
| LOW | radicale/auth/denyall.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/auth/http_remote_user.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/auth/remote_user.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/auth/imap.py | 1 | # RadicaleIMAP IMAP authentication plugin for Radicale. | COMMENT |
| LOW | radicale/group/none.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/group/from_auth.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/group/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/group/htgroup.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/web/internal.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/web/none.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/web/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/tests/test_rights.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/tests/test_sharing.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/tests/test_group.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/tests/test_auth.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/tests/test_web.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/tests/__init__.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/tests/test_expand.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/tests/test_hook_email.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/tests/test_storage.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| LOW | radicale/tests/test_hook_rabbitmq.py | 1 | # This file is part of Radicale - CalDAV and CardDAV server | COMMENT |
| 58 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | radicale/httputils.py | 153 | CODE | |
| LOW | radicale/pathutils.py | 162 | CODE | |
| LOW | radicale/pathutils.py | 270 | CODE | |
| LOW | radicale/pathutils.py | 500 | CODE | |
| LOW | radicale/pathutils.py | 124 | CODE | |
| LOW | radicale/server.py | 286 | CODE | |
| LOW | radicale/config.py | 172 | CODE | |
| LOW | radicale/config.py | 956 | CODE | |
| LOW | radicale/config.py | 1044 | CODE | |
| LOW | radicale/log.py | 346 | CODE | |
| LOW | radicale/__init__.py | 44 | CODE | |
| LOW | radicale/utils.py | 230 | CODE | |
| LOW | radicale/utils.py | 363 | CODE | |
| LOW | radicale/utils.py | 405 | CODE | |
| LOW | radicale/utils.py | 425 | CODE | |
| LOW | radicale/utils.py | 499 | CODE | |
| LOW | radicale/__main__.py | 41 | CODE | |
| LOW | radicale/xmlutils.py | 155 | CODE | |
| LOW | radicale/sharing/files.py | 89 | CODE | |
| LOW | radicale/sharing/files.py | 177 | CODE | |
| LOW | radicale/sharing/__init__.py | 174 | CODE | |
| LOW | radicale/sharing/__init__.py | 397 | CODE | |
| LOW | radicale/sharing/__init__.py | 493 | CODE | |
| LOW | radicale/sharing/__init__.py | 608 | CODE | |
| LOW | radicale/sharing/__init__.py | 648 | CODE | |
| LOW | radicale/sharing/__init__.py | 710 | CODE | |
| LOW | radicale/sharing/common.py | 23 | CODE | |
| LOW | radicale/sharing/csv.py | 188 | CODE | |
| LOW | radicale/sharing/csv.py | 255 | CODE | |
| LOW | radicale/sharing/csv.py | 329 | CODE | |
| LOW | radicale/sharing/csv.py | 375 | CODE | |
| LOW | radicale/app/put.py | 48 | CODE | |
| LOW | radicale/app/put.py | 184 | CODE | |
| LOW | radicale/app/delete.py | 68 | CODE | |
| LOW | radicale/app/mkcol.py | 34 | CODE | |
| LOW | radicale/app/__init__.py | 275 | CODE | |
| LOW | radicale/app/__init__.py | 288 | CODE | |
| LOW | radicale/app/propfind.py | 105 | CODE | |
| LOW | radicale/app/propfind.py | 570 | CODE | |
| LOW | radicale/app/propfind.py | 613 | CODE | |
| LOW | radicale/app/proppatch.py | 100 | CODE | |
| LOW | radicale/app/move.py | 35 | CODE | |
| LOW | radicale/app/get.py | 176 | CODE | |
| LOW | radicale/app/base.py | 51 | CODE | |
| LOW | radicale/app/base.py | 86 | CODE | |
| LOW | radicale/app/base.py | 194 | CODE | |
| LOW | radicale/app/base.py | 228 | CODE | |
| LOW | radicale/app/report.py | 60 | CODE | |
| LOW | radicale/app/report.py | 174 | CODE | |
| LOW | radicale/app/report.py | 258 | CODE | |
| LOW | radicale/app/report.py | 500 | CODE | |
| LOW | radicale/app/report.py | 845 | CODE | |
| LOW | radicale/app/report.py | 892 | CODE | |
| LOW | radicale/app/report.py | 901 | CODE | |
| LOW | radicale/app/report.py | 976 | CODE | |
| LOW | radicale/app/mkcalendar.py | 34 | CODE | |
| LOW | radicale/auth/ldap.py | 173 | CODE | |
| LOW | radicale/auth/ldap.py | 269 | CODE | |
| LOW | radicale/auth/htpasswd.py | 87 | CODE | |
| LOW | radicale/auth/htpasswd.py | 201 | CODE | |
| 43 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | radicale/server.py | 218 | except Exception as e: | CODE |
| LOW | radicale/server.py | 220 | except Exception: | CODE |
| LOW | radicale/config.py | 205 | except Exception as e: | CODE |
| LOW | radicale/config.py | 221 | except Exception as e: | CODE |
| LOW | radicale/config.py | 915 | except Exception as e: | CODE |
| LOW | radicale/config.py | 1002 | except Exception as e: | CODE |
| MEDIUM | radicale/config.py | 113 | def ip_address(value): | CODE |
| LOW | radicale/log.py | 274 | except Exception: | CODE |
| LOW | radicale/utils.py | 87 | except Exception as e: | CODE |
| LOW | radicale/utils.py | 109 | except Exception: | CODE |
| LOW⚡ | radicale/utils.py | 381 | except Exception: | STRING |
| LOW⚡ | radicale/utils.py | 383 | except Exception: | STRING |
| LOW⚡ | radicale/utils.py | 386 | except Exception: | STRING |
| LOW | radicale/utils.py | 144 | except Exception: | STRING |
| LOW | radicale/utils.py | 198 | except Exception: | STRING |
| LOW | radicale/utils.py | 211 | except Exception: | STRING |
| LOW | radicale/utils.py | 214 | except Exception: | STRING |
| LOW | radicale/utils.py | 369 | except Exception: | STRING |
| LOW | radicale/__main__.py | 168 | except Exception as e: | CODE |
| LOW | radicale/__main__.py | 195 | except Exception as e: | CODE |
| LOW | radicale/__main__.py | 209 | except Exception as e: | CODE |
| LOW | radicale/__main__.py | 222 | except Exception as e: | CODE |
| LOW | radicale/__main__.py | 240 | except Exception as e: | CODE |
| LOW | radicale/sharing/files.py | 50 | except Exception as e: | CODE |
| LOW | radicale/sharing/files.py | 59 | except Exception as e: | CODE |
| LOW | radicale/sharing/files.py | 71 | except Exception as e: | CODE |
| LOW | radicale/sharing/files.py | 285 | except Exception as e: | CODE |
| LOW | radicale/sharing/files.py | 355 | except Exception as e: | CODE |
| LOW | radicale/sharing/files.py | 382 | except Exception as e: | CODE |
| LOW | radicale/sharing/__init__.py | 192 | except Exception as e: | CODE |
| LOW | radicale/sharing/__init__.py | 309 | except Exception as e: | CODE |
| LOW | radicale/sharing/csv.py | 53 | except Exception as e: | CODE |
| LOW | radicale/sharing/csv.py | 63 | except Exception as e: | CODE |
| LOW | radicale/sharing/csv.py | 74 | except Exception as e: | CODE |
| LOW | radicale/sharing/csv.py | 401 | except Exception as e: | CODE |
| LOW | radicale/sharing/csv.py | 407 | except Exception as e: | CODE |
| LOW | radicale/sharing/csv.py | 427 | except Exception as e: | CODE |
| LOW | radicale/app/put.py | 170 | except Exception: | CODE |
| LOW | radicale/app/put.py | 219 | except Exception as e: | CODE |
| LOW | radicale/app/__init__.py | 257 | except Exception as e: | CODE |
| LOW | radicale/app/__init__.py | 685 | except Exception as e: | CODE |
| LOW | radicale/app/report.py | 222 | except Exception as e: | CODE |
| LOW | radicale/app/report.py | 412 | except Exception as e: | CODE |
| LOW | radicale/auth/ldap.py | 237 | except Exception as e: | CODE |
| LOW | radicale/auth/ldap.py | 256 | except Exception: | CODE |
| LOW | radicale/auth/ldap.py | 301 | except Exception as e: | CODE |
| LOW | radicale/auth/ldap.py | 318 | except Exception as e: | CODE |
| LOW | radicale/auth/ldap.py | 351 | except Exception as e: | CODE |
| LOW | radicale/auth/ldap.py | 382 | except Exception: | CODE |
| LOW | radicale/auth/ldap.py | 397 | except Exception as e: | CODE |
| LOW | radicale/tests/test_rights.py | 757 | except Exception: | CODE |
| LOW | radicale/tests/test_rights.py | 773 | except Exception: | CODE |
| LOW | radicale/tests/test_rights.py | 789 | except Exception: | CODE |
| LOW | radicale/tests/test_rights.py | 805 | except Exception: | CODE |
| LOW | radicale/tests/test_rights.py | 821 | except Exception: | CODE |
| LOW | radicale/tests/test_rights.py | 837 | except Exception: | CODE |
| LOW | radicale/tests/test_rights.py | 853 | except Exception: | CODE |
| LOW | radicale/tests/test_rights.py | 869 | except Exception: | CODE |
| LOW | radicale/storage/multifilesystem/create_collection.py | 55 | except Exception: | CODE |
| LOW | radicale/storage/multifilesystem/create_collection.py | 111 | except Exception as e: | CODE |
| 26 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | radicale/sharing/__init__.py | 0 | initialize basehook. ``configuration`` see ``radicale.config`` module. the ``configuration`` must not change during the | STRING |
| HIGH | radicale/app/__init__.py | 0 | initialize basehook. ``configuration`` see ``radicale.config`` module. the ``configuration`` must not change during the | STRING |
| HIGH | radicale/auth/__init__.py | 0 | initialize basehook. ``configuration`` see ``radicale.config`` module. the ``configuration`` must not change during the | STRING |
| HIGH | radicale/group/__init__.py | 0 | initialize basehook. ``configuration`` see ``radicale.config`` module. the ``configuration`` must not change during the | STRING |
| HIGH | radicale/web/__init__.py | 0 | initialize basehook. ``configuration`` see ``radicale.config`` module. the ``configuration`` must not change during the | STRING |
| HIGH | radicale/storage/__init__.py | 0 | initialize basehook. ``configuration`` see ``radicale.config`` module. the ``configuration`` must not change during the | STRING |
| HIGH | radicale/rights/__init__.py | 0 | initialize basehook. ``configuration`` see ``radicale.config`` module. the ``configuration`` must not change during the | STRING |
| HIGH | radicale/hook/__init__.py | 0 | initialize basehook. ``configuration`` see ``radicale.config`` module. the ``configuration`` must not change during the | STRING |
| HIGH | radicale/tests/test_sharing.py | 0 | \ <?xml version="1.0" encoding="utf-8"?> <propfind xmlns="dav:"> <prop> <current-user-principal /> <owner /> </prop> </p | STRING |
| HIGH | radicale/tests/test_auth.py | 0 | \ <?xml version="1.0" encoding="utf-8"?> <propfind xmlns="dav:"> <prop> <current-user-principal /> <owner /> </prop> </p | STRING |
| HIGH | radicale/tests/test_auth_servers.py | 0 | \ <?xml version="1.0" encoding="utf-8"?> <propfind xmlns="dav:"> <prop> <current-user-principal /> <owner /> </prop> </p | STRING |
| HIGH | radicale/tests/test_base.py | 0 | \ <?xml version="1.0" encoding="utf-8"?> <propfind xmlns="dav:"> <prop> <current-user-principal /> <owner /> </prop> </p | STRING |
| HIGH | radicale/tests/test_expand.py | 0 | \ [permit delete collection] user: .* collection: test-permit-delete permissions: rrwwd [forbid delete collection] user: | STRING |
| HIGH | radicale/tests/test_hook_email.py | 0 | \ [permit delete collection] user: .* collection: test-permit-delete permissions: rrwwd [forbid delete collection] user: | STRING |
| HIGH | radicale/tests/test_hook_rabbitmq.py | 0 | \ [permit delete collection] user: .* collection: test-permit-delete permissions: rrwwd [forbid delete collection] user: | STRING |
| HIGH | radicale/tests/test_base.py | 0 | \ [permit delete collection] user: .* collection: test-permit-delete permissions: rrwwd [forbid delete collection] user: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | radicale/httputils.py | 35 | CODE | |
| LOW | radicale/pathutils.py | 35 | CODE | |
| LOW | radicale/utils.py | 33 | CODE | |
| LOW | radicale/auth/__init__.py | 39 | CODE | |
| LOW | radicale/group/__init__.py | 28 | CODE | |
| LOW | radicale/web/__init__.py | 27 | CODE | |
| LOW | radicale/tests/test_auth.py | 58 | CODE | |
| LOW | radicale/tests/test_auth.py | 59 | CODE | |
| LOW | radicale/tests/test_hook_rabbitmq.py | 37 | CODE | |
| LOW | radicale/storage/__init__.py | 35 | CODE | |
| LOW | radicale/storage/__init__.py | 36 | CODE | |
| LOW | radicale/storage/multifilesystem/get.py | 28 | CODE | |
| LOW | radicale/storage/multifilesystem/base.py | 26 | CODE | |
| LOW | radicale/storage/multifilesystem/history.py | 28 | CODE | |
| LOW | radicale/storage/multifilesystem/meta.py | 25 | CODE | |
| LOW | radicale/rights/__init__.py | 55 | CODE | |
| LOW | radicale/item/__init__.py | 41 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | radicale/sharing/files.py | 177 | CODE | |
| LOW | radicale/sharing/files.py | 236 | CODE | |
| LOW | radicale/sharing/files.py | 289 | CODE | |
| LOW | radicale/sharing/__init__.py | 332 | CODE | |
| LOW | radicale/sharing/__init__.py | 355 | CODE | |
| LOW | radicale/sharing/__init__.py | 370 | CODE | |
| LOW | radicale/sharing/common.py | 23 | CODE | |
| LOW | radicale/sharing/csv.py | 142 | CODE | |
| LOW | radicale/sharing/csv.py | 188 | CODE | |
| LOW | radicale/sharing/csv.py | 255 | CODE | |
| LOW | radicale/item/__init__.py | 609 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | radicale/auth/ldap.py | 271 | self.ldap3.utils.config._ATTRIBUTES_EXCLUDED_FROM_CHECK.extend(['createTimestamp', 'modifyTimestamp']) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | radicale/tests/test_storage.py | 83 | "flock -n .Radicale.lock || exit 0; exit 1")}}) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | radicale/storage/multifilesystem/discover.py | 64 | # Check if the path exists and if it leads to a collection or an item | COMMENT |
| LOW | radicale/storage/multifilesystem/get.py | 120 | # Check if another process created the file in the meantime | COMMENT |
| LOW | radicale/hook/email/__init__.py | 616 | # Check if all variables are in the allowed list | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | radicale/log.py | 313 | def set_level(level: Union[int, str], backtrace_on_debug: bool, trace_filter: str = "") -> None: | CODE |
| LOW | radicale/tests/test_auth_servers.py | 218 | def set_option(self, key: int, value: object) -> None: | CODE |
| LOW | radicale/storage/__init__.py | 213 | def set_meta(self, props: Mapping[str, str]) -> None: | CODE |
| LOW | radicale/storage/multifilesystem/meta.py | 64 | def set_meta(self, props: Mapping[str, str]) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/codeql.yml | 58 | # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | radicale/app/report.py | 283 | # properties, just return an empty result. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | radicale/tests/test_base.py | 2392 | "event1", "event2", "event10", "Jane Doe", | CODE |
| LOW | radicale/tests/test_base.py | 2423 | for secret in ("SUMMARY", "BEGIN:VEVENT", "event1", "Jane Doe"): | CODE |